Function at 0x4c5910
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 0x4c595a
mov edi, ecx
mov dword [esp + 0x48], eax
mov ecx, eax
mov eax, dword [ecx + 4]
cmp eax, dword [esi + 4]
jle 0x4c5976
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 0x4c5988
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 0x4c77b3
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.0062e060
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.00630410
mov cl, 0x20
call fcn.00639880
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.00630410
mov cl, 0x20
call fcn.00639880
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.00630410
mov cl, 0x20
call fcn.00639880
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.00630410
mov cl, 0x20
call fcn.00639880
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.00630410
mov cl, 0x20
call fcn.00639880
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.00630410
mov cl, 0x20
call fcn.00639880
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.00630410
mov cl, 0x20
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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 0x4c77b3
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.0062e060
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x20
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x20
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x20
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x20
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x20
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x20
call fcn.00639880
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 0x4c6b71
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.0062e060
push edx
push eax
push ebp
push edi
call fcn.00630410
mov cl, 0x20
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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 0x4c65a0
cmp dword [esp + 0x44], 0
jle 0x4c6b71
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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 0x4c6520
mov ebp, dword [esp + 0x90]
lea edi, [eax - 0x8000]
add ebp, 0xffff8000
mov dword [esp + 0x1c], edi
mov dword [esp + 0x38], ebp
jmp 0x4c61bb
mov edi, dword [esp + 0x1c]
sub ecx, 1
test ebp, ebp
mov dword [esp + 0xe4], ecx
jle 0x4c61e6
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 0x4c61ea
xor ebp, ebp
xor eax, eax
test edi, edi
jle 0x4c621f
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 0x4c6225
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 0x4c64bc
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 0x4c61b7
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 0x4c6073
jmp 0x4c6b71
jle 0x4c6b71
cmp dword [esp + 0x44], 0
jle 0x4c6b71
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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 0x4c6af3
mov ebp, dword [esp + 0x10]
lea edi, [eax - 0x8000]
add ebp, 0xffff8000
mov dword [esp + 0x24], edi
mov dword [esp + 0x3c], ebp
jmp 0x4c6794
mov edi, dword [esp + 0x24]
sub ecx, 1
test ebp, ebp
mov dword [esp + 0x54], ecx
jle 0x4c67bc
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 0x4c67c0
xor ebp, ebp
xor eax, eax
test edi, edi
jle 0x4c67fb
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 0x4c6801
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 0x4c6a95
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 0x4c6790
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 0x4c6646
mov eax, dword [esp + 0x50]
sub eax, dword [esp + 0x8c]
mov dword [esp + 0x44], eax
je 0x4c77b3
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.0062e060
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.00630410
mov cl, 0x20
call fcn.00639880
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.00639880
mov ecx, eax
mov eax, dword [esp + 0x94]
add ecx, edi
cmp eax, edi
jge 0x4c71dc
cmp dword [esp + 0x44], 0
jle 0x4c77b3
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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 0x4c715a
mov ebp, dword [esp + 0x54]
lea esi, [eax - 0x8000]
add ebp, 0xffff8000
mov dword [esp + 0x20], esi
mov dword [esp + 0x3c], ebp
jmp 0x4c6df4
mov esi, dword [esp + 0x20]
sub ecx, 1
test ebp, ebp
mov dword [esp + 0xe4], ecx
jle 0x4c6e1f
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 0x4c6e23
xor ebp, ebp
xor eax, eax
test esi, esi
jle 0x4c6e58
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 0x4c6e5e
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 0x4c70f9
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 0x4c6df0
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 0x4c6cb2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x104
ret
jle 0x4c77b3
cmp dword [esp + 0x44], 0
jle 0x4c77b3
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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.00630410
mov cl, 0x10
call fcn.00639880
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 0x4c773c
mov ebp, dword [esp + 0x54]
lea esi, [eax - 0x8000]
add ebp, 0xffff8000
mov dword [esp + 0x20], esi
mov dword [esp + 0x3c], ebp
jmp 0x4c73d6
mov esi, dword [esp + 0x20]
sub ecx, 1
test ebp, ebp
mov dword [esp + 0xe4], ecx
jle 0x4c7401
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 0x4c7405
xor ebp, ebp
xor eax, eax
test esi, esi
jle 0x4c743a
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 0x4c7440
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 0x4c76db
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 0x4c73d2
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 0x4c7294
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x104
ret