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

Disassembly:
sub esp, 0x104
shr edx, 1
mov dword [esp + 0xfc], edx
mov edx, dword [ecx + 0x10]
push ebx
mov ebx, dword [ecx]
mov dword [esp + 0x6c], 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 + 0x54], ecx
mov dword [esp + 0xa0], esi
jle 0x4f1089
mov edi, ecx
mov dword [esp + 0x54], eax
mov ecx, eax
mov eax, dword [ecx + 4]
cmp eax, dword [esi + 4]
jle 0x4f10a2
mov dword [esp + 0x54], esi
mov dword [esp + 0xa0], ecx
mov esi, ecx
mov ecx, dword [esp + 0x54]
mov edx, dword [edi + 4]
cmp edx, dword [ecx + 4]
jle 0x4f10b4
mov eax, edi
mov edi, ecx
mov dword [esp + 0x54], 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 + 0x24], edx
mov dword [esp + 0x58], esi
je 0x4f2f9e
mov ecx, dword [ecx + 4]
add ecx, 0xffff
sar ecx, 0x10
mov dword [esp + 0x9c], 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 + 0xa0]
mov eax, dword [eax]
mov ebp, edx
push ebp
sub eax, ecx
cdq
push esi
push edx
push eax
mov dword [esp + 0x50], ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0xf4], 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 + 0xa0]
mov dword [esp + 0xf8], 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 + 0x100], eax
mov eax, dword [esp + 0xa0]
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 + 0xa0]
mov dword [esp + 0x108], 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 + 0xa0]
mov dword [esp + 0xf0], 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 + 0x104], eax
mov eax, dword [esp + 0xa0]
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 + 0x54]
mov dword [esp + 0xfc], eax
mov eax, dword [ecx + 4]
sub eax, dword [edi + 4]
cdq
mov ecx, eax
mov eax, dword [esp + 0xf4]
mov ebp, edx
push ebp
cdq
push ecx
mov esi, eax
push edx
push esi
mov dword [esp + 0x54], ecx
mov dword [esp + 0x58], ebp
mov dword [esp + 0xa0], edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x40]
mov edx, dword [esp + 0x54]
mov ecx, dword [edx]
cmp ecx, eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x3c], ecx
je 0x4f2f9e
mov eax, dword [esp + 0x24]
shl eax, 0x10
sub eax, dword [edi + 4]
cdq
mov ebp, eax
mov eax, dword [esp + 0x90]
push edx
push ebp
push eax
push esi
mov dword [esp + 0x8c], ebp
mov dword [esp + 0x90], edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [edi + 8]
mov esi, eax
mov eax, dword [esp + 0xf8]
add esi, dword [esp + 0x40]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x80]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0xf0], esi
mov dword [esp + 0xdc], eax
mov dword [esp + 0xe0], edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x34]
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x100]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x80]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0xcc], eax
mov dword [esp + 0xd0], edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x2c]
mov ecx, dword [edi + 0x10]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x108]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x80]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0xbc], eax
mov dword [esp + 0xc0], edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x28]
mov ecx, dword [edi + 0x14]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0xf0]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x80]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0xd4], eax
mov dword [esp + 0xd8], edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x30]
mov ecx, dword [edi + 0x18]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x104]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x80]
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 + 0x38]
mov ecx, dword [esp + 0x80]
mov edi, dword [edi + 0x1c]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0xfc]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc8], edx
mov dword [esp + 0x6c], edi
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, edi
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x3c]
sub eax, dword [esp + 0x98]
cdq
push edx
push eax
push 0x10000
push 0
call fcn.0062e060
mov ecx, dword [esp + 0xd0]
mov dword [esp + 0x90], edx
mov edx, dword [esp + 0x48]
push edx
mov edx, dword [esp + 0xd0]
mov edi, eax
mov eax, dword [esp + 0x48]
push eax
push ecx
push edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ebp, edx
mov edx, dword [esp + 0x54]
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 + 0x90]
push edx
push edi
push ebp
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x44]
mov dword [esp + 0xe4], eax
mov eax, dword [esp + 0x48]
push eax
mov edx, dword [esp + 0xc4]
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 + 0x54]
mov ecx, eax
mov eax, dword [edx + 0xc]
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 + 0x90]
push edx
push edi
push ebp
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0xb0]
mov dword [esp + 0xec], eax
mov eax, dword [esp + 0x48]
push eax
mov eax, dword [esp + 0xb0]
push ecx
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ebp, edx
mov edx, dword [esp + 0x54]
mov ecx, eax
mov eax, dword [edx + 0x10]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x28]
mov ebp, edx
cdq
sub ecx, eax
sbb ebp, edx
mov edx, dword [esp + 0x90]
push edx
push edi
push ebp
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0xc8]
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0x48]
push eax
mov eax, dword [esp + 0xc8]
push ecx
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ebp, edx
mov edx, dword [esp + 0x54]
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 + 0x90]
push edx
push edi
push ebp
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0xa8]
mov dword [esp + 0xe8], eax
mov eax, dword [esp + 0x48]
push eax
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 + 0x54]
mov ecx, eax
mov eax, dword [edx + 0x18]
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 + 0x90]
push edx
push edi
push ebp
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0xb8]
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0x48]
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 + 0x54]
mov ecx, eax
mov eax, dword [edx + 0x1c]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x5c]
mov ebp, edx
cdq
sub ecx, eax
sbb ebp, edx
mov edx, dword [esp + 0x90]
push edx
push edi
push ebp
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x118]
mov dword [esp + 0xd8], eax
mov eax, ecx
imul eax, dword [esp + 0x10c]
lea eax, [edx + eax*2]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x9c]
sub eax, ecx
mov dword [esp + 0x50], eax
je 0x4f22fa
mov eax, dword [esp + 0x3c]
sub eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x48]
cdq
push ecx
mov ebp, edx
mov edx, dword [esp + 0x48]
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 + 0x80]
push ecx
mov ecx, dword [esp + 0x80]
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 + 0x54]
mov ecx, eax
mov eax, dword [edx]
mov edx, dword [esp + 0x98]
add ecx, dword [esp + 0x40]
cmp edx, eax
jge 0x4f1d0a
cmp dword [esp + 0x50], 0
jle 0x4f22fa
mov eax, dword [esp + 0xe4]
cdq
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0xec]
mov dword [esp + 0xc8], edx
cdq
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0xb0], edx
cdq
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 0xc0], edx
cdq
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0xd0], edx
cdq
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0xd8]
mov dword [esp + 0x90], edx
cdq
mov dword [esp + 0x7c], eax
add ecx, 0xffff
lea eax, [esi + 0xffff]
mov dword [esp + 0x80], edx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0xc8]
sub dword [esp + 0x50], 1
and eax, 0xffff0000
mov dword [esp + 0x10], eax
sub eax, esi
cdq
mov ebp, edx
mov edx, dword [esp + 0xc4]
push ebp
mov edi, eax
push edi
push ecx
push edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0xac]
push ebp
mov dword [esp + 0x40], 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 + 0xc0]
push ebp
push edi
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0xc4]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0xd0]
add eax, dword [esp + 0x70]
mov edx, dword [esp + 0xcc]
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 + 0x60]
mov ecx, dword [esp + 0x8c]
push ebp
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x94]
push edi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x74]
mov edx, dword [esp + 0x80]
push ebp
push edi
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x84]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x88]
add eax, dword [esp + 0x68]
mov ecx, edx
sar ecx, 0x10
lea ecx, [edi + ecx*2]
mov dword [esp + 0xa4], ecx
mov ecx, dword [esp + 0x34]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
test ecx, ecx
jle 0x4f1c8c
mov ebp, dword [esp + 0x5c]
lea edi, [eax - 0x8000]
add ebp, 0xffff8000
mov dword [esp + 0x1c], edi
mov dword [esp + 0x28], ebp
jmp 0x4f1904
mov edi, dword [esp + 0x1c]
sub ecx, 1
test ebp, ebp
mov dword [esp + 0x44], ecx
jle 0x4f192c
mov eax, dword [esp + 0x78]
and ebp, 0xffff0000
mov edx, ebp
add eax, 0xffffffff
xor ecx, ecx
sar edx, 0x10
cmp edx, eax
setl cl
mov eax, ecx
jmp 0x4f1930
xor ebp, ebp
xor eax, eax
test edi, edi
jle 0x4f1965
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 + 0x78]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x10]
jmp 0x4f196b
xor edi, edi
mov dword [esp + 0x14], edi
mov ecx, edi
sar ecx, 0x10
imul ecx, dword [esp + 0x78]
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 + 0x40], esi
mov esi, dword [esp + 0x28]
sub esi, ebp
and eax, 0xfffe
add eax, 1
and esi, 0xfffe
add esi, 1
mov ecx, dword [ebx + ecx*4]
mov dword [esp + 0x5c], esi
mov dword [esp + 0xb4], 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 + 0x5c]
imul esi, edi
imul edi, dword [esp + 0x5c]
shr esi, 0x10
imul esi, edx
mov edx, dword [esp + 0x20]
shr edx, 0x18
shr edi, 0x10
imul edi, edx
mov edx, dword [esp + 0x40]
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 + 0x40]
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 + 0xb4]
and edx, 0xff0000
shr esi, 0x10
imul edx, esi
add eax, edx
movzx edx, cl
imul edx, edi
mov dword [esp + 0x5c], edi
movzx edi, byte [esp + 0x40]
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 + 0xb4]
mov ebp, dword [esp + 0x5c]
imul edi, esi
add edx, edi
mov edi, dword [esp + 0x40]
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 + 0xb4]
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 0x4f1c2b
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x30]
shr ecx, 0x10
mov edx, eax
and edx, 0xff0000
imul edx, ecx
movzx ecx, al
shr edi, 0x10
imul ecx, edi
and ecx, 0xff00
and edx, 0xff0000ff
or edx, ecx
mov ecx, dword [esp + 0x38]
shr ecx, 0x10
and eax, 0xff00
imul eax, ecx
mov esi, dword [esp + 0x3c]
and eax, 0xff0000
or edx, eax
shr edx, 8
mov ecx, edx
and ecx, 0xff0000
mov eax, edx
and eax, 0xff00
movzx edx, dl
shr esi, 0x10
imul ecx, esi
imul eax, esi
imul edx, esi
mov esi, dword [esp + 0xa4]
and ecx, 0xff0000ff
and eax, 0xff0000
or ecx, eax
and edx, 0xff00
or ecx, edx
movzx edx, word [esi]
mov eax, edx
and eax, 0xf800
mov edi, edx
shr ecx, 8
shl eax, 5
and edi, 0x1f
or eax, edi
mov edi, ecx
add eax, eax
and ecx, 0xff00
add eax, eax
and edx, 0x7e0
add eax, eax
or edx, 0x18
and edi, 0xff00ff
or eax, 0x70007
add eax, edi
shl edx, 5
add edx, ecx
mov ecx, eax
shr ecx, 0x18
and ecx, 1
imul ecx, ecx, 0xff0000
mov edi, eax
shr edi, 8
and edi, 1
imul edi, edi, 0xff
or ecx, edi
or eax, ecx
mov ecx, edx
shr ecx, 0x10
and ecx, 1
imul ecx, ecx, 0xff00
shr edx, 5
shr ecx, 5
or ecx, edx
mov edx, eax
shr edx, 3
and ecx, 0x7e0
and edx, 0x1f
shr eax, 8
or ecx, edx
and eax, 0xf800
or ecx, eax
mov word [esi], cx
mov ecx, dword [esp + 0xec]
add dword [esp + 0x24], ecx
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0xd8]
add dword [esp + 0x3c], eax
mov ebp, dword [esp + 0x28]
add dword [esp + 0x1c], ecx
mov edx, dword [esp + 0xdc]
mov eax, dword [esp + 0xe8]
add ebp, dword [esp + 0xd4]
mov ecx, dword [esp + 0x44]
add dword [esp + 0xa4], 2
add dword [esp + 0x38], edx
add dword [esp + 0x30], eax
test ecx, ecx
mov dword [esp + 0x28], ebp
jg 0x4f1900
mov esi, dword [esp + 0xe0]
mov eax, dword [esp + 0xf4]
add dword [esp + 0x2c], eax
mov edx, dword [esp + 0x18]
add dword [esp + 0x34], edx
mov ecx, dword [esp + 0x100]
mov edx, dword [esp + 0x108]
add dword [esp + 0x64], ecx
add dword [esp + 0x70], edx
mov ecx, dword [esp + 0x104]
mov edx, dword [esp + 0xfc]
add dword [esp + 0x74], ecx
add dword [esp + 0x68], edx
add esi, eax
mov eax, dword [esp + 0x10c]
add eax, eax
add dword [esp + 0x88], eax
mov eax, dword [esp + 0xf8]
add dword [esp + 0x6c], eax
mov eax, dword [esp + 0xf0]
add dword [esp + 0x60], eax
cmp dword [esp + 0x50], 0
mov dword [esp + 0xe0], esi
jg 0x4f17b4
jmp 0x4f22fa
jle 0x4f22fa
cmp dword [esp + 0x50], 0
jle 0x4f22fa
mov eax, dword [esp + 0xe4]
cdq
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0xec]
mov dword [esp + 0xc8], edx
cdq
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0xb0], edx
cdq
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 0xc0], edx
cdq
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0xd0], edx
cdq
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0xd8]
mov dword [esp + 0x90], edx
cdq
mov dword [esp + 0x7c], eax
lea eax, [esi + 0xffff]
add ecx, 0xffff
mov dword [esp + 0x80], edx
mov dword [esp + 0xb4], eax
mov dword [esp + 0x40], ecx
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0xc8]
sub dword [esp + 0x50], 1
and eax, 0xffff0000
mov dword [esp + 0x44], eax
sub eax, esi
cdq
mov ebp, edx
mov edx, dword [esp + 0xc4]
push ebp
mov edi, eax
push edi
push ecx
push edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0xac]
push ebp
mov dword [esp + 0x2c], 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 + 0xc0]
push ebp
push edi
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0xc4]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0xd0]
add eax, dword [esp + 0x70]
mov edx, dword [esp + 0xcc]
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 + 0x60]
mov ecx, dword [esp + 0x8c]
push ebp
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x94]
push edi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x74]
mov edx, dword [esp + 0x80]
push ebp
push edi
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x84]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0x44]
mov edi, dword [esp + 0x88]
add eax, dword [esp + 0x68]
mov ecx, edx
sar ecx, 0x10
lea ecx, [edi + ecx*2]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0xb4]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
test ecx, ecx
jle 0x4f227e
mov edi, dword [esp + 0x10]
add eax, 0xffff8000
add edi, 0xffff8000
mov dword [esp + 0xa4], eax
mov dword [esp + 0x3c], edi
sub ecx, 1
xor edx, edx
cmp edi, edx
mov dword [esp + 0x5c], ecx
jle 0x4f1f29
mov esi, dword [esp + 0x78]
and edi, 0xffff0000
mov ecx, edi
mov dword [esp + 0x44], eax
xor eax, eax
sar ecx, 0x10
add esi, 0xffffffff
cmp ecx, esi
setl al
mov ebp, eax
mov eax, dword [esp + 0x44]
jmp 0x4f1f2d
xor edi, edi
xor ebp, ebp
cmp eax, edx
jle 0x4f1f64
mov ecx, dword [esp + 0x110]
mov edx, eax
and edx, 0xffff0000
mov eax, edx
mov dword [esp + 0x44], edx
xor edx, edx
sar eax, 0x10
add ecx, 0xffffffff
cmp eax, ecx
setge dl
sub edx, 1
and edx, dword [esp + 0x78]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x44]
jmp 0x4f1f68
mov dword [esp + 0x10], edx
mov ecx, edx
sar ecx, 0x10
imul ecx, dword [esp + 0x78]
mov eax, edi
sar eax, 0x10
add ecx, eax
mov esi, dword [ebx + ecx*4]
lea eax, [ecx + ebp]
mov eax, dword [ebx + eax*4]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
add ecx, eax
mov eax, dword [ebx + ecx*4]
add ebp, ecx
mov ecx, dword [ebx + ebp*4]
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0xa4]
sub eax, edx
sub ebp, edi
and eax, 0xfffe
add eax, 1
mov dword [esp + 0x1c], ecx
and ebp, 0xfffe
add ebp, 1
mov edx, dword [esp + 0x20]
mov ecx, 0x10000
sub ecx, ebp
mov dword [esp + 0x44], ecx
mov edi, 0x10000
sub edi, eax
imul ecx, edi
mov dword [esp + 0x34], esi
shr esi, 0x18
shr ecx, 0x10
imul ecx, esi
mov esi, ebp
imul esi, edi
mov edi, eax
imul eax, ebp
imul edi, dword [esp + 0x44]
shr edx, 0x18
shr esi, 0x10
imul esi, edx
mov edx, dword [esp + 0x14]
shr edx, 0x18
shr eax, 0x10
shr edi, 0x10
imul edi, edx
mov edx, dword [esp + 0x1c]
shr edx, 0x18
imul eax, edx
mov edx, dword [esp + 0x14]
shr eax, 0x10
mov ebp, eax
mov eax, dword [esp + 0x1c]
and edx, 0xff00
and eax, 0xff00
imul eax, ebp
shr edi, 0x10
imul edx, edi
add eax, edx
mov edx, dword [esp + 0x20]
and edx, 0xff00
shr esi, 0x10
imul edx, esi
add eax, edx
mov edx, dword [esp + 0x34]
and edx, 0xff00
shr ecx, 0x10
imul edx, ecx
add eax, edx
mov edx, dword [esp + 0x1c]
and edx, 0xff0000
imul edx, ebp
mov dword [esp + 0x10], ebp
mov ebp, dword [esp + 0x14]
and ebp, 0xff0000
imul ebp, edi
and eax, 0xff0000
add edx, ebp
mov ebp, dword [esp + 0x20]
and ebp, 0xff0000
imul ebp, esi
add edx, ebp
mov ebp, dword [esp + 0x34]
and ebp, 0xff0000
imul ebp, ecx
add edx, ebp
movzx ebp, byte [esp + 0x14]
and edx, 0xff0000ff
imul ebp, edi
or eax, edx
movzx edx, byte [esp + 0x1c]
imul edx, dword [esp + 0x10]
add edx, ebp
movzx ebp, byte [esp + 0x20]
imul ebp, esi
add edx, ebp
movzx ebp, byte [esp + 0x34]
imul ebp, ecx
add edx, ebp
and edx, 0xff00
or eax, edx
mov edx, dword [esp + 0x10]
add edx, edi
add edx, esi
add edx, ecx
shl edx, 0x18
shr eax, 8
and edx, 0xff000000
or eax, edx
mov ecx, eax
and ecx, 0xff000000
cmp ecx, 0x8000000
jbe 0x4f2216
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x38]
shr ecx, 0x10
movzx edx, al
imul edx, ecx
mov ecx, eax
and ecx, 0xff00
shr edi, 0x10
imul ecx, edi
and ecx, 0xff0000
and edx, 0xff00
or edx, ecx
mov ecx, dword [esp + 0x30]
shr ecx, 0x10
and eax, 0xff0000
imul eax, ecx
mov esi, dword [esp + 0x28]
and eax, 0xff0000ff
or edx, eax
shr edx, 8
mov ecx, edx
and ecx, 0xff0000
mov eax, edx
and eax, 0xff00
movzx edx, dl
shr esi, 0x10
imul ecx, esi
imul eax, esi
imul edx, esi
mov esi, dword [esp + 0x2c]
and ecx, 0xff0000ff
and eax, 0xff0000
or ecx, eax
and edx, 0xff00
or ecx, edx
movzx edx, word [esi]
mov eax, edx
and eax, 0xf800
mov edi, edx
shr ecx, 8
shl eax, 5
and edi, 0x1f
or eax, edi
mov edi, ecx
add eax, eax
and ecx, 0xff00
add eax, eax
and edx, 0x7e0
add eax, eax
or edx, 0x18
and edi, 0xff00ff
or eax, 0x70007
add eax, edi
shl edx, 5
add edx, ecx
mov ecx, eax
shr ecx, 0x18
and ecx, 1
imul ecx, ecx, 0xff0000
mov edi, eax
shr edi, 8
and edi, 1
imul edi, edi, 0xff
or ecx, edi
or eax, ecx
mov ecx, edx
shr ecx, 0x10
and ecx, 1
imul ecx, ecx, 0xff00
shr edx, 5
shr ecx, 5
or ecx, edx
mov edx, eax
shr edx, 3
and ecx, 0x7e0
and edx, 0x1f
shr eax, 8
or ecx, edx
and eax, 0xf800
or ecx, eax
mov word [esi], cx
mov eax, dword [esp + 0xe4]
add dword [esp + 0x28], eax
mov eax, dword [esp + 0xe8]
add dword [esp + 0x24], eax
mov ecx, dword [esp + 0xec]
mov edi, dword [esp + 0x3c]
mov eax, dword [esp + 0xa4]
add dword [esp + 0x30], ecx
mov edx, dword [esp + 0xdc]
add edi, dword [esp + 0xd4]
add eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0x5c]
add dword [esp + 0x2c], 2
add dword [esp + 0x38], edx
test ecx, ecx
mov dword [esp + 0x3c], edi
mov dword [esp + 0xa4], eax
jg 0x4f1ef7
mov esi, dword [esp + 0xe0]
mov eax, dword [esp + 0xf4]
add dword [esp + 0xb4], eax
mov ecx, dword [esp + 0x18]
add dword [esp + 0x40], ecx
mov edx, dword [esp + 0xf8]
mov ecx, dword [esp + 0x108]
add dword [esp + 0x6c], edx
add dword [esp + 0x70], ecx
mov edx, dword [esp + 0xf0]
mov ecx, dword [esp + 0xfc]
add dword [esp + 0x60], edx
add dword [esp + 0x68], ecx
add esi, eax
mov eax, dword [esp + 0x10c]
add eax, eax
add dword [esp + 0x88], eax
mov eax, dword [esp + 0x100]
add dword [esp + 0x64], eax
mov eax, dword [esp + 0x104]
add dword [esp + 0x74], eax
cmp dword [esp + 0x50], 0
mov dword [esp + 0xe0], esi
jg 0x4f1db3
mov eax, dword [esp + 0x58]
sub eax, dword [esp + 0x9c]
mov dword [esp + 0x50], eax
je 0x4f2f9e
mov eax, dword [esp + 0x54]
mov ecx, dword [eax + 4]
mov edi, dword [eax]
mov ebp, dword [esp + 0xa0]
mov eax, dword [ebp + 4]
sub eax, ecx
cdq
push edx
push eax
push 0x10000
push 0
mov dword [esp + 0x54], ecx
call fcn.0062e060
mov ecx, eax
mov eax, edx
mov dword [esp + 0x58], eax
mov eax, dword [ebp]
sub eax, edi
cdq
push edx
push eax
mov eax, dword [esp + 0x60]
push eax
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, eax
mov eax, dword [esp + 0x9c]
shl eax, 0x10
sub eax, dword [esp + 0x44]
mov dword [esp + 0x10], ecx
imul ecx
mov cl, 0x10
call fcn.00639880
mov ecx, eax
mov eax, dword [esp + 0x98]
add ecx, edi
cmp eax, edi
jge 0x4f2996
cmp dword [esp + 0x50], 0
jle 0x4f2f9e
mov eax, dword [esp + 0xe4]
cdq
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0xec]
mov dword [esp + 0xc8], edx
cdq
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0xb0], edx
cdq
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 0xc0], edx
cdq
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0xd0], edx
cdq
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0xd8]
mov dword [esp + 0x90], edx
cdq
add ecx, 0xffff
mov dword [esp + 0x80], edx
mov edx, dword [esp + 0x10c]
mov dword [esp + 0x7c], eax
mov dword [esp + 0xb4], ecx
lea eax, [edx + edx]
lea ecx, [esi + 0xffff]
mov dword [esp + 0x40], eax
mov dword [esp + 0xa4], ecx
mov eax, dword [esp + 0xa4]
sub dword [esp + 0x50], 1
and eax, 0xffff0000
mov dword [esp + 0x58], eax
sub eax, esi
cdq
mov ebp, edx
mov edx, dword [esp + 0xc8]
push ebp
mov edi, eax
mov eax, dword [esp + 0xc8]
push edi
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0xb0]
add eax, dword [esp + 0x6c]
mov edx, dword [esp + 0xac]
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 + 0x64]
mov ecx, dword [esp + 0xbc]
push ebp
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xc4]
push edi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x70]
mov edx, dword [esp + 0xd0]
push ebp
push edi
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xd4]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0x90]
add eax, dword [esp + 0x60]
mov edx, dword [esp + 0x8c]
push ebp
push edi
push ecx
push edx
mov dword [esp + 0x34], eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x7c]
push ebp
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x84]
push edi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0x58]
mov edi, dword [esp + 0x88]
add eax, dword [esp + 0x68]
mov ecx, edx
sar ecx, 0x10
lea ecx, [edi + ecx*2]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0xb4]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
test ecx, ecx
jle 0x4f2911
mov ebp, dword [esp + 0x44]
lea esi, [eax - 0x8000]
add ebp, 0xffff8000
mov dword [esp + 0x20], esi
mov dword [esp + 0x3c], ebp
jmp 0x4f2585
mov esi, dword [esp + 0x20]
sub ecx, 1
test ebp, ebp
mov dword [esp + 0x5c], ecx
jle 0x4f25ad
mov eax, dword [esp + 0x78]
and ebp, 0xffff0000
mov edx, ebp
add eax, 0xffffffff
xor ecx, ecx
sar edx, 0x10
cmp edx, eax
setl cl
mov eax, ecx
jmp 0x4f25b1
xor ebp, ebp
xor eax, eax
test esi, esi
jle 0x4f25e6
mov ecx, dword [esp + 0x110]
and esi, 0xffff0000
mov dword [esp + 0x58], 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 + 0x78]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x58]
jmp 0x4f25ec
xor esi, esi
mov dword [esp + 0x18], esi
mov ecx, esi
sar ecx, 0x10
imul ecx, dword [esp + 0x78]
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 + 0x98], edx
shr edx, 0x18
mov esi, 0x10000
sub esi, edi
mov dword [esp + 0x58], esi
mov ebp, 0x10000
sub ebp, eax
imul esi, ebp
mov dword [esp + 0x44], edi
imul edi, ebp
mov ebp, eax
imul eax, dword [esp + 0x44]
imul ebp, dword [esp + 0x58]
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 + 0x9c], 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 + 0x98]
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 + 0x9c]
add edx, ebp
movzx ebp, byte [esp + 0x14]
and eax, 0xff0000ff
imul ebp, edi
add edx, ebp
movzx ebp, byte [esp + 0x98]
imul ebp, esi
add edx, ebp
mov ebp, dword [esp + 0x1c]
and ecx, 0xff00
imul ecx, dword [esp + 0x9c]
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 + 0x98]
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 + 0x9c]
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 0x4f28b3
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x24]
shr ecx, 0x10
mov edx, eax
and edx, 0xff0000
imul edx, ecx
movzx ecx, al
shr edi, 0x10
imul ecx, edi
and ecx, 0xff00
and edx, 0xff0000ff
or edx, ecx
mov ecx, dword [esp + 0x38]
shr ecx, 0x10
and eax, 0xff00
imul eax, ecx
mov esi, dword [esp + 0x28]
and eax, 0xff0000
or edx, eax
shr edx, 8
mov ecx, edx
and ecx, 0xff0000
mov eax, edx
and eax, 0xff00
movzx edx, dl
shr esi, 0x10
imul ecx, esi
imul eax, esi
imul edx, esi
mov esi, dword [esp + 0x2c]
and ecx, 0xff0000ff
and eax, 0xff0000
or ecx, eax
and edx, 0xff00
or ecx, edx
movzx edx, word [esi]
mov eax, edx
and eax, 0xf800
mov edi, edx
shr ecx, 8
shl eax, 5
and edi, 0x1f
or eax, edi
mov edi, ecx
add eax, eax
and ecx, 0xff00
add eax, eax
and edx, 0x7e0
add eax, eax
or edx, 0x18
and edi, 0xff00ff
or eax, 0x70007
add eax, edi
shl edx, 5
add edx, ecx
mov ecx, eax
shr ecx, 0x18
and ecx, 1
imul ecx, ecx, 0xff0000
mov edi, eax
shr edi, 8
and edi, 1
imul edi, edi, 0xff
or ecx, edi
or eax, ecx
mov ecx, edx
shr ecx, 0x10
and ecx, 1
imul ecx, ecx, 0xff00
shr edx, 5
shr ecx, 5
or ecx, edx
mov edx, eax
shr edx, 3
and ecx, 0x7e0
and edx, 0x1f
shr eax, 8
or ecx, edx
and eax, 0xf800
or ecx, eax
mov word [esi], cx
mov ecx, dword [esp + 0xec]
add dword [esp + 0x30], ecx
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0xd8]
add dword [esp + 0x28], eax
mov ebp, dword [esp + 0x3c]
add dword [esp + 0x20], ecx
mov edx, dword [esp + 0xdc]
mov eax, dword [esp + 0xe8]
add ebp, dword [esp + 0xd4]
mov ecx, dword [esp + 0x5c]
add dword [esp + 0x2c], 2
add dword [esp + 0x38], edx
add dword [esp + 0x24], eax
test ecx, ecx
mov dword [esp + 0x3c], ebp
jg 0x4f2581
mov esi, dword [esp + 0xe0]
mov eax, dword [esp + 0xf4]
add dword [esp + 0xa4], eax
mov edx, dword [esp + 0x10]
add dword [esp + 0xb4], edx
mov ecx, dword [esp + 0xf8]
mov edx, dword [esp + 0x100]
add dword [esp + 0x6c], ecx
add dword [esp + 0x64], edx
mov ecx, dword [esp + 0xf0]
mov edx, dword [esp + 0x104]
add dword [esp + 0x60], ecx
add dword [esp + 0x74], edx
add esi, eax
mov eax, dword [esp + 0x40]
add dword [esp + 0x88], eax
mov eax, dword [esp + 0x108]
add dword [esp + 0x70], eax
mov eax, dword [esp + 0xfc]
add dword [esp + 0x68], eax
cmp dword [esp + 0x50], 0
mov dword [esp + 0xe0], esi
jg 0x4f243d
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x104
ret
jle 0x4f2f9e
cmp dword [esp + 0x50], 0
jle 0x4f2f9e
mov eax, dword [esp + 0xe4]
cdq
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0xec]
mov dword [esp + 0xc8], edx
cdq
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0xb0], edx
cdq
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 0xc0], edx
cdq
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0xd0], edx
cdq
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0xd8]
mov dword [esp + 0x90], edx
cdq
mov dword [esp + 0x80], edx
mov edx, dword [esp + 0x10c]
mov dword [esp + 0x7c], eax
lea eax, [edx + edx]
lea edx, [esi + 0xffff]
add ecx, 0xffff
mov dword [esp + 0x40], eax
mov dword [esp + 0xa4], edx
mov dword [esp + 0xb4], ecx
mov eax, dword [esp + 0xb4]
mov ecx, dword [esp + 0xc4]
sub dword [esp + 0x50], 1
and eax, 0xffff0000
mov dword [esp + 0x58], eax
sub eax, esi
cdq
mov ebp, edx
push ebp
mov edi, eax
mov eax, dword [esp + 0xcc]
push edi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x6c]
mov edx, dword [esp + 0xb0]
push ebp
push edi
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xb4]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0xc0]
add eax, dword [esp + 0x64]
mov edx, dword [esp + 0xbc]
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 + 0x70]
mov ecx, dword [esp + 0xcc]
push ebp
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0xd4]
push edi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x60]
mov edx, dword [esp + 0x90]
push ebp
push edi
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x94]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0x80]
add eax, dword [esp + 0x74]
mov edx, dword [esp + 0x7c]
push ebp
push edi
push ecx
push edx
mov dword [esp + 0x54], eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0x58]
mov edi, dword [esp + 0x88]
add eax, dword [esp + 0x68]
mov ecx, edx
sar ecx, 0x10
lea ecx, [edi + ecx*2]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0xa4]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
test ecx, ecx
jle 0x4f2f24
mov ebp, dword [esp + 0x44]
lea esi, [eax - 0x8000]
add ebp, 0xffff8000
mov dword [esp + 0x20], esi
mov dword [esp + 0x3c], ebp
jmp 0x4f2b98
mov esi, dword [esp + 0x20]
sub ecx, 1
test ebp, ebp
mov dword [esp + 0x5c], ecx
jle 0x4f2bc0
mov eax, dword [esp + 0x78]
and ebp, 0xffff0000
mov edx, ebp
add eax, 0xffffffff
xor ecx, ecx
sar edx, 0x10
cmp edx, eax
setl cl
mov eax, ecx
jmp 0x4f2bc4
xor ebp, ebp
xor eax, eax
test esi, esi
jle 0x4f2bf9
mov ecx, dword [esp + 0x110]
and esi, 0xffff0000
mov dword [esp + 0x58], 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 + 0x78]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x58]
jmp 0x4f2bff
xor esi, esi
mov dword [esp + 0x18], esi
mov ecx, esi
sar ecx, 0x10
imul ecx, dword [esp + 0x78]
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 + 0x98], edx
shr edx, 0x18
mov esi, 0x10000
sub esi, edi
mov dword [esp + 0x58], esi
mov ebp, 0x10000
sub ebp, eax
imul esi, ebp
mov dword [esp + 0x44], edi
imul edi, ebp
mov ebp, eax
imul eax, dword [esp + 0x44]
imul ebp, dword [esp + 0x58]
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 + 0x9c], 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 + 0x98]
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 + 0x9c]
add edx, ebp
movzx ebp, byte [esp + 0x14]
and eax, 0xff0000ff
imul ebp, edi
add edx, ebp
movzx ebp, byte [esp + 0x98]
imul ebp, esi
add edx, ebp
mov ebp, dword [esp + 0x1c]
and ecx, 0xff00
imul ecx, dword [esp + 0x9c]
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 + 0x98]
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 + 0x9c]
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 0x4f2ec6
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x24]
shr ecx, 0x10
mov edx, eax
and edx, 0xff0000
imul edx, ecx
movzx ecx, al
shr edi, 0x10
imul ecx, edi
and ecx, 0xff00
and edx, 0xff0000ff
or edx, ecx
mov ecx, dword [esp + 0x38]
shr ecx, 0x10
and eax, 0xff00
imul eax, ecx
mov esi, dword [esp + 0x28]
and eax, 0xff0000
or edx, eax
shr edx, 8
mov ecx, edx
and ecx, 0xff0000
mov eax, edx
and eax, 0xff00
movzx edx, dl
shr esi, 0x10
imul ecx, esi
imul eax, esi
imul edx, esi
mov esi, dword [esp + 0x2c]
and ecx, 0xff0000ff
and eax, 0xff0000
or ecx, eax
and edx, 0xff00
or ecx, edx
movzx edx, word [esi]
mov eax, edx
and eax, 0xf800
mov edi, edx
shr ecx, 8
shl eax, 5
and edi, 0x1f
or eax, edi
mov edi, ecx
add eax, eax
and ecx, 0xff00
add eax, eax
and edx, 0x7e0
add eax, eax
or edx, 0x18
and edi, 0xff00ff
or eax, 0x70007
add eax, edi
shl edx, 5
add edx, ecx
mov ecx, eax
shr ecx, 0x18
and ecx, 1
imul ecx, ecx, 0xff0000
mov edi, eax
shr edi, 8
and edi, 1
imul edi, edi, 0xff
or ecx, edi
or eax, ecx
mov ecx, edx
shr ecx, 0x10
and ecx, 1
imul ecx, ecx, 0xff00
shr edx, 5
shr ecx, 5
or ecx, edx
mov edx, eax
shr edx, 3
and ecx, 0x7e0
and edx, 0x1f
shr eax, 8
or ecx, edx
and eax, 0xf800
or ecx, eax
mov word [esi], cx
mov ecx, dword [esp + 0xec]
add dword [esp + 0x30], ecx
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0xd8]
add dword [esp + 0x28], eax
mov ebp, dword [esp + 0x3c]
add dword [esp + 0x20], ecx
mov edx, dword [esp + 0xdc]
mov eax, dword [esp + 0xe8]
add ebp, dword [esp + 0xd4]
mov ecx, dword [esp + 0x5c]
add dword [esp + 0x2c], 2
add dword [esp + 0x38], edx
add dword [esp + 0x24], eax
test ecx, ecx
mov dword [esp + 0x3c], ebp
jg 0x4f2b94
mov esi, dword [esp + 0xe0]
mov eax, dword [esp + 0xf4]
add dword [esp + 0xa4], eax
mov edx, dword [esp + 0x10]
add dword [esp + 0xb4], edx
mov ecx, dword [esp + 0xf8]
mov edx, dword [esp + 0x100]
add dword [esp + 0x6c], ecx
add dword [esp + 0x64], edx
mov ecx, dword [esp + 0xf0]
mov edx, dword [esp + 0x104]
add dword [esp + 0x60], ecx
add dword [esp + 0x74], edx
add esi, eax
mov eax, dword [esp + 0x40]
add dword [esp + 0x88], eax
mov eax, dword [esp + 0x108]
add dword [esp + 0x70], eax
mov eax, dword [esp + 0xfc]
add dword [esp + 0x68], eax
cmp dword [esp + 0x50], 0
mov dword [esp + 0xe0], esi
jg 0x4f2a50
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x104
ret