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

Disassembly:
sub esp, 0x114
shr edx, 1
mov dword [esp + 0xf0], edx
mov edx, dword [ecx + 0x10]
push ebx
push ebp
mov dword [esp + 0x7c], edx
mov edx, dword [ecx + 0x18]
push edi
mov edi, dword [ecx]
mov dword [esp + 0x11c], edx
mov edx, dword [eax + 4]
cmp edx, dword [eax + 0x24]
lea ecx, [eax + 0x20]
lea ebp, [eax + 0x40]
mov ebx, eax
mov dword [esp + 0x58], ecx
mov dword [esp + 0x64], ebp
jle 0x4e5245
mov ebx, ecx
mov dword [esp + 0x58], eax
mov ecx, eax
mov eax, dword [ecx + 4]
cmp eax, dword [ebp + 4]
jle 0x4e525b
mov dword [esp + 0x58], ebp
mov ebp, ecx
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x58]
mov edx, dword [ebx + 4]
cmp edx, dword [ecx + 4]
jle 0x4e526d
mov eax, ebx
mov ebx, ecx
mov dword [esp + 0x58], eax
mov ecx, eax
mov eax, dword [ebx + 8]
imul eax, dword [esi]
shr eax, 8
mov dword [ebx + 8], eax
mov edx, dword [esi + 4]
imul edx, dword [ebx + 0xc]
shr edx, 8
mov dword [ebx + 0xc], edx
mov eax, dword [esi + 8]
imul eax, dword [ebx + 0x10]
shr eax, 8
mov dword [ebx + 0x10], eax
mov edx, dword [esi + 0xc]
imul edx, dword [ebx + 0x14]
shr edx, 8
mov dword [ebx + 0x14], edx
mov eax, dword [ecx + 8]
imul eax, dword [esi]
mov edx, dword [ecx + 0xc]
shr eax, 8
mov dword [ecx + 8], eax
imul edx, dword [esi + 4]
mov eax, dword [ecx + 0x10]
shr edx, 8
mov dword [ecx + 0xc], edx
imul eax, dword [esi + 8]
shr eax, 8
mov dword [ecx + 0x10], eax
mov edx, dword [esi + 0xc]
imul edx, dword [ecx + 0x14]
shr edx, 8
mov dword [ecx + 0x14], edx
mov eax, dword [ebp + 8]
imul eax, dword [esi]
mov edx, dword [ebp + 0xc]
shr eax, 8
mov dword [ebp + 8], eax
imul edx, dword [esi + 4]
mov eax, dword [ebp + 0x10]
shr edx, 8
mov dword [ebp + 0xc], edx
imul eax, dword [esi + 8]
shr eax, 8
mov dword [ebp + 0x10], eax
mov eax, dword [esi + 0xc]
imul eax, dword [ebp + 0x14]
shr eax, 8
mov dword [esp + 0xc], eax
mov dword [ebp + 0x14], eax
mov eax, dword [ebx + 4]
mov dword [esp + 0x1c], eax
add eax, 0xffff
sar eax, 0x10
mov dword [esp + 0x44], eax
mov eax, dword [ebp + 4]
lea edx, [eax + 0xffff]
sar edx, 0x10
cmp dword [esp + 0x44], edx
mov dword [esp + 0x30], edx
je 0x4e736b
sub eax, dword [esp + 0x1c]
mov ecx, dword [ecx + 4]
cdq
push edx
push eax
add ecx, 0xffff
push 0x10000
sar ecx, 0x10
push 0
mov dword [esp + 0x6c], ecx
call fcn.006372b0
mov ecx, edx
mov edx, dword [ebx]
mov dword [esp + 0x20], eax
mov eax, dword [ebp]
push ecx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x24]
sub eax, edx
mov dword [esp + 0x78], edx
cdq
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [ebx + 8]
mov dword [esp + 0x108], eax
mov eax, dword [ebp + 8]
sub eax, ecx
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x24]
cdq
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [ebx + 0xc]
mov dword [esp + 0xf0], eax
mov eax, dword [ebp + 0xc]
sub eax, ecx
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x24]
cdq
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [ebx + 0x10]
mov dword [esp + 0x10c], eax
mov eax, dword [ebp + 0x10]
sub eax, ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x24]
cdq
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [ebx + 0x14]
mov dword [esp + 0xf4], eax
mov eax, dword [esp + 0xc]
sub eax, ecx
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x24]
cdq
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [ebx + 0x18]
mov dword [esp + 0xf8], eax
mov eax, dword [ebp + 0x18]
sub eax, ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x24]
cdq
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ebx, dword [ebx + 0x1c]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x100], eax
mov eax, dword [ebp + 0x1c]
push ecx
mov ecx, dword [esp + 0x24]
sub eax, ebx
cdq
push ecx
push edx
push eax
mov dword [esp + 0x5c], ebx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov edx, dword [esp + 0x58]
mov dword [esp + 0x104], eax
mov eax, dword [edx + 4]
sub eax, dword [esp + 0x1c]
cdq
mov ecx, eax
mov eax, dword [esp + 0x108]
mov ebp, edx
push ebp
cdq
push ecx
mov ebx, eax
push edx
push ebx
mov dword [esp + 0x60], ecx
mov dword [esp + 0x64], ebp
mov dword [esp + 0xbc], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x58]
mov ecx, dword [ecx]
cmp ecx, eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x14], ecx
je 0x4e736b
mov eax, dword [esp + 0x44]
shl eax, 0x10
sub eax, dword [esp + 0x1c]
cdq
push edx
mov ebp, eax
mov dword [esp + 0x90], edx
mov edx, dword [esp + 0xb0]
push ebp
push edx
push ebx
mov dword [esp + 0x98], ebp
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ecx, dword [esp + 0x8c]
mov ebx, eax
mov eax, dword [esp + 0xf0]
add ebx, dword [esp + 0x74]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0x88], ebx
mov dword [esp + 0xb8], eax
mov dword [esp + 0xbc], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x10c]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0xd8], eax
mov dword [esp + 0xdc], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0xf4]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0xc8], eax
mov dword [esp + 0xcc], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0xf8]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x100]
cdq
push ecx
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc8], edx
push ebp
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x104]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0x120], eax
mov dword [esp + 0x124], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x4c]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x14]
sub eax, dword [esp + 0x34]
cdq
push edx
push eax
push 0x10000
push 0
call fcn.006372b0
mov ecx, dword [esp + 0xac]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x54]
push edx
mov edx, dword [esp + 0xac]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x54]
push eax
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebp, edx
mov edx, dword [esp + 0x58]
mov ecx, eax
mov eax, dword [edx + 8]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x18]
mov ebp, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x20]
sbb ebp, edx
mov edx, dword [esp + 0x24]
push edx
push eax
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
push ecx
mov ecx, dword [esp + 0xcc]
mov dword [esp + 0xe4], eax
mov eax, dword [esp + 0xd0]
push edx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebp, edx
mov edx, dword [esp + 0x58]
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
mov eax, dword [esp + 0x20]
sbb ebp, edx
mov edx, dword [esp + 0x24]
push edx
push eax
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
push ecx
mov ecx, dword [esp + 0xbc]
mov dword [esp + 0xe8], eax
mov eax, dword [esp + 0xc0]
push edx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebp, edx
mov edx, dword [esp + 0x58]
mov ecx, eax
mov eax, dword [edx + 0x10]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x2c]
mov ebp, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x20]
sbb ebp, edx
mov edx, dword [esp + 0x24]
push edx
push eax
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
push ecx
mov ecx, dword [esp + 0xb4]
mov dword [esp + 0xec], eax
mov eax, dword [esp + 0xb8]
push edx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ecx, eax
mov ebp, edx
mov edx, dword [esp + 0x58]
mov eax, dword [edx + 0x14]
cdq
sub eax, ecx
mov ecx, eax
mov eax, dword [esp + 0x38]
sbb edx, ebp
mov ebp, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x20]
sbb ebp, edx
mov edx, dword [esp + 0x24]
push edx
push eax
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
push ecx
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0xc8]
push edx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebp, edx
mov edx, dword [esp + 0x58]
mov ecx, eax
mov eax, dword [edx + 0x18]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x3c]
mov ebp, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x20]
sbb ebp, edx
mov edx, dword [esp + 0x24]
push edx
push eax
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
push ecx
mov ecx, dword [esp + 0x114]
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0x118]
push edx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebp, edx
mov edx, dword [esp + 0x58]
mov ecx, eax
mov eax, dword [edx + 0x1c]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x4c]
mov ebp, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x20]
sbb ebp, edx
mov edx, dword [esp + 0x24]
push edx
push eax
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x44]
mov edx, ecx
imul edx, dword [esp + 0xfc]
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0x124]
lea edx, [eax + edx*2]
mov eax, dword [esp + 0x5c]
sub eax, ecx
mov dword [esp + 0x98], edx
mov dword [esp + 0x48], eax
je 0x4e6612
mov eax, dword [esp + 0x14]
sub eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x50]
cdq
mov ebx, eax
mov eax, dword [esp + 0x54]
push eax
push ecx
push 0x10000
push 0
mov ebp, edx
call fcn.006372b0
push edx
push eax
push ebp
push ebx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x8c]
push ecx
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x10], eax
cdq
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x58]
mov ebx, dword [esp + 0x78]
mov ecx, eax
mov eax, dword [edx]
mov edx, dword [esp + 0x34]
add ecx, dword [esp + 0x74]
cmp edx, eax
jge 0x4e5fba
cmp dword [esp + 0x48], 0
jle 0x4e6612
mov eax, dword [esp + 0xe0]
cdq
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xe4]
mov dword [esp + 0xc4], edx
cdq
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0xbc], edx
cdq
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0xd8]
mov dword [esp + 0xcc], edx
cdq
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0x8c], edx
cdq
mov dword [esp + 0x20], eax
add ecx, 0xffff
lea eax, [ebx + 0xffff]
mov dword [esp + 0x24], edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0xc4]
sub dword [esp + 0x48], 1
and eax, 0xffff0000
mov dword [esp + 0x10], eax
sub eax, ebx
cdq
push edx
mov ebp, eax
push ebp
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0xc8]
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x84]
mov ecx, dword [esp + 0xb4]
mov edx, dword [esp + 0xb0]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x54]
push eax
push ebp
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x90]
mov ecx, dword [esp + 0xbc]
mov edx, dword [esp + 0xb8]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x54]
push eax
push ebp
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0xcc]
mov edx, dword [esp + 0xc8]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x54]
push eax
push ebp
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0xa4]
mov ecx, dword [esp + 0x8c]
mov edx, dword [esp + 0x88]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x54]
push eax
push ebp
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0xa0]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x54]
push eax
push ebp
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x10]
add eax, dword [esp + 0x94]
mov ecx, edx
sar ecx, 0x10
mov ebp, dword [esp + 0x98]
lea ecx, [ebp + ecx*2]
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x18]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
test ecx, ecx
jle 0x4e5f2d
mov ebx, dword [esp + 0x2c]
lea edx, [eax - 0x8000]
add ebx, 0xffff8000
mov dword [esp + 0x14], edx
mov dword [esp + 0x2c], ebx
sub ecx, 1
test ebx, ebx
mov dword [esp + 0x110], ecx
jle 0x4e5bb8
mov eax, dword [esp + 0x80]
mov ebp, ebx
and ebp, 0xffff0000
mov edx, ebp
sar edx, 0x10
xor ecx, ecx
add eax, 0xffffffff
cmp edx, eax
mov edx, dword [esp + 0x14]
setl cl
mov dword [esp + 0x7c], ecx
jmp 0x4e5bbe
xor ebp, ebp
mov dword [esp + 0x7c], ebp
test edx, edx
jle 0x4e5bf2
mov ecx, dword [esp + 0x11c]
and edx, 0xffff0000
xor ebx, ebx
mov eax, edx
sar eax, 0x10
add ecx, 0xffffffff
cmp eax, ecx
setge bl
sub ebx, 1
and ebx, dword [esp + 0x80]
mov dword [esp + 0x70], ebx
mov ebx, dword [esp + 0x2c]
jmp 0x4e5bf8
xor edx, edx
mov dword [esp + 0x70], edx
mov ecx, edx
sar ecx, 0x10
imul ecx, dword [esp + 0x80]
mov eax, ebp
sar eax, 0x10
add ecx, eax
mov eax, dword [edi + ecx*4]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x7c]
add eax, ecx
mov eax, dword [edi + eax*4]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x70]
add ecx, eax
mov eax, dword [edi + ecx*4]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x7c]
sub ebx, ebp
add ecx, eax
mov eax, dword [esp + 0x14]
sub eax, edx
and ebx, 0xfffe
add ebx, 1
and eax, 0xfffe
add eax, 1
mov dword [esp + 0x60], ebx
mov ebp, 0x10000
sub ebp, ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x10], ebp
mov edx, 0x10000
sub edx, eax
imul ebp, edx
imul edx, dword [esp + 0x60]
shr ebx, 0x18
shr edx, 0x10
shr ebp, 0x10
imul ebp, ebx
mov ebx, dword [esp + 0x44]
shr ebx, 0x18
imul edx, ebx
mov ebx, dword [esp + 0x74]
mov ecx, dword [edi + ecx*4]
shr edx, 0x10
mov dword [esp + 0x7c], edx
mov edx, dword [esp + 0x10]
imul edx, eax
imul eax, dword [esp + 0x60]
shr edx, 0x10
shr ebx, 0x18
imul edx, ebx
shr eax, 0x10
mov ebx, ecx
shr ebx, 0x18
imul eax, ebx
shr eax, 0x10
mov ebx, eax
shr edx, 0x10
mov dword [esp + 0x60], ebx
mov eax, ecx
and eax, 0xff0000
imul eax, ebx
mov ebx, dword [esp + 0x74]
mov dword [esp + 0x70], edx
and ebx, 0xff0000
imul ebx, edx
mov edx, dword [esp + 0x44]
and edx, 0xff0000
imul edx, dword [esp + 0x7c]
add eax, ebx
movzx ebx, byte [esp + 0x74]
add eax, edx
mov edx, dword [esp + 0x1c]
shr ebp, 0x10
and edx, 0xff0000
imul edx, ebp
add eax, edx
movzx edx, cl
and eax, 0xff0000ff
imul edx, dword [esp + 0x60]
mov dword [esp + 0xec], ebp
imul ebx, dword [esp + 0x70]
add edx, ebx
movzx ebx, byte [esp + 0x44]
imul ebx, dword [esp + 0x7c]
add edx, ebx
mov ebx, dword [esp + 0xec]
movzx ebp, byte [esp + 0x1c]
imul ebp, ebx
add edx, ebp
and edx, 0xff00
or eax, edx
mov edx, dword [esp + 0x74]
and edx, 0xff00
imul edx, dword [esp + 0x70]
and ecx, 0xff00
imul ecx, dword [esp + 0x60]
add ecx, edx
mov edx, dword [esp + 0x44]
mov ebp, dword [esp + 0x7c]
and edx, 0xff00
imul edx, ebp
add ecx, edx
mov edx, dword [esp + 0x1c]
and edx, 0xff00
imul edx, ebx
add ecx, edx
mov edx, dword [esp + 0x70]
and ecx, 0xff0000
or eax, ecx
mov ecx, dword [esp + 0x60]
add ecx, edx
add ecx, ebp
add ecx, ebx
shl ecx, 0x18
and ecx, 0xff000000
shr eax, 8
or eax, ecx
mov ecx, dword [esi + 4]
imul ecx, dword [esp + 0x4c]
mov edx, eax
and edx, 0xff0000
shr ecx, 0x18
imul ecx, edx
mov edx, dword [esi + 0xc]
imul edx, dword [esp + 0x38]
shr edx, 0x18
movzx ebp, al
imul edx, ebp
and edx, 0xff00
mov ebx, dword [esi]
imul ebx, dword [esp + 0x6c]
and ecx, 0xff0000ff
or ecx, edx
mov edx, dword [esi + 8]
imul edx, dword [esp + 0x3c]
shr edx, 0x18
and eax, 0xff00
imul edx, eax
and edx, 0xff0000
or ecx, edx
shr ecx, 8
mov edx, ecx
mov eax, ecx
and edx, 0xff0000
shr ebx, 0x18
and eax, 0xff00
imul edx, ebx
imul eax, ebx
movzx ecx, cl
imul ecx, ebx
mov ebx, dword [esp + 0x68]
and edx, 0xff0000ff
and eax, 0xff0000
or edx, eax
and ecx, 0xff00
or edx, ecx
movzx ecx, word [ebx]
mov eax, ecx
and eax, 0xf800
shr edx, 8
shl eax, 5
mov ebp, ecx
and ebp, 0x1f
or eax, ebp
mov ebp, edx
and edx, 0xff00
add eax, eax
and ecx, 0x7e0
add eax, eax
or ecx, 0x18
add eax, eax
shl ecx, 5
add ecx, edx
or eax, 0x70007
and ebp, 0xff00ff
add eax, ebp
mov edx, eax
shr edx, 0x18
and edx, 1
imul edx, edx, 0xff0000
mov ebp, eax
shr ebp, 8
and ebp, 1
imul ebp, ebp, 0xff
or edx, ebp
or eax, edx
mov edx, ecx
shr edx, 0x10
and edx, 1
imul edx, edx, 0xff00
shr edx, 5
shr ecx, 5
or edx, ecx
mov ecx, eax
and edx, 0x7e0
shr ecx, 3
and ecx, 0x1f
or edx, ecx
mov ecx, dword [esp + 0xe8]
add dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x110]
shr eax, 8
and eax, 0xf800
or edx, eax
mov eax, dword [esp + 0xe4]
add dword [esp + 0x4c], eax
mov word [ebx], dx
mov edx, dword [esp + 0xe0]
add dword [esp + 0x6c], edx
mov edx, dword [esp + 0xd4]
add dword [esp + 0x38], edx
mov edx, dword [esp + 0x14]
add edx, dword [esp + 0xdc]
add ebx, 2
mov dword [esp + 0x68], ebx
mov ebx, dword [esp + 0x2c]
add ebx, dword [esp + 0xd8]
test ecx, ecx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x14], edx
jg 0x4e5b82
mov ebx, dword [esp + 0x78]
mov eax, dword [esp + 0x108]
add dword [esp + 0x40], eax
mov ecx, dword [esp + 0xf0]
mov edx, dword [esp + 0x10c]
add dword [esp + 0x84], ecx
add dword [esp + 0x90], edx
mov ecx, dword [esp + 0xf8]
mov edx, dword [esp + 0x100]
add dword [esp + 0xa4], ecx
add dword [esp + 0xa0], edx
add ebx, eax
mov eax, dword [esp + 0xc]
add dword [esp + 0x18], eax
mov eax, dword [esp + 0xfc]
add eax, eax
add dword [esp + 0x98], eax
mov eax, dword [esp + 0xf4]
add dword [esp + 0x9c], eax
mov eax, dword [esp + 0x104]
add dword [esp + 0x94], eax
cmp dword [esp + 0x48], 0
mov dword [esp + 0x78], ebx
jg 0x4e5a20
jmp 0x4e6612
jle 0x4e6612
cmp dword [esp + 0x48], 0
jle 0x4e6612
mov eax, dword [esp + 0xe0]
cdq
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xe4]
mov dword [esp + 0xc4], edx
cdq
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0xbc], edx
cdq
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0xd8]
mov dword [esp + 0xcc], edx
cdq
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0x8c], edx
cdq
mov dword [esp + 0x24], edx
lea edx, [ebx + 0xffff]
add ecx, 0xffff
mov dword [esp + 0x20], eax
mov dword [esp + 0x6c], edx
mov dword [esp + 0x70], ecx
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0xc0]
sub dword [esp + 0x48], 1
and eax, 0xffff0000
mov dword [esp + 0x110], eax
sub eax, ebx
cdq
push edx
mov ebp, eax
mov eax, dword [esp + 0xc8]
push ebp
push eax
push ecx
mov dword [esp + 0xbc], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x84]
mov edx, dword [esp + 0xac]
mov ecx, dword [esp + 0xb0]
push edx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xb8]
push ebp
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x90]
mov edx, dword [esp + 0xac]
mov ecx, dword [esp + 0xb8]
push edx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xc0]
push ebp
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x9c]
mov edx, dword [esp + 0xac]
mov ecx, dword [esp + 0xc8]
push edx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0xd0]
push ebp
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0xa4]
mov edx, dword [esp + 0xac]
mov ecx, dword [esp + 0x88]
push edx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x90]
push ebp
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0xa0]
mov edx, dword [esp + 0xac]
mov ecx, dword [esp + 0x20]
push edx
mov dword [esp + 0xf0], eax
mov eax, dword [esp + 0x28]
push ebp
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x110]
add eax, dword [esp + 0x94]
mov ecx, edx
sar ecx, 0x10
mov ebp, dword [esp + 0x98]
lea ecx, [ebp + ecx*2]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x6c]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
test ecx, ecx
jle 0x4e658a
mov edx, dword [esp + 0xec]
lea ebx, [eax - 0x8000]
add edx, 0xffff8000
mov dword [esp + 0x74], ebx
mov dword [esp + 0x4c], edx
sub ecx, 1
test edx, edx
mov dword [esp + 0x50], ecx
jle 0x4e6210
mov ecx, dword [esp + 0x80]
mov ebp, edx
and ebp, 0xffff0000
mov eax, ebp
xor ebx, ebx
sar eax, 0x10
add ecx, 0xffffffff
cmp eax, ecx
setl bl
mov dword [esp + 0x18], ebx
mov ebx, dword [esp + 0x74]
jmp 0x4e6216
xor ebp, ebp
mov dword [esp + 0x18], ebp
test ebx, ebx
jle 0x4e624a
mov eax, dword [esp + 0x11c]
and ebx, 0xffff0000
mov edx, ebx
sar edx, 0x10
add eax, 0xffffffff
xor ecx, ecx
cmp edx, eax
mov edx, dword [esp + 0x4c]
setge cl
sub ecx, 1
and ecx, dword [esp + 0x80]
mov dword [esp + 0x68], ecx
jmp 0x4e6250
xor ebx, ebx
mov dword [esp + 0x68], ebx
mov ecx, ebx
sar ecx, 0x10
imul ecx, dword [esp + 0x80]
mov eax, ebp
sar eax, 0x10
add ecx, eax
mov eax, dword [edi + ecx*4]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x18]
add eax, ecx
mov eax, dword [edi + eax*4]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x68]
add ecx, eax
mov eax, dword [edi + ecx*4]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x18]
sub edx, ebp
add eax, ecx
mov ecx, dword [edi + eax*4]
mov eax, dword [esp + 0x74]
sub eax, ebx
and eax, 0xfffe
add eax, 1
and edx, 0xfffe
add edx, 1
mov ebp, 0x10000
sub ebp, edx
mov dword [esp + 0xec], ebp
mov ebx, 0x10000
sub ebx, eax
imul ebp, ebx
mov dword [esp + 0x110], ebx
mov ebx, dword [esp + 0x44]
shr ebx, 0x18
shr ebp, 0x10
imul ebp, ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x18], edx
imul edx, dword [esp + 0x110]
shr ebp, 0x10
mov dword [esp + 0x68], ebp
mov ebp, eax
imul eax, dword [esp + 0x18]
imul ebp, dword [esp + 0xec]
shr ebx, 0x18
shr edx, 0x10
imul edx, ebx
mov ebx, dword [esp + 0x14]
shr ebx, 0x18
shr eax, 0x10
shr ebp, 0x10
imul ebp, ebx
mov ebx, ecx
shr ebx, 0x18
imul eax, ebx
shr eax, 0x10
mov ebx, eax
mov dword [esp + 0x18], ebx
mov eax, ecx
and eax, 0xff0000
imul eax, ebx
mov ebx, dword [esp + 0x14]
and ebx, 0xff0000
shr ebp, 0x10
imul ebx, ebp
add eax, ebx
mov ebx, dword [esp + 0x1c]
shr edx, 0x10
mov dword [esp + 0x60], edx
and ebx, 0xff0000
imul ebx, edx
mov edx, dword [esp + 0x44]
and edx, 0xff0000
imul edx, dword [esp + 0x68]
add eax, ebx
add eax, edx
movzx edx, cl
and eax, 0xff0000ff
imul edx, dword [esp + 0x18]
mov dword [esp + 0x7c], ebp
movzx ebx, byte [esp + 0x14]
imul ebx, ebp
add edx, ebx
movzx ebx, byte [esp + 0x1c]
imul ebx, dword [esp + 0x60]
add edx, ebx
mov ebx, dword [esp + 0x68]
movzx ebp, byte [esp + 0x44]
imul ebp, ebx
add edx, ebp
and edx, 0xff00
or eax, edx
mov edx, dword [esp + 0x14]
and edx, 0xff00
imul edx, dword [esp + 0x7c]
and ecx, 0xff00
imul ecx, dword [esp + 0x18]
add ecx, edx
mov edx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x60]
and edx, 0xff00
imul edx, ebp
add ecx, edx
mov edx, dword [esp + 0x44]
and edx, 0xff00
imul edx, ebx
add ecx, edx
mov edx, dword [esp + 0x7c]
and ecx, 0xff0000
or eax, ecx
mov ecx, dword [esp + 0x18]
add ecx, edx
add ecx, ebp
add ecx, ebx
shl ecx, 0x18
and ecx, 0xff000000
shr eax, 8
or eax, ecx
mov ecx, dword [esi + 4]
imul ecx, dword [esp + 0x2c]
shr ecx, 0x18
mov edx, eax
and edx, 0xff0000
imul ecx, edx
mov edx, dword [esi + 0xc]
imul edx, dword [esp + 0x3c]
shr edx, 0x18
movzx ebp, al
imul edx, ebp
and edx, 0xff00
mov ebx, dword [esi]
imul ebx, dword [esp + 0x40]
and ecx, 0xff0000ff
or ecx, edx
mov edx, dword [esi + 8]
imul edx, dword [esp + 0x38]
shr edx, 0x18
and eax, 0xff00
imul edx, eax
and edx, 0xff0000
or ecx, edx
shr ecx, 8
mov edx, ecx
mov eax, ecx
and edx, 0xff0000
shr ebx, 0x18
imul edx, ebx
and eax, 0xff00
movzx ecx, cl
imul eax, ebx
imul ecx, ebx
mov ebx, dword [esp + 0x10]
and edx, 0xff0000ff
and eax, 0xff0000
or edx, eax
and ecx, 0xff00
or edx, ecx
movzx ecx, word [ebx]
mov eax, ecx
shr edx, 8
and eax, 0xf800
mov ebp, ecx
shl eax, 5
and ebp, 0x1f
or eax, ebp
mov ebp, edx
and edx, 0xff00
add eax, eax
and ecx, 0x7e0
add eax, eax
or ecx, 0x18
add eax, eax
shl ecx, 5
add ecx, edx
or eax, 0x70007
and ebp, 0xff00ff
add eax, ebp
mov edx, eax
shr edx, 0x18
and edx, 1
imul edx, edx, 0xff0000
mov ebp, eax
shr ebp, 8
and ebp, 1
imul ebp, ebp, 0xff
or edx, ebp
or eax, edx
mov edx, ecx
shr edx, 0x10
and edx, 1
imul edx, edx, 0xff00
shr edx, 5
shr ecx, 5
or edx, ecx
mov ecx, eax
and edx, 0x7e0
shr ecx, 3
and ecx, 0x1f
or edx, ecx
mov ecx, dword [esp + 0xe8]
add dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x50]
shr eax, 8
and eax, 0xf800
or edx, eax
mov eax, dword [esp + 0xe4]
add dword [esp + 0x2c], eax
mov word [ebx], dx
mov edx, dword [esp + 0xe0]
add dword [esp + 0x40], edx
mov edx, dword [esp + 0xd4]
add dword [esp + 0x3c], edx
mov edx, dword [esp + 0x4c]
add edx, dword [esp + 0xd8]
add ebx, 2
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x74]
add ebx, dword [esp + 0xdc]
test ecx, ecx
mov dword [esp + 0x4c], edx
mov dword [esp + 0x74], ebx
jg 0x4e61dd
mov ebx, dword [esp + 0x78]
mov eax, dword [esp + 0x108]
add dword [esp + 0x6c], eax
mov ecx, dword [esp + 0xf0]
mov edx, dword [esp + 0x10c]
add dword [esp + 0x84], ecx
add dword [esp + 0x90], edx
mov ecx, dword [esp + 0xf8]
mov edx, dword [esp + 0x100]
add dword [esp + 0xa4], ecx
add dword [esp + 0xa0], edx
add ebx, eax
mov eax, dword [esp + 0xc]
add dword [esp + 0x70], eax
mov eax, dword [esp + 0xfc]
add eax, eax
add dword [esp + 0x98], eax
mov eax, dword [esp + 0xf4]
add dword [esp + 0x9c], eax
mov eax, dword [esp + 0x104]
add dword [esp + 0x94], eax
cmp dword [esp + 0x48], 0
mov dword [esp + 0x78], ebx
jg 0x4e605d
mov eax, dword [esp + 0x30]
sub eax, dword [esp + 0x5c]
mov dword [esp + 0x48], eax
je 0x4e736b
mov eax, dword [esp + 0x58]
mov ecx, dword [eax + 4]
mov ebp, dword [eax]
mov edx, dword [esp + 0x64]
mov eax, dword [edx + 4]
sub eax, ecx
cdq
push edx
push eax
push 0x10000
push 0
mov dword [esp + 0x60], ecx
mov dword [esp + 0x24], ebp
call fcn.006372b0
mov ecx, eax
mov eax, edx
mov edx, dword [esp + 0x64]
mov dword [esp + 0x30], eax
mov eax, dword [edx]
sub eax, ebp
cdq
push edx
push eax
mov eax, dword [esp + 0x38]
push eax
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, eax
mov eax, dword [esp + 0x5c]
shl eax, 0x10
sub eax, dword [esp + 0x50]
mov dword [esp + 0x7c], ecx
imul ecx
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x34]
mov ecx, eax
mov eax, ebp
add ecx, eax
cmp edx, eax
jge 0x4e6d0f
cmp dword [esp + 0x48], 0
jle 0x4e736b
mov eax, dword [esp + 0xe0]
cdq
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xe4]
mov dword [esp + 0xc4], edx
cdq
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0xbc], edx
cdq
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0xd8]
mov dword [esp + 0xcc], edx
cdq
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0x8c], edx
cdq
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0xfc]
mov dword [esp + 0x24], edx
lea edx, [eax + eax]
add ecx, 0xffff
lea eax, [ebx + 0xffff]
mov dword [esp + 0x70], edx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0xc4]
sub dword [esp + 0x48], 1
and eax, 0xffff0000
mov dword [esp + 0x30], eax
sub eax, ebx
cdq
push edx
mov ebp, eax
push ebp
mov dword [esp + 0xb4], edx
mov edx, dword [esp + 0xc8]
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x84]
mov ecx, dword [esp + 0xb4]
mov edx, dword [esp + 0xb0]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0xac]
push eax
push ebp
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x90]
mov ecx, dword [esp + 0xbc]
mov edx, dword [esp + 0xb8]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0xac]
push eax
push ebp
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0xcc]
mov edx, dword [esp + 0xc8]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xac]
push eax
push ebp
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0xa4]
mov ecx, dword [esp + 0x8c]
mov edx, dword [esp + 0x88]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0xac]
push eax
push ebp
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0xa0]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0xac]
push eax
push ebp
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x30]
add eax, dword [esp + 0x94]
mov ecx, edx
sar ecx, 0x10
mov ebp, dword [esp + 0x98]
lea ecx, [ebp + ecx*2]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x3c]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
test ecx, ecx
jle 0x4e6c82
mov edx, dword [esp + 0x50]
add eax, 0xffff8000
add edx, 0xffff8000
mov dword [esp + 0x60], eax
mov dword [esp + 0x6c], edx
sub ecx, 1
xor ebx, ebx
cmp edx, ebx
mov dword [esp + 0xec], ecx
jle 0x4e68fc
mov ebx, dword [esp + 0x80]
mov ecx, edx
and ecx, 0xffff0000
mov dword [esp + 0x30], eax
xor eax, eax
mov dword [esp + 0x34], ecx
add ebx, 0xffffffff
sar ecx, 0x10
cmp ecx, ebx
setl al
mov ebx, eax
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x30]
jmp 0x4e6904
mov dword [esp + 0x34], ebx
mov dword [esp + 0xc], ebx
xor ecx, ecx
cmp eax, ecx
jle 0x4e6946
mov ebx, dword [esp + 0x11c]
mov ecx, eax
and ecx, 0xffff0000
mov dword [esp + 0x30], eax
add ebx, 0xffffffff
xor eax, eax
mov dword [esp + 0x5c], ecx
sar ecx, 0x10
cmp ecx, ebx
mov ebx, dword [esp + 0xc]
setge al
sub eax, 1
and eax, dword [esp + 0x80]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x30]
jmp 0x4e694e
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x5c]
mov ebp, dword [esp + 0x34]
sub edx, dword [esp + 0x34]
sub eax, dword [esp + 0x5c]
sar ebp, 0x10
sar ecx, 0x10
imul ecx, dword [esp + 0x80]
add ecx, ebp
mov ebp, dword [edi + ecx*4]
mov dword [esp + 0x44], ebp
lea ebp, [ecx + ebx]
mov ebp, dword [edi + ebp*4]
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x10]
add ecx, ebp
mov ebp, dword [edi + ecx*4]
add ebx, ecx
mov ecx, dword [edi + ebx*4]
mov dword [esp + 0x14], ebp
and eax, 0xfffe
and edx, 0xfffe
add eax, 1
add edx, 1
mov ebp, 0x10000
sub ebp, edx
mov dword [esp + 0x50], ebp
mov ebx, 0x10000
sub ebx, eax
imul ebp, ebx
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x44]
shr ebx, 0x18
shr ebp, 0x10
imul ebp, ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x110], edx
imul edx, dword [esp + 0x30]
shr ebp, 0x10
mov dword [esp + 0xc], ebp
mov ebp, eax
imul eax, dword [esp + 0x110]
imul ebp, dword [esp + 0x50]
shr ebx, 0x18
shr edx, 0x10
imul edx, ebx
mov ebx, dword [esp + 0x14]
shr ebx, 0x18
shr eax, 0x10
shr ebp, 0x10
imul ebp, ebx
mov ebx, ecx
shr ebx, 0x18
imul eax, ebx
shr eax, 0x10
mov ebx, eax
mov dword [esp + 0x34], ebx
mov eax, ecx
and eax, 0xff0000
imul eax, ebx
mov ebx, dword [esp + 0x14]
and ebx, 0xff0000
shr ebp, 0x10
imul ebx, ebp
add eax, ebx
mov ebx, dword [esp + 0x1c]
shr edx, 0x10
mov dword [esp + 0x10], edx
and ebx, 0xff0000
imul ebx, edx
mov edx, dword [esp + 0x44]
and edx, 0xff0000
imul edx, dword [esp + 0xc]
add eax, ebx
movzx ebx, byte [esp + 0x14]
add eax, edx
imul ebx, ebp
movzx edx, cl
imul edx, dword [esp + 0x34]
and eax, 0xff0000ff
mov dword [esp + 0x68], ebp
add edx, ebx
movzx ebx, byte [esp + 0x1c]
imul ebx, dword [esp + 0x10]
add edx, ebx
mov ebx, dword [esp + 0xc]
movzx ebp, byte [esp + 0x44]
imul ebp, ebx
add edx, ebp
and edx, 0xff00
or eax, edx
mov edx, dword [esp + 0x14]
and edx, 0xff00
imul edx, dword [esp + 0x68]
and ecx, 0xff00
imul ecx, dword [esp + 0x34]
add ecx, edx
mov edx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x10]
and edx, 0xff00
imul edx, ebp
add ecx, edx
mov edx, dword [esp + 0x44]
and edx, 0xff00
imul edx, ebx
add ecx, edx
mov edx, dword [esp + 0x68]
and ecx, 0xff0000
or eax, ecx
mov ecx, dword [esp + 0x34]
add ecx, edx
add ecx, ebp
add ecx, ebx
shl ecx, 0x18
and ecx, 0xff000000
shr eax, 8
or eax, ecx
mov ecx, dword [esi + 4]
imul ecx, dword [esp + 0x18]
mov edx, eax
and edx, 0xff0000
shr ecx, 0x18
imul ecx, edx
mov edx, dword [esi + 0xc]
imul edx, dword [esp + 0x2c]
shr edx, 0x18
movzx ebp, al
imul edx, ebp
and edx, 0xff00
mov ebx, dword [esi]
imul ebx, dword [esp + 0x64]
and ecx, 0xff0000ff
or ecx, edx
mov edx, dword [esi + 8]
imul edx, dword [esp + 0x40]
shr edx, 0x18
and eax, 0xff00
imul edx, eax
and edx, 0xff0000
or ecx, edx
shr ecx, 8
mov edx, ecx
mov eax, ecx
and edx, 0xff0000
and eax, 0xff00
shr ebx, 0x18
imul edx, ebx
imul eax, ebx
movzx ecx, cl
imul ecx, ebx
mov ebx, dword [esp + 0x4c]
and eax, 0xff0000
and edx, 0xff0000ff
or edx, eax
and ecx, 0xff00
or edx, ecx
movzx ecx, word [ebx]
mov eax, ecx
and eax, 0xf800
mov ebp, ecx
shr edx, 8
shl eax, 5
and ebp, 0x1f
or eax, ebp
mov ebp, edx
and edx, 0xff00
add eax, eax
add eax, eax
and ecx, 0x7e0
add eax, eax
or ecx, 0x18
or eax, 0x70007
shl ecx, 5
add ecx, edx
and ebp, 0xff00ff
add eax, ebp
mov edx, eax
shr edx, 0x18
and edx, 1
imul edx, edx, 0xff0000
mov ebp, eax
shr ebp, 8
and ebp, 1
imul ebp, ebp, 0xff
or edx, ebp
or eax, edx
mov edx, ecx
shr edx, 0x10
and edx, 1
imul edx, edx, 0xff00
shr edx, 5
shr ecx, 5
or edx, ecx
mov ecx, eax
and edx, 0x7e0
shr ecx, 3
shr eax, 8
and ecx, 0x1f
or edx, ecx
mov ecx, dword [esp + 0xe8]
add dword [esp + 0x40], ecx
mov ecx, dword [esp + 0xec]
and eax, 0xf800
or edx, eax
mov eax, dword [esp + 0xe4]
add dword [esp + 0x18], eax
mov eax, dword [esp + 0x60]
add eax, dword [esp + 0xdc]
mov word [ebx], dx
mov edx, dword [esp + 0xe0]
add dword [esp + 0x64], edx
mov edx, dword [esp + 0xd4]
add dword [esp + 0x2c], edx
mov edx, dword [esp + 0x6c]
add edx, dword [esp + 0xd8]
add ebx, 2
test ecx, ecx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x6c], edx
mov dword [esp + 0x60], eax
jg 0x4e68bc
mov ebx, dword [esp + 0x78]
mov eax, dword [esp + 0x108]
add dword [esp + 0x38], eax
mov ecx, dword [esp + 0x70]
add dword [esp + 0x98], ecx
mov edx, dword [esp + 0xf0]
mov ecx, dword [esp + 0xf4]
add dword [esp + 0x84], edx
add dword [esp + 0x9c], ecx
mov edx, dword [esp + 0xf8]
mov ecx, dword [esp + 0x104]
add dword [esp + 0xa4], edx
add dword [esp + 0x94], ecx
add ebx, eax
mov eax, dword [esp + 0x7c]
add dword [esp + 0x3c], eax
mov eax, dword [esp + 0x10c]
add dword [esp + 0x90], eax
mov eax, dword [esp + 0x100]
add dword [esp + 0xa0], eax
cmp dword [esp + 0x48], 0
mov dword [esp + 0x78], ebx
jg 0x4e6749
pop edi
pop ebp
pop ebx
add esp, 0x114
ret
jle 0x4e736b
cmp dword [esp + 0x48], 0
jle 0x4e736b
mov eax, dword [esp + 0xe0]
cdq
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xe4]
mov dword [esp + 0xc4], edx
cdq
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0xbc], edx
cdq
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0xd8]
mov dword [esp + 0xcc], edx
cdq
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0x8c], edx
cdq
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0xfc]
mov dword [esp + 0x20], eax
lea eax, [edx + edx]
lea edx, [ebx + 0xffff]
add ecx, 0xffff
mov dword [esp + 0x70], eax
mov dword [esp + 0x4c], edx
mov dword [esp + 0x6c], ecx
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0xc0]
sub dword [esp + 0x48], 1
and eax, 0xffff0000
mov dword [esp + 0x30], eax
sub eax, ebx
cdq
push edx
mov ebp, eax
mov eax, dword [esp + 0xc8]
push ebp
push eax
push ecx
mov dword [esp + 0xbc], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x84]
mov edx, dword [esp + 0xac]
mov ecx, dword [esp + 0xb0]
push edx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xb8]
push ebp
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x90]
mov edx, dword [esp + 0xac]
mov ecx, dword [esp + 0xb8]
push edx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xc0]
push ebp
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x9c]
mov edx, dword [esp + 0xac]
mov ecx, dword [esp + 0xc8]
push edx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0xd0]
push ebp
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0xa4]
mov edx, dword [esp + 0xac]
mov ecx, dword [esp + 0x88]
push edx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x90]
push ebp
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0xa0]
mov edx, dword [esp + 0xac]
mov ecx, dword [esp + 0x20]
push edx
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x28]
push ebp
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x30]
add eax, dword [esp + 0x94]
mov ecx, edx
sar ecx, 0x10
mov ebp, dword [esp + 0x98]
lea ecx, [ebp + ecx*2]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x4c]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
xor edx, edx
cmp ecx, edx
jle 0x4e72e9
mov ebx, dword [esp + 0x50]
add eax, 0xffff8000
add ebx, 0xffff8000
mov dword [esp + 0x60], eax
mov dword [esp + 0x68], ebx
sub ecx, 1
cmp ebx, edx
mov dword [esp + 0x50], ecx
jle 0x4e6f70
mov edx, dword [esp + 0x80]
mov ecx, ebx
and ecx, 0xffff0000
mov dword [esp + 0x30], eax
xor eax, eax
mov dword [esp + 0x5c], ecx
sar ecx, 0x10
add edx, 0xffffffff
cmp ecx, edx
setl al
xor edx, edx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x30]
jmp 0x4e6f78
mov dword [esp + 0x5c], edx
mov dword [esp + 0x34], edx
cmp eax, edx
jle 0x4e6fb4
mov edx, dword [esp + 0x11c]
mov ecx, eax
and ecx, 0xffff0000
mov dword [esp + 0x30], eax
xor eax, eax
add edx, 0xffffffff
mov dword [esp + 0x64], ecx
sar ecx, 0x10
cmp ecx, edx
setge al
sub eax, 1
and eax, dword [esp + 0x80]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x30]
jmp 0x4e6fbc
mov dword [esp + 0x64], edx
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x5c]
mov ebp, dword [esp + 0x34]
sub ebx, dword [esp + 0x5c]
sub eax, dword [esp + 0x64]
sar ecx, 0x10
imul ecx, dword [esp + 0x80]
sar edx, 0x10
add ecx, edx
mov edx, dword [edi + ecx*4]
add ebp, ecx
mov ebp, dword [edi + ebp*4]
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0xc]
add ecx, ebp
mov ebp, dword [edi + ecx*4]
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x34]
add ebp, ecx
mov ecx, dword [edi + ebp*4]
and ebx, 0xfffe
add ebx, 1
and eax, 0xfffe
add eax, 1
mov dword [esp + 0x34], ecx
mov ecx, 0x10000
sub ecx, ebx
mov dword [esp + 0x30], ecx
mov ebp, 0x10000
sub ebp, eax
imul ecx, ebp
mov dword [esp + 0x18], edx
shr edx, 0x18
shr ecx, 0x10
imul ecx, edx
mov edx, ebx
imul edx, ebp
mov ebp, dword [esp + 0x1c]
shr edx, 0x10
shr ebp, 0x18
imul edx, ebp
mov ebp, dword [esp + 0x14]
shr edx, 0x10
mov dword [esp + 0x5c], edx
mov edx, eax
imul eax, ebx
imul edx, dword [esp + 0x30]
mov ebx, dword [esp + 0x34]
shr ebp, 0x18
shr eax, 0x10
shr edx, 0x10
imul edx, ebp
mov ebp, ebx
shr ebp, 0x18
imul eax, ebp
shr eax, 0x10
mov ebp, eax
mov eax, ebx
mov ebx, dword [esp + 0x14]
and ebx, 0xff00
and eax, 0xff00
imul eax, ebp
shr edx, 0x10
imul ebx, edx
add eax, ebx
mov ebx, dword [esp + 0x1c]
and ebx, 0xff00
imul ebx, dword [esp + 0x5c]
add eax, ebx
mov ebx, dword [esp + 0x18]
and ebx, 0xff00
shr ecx, 0x10
imul ebx, ecx
add eax, ebx
mov ebx, dword [esp + 0x34]
and ebx, 0xff0000
and eax, 0xff0000
imul ebx, ebp
mov dword [esp + 0x64], ebp
mov ebp, dword [esp + 0x14]
mov dword [esp + 0xc], edx
and ebp, 0xff0000
imul ebp, edx
mov edx, dword [esp + 0x1c]
and edx, 0xff0000
imul edx, dword [esp + 0x5c]
add ebx, ebp
add ebx, edx
mov edx, dword [esp + 0x18]
and edx, 0xff0000
imul edx, ecx
add ebx, edx
movzx edx, byte [esp + 0x14]
imul edx, dword [esp + 0xc]
and ebx, 0xff0000ff
or eax, ebx
movzx ebx, byte [esp + 0x34]
imul ebx, dword [esp + 0x64]
add ebx, edx
movzx ebp, byte [esp + 0x1c]
mov edx, dword [esp + 0x5c]
imul ebp, edx
add ebx, ebp
movzx ebp, byte [esp + 0x18]
imul ebp, ecx
add ebx, ebp
mov ebp, dword [esp + 0xc]
and ebx, 0xff00
or eax, ebx
mov ebx, dword [esp + 0x64]
add ebx, ebp
add ebx, edx
add ebx, ecx
mov ecx, dword [esi + 8]
imul ecx, dword [esp + 0x38]
shr eax, 8
shl ebx, 0x18
and ebx, 0xff000000
or eax, ebx
mov edx, eax
and edx, 0xff00
shr ecx, 0x18
imul ecx, edx
mov edx, dword [esi + 4]
imul edx, dword [esp + 0x2c]
shr edx, 0x18
mov ebp, eax
and ebp, 0xff0000
imul edx, ebp
and edx, 0xff0000ff
mov ebx, dword [esi]
imul ebx, dword [esp + 0x40]
and ecx, 0xff0000
or ecx, edx
mov edx, dword [esi + 0xc]
imul edx, dword [esp + 0x3c]
shr edx, 0x18
movzx eax, al
imul edx, eax
and edx, 0xff00
or ecx, edx
shr ecx, 8
mov edx, ecx
mov eax, ecx
and edx, 0xff0000
shr ebx, 0x18
and eax, 0xff00
imul edx, ebx
imul eax, ebx
movzx ecx, cl
imul ecx, ebx
mov ebx, dword [esp + 0x10]
and edx, 0xff0000ff
and eax, 0xff0000
or edx, eax
and ecx, 0xff00
or edx, ecx
movzx ecx, word [ebx]
mov eax, ecx
and eax, 0xf800
shr edx, 8
shl eax, 5
mov ebp, ecx
and ebp, 0x1f
or eax, ebp
mov ebp, edx
and edx, 0xff00
add eax, eax
add eax, eax
and ecx, 0x7e0
add eax, eax
or ecx, 0x18
or eax, 0x70007
shl ecx, 5
add ecx, edx
and ebp, 0xff00ff
add eax, ebp
mov edx, eax
shr edx, 0x18
and edx, 1
imul edx, edx, 0xff0000
mov ebp, eax
shr ebp, 8
and ebp, 1
imul ebp, ebp, 0xff
or edx, ebp
or eax, edx
mov edx, ecx
shr edx, 0x10
and edx, 1
imul edx, edx, 0xff00
shr edx, 5
shr ecx, 5
or edx, ecx
mov ecx, eax
and edx, 0x7e0
shr ecx, 3
shr eax, 8
and ecx, 0x1f
or edx, ecx
mov ecx, dword [esp + 0xe8]
add dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x50]
and eax, 0xf800
or edx, eax
mov eax, dword [esp + 0xe4]
add dword [esp + 0x2c], eax
mov eax, dword [esp + 0x60]
add eax, dword [esp + 0xdc]
mov word [ebx], dx
mov edx, dword [esp + 0xe0]
add dword [esp + 0x40], edx
mov edx, dword [esp + 0xd4]
add dword [esp + 0x3c], edx
add ebx, 2
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x68]
add ebx, dword [esp + 0xd8]
xor edx, edx
test ecx, ecx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x60], eax
jg 0x4e6f35
mov ebx, dword [esp + 0x78]
mov eax, dword [esp + 0x108]
add dword [esp + 0x4c], eax
mov ecx, dword [esp + 0x70]
add dword [esp + 0x98], ecx
mov ecx, dword [esp + 0x10c]
add dword [esp + 0x90], ecx
mov ecx, dword [esp + 0xf8]
add dword [esp + 0xa4], ecx
mov ecx, dword [esp + 0x104]
add dword [esp + 0x94], ecx
add ebx, eax
mov eax, dword [esp + 0x7c]
add dword [esp + 0x6c], eax
mov eax, dword [esp + 0xf0]
add dword [esp + 0x84], eax
mov eax, dword [esp + 0xf4]
add dword [esp + 0x9c], eax
mov eax, dword [esp + 0x100]
add dword [esp + 0xa0], eax
cmp dword [esp + 0x48], edx
mov dword [esp + 0x78], ebx
jg 0x4e6dc0
pop edi
pop ebp
pop ebx
add esp, 0x114
ret