Function at 0x1002f880
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push esi
push edi
push ebx
push ebp
sub esp, 0xfc
mov ebx, dword [esp + 0x11c]
mov dword [esp + 0xa4], ebx
mov ebx, dword [esp + 0x138]
mov ebp, dword [esp + 0x13c]
mov dword [esp + 0xa0], ebp
mov ebp, ebx
mov edx, dword [esp + 0x114]
neg ebp
mov eax, dword [esp + 0x110]
and ebp, 0x3f
mov dword [esp + 0xf0], edx
mov edx, dword [esp + 0x130]
mov dword [esp + 0x88], eax
mov eax, edx
and edx, 0xf0
and eax, 0xf
mov dword [esp + 0xe0], edx
mov esi, dword [esp + 0x128]
mov edx, dword [esp + 0x120]
mov ecx, dword [esp + 0x118]
mov dword [esp + 0xa8], ecx
mov ecx, dword [esp + 0x12c]
lea edi, [esi + edx]
mov dword [esp + 0x70], eax
mov eax, dword [ebp + ebx + 0x5c]
mov dword [esp + 0x84], esi
mov dword [esp + 0x9c], esi
mov dword [esp + 0xac], ecx
mov dword [esp + 0x98], ecx
cmp edi, eax
jle 0x1002f947
sub eax, edx
mov dword [esp + 0x84], eax
mov dword [esp + 0x128], eax
mov esi, dword [esp + 0x124]
mov eax, dword [esp + 0xac]
mov ecx, dword [ebp + ebx + 0x2c]
lea edx, [eax + esi]
cmp edx, ecx
jle 0x1002f970
sub ecx, esi
mov dword [esp + 0xac], ecx
mov dword [esp + 0x12c], ecx
mov eax, dword [ebp + ebx + 0x3c]
vxorpd xmm0, xmm0, xmm0
mov edx, dword [ebp + ebx + 0x6c]
vxorpd xmm1, xmm1, xmm1
vxorpd xmm2, xmm2, xmm2
vxorpd xmm6, xmm6, xmm6
vxorpd xmm7, xmm7, xmm7
mov edi, dword [ebp + ebx + 0x64]
vcvtsi2sd xmm0, xmm0, esi
vcvtsi2sd xmm2, xmm2, edi
mov esi, dword [ebp + ebx + 0x60]
mov dword [esp + 0x94], eax
mov dword [esp + 0x90], edx
vcvtsi2sd xmm1, xmm1, esi
mov eax, dword [ebp + ebx + 0x30]
mov edx, dword [ebp + ebx + 0x34]
vcvtsi2sd xmm6, xmm6, eax
vcvtsi2sd xmm7, xmm7, edx
shr esi, 0x1f
shr edi, 0x1f
shr eax, 0x1f
shr edx, 0x1f
mov ecx, dword [ebp + ebx + 0x78]
mov dword [esp + 0x6c], ecx
vaddsd xmm3, xmm1, qword [esi*8 + 0x102cb7a0]
vaddsd xmm4, xmm2, qword [edi*8 + 0x102cb7a0]
vaddsd xmm1, xmm6, qword [eax*8 + 0x102cb7a0]
vaddsd xmm2, xmm7, qword [edx*8 + 0x102cb7a0]
vdivsd xmm5, xmm3, xmm4
vdivsd xmm3, xmm1, xmm2
vmulsd xmm0, xmm0, xmm3
vmovsd qword [esp + 0x58], xmm5
vmovsd qword [esp], xmm0
call fcn.1007eea0
fstp qword [esp + 0x60]
vmovsd xmm2, qword [esp + 0x60]
vxorpd xmm0, xmm0, xmm0
vcvtsi2sd xmm0, xmm0, dword [esp + 0x120]
vcvttsd2si eax, xmm2
vmulsd xmm1, xmm0, qword [esp + 0x58]
vmovsd qword [esp], xmm1
mov dword [esp + 0x68], eax
call fcn.1007eea0
fstp qword [esp + 0x60]
vmovsd xmm0, qword [esp + 0x60]
vcvttsd2si eax, xmm0
mov ecx, dword [esp + 0x84]
mov edx, dword [esp + 0xa0]
shl eax, 2
mov dword [esp + 0x74], eax
lea esi, [edx + ecx*4]
mov dword [esp + 0x8c], esi
mov edx, dword [esp + 0x120]
test ecx, ecx
jle 0x1002faf0
mov esi, ecx
shr esi, 1
je 0x10031e43
mov eax, dword [esp + 0xa0]
xor ecx, ecx
nop dword [eax + eax]
nop dword [eax]
nop
mov edi, dword [ebp + ebx + 0x68]
lea edi, [edi + edx*4]
mov edi, dword [edi + ecx*8]
shl edi, 2
mov dword [eax + ecx*8], edi
mov edi, dword [ebp + ebx + 0x68]
lea edi, [edi + edx*4]
mov edi, dword [edi + ecx*8 + 4]
shl edi, 2
mov dword [eax + ecx*8 + 4], edi
inc ecx
cmp ecx, esi
jb 0x1002faa0
lea eax, [ecx + ecx + 1]
lea ecx, [eax - 1]
cmp ecx, dword [esp + 0x84]
jae 0x1002faf0
mov ecx, dword [ebp + ebx + 0x68]
lea esi, [edx + eax]
mov edi, dword [ecx + esi*4 - 4]
mov ecx, dword [esp + 0xa0]
shl edi, 2
mov dword [ecx + eax*4 - 4], edi
mov eax, dword [esp + 0x124]
cmp dword [esp + 0xac], 0
jle 0x1002fb8e
mov ecx, dword [esp + 0xac]
shr ecx, 1
je 0x10031e39
mov dword [esp + 0xf4], edx
xor esi, esi
mov edx, dword [esp + 0x8c]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
nop dword [eax + eax]
mov edi, dword [ebp + ebx + 0x38]
lea edi, [edi + eax*4]
mov edi, dword [edi + esi*8]
mov dword [edx + esi*8], edi
mov edi, dword [ebp + ebx + 0x38]
lea edi, [edi + eax*4]
mov edi, dword [edi + esi*8 + 4]
mov dword [edx + esi*8 + 4], edi
inc esi
cmp esi, ecx
jb 0x1002fb40
mov edx, dword [esp + 0xf4]
lea ecx, [esi + esi + 1]
lea esi, [ecx - 1]
cmp esi, dword [esp + 0xac]
jae 0x1002fb8e
mov esi, dword [ebp + ebx + 0x38]
lea edi, [eax + ecx]
mov esi, dword [esi + edi*4 - 4]
mov edi, dword [esp + 0x8c]
mov dword [edi + ecx*4 - 4], esi
cmp dword [esp + 0xe0], 0xf0
je 0x10031ca8
cmp dword [esp + 0x70], 1
je 0x1003113d
cmp dword [esp + 0x70], 3
jne 0x1003064d
mov ecx, dword [esp + 0x68]
imul ecx, dword [esp + 0xf0]
mov edi, dword [esp + 0x88]
sub edi, ecx
sub edi, dword [esp + 0x74]
mov ecx, dword [ebp + ebx + 0x10]
mov dword [esp + 0x88], edi
mov dword [esp + 0xb0], ecx
mov edi, dword [ebp + ebx + 0x78]
mov ecx, dword [ebp + ebx + 0x58]
mov esi, dword [ebp + ebx + 0xc]
mov dword [esp + 0x60], edi
mov dword [esp + 0x70], ecx
mov ecx, dword [ebp + ebx + 0x2c]
mov edi, dword [ebp + ebx + 0x5c]
mov dword [esp + 0xc4], esi
mov esi, dword [ebp + ebx + 0x28]
sub ecx, dword [esp + 0xac]
sub edi, dword [esp + 0x84]
sub ecx, eax
mov dword [esp + 0x6c], esi
sub edi, edx
mov esi, dword [esp + 0xe0]
and esi, 0x10
mov dword [esp + 0x5c], esi
jne 0x1002fc3c
mov esi, dword [ebp + ebx + 0x4c]
mov dword [esp + 0xd8], esi
cmp esi, eax
jg 0x1002fc49
mov dword [esp + 0xd8], 0
jmp 0x1002fc50
sub dword [esp + 0xd8], eax
mov esi, dword [esp + 0xe0]
and esi, 0x40
mov dword [esp + 0x80], esi
jne 0x1002fc72
mov esi, dword [ebp + ebx + 0x7c]
mov dword [esp + 0xd4], esi
cmp esi, edx
jg 0x1002fc7f
mov dword [esp + 0xd4], 0
jmp 0x1002fc86
sub dword [esp + 0xd4], edx
mov esi, dword [esp + 0xe0]
and esi, 0x20
mov dword [esp + 0xdc], esi
jne 0x1002fca5
mov esi, dword [ebp + ebx + 0x50]
mov dword [esp + 0x74], esi
cmp esi, ecx
jg 0x1002fcaf
mov dword [esp + 0x74], 0
jmp 0x1002fcb3
sub dword [esp + 0x74], ecx
and dword [esp + 0xe0], 0x80
jne 0x1002fccb
mov esi, dword [ebp + ebx + 0x80]
cmp esi, edi
jg 0x1002fccf
xor esi, esi
jmp 0x1002fcd1
sub esi, edi
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0xd0], ebx
mov edi, eax
mov ebx, dword [esp + 0xd8]
cmp eax, ebx
mov dword [esp + 0xcc], ebp
mov ecx, dword [esp + 0xd4]
cmovl ebx, eax
mov ebp, dword [esp + 0x84]
cmp ebp, ecx
mov dword [esp + 0xf4], edx
mov edx, dword [esp + 0x74]
cmovl ecx, ebp
cmp eax, edx
mov dword [esp + 0xd8], ebx
cmovl edx, eax
cmp esi, ebp
mov dword [esp + 0xd4], ecx
cmovge esi, ebp
sub edi, ebx
mov dword [esp + 0x64], edi
add ebx, edx
cmp ebx, eax
mov ebx, ebp
cmovg edx, edi
lea edi, [ecx + esi]
sub ebx, ecx
cmp edi, ebp
mov edi, dword [esp + 0x8c]
lea ecx, [ecx*4]
cmovg esi, ebx
mov dword [esp + 0x78], esi
mov esi, dword [esp + 0xc4]
lea edi, [edi + eax*4 + 0x1f]
and edi, 0xffffffe0
mov dword [esp + 0x74], edx
shl edx, 2
mov dword [esp + 0xb4], edi
lea ebp, [esi + esi]
mov esi, dword [esp + 0xb0]
imul ecx, ebp
mov dword [esp + 0x68], ebp
lea ebx, [esi + esi]
mov esi, dword [esp + 0xd8]
imul edx, ebx
mov dword [esp + 0xe4], ebx
lea eax, [esi*4]
imul eax, ebx
mov ebp, dword [esp + 0xcc]
lea eax, [eax + edi + 0x1f]
and eax, 0xffffffe0
mov dword [esp + 0xb8], eax
lea ebx, [edx + eax + 0x1f]
and ebx, 0xffffffe0
mov dword [esp + 0xbc], ebx
lea eax, [ecx + ebx + 0x1f]
mov ebx, dword [esp + 0xd0]
and eax, 0xffffffe0
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0xf8]
lea edx, [eax*4]
mov dword [esp + 0x7c], edx
mov edx, dword [esp + 0xf4]
test esi, esi
mov esi, dword [esp + 0x78]
jle 0x1002ff62
mov ecx, dword [esp + 0xe4]
shr ecx, 0x1f
mov edi, dword [esp + 0xb0]
mov dword [esp + 0xf4], edx
xor edx, edx
mov dword [esp + 0x58], edx
mov dword [esp + 0xc0], edx
lea ecx, [ecx + edi*2]
sar ecx, 1
dec ecx
mov dword [esp + 0xf8], eax
mov dword [esp + 0xe8], ecx
mov dword [esp + 0x78], esi
mov dword [esp + 0xd0], ebx
mov edx, dword [esp + 0xf4]
mov ebx, dword [esp + 0x58]
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xb4]
mov esi, dword [esp + 0xe4]
mov dword [esp + 0xcc], ebp
nop dword [eax + eax]
nop dword [eax]
nop
test esi, esi
jle 0x1002ff31
mov dword [esp + 0xc0], eax
xor ebp, ebp
mov esi, dword [esp + 0xd0]
lea edx, [ecx + eax]
mov ecx, dword [esp + 0xcc]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
nop dword [eax]
mov eax, dword [ecx + esi + 0x38]
mov edi, dword [esp + 0xf8]
lea eax, [eax + edi*4]
mov eax, dword [eax + ebx*4]
sub eax, dword [esp + 0xe8]
add eax, ebp
mov edi, eax
sar edi, 0x1f
xor eax, edi
sub eax, edi
mov dword [edx + ebp*4], eax
mov edi, dword [ecx + esi + 0x28]
cmp eax, edi
jl 0x1002ff00
add edi, edi
sub edi, eax
add edi, 0xfffffffe
cmp dword [esp + 0xdc], 0
cmove eax, edi
imul eax, dword [esp + 0xf0]
mov dword [edx + ebp*4], eax
inc ebp
cmp ebp, dword [esp + 0xe4]
jb 0x1002fec0
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xb4]
mov esi, dword [esp + 0xe4]
mov edi, dword [esp + 0xb0]
inc ebx
lea eax, [eax + edi*8]
cmp ebx, dword [esp + 0xd8]
jb 0x1002fe80
mov edx, dword [esp + 0xf4]
mov eax, dword [esp + 0xf8]
mov esi, dword [esp + 0x78]
mov ebp, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd0]
add eax, dword [esp + 0xac]
mov edi, eax
sub edi, dword [esp + 0x74]
cmp edi, eax
jge 0x100300dc
mov dword [esp + 0xf4], edx
sub eax, edi
mov edx, dword [esp + 0xe4]
xor ecx, ecx
shr edx, 0x1f
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x58], ecx
mov dword [esp + 0xdc], edi
mov dword [esp + 0xd0], ebx
lea edx, [edx + eax*2]
sar edx, 1
add eax, eax
mov dword [esp + 0xc0], eax
dec edx
mov dword [esp + 0xec], edx
mov eax, ecx
mov edx, dword [esp + 0xc0]
mov ebx, dword [esp + 0xb8]
mov edi, dword [esp + 0xb0]
mov dword [esp + 0x78], esi
mov dword [esp + 0xcc], ebp
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
nop dword [eax + eax]
test edx, edx
jle 0x100300b2
mov dword [esp + 0xe8], ecx
xor esi, esi
mov dword [esp + 0x58], eax
lea ebp, [ebx + eax]
mov ecx, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd0]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax]
nop dword [eax]
mov eax, dword [ecx + ebx + 0x38]
mov edx, dword [esp + 0xdc]
lea edi, [eax + edx*4]
mov eax, dword [esp + 0xe8]
mov eax, dword [edi + eax*4]
sub eax, dword [esp + 0xec]
add eax, esi
js 0x10031c05
mov dword [ebp + esi*4], eax
mov edx, dword [ecx + ebx + 0x28]
mov edi, edx
sub edi, eax
cmp eax, edx
lea edi, [edi + edx - 2]
cmovge eax, edi
imul eax, dword [esp + 0xf0]
mov dword [ebp + esi*4], eax
inc esi
cmp esi, dword [esp + 0xc0]
jb 0x10030040
mov ecx, dword [esp + 0xe8]
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0xc0]
mov ebx, dword [esp + 0xb8]
mov edi, dword [esp + 0xb0]
inc ecx
lea eax, [eax + edi*8]
cmp ecx, dword [esp + 0xf8]
jb 0x10030000
mov edx, dword [esp + 0xf4]
mov esi, dword [esp + 0x78]
mov ebp, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd0]
cmp dword [esp + 0xd4], 0
lea eax, [edx*4]
jle 0x1003023a
mov edi, dword [esp + 0x68]
shr edi, 0x1f
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0xf4], edx
xor edx, edx
mov dword [esp + 0x58], edx
mov dword [esp + 0xc0], edx
lea edi, [edi + ecx*2]
sar edi, 1
add ecx, ecx
mov dword [esp + 0xdc], ecx
dec edi
mov dword [esp + 0xe8], edi
mov dword [esp + 0x5c], eax
mov dword [esp + 0x78], esi
mov dword [esp + 0xd0], ebx
mov edx, dword [esp + 0xf4]
mov ebx, dword [esp + 0x58]
mov eax, dword [esp + 0xc0]
mov esi, dword [esp + 0xbc]
mov edi, dword [esp + 0xc4]
mov dword [esp + 0xcc], ebp
nop
test ecx, ecx
jle 0x1003020c
mov dword [esp + 0xc0], eax
xor ebp, ebp
mov ecx, dword [esp + 0xcc]
lea edx, [esi + eax]
mov esi, dword [esp + 0xd0]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
nop dword [eax]
mov eax, dword [ecx + esi + 0x68]
mov edi, dword [esp + 0xf4]
lea eax, [eax + edi*4]
mov eax, dword [eax + ebx*4]
sub eax, dword [esp + 0xe8]
add eax, ebp
mov edi, eax
sar edi, 0x1f
xor eax, edi
sub eax, edi
mov dword [edx + ebp*4], eax
mov edi, dword [ecx + esi + 0x58]
cmp eax, edi
jl 0x100301e0
add edi, edi
sub edi, eax
add edi, 0xfffffffe
cmp dword [esp + 0xe0], 0
cmove eax, edi
shl eax, 2
mov dword [edx + ebp*4], eax
inc ebp
cmp ebp, dword [esp + 0xdc]
jb 0x100301a0
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xdc]
mov esi, dword [esp + 0xbc]
mov edi, dword [esp + 0xc4]
inc ebx
lea eax, [eax + edi*8]
cmp ebx, dword [esp + 0xd4]
jb 0x10030160
mov edx, dword [esp + 0xf4]
mov eax, dword [esp + 0x5c]
mov esi, dword [esp + 0x78]
mov ebp, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd0]
add edx, dword [esp + 0x84]
mov edi, edx
sub edi, esi
cmp edi, edx
jge 0x10030394
mov dword [esp + 0xe0], edi
sub edx, edi
mov edi, dword [esp + 0x68]
xor ecx, ecx
shr edi, 0x1f
mov dword [esp + 0xf4], edx
mov edx, dword [esp + 0xc4]
mov dword [esp + 0x58], ecx
mov dword [esp + 0x5c], eax
mov dword [esp + 0xd0], ebx
lea edi, [edi + edx*2]
sar edi, 1
add edx, edx
mov dword [esp + 0xc0], edx
dec edi
mov dword [esp + 0xdc], edi
mov eax, ecx
mov edx, dword [esp + 0xc0]
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xc4]
mov dword [esp + 0x78], esi
mov dword [esp + 0xcc], ebp
nop dword [eax + eax]
nop dword [eax]
test edx, edx
jle 0x1003036d
mov dword [esp + 0xe8], ecx
xor esi, esi
mov dword [esp + 0x58], eax
lea ebp, [ebx + eax]
mov ecx, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd0]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax]
nop dword [eax]
mov eax, dword [ecx + ebx + 0x68]
mov edx, dword [esp + 0xe0]
lea edi, [eax + edx*4]
mov eax, dword [esp + 0xe8]
mov eax, dword [edi + eax*4]
sub eax, dword [esp + 0xdc]
add eax, esi
js 0x10031bec
mov dword [ebp + esi*4], eax
mov edx, dword [ecx + ebx + 0x58]
mov edi, edx
sub edi, eax
cmp eax, edx
lea edi, [edi + edx - 2]
cmovge eax, edi
shl eax, 2
mov dword [ebp + esi*4], eax
inc esi
cmp esi, dword [esp + 0xc0]
jb 0x10030300
mov ecx, dword [esp + 0xe8]
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0xc0]
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0xc4]
inc ecx
lea eax, [eax + edi*8]
cmp ecx, dword [esp + 0xf4]
jb 0x100302c0
mov eax, dword [esp + 0x5c]
mov esi, dword [esp + 0x78]
mov ebp, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd0]
mov edi, dword [esp + 0x88]
mov dword [esp], edi
mov edx, dword [esp + 0xa8]
mov dword [esp + 4], edx
mov ecx, dword [esp + 0xf0]
mov dword [esp + 8], ecx
mov edi, dword [esp + 0xa4]
mov dword [esp + 0xc], edi
mov edx, dword [esp + 0x70]
mov dword [esp + 0x10], edx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x14], ecx
mov edi, dword [esp + 0x84]
mov dword [esp + 0x18], edi
mov edx, dword [esp + 0xac]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x68]
mov dword [esp + 0x20], edx
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0x24], ecx
mov edi, dword [esp + 0x8c]
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0xa0]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x7c]
imul edi, ecx
imul eax, edx
add edi, dword [esp + 0x94]
mov dword [esp + 0x30], edi
add eax, dword [esp + 0x90]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x3c], eax
mov edx, dword [esp + 0xbc]
mov dword [esp + 0x40], edx
mov ecx, dword [esp + 0xc8]
mov dword [esp + 0x44], ecx
mov edi, dword [esp + 0xd8]
mov dword [esp + 0x48], edi
mov eax, dword [esp + 0x74]
mov dword [esp + 0x4c], eax
mov edx, dword [esp + 0xd4]
mov dword [esp + 0x50], edx
mov dword [esp + 0x54], esi
call fcn.10031e60
mov eax, dword [esp + 0x64]
sub eax, dword [esp + 0x74]
mov dword [esp + 0x64], eax
test eax, eax
jle 0x10031bab
mov eax, dword [esp + 0x84]
sub eax, dword [esp + 0xd4]
sub eax, esi
mov dword [esp + 0x84], eax
test eax, eax
jle 0x10031bab
mov eax, dword [esp + 0x68]
mov edi, dword [esp + 0xb0]
lea edx, [eax*4]
imul edx, esi
mov esi, dword [esp + 0xc8]
lea ecx, [esi + edx + 0x1f]
and ecx, 0xffffffe0
mov dword [esp + 0x58], ecx
lea eax, [ecx + edi*8 + 0x23]
and eax, 0xffffffe0
add edi, edi
mov dword [ecx], eax
test edi, edi
jle 0x10030569
mov edx, edi
shr edx, 1
je 0x10031be2
mov ecx, dword [esp + 0x84]
xor esi, esi
mov dword [esp + 0xd0], ebx
shl ecx, 4
mov ebx, dword [esp + 0x58]
nop dword [eax + eax]
nop dword [eax]
nop
lea eax, [ecx + eax + 0x1f]
and eax, 0xffffffe0
mov dword [ebx + esi*8 + 4], eax
lea eax, [ecx + eax + 0x1f]
and eax, 0xffffffe0
mov dword [ebx + esi*8 + 8], eax
inc esi
cmp esi, edx
jb 0x10030520
mov ebx, dword [esp + 0xd0]
lea eax, [esi + esi + 1]
lea edx, [eax - 1]
cmp edx, edi
jae 0x10030569
mov edi, dword [esp + 0x58]
mov edx, dword [esp + 0x84]
shl edx, 4
mov ecx, dword [edi + eax*4 - 4]
lea esi, [edx + ecx + 0x1f]
and esi, 0xffffffe0
mov dword [edi + eax*4], esi
mov dword [esp + 0xcc], ebp
mov esi, dword [esp + 0x8c]
mov ebp, dword [esp + 0xd8]
mov dword [esp + 0xd0], ebx
mov edi, dword [esp + 0xa0]
mov ecx, dword [esp + 0xd4]
lea ebx, [esi + ebp*4]
mov esi, dword [esp + 0x124]
add esi, ebp
imul ebp, dword [esp + 0xa4]
lea edx, [edi + ecx*4]
mov edi, dword [esp + 0xa8]
add edi, ebp
shl esi, 2
imul esi, dword [esp + 0xe4]
mov eax, dword [esp + 0x94]
lea ebp, [edi + ecx*4]
mov dword [esp + 0x5c], ebp
add eax, esi
push dword [esp + 0x58]
mov ebp, dword [esp + 0x64]
add ecx, dword [esp + 0x124]
mov esi, dword [esp + 0x94]
lea edi, [ebp + ecx*4]
shl ecx, 2
imul ecx, dword [esp + 0x6c]
add esi, ecx
test ebp, ebp
cmove edi, esi
push edi
push eax
push edx
push ebx
push dword [esp + 0xc4]
push dword [esp + 0xdc]
push dword [esp + 0x80]
push dword [esp + 0xa4]
push 0
push dword [esp + 0xcc]
push dword [esp + 0x11c]
push dword [esp + 0x8c]
push dword [esp + 0xbc]
mov ebp, dword [esp + 0x104]
mov ebx, dword [esp + 0x108]
call fcn.10031e60
jmp 0x10031ba8
cmp dword [esp + 0x70], 4
jne 0x1003112d
mov ecx, dword [esp + 0x68]
imul ecx, dword [esp + 0xf0]
mov edi, dword [esp + 0x88]
sub edi, ecx
sub edi, dword [esp + 0x74]
mov ecx, dword [ebp + ebx + 0x10]
mov dword [esp + 0x88], edi
mov dword [esp + 0x80], ecx
mov edi, dword [ebp + ebx + 0x78]
mov ecx, dword [ebp + ebx + 0x58]
mov esi, dword [ebp + ebx + 0xc]
mov dword [esp + 0x60], edi
mov dword [esp + 0x6c], ecx
mov ecx, dword [ebp + ebx + 0x2c]
mov edi, dword [ebp + ebx + 0x5c]
mov dword [esp + 0xc0], esi
mov esi, dword [ebp + ebx + 0x28]
sub ecx, dword [esp + 0xac]
sub edi, dword [esp + 0x84]
sub ecx, eax
mov dword [esp + 0x5c], esi
sub edi, edx
mov esi, dword [esp + 0xe0]
and esi, 0x10
mov dword [esp + 0x58], esi
jne 0x100306df
mov esi, dword [ebp + ebx + 0x4c]
mov dword [esp + 0xd4], esi
cmp esi, eax
jg 0x100306ec
mov dword [esp + 0xd4], 0
jmp 0x100306f3
sub dword [esp + 0xd4], eax
mov esi, dword [esp + 0xe0]
and esi, 0x40
mov dword [esp + 0x7c], esi
jne 0x10030712
mov esi, dword [ebp + ebx + 0x7c]
mov dword [esp + 0xc8], esi
cmp esi, edx
jg 0x1003071f
mov dword [esp + 0xc8], 0
jmp 0x10030726
sub dword [esp + 0xc8], edx
mov esi, dword [esp + 0xe0]
and esi, 0x20
mov dword [esp + 0xd8], esi
jne 0x10030745
mov esi, dword [ebp + ebx + 0x50]
mov dword [esp + 0x70], esi
cmp esi, ecx
jg 0x1003074f
mov dword [esp + 0x70], 0
jmp 0x10030753
sub dword [esp + 0x70], ecx
and dword [esp + 0xe0], 0x80
jne 0x1003076b
mov esi, dword [ebp + ebx + 0x80]
cmp esi, edi
jg 0x1003076f
xor esi, esi
jmp 0x10030771
sub esi, edi
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0xd0], ebx
mov edi, eax
mov ebx, dword [esp + 0xd4]
cmp eax, ebx
mov dword [esp + 0xcc], ebp
mov ecx, dword [esp + 0xc8]
cmovl ebx, eax
mov ebp, dword [esp + 0x84]
cmp ebp, ecx
mov dword [esp + 0xf4], edx
mov edx, dword [esp + 0x70]
cmovl ecx, ebp
cmp eax, edx
mov dword [esp + 0xd4], ebx
cmovl edx, eax
cmp esi, ebp
mov dword [esp + 0xc8], ecx
cmovge esi, ebp
sub edi, ebx
mov dword [esp + 0x64], edi
add ebx, edx
cmp ebx, eax
mov ebx, ebp
cmovg edx, edi
lea edi, [ecx + esi]
sub ebx, ecx
cmp edi, ebp
mov edi, dword [esp + 0x8c]
lea ecx, [ecx*4]
cmovg esi, ebx
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0xc0]
lea edi, [edi + eax*4 + 0x1f]
and edi, 0xffffffe0
mov dword [esp + 0x70], edx
shl edx, 2
mov dword [esp + 0xb0], edi
lea ebp, [esi + esi]
mov esi, dword [esp + 0x80]
imul ecx, ebp
mov dword [esp + 0x68], ebp
lea ebx, [esi + esi]
mov esi, dword [esp + 0xd4]
imul edx, ebx
mov dword [esp + 0xdc], ebx
lea eax, [esi*4]
imul eax, ebx
mov ebp, dword [esp + 0xcc]
lea eax, [eax + edi + 0x1f]
and eax, 0xffffffe0
mov dword [esp + 0xb4], eax
lea ebx, [edx + eax + 0x1f]
and ebx, 0xffffffe0
mov dword [esp + 0xb8], ebx
lea eax, [ecx + ebx + 0x1f]
mov ebx, dword [esp + 0xd0]
and eax, 0xffffffe0
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0xf8]
lea edx, [eax*4]
mov dword [esp + 0x78], edx
mov edx, dword [esp + 0xf4]
test esi, esi
mov esi, dword [esp + 0x74]
jle 0x10030a0e
mov ecx, dword [esp + 0xdc]
shr ecx, 0x1f
mov edi, dword [esp + 0x80]
mov dword [esp + 0xf4], edx
xor edx, edx
mov dword [esp + 0xe8], edx
mov dword [esp + 0xbc], edx
lea ecx, [ecx + edi*2]
sar ecx, 1
dec ecx
mov dword [esp + 0xf8], eax
mov dword [esp + 0xe4], ecx
mov dword [esp + 0x74], esi
mov dword [esp + 0xd0], ebx
mov edx, dword [esp + 0xf4]
mov eax, dword [esp + 0xe8]
mov ecx, dword [esp + 0xbc]
mov ebx, dword [esp + 0xb0]
mov esi, dword [esp + 0xdc]
mov dword [esp + 0xcc], ebp
nop dword [eax]
nop dword [eax]
test esi, esi
jle 0x100309dd
mov dword [esp + 0xbc], ecx
xor ebp, ebp
mov dword [esp + 0xe8], eax
lea edx, [ebx + ecx]
mov ecx, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd0]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
mov eax, dword [ecx + ebx + 0x38]
mov esi, dword [esp + 0xf8]
lea edi, [eax + esi*4]
mov eax, dword [esp + 0xe8]
mov eax, dword [edi + eax*4]
sub eax, dword [esp + 0xe4]
add eax, ebp
js 0x10031c5e
mov dword [edx + ebp*4], eax
mov edi, dword [ecx + ebx + 0x28]
cmp eax, edi
jl 0x100309a5
mov esi, edi
sub esi, eax
cmp dword [esp + 0xd8], 0
lea edi, [esi + edi - 1]
cmove eax, edi
imul eax, dword [esp + 0xf0]
mov dword [edx + ebp*4], eax
inc ebp
cmp ebp, dword [esp + 0xdc]
jb 0x10030960
mov eax, dword [esp + 0xe8]
mov ecx, dword [esp + 0xbc]
mov ebx, dword [esp + 0xb0]
mov esi, dword [esp + 0xdc]
mov edi, dword [esp + 0x80]
inc eax
lea ecx, [ecx + edi*8]
cmp eax, dword [esp + 0xd4]
jb 0x10030920
mov edx, dword [esp + 0xf4]
mov eax, dword [esp + 0xf8]
mov esi, dword [esp + 0x74]
mov ebp, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd0]
add eax, dword [esp + 0xac]
mov edi, eax
sub edi, dword [esp + 0x70]
cmp edi, eax
jge 0x10030b7f
mov dword [esp + 0xf4], edx
sub eax, edi
mov edx, dword [esp + 0xdc]
xor ecx, ecx
shr edx, 0x1f
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0xbc], ecx
mov dword [esp + 0xe4], edi
mov dword [esp + 0xd0], ebx
lea edx, [edx + eax*2]
sar edx, 1
add eax, eax
mov dword [esp + 0xd8], eax
dec edx
mov dword [esp + 0xec], edx
mov eax, ecx
mov edx, dword [esp + 0xd8]
mov ebx, dword [esp + 0xb4]
mov edi, dword [esp + 0x80]
mov dword [esp + 0x74], esi
mov dword [esp + 0xcc], ebp
nop dword [eax + eax]
nop dword [eax + eax]
test edx, edx
jle 0x10030b55
mov dword [esp + 0xe8], ecx
xor esi, esi
mov dword [esp + 0xbc], eax
lea ebp, [ebx + eax]
mov ecx, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd0]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
mov eax, dword [ecx + ebx + 0x38]
mov edx, dword [esp + 0xe4]
lea edi, [eax + edx*4]
mov eax, dword [esp + 0xe8]
mov eax, dword [edi + eax*4]
sub eax, dword [esp + 0xec]
add eax, esi
js 0x10031c47
mov dword [ebp + esi*4], eax
mov edx, dword [ecx + ebx + 0x28]
mov edi, edx
sub edi, eax
cmp eax, edx
lea edi, [edi + edx - 1]
cmovge eax, edi
imul eax, dword [esp + 0xf0]
mov dword [ebp + esi*4], eax
inc esi
cmp esi, dword [esp + 0xd8]
jb 0x10030ae0
mov ecx, dword [esp + 0xe8]
mov eax, dword [esp + 0xbc]
mov edx, dword [esp + 0xd8]
mov ebx, dword [esp + 0xb4]
mov edi, dword [esp + 0x80]
inc ecx
lea eax, [eax + edi*8]
cmp ecx, dword [esp + 0xf8]
jb 0x10030aa0
mov edx, dword [esp + 0xf4]
mov esi, dword [esp + 0x74]
mov ebp, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd0]
cmp dword [esp + 0xc8], 0
lea ecx, [edx*4]
jle 0x10030d06
mov edi, dword [esp + 0x68]
xor eax, eax
shr edi, 0x1f
mov dword [esp + 0xf4], edx
mov edx, dword [esp + 0xc0]
mov dword [esp + 0xe4], eax
mov dword [esp + 0xbc], eax
mov dword [esp + 0x58], ecx
lea edi, [edi + edx*2]
sar edi, 1
add edx, edx
mov dword [esp + 0xd8], edx
dec edi
mov dword [esp + 0xe8], edi
mov dword [esp + 0x74], esi
mov dword [esp + 0xd0], ebx
mov edx, dword [esp + 0xf4]
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0xbc]
mov ebx, dword [esp + 0xd8]
mov esi, dword [esp + 0xb8]
mov edi, dword [esp + 0xc0]
mov dword [esp + 0xcc], ebp
nop dword [eax + eax]
nop dword [eax]
nop
test ebx, ebx
jle 0x10030cd8
mov dword [esp + 0xbc], ecx
xor ebp, ebp
mov dword [esp + 0xe4], eax
lea edx, [esi + ecx]
mov ecx, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd0]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
mov eax, dword [ecx + ebx + 0x68]
mov esi, dword [esp + 0xf4]
lea edi, [eax + esi*4]
mov eax, dword [esp + 0xe4]
mov eax, dword [edi + eax*4]
sub eax, dword [esp + 0xe8]
add eax, ebp
js 0x10031c3c
mov dword [edx + ebp*4], eax
mov edi, dword [ecx + ebx + 0x58]
cmp eax, edi
jl 0x10030ca5
mov esi, edi
sub esi, eax
cmp dword [esp + 0xe0], 0
lea edi, [esi + edi - 1]
cmove eax, edi
shl eax, 2
mov dword [edx + ebp*4], eax
inc ebp
cmp ebp, dword [esp + 0xd8]
jb 0x10030c60
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0xbc]
mov ebx, dword [esp + 0xd8]
mov esi, dword [esp + 0xb8]
mov edi, dword [esp + 0xc0]
inc eax
lea ecx, [ecx + edi*8]
cmp eax, dword [esp + 0xc8]
jb 0x10030c20
mov edx, dword [esp + 0xf4]
mov ecx, dword [esp + 0x58]
mov esi, dword [esp + 0x74]
mov ebp, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd0]
add edx, dword [esp + 0x84]
mov edi, edx
sub edi, esi
cmp edi, edx
jge 0x10030e77
mov dword [esp + 0xe0], edi
sub edx, edi
mov edi, dword [esp + 0x68]
xor eax, eax
shr edi, 0x1f
mov dword [esp + 0xf4], edx
mov edx, dword [esp + 0xc0]
mov dword [esp + 0xbc], eax
mov dword [esp + 0x58], ecx
mov dword [esp + 0xd0], ebx
lea edi, [edi + edx*2]
sar edi, 1
add edx, edx
mov dword [esp + 0xd8], edx
dec edi
mov dword [esp + 0xe8], edi
mov edx, eax
mov ecx, dword [esp + 0xd8]
mov ebx, dword [esp + 0xc4]
mov edi, dword [esp + 0xc0]
mov dword [esp + 0x74], esi
mov dword [esp + 0xcc], ebp
nop dword [eax + eax]
nop dword [eax]
nop dword [eax]
nop dword [eax]
test ecx, ecx
jle 0x10030e50
mov dword [esp + 0xe4], eax
xor esi, esi
mov dword [esp + 0xbc], edx
lea ebp, [ebx + edx]
mov ecx, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd0]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
mov eax, dword [ecx + ebx + 0x68]
mov edx, dword [esp + 0xe0]
lea edi, [eax + edx*4]
mov eax, dword [esp + 0xe4]
mov eax, dword [edi + eax*4]
sub eax, dword [esp + 0xe8]
add eax, esi
js 0x10031c25
mov dword [ebp + esi*4], eax
mov edx, dword [ecx + ebx + 0x58]
mov edi, edx
sub edi, eax
cmp eax, edx
lea edi, [edi + edx - 1]
cmovge eax, edi
shl eax, 2
mov dword [ebp + esi*4], eax
inc esi
cmp esi, dword [esp + 0xd8]
jb 0x10030de0
mov eax, dword [esp + 0xe4]
mov edx, dword [esp + 0xbc]
mov ecx, dword [esp + 0xd8]
mov ebx, dword [esp + 0xc4]
mov edi, dword [esp + 0xc0]
inc eax
lea edx, [edx + edi*8]
cmp eax, dword [esp + 0xf4]
jb 0x10030da0
mov ecx, dword [esp + 0x58]
mov esi, dword [esp + 0x74]
mov ebp, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd0]
mov edi, dword [esp + 0x88]
mov dword [esp], edi
mov eax, dword [esp + 0xa8]
mov dword [esp + 4], eax
mov edx, dword [esp + 0xf0]
mov dword [esp + 8], edx
mov edi, dword [esp + 0xa4]
mov dword [esp + 0xc], edi
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x14], edx
mov edi, dword [esp + 0x84]
mov dword [esp + 0x18], edi
mov eax, dword [esp + 0xac]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x20], eax
mov edx, dword [esp + 0xdc]
mov dword [esp + 0x24], edx
mov edi, dword [esp + 0x8c]
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0xa0]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x78]
imul edi, edx
imul ecx, eax
add edi, dword [esp + 0x94]
mov dword [esp + 0x30], edi
add ecx, dword [esp + 0x90]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0xb0]
mov dword [esp + 0x38], ecx
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x3c], eax
mov edx, dword [esp + 0xb8]
mov dword [esp + 0x40], edx
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0x44], ecx
mov edi, dword [esp + 0xd4]
mov dword [esp + 0x48], edi
mov eax, dword [esp + 0x70]
mov dword [esp + 0x4c], eax
mov edx, dword [esp + 0xc8]
mov dword [esp + 0x50], edx
mov dword [esp + 0x54], esi
call fcn.10031e60
mov eax, dword [esp + 0x64]
sub eax, dword [esp + 0x70]
mov dword [esp + 0x64], eax
test eax, eax
jle 0x10031bab
mov eax, dword [esp + 0x84]
sub eax, dword [esp + 0xc8]
sub eax, esi
mov dword [esp + 0x84], eax
test eax, eax
jle 0x10031bab
mov edx, dword [esp + 0x68]
mov edi, dword [esp + 0x80]
lea eax, [edx*4]
imul eax, esi
mov esi, dword [esp + 0xc4]
lea ecx, [esi + eax + 0x1f]
and ecx, 0xffffffe0
mov dword [esp + 0x58], ecx
lea edx, [ecx + edi*8 + 0x23]
and edx, 0xffffffe0
add edi, edi
mov dword [ecx], edx
test edi, edi
jle 0x10031049
mov ecx, edi
shr ecx, 1
je 0x10031c1b
mov eax, dword [esp + 0x84]
xor esi, esi
mov dword [esp + 0xd0], ebx
shl eax, 4
mov ebx, dword [esp + 0x58]
nop dword [eax]
nop dword [eax]
lea edx, [eax + edx + 0x1f]
and edx, 0xffffffe0
mov dword [ebx + esi*8 + 4], edx
lea edx, [eax + edx + 0x1f]
and edx, 0xffffffe0
mov dword [ebx + esi*8 + 8], edx
inc esi
cmp esi, ecx
jb 0x10031000
mov ebx, dword [esp + 0xd0]
lea eax, [esi + esi + 1]
lea edx, [eax - 1]
cmp edx, edi
jae 0x10031049
mov edi, dword [esp + 0x58]
mov edx, dword [esp + 0x84]
shl edx, 4
mov ecx, dword [edi + eax*4 - 4]
lea esi, [edx + ecx + 0x1f]
and esi, 0xffffffe0
mov dword [edi + eax*4], esi
mov dword [esp + 0xcc], ebp
mov esi, dword [esp + 0x8c]
mov ebp, dword [esp + 0xd4]
mov dword [esp + 0xd0], ebx
mov edi, dword [esp + 0xa0]
mov ecx, dword [esp + 0xc8]
lea ebx, [esi + ebp*4]
mov esi, dword [esp + 0x124]
add esi, ebp
imul ebp, dword [esp + 0xa4]
lea edx, [edi + ecx*4]
mov edi, dword [esp + 0xa8]
add edi, ebp
shl esi, 2
imul esi, dword [esp + 0xdc]
mov eax, dword [esp + 0x94]
lea ebp, [edi + ecx*4]
mov dword [esp + 0x5c], ebp
add eax, esi
push dword [esp + 0x58]
mov ebp, dword [esp + 0x64]
add ecx, dword [esp + 0x124]
mov esi, dword [esp + 0x94]
lea edi, [ebp + ecx*4]
shl ecx, 2
imul ecx, dword [esp + 0x6c]
add esi, ecx
test ebp, ebp
cmove edi, esi
push edi
push eax
push edx
push ebx
push dword [esp + 0x94]
push dword [esp + 0xd8]
push dword [esp + 0x80]
push dword [esp + 0xa4]
push 0
push dword [esp + 0xcc]
push dword [esp + 0x11c]
push dword [esp + 0x8c]
push dword [esp + 0xbc]
mov ebp, dword [esp + 0x104]
mov ebx, dword [esp + 0x108]
call fcn.10031e60
jmp 0x10031ba8
mov eax, 0xffffff1f
add esp, 0xfc
pop ebp
pop ebx
pop edi
pop esi
ret
mov ecx, dword [esp + 0x68]
imul ecx, dword [esp + 0xf0]
mov edi, dword [esp + 0x88]
sub edi, ecx
sub edi, dword [esp + 0x74]
mov ecx, dword [ebp + ebx + 0x10]
mov dword [esp + 0x88], edi
mov dword [esp + 0xb0], ecx
mov edi, dword [ebp + ebx + 0x78]
mov ecx, dword [ebp + ebx + 0x58]
mov esi, dword [ebp + ebx + 0xc]
mov dword [esp + 0x60], edi
mov dword [esp + 0x70], ecx
mov ecx, dword [ebp + ebx + 0x2c]
mov edi, dword [ebp + ebx + 0x5c]
mov dword [esp + 0xc4], esi
mov esi, dword [ebp + ebx + 0x28]
sub ecx, dword [esp + 0xac]
sub edi, dword [esp + 0x84]
sub ecx, eax
mov dword [esp + 0x6c], esi
sub edi, edx
mov esi, dword [esp + 0xe0]
and esi, 0x10
mov dword [esp + 0x5c], esi
jne 0x100311c4
mov esi, dword [ebp + ebx + 0x4c]
mov dword [esp + 0xd8], esi
cmp esi, eax
jg 0x100311d1
mov dword [esp + 0xd8], 0
jmp 0x100311d8
sub dword [esp + 0xd8], eax
mov esi, dword [esp + 0xe0]
and esi, 0x40
mov dword [esp + 0x80], esi
jne 0x100311fa
mov esi, dword [ebp + ebx + 0x7c]
mov dword [esp + 0xd4], esi
cmp esi, edx
jg 0x10031207
mov dword [esp + 0xd4], 0
jmp 0x1003120e
sub dword [esp + 0xd4], edx
mov esi, dword [esp + 0xe0]
and esi, 0x20
mov dword [esp + 0xdc], esi
jne 0x1003122d
mov esi, dword [ebp + ebx + 0x50]
mov dword [esp + 0x74], esi
cmp esi, ecx
jg 0x10031237
mov dword [esp + 0x74], 0
jmp 0x1003123b
sub dword [esp + 0x74], ecx
and dword [esp + 0xe0], 0x80
jne 0x10031253
mov esi, dword [ebp + ebx + 0x80]
cmp esi, edi
jg 0x10031257
xor esi, esi
jmp 0x10031259
sub esi, edi
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0xd0], ebx
mov edi, eax
mov ebx, dword [esp + 0xd8]
cmp eax, ebx
mov dword [esp + 0xcc], ebp
mov ecx, dword [esp + 0xd4]
cmovl ebx, eax
mov ebp, dword [esp + 0x84]
cmp ebp, ecx
mov dword [esp + 0xf4], edx
mov edx, dword [esp + 0x74]
cmovl ecx, ebp
cmp eax, edx
mov dword [esp + 0xd8], ebx
cmovl edx, eax
cmp esi, ebp
mov dword [esp + 0xd4], ecx
cmovge esi, ebp
sub edi, ebx
mov dword [esp + 0x64], edi
add ebx, edx
cmp ebx, eax
mov ebx, ebp
cmovg edx, edi
lea edi, [ecx + esi]
sub ebx, ecx
cmp edi, ebp
mov edi, dword [esp + 0x8c]
lea ecx, [ecx*4]
cmovg esi, ebx
mov dword [esp + 0x78], esi
mov esi, dword [esp + 0xc4]
lea edi, [edi + eax*4 + 0x1f]
and edi, 0xffffffe0
mov dword [esp + 0x74], edx
shl edx, 2
mov dword [esp + 0xb4], edi
lea ebp, [esi + esi]
mov esi, dword [esp + 0xb0]
imul ecx, ebp
mov dword [esp + 0x68], ebp
lea ebx, [esi + esi]
mov esi, dword [esp + 0xd8]
imul edx, ebx
mov dword [esp + 0xe4], ebx
lea eax, [esi*4]
imul eax, ebx
mov ebp, dword [esp + 0xcc]
lea eax, [eax + edi + 0x1f]
and eax, 0xffffffe0
mov dword [esp + 0xb8], eax
lea ebx, [edx + eax + 0x1f]
and ebx, 0xffffffe0
mov dword [esp + 0xbc], ebx
lea eax, [ecx + ebx + 0x1f]
mov ebx, dword [esp + 0xd0]
and eax, 0xffffffe0
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0xf8]
lea edx, [eax*4]
mov dword [esp + 0x7c], edx
mov edx, dword [esp + 0xf4]
test esi, esi
mov esi, dword [esp + 0x78]
jle 0x100314db
mov ecx, dword [esp + 0xe4]
shr ecx, 0x1f
mov edi, dword [esp + 0xb0]
mov dword [esp + 0xf4], edx
xor edx, edx
mov dword [esp + 0x58], edx
mov dword [esp + 0xc0], edx
lea ecx, [ecx + edi*2]
sar ecx, 1
dec ecx
mov dword [esp + 0xe8], ecx
mov dword [esp + 0x78], esi
mov dword [esp + 0xcc], ebp
mov dword [esp + 0xd0], ebx
mov edx, dword [esp + 0xf4]
mov ecx, dword [esp + 0x58]
mov ebp, dword [esp + 0xc0]
mov ebx, dword [esp + 0xb4]
mov edi, dword [esp + 0xe4]
mov esi, dword [esp + 0xb0]
mov dword [esp + 0xf8], eax
nop
test edi, edi
jle 0x100314a9
mov dword [esp + 0xc0], ebp
xor edx, edx
mov esi, dword [esp + 0xd0]
lea eax, [ebx + ebp]
mov ebp, dword [esp + 0xcc]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
nop dword [eax]
mov ebx, dword [ebp + esi + 0x38]
mov edi, dword [esp + 0xf8]
lea ebx, [ebx + edi*4]
xor edi, edi
mov ebx, dword [ebx + ecx*4]
sub ebx, dword [esp + 0xe8]
add ebx, edx
test ebx, ebx
cmovle ebx, edi
mov dword [eax + edx*4], ebx
mov edi, dword [ebp + esi + 0x28]
cmp ebx, edi
jl 0x10031478
dec edi
cmp dword [esp + 0xdc], 0
cmove ebx, edi
imul ebx, dword [esp + 0xf0]
mov dword [eax + edx*4], ebx
inc edx
cmp edx, dword [esp + 0xe4]
jb 0x10031440
mov ebp, dword [esp + 0xc0]
mov ebx, dword [esp + 0xb4]
mov edi, dword [esp + 0xe4]
mov esi, dword [esp + 0xb0]
inc ecx
lea ebp, [ebp + esi*8]
cmp ecx, dword [esp + 0xd8]
jb 0x10031400
mov edx, dword [esp + 0xf4]
mov eax, dword [esp + 0xf8]
mov esi, dword [esp + 0x78]
mov ebp, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd0]
add eax, dword [esp + 0xac]
mov edi, eax
sub edi, dword [esp + 0x74]
cmp edi, eax
jge 0x10031635
mov dword [esp + 0xf4], edx
sub eax, edi
mov edx, dword [esp + 0xe4]
xor ecx, ecx
shr edx, 0x1f
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x58], ecx
mov dword [esp + 0xdc], edi
mov dword [esp + 0x78], esi
lea edx, [edx + eax*2]
sar edx, 1
add eax, eax
mov dword [esp + 0xc0], eax
dec edx
mov dword [esp + 0xec], edx
mov eax, ecx
mov edx, dword [esp + 0xc0]
mov esi, dword [esp + 0xb8]
mov edi, dword [esp + 0xb0]
mov dword [esp + 0xcc], ebp
mov dword [esp + 0xd0], ebx
nop dword [eax]
test edx, edx
jle 0x1003160b
mov dword [esp + 0x58], eax
xor ebp, ebp
mov dword [esp + 0xe8], ecx
lea ebx, [esi + eax]
mov eax, dword [esp + 0xcc]
mov edx, dword [esp + 0xd0]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax]
nop dword [eax]
mov ecx, dword [eax + edx + 0x38]
mov esi, dword [esp + 0xdc]
lea edi, [ecx + esi*4]
mov ecx, dword [esp + 0xe8]
mov edi, dword [edi + ecx*4]
sub edi, dword [esp + 0xec]
add edi, ebp
js 0x10031c8f
mov dword [ebx + ebp*4], edi
mov ecx, dword [eax + edx + 0x28]
cmp edi, ecx
lea esi, [ecx - 1]
cmovge edi, esi
imul edi, dword [esp + 0xf0]
mov dword [ebx + ebp*4], edi
inc ebp
cmp ebp, dword [esp + 0xc0]
jb 0x100315a0
mov ecx, dword [esp + 0xe8]
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0xc0]
mov esi, dword [esp + 0xb8]
mov edi, dword [esp + 0xb0]
inc ecx
lea eax, [eax + edi*8]
cmp ecx, dword [esp + 0xf8]
jb 0x10031560
mov edx, dword [esp + 0xf4]
mov esi, dword [esp + 0x78]
mov ebp, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd0]
cmp dword [esp + 0xd4], 0
lea eax, [edx*4]
jle 0x10031793
mov edi, dword [esp + 0x68]
shr edi, 0x1f
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0xf4], edx
xor edx, edx
mov dword [esp + 0x58], edx
mov dword [esp + 0xc0], edx
lea edi, [edi + ecx*2]
sar edi, 1
add ecx, ecx
mov dword [esp + 0xdc], ecx
dec edi
mov dword [esp + 0xe8], edi
mov dword [esp + 0x78], esi
mov dword [esp + 0xcc], ebp
mov dword [esp + 0xd0], ebx
mov edx, dword [esp + 0xf4]
mov ecx, dword [esp + 0x58]
mov ebp, dword [esp + 0xc0]
mov ebx, dword [esp + 0xdc]
mov edi, dword [esp + 0xbc]
mov esi, dword [esp + 0xc4]
mov dword [esp + 0x5c], eax
nop
test ebx, ebx
jle 0x10031764
mov dword [esp + 0xc0], ebp
xor edx, edx
mov esi, dword [esp + 0xd0]
lea eax, [edi + ebp]
mov ebp, dword [esp + 0xcc]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax + eax]
nop dword [eax]
mov ebx, dword [ebp + esi + 0x68]
mov edi, dword [esp + 0xf4]
lea ebx, [ebx + edi*4]
xor edi, edi
mov ebx, dword [ebx + ecx*4]
sub ebx, dword [esp + 0xe8]
add ebx, edx
test ebx, ebx
cmovle ebx, edi
mov dword [eax + edx*4], ebx
mov edi, dword [ebp + esi + 0x58]
cmp ebx, edi
jl 0x10031738
dec edi
cmp dword [esp + 0xe0], 0
cmove ebx, edi
shl ebx, 2
mov dword [eax + edx*4], ebx
inc edx
cmp edx, dword [esp + 0xdc]
jb 0x10031700
mov ebp, dword [esp + 0xc0]
mov ebx, dword [esp + 0xdc]
mov edi, dword [esp + 0xbc]
mov esi, dword [esp + 0xc4]
inc ecx
lea ebp, [ebp + esi*8]
cmp ecx, dword [esp + 0xd4]
jb 0x100316c0
mov edx, dword [esp + 0xf4]
mov eax, dword [esp + 0x5c]
mov esi, dword [esp + 0x78]
mov ebp, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd0]
add edx, dword [esp + 0x84]
mov edi, edx
sub edi, esi
cmp edi, edx
jge 0x100318ed
mov dword [esp + 0xe0], edi
sub edx, edi
mov edi, dword [esp + 0x68]
xor ecx, ecx
shr edi, 0x1f
mov dword [esp + 0xf4], edx
mov edx, dword [esp + 0xc4]
mov dword [esp + 0x58], ecx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x78], esi
lea edi, [edi + edx*2]
sar edi, 1
add edx, edx
mov dword [esp + 0xdc], edx
dec edi
mov dword [esp + 0xc0], edi
mov eax, ecx
mov edx, dword [esp + 0xdc]
mov esi, dword [esp + 0xc8]
mov edi, dword [esp + 0xc4]
mov dword [esp + 0xcc], ebp
mov dword [esp + 0xd0], ebx
nop dword [eax + eax]
nop dword [eax]
nop dword [eax]
test edx, edx
jle 0x100318c6
mov dword [esp + 0x58], eax
xor ebp, ebp
mov dword [esp + 0xe8], ecx
lea ebx, [esi + eax]
mov eax, dword [esp + 0xcc]
mov edx, dword [esp + 0xd0]
nop dword [eax + eax]
nop dword [eax]
nop dword [eax]
nop dword [eax]
mov ecx, dword [eax + edx + 0x68]
mov esi, dword [esp + 0xe0]
lea edi, [ecx + esi*4]
mov ecx, dword [esp + 0xe8]
mov edi, dword [edi + ecx*4]
sub edi, dword [esp + 0xc0]
add edi, ebp
js 0x10031c73
mov dword [ebx + ebp*4], edi
mov ecx, dword [eax + edx + 0x58]
cmp edi, ecx
lea esi, [ecx - 1]
cmovge edi, esi
shl edi, 2
mov dword [ebx + ebp*4], edi
inc ebp
cmp ebp, dword [esp + 0xdc]
jb 0x10031860
mov ecx, dword [esp + 0xe8]
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0xdc]
mov esi, dword [esp + 0xc8]
mov edi, dword [esp + 0xc4]
inc ecx
lea eax, [eax + edi*8]
cmp ecx, dword [esp + 0xf4]
jb 0x10031820
mov eax, dword [esp + 0x5c]
mov esi, dword [esp + 0x78]
mov ebp, dword [esp + 0xcc]
mov ebx, dword [esp + 0xd0]
mov edi, dword [esp + 0x88]
mov dword [esp], edi
mov edx, dword [esp + 0xa8]
mov dword [esp + 4], edx
mov ecx, dword [esp + 0xf0]
mov dword [esp + 8], ecx
mov edi, dword [esp + 0xa4]
mov dword [esp + 0xc], edi
mov edx, dword [esp + 0x70]
mov dword [esp + 0x10], edx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x14], ecx
mov edi, dword [esp + 0x84]
mov dword [esp + 0x18], edi
mov edx, dword [esp + 0xac]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x68]
mov dword [esp + 0x20], edx
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0x24], ecx
mov edi, dword [esp + 0x8c]
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0xa0]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x7c]
imul edi, ecx
imul eax, edx
add edi, dword [esp + 0x94]
mov dword [esp + 0x30], edi
add eax, dword [esp + 0x90]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x3c], eax
mov edx, dword [esp + 0xbc]
mov dword [esp + 0x40], edx
mov ecx, dword [esp + 0xc8]
mov dword [esp + 0x44], ecx
mov edi, dword [esp + 0xd8]
mov dword [esp + 0x48], edi
mov eax, dword [esp + 0x74]
mov dword [esp + 0x4c], eax
mov edx, dword [esp + 0xd4]
mov dword [esp + 0x50], edx
mov dword [esp + 0x54], esi
call fcn.10031e60
mov eax, dword [esp + 0x64]
sub eax, dword [esp + 0x74]
mov dword [esp + 0x64], eax
test eax, eax
jle 0x10031bab
mov eax, dword [esp + 0x84]
sub eax, dword [esp + 0xd4]
sub eax, esi
mov dword [esp + 0x84], eax
test eax, eax
jle 0x10031bab
mov eax, dword [esp + 0x68]
mov edi, dword [esp + 0xb0]
lea edx, [eax*4]
imul edx, esi
mov esi, dword [esp + 0xc8]
lea ecx, [esi + edx + 0x1f]
and ecx, 0xffffffe0
mov dword [esp + 0x58], ecx
lea eax, [ecx + edi*8 + 0x23]
and eax, 0xffffffe0
add edi, edi
mov dword [ecx], eax
test edi, edi
jle 0x10031ac9
mov edx, edi
shr edx, 1
je 0x10031c69
mov ecx, dword [esp + 0x84]
xor esi, esi
mov dword [esp + 0xd0], ebx
shl ecx, 4
mov ebx, dword [esp + 0x58]
nop dword [eax + eax]
nop dword [eax]
nop word [eax + eax]
lea eax, [ecx + eax + 0x1f]
and eax, 0xffffffe0
mov dword [ebx + esi*8 + 4], eax
lea eax, [ecx + eax + 0x1f]
and eax, 0xffffffe0
mov dword [ebx + esi*8 + 8], eax
inc esi
cmp esi, edx
jb 0x10031a80
mov ebx, dword [esp + 0xd0]
lea eax, [esi + esi + 1]
lea edx, [eax - 1]
cmp edx, edi
jae 0x10031ac9
mov edi, dword [esp + 0x58]
mov edx, dword [esp + 0x84]
shl edx, 4
mov ecx, dword [edi + eax*4 - 4]
lea esi, [edx + ecx + 0x1f]
and esi, 0xffffffe0
mov dword [edi + eax*4], esi
mov dword [esp + 0xcc], ebp
mov esi, dword [esp + 0x8c]
mov ebp, dword [esp + 0xd8]
mov dword [esp + 0xd0], ebx
mov edi, dword [esp + 0xa0]
mov ecx, dword [esp + 0xd4]
lea ebx, [esi + ebp*4]
mov esi, dword [esp + 0x124]
add esi, ebp
imul ebp, dword [esp + 0xa4]
lea edx, [edi + ecx*4]
mov edi, dword [esp + 0xa8]
add edi, ebp
shl esi, 2
imul esi, dword [esp + 0xe4]
mov eax, dword [esp + 0x94]
lea ebp, [edi + ecx*4]
mov dword [esp + 0x5c], ebp
add eax, esi
push dword [esp + 0x58]
mov ebp, dword [esp + 0x64]
add ecx, dword [esp + 0x124]
mov esi, dword [esp + 0x94]
lea edi, [ebp + ecx*4]
shl ecx, 2
imul ecx, dword [esp + 0x6c]
add esi, ecx
test ebp, ebp
cmove edi, esi
push edi
push eax
push edx
push ebx
push dword [esp + 0xc4]
push dword [esp + 0xdc]
push dword [esp + 0x80]
push dword [esp + 0xa4]
push 0
push dword [esp + 0xcc]
push dword [esp + 0x11c]
push dword [esp + 0x8c]
push dword [esp + 0xbc]
mov ebp, dword [esp + 0x104]
mov ebx, dword [esp + 0x108]
call fcn.10031e60
add esp, 0x38
mov eax, dword [esp + 0x9c]
cmp eax, dword [ebp + ebx + 0x5c]
jg 0x10031bc5
mov eax, dword [esp + 0x98]
cmp eax, dword [ebp + ebx + 0x2c]
jle 0x10031bd5
mov eax, 0x30
add esp, 0xfc
pop ebp
pop ebx
pop edi
pop esi
ret
xor eax, eax
add esp, 0xfc
pop ebp
pop ebx
pop edi
pop esi
ret
mov eax, 1
jmp 0x10030546
cmp dword [esp + 0x80], 0
jne 0x10030327
neg eax
mov dword [ebp + esi*4], eax
jmp 0x1003032b
cmp dword [esp + 0x5c], 0
jne 0x10030067
neg eax
mov dword [ebp + esi*4], eax
jmp 0x1003006b
mov eax, 1
jmp 0x10031026
cmp dword [esp + 0x7c], 0
jne 0x10030e07
neg eax
dec eax
mov dword [ebp + esi*4], eax
jmp 0x10030e0b
neg eax
dec eax
mov dword [edx + ebp*4], eax
jmp 0x10030c8a
cmp dword [esp + 0x58], 0
jne 0x10030b07
neg eax
dec eax
mov dword [ebp + esi*4], eax
jmp 0x10030b0b
neg eax
dec eax
mov dword [edx + ebp*4], eax
jmp 0x1003098a
mov eax, 1
jmp 0x10031aa6
cmp dword [esp + 0x80], 0
jne 0x10031887
mov dword [ebx + ebp*4], 0
xor edi, edi
jmp 0x1003188a
cmp dword [esp + 0x5c], 0
jne 0x100315c7
mov dword [ebx + ebp*4], 0
xor edi, edi
jmp 0x100315ca
mov esi, dword [ebp + ebx + 0xc]
add esi, esi
mov dword [esp + 0x58], esi
mov edi, dword [esp + 0x8c]
mov esi, dword [esp + 0xac]
mov ecx, dword [ebp + ebx + 0x10]
lea edi, [edi + esi*4 + 0x1f]
and edi, 0xffffffe0
mov dword [esp + 0x60], edi
lea esi, [edi + ecx*8 + 0x23]
add ecx, ecx
and esi, 0xffffffe0
mov dword [edi], esi
mov dword [esp + 0x5c], ecx
test ecx, ecx
jle 0x10031d8c
shr ecx, 1
mov dword [esp + 0x64], ecx
je 0x10031e2c
mov edi, dword [esp + 0x84]
xor ecx, ecx
shl edi, 4
mov dword [esp + 0xcc], ebp
mov dword [esp + 0xd0], ebx
mov ebp, edi
mov ebx, dword [esp + 0x64]
mov edi, dword [esp + 0x60]
nop dword [eax]
nop dword [eax]
lea esi, [ebp + esi + 0x1f]
and esi, 0xffffffe0
mov dword [edi + ecx*8 + 4], esi
lea esi, [ebp + esi + 0x1f]
and esi, 0xffffffe0
mov dword [edi + ecx*8 + 8], esi
inc ecx
cmp ecx, ebx
jb 0x10031d20
mov ebp, dword [esp + 0xcc]
lea ecx, [ecx + ecx + 1]
mov ebx, dword [esp + 0xd0]
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x64]
lea esi, [ecx - 1]
cmp esi, dword [esp + 0x5c]
jae 0x10031d8c
mov dword [esp + 0xf4], edx
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
mov esi, dword [esp + 0x84]
shl esi, 4
mov edi, dword [ecx + edx*4 - 4]
lea esi, [esi + edi + 0x1f]
and esi, 0xffffffe0
mov dword [ecx + edx*4], esi
mov edx, dword [esp + 0xf4]
push dword [esp + 0x60]
shl eax, 2
imul eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x98]
add ecx, eax
mov eax, dword [esp + 0x6c]
imul eax, dword [esp + 0xf4]
mov edi, dword [esp + 0x70]
mov esi, dword [esp + 0x8c]
sub esi, eax
sub esi, dword [esp + 0x78]
mov dword [esp + 0x8c], esi
lea esi, [edi + edx*4]
shl edx, 2
imul edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x94]
add eax, edx
test edi, edi
cmove esi, eax
push esi
push ecx
push dword [esp + 0xac]
push dword [esp + 0x9c]
push dword [ebp + ebx + 0x10]
push dword [ebp + ebx + 0xc]
push dword [esp + 0xc8]
push dword [esp + 0xa4]
push 0
push dword [esp + 0xcc]
push dword [esp + 0x11c]
push dword [esp + 0xd8]
push dword [esp + 0xbc]
call fcn.10031e60
jmp 0x10031ba8
mov dword [esp + 0x64], 1
jmp 0x10031d51
mov ecx, 1
jmp 0x1002fb6c
mov eax, 1
jmp 0x1002facb