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

Disassembly:
sub esp, 0xd4
mov eax, dword [esp + 0xe4]
shr dword [esp + 0xe0], 2
push ebx
push ebp
mov ecx, dword [eax + 0x10]
push esi
mov esi, dword [esp + 0xe4]
mov edx, esi
mov dword [esp + 0x98], ecx
mov ecx, dword [eax + 0x14]
mov eax, dword [eax]
mov dword [esp + 0xd4], ecx
lea ebx, [esi + 0x40]
mov ecx, dword [esi + 4]
cmp ecx, dword [esi + 0x24]
push edi
lea edi, [esi + 0x20]
mov dword [esp + 0xdc], eax
mov eax, dword [esi + 0x44]
cmovle edx, edi
cmovle edi, esi
mov esi, ebx
mov ebp, edi
mov dword [esp + 0x10], ebp
cmp dword [edx + 4], eax
mov eax, dword [edi + 4]
cmovle ebx, edx
cmovg esi, edx
mov dword [esp + 0x80], esi
mov dword [esp + 0x98], ebx
cmp eax, dword [ebx + 4]
jle 0x46c27a
mov ebp, ebx
mov dword [esp + 0x10], ebx
mov ebx, edi
mov dword [esp + 0x98], edi
mov edi, dword [ebp + 4]
mov edx, dword [esi + 4]
mov dword [esp + 0x28], edi
lea ecx, [edi + 0xffff]
lea eax, [edx + 0xffff]
sar ecx, 0x10
sar eax, 0x10
mov dword [esp + 0x68], ecx
mov dword [esp + 0xa8], eax
cmp ecx, eax
je 0x46d6c3
mov ebx, dword [ebx + 4]
sub edx, edi
lea eax, [ebx + 0xffff]
sar eax, 0x10
mov dword [esp + 0x60], eax
mov eax, edx
cdq
push edx
push eax
push 0x10000
push 0
call fcn.0059bbf0
mov ecx, dword [ebp]
mov edi, eax
mov eax, dword [esp + 0x80]
mov esi, edx
push esi
push edi
mov dword [esp + 0x1c], ecx
mov eax, dword [eax]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x10]
mov ebp, edx
push esi
push edi
mov dword [esp + 0xe8], ebp
mov ecx, dword [eax + 8]
mov eax, dword [esp + 0x88]
mov dword [esp + 0x24], ecx
mov eax, dword [eax + 8]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x10]
push esi
mov dword [esp + 0xd0], edx
push edi
mov ecx, dword [eax + 0xc]
mov eax, dword [esp + 0x88]
mov dword [esp + 0x28], ecx
mov eax, dword [eax + 0xc]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x10]
push esi
mov dword [esp + 0xd4], edx
push edi
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x88]
mov dword [esp + 0x48], ecx
mov eax, dword [eax + 0x10]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x10]
push esi
mov dword [esp + 0xd8], edx
push edi
mov ecx, dword [eax + 0x14]
mov eax, dword [esp + 0x88]
mov dword [esp + 0x6c], ecx
mov eax, dword [eax + 0x14]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x10]
mov dword [esp + 0xc8], edx
mov ecx, dword [eax + 0x18]
mov eax, dword [esp + 0x80]
push esi
push edi
mov dword [esp + 0x64], ecx
mov eax, dword [eax + 0x18]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x10]
push esi
mov dword [esp + 0xc4], edx
push edi
mov ecx, dword [eax + 0x1c]
mov eax, dword [esp + 0x88]
mov dword [esp + 0x34], ecx
mov eax, dword [eax + 0x1c]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov esi, dword [esp + 0x28]
sub ebx, esi
mov dword [esp + 0xc4], edx
mov eax, ebx
cdq
mov ecx, eax
mov ebx, edx
push ebx
mov eax, ebp
mov dword [esp + 0x3c], ecx
cdq
push ecx
mov edi, edx
mov dword [esp + 0x3c], ebx
push edi
push eax
mov dword [esp + 0x38], eax
call fcn.0059bca0
mov ebx, dword [esp + 0x98]
mov ecx, eax
mov ebp, dword [esp + 0x14]
shrd ecx, edx, 0x10
mov eax, dword [ebx]
add ecx, ebp
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x7c], eax
cmp eax, ecx
je 0x46d6c3
mov eax, dword [esp + 0x68]
shl eax, 0x10
sub eax, esi
cdq
mov ecx, edx
mov dword [esp + 0x18], eax
push ecx
push eax
push edi
push dword [esp + 0x34]
mov dword [esp + 0x40], ecx
call fcn.0059bca0
push dword [esp + 0x30]
shrd eax, edx, 0x10
push dword [esp + 0x1c]
add eax, ebp
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xd4]
cdq
mov esi, edx
mov edi, eax
push esi
push edi
call fcn.0059bca0
push dword [esp + 0x30]
shrd eax, edx, 0x10
push dword [esp + 0x1c]
add eax, dword [esp + 0x24]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0xd8]
cdq
mov ebp, edx
mov dword [esp + 0x30], eax
push ebp
push eax
call fcn.0059bca0
push dword [esp + 0x30]
shrd eax, edx, 0x10
push dword [esp + 0x1c]
add eax, dword [esp + 0x28]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0xdc]
cdq
mov ecx, eax
mov eax, edx
push eax
push ecx
mov dword [esp + 0x84], ecx
mov dword [esp + 0x80], eax
call fcn.0059bca0
push dword [esp + 0x30]
shrd eax, edx, 0x10
push dword [esp + 0x1c]
add eax, dword [esp + 0x48]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0xd0]
cdq
mov ecx, eax
mov eax, edx
push eax
push ecx
mov dword [esp + 0x98], ecx
mov dword [esp + 0x94], eax
call fcn.0059bca0
push dword [esp + 0x30]
shrd eax, edx, 0x10
push dword [esp + 0x1c]
add eax, dword [esp + 0x6c]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0xc8]
cdq
mov ecx, eax
mov eax, edx
push eax
push ecx
mov dword [esp + 0xa0], ecx
mov dword [esp + 0x9c], eax
call fcn.0059bca0
shrd eax, edx, 0x10
add eax, dword [esp + 0x5c]
mov dword [esp + 0x58], eax
push dword [esp + 0x30]
mov eax, dword [esp + 0xc8]
push dword [esp + 0x1c]
cdq
mov ecx, eax
mov eax, edx
push eax
push ecx
mov dword [esp + 0x88], ecx
mov dword [esp + 0xa4], eax
call fcn.0059bca0
shrd eax, edx, 0x10
add eax, dword [esp + 0x2c]
mov dword [esp + 0x54], eax
mov eax, dword [ebx]
sub eax, dword [esp + 0x6c]
cdq
push edx
push eax
push 0x10000
push 0
call fcn.0059bbf0
push dword [esp + 0x34]
mov dword [esp + 0x14], eax
push dword [esp + 0x3c]
mov dword [esp + 0x2c], edx
push esi
push edi
call fcn.0059bca0
push dword [esp + 0x24]
mov ecx, eax
mov esi, edx
mov eax, dword [ebx + 8]
push dword [esp + 0x14]
cdq
shrd ecx, esi, 0x10
mov ebx, eax
mov edi, edx
mov eax, dword [esp + 0x24]
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 + 0x34]
mov dword [esp + 0xa4], edx
push dword [esp + 0x3c]
push ebp
push dword [esp + 0x34]
call fcn.0059bca0
mov ebp, dword [esp + 0x24]
mov ecx, eax
mov eax, dword [esp + 0x98]
mov esi, edx
shrd ecx, esi, 0x10
push ebp
push dword [esp + 0x14]
mov eax, dword [eax + 0xc]
cdq
mov ebx, eax
sar esi, 0x10
mov eax, dword [esp + 0x28]
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 + 0x34]
mov dword [esp + 0xa8], edx
push dword [esp + 0x3c]
push dword [esp + 0x78]
push dword [esp + 0x80]
call fcn.0059bca0
mov ecx, eax
mov esi, edx
mov eax, dword [esp + 0x98]
shrd ecx, esi, 0x10
push ebp
push dword [esp + 0x14]
mov eax, dword [eax + 0x10]
cdq
mov ebx, eax
sar esi, 0x10
mov eax, dword [esp + 0x48]
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 + 0x34]
mov dword [esp + 0x78], edx
push dword [esp + 0x3c]
push dword [esp + 0x8c]
push dword [esp + 0x94]
call fcn.0059bca0
mov ecx, eax
mov esi, edx
mov eax, dword [esp + 0x98]
shrd ecx, esi, 0x10
push ebp
push dword [esp + 0x14]
mov eax, dword [eax + 0x14]
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 + 0x34]
mov dword [esp + 0x68], edx
push dword [esp + 0x3c]
push dword [esp + 0x94]
push dword [esp + 0x9c]
call fcn.0059bca0
mov ecx, eax
mov esi, edx
mov eax, dword [esp + 0x98]
shrd ecx, esi, 0x10
push ebp
push dword [esp + 0x14]
mov eax, dword [eax + 0x18]
cdq
mov ebx, eax
sar esi, 0x10
mov eax, dword [esp + 0x64]
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 + 0x34]
mov dword [esp + 0x60], edx
push dword [esp + 0x3c]
push dword [esp + 0x9c]
push dword [esp + 0x84]
call fcn.0059bca0
mov ecx, eax
mov esi, edx
shrd ecx, esi, 0x10
mov eax, dword [esp + 0x98]
sar esi, 0x10
push ebp
push dword [esp + 0x14]
mov eax, dword [eax + 0x1c]
cdq
mov ebx, eax
mov edi, edx
mov eax, dword [esp + 0x34]
sub ebx, ecx
cdq
sbb edi, esi
sub ebx, eax
sbb edi, edx
push edi
push ebx
call fcn.0059bca0
mov ecx, dword [esp + 0x68]
mov ebx, edx
imul ecx, dword [esp + 0xf0]
mov eax, dword [esp + 0xec]
mov dword [esp + 0x10], ebx
lea eax, [eax + ecx*4]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x60]
sub eax, dword [esp + 0x68]
mov dword [esp + 0x40], eax
je 0x46cf34
push dword [esp + 0x34]
mov ebp, dword [esp + 0x80]
mov eax, ebp
push dword [esp + 0x3c]
sub eax, dword [esp + 0x1c]
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 + 0x30]
mov eax, edx
push dword [esp + 0x1c]
mov dword [esp + 0x30], eax
cdq
push edx
push eax
call fcn.0059bca0
mov esi, eax
shrd esi, edx, 0x10
add esi, dword [esp + 0x14]
cmp dword [esp + 0x6c], ebp
mov ebp, dword [esp + 0x3c]
jge 0x46cb9c
mov ecx, dword [esp + 0x40]
test ecx, ecx
jle 0x46cf38
mov eax, dword [esp + 0xa0]
cdq
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x7c], edx
cdq
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x94], edx
cdq
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x8c], edx
cdq
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x84], edx
cdq
mov dword [esp + 0xb4], eax
mov eax, ebx
mov dword [esp + 0xb0], edx
cdq
mov dword [esp + 0xbc], eax
lea eax, [esi + 0xffff]
mov dword [esp + 0xb8], edx
lea edx, [ebp + 0xffff]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x70], edx
mov ebx, edx
dec ecx
and ebx, 0xffff0000
mov dword [esp + 0x40], ecx
mov eax, ebx
sub eax, ebp
cdq
mov esi, edx
mov edi, eax
push esi
push edi
push dword [esp + 0x84]
push dword [esp + 0x84]
call fcn.0059bca0
push esi
push edi
push dword [esp + 0x9c]
shrd eax, edx, 0x10
push dword [esp + 0x9c]
add eax, dword [esp + 0x54]
mov dword [esp + 0x40], eax
call fcn.0059bca0
push esi
push edi
push dword [esp + 0x94]
shrd eax, edx, 0x10
push dword [esp + 0x94]
add eax, dword [esp + 0x58]
mov dword [esp + 0x48], eax
call fcn.0059bca0
push esi
push edi
push dword [esp + 0x8c]
shrd eax, edx, 0x10
push dword [esp + 0xb8]
add eax, dword [esp + 0x5c]
mov dword [esp + 0x44], eax
call fcn.0059bca0
push esi
push edi
push dword [esp + 0xb8]
shrd eax, edx, 0x10
push dword [esp + 0xc0]
add eax, dword [esp + 0x60]
mov dword [esp + 0x34], eax
call fcn.0059bca0
push esi
push edi
push dword [esp + 0xc0]
shrd eax, edx, 0x10
push dword [esp + 0xc8]
add eax, dword [esp + 0x68]
mov dword [esp + 0x30], eax
call fcn.0059bca0
mov ebp, dword [esp + 0x1c]
mov ecx, eax
shrd ecx, edx, 0x10
mov edx, dword [esp + 0x2c]
mov eax, ebx
add ecx, dword [esp + 0x54]
sub ebp, ebx
mov ebx, dword [esp + 0x10]
sar eax, 0x10
sar ebp, 0x10
mov dword [esp + 0x68], ecx
lea edi, [edx + eax*4]
mov dword [esp + 0x18], edi
test ebp, ebp
jle 0x46cb11
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x9c]
nop
mov edx, ecx
shr eax, 0x10
shr edx, 0x10
dec ebp
imul edx, esi
add edx, eax
cmp edx, dword [esp + 0xd8]
jae 0x46caba
mov eax, dword [esp + 0xdc]
mov edx, dword [eax + edx*4]
mov eax, edx
shr eax, 0x18
mov dword [esp + 0x14], edx
cmp eax, 8
jbe 0x46caba
mov esi, dword [esp + 0x30]
mov ecx, edx
shr esi, 0x10
and ecx, 0xff0000
imul esi, eax
mov eax, dword [esp + 0x24]
shr eax, 0x10
movzx ebx, dl
imul ebx, eax
mov eax, dword [esp + 0x38]
shr eax, 0x10
imul ecx, eax
mov eax, dword [esp + 0x34]
shr eax, 0x10
and ebx, 0xff00
shr esi, 8
or ebx, ecx
mov ecx, dword [esp + 0x14]
and ecx, 0xff00
shr ebx, 8
imul ecx, eax
mov edx, ebx
and edx, 0xff0000
movzx eax, bl
imul eax, esi
imul edx, esi
mov ebx, dword [esp + 0x10]
and ecx, 0xff0000
bswap ecx
imul ecx, esi
shr eax, 8
movzx esi, al
shr edx, 8
shr ecx, 8
and ecx, 0xff00
mov dword [esp + 0x14], ecx
mov ecx, dword [edi]
mov eax, ecx
and eax, 0xff0000
mov edi, 0xff
add eax, edx
mov edx, 0xff
shr eax, 0x10
cmp eax, edi
cmovbe edi, eax
mov eax, ecx
and eax, 0xff00
add eax, dword [esp + 0x14]
shr eax, 8
cmp eax, edx
cmovbe edx, eax
movzx eax, cl
add eax, esi
mov ecx, 0xff
mov esi, dword [esp + 0x9c]
cmp eax, ecx
cmovbe ecx, eax
mov eax, dword [esp + 0x18]
or edi, 0xffffff00
shl edi, 8
or edi, edx
shl edi, 8
or edi, ecx
mov ecx, dword [esp + 0x68]
mov dword [eax], edi
mov edi, eax
mov eax, dword [esp + 0x30]
add edi, 4
add eax, dword [esp + 0xa0]
add ecx, ebx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x38]
add eax, dword [esp + 0xa4]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x34]
add eax, dword [esp + 0x74]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x24]
add eax, dword [esp + 0x64]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
add eax, dword [esp + 0x5c]
mov dword [esp + 0x18], edi
mov dword [esp + 0x20], eax
mov dword [esp + 0x68], ecx
test ebp, ebp
jg 0x46c9a0
mov ecx, dword [esp + 0xf0]
mov eax, dword [esp + 0x28]
add dword [esp + 0x1c], eax
mov ebp, dword [esp + 0x3c]
mov edx, dword [esp + 0x70]
lea eax, [ecx*4]
add dword [esp + 0x2c], eax
mov eax, dword [esp + 0xcc]
add dword [esp + 0x44], eax
mov eax, dword [esp + 0xd0]
add dword [esp + 0x48], eax
mov eax, dword [esp + 0xd4]
add dword [esp + 0x4c], eax
mov eax, dword [esp + 0xc8]
add dword [esp + 0x50], eax
mov eax, dword [esp + 0xc0]
add dword [esp + 0x58], eax
add ebp, dword [esp + 0xe0]
add edx, dword [esp + 0xe0]
mov eax, dword [esp + 0xc4]
add dword [esp + 0x54], eax
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x70], edx
test ecx, ecx
jg 0x46c891
jmp 0x46cf38
jle 0x46cf38
mov ecx, dword [esp + 0x40]
test ecx, ecx
jle 0x46cf38
mov eax, dword [esp + 0xa0]
cdq
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xbc], edx
cdq
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0xac], edx
cdq
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x78], edx
cdq
mov dword [esp + 0x8c], eax
mov eax, ebx
mov dword [esp + 0x90], edx
cdq
mov dword [esp + 0x84], eax
lea eax, [ebp + 0xffff]
mov dword [esp + 0x34], eax
lea eax, [esi + 0xffff]
mov dword [esp + 0x88], edx
mov dword [esp + 0x68], eax
mov ebx, eax
dec ecx
and ebx, 0xffff0000
mov dword [esp + 0x40], ecx
mov eax, ebx
sub eax, ebp
cdq
mov esi, edx
mov edi, eax
push esi
push edi
push dword [esp + 0xc4]
push dword [esp + 0xc4]
call fcn.0059bca0
push esi
push edi
push dword [esp + 0xbc]
shrd eax, edx, 0x10
push dword [esp + 0xbc]
add eax, dword [esp + 0x54]
mov dword [esp + 0x34], eax
call fcn.0059bca0
push esi
push edi
push dword [esp + 0xb4]
shrd eax, edx, 0x10
push dword [esp + 0x88]
add eax, dword [esp + 0x58]
mov dword [esp + 0x24], eax
call fcn.0059bca0
push esi
push edi
push dword [esp + 0x80]
shrd eax, edx, 0x10
push dword [esp + 0xa0]
add eax, dword [esp + 0x5c]
mov dword [esp + 0x28], eax
call fcn.0059bca0
push esi
push edi
push dword [esp + 0x98]
shrd eax, edx, 0x10
push dword [esp + 0x98]
add eax, dword [esp + 0x60]
mov dword [esp + 0x40], eax
call fcn.0059bca0
push esi
push edi
push dword [esp + 0x90]
shrd eax, edx, 0x10
push dword [esp + 0x90]
add eax, dword [esp + 0x68]
mov dword [esp + 0x48], eax
call fcn.0059bca0
mov ebp, dword [esp + 0x34]
mov ecx, eax
shrd ecx, edx, 0x10
mov edx, dword [esp + 0x2c]
mov eax, ebx
add ecx, dword [esp + 0x54]
sub ebp, ebx
mov ebx, dword [esp + 0x10]
sar eax, 0x10
sar ebp, 0x10
mov dword [esp + 0x70], ecx
lea edi, [edx + eax*4]
mov dword [esp + 0x20], edi
test ebp, ebp
jle 0x46ceb1
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x9c]
mov edx, ecx
shr eax, 0x10
shr edx, 0x10
dec ebp
imul edx, esi
add edx, eax
cmp edx, dword [esp + 0xd8]
jae 0x46ce5a
mov eax, dword [esp + 0xdc]
mov edx, dword [eax + edx*4]
mov eax, edx
shr eax, 0x18
mov dword [esp + 0x1c], edx
cmp eax, 8
jbe 0x46ce5a
mov esi, dword [esp + 0x24]
mov ecx, edx
shr esi, 0x10
and ecx, 0xff0000
imul esi, eax
mov eax, dword [esp + 0x30]
shr eax, 0x10
movzx ebx, dl
imul ebx, eax
mov eax, dword [esp + 0x14]
shr eax, 0x10
imul ecx, eax
mov eax, dword [esp + 0x18]
shr eax, 0x10
and ebx, 0xff00
shr esi, 8
or ebx, ecx
mov ecx, dword [esp + 0x1c]
and ecx, 0xff00
shr ebx, 8
imul ecx, eax
mov edx, ebx
and edx, 0xff0000
movzx eax, bl
imul eax, esi
imul edx, esi
mov ebx, dword [esp + 0x10]
and ecx, 0xff0000
bswap ecx
imul ecx, esi
shr eax, 8
movzx esi, al
shr edx, 8
shr ecx, 8
and ecx, 0xff00
mov dword [esp + 0x1c], ecx
mov ecx, dword [edi]
mov eax, ecx
and eax, 0xff0000
mov edi, 0xff
add eax, edx
mov edx, 0xff
shr eax, 0x10
cmp eax, edi
cmovbe edi, eax
mov eax, ecx
and eax, 0xff00
add eax, dword [esp + 0x1c]
shr eax, 8
cmp eax, edx
cmovbe edx, eax
movzx eax, cl
add eax, esi
mov ecx, 0xff
mov esi, dword [esp + 0x9c]
cmp eax, ecx
cmovbe ecx, eax
mov eax, dword [esp + 0x20]
or edi, 0xffffff00
shl edi, 8
or edi, edx
shl edi, 8
or edi, ecx
mov ecx, dword [esp + 0x70]
mov dword [eax], edi
mov edi, eax
mov eax, dword [esp + 0x24]
add edi, 4
add eax, dword [esp + 0xa0]
add ecx, ebx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x14]
add eax, dword [esp + 0xa4]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x18]
add eax, dword [esp + 0x74]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x30]
add eax, dword [esp + 0x64]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x38]
add eax, dword [esp + 0x5c]
mov dword [esp + 0x20], edi
mov dword [esp + 0x38], eax
mov dword [esp + 0x70], ecx
test ebp, ebp
jg 0x46cd40
mov edx, dword [esp + 0xf0]
mov ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0xe0]
add ebp, eax
add dword [esp + 0x34], eax
mov eax, dword [esp + 0x68]
lea ecx, [edx*4]
add dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0xcc]
add dword [esp + 0x44], ecx
mov ecx, dword [esp + 0xd0]
add dword [esp + 0x48], ecx
mov ecx, dword [esp + 0xd4]
add dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0xc8]
add dword [esp + 0x50], ecx
mov ecx, dword [esp + 0xc0]
add dword [esp + 0x58], ecx
mov ecx, dword [esp + 0xc4]
add dword [esp + 0x54], ecx
add eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x68], eax
test ecx, ecx
jg 0x46cc32
jmp 0x46cf38
mov ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0x60]
sub dword [esp + 0xa8], eax
je 0x46d6c3
mov eax, dword [esp + 0x98]
mov edi, dword [eax + 4]
mov eax, dword [eax]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x80]
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 + 0x80]
mov eax, dword [eax]
sub eax, dword [esp + 0x28]
cdq
push edx
push eax
push ecx
push esi
call fcn.0059bca0
mov eax, dword [esp + 0x60]
mov ecx, edx
shl eax, 0x10
sub eax, edi
mov dword [esp + 0x70], ecx
imul ecx
mov esi, eax
mov eax, dword [esp + 0x28]
shrd esi, edx, 0x10
add esi, eax
cmp dword [esp + 0x6c], eax
jge 0x46d351
mov ecx, dword [esp + 0xa8]
test ecx, ecx
jle 0x46d6c3
mov eax, dword [esp + 0xa0]
add esi, 0xffff
cdq
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xbc], edx
cdq
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0xac], edx
cdq
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x78], edx
cdq
mov dword [esp + 0x8c], eax
mov eax, ebx
mov dword [esp + 0x90], edx
cdq
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], edx
mov dword [esp + 0x18], esi
nop
lea ebx, [ebp + 0xffff]
dec ecx
and ebx, 0xffff0000
mov dword [esp + 0xa8], ecx
mov eax, ebx
sub eax, ebp
cdq
mov esi, edx
mov edi, eax
push esi
push edi
push dword [esp + 0xc4]
push dword [esp + 0xc4]
call fcn.0059bca0
push esi
push edi
push dword [esp + 0xbc]
shrd eax, edx, 0x10
push dword [esp + 0xbc]
add eax, dword [esp + 0x54]
mov dword [esp + 0x2c], eax
call fcn.0059bca0
push esi
push edi
push dword [esp + 0xb4]
shrd eax, edx, 0x10
push dword [esp + 0x88]
add eax, dword [esp + 0x58]
mov dword [esp + 0x30], eax
call fcn.0059bca0
push esi
push edi
push dword [esp + 0x80]
shrd eax, edx, 0x10
push dword [esp + 0xa0]
add eax, dword [esp + 0x5c]
mov dword [esp + 0x34], eax
call fcn.0059bca0
push esi
push edi
push dword [esp + 0x98]
shrd eax, edx, 0x10
push dword [esp + 0x98]
add eax, dword [esp + 0x60]
mov dword [esp + 0x24], eax
call fcn.0059bca0
push esi
push edi
push dword [esp + 0x90]
shrd eax, edx, 0x10
push dword [esp + 0x90]
add eax, dword [esp + 0x68]
mov dword [esp + 0x50], eax
call fcn.0059bca0
mov esi, eax
mov ecx, ebx
mov eax, dword [esp + 0x54]
shrd esi, edx, 0x10
mov edx, dword [esp + 0x2c]
sar ecx, 0x10
add esi, eax
mov dword [esp + 0x28], esi
lea edi, [edx + ecx*4]
mov ecx, dword [esp + 0x18]
mov ebp, ecx
mov dword [esp + 0x60], edi
sub ebp, ebx
sar ebp, 0x10
test ebp, ebp
jle 0x46d2cc
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x5c]
mov ebx, dword [esp + 0x9c]
nop dword [eax]
mov edx, esi
shr eax, 0x10
shr edx, 0x10
dec ebp
imul edx, ebx
add edx, eax
cmp edx, dword [esp + 0xd8]
jae 0x46d27d
mov eax, dword [esp + 0xdc]
mov edx, dword [eax + edx*4]
mov eax, edx
shr eax, 0x18
mov dword [esp + 0x6c], edx
cmp eax, 8
jbe 0x46d27d
mov ebx, dword [esp + 0x1c]
mov esi, edx
shr ebx, 0x10
and esi, 0xff0000
imul ebx, eax
mov eax, dword [esp + 0x20]
shr eax, 0x10
imul esi, eax
mov eax, dword [esp + 0x14]
shr eax, 0x10
movzx ecx, dl
imul ecx, eax
mov eax, dword [esp + 0x24]
and esi, 0xff0000ff
shr eax, 0x10
shr ebx, 8
and ecx, 0xff00
or esi, ecx
mov ecx, dword [esp + 0x6c]
and ecx, 0xff00
shr esi, 8
imul ecx, eax
mov edx, esi
and edx, 0xff0000
imul edx, ebx
and ecx, 0xff0000
bswap ecx
imul ecx, ebx
imul ebx, esi
shr edx, 8
shr ecx, 8
and ecx, 0xff00
shr ebx, 8
mov dword [esp + 0x6c], ecx
mov ecx, dword [edi]
mov eax, ecx
and eax, 0xff0000
movzx esi, bl
add eax, edx
mov ebx, dword [esp + 0x9c]
shr eax, 0x10
mov edi, 0xff
cmp eax, edi
mov edx, 0xff
cmovbe edi, eax
mov eax, ecx
and eax, 0xff00
add eax, dword [esp + 0x6c]
shr eax, 8
cmp eax, edx
cmovbe edx, eax
movzx eax, cl
add eax, esi
mov ecx, 0xff
mov esi, dword [esp + 0x28]
cmp eax, ecx
cmovbe ecx, eax
mov eax, dword [esp + 0x60]
or edi, 0xffffff00
shl edi, 8
or edi, edx
shl edi, 8
or edi, ecx
mov ecx, dword [esp + 0x5c]
mov dword [eax], edi
mov edi, eax
mov eax, dword [esp + 0xa0]
add edi, 4
add dword [esp + 0x1c], eax
mov eax, dword [esp + 0xa4]
add dword [esp + 0x20], eax
mov eax, dword [esp + 0x74]
add dword [esp + 0x24], eax
mov eax, dword [esp + 0x64]
add dword [esp + 0x14], eax
mov eax, dword [esp + 0x40]
add esi, dword [esp + 0x10]
add eax, ecx
mov dword [esp + 0x60], edi
mov dword [esp + 0x40], eax
mov dword [esp + 0x28], esi
test ebp, ebp
jg 0x46d160
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x18]
add ecx, dword [esp + 0x70]
mov edx, dword [esp + 0xf0]
mov ebp, dword [esp + 0x3c]
add ebp, dword [esp + 0xe0]
add eax, dword [esp + 0xc4]
mov dword [esp + 0x18], ecx
lea ecx, [edx*4]
add dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0xcc]
add dword [esp + 0x44], ecx
mov ecx, dword [esp + 0xd0]
add dword [esp + 0x48], ecx
mov ecx, dword [esp + 0xd4]
add dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0xc8]
add dword [esp + 0x50], ecx
mov ecx, dword [esp + 0xc0]
add dword [esp + 0x58], ecx
mov ecx, dword [esp + 0xa8]
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x54], eax
test ecx, ecx
jg 0x46d040
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd4
ret
jle 0x46d6c3
mov ecx, dword [esp + 0xa8]
test ecx, ecx
jle 0x46d6c3
mov eax, dword [esp + 0xa0]
cdq
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xbc], edx
cdq
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0xac], edx
cdq
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x78], edx
cdq
mov dword [esp + 0x8c], eax
mov eax, ebx
mov dword [esp + 0x90], edx
cdq
mov dword [esp + 0x88], edx
lea edx, [esi + 0xffff]
mov dword [esp + 0x84], eax
mov dword [esp + 0x68], edx
mov ebx, edx
dec ecx
and ebx, 0xffff0000
mov dword [esp + 0xa8], ecx
mov eax, ebx
sub eax, ebp
cdq
mov esi, edx
mov edi, eax
push esi
push edi
push dword [esp + 0xc4]
push dword [esp + 0xc4]
call fcn.0059bca0
push esi
push edi
push dword [esp + 0xbc]
shrd eax, edx, 0x10
push dword [esp + 0xbc]
add eax, dword [esp + 0x54]
mov dword [esp + 0x70], eax
call fcn.0059bca0
push esi
push edi
push dword [esp + 0xb4]
shrd eax, edx, 0x10
push dword [esp + 0x88]
add eax, dword [esp + 0x58]
mov dword [esp + 0x2c], eax
call fcn.0059bca0
push esi
push edi
push dword [esp + 0x80]
shrd eax, edx, 0x10
push dword [esp + 0xa0]
add eax, dword [esp + 0x5c]
mov dword [esp + 0x30], eax
call fcn.0059bca0
push esi
push edi
push dword [esp + 0x98]
shrd eax, edx, 0x10
push dword [esp + 0x98]
add eax, dword [esp + 0x60]
mov dword [esp + 0x34], eax
call fcn.0059bca0
push esi
push edi
push dword [esp + 0x90]
shrd eax, edx, 0x10
push dword [esp + 0x90]
add eax, dword [esp + 0x68]
mov dword [esp + 0x24], eax
call fcn.0059bca0
mov esi, eax
mov ecx, ebx
mov eax, dword [esp + 0x54]
sub ebp, ebx
shrd esi, edx, 0x10
mov edx, dword [esp + 0x2c]
add ebp, 0xffff
sar ecx, 0x10
add esi, eax
sar ebp, 0x10
mov dword [esp + 0x28], esi
lea edi, [edx + ecx*4]
mov dword [esp + 0x6c], edi
test ebp, ebp
jle 0x46d645
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x9c]
mov ecx, esi
shr eax, 0x10
shr ecx, 0x10
dec ebp
imul ecx, edx
add ecx, eax
cmp ecx, dword [esp + 0xd8]
jae 0x46d5f8
mov eax, dword [esp + 0xdc]
mov eax, dword [eax + ecx*4]
mov ecx, eax
shr ecx, 0x18
cmp ecx, 8
jbe 0x46d5f8
mov esi, dword [esp + 0x60]
mov edx, eax
shr esi, 0x10
and edx, 0xff0000
imul esi, ecx
mov ecx, dword [esp + 0x24]
shr ecx, 0x10
movzx ebx, al
and eax, 0xff00
imul ebx, ecx
mov ecx, dword [esp + 0x1c]
shr ecx, 0x10
imul edx, ecx
mov ecx, dword [esp + 0x20]
shr ecx, 0x10
and ebx, 0xff00
imul eax, ecx
shr esi, 8
or ebx, edx
shr ebx, 8
movzx ecx, bl
mov edx, ebx
mov ebx, dword [edi]
and eax, 0xff0000
imul ecx, esi
and edx, 0xff0000
imul edx, esi
mov edi, 0xff
bswap eax
imul eax, esi
shr ecx, 8
movzx esi, cl
mov ecx, ebx
and ecx, 0xff0000
shr edx, 8
add ecx, edx
shr eax, 8
shr ecx, 0x10
and eax, 0xff00
cmp ecx, edi
mov edx, 0xff
cmovbe edi, ecx
mov ecx, ebx
and ecx, 0xff00
add ecx, eax
movzx eax, bl
shr ecx, 8
cmp ecx, edx
cmovbe edx, ecx
add eax, esi
mov esi, dword [esp + 0x28]
mov ecx, 0xff
cmp eax, ecx
cmovbe ecx, eax
mov eax, dword [esp + 0x6c]
or edi, 0xffffff00
shl edi, 8
or edi, edx
mov edx, dword [esp + 0x9c]
shl edi, 8
or edi, ecx
mov dword [eax], edi
mov edi, eax
mov eax, dword [esp + 0xa0]
add edi, 4
add dword [esp + 0x60], eax
mov eax, dword [esp + 0xa4]
add dword [esp + 0x1c], eax
mov eax, dword [esp + 0x74]
add dword [esp + 0x20], eax
mov eax, dword [esp + 0x64]
add dword [esp + 0x24], eax
mov eax, dword [esp + 0x14]
add eax, dword [esp + 0x5c]
add esi, dword [esp + 0x10]
mov dword [esp + 0x6c], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0x28], esi
test ebp, ebp
jg 0x46d4f1
mov eax, dword [esp + 0x54]
mov ebx, dword [esp + 0xf0]
mov ebp, dword [esp + 0x3c]
mov edx, dword [esp + 0x68]
add ebp, dword [esp + 0xe0]
add edx, dword [esp + 0x70]
lea ecx, [ebx*4]
add dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0xcc]
add dword [esp + 0x44], ecx
mov ecx, dword [esp + 0xd0]
add dword [esp + 0x48], ecx
mov ecx, dword [esp + 0xd4]
add dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0xc8]
add dword [esp + 0x50], ecx
mov ecx, dword [esp + 0xc0]
add dword [esp + 0x58], ecx
add eax, dword [esp + 0xc4]
mov ecx, dword [esp + 0xa8]
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x68], edx
mov dword [esp + 0x54], eax
test ecx, ecx
jg 0x46d3e0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd4
ret