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

Disassembly:
sub esp, 0xf4
mov eax, dword [esp + 0x104]
shr dword [esp + 0x100], 2
push ebx
push ebp
mov ecx, dword [eax + 0x10]
push esi
mov esi, dword [esp + 0x104]
mov edx, esi
mov dword [esp + 0xb0], ecx
mov ecx, dword [eax + 0x18]
mov eax, dword [eax]
mov dword [esp + 0xfc], ecx
lea ebx, [esi + 0x40]
mov ecx, dword [esi + 0x24]
cmp dword [esi + 4], ecx
mov ecx, dword [esi + 0x44]
push edi
lea edi, [esi + 0x20]
mov dword [esp + 0x38], eax
cmovle edx, edi
cmovle edi, esi
mov esi, ebx
mov ebp, edi
cmp dword [edx + 4], ecx
mov eax, dword [edi + 4]
cmovle ebx, edx
cmovg esi, edx
mov dword [esp + 0x50], esi
mov dword [esp + 0x4c], ebx
cmp eax, dword [ebx + 4]
jle 0x475b16
mov ebp, ebx
mov dword [esp + 0x4c], edi
mov ebx, edi
mov ecx, dword [esp + 0x118]
mov eax, dword [ebp + 8]
imul eax, dword [ecx]
shr eax, 8
mov dword [ebp + 8], eax
mov eax, dword [ecx + 4]
imul eax, dword [ebp + 0xc]
shr eax, 8
mov dword [ebp + 0xc], eax
mov eax, dword [ecx + 8]
imul eax, dword [ebp + 0x10]
shr eax, 8
mov dword [ebp + 0x10], eax
mov eax, dword [ecx + 0xc]
imul eax, dword [ebp + 0x14]
shr eax, 8
mov dword [ebp + 0x14], eax
mov eax, dword [ecx]
imul eax, dword [ebx + 8]
shr eax, 8
mov dword [ebx + 8], eax
mov eax, dword [ebx + 0xc]
imul eax, dword [ecx + 4]
shr eax, 8
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 0x10]
imul eax, dword [ecx + 8]
shr eax, 8
mov dword [ebx + 0x10], eax
mov eax, dword [ebx + 0x14]
imul eax, dword [ecx + 0xc]
shr eax, 8
mov dword [ebx + 0x14], eax
mov eax, dword [ecx]
imul eax, dword [esi + 8]
shr eax, 8
mov dword [esi + 8], eax
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0xc]
imul eax, dword [ecx + 4]
shr eax, 8
mov dword [esi + 0xc], eax
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x10]
imul eax, dword [ecx + 8]
shr eax, 8
mov dword [esi + 0x10], eax
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0x14]
imul eax, dword [ecx + 0xc]
mov ecx, dword [esp + 0x50]
shr eax, 8
mov dword [esi + 0x14], eax
mov esi, dword [ebp + 4]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x3c], eax
lea edx, [esi + 0xffff]
lea eax, [ecx + 0xffff]
sar edx, 0x10
sar eax, 0x10
mov dword [esp + 0x20], edx
mov dword [esp + 0xa0], eax
cmp edx, eax
je 0x47783e
mov ebx, dword [ebx + 4]
sub ecx, esi
lea eax, [ebx + 0xffff]
sar eax, 0x10
mov dword [esp + 0x88], eax
mov eax, ecx
cdq
push edx
push eax
push 0x10000
push 0
call fcn.0059bbf0
mov ecx, dword [ebp]
mov edi, eax
mov eax, dword [esp + 0x50]
mov esi, edx
push esi
push edi
mov dword [esp + 0x70], ecx
mov eax, dword [eax]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov ecx, dword [ebp + 8]
mov eax, dword [esp + 0x14]
push esi
sub eax, ecx
mov dword [esp + 0xec], edx
cdq
push edi
push edx
push eax
mov dword [esp + 0x3c], ecx
call fcn.0059bca0
mov ecx, dword [ebp + 0xc]
mov eax, dword [esp + 0x18]
push esi
sub eax, ecx
mov dword [esp + 0xe4], edx
cdq
push edi
push edx
push eax
mov dword [esp + 0x40], ecx
call fcn.0059bca0
mov ecx, dword [ebp + 0x10]
mov eax, dword [esp + 0x24]
push esi
sub eax, ecx
mov dword [esp + 0xfc], edx
cdq
push edi
push edx
push eax
mov dword [esp + 0x44], ecx
call fcn.0059bca0
mov ecx, dword [ebp + 0x14]
mov eax, dword [esp + 0x3c]
push esi
sub eax, ecx
mov dword [esp + 0xf8], edx
cdq
push edi
push edx
push eax
mov dword [esp + 0x70], ecx
call fcn.0059bca0
mov eax, dword [esp + 0x50]
mov ecx, dword [ebp + 0x18]
push esi
mov dword [esp + 0xf4], edx
mov eax, dword [eax + 0x18]
sub eax, ecx
mov dword [esp + 0x68], ecx
cdq
push edi
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x50]
mov ecx, dword [ebp + 0x1c]
push esi
mov dword [esp + 0xf0], edx
mov eax, dword [eax + 0x1c]
sub eax, ecx
mov dword [esp + 0x9c], ecx
cdq
push edi
push edx
push eax
call fcn.0059bca0
mov esi, dword [ebp + 4]
sub ebx, esi
mov dword [esp + 0xe4], edx
mov eax, ebx
cdq
mov ecx, eax
mov ebx, edx
mov eax, dword [esp + 0xe8]
cdq
push ebx
push ecx
mov edi, edx
mov dword [esp + 0x4c], ecx
push edi
push eax
mov dword [esp + 0x64], ebx
mov dword [esp + 0x24], eax
call fcn.0059bca0
mov ebx, dword [esp + 0x4c]
mov ecx, eax
mov ebp, dword [esp + 0x68]
shrd ecx, edx, 0x10
mov eax, dword [ebx]
add ecx, ebp
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x9c], eax
cmp eax, ecx
je 0x47783e
mov eax, dword [esp + 0x20]
shl eax, 0x10
sub eax, esi
cdq
mov ecx, edx
mov dword [esp + 0x10], eax
push ecx
push eax
push edi
push dword [esp + 0x20]
mov dword [esp + 0x58], ecx
call fcn.0059bca0
push dword [esp + 0x48]
shrd eax, edx, 0x10
push dword [esp + 0x14]
add eax, ebp
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0xe8]
cdq
mov esi, edx
mov edi, eax
push esi
push edi
call fcn.0059bca0
push dword [esp + 0x48]
shrd eax, edx, 0x10
push dword [esp + 0x14]
add eax, dword [esp + 0x34]
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x100]
cdq
mov ebp, edx
mov dword [esp + 0x1c], eax
push ebp
push eax
call fcn.0059bca0
push dword [esp + 0x48]
shrd eax, edx, 0x10
push dword [esp + 0x14]
add eax, dword [esp + 0x38]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0xfc]
cdq
mov ecx, eax
mov eax, edx
push eax
push ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x28], eax
call fcn.0059bca0
push dword [esp + 0x48]
shrd eax, edx, 0x10
push dword [esp + 0x14]
add eax, dword [esp + 0x3c]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0xf8]
cdq
mov ecx, eax
mov eax, edx
push eax
push ecx
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x4c], eax
call fcn.0059bca0
push dword [esp + 0x48]
shrd eax, edx, 0x10
push dword [esp + 0x14]
add eax, dword [esp + 0x68]
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0xf4]
cdq
mov ecx, eax
mov eax, edx
push eax
push ecx
mov dword [esp + 0xa0], ecx
mov dword [esp + 0xa4], eax
call fcn.0059bca0
shrd eax, edx, 0x10
add eax, dword [esp + 0x64]
mov dword [esp + 0x80], eax
push dword [esp + 0x48]
mov eax, dword [esp + 0xe8]
push dword [esp + 0x14]
cdq
mov ecx, eax
mov eax, edx
push eax
push ecx
mov dword [esp + 0x50], ecx
mov dword [esp + 0x7c], eax
call fcn.0059bca0
shrd eax, edx, 0x10
add eax, dword [esp + 0x98]
mov dword [esp + 0x7c], eax
mov eax, dword [ebx]
sub eax, dword [esp + 0x8c]
cdq
push edx
push eax
push 0x10000
push 0
call fcn.0059bbf0
push dword [esp + 0x54]
mov dword [esp + 0x20], eax
push dword [esp + 0x48]
mov dword [esp + 0x30], edx
push esi
push edi
call fcn.0059bca0
push dword [esp + 0x28]
mov ecx, eax
mov esi, edx
mov eax, dword [ebx + 8]
push dword [esp + 0x20]
cdq
shrd ecx, esi, 0x10
mov ebx, eax
mov edi, edx
mov eax, dword [esp + 0x34]
sar esi, 0x10
sub ebx, ecx
cdq
sbb edi, esi
sub ebx, eax
sbb edi, edx
push edi
push ebx
call fcn.0059bca0
push dword [esp + 0x54]
mov dword [esp + 0xb4], edx
push dword [esp + 0x48]
push ebp
push dword [esp + 0x20]
call fcn.0059bca0
mov ebp, dword [esp + 0x28]
mov ecx, eax
mov eax, dword [esp + 0x4c]
mov esi, edx
shrd ecx, esi, 0x10
push ebp
push dword [esp + 0x20]
mov eax, dword [eax + 0xc]
cdq
mov ebx, eax
sar esi, 0x10
mov eax, dword [esp + 0x38]
sub ebx, ecx
mov edi, edx
cdq
sbb edi, esi
sub ebx, eax
sbb edi, edx
push edi
push ebx
call fcn.0059bca0
push dword [esp + 0x54]
mov dword [esp + 0xb0], edx
push dword [esp + 0x48]
push dword [esp + 0x20]
push dword [esp + 0x30]
call fcn.0059bca0
mov ecx, eax
mov esi, edx
mov eax, dword [esp + 0x4c]
shrd ecx, esi, 0x10
push ebp
push dword [esp + 0x20]
mov eax, dword [eax + 0x10]
cdq
mov ebx, eax
sar esi, 0x10
mov eax, dword [esp + 0x3c]
sub ebx, ecx
mov edi, edx
cdq
sbb edi, esi
sub ebx, eax
sbb edi, edx
push edi
push ebx
call fcn.0059bca0
push dword [esp + 0x54]
mov dword [esp + 0xac], edx
push dword [esp + 0x48]
push dword [esp + 0x44]
push dword [esp + 0x68]
call fcn.0059bca0
mov ecx, eax
mov esi, edx
mov eax, dword [esp + 0x4c]
shrd ecx, esi, 0x10
push ebp
push dword [esp + 0x20]
mov eax, dword [eax + 0x14]
cdq
mov ebx, eax
sar esi, 0x10
mov eax, dword [esp + 0x68]
sub ebx, ecx
mov edi, edx
cdq
sbb edi, esi
sub ebx, eax
sbb edi, edx
push edi
push ebx
call fcn.0059bca0
push dword [esp + 0x54]
mov dword [esp + 0xa8], edx
push dword [esp + 0x48]
push dword [esp + 0x9c]
push dword [esp + 0x9c]
call fcn.0059bca0
mov ecx, eax
mov esi, edx
mov eax, dword [esp + 0x4c]
shrd ecx, esi, 0x10
push ebp
push dword [esp + 0x20]
mov eax, dword [eax + 0x18]
cdq
mov ebx, eax
sar esi, 0x10
mov eax, dword [esp + 0x6c]
sub ebx, ecx
mov edi, edx
cdq
sbb edi, esi
sub ebx, eax
sbb edi, edx
push edi
push ebx
call fcn.0059bca0
push dword [esp + 0x54]
mov dword [esp + 0x94], edx
push dword [esp + 0x48]
push dword [esp + 0x74]
push dword [esp + 0x4c]
call fcn.0059bca0
mov ecx, eax
mov esi, edx
shrd ecx, esi, 0x10
mov eax, dword [esp + 0x4c]
sar esi, 0x10
push ebp
push dword [esp + 0x20]
mov eax, dword [eax + 0x1c]
cdq
mov ebx, eax
mov edi, edx
mov eax, dword [esp + 0xa0]
sub ebx, ecx
cdq
sbb edi, esi
sub ebx, eax
sbb edi, edx
push edi
push ebx
call fcn.0059bca0
mov ecx, dword [esp + 0x20]
mov ebx, edx
imul ecx, dword [esp + 0x110]
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x98], ebx
lea eax, [eax + ecx*4]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x88]
sub eax, dword [esp + 0x20]
mov dword [esp + 0x20], eax
je 0x476c62
push dword [esp + 0x54]
mov ebp, dword [esp + 0xa0]
mov eax, ebp
push dword [esp + 0x48]
sub eax, dword [esp + 0x70]
cdq
push 0x10000
push 0
mov edi, eax
mov esi, edx
call fcn.0059bbf0
push edx
push eax
push esi
push edi
call fcn.0059bca0
push dword [esp + 0x48]
mov eax, edx
push dword [esp + 0x14]
mov dword [esp + 0x1c], eax
cdq
push edx
push eax
call fcn.0059bca0
mov esi, eax
shrd esi, edx, 0x10
add esi, dword [esp + 0x68]
cmp dword [esp + 0x8c], ebp
mov ebp, dword [esp + 0x58]
jge 0x4766c0
mov ecx, dword [esp + 0x20]
test ecx, ecx
jle 0x476c66
mov eax, dword [esp + 0xb0]
cdq
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x9c], edx
cdq
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x6c], edx
cdq
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xbc], edx
cdq
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0xc4], edx
cdq
mov dword [esp + 0xd0], eax
mov eax, ebx
mov dword [esp + 0xcc], edx
cdq
mov dword [esp + 0xd8], eax
lea eax, [esi + 0xffff]
mov dword [esp + 0x2c], eax
lea eax, [ebp + 0xffff]
mov dword [esp + 0xd4], edx
mov dword [esp + 0x18], eax
nop dword [eax]
push dword [esp + 0x9c]
mov ebx, eax
dec ecx
push dword [esp + 0x44]
and ebx, 0xffff0000
mov dword [esp + 0x28], ecx
mov eax, ebx
sub eax, ebp
cdq
mov esi, edx
mov edi, eax
push esi
push edi
call fcn.0059bca0
push dword [esp + 0x6c]
shrd eax, edx, 0x10
push dword [esp + 0xbc]
add eax, dword [esp + 0x78]
push esi
push edi
mov dword [esp + 0x70], eax
call fcn.0059bca0
push dword [esp + 0xbc]
shrd eax, edx, 0x10
push dword [esp + 0xc4]
add eax, dword [esp + 0x7c]
push esi
push edi
mov dword [esp + 0x44], eax
call fcn.0059bca0
push dword [esp + 0xc4]
shrd eax, edx, 0x10
push dword [esp + 0xcc]
add eax, dword [esp + 0x80]
push esi
push edi
mov dword [esp + 0x38], eax
call fcn.0059bca0
push dword [esp + 0xcc]
shrd eax, edx, 0x10
push dword [esp + 0xd4]
add eax, dword [esp + 0x8c]
push esi
push edi
mov dword [esp + 0x40], eax
call fcn.0059bca0
push dword [esp + 0xd4]
shrd eax, edx, 0x10
push dword [esp + 0xdc]
add eax, dword [esp + 0x88]
push esi
push edi
mov dword [esp + 0x4c], eax
call fcn.0059bca0
mov edi, eax
mov eax, ebx
shrd edi, edx, 0x10
mov edx, dword [esp + 0x1c]
sar eax, 0x10
add edi, 0xffff8000
lea eax, [edx + eax*4]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x2c]
sub eax, ebx
sar eax, 0x10
test eax, eax
jle 0x47662c
mov ebp, dword [esp + 0x3c]
add edi, dword [esp + 0x7c]
add ebp, 0xffff8000
mov dword [esp + 0x24], edi
mov dword [esp + 0x3c], ebp
nop word [eax + eax]
mov edx, dword [esp + 0xb4]
dec eax
mov dword [esp + 0xdc], eax
test ebp, ebp
jle 0x4762fe
mov ecx, ebp
mov dword [esp + 0x68], ebp
xor ebx, ebx
sar ecx, 0x10
lea eax, [edx - 1]
cmp ecx, eax
setl bl
mov dword [esp + 0x5c], ebx
mov esi, ebx
jmp 0x476306
xor eax, eax
xor esi, esi
mov dword [esp + 0x68], eax
test edi, edi
jle 0x476326
mov eax, dword [esp + 0x100]
mov ecx, edi
sar ecx, 0x10
dec eax
xor ebx, ebx
cmp ecx, eax
mov ecx, edi
cmovl ebx, edx
mov dword [esp + 0x10], ebx
jmp 0x47632c
xor ecx, ecx
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x68]
and edi, 0xfffe
mov ebx, dword [esp + 0x38]
inc edi
sar eax, 0x10
sar ecx, 0x10
imul ecx, edx
mov edx, 0x10000
mov dword [esp + 0x68], edi
add ecx, eax
mov dword [esp + 0x44], ecx
lea eax, [ecx + esi]
mov eax, dword [ebx + eax*4]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [ebx + eax*4]
add eax, esi
mov esi, ebp
mov dword [esp + 0x5c], ecx
and esi, 0xfffe
mov ecx, 0x10000
inc esi
sub ecx, edi
mov eax, dword [ebx + eax*4]
sub edx, esi
mov dword [esp + 0x48], eax
mov ebp, edx
mov eax, dword [esp + 0x44]
imul ebp, ecx
imul edi, edx
mov edx, dword [esp + 0x5c]
mov eax, dword [ebx + eax*4]
mov ebx, esi
shr eax, 0x18
imul ebx, ecx
shr ebp, 0x10
imul ebp, eax
mov eax, dword [esp + 0x54]
shr eax, 0x18
shr ebx, 0x10
imul ebx, eax
mov eax, edx
shr eax, 0x18
shr edi, 0x10
imul edi, eax
mov eax, dword [esp + 0x68]
imul eax, esi
shr ebx, 0x10
mov dword [esp + 0x94], ebx
shr edi, 0x10
shr ebp, 0x10
mov esi, eax
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x48]
shr eax, 0x18
shr esi, 0x10
imul esi, eax
mov eax, dword [esp + 0x48]
and eax, 0xff0000
mov dword [esp + 0x5c], edi
shr esi, 0x10
imul eax, esi
mov dword [esp + 0x10], eax
mov eax, edx
and eax, 0xff0000
imul eax, edi
add dword [esp + 0x10], eax
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x10]
and eax, 0xff0000
imul eax, ebx
mov ebx, dword [esp + 0x44]
add ecx, eax
mov eax, dword [esp + 0x38]
mov eax, dword [eax + ebx*4]
and eax, 0xff0000
imul eax, ebp
add ecx, eax
and ecx, 0xff0000ff
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x48]
movzx ecx, al
mov ebx, dword [esp + 0x38]
imul ecx, esi
movzx eax, dl
and edx, 0xff00
imul eax, edi
mov edi, dword [esp + 0x44]
imul edx, dword [esp + 0x5c]
add ecx, eax
mov eax, dword [esp + 0x54]
movzx eax, al
imul eax, dword [esp + 0x94]
add ecx, eax
mov eax, dword [ebx + edi*4]
movzx eax, al
imul eax, ebp
add ecx, eax
mov eax, dword [esp + 0x54]
and ecx, 0xff00
and eax, 0xff00
or dword [esp + 0x10], ecx
imul eax, dword [esp + 0x94]
mov ecx, dword [esp + 0x48]
and ecx, 0xff00
imul ecx, esi
add ecx, edx
mov edx, ebx
add ecx, eax
mov eax, dword [edx + edi*4]
mov edx, dword [esp + 0x10]
and eax, 0xff00
imul eax, ebp
add ecx, eax
mov eax, dword [esp + 0x5c]
add eax, esi
and ecx, 0xff0000
add eax, dword [esp + 0x94]
or edx, ecx
add eax, ebp
shr edx, 8
shl eax, 0x18
bswap eax
cmp eax, 8
jbe 0x4765c0
mov ebx, dword [esp + 0x118]
mov esi, edx
movzx eax, dl
and esi, 0xff00
mov ebp, dword [esp + 0x64]
and edx, 0xff0000
mov ecx, dword [ebx + 0xc]
imul ecx, dword [esp + 0x30]
mov edi, dword [ebx]
imul edi, dword [esp + 0x60]
shr ecx, 0x18
imul ecx, eax
mov eax, dword [ebx + 4]
imul eax, dword [esp + 0x34]
mov ebx, dword [ebx + 8]
imul ebx, dword [esp + 0x28]
and ecx, 0xff00
shr edi, 0x18
shr eax, 0x18
imul eax, edx
shr ebx, 0x18
imul ebx, esi
or ecx, eax
shr ecx, 8
mov edx, ecx
movzx eax, cl
mov ecx, dword [ebp]
and edx, 0xff0000
imul eax, edi
and ebx, 0xff0000
imul edx, edi
bswap ebx
imul ebx, edi
mov edi, 0xff
or edx, eax
mov eax, ecx
and eax, 0xff0000
shr edx, 8
add eax, edx
movzx esi, dl
shr eax, 0x10
and ebx, 0xff0000
cmp eax, edi
mov edx, 0xff
bswap ebx
cmovbe edi, eax
mov eax, ecx
and eax, 0xff00
add eax, ebx
shr eax, 8
cmp eax, edx
cmovbe edx, eax
movzx eax, cl
add eax, esi
mov ecx, 0xff
cmp eax, ecx
cmovbe ecx, eax
or edi, 0xffffff00
shl edi, 8
or edi, edx
shl edi, 8
or edi, ecx
mov dword [ebp], edi
jmp 0x4765c4
mov ebp, dword [esp + 0x64]
mov eax, dword [esp + 0xb0]
add ebp, 4
add dword [esp + 0x60], eax
mov eax, dword [esp + 0xac]
add dword [esp + 0x34], eax
mov eax, dword [esp + 0xa8]
add dword [esp + 0x28], eax
mov eax, dword [esp + 0xa4]
mov edi, dword [esp + 0x24]
add dword [esp + 0x30], eax
mov ebx, dword [esp + 0x98]
add edi, ebx
mov eax, dword [esp + 0xdc]
mov dword [esp + 0x64], ebp
mov ebp, dword [esp + 0x3c]
add ebp, dword [esp + 0x90]
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x24], edi
test eax, eax
jg 0x4762d0
mov ebp, dword [esp + 0x58]
jmp 0x476633
mov ebx, dword [esp + 0x98]
mov edx, dword [esp + 0x110]
mov ecx, dword [esp + 0x14]
add dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x18]
add ebp, dword [esp + 0xe8]
lea ecx, [edx*4]
add dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0xe0]
add dword [esp + 0x70], ecx
mov ecx, dword [esp + 0xf8]
add dword [esp + 0x74], ecx
mov ecx, dword [esp + 0xf4]
add dword [esp + 0x78], ecx
mov ecx, dword [esp + 0xf0]
add dword [esp + 0x84], ecx
mov ecx, dword [esp + 0xec]
add dword [esp + 0x80], ecx
mov ecx, dword [esp + 0xe4]
add dword [esp + 0x7c], ecx
add eax, dword [esp + 0xe8]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x58], ebp
mov dword [esp + 0x18], eax
test ecx, ecx
jg 0x4761b0
jmp 0x476c66
jle 0x476c66
mov ecx, dword [esp + 0x20]
test ecx, ecx
jle 0x476c66
mov eax, dword [esp + 0xb0]
cdq
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0xdc], edx
cdq
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0xd4], edx
cdq
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xcc], edx
cdq
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0xc4], edx
cdq
mov dword [esp + 0xb8], eax
mov eax, ebx
mov dword [esp + 0xbc], edx
cdq
mov dword [esp + 0x40], eax
lea eax, [ebp + 0xffff]
mov dword [esp + 0x54], eax
lea eax, [esi + 0xffff]
mov dword [esp + 0x9c], edx
mov dword [esp + 0x94], eax
push dword [esp + 0xdc]
mov ebx, eax
dec ecx
push dword [esp + 0xdc]
and ebx, 0xffff0000
mov dword [esp + 0x28], ecx
mov eax, ebx
sub eax, ebp
cdq
mov esi, edx
mov edi, eax
push esi
push edi
call fcn.0059bca0
push dword [esp + 0xd4]
shrd eax, edx, 0x10
push dword [esp + 0xd4]
add eax, dword [esp + 0x78]
push esi
push edi
mov dword [esp + 0x44], eax
call fcn.0059bca0
push dword [esp + 0xcc]
shrd eax, edx, 0x10
push dword [esp + 0xcc]
add eax, dword [esp + 0x7c]
push esi
push edi
mov dword [esp + 0x70], eax
call fcn.0059bca0
push dword [esp + 0xc4]
shrd eax, edx, 0x10
push dword [esp + 0xc4]
add eax, dword [esp + 0x80]
push esi
push edi
mov dword [esp + 0x74], eax
call fcn.0059bca0
push dword [esp + 0xbc]
shrd eax, edx, 0x10
push dword [esp + 0xbc]
add eax, dword [esp + 0x8c]
push esi
push edi
mov dword [esp + 0x78], eax
call fcn.0059bca0
push dword [esp + 0x9c]
shrd eax, edx, 0x10
push dword [esp + 0x44]
add eax, dword [esp + 0x88]
push esi
push edi
mov dword [esp + 0x7c], eax
call fcn.0059bca0
mov edi, eax
mov eax, ebx
shrd edi, edx, 0x10
mov edx, dword [esp + 0x1c]
sar eax, 0x10
add edi, 0xffff8000
lea eax, [edx + eax*4]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x54]
sub eax, ebx
sar eax, 0x10
test eax, eax
jle 0x476bd0
add edi, dword [esp + 0x7c]
mov ebp, dword [esp + 0x6c]
add ebp, 0xffff8000
mov dword [esp + 0x5c], edi
mov dword [esp + 0x3c], ebp
nop
mov edx, dword [esp + 0xb4]
dec eax
mov dword [esp + 0xfc], eax
test ebp, ebp
jle 0x4768ae
mov ecx, ebp
mov dword [esp + 0x18], ebp
xor ebx, ebx
sar ecx, 0x10
lea eax, [edx - 1]
cmp ecx, eax
setl bl
mov dword [esp + 0x6c], ebx
mov esi, ebx
jmp 0x4768b6
xor eax, eax
xor esi, esi
mov dword [esp + 0x18], eax
test edi, edi
jle 0x4768d6
mov eax, dword [esp + 0x100]
mov ecx, edi
sar ecx, 0x10
dec eax
xor ebx, ebx
cmp ecx, eax
mov ecx, edi
cmovl ebx, edx
mov dword [esp + 0x24], ebx
jmp 0x4768dc
xor ecx, ecx
mov dword [esp + 0x24], ecx
mov eax, dword [esp + 0x18]
and edi, 0xfffe
mov ebx, dword [esp + 0x38]
inc edi
sar eax, 0x10
sar ecx, 0x10
imul ecx, edx
mov edx, 0x10000
mov dword [esp + 0x2c], edi
add ecx, eax
mov dword [esp + 0x44], ecx
lea eax, [ecx + esi]
mov eax, dword [ebx + eax*4]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x24]
add eax, ecx
mov ecx, dword [ebx + eax*4]
add eax, esi
mov esi, ebp
mov dword [esp + 0x6c], ecx
and esi, 0xfffe
mov ecx, 0x10000
inc esi
sub ecx, edi
mov eax, dword [ebx + eax*4]
sub edx, esi
mov dword [esp + 0x48], eax
mov ebp, edx
mov eax, dword [esp + 0x44]
imul ebp, ecx
imul edi, edx
mov edx, dword [esp + 0x6c]
mov eax, dword [ebx + eax*4]
mov ebx, esi
shr eax, 0x18
imul ebx, ecx
shr ebp, 0x10
imul ebp, eax
mov eax, dword [esp + 0x30]
shr eax, 0x18
shr ebx, 0x10
imul ebx, eax
mov eax, edx
shr eax, 0x18
shr edi, 0x10
imul edi, eax
mov eax, dword [esp + 0x2c]
imul eax, esi
shr ebx, 0x10
mov dword [esp + 0x18], ebx
shr edi, 0x10
shr ebp, 0x10
mov esi, eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x48]
shr eax, 0x18
shr esi, 0x10
imul esi, eax
mov eax, dword [esp + 0x48]
and eax, 0xff0000
mov dword [esp + 0x24], edi
shr esi, 0x10
imul eax, esi
mov dword [esp + 0x10], eax
mov eax, edx
and eax, 0xff0000
imul eax, edi
add dword [esp + 0x10], eax
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x10]
and eax, 0xff0000
imul eax, ebx
mov ebx, dword [esp + 0x44]
add ecx, eax
mov eax, dword [esp + 0x38]
mov eax, dword [eax + ebx*4]
and eax, 0xff0000
imul eax, ebp
add ecx, eax
and ecx, 0xff0000ff
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x48]
movzx ecx, al
mov ebx, dword [esp + 0x38]
imul ecx, esi
movzx eax, dl
and edx, 0xff00
imul eax, edi
mov edi, dword [esp + 0x44]
imul edx, dword [esp + 0x24]
add ecx, eax
mov eax, dword [esp + 0x30]
movzx eax, al
imul eax, dword [esp + 0x18]
add ecx, eax
mov eax, dword [ebx + edi*4]
movzx eax, al
imul eax, ebp
add ecx, eax
mov eax, dword [esp + 0x30]
and ecx, 0xff00
and eax, 0xff00
or dword [esp + 0x10], ecx
imul eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x48]
and ecx, 0xff00
imul ecx, esi
add ecx, edx
mov edx, ebx
add ecx, eax
mov eax, dword [edx + edi*4]
mov edx, dword [esp + 0x10]
and eax, 0xff00
imul eax, ebp
add ecx, eax
mov eax, dword [esp + 0x24]
add eax, esi
and ecx, 0xff0000
add eax, dword [esp + 0x18]
or edx, ecx
add eax, ebp
shr edx, 8
shl eax, 0x18
bswap eax
cmp eax, 8
jbe 0x476b64
mov ebx, dword [esp + 0x118]
mov esi, edx
movzx eax, dl
and esi, 0xff00
mov ebp, dword [esp + 0x28]
and edx, 0xff0000
mov ecx, dword [ebx + 0xc]
imul ecx, dword [esp + 0x68]
mov edi, dword [ebx]
imul edi, dword [esp + 0x34]
shr ecx, 0x18
imul ecx, eax
mov eax, dword [ebx + 4]
imul eax, dword [esp + 0x60]
mov ebx, dword [ebx + 8]
imul ebx, dword [esp + 0x64]
and ecx, 0xff00
shr edi, 0x18
shr eax, 0x18
imul eax, edx
shr ebx, 0x18
imul ebx, esi
or ecx, eax
shr ecx, 8
mov edx, ecx
movzx eax, cl
mov ecx, dword [ebp]
and edx, 0xff0000
imul eax, edi
and ebx, 0xff0000
imul edx, edi
bswap ebx
imul ebx, edi
mov edi, 0xff
or edx, eax
mov eax, ecx
and eax, 0xff0000
shr edx, 8
add eax, edx
movzx esi, dl
shr eax, 0x10
and ebx, 0xff0000
cmp eax, edi
mov edx, 0xff
bswap ebx
cmovbe edi, eax
mov eax, ecx
and eax, 0xff00
add eax, ebx
shr eax, 8
cmp eax, edx
cmovbe edx, eax
movzx eax, cl
add eax, esi
mov ecx, 0xff
cmp eax, ecx
cmovbe ecx, eax
or edi, 0xffffff00
shl edi, 8
or edi, edx
shl edi, 8
or edi, ecx
mov dword [ebp], edi
jmp 0x476b68
mov ebp, dword [esp + 0x28]
mov eax, dword [esp + 0xb0]
add ebp, 4
add dword [esp + 0x34], eax
mov eax, dword [esp + 0xac]
add dword [esp + 0x60], eax
mov eax, dword [esp + 0xa8]
add dword [esp + 0x64], eax
mov eax, dword [esp + 0xa4]
mov edi, dword [esp + 0x5c]
add dword [esp + 0x68], eax
mov ebx, dword [esp + 0x98]
add edi, ebx
mov eax, dword [esp + 0xfc]
mov dword [esp + 0x28], ebp
mov ebp, dword [esp + 0x3c]
add ebp, dword [esp + 0x90]
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x5c], edi
test eax, eax
jg 0x476880
mov ebp, dword [esp + 0x58]
jmp 0x476bd7
mov ebx, dword [esp + 0x98]
mov edx, dword [esp + 0x110]
mov eax, dword [esp + 0xe8]
add ebp, eax
add dword [esp + 0x54], eax
mov eax, dword [esp + 0x94]
add eax, dword [esp + 0x14]
lea ecx, [edx*4]
add dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0xe0]
add dword [esp + 0x70], ecx
mov ecx, dword [esp + 0xf8]
add dword [esp + 0x74], ecx
mov ecx, dword [esp + 0xf4]
add dword [esp + 0x78], ecx
mov ecx, dword [esp + 0xf0]
add dword [esp + 0x84], ecx
mov ecx, dword [esp + 0xec]
add dword [esp + 0x80], ecx
mov ecx, dword [esp + 0xe4]
add dword [esp + 0x7c], ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x58], ebp
mov dword [esp + 0x94], eax
test ecx, ecx
jg 0x476765
jmp 0x476c66
mov ebp, dword [esp + 0x58]
mov eax, dword [esp + 0x88]
sub dword [esp + 0xa0], eax
je 0x47783e
mov eax, dword [esp + 0x4c]
mov edi, dword [eax + 4]
mov eax, dword [eax]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 4]
sub eax, edi
cdq
push edx
push eax
push 0x10000
push 0
call fcn.0059bbf0
mov esi, eax
mov ecx, edx
mov eax, dword [esp + 0x50]
mov eax, dword [eax]
sub eax, dword [esp + 0x14]
cdq
push edx
push eax
push ecx
push esi
call fcn.0059bca0
mov eax, dword [esp + 0x88]
mov ecx, edx
shl eax, 0x10
sub eax, edi
mov dword [esp + 0x5c], ecx
imul ecx
mov ecx, eax
mov eax, dword [esp + 0x14]
shrd ecx, edx, 0x10
add ecx, eax
cmp dword [esp + 0x8c], eax
jge 0x477288
mov esi, dword [esp + 0xa0]
test esi, esi
jle 0x47783e
mov eax, dword [esp + 0xb0]
cdq
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0xfc], edx
cdq
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0xd8], edx
cdq
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xd0], edx
cdq
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0xc8], edx
cdq
mov dword [esp + 0xbc], eax
mov eax, ebx
mov dword [esp + 0xc0], edx
cdq
mov dword [esp + 0x9c], eax
lea eax, [ecx + 0xffff]
mov dword [esp + 0xb8], edx
mov dword [esp + 0x64], eax
nop dword [eax]
push dword [esp + 0xfc]
lea ebx, [ebp + 0xffff]
dec esi
push dword [esp + 0xe0]
and ebx, 0xffff0000
mov dword [esp + 0xa8], esi
mov eax, ebx
sub eax, ebp
cdq
mov esi, edx
mov edi, eax
push esi
push edi
call fcn.0059bca0
push dword [esp + 0xd8]
shrd eax, edx, 0x10
push dword [esp + 0xd8]
add eax, dword [esp + 0x78]
push esi
push edi
mov dword [esp + 0x40], eax
call fcn.0059bca0
push dword [esp + 0xd0]
shrd eax, edx, 0x10
push dword [esp + 0xd0]
add eax, dword [esp + 0x7c]
push esi
push edi
mov dword [esp + 0x38], eax
call fcn.0059bca0
push dword [esp + 0xc8]
shrd eax, edx, 0x10
push dword [esp + 0xc8]
add eax, dword [esp + 0x80]
push esi
push edi
mov dword [esp + 0x44], eax
call fcn.0059bca0
push dword [esp + 0xc0]
shrd eax, edx, 0x10
push dword [esp + 0xc0]
add eax, dword [esp + 0x8c]
push esi
push edi
mov dword [esp + 0x70], eax
call fcn.0059bca0
push dword [esp + 0xb8]
shrd eax, edx, 0x10
push dword [esp + 0xa0]
add eax, dword [esp + 0x88]
push esi
push edi
mov dword [esp + 0x50], eax
call fcn.0059bca0
mov edi, eax
mov ecx, ebx
mov eax, dword [esp + 0x64]
shrd edi, edx, 0x10
mov edx, dword [esp + 0x1c]
sub eax, ebx
sar ecx, 0x10
add edi, 0xffff8000
sar eax, 0x10
lea ecx, [edx + ecx*4]
mov dword [esp + 0x2c], ecx
test eax, eax
jle 0x477201
add edi, dword [esp + 0x7c]
mov ebp, dword [esp + 0x40]
add ebp, 0xffff8000
mov dword [esp + 0x3c], edi
mov dword [esp + 0x24], ebp
mov edx, dword [esp + 0xb4]
dec eax
mov dword [esp + 0x6c], eax
test ebp, ebp
jle 0x476ece
mov ecx, ebp
mov dword [esp + 0x14], ebp
xor ebx, ebx
sar ecx, 0x10
lea eax, [edx - 1]
cmp ecx, eax
setl bl
mov dword [esp + 0x40], ebx
mov esi, ebx
jmp 0x476ed6
xor eax, eax
xor esi, esi
mov dword [esp + 0x14], eax
test edi, edi
jle 0x476ef6
mov eax, dword [esp + 0x100]
mov ecx, edi
sar ecx, 0x10
dec eax
xor ebx, ebx
cmp ecx, eax
mov ecx, edi
cmovl ebx, edx
mov dword [esp + 0x18], ebx
jmp 0x476efc
xor ecx, ecx
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x14]
and edi, 0xfffe
mov ebx, dword [esp + 0x38]
inc edi
sar eax, 0x10
sar ecx, 0x10
imul ecx, edx
mov edx, 0x10000
mov dword [esp + 0x8c], edi
add ecx, eax
mov dword [esp + 0x20], ecx
lea eax, [ecx + esi]
mov eax, dword [ebx + eax*4]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x18]
add eax, ecx
mov ecx, dword [ebx + eax*4]
add eax, esi
mov esi, ebp
mov dword [esp + 0x40], ecx
and esi, 0xfffe
mov ecx, 0x10000
inc esi
sub ecx, edi
mov eax, dword [ebx + eax*4]
sub edx, esi
mov dword [esp + 0x50], eax
mov ebp, edx
mov eax, dword [esp + 0x20]
imul ebp, ecx
imul edi, edx
mov edx, dword [esp + 0x40]
mov eax, dword [ebx + eax*4]
mov ebx, esi
shr eax, 0x18
imul ebx, ecx
shr ebp, 0x10
imul ebp, eax
mov eax, dword [esp + 0x88]
shr eax, 0x18
shr ebx, 0x10
imul ebx, eax
mov eax, edx
shr eax, 0x18
shr edi, 0x10
imul edi, eax
mov eax, dword [esp + 0x8c]
imul eax, esi
shr ebx, 0x10
mov dword [esp + 0x14], ebx
shr edi, 0x10
shr ebp, 0x10
mov esi, eax
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x50]
shr eax, 0x18
shr esi, 0x10
imul esi, eax
mov eax, dword [esp + 0x50]
and eax, 0xff0000
mov dword [esp + 0x18], edi
shr esi, 0x10
imul eax, esi
mov dword [esp + 0x10], eax
mov eax, edx
and eax, 0xff0000
imul eax, edi
add dword [esp + 0x10], eax
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x10]
and eax, 0xff0000
imul eax, ebx
mov ebx, dword [esp + 0x20]
add ecx, eax
mov eax, dword [esp + 0x38]
mov eax, dword [eax + ebx*4]
and eax, 0xff0000
imul eax, ebp
add ecx, eax
and ecx, 0xff0000ff
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x50]
movzx ecx, al
mov ebx, dword [esp + 0x38]
imul ecx, esi
movzx eax, dl
and edx, 0xff00
imul eax, edi
mov edi, dword [esp + 0x20]
imul edx, dword [esp + 0x18]
add ecx, eax
mov eax, dword [esp + 0x88]
movzx eax, al
imul eax, dword [esp + 0x14]
add ecx, eax
mov eax, dword [ebx + edi*4]
movzx eax, al
imul eax, ebp
add ecx, eax
mov eax, dword [esp + 0x88]
and ecx, 0xff00
and eax, 0xff00
or dword [esp + 0x10], ecx
imul eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x50]
and ecx, 0xff00
imul ecx, esi
add ecx, edx
mov edx, ebx
add ecx, eax
mov eax, dword [edx + edi*4]
mov edx, dword [esp + 0x10]
and eax, 0xff00
imul eax, ebp
add ecx, eax
mov eax, dword [esp + 0x18]
add eax, esi
and ecx, 0xff0000
add eax, dword [esp + 0x14]
or edx, ecx
add eax, ebp
shr edx, 8
shl eax, 0x18
bswap eax
cmp eax, 8
jbe 0x47719c
mov ebx, dword [esp + 0x118]
mov esi, edx
movzx eax, dl
and esi, 0xff00
mov ebp, dword [esp + 0x2c]
and edx, 0xff0000
mov ecx, dword [ebx + 0xc]
imul ecx, dword [esp + 0x60]
mov edi, dword [ebx]
imul edi, dword [esp + 0x30]
shr ecx, 0x18
imul ecx, eax
mov eax, dword [ebx + 4]
imul eax, dword [esp + 0x28]
mov ebx, dword [ebx + 8]
imul ebx, dword [esp + 0x34]
and ecx, 0xff00
shr edi, 0x18
shr eax, 0x18
imul eax, edx
shr ebx, 0x18
imul ebx, esi
or ecx, eax
shr ecx, 8
mov edx, ecx
movzx eax, cl
mov ecx, dword [ebp]
and edx, 0xff0000
imul eax, edi
and ebx, 0xff0000
imul edx, edi
bswap ebx
imul ebx, edi
mov edi, 0xff
or edx, eax
mov eax, ecx
and eax, 0xff0000
shr edx, 8
add eax, edx
movzx esi, dl
shr eax, 0x10
and ebx, 0xff0000
cmp eax, edi
mov edx, 0xff
bswap ebx
cmovbe edi, eax
mov eax, ecx
and eax, 0xff00
add eax, ebx
shr eax, 8
cmp eax, edx
cmovbe edx, eax
movzx eax, cl
add eax, esi
mov ecx, 0xff
cmp eax, ecx
cmovbe ecx, eax
or edi, 0xffffff00
shl edi, 8
or edi, edx
shl edi, 8
or edi, ecx
mov dword [ebp], edi
jmp 0x4771a0
mov ebp, dword [esp + 0x2c]
mov eax, dword [esp + 0xb0]
add ebp, 4
add dword [esp + 0x30], eax
mov eax, dword [esp + 0xac]
add dword [esp + 0x28], eax
mov eax, dword [esp + 0xa8]
add dword [esp + 0x34], eax
mov eax, dword [esp + 0xa4]
mov edi, dword [esp + 0x3c]
add dword [esp + 0x60], eax
add edi, dword [esp + 0x98]
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x2c], ebp
mov ebp, dword [esp + 0x24]
add ebp, dword [esp + 0x90]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x3c], edi
test eax, eax
jg 0x476ea3
mov ebp, dword [esp + 0x58]
mov ecx, dword [esp + 0x110]
mov eax, dword [esp + 0x5c]
add dword [esp + 0x64], eax
add ebp, dword [esp + 0xe8]
mov esi, dword [esp + 0xa0]
lea eax, [ecx*4]
add dword [esp + 0x1c], eax
mov eax, dword [esp + 0xe0]
add dword [esp + 0x70], eax
mov eax, dword [esp + 0xf8]
add dword [esp + 0x74], eax
mov eax, dword [esp + 0xf4]
add dword [esp + 0x78], eax
mov eax, dword [esp + 0xf0]
add dword [esp + 0x84], eax
mov eax, dword [esp + 0xec]
add dword [esp + 0x80], eax
mov eax, dword [esp + 0xe4]
add dword [esp + 0x7c], eax
mov dword [esp + 0x58], ebp
test esi, esi
jg 0x476d80
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xf4
ret
jle 0x47783e
mov esi, dword [esp + 0xa0]
test esi, esi
jle 0x47783e
mov eax, dword [esp + 0xb0]
cdq
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0xfc], edx
cdq
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0xd8], edx
cdq
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xd0], edx
cdq
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0xc8], edx
cdq
mov dword [esp + 0xbc], eax
mov eax, ebx
mov dword [esp + 0xc0], edx
cdq
mov dword [esp + 0x9c], eax
lea eax, [ecx + 0xffff]
mov dword [esp + 0xb8], edx
mov dword [esp + 0x94], eax
nop dword [eax]
push dword [esp + 0xfc]
mov ebx, eax
dec esi
push dword [esp + 0xe0]
and ebx, 0xffff0000
mov dword [esp + 0xa8], esi
mov eax, ebx
sub eax, ebp
cdq
mov esi, edx
mov edi, eax
push esi
push edi
call fcn.0059bca0
push dword [esp + 0xd8]
shrd eax, edx, 0x10
push dword [esp + 0xd8]
add eax, dword [esp + 0x78]
push esi
push edi
mov dword [esp + 0x3c], eax
call fcn.0059bca0
push dword [esp + 0xd0]
shrd eax, edx, 0x10
push dword [esp + 0xd0]
add eax, dword [esp + 0x7c]
push esi
push edi
mov dword [esp + 0x40], eax
call fcn.0059bca0
push dword [esp + 0xc8]
shrd eax, edx, 0x10
push dword [esp + 0xc8]
add eax, dword [esp + 0x80]
push esi
push edi
mov dword [esp + 0x38], eax
call fcn.0059bca0
push dword [esp + 0xc0]
shrd eax, edx, 0x10
push dword [esp + 0xc0]
add eax, dword [esp + 0x8c]
push esi
push edi
mov dword [esp + 0x44], eax
call fcn.0059bca0
push dword [esp + 0xb8]
shrd eax, edx, 0x10
push dword [esp + 0xa0]
add eax, dword [esp + 0x88]
push esi
push edi
mov dword [esp + 0x50], eax
call fcn.0059bca0
mov esi, eax
mov ecx, ebx
shrd esi, edx, 0x10
mov edx, dword [esp + 0x1c]
mov eax, ebp
sub eax, ebx
sar ecx, 0x10
add eax, 0xffff
add esi, 0xffff8000
sar eax, 0x10
lea ecx, [edx + ecx*4]
mov dword [esp + 0x88], ecx
test eax, eax
jle 0x4777b8
add esi, dword [esp + 0x7c]
mov ebp, dword [esp + 0x40]
add ebp, 0xffff8000
mov dword [esp + 0x3c], esi
mov dword [esp + 0x24], ebp
nop word [eax + eax]
mov edx, dword [esp + 0xb4]
dec eax
mov dword [esp + 0x6c], eax
test ebp, ebp
jle 0x47748b
mov ecx, ebp
mov dword [esp + 0x14], ebp
xor ebx, ebx
sar ecx, 0x10
lea eax, [edx - 1]
cmp ecx, eax
setl bl
mov dword [esp + 0x40], ebx
mov edi, ebx
jmp 0x477493
xor eax, eax
xor edi, edi
mov dword [esp + 0x14], eax
xor ebx, ebx
test esi, esi
jle 0x4774b3
mov eax, dword [esp + 0x100]
mov ecx, esi
sar ecx, 0x10
dec eax
cmp ecx, eax
cmovl ebx, edx
mov dword [esp + 0x18], ebx
mov ebx, esi
jmp 0x4774b7
mov dword [esp + 0x18], ebx
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x38]
sar eax, 0x10
sar ebx, 0x10
imul ebx, edx
add ebx, eax
mov dword [esp + 0x20], ebx
lea eax, [ebx + edi]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x18]
add eax, ebx
mov edx, dword [ecx + eax*4]
add eax, edi
mov dword [esp + 0x8c], edx
mov edi, 0x10000
mov edx, dword [esp + 0x38]
mov ebx, dword [ecx + eax*4]
mov ecx, ebp
and ecx, 0xfffe
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x20]
inc ecx
sub edi, ecx
mov eax, esi
and eax, 0xfffe
mov esi, edi
inc eax
mov ebp, 0x10000
sub ebp, eax
mov dword [esp + 0x4c], eax
mov eax, dword [edx + ebx*4]
imul edi, dword [esp + 0x4c]
mov edx, dword [esp + 0x8c]
shr eax, 0x18
imul esi, ebp
imul ebp, ecx
mov ebx, dword [esp + 0x14]
shr edi, 0x10
shr esi, 0x10
imul esi, eax
mov eax, dword [esp + 0x50]
shr eax, 0x18
shr ebp, 0x10
imul ebp, eax
mov eax, edx
shr eax, 0x18
and edx, 0xff00
imul edi, eax
mov eax, dword [esp + 0x4c]
imul eax, ecx
shr ebp, 0x10
shr esi, 0x10
shr edi, 0x10
imul edx, edi
mov dword [esp + 0x4c], eax
mov ecx, eax
shr ecx, 0x10
mov eax, ebx
shr eax, 0x18
imul ecx, eax
mov eax, ebx
and eax, 0xff00
mov dword [esp + 0x40], esi
shr ecx, 0x10
imul eax, ecx
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x50]
and ecx, 0xff00
imul ecx, ebp
add eax, edx
mov edx, dword [esp + 0x20]
add eax, ecx
mov ecx, dword [esp + 0x38]
mov ecx, dword [ecx + edx*4]
mov edx, ebx
and ecx, 0xff00
imul ecx, esi
add eax, ecx
and eax, 0xff0000
and edx, 0xff0000
imul edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x8c]
and ecx, 0xff0000
mov ebx, dword [esp + 0x20]
imul ecx, edi
add edx, ecx
mov ecx, dword [esp + 0x50]
and ecx, 0xff0000
imul ecx, ebp
add edx, ecx
mov ecx, dword [esp + 0x38]
mov ecx, dword [ecx + ebx*4]
mov ebx, dword [esp + 0x14]
and ecx, 0xff0000
imul ecx, esi
mov esi, dword [esp + 0x20]
add edx, ecx
mov ecx, dword [esp + 0x8c]
movzx ecx, cl
and edx, 0xff0000ff
imul ecx, edi
or eax, edx
movzx edx, bl
imul edx, dword [esp + 0x4c]
mov ebx, dword [esp + 0x38]
add edx, ecx
mov ecx, dword [esp + 0x50]
movzx ecx, cl
imul ecx, ebp
add edx, ecx
mov ecx, dword [ebx + esi*4]
movzx ecx, cl
imul ecx, dword [esp + 0x40]
add edx, ecx
mov ecx, dword [esp + 0x4c]
add ecx, edi
and edx, 0xff00
add ecx, ebp
or eax, edx
add ecx, dword [esp + 0x40]
shl ecx, 0x18
bswap ecx
shr eax, 8
cmp ecx, 8
jbe 0x47774d
mov ebp, dword [esp + 0x118]
mov esi, eax
movzx ecx, al
and esi, 0xff00
and eax, 0xff0000
mov edx, dword [ebp + 0xc]
imul edx, dword [esp + 0x34]
mov edi, dword [ebp]
imul edi, dword [esp + 0x2c]
shr edx, 0x18
imul edx, ecx
mov ecx, dword [ebp + 4]
imul ecx, dword [esp + 0x30]
shr edi, 0x18
and edx, 0xff00
shr ecx, 0x18
imul ecx, eax
or edx, ecx
shr edx, 8
mov ebx, edx
movzx eax, dl
mov edx, dword [ebp + 8]
and ebx, 0xff0000
imul edx, dword [esp + 0x28]
mov ebp, dword [esp + 0x88]
imul eax, edi
imul ebx, edi
mov ecx, dword [ebp]
shr edx, 0x18
imul edx, esi
or ebx, eax
mov eax, ecx
and eax, 0xff0000
shr ebx, 8
add eax, ebx
movzx esi, bl
shr eax, 0x10
and edx, 0xff0000
bswap edx
imul edx, edi
mov edi, 0xff
and edx, 0xff0000
cmp eax, edi
bswap edx
cmovbe edi, eax
mov eax, ecx
and eax, 0xff00
add eax, edx
mov edx, 0xff
shr eax, 8
cmp eax, edx
cmovbe edx, eax
movzx eax, cl
add eax, esi
mov ecx, 0xff
cmp eax, ecx
cmovbe ecx, eax
or edi, 0xffffff00
shl edi, 8
or edi, edx
shl edi, 8
or edi, ecx
mov dword [ebp], edi
jmp 0x477754
mov ebp, dword [esp + 0x88]
mov eax, dword [esp + 0xb0]
add ebp, 4
add dword [esp + 0x2c], eax
mov eax, dword [esp + 0xac]
add dword [esp + 0x30], eax
mov eax, dword [esp + 0xa8]
add dword [esp + 0x28], eax
mov eax, dword [esp + 0xa4]
mov esi, dword [esp + 0x3c]
add dword [esp + 0x34], eax
add esi, dword [esp + 0x98]
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x88], ebp
mov ebp, dword [esp + 0x24]
add ebp, dword [esp + 0x90]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x3c], esi
test eax, eax
jg 0x477460
mov ebp, dword [esp + 0x58]
mov edx, dword [esp + 0x110]
mov eax, dword [esp + 0x94]
add ebp, dword [esp + 0xe8]
add eax, dword [esp + 0x5c]
mov esi, dword [esp + 0xa0]
lea ecx, [edx*4]
add dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0xe0]
add dword [esp + 0x70], ecx
mov ecx, dword [esp + 0xf8]
add dword [esp + 0x74], ecx
mov ecx, dword [esp + 0xf4]
add dword [esp + 0x78], ecx
mov ecx, dword [esp + 0xf0]
add dword [esp + 0x84], ecx
mov ecx, dword [esp + 0xec]
add dword [esp + 0x80], ecx
mov ecx, dword [esp + 0xe4]
add dword [esp + 0x7c], ecx
mov dword [esp + 0x58], ebp
mov dword [esp + 0x94], eax
test esi, esi
jg 0x477330
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xf4
ret