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

Disassembly:
sub esp, 0x104
shr edx, 2
mov dword [esp + 0xec], edx
mov edx, dword [ecx + 0x10]
push ebx
mov ebx, dword [ecx]
mov dword [esp + 0x64], edx
mov edx, dword [ecx + 0x18]
push ebp
push esi
mov dword [esp + 0x10c], edx
mov edx, dword [eax + 4]
cmp edx, dword [eax + 0x24]
lea ecx, [eax + 0x20]
lea esi, [eax + 0x40]
push edi
mov edi, eax
mov dword [esp + 0x48], ecx
mov dword [esp + 0x98], esi
jle 0x4c9b8a
mov edi, ecx
mov dword [esp + 0x48], eax
mov ecx, eax
mov eax, dword [ecx + 4]
cmp eax, dword [esi + 4]
jle 0x4c9ba6
mov dword [esp + 0x98], ecx
mov dword [esp + 0x48], esi
mov ecx, esi
mov esi, dword [esp + 0x98]
mov edx, dword [edi + 4]
cmp edx, dword [ecx + 4]
jle 0x4c9bb8
mov eax, edi
mov edi, ecx
mov dword [esp + 0x48], eax
mov ecx, eax
mov eax, dword [edi + 4]
lea edx, [eax + 0xffff]
mov eax, dword [esi + 4]
lea esi, [eax + 0xffff]
sar edx, 0x10
sar esi, 0x10
cmp edx, esi
mov dword [esp + 0x28], edx
mov dword [esp + 0x50], esi
je 0x4cb9e3
mov ecx, dword [ecx + 4]
add ecx, 0xffff
sar ecx, 0x10
mov dword [esp + 0x8c], ecx
mov ecx, dword [edi + 4]
sub eax, ecx
cdq
push edx
push eax
push 0x10000
push 0
call fcn.006372b0
mov ecx, dword [edi]
mov esi, eax
mov eax, dword [esp + 0x98]
mov eax, dword [eax]
mov ebp, edx
push ebp
sub eax, ecx
cdq
push esi
push edx
push eax
mov dword [esp + 0x34], ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x10c], eax
mov eax, dword [ecx + 8]
sub eax, dword [edi + 8]
push ebp
cdq
push esi
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov edx, dword [esp + 0x98]
mov dword [esp + 0xf0], eax
mov eax, dword [edx + 0xc]
sub eax, dword [edi + 0xc]
push ebp
cdq
push esi
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov dword [esp + 0xf4], eax
mov eax, dword [esp + 0x98]
mov eax, dword [eax + 0x10]
sub eax, dword [edi + 0x10]
push ebp
cdq
push esi
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x104], eax
mov eax, dword [ecx + 0x14]
sub eax, dword [edi + 0x14]
push ebp
cdq
push esi
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov edx, dword [esp + 0x98]
mov dword [esp + 0xf8], eax
mov eax, dword [edx + 0x18]
sub eax, dword [edi + 0x18]
push ebp
cdq
push esi
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov dword [esp + 0x108], eax
mov eax, dword [esp + 0x98]
mov eax, dword [eax + 0x1c]
sub eax, dword [edi + 0x1c]
push ebp
cdq
push esi
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x100], eax
mov eax, dword [ecx + 4]
sub eax, dword [edi + 4]
cdq
mov ecx, eax
mov eax, dword [esp + 0x10c]
mov ebp, edx
push ebp
cdq
push ecx
mov esi, eax
push edx
push esi
mov dword [esp + 0x64], ecx
mov dword [esp + 0x68], ebp
mov dword [esp + 0x98], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x24]
mov edx, dword [esp + 0x48]
mov ecx, dword [edx]
cmp ecx, eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x3c], ecx
je 0x4cb9e3
mov eax, dword [esp + 0x28]
shl eax, 0x10
sub eax, dword [edi + 4]
cdq
mov ebp, eax
mov eax, dword [esp + 0x88]
push edx
push ebp
push eax
push esi
mov dword [esp + 0x84], ebp
mov dword [esp + 0x88], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ecx, dword [edi + 8]
mov esi, eax
mov eax, dword [esp + 0xf0]
add esi, dword [esp + 0x24]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x78]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0xe0], esi
mov dword [esp + 0xbc], eax
mov dword [esp + 0xc0], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x34]
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0xf4]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x78]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb8], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x40]
mov ecx, dword [edi + 0x10]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x104]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x78]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc8], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x38]
mov ecx, dword [edi + 0x14]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0xf8]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x78]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0xac], eax
mov dword [esp + 0xb0], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x30]
mov ecx, dword [edi + 0x18]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x108]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x78]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0xf4], eax
mov dword [esp + 0xf8], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x78]
mov edi, dword [edi + 0x1c]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x100]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0xcc], eax
mov dword [esp + 0xd0], edx
mov dword [esp + 0xa0], edi
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, edi
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x3c]
sub eax, dword [esp + 0x94]
cdq
push edx
push eax
push 0x10000
push 0
call fcn.006372b0
mov ecx, dword [esp + 0xb0]
mov dword [esp + 0x88], edx
mov edx, dword [esp + 0x58]
push edx
mov edx, dword [esp + 0xb0]
mov edi, eax
mov eax, dword [esp + 0x58]
push eax
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebp, edx
mov edx, dword [esp + 0x48]
mov ecx, eax
mov eax, dword [edx + 8]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x34]
mov ebp, edx
cdq
sub ecx, eax
sbb ebp, edx
mov edx, dword [esp + 0x88]
push edx
push edi
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x54]
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0x58]
push eax
mov edx, dword [esp + 0xac]
mov eax, dword [esp + 0xa8]
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebp, edx
mov edx, dword [esp + 0x48]
mov ecx, eax
mov eax, dword [edx + 0xc]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x40]
mov ebp, edx
cdq
sub ecx, eax
sbb ebp, edx
mov edx, dword [esp + 0x88]
push edx
push edi
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0xb8]
mov dword [esp + 0xe0], eax
mov eax, dword [esp + 0x58]
push eax
mov eax, dword [esp + 0xb8]
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebp, edx
mov edx, dword [esp + 0x48]
mov ecx, eax
mov eax, dword [edx + 0x10]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x38]
mov ebp, edx
cdq
sub ecx, eax
sbb ebp, edx
mov edx, dword [esp + 0x88]
push edx
push edi
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0xa0]
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0x58]
push eax
mov eax, dword [esp + 0xa0]
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebp, edx
mov edx, dword [esp + 0x48]
mov ecx, eax
mov eax, dword [edx + 0x14]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x30]
mov ebp, edx
cdq
sub ecx, eax
sbb ebp, edx
mov edx, dword [esp + 0x88]
push edx
push edi
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0xe8]
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0x58]
push eax
mov eax, dword [esp + 0xe8]
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebp, edx
mov edx, dword [esp + 0x48]
mov ecx, eax
mov eax, dword [edx + 0x18]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x2c]
mov ebp, edx
cdq
sub ecx, eax
sbb ebp, edx
mov edx, dword [esp + 0x88]
push edx
push edi
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0xc0]
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 0x58]
push eax
mov eax, dword [esp + 0xc0]
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebp, edx
mov edx, dword [esp + 0x48]
mov ecx, eax
mov eax, dword [edx + 0x1c]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x90]
mov ebp, edx
cdq
sub ecx, eax
sbb ebp, edx
mov edx, dword [esp + 0x88]
push edx
push edi
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x118]
mov dword [esp + 0xd4], eax
mov eax, ecx
imul eax, dword [esp + 0xfc]
lea eax, [edx + eax*4]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x8c]
sub eax, ecx
mov dword [esp + 0x44], eax
je 0x4cada1
mov eax, dword [esp + 0x3c]
sub eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x58]
cdq
push ecx
mov ebp, edx
mov edx, dword [esp + 0x58]
push edx
push 0x10000
push 0
mov edi, eax
call fcn.006372b0
push edx
push eax
push ebp
push edi
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x78]
push ecx
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x1c], eax
cdq
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x48]
mov ecx, eax
mov eax, dword [edx]
mov edx, dword [esp + 0x94]
add ecx, dword [esp + 0x24]
cmp edx, eax
jge 0x4ca7d0
cmp dword [esp + 0x44], 0
jle 0x4cada1
mov eax, dword [esp + 0xd8]
cdq
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0xe0]
mov dword [esp + 0xa0], edx
cdq
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0xb8], edx
cdq
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0xa8], edx
cdq
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0xcc]
mov dword [esp + 0xb0], edx
cdq
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0x88], edx
cdq
mov dword [esp + 0x74], eax
add ecx, 0xffff
lea eax, [esi + 0xffff]
mov dword [esp + 0x78], edx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0xa0]
sub dword [esp + 0x44], 1
and eax, 0xffff0000
mov dword [esp + 0x10], eax
sub eax, esi
cdq
mov ebp, edx
mov edx, dword [esp + 0x9c]
push ebp
mov edi, eax
push edi
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x80]
mov ecx, dword [esp + 0xb4]
push ebp
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xbc]
push edi
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x68]
mov edx, dword [esp + 0xa8]
push ebp
push edi
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xac]
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ecx, dword [esp + 0xb0]
add eax, dword [esp + 0x60]
mov edx, dword [esp + 0xac]
push ebp
push edi
push ecx
push edx
mov dword [esp + 0x3c], eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x84]
push ebp
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x8c]
push edi
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x78]
push ebp
push edi
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x7c]
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x5c]
add eax, dword [esp + 0x6c]
mov ecx, edx
sar ecx, 0x10
lea ecx, [edi + ecx*4]
mov dword [esp + 0xbc], ecx
mov ecx, dword [esp + 0x34]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
test ecx, ecx
jle 0x4ca750
mov ebp, dword [esp + 0x90]
lea edi, [eax - 0x8000]
add ebp, 0xffff8000
mov dword [esp + 0x1c], edi
mov dword [esp + 0x38], ebp
jmp 0x4ca3eb
mov edi, dword [esp + 0x1c]
sub ecx, 1
test ebp, ebp
mov dword [esp + 0xe4], ecx
jle 0x4ca416
mov eax, dword [esp + 0x70]
and ebp, 0xffff0000
mov edx, ebp
add eax, 0xffffffff
xor ecx, ecx
sar edx, 0x10
cmp edx, eax
setl cl
mov eax, ecx
jmp 0x4ca41a
xor ebp, ebp
xor eax, eax
test edi, edi
jle 0x4ca44f
mov ecx, dword [esp + 0x110]
and edi, 0xffff0000
mov dword [esp + 0x10], eax
xor eax, eax
mov edx, edi
sar edx, 0x10
add ecx, 0xffffffff
cmp edx, ecx
setge al
sub eax, 1
and eax, dword [esp + 0x70]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x10]
jmp 0x4ca455
xor edi, edi
mov dword [esp + 0x14], edi
mov ecx, edi
sar ecx, 0x10
imul ecx, dword [esp + 0x70]
mov edx, ebp
sar edx, 0x10
add ecx, edx
mov edx, dword [ebx + ecx*4]
lea esi, [ecx + eax]
mov esi, dword [ebx + esi*4]
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x14]
add ecx, esi
mov esi, dword [ebx + ecx*4]
add ecx, eax
mov eax, dword [esp + 0x1c]
sub eax, edi
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x38]
sub esi, ebp
and eax, 0xfffe
add eax, 1
and esi, 0xfffe
add esi, 1
mov ecx, dword [ebx + ecx*4]
mov dword [esp + 0x90], esi
mov dword [esp + 0x4c], edx
shr edx, 0x18
mov ebp, 0x10000
sub ebp, esi
mov esi, ebp
imul ebp, eax
mov edi, 0x10000
sub edi, eax
imul eax, dword [esp + 0x90]
imul esi, edi
imul edi, dword [esp + 0x90]
shr esi, 0x10
imul esi, edx
mov edx, dword [esp + 0x20]
shr edx, 0x18
shr edi, 0x10
imul edi, edx
mov edx, dword [esp + 0x24]
shr edx, 0x18
shr eax, 0x10
shr ebp, 0x10
imul ebp, edx
mov edx, ecx
shr edx, 0x18
imul eax, edx
mov edx, dword [esp + 0x24]
shr eax, 0x10
shr edi, 0x10
and edx, 0xff0000
mov dword [esp + 0x14], edi
mov edi, eax
shr ebp, 0x10
imul edx, ebp
mov eax, ecx
and eax, 0xff0000
imul eax, edi
add eax, edx
mov edx, dword [esp + 0x20]
and edx, 0xff0000
imul edx, dword [esp + 0x14]
add eax, edx
mov edx, dword [esp + 0x4c]
and edx, 0xff0000
shr esi, 0x10
imul edx, esi
add eax, edx
movzx edx, cl
imul edx, edi
mov dword [esp + 0x90], edi
movzx edi, byte [esp + 0x24]
imul edi, ebp
add edx, edi
movzx edi, byte [esp + 0x20]
and eax, 0xff0000ff
imul edi, dword [esp + 0x14]
mov dword [esp + 0x10], ebp
add edx, edi
movzx edi, byte [esp + 0x4c]
mov ebp, dword [esp + 0x90]
imul edi, esi
add edx, edi
mov edi, dword [esp + 0x24]
and edi, 0xff00
imul edi, dword [esp + 0x10]
and ecx, 0xff00
imul ecx, ebp
add ecx, edi
mov edi, dword [esp + 0x20]
and edi, 0xff00
imul edi, dword [esp + 0x14]
add ecx, edi
mov edi, dword [esp + 0x4c]
and edi, 0xff00
imul edi, esi
and edx, 0xff00
or eax, edx
add ecx, edi
and ecx, 0xff0000
or eax, ecx
mov ecx, dword [esp + 0x10]
add ebp, ecx
add ebp, dword [esp + 0x14]
shr eax, 8
add ebp, esi
shl ebp, 0x18
and ebp, 0xff000000
or eax, ebp
mov edx, eax
and edx, 0xff000000
cmp edx, 0x8000000
jbe 0x4ca6ec
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x30]
mov ecx, eax
and ecx, 0xff0000
shr esi, 0x10
imul ecx, esi
movzx esi, al
and ecx, 0xff0000ff
shr edi, 0x10
imul esi, edi
and esi, 0xff00
or ecx, esi
mov esi, dword [esp + 0x2c]
and eax, 0xff00
mov edx, dword [esp + 0x3c]
shr esi, 0x10
imul eax, esi
and eax, 0xff0000
or ecx, eax
shr ecx, 8
mov edi, dword [esp + 0xbc]
mov eax, ecx
mov esi, ecx
and eax, 0xff0000
movzx ecx, cl
and esi, 0xff00
shr edx, 0x10
imul eax, edx
imul ecx, edx
imul esi, edx
mov edx, dword [edi]
and eax, 0xff0000ff
and ecx, 0xff00
and esi, 0xff0000
or eax, esi
or eax, ecx
shr eax, 8
mov esi, eax
and eax, 0xff00
and esi, 0xff00ff
mov ecx, edx
and ecx, 0xff00ff
add ecx, esi
mov esi, ecx
and edx, 0xff00
add edx, eax
mov eax, ecx
shr eax, 8
and eax, 1
shr esi, 0x18
imul eax, eax, 0xff
and esi, 1
imul esi, esi, 0xffff0000
or eax, esi
or eax, ecx
mov ecx, edx
shr ecx, 0x10
and ecx, 1
neg ecx
shl ecx, 8
or ecx, edx
and eax, 0xffff00ff
and ecx, 0xff00
or eax, ecx
or eax, 0xff000000
mov dword [edi], eax
mov edx, dword [esp + 0xd8]
mov eax, dword [esp + 0xe0]
mov ecx, dword [esp + 0xc8]
add dword [esp + 0x3c], edx
add dword [esp + 0x28], eax
mov ebp, dword [esp + 0x38]
add dword [esp + 0x2c], ecx
mov edx, dword [esp + 0xdc]
add ebp, dword [esp + 0xcc]
mov eax, dword [esp + 0xd4]
mov ecx, dword [esp + 0xe4]
add dword [esp + 0xbc], 4
add dword [esp + 0x30], edx
add dword [esp + 0x1c], eax
test ecx, ecx
mov dword [esp + 0x38], ebp
jg 0x4ca3e7
mov esi, dword [esp + 0xd0]
mov eax, dword [esp + 0x10c]
add dword [esp + 0x40], eax
mov ecx, dword [esp + 0x18]
add dword [esp + 0x34], ecx
mov edx, dword [esp + 0xf0]
mov ecx, dword [esp + 0x104]
add dword [esp + 0x80], edx
add dword [esp + 0x60], ecx
mov edx, dword [esp + 0xf8]
mov ecx, dword [esp + 0x100]
add dword [esp + 0x64], edx
add dword [esp + 0x6c], ecx
add esi, eax
mov eax, dword [esp + 0xfc]
add eax, eax
add eax, eax
add dword [esp + 0x5c], eax
mov eax, dword [esp + 0xf4]
add dword [esp + 0x68], eax
mov eax, dword [esp + 0x108]
add dword [esp + 0x7c], eax
cmp dword [esp + 0x44], 0
mov dword [esp + 0xd0], esi
jg 0x4ca2a3
jmp 0x4cada1
jle 0x4cada1
cmp dword [esp + 0x44], 0
jle 0x4cada1
mov eax, dword [esp + 0xd8]
cdq
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0xe0]
mov dword [esp + 0xa0], edx
cdq
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0xb8], edx
cdq
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0xa8], edx
cdq
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0xcc]
mov dword [esp + 0xb0], edx
cdq
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0x88], edx
cdq
mov dword [esp + 0x78], edx
lea edx, [esi + 0xffff]
add ecx, 0xffff
mov dword [esp + 0x74], eax
mov dword [esp + 0xbc], edx
mov dword [esp + 0x4c], ecx
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x9c]
sub dword [esp + 0x44], 1
and eax, 0xffff0000
mov dword [esp + 0xe4], eax
sub eax, esi
cdq
mov ebp, edx
push ebp
mov edi, eax
mov eax, dword [esp + 0xa4]
push edi
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x80]
mov edx, dword [esp + 0xb8]
push ebp
push edi
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xbc]
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ecx, dword [esp + 0xa8]
add eax, dword [esp + 0x68]
mov edx, dword [esp + 0xa4]
push ebp
push edi
push ecx
push edx
mov dword [esp + 0x40], eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x60]
mov ecx, dword [esp + 0xac]
push ebp
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xb4]
push edi
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x64]
mov edx, dword [esp + 0x88]
push ebp
push edi
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x8c]
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ecx, dword [esp + 0x78]
add eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x74]
push ebp
push edi
push ecx
push edx
mov dword [esp + 0x20], eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0xe4]
mov edi, dword [esp + 0x5c]
add eax, dword [esp + 0x6c]
mov ecx, edx
sar ecx, 0x10
lea ecx, [edi + ecx*4]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0xbc]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
test ecx, ecx
jle 0x4cad23
mov ebp, dword [esp + 0x10]
lea edi, [eax - 0x8000]
add ebp, 0xffff8000
mov dword [esp + 0x24], edi
mov dword [esp + 0x3c], ebp
jmp 0x4ca9c4
mov edi, dword [esp + 0x24]
sub ecx, 1
test ebp, ebp
mov dword [esp + 0x54], ecx
jle 0x4ca9ec
mov eax, dword [esp + 0x70]
and ebp, 0xffff0000
mov edx, ebp
add eax, 0xffffffff
xor ecx, ecx
sar edx, 0x10
cmp edx, eax
setl cl
mov eax, ecx
jmp 0x4ca9f0
xor ebp, ebp
xor eax, eax
test edi, edi
jle 0x4caa2b
mov ecx, dword [esp + 0x110]
and edi, 0xffff0000
mov dword [esp + 0xe4], eax
xor eax, eax
mov edx, edi
sar edx, 0x10
add ecx, 0xffffffff
cmp edx, ecx
setge al
sub eax, 1
and eax, dword [esp + 0x70]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xe4]
jmp 0x4caa31
xor edi, edi
mov dword [esp + 0x10], edi
mov ecx, edi
sar ecx, 0x10
imul ecx, dword [esp + 0x70]
mov edx, ebp
sar edx, 0x10
add ecx, edx
mov edx, dword [ebx + ecx*4]
lea esi, [ecx + eax]
mov esi, dword [ebx + esi*4]
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x10]
add ecx, esi
mov esi, dword [ebx + ecx*4]
add ecx, eax
mov eax, dword [esp + 0x24]
sub eax, edi
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x3c]
sub esi, ebp
and eax, 0xfffe
add eax, 1
and esi, 0xfffe
add esi, 1
mov ecx, dword [ebx + ecx*4]
mov dword [esp + 0x10], esi
mov dword [esp + 0x34], edx
shr edx, 0x18
mov ebp, 0x10000
sub ebp, esi
mov esi, ebp
imul ebp, eax
mov edi, 0x10000
sub edi, eax
imul eax, dword [esp + 0x10]
imul esi, edi
imul edi, dword [esp + 0x10]
shr esi, 0x10
imul esi, edx
mov edx, dword [esp + 0x14]
shr edx, 0x18
shr edi, 0x10
imul edi, edx
mov edx, dword [esp + 0x1c]
shr edx, 0x18
shr eax, 0x10
shr ebp, 0x10
imul ebp, edx
mov edx, ecx
shr edx, 0x18
imul eax, edx
mov edx, dword [esp + 0x1c]
shr eax, 0x10
shr edi, 0x10
and edx, 0xff0000
mov dword [esp + 0x20], edi
mov edi, eax
shr ebp, 0x10
imul edx, ebp
mov eax, ecx
and eax, 0xff0000
imul eax, edi
add eax, edx
mov edx, dword [esp + 0x14]
and edx, 0xff0000
imul edx, dword [esp + 0x20]
add eax, edx
mov edx, dword [esp + 0x34]
and edx, 0xff0000
shr esi, 0x10
imul edx, esi
add eax, edx
movzx edx, cl
imul edx, edi
mov dword [esp + 0xe4], edi
movzx edi, byte [esp + 0x1c]
imul edi, ebp
add edx, edi
movzx edi, byte [esp + 0x14]
and eax, 0xff0000ff
imul edi, dword [esp + 0x20]
mov dword [esp + 0x90], ebp
add edx, edi
movzx edi, byte [esp + 0x34]
mov ebp, dword [esp + 0xe4]
imul edi, esi
add edx, edi
mov edi, dword [esp + 0x1c]
and edi, 0xff00
imul edi, dword [esp + 0x90]
and ecx, 0xff00
imul ecx, ebp
add ecx, edi
mov edi, dword [esp + 0x14]
and edi, 0xff00
imul edi, dword [esp + 0x20]
add ecx, edi
mov edi, dword [esp + 0x34]
and edi, 0xff00
imul edi, esi
and edx, 0xff00
or eax, edx
add ecx, edi
and ecx, 0xff0000
or eax, ecx
mov ecx, dword [esp + 0x90]
add ebp, ecx
add ebp, dword [esp + 0x20]
shr eax, 8
add ebp, esi
shl ebp, 0x18
and ebp, 0xff000000
or eax, ebp
mov edx, eax
and edx, 0xff000000
cmp edx, 0x8000000
jbe 0x4cacc5
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x28]
mov ecx, eax
and ecx, 0xff0000
shr esi, 0x10
imul ecx, esi
movzx esi, al
and ecx, 0xff0000ff
shr edi, 0x10
imul esi, edi
and esi, 0xff00
or ecx, esi
mov esi, dword [esp + 0x2c]
and eax, 0xff00
mov edx, dword [esp + 0x38]
shr esi, 0x10
imul eax, esi
and eax, 0xff0000
or ecx, eax
shr ecx, 8
mov edi, dword [esp + 0x40]
mov eax, ecx
mov esi, ecx
and eax, 0xff0000
movzx ecx, cl
and esi, 0xff00
shr edx, 0x10
imul eax, edx
imul ecx, edx
imul esi, edx
mov edx, dword [edi]
and eax, 0xff0000ff
and ecx, 0xff00
and esi, 0xff0000
or eax, esi
or eax, ecx
shr eax, 8
mov esi, eax
and eax, 0xff00
and esi, 0xff00ff
mov ecx, edx
and ecx, 0xff00ff
add ecx, esi
mov esi, ecx
and edx, 0xff00
add edx, eax
mov eax, ecx
shr eax, 8
and eax, 1
shr esi, 0x18
imul eax, eax, 0xff
and esi, 1
imul esi, esi, 0xffff0000
or eax, esi
or eax, ecx
mov ecx, edx
shr ecx, 0x10
and ecx, 1
neg ecx
shl ecx, 8
or ecx, edx
and eax, 0xffff00ff
and ecx, 0xff00
or eax, ecx
or eax, 0xff000000
mov dword [edi], eax
mov edx, dword [esp + 0xd8]
mov eax, dword [esp + 0xe0]
mov ecx, dword [esp + 0xc8]
add dword [esp + 0x38], edx
add dword [esp + 0x30], eax
mov ebp, dword [esp + 0x3c]
add dword [esp + 0x2c], ecx
mov edx, dword [esp + 0xdc]
add ebp, dword [esp + 0xcc]
mov eax, dword [esp + 0xd4]
mov ecx, dword [esp + 0x54]
add dword [esp + 0x40], 4
add dword [esp + 0x28], edx
add dword [esp + 0x24], eax
test ecx, ecx
mov dword [esp + 0x3c], ebp
jg 0x4ca9c0
mov esi, dword [esp + 0xd0]
mov eax, dword [esp + 0x10c]
add dword [esp + 0xbc], eax
mov ecx, dword [esp + 0x18]
add dword [esp + 0x4c], ecx
mov edx, dword [esp + 0xf0]
mov ecx, dword [esp + 0x104]
add dword [esp + 0x80], edx
add dword [esp + 0x60], ecx
mov edx, dword [esp + 0xf8]
mov ecx, dword [esp + 0x100]
add dword [esp + 0x64], edx
add dword [esp + 0x6c], ecx
add esi, eax
mov eax, dword [esp + 0xfc]
add eax, eax
add eax, eax
add dword [esp + 0x5c], eax
mov eax, dword [esp + 0xf4]
add dword [esp + 0x68], eax
mov eax, dword [esp + 0x108]
add dword [esp + 0x7c], eax
cmp dword [esp + 0x44], 0
mov dword [esp + 0xd0], esi
jg 0x4ca876
mov eax, dword [esp + 0x50]
sub eax, dword [esp + 0x8c]
mov dword [esp + 0x44], eax
je 0x4cb9e3
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 4]
mov edi, dword [eax]
mov ebp, dword [esp + 0x98]
mov eax, dword [ebp + 4]
sub eax, ecx
cdq
push edx
push eax
push 0x10000
push 0
mov dword [esp + 0x64], ecx
call fcn.006372b0
mov ecx, eax
mov eax, edx
mov dword [esp + 0x50], eax
mov eax, dword [ebp]
sub eax, edi
cdq
push edx
push eax
mov eax, dword [esp + 0x58]
push eax
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, eax
mov eax, dword [esp + 0x8c]
shl eax, 0x10
sub eax, dword [esp + 0x54]
mov dword [esp + 0x10], ecx
imul ecx
mov cl, 0x10
call fcn.00643e20
mov ecx, eax
mov eax, dword [esp + 0x94]
add ecx, edi
cmp eax, edi
jge 0x4cb40c
cmp dword [esp + 0x44], 0
jle 0x4cb9e3
mov eax, dword [esp + 0xd8]
cdq
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0xe0]
mov dword [esp + 0xa0], edx
cdq
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0xb8], edx
cdq
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0xa8], edx
cdq
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0xcc]
mov dword [esp + 0xb0], edx
cdq
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0x88], edx
cdq
add ecx, 0xffff
mov dword [esp + 0x78], edx
mov edx, dword [esp + 0xfc]
mov dword [esp + 0x74], eax
mov dword [esp + 0x4c], ecx
lea eax, [edx*4]
lea ecx, [esi + 0xffff]
mov dword [esp + 0x24], eax
mov dword [esp + 0xbc], ecx
mov eax, dword [esp + 0xbc]
sub dword [esp + 0x44], 1
and eax, 0xffff0000
mov dword [esp + 0x50], eax
sub eax, esi
cdq
mov ebp, edx
mov edx, dword [esp + 0xa0]
push ebp
mov edi, eax
mov eax, dword [esp + 0xa0]
push edi
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ecx, dword [esp + 0xb8]
add eax, dword [esp + 0x80]
mov edx, dword [esp + 0xb4]
push ebp
push edi
push ecx
push edx
mov dword [esp + 0x48], eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x68]
mov ecx, dword [esp + 0xa4]
push ebp
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xac]
push edi
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x60]
mov edx, dword [esp + 0xb0]
push ebp
push edi
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xb4]
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ecx, dword [esp + 0x88]
add eax, dword [esp + 0x64]
mov edx, dword [esp + 0x84]
push ebp
push edi
push ecx
push edx
mov dword [esp + 0x38], eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x74]
push ebp
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x7c]
push edi
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x50]
mov edi, dword [esp + 0x5c]
add eax, dword [esp + 0x6c]
mov ecx, edx
sar ecx, 0x10
lea ecx, [edi + ecx*4]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x4c]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
test ecx, ecx
jle 0x4cb38a
mov ebp, dword [esp + 0x54]
lea esi, [eax - 0x8000]
add ebp, 0xffff8000
mov dword [esp + 0x20], esi
mov dword [esp + 0x3c], ebp
jmp 0x4cb024
mov esi, dword [esp + 0x20]
sub ecx, 1
test ebp, ebp
mov dword [esp + 0xe4], ecx
jle 0x4cb04f
mov eax, dword [esp + 0x70]
and ebp, 0xffff0000
mov edx, ebp
add eax, 0xffffffff
xor ecx, ecx
sar edx, 0x10
cmp edx, eax
setl cl
mov eax, ecx
jmp 0x4cb053
xor ebp, ebp
xor eax, eax
test esi, esi
jle 0x4cb088
mov ecx, dword [esp + 0x110]
and esi, 0xffff0000
mov dword [esp + 0x50], eax
xor eax, eax
mov edx, esi
sar edx, 0x10
add ecx, 0xffffffff
cmp edx, ecx
setge al
sub eax, 1
and eax, dword [esp + 0x70]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x50]
jmp 0x4cb08e
xor esi, esi
mov dword [esp + 0x18], esi
mov ecx, esi
sar ecx, 0x10
imul ecx, dword [esp + 0x70]
mov edx, ebp
sar edx, 0x10
add ecx, edx
mov edx, dword [ebx + ecx*4]
lea edi, [ecx + eax]
mov edi, dword [ebx + edi*4]
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x18]
add ecx, edi
mov edi, dword [ebx + ecx*4]
add eax, ecx
mov ecx, dword [ebx + eax*4]
mov eax, dword [esp + 0x20]
sub eax, esi
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x3c]
sub edi, ebp
and eax, 0xfffe
add eax, 1
and edi, 0xfffe
add edi, 1
mov dword [esp + 0x94], edx
shr edx, 0x18
mov esi, 0x10000
sub esi, edi
mov dword [esp + 0x50], esi
mov ebp, 0x10000
sub ebp, eax
imul esi, ebp
mov dword [esp + 0x54], edi
imul edi, ebp
mov ebp, eax
imul eax, dword [esp + 0x54]
imul ebp, dword [esp + 0x50]
shr esi, 0x10
imul esi, edx
mov edx, dword [esp + 0x14]
shr edx, 0x18
shr edi, 0x10
imul edi, edx
mov edx, dword [esp + 0x1c]
shr edx, 0x18
shr ebp, 0x10
imul ebp, edx
shr eax, 0x10
mov edx, ecx
shr edx, 0x18
imul eax, edx
shr eax, 0x10
mov edx, eax
mov dword [esp + 0x8c], edx
mov eax, ecx
and eax, 0xff0000
imul eax, edx
mov edx, dword [esp + 0x1c]
and edx, 0xff0000
shr ebp, 0x10
imul edx, ebp
add eax, edx
mov edx, dword [esp + 0x14]
and edx, 0xff0000
shr edi, 0x10
imul edx, edi
add eax, edx
mov edx, dword [esp + 0x94]
and edx, 0xff0000
shr esi, 0x10
imul edx, esi
add eax, edx
mov dword [esp + 0x34], ebp
movzx ebp, byte [esp + 0x1c]
imul ebp, dword [esp + 0x34]
movzx edx, cl
imul edx, dword [esp + 0x8c]
add edx, ebp
movzx ebp, byte [esp + 0x14]
and eax, 0xff0000ff
imul ebp, edi
add edx, ebp
movzx ebp, byte [esp + 0x94]
imul ebp, esi
add edx, ebp
mov ebp, dword [esp + 0x1c]
and ecx, 0xff00
imul ecx, dword [esp + 0x8c]
and ebp, 0xff00
imul ebp, dword [esp + 0x34]
add ecx, ebp
mov ebp, dword [esp + 0x14]
and ebp, 0xff00
imul ebp, edi
add ecx, ebp
mov ebp, dword [esp + 0x94]
and ebp, 0xff00
imul ebp, esi
add ecx, ebp
and ecx, 0xff0000
and edx, 0xff00
or eax, edx
mov edx, dword [esp + 0x34]
or eax, ecx
mov ecx, dword [esp + 0x8c]
add ecx, edx
add ecx, edi
add ecx, esi
shl ecx, 0x18
and ecx, 0xff000000
shr eax, 8
or eax, ecx
mov ecx, eax
and ecx, 0xff000000
cmp ecx, 0x8000000
jbe 0x4cb329
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x28]
mov ecx, eax
and ecx, 0xff0000
shr esi, 0x10
imul ecx, esi
movzx esi, al
and ecx, 0xff0000ff
shr edi, 0x10
imul esi, edi
and esi, 0xff00
or ecx, esi
mov esi, dword [esp + 0x2c]
and eax, 0xff00
mov edx, dword [esp + 0x38]
shr esi, 0x10
imul eax, esi
and eax, 0xff0000
or ecx, eax
shr ecx, 8
mov edi, dword [esp + 0x40]
mov eax, ecx
mov esi, ecx
and eax, 0xff0000
movzx ecx, cl
and esi, 0xff00
shr edx, 0x10
imul eax, edx
imul ecx, edx
imul esi, edx
mov edx, dword [edi]
and eax, 0xff0000ff
and ecx, 0xff00
and esi, 0xff0000
or eax, esi
or eax, ecx
shr eax, 8
mov esi, eax
and eax, 0xff00
and esi, 0xff00ff
mov ecx, edx
and ecx, 0xff00ff
add ecx, esi
mov esi, ecx
and edx, 0xff00
add edx, eax
mov eax, ecx
shr eax, 8
and eax, 1
shr esi, 0x18
imul eax, eax, 0xff
and esi, 1
imul esi, esi, 0xffff0000
or eax, esi
or eax, ecx
mov ecx, edx
shr ecx, 0x10
and ecx, 1
neg ecx
shl ecx, 8
or ecx, edx
and eax, 0xffff00ff
and ecx, 0xff00
or eax, ecx
or eax, 0xff000000
mov dword [edi], eax
mov edx, dword [esp + 0xd8]
mov eax, dword [esp + 0xe0]
mov ecx, dword [esp + 0xc8]
add dword [esp + 0x38], edx
add dword [esp + 0x30], eax
mov ebp, dword [esp + 0x3c]
add dword [esp + 0x2c], ecx
mov edx, dword [esp + 0xdc]
add ebp, dword [esp + 0xcc]
mov eax, dword [esp + 0xd4]
mov ecx, dword [esp + 0xe4]
add dword [esp + 0x40], 4
add dword [esp + 0x28], edx
add dword [esp + 0x20], eax
test ecx, ecx
mov dword [esp + 0x3c], ebp
jg 0x4cb020
mov esi, dword [esp + 0xd0]
mov eax, dword [esp + 0x10c]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x24]
add dword [esp + 0xbc], eax
add dword [esp + 0x4c], ecx
add dword [esp + 0x5c], edx
mov ecx, dword [esp + 0xf4]
mov edx, dword [esp + 0x104]
add dword [esp + 0x68], ecx
add dword [esp + 0x60], edx
mov ecx, dword [esp + 0x108]
mov edx, dword [esp + 0x100]
add dword [esp + 0x7c], ecx
add dword [esp + 0x6c], edx
add esi, eax
mov eax, dword [esp + 0xf0]
add dword [esp + 0x80], eax
mov eax, dword [esp + 0xf8]
add dword [esp + 0x64], eax
cmp dword [esp + 0x44], 0
mov dword [esp + 0xd0], esi
jg 0x4caee2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x104
ret
jle 0x4cb9e3
cmp dword [esp + 0x44], 0
jle 0x4cb9e3
mov eax, dword [esp + 0xd8]
cdq
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0xe0]
mov dword [esp + 0xa0], edx
cdq
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0xb8], edx
cdq
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0xa8], edx
cdq
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0xcc]
mov dword [esp + 0xb0], edx
cdq
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0x88], edx
cdq
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0xfc]
mov dword [esp + 0x78], edx
lea edx, [eax*4]
lea eax, [esi + 0xffff]
add ecx, 0xffff
mov dword [esp + 0x24], edx
mov dword [esp + 0xbc], eax
mov dword [esp + 0x4c], ecx
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0xa0]
sub dword [esp + 0x44], 1
and eax, 0xffff0000
mov dword [esp + 0x50], eax
sub eax, esi
cdq
mov ebp, edx
mov edx, dword [esp + 0x9c]
push ebp
mov edi, eax
push edi
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x80]
mov ecx, dword [esp + 0xb4]
push ebp
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0xbc]
push edi
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x68]
mov edx, dword [esp + 0xa8]
push ebp
push edi
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0xac]
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ecx, dword [esp + 0xb0]
add eax, dword [esp + 0x60]
mov edx, dword [esp + 0xac]
push ebp
push edi
push ecx
push edx
mov dword [esp + 0x3c], eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x84]
push ebp
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x8c]
push edi
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x78]
push ebp
push edi
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x7c]
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x50]
mov edi, dword [esp + 0x5c]
add eax, dword [esp + 0x6c]
mov ecx, edx
sar ecx, 0x10
lea ecx, [edi + ecx*4]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0xbc]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
test ecx, ecx
jle 0x4cb96c
mov ebp, dword [esp + 0x54]
lea esi, [eax - 0x8000]
add ebp, 0xffff8000
mov dword [esp + 0x20], esi
mov dword [esp + 0x3c], ebp
jmp 0x4cb606
mov esi, dword [esp + 0x20]
sub ecx, 1
test ebp, ebp
mov dword [esp + 0xe4], ecx
jle 0x4cb631
mov eax, dword [esp + 0x70]
and ebp, 0xffff0000
mov edx, ebp
add eax, 0xffffffff
xor ecx, ecx
sar edx, 0x10
cmp edx, eax
setl cl
mov eax, ecx
jmp 0x4cb635
xor ebp, ebp
xor eax, eax
test esi, esi
jle 0x4cb66a
mov ecx, dword [esp + 0x110]
and esi, 0xffff0000
mov dword [esp + 0x50], eax
xor eax, eax
mov edx, esi
sar edx, 0x10
add ecx, 0xffffffff
cmp edx, ecx
setge al
sub eax, 1
and eax, dword [esp + 0x70]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x50]
jmp 0x4cb670
xor esi, esi
mov dword [esp + 0x18], esi
mov ecx, esi
sar ecx, 0x10
imul ecx, dword [esp + 0x70]
mov edx, ebp
sar edx, 0x10
add ecx, edx
mov edx, dword [ebx + ecx*4]
lea edi, [ecx + eax]
mov edi, dword [ebx + edi*4]
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x18]
add ecx, edi
mov edi, dword [ebx + ecx*4]
add eax, ecx
mov ecx, dword [ebx + eax*4]
mov eax, dword [esp + 0x20]
sub eax, esi
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x3c]
sub edi, ebp
and eax, 0xfffe
add eax, 1
and edi, 0xfffe
add edi, 1
mov dword [esp + 0x94], edx
shr edx, 0x18
mov esi, 0x10000
sub esi, edi
mov dword [esp + 0x50], esi
mov ebp, 0x10000
sub ebp, eax
imul esi, ebp
mov dword [esp + 0x54], edi
imul edi, ebp
mov ebp, eax
imul eax, dword [esp + 0x54]
imul ebp, dword [esp + 0x50]
shr esi, 0x10
imul esi, edx
mov edx, dword [esp + 0x14]
shr edx, 0x18
shr edi, 0x10
imul edi, edx
mov edx, dword [esp + 0x1c]
shr edx, 0x18
shr ebp, 0x10
imul ebp, edx
shr eax, 0x10
mov edx, ecx
shr edx, 0x18
imul eax, edx
shr eax, 0x10
mov edx, eax
mov dword [esp + 0x8c], edx
mov eax, ecx
and eax, 0xff0000
imul eax, edx
mov edx, dword [esp + 0x1c]
and edx, 0xff0000
shr ebp, 0x10
imul edx, ebp
add eax, edx
mov edx, dword [esp + 0x14]
and edx, 0xff0000
shr edi, 0x10
imul edx, edi
add eax, edx
mov edx, dword [esp + 0x94]
and edx, 0xff0000
shr esi, 0x10
imul edx, esi
add eax, edx
mov dword [esp + 0x34], ebp
movzx ebp, byte [esp + 0x1c]
imul ebp, dword [esp + 0x34]
movzx edx, cl
imul edx, dword [esp + 0x8c]
add edx, ebp
movzx ebp, byte [esp + 0x14]
and eax, 0xff0000ff
imul ebp, edi
add edx, ebp
movzx ebp, byte [esp + 0x94]
imul ebp, esi
add edx, ebp
mov ebp, dword [esp + 0x1c]
and ecx, 0xff00
imul ecx, dword [esp + 0x8c]
and ebp, 0xff00
imul ebp, dword [esp + 0x34]
add ecx, ebp
mov ebp, dword [esp + 0x14]
and ebp, 0xff00
imul ebp, edi
add ecx, ebp
mov ebp, dword [esp + 0x94]
and ebp, 0xff00
imul ebp, esi
add ecx, ebp
and ecx, 0xff0000
and edx, 0xff00
or eax, edx
mov edx, dword [esp + 0x34]
or eax, ecx
mov ecx, dword [esp + 0x8c]
add ecx, edx
add ecx, edi
add ecx, esi
shl ecx, 0x18
and ecx, 0xff000000
shr eax, 8
or eax, ecx
mov ecx, eax
and ecx, 0xff000000
cmp ecx, 0x8000000
jbe 0x4cb90b
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x28]
mov ecx, eax
and ecx, 0xff0000
shr esi, 0x10
imul ecx, esi
movzx esi, al
and ecx, 0xff0000ff
shr edi, 0x10
imul esi, edi
and esi, 0xff00
or ecx, esi
mov esi, dword [esp + 0x2c]
and eax, 0xff00
mov edx, dword [esp + 0x38]
shr esi, 0x10
imul eax, esi
and eax, 0xff0000
or ecx, eax
shr ecx, 8
mov edi, dword [esp + 0x40]
mov eax, ecx
mov esi, ecx
and eax, 0xff0000
movzx ecx, cl
and esi, 0xff00
shr edx, 0x10
imul eax, edx
imul ecx, edx
imul esi, edx
mov edx, dword [edi]
and eax, 0xff0000ff
and ecx, 0xff00
and esi, 0xff0000
or eax, esi
or eax, ecx
shr eax, 8
mov esi, eax
and eax, 0xff00
and esi, 0xff00ff
mov ecx, edx
and ecx, 0xff00ff
add ecx, esi
mov esi, ecx
and edx, 0xff00
add edx, eax
mov eax, ecx
shr eax, 8
and eax, 1
shr esi, 0x18
imul eax, eax, 0xff
and esi, 1
imul esi, esi, 0xffff0000
or eax, esi
or eax, ecx
mov ecx, edx
shr ecx, 0x10
and ecx, 1
neg ecx
shl ecx, 8
or ecx, edx
and eax, 0xffff00ff
and ecx, 0xff00
or eax, ecx
or eax, 0xff000000
mov dword [edi], eax
mov edx, dword [esp + 0xd8]
mov eax, dword [esp + 0xe0]
mov ecx, dword [esp + 0xc8]
add dword [esp + 0x38], edx
add dword [esp + 0x30], eax
mov ebp, dword [esp + 0x3c]
add dword [esp + 0x2c], ecx
mov edx, dword [esp + 0xdc]
add ebp, dword [esp + 0xcc]
mov eax, dword [esp + 0xd4]
mov ecx, dword [esp + 0xe4]
add dword [esp + 0x40], 4
add dword [esp + 0x28], edx
add dword [esp + 0x20], eax
test ecx, ecx
mov dword [esp + 0x3c], ebp
jg 0x4cb602
mov esi, dword [esp + 0xd0]
mov eax, dword [esp + 0x10c]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x24]
add dword [esp + 0xbc], eax
add dword [esp + 0x4c], ecx
add dword [esp + 0x5c], edx
mov ecx, dword [esp + 0xf4]
mov edx, dword [esp + 0x104]
add dword [esp + 0x68], ecx
add dword [esp + 0x60], edx
mov ecx, dword [esp + 0x108]
mov edx, dword [esp + 0x100]
add dword [esp + 0x7c], ecx
add dword [esp + 0x6c], edx
add esi, eax
mov eax, dword [esp + 0xf0]
add dword [esp + 0x80], eax
mov eax, dword [esp + 0xf8]
add dword [esp + 0x64], eax
cmp dword [esp + 0x44], 0
mov dword [esp + 0xd0], esi
jg 0x4cb4c4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x104
ret