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

Disassembly:
sub esp, 0x90
mov eax, dword [esp + 0xa0]
shr dword [esp + 0x9c], 2
push ebx
push ebp
mov ecx, dword [eax + 0x18]
push esi
mov esi, dword [eax + 0x10]
mov eax, dword [eax]
push edi
mov edi, dword [esp + 0xa4]
mov edx, edi
mov dword [esp + 0x98], ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x9c], esi
mov ecx, dword [edi + 4]
lea ebx, [edi + 0x20]
cmp ecx, dword [edi + 0x24]
lea ebp, [edi + 0x40]
mov eax, dword [edi + 0x44]
cmovle edx, ebx
cmovle ebx, edi
mov edi, ebp
mov ecx, ebx
mov dword [esp + 0x60], ecx
cmp dword [edx + 4], eax
mov eax, dword [ebx + 4]
cmovle ebp, edx
cmovg edi, edx
mov dword [esp + 0x90], edi
mov dword [esp + 0x10], ebp
cmp eax, dword [ebp + 4]
jle 0x455801
mov ecx, ebp
mov dword [esp + 0x60], ebp
mov ebp, ebx
mov dword [esp + 0x10], ebx
mov edx, dword [ecx + 4]
mov ecx, dword [edi + 4]
mov dword [esp + 0x38], edx
lea eax, [edx + 0xffff]
lea ebx, [ecx + 0xffff]
sar eax, 0x10
sar ebx, 0x10
mov dword [esp + 0x64], eax
mov dword [esp + 0x70], ebx
cmp eax, ebx
je 0x456ab0
mov ebp, dword [ebp + 4]
sub ecx, edx
lea eax, [ebp + 0xffff]
sar eax, 0x10
mov dword [esp + 0x50], eax
mov eax, ecx
cdq
push edx
push eax
push 0x10000
push 0
call fcn.0059bbf0
mov ebx, eax
mov edi, edx
mov eax, dword [esp + 0x60]
push edi
push ebx
mov ecx, dword [eax]
mov eax, dword [esp + 0x98]
mov dword [esp + 0x54], ecx
mov eax, dword [eax]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x60]
push edi
mov dword [esp + 0x98], edx
push ebx
mov ecx, dword [eax + 0x18]
mov eax, dword [esp + 0x98]
mov dword [esp + 0x3c], ecx
mov eax, dword [eax + 0x18]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x60]
push edi
mov dword [esp + 0x8c], edx
push ebx
mov ecx, dword [eax + 0x1c]
mov eax, dword [esp + 0x98]
mov dword [esp + 0x2c], ecx
mov eax, dword [eax + 0x1c]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov edi, dword [esp + 0x38]
sub ebp, edi
mov dword [esp + 0x60], edx
mov eax, ebp
cdq
mov ecx, eax
mov ebx, edx
mov eax, dword [esp + 0x94]
cdq
push ebx
mov ebp, eax
mov dword [esp + 0x18], ecx
mov eax, edx
mov dword [esp + 0x1c], ebx
push ecx
push eax
push ebp
mov dword [esp + 0x40], ebp
mov dword [esp + 0x48], eax
call fcn.0059bca0
mov ebp, dword [esp + 0x10]
mov ebx, dword [esp + 0x4c]
shrd eax, edx, 0x10
mov ebp, dword [ebp]
add eax, ebx
mov dword [esp + 0x54], eax
cmp ebp, eax
je 0x456ab0
mov eax, dword [esp + 0x64]
shl eax, 0x10
sub eax, edi
cdq
mov ecx, edx
mov dword [esp + 0x28], eax
push ecx
push eax
push dword [esp + 0x40]
mov dword [esp + 0x2c], ecx
push dword [esp + 0x3c]
call fcn.0059bca0
push dword [esp + 0x20]
shrd eax, edx, 0x10
push dword [esp + 0x2c]
add eax, ebx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x90]
cdq
mov edi, edx
mov ebx, eax
push edi
push ebx
call fcn.0059bca0
push dword [esp + 0x20]
shrd eax, edx, 0x10
push dword [esp + 0x2c]
add eax, dword [esp + 0x3c]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x68]
cdq
mov ecx, eax
mov eax, edx
push eax
push ecx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x48], eax
call fcn.0059bca0
shrd eax, edx, 0x10
add eax, dword [esp + 0x24]
mov dword [esp + 0x44], eax
mov eax, ebp
sub eax, dword [esp + 0x54]
cdq
push edx
push eax
push 0x10000
push 0
call fcn.0059bbf0
push dword [esp + 0x18]
mov dword [esp + 0x30], eax
push dword [esp + 0x18]
mov dword [esp + 0x50], edx
push edi
push ebx
call fcn.0059bca0
push dword [esp + 0x48]
mov ecx, eax
mov edi, edx
mov eax, dword [esp + 0x14]
push dword [esp + 0x30]
shrd ecx, edi, 0x10
mov eax, dword [eax + 0x18]
cdq
mov ebp, eax
sar edi, 0x10
mov eax, dword [esp + 0x3c]
sub ebp, ecx
mov ebx, edx
cdq
sbb ebx, edi
sub ebp, eax
sbb ebx, edx
push ebx
push ebp
call fcn.0059bca0
push dword [esp + 0x18]
mov dword [esp + 0x70], edx
push dword [esp + 0x18]
push dword [esp + 0x40]
push dword [esp + 0x3c]
call fcn.0059bca0
push dword [esp + 0x48]
mov ecx, eax
mov edi, edx
mov eax, dword [esp + 0x14]
push dword [esp + 0x30]
shrd ecx, edi, 0x10
mov eax, dword [eax + 0x1c]
cdq
mov ebp, eax
sar edi, 0x10
mov eax, dword [esp + 0x2c]
sub ebp, ecx
mov ebx, edx
cdq
sbb ebx, edi
sub ebp, eax
sbb ebx, edx
push ebx
push ebp
call fcn.0059bca0
mov ecx, dword [esp + 0x64]
imul ecx, dword [esp + 0xac]
mov eax, dword [esp + 0xa8]
mov ebp, dword [esp + 0x50]
mov dword [esp + 0x48], edx
lea eax, [eax + ecx*4]
mov dword [esp + 0x2c], eax
sub ebp, dword [esp + 0x64]
je 0x45628f
push dword [esp + 0x18]
mov eax, dword [esp + 0x14]
push dword [esp + 0x18]
push 0x10000
mov eax, dword [eax]
sub eax, dword [esp + 0x58]
cdq
push 0
mov ebx, eax
mov edi, edx
call fcn.0059bbf0
push edx
push eax
push edi
push ebx
call fcn.0059bca0
push dword [esp + 0x20]
mov eax, edx
push dword [esp + 0x2c]
mov dword [esp + 0x40], eax
cdq
push edx
push eax
call fcn.0059bca0
mov ecx, dword [esp + 0x10]
mov edi, eax
shrd edi, edx, 0x10
add edi, dword [esp + 0x4c]
mov eax, dword [ecx]
cmp dword [esp + 0x54], eax
jge 0x455ea5
test ebp, ebp
jle 0x456293
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x3c]
cdq
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x84], edx
cdq
mov dword [esp + 0x7c], eax
lea eax, [edi + 0xffff]
mov dword [esp + 0x24], eax
lea eax, [ecx + 0xffff]
mov dword [esp + 0x78], edx
mov dword [esp + 0x30], eax
dec ebp
mov dword [esp + 0x34], ebp
mov ebp, eax
and ebp, 0xffff0000
mov eax, ebp
sub eax, ecx
cdq
mov edi, edx
mov ebx, eax
push edi
push ebx
push dword [esp + 0x8c]
push dword [esp + 0x68]
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0x80]
shrd eax, edx, 0x10
push dword [esp + 0x88]
add eax, dword [esp + 0x50]
mov dword [esp + 0x78], eax
call fcn.0059bca0
mov ecx, eax
mov eax, ebp
shrd ecx, edx, 0x10
mov edx, dword [esp + 0x2c]
add ecx, dword [esp + 0x44]
sar eax, 0x10
lea eax, [edx + eax*4]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x24]
sub eax, ebp
sar eax, 0x10
test eax, eax
jle 0x455e49
mov ebx, dword [esp + 0x68]
lea ebp, [ecx - 0x8000]
add ebx, 0xffff8000
mov dword [esp + 0x58], ebp
mov dword [esp + 0x68], ebx
dec eax
mov dword [esp + 0x80], eax
test ebx, ebx
jle 0x455bb3
mov ecx, ebx
mov dword [esp + 0x64], ebx
sar ecx, 0x10
lea eax, [esi - 1]
xor edx, edx
cmp ecx, eax
setl dl
jmp 0x455bbb
xor eax, eax
xor edx, edx
mov dword [esp + 0x64], eax
test ebp, ebp
jle 0x455bd7
mov eax, dword [esp + 0x98]
mov ecx, ebp
sar ecx, 0x10
dec eax
xor edi, edi
cmp ecx, eax
mov ecx, ebp
cmovl edi, esi
jmp 0x455bdb
xor ecx, ecx
xor edi, edi
mov eax, dword [esp + 0x64]
sar eax, 0x10
sar ecx, 0x10
imul ecx, esi
mov esi, dword [esp + 0x1c]
add ecx, eax
mov dword [esp + 0x18], ecx
lea eax, [ecx + edx]
mov eax, dword [esi + eax*4]
mov dword [esp + 0x14], eax
lea eax, [ecx + edi]
mov ecx, dword [esi + eax*4]
mov edi, 0x10000
add eax, edx
mov dword [esp + 0x20], ecx
mov ecx, ebx
mov ebx, ebp
and ecx, 0xfffe
and ebx, 0xfffe
inc ecx
inc ebx
mov edx, dword [esi + eax*4]
sub edi, ecx
mov eax, dword [esp + 0x18]
mov ebp, edi
mov dword [esp + 0x28], edx
mov edx, 0x10000
sub edx, ebx
imul edi, ebx
imul ebp, edx
mov eax, dword [esi + eax*4]
shr eax, 0x18
imul edx, ecx
imul ebx, ecx
mov ecx, dword [esp + 0x28]
shr ebp, 0x10
imul ebp, eax
mov eax, dword [esp + 0x14]
shr eax, 0x18
shr edx, 0x10
imul edx, eax
mov eax, dword [esp + 0x20]
shr eax, 0x18
mov esi, dword [esp + 0x18]
shr edi, 0x10
imul edi, eax
mov eax, ecx
shr eax, 0x18
shr edx, 0x10
shr ebx, 0x10
imul ebx, eax
mov eax, dword [esp + 0x20]
movzx eax, al
mov dword [esp + 0x4c], edx
movzx edx, cl
and ecx, 0xff0000
shr edi, 0x10
imul eax, edi
shr ebx, 0x10
imul edx, ebx
shr ebp, 0x10
mov dword [esp + 0x64], ebp
mov ebp, dword [esp + 0x1c]
imul ecx, ebx
add edx, eax
mov eax, dword [esp + 0x14]
movzx eax, al
imul eax, dword [esp + 0x4c]
add edx, eax
mov eax, dword [ebp + esi*4]
mov ebp, dword [esp + 0x64]
movzx eax, al
imul eax, ebp
add edx, eax
mov eax, dword [esp + 0x20]
and eax, 0xff0000
and edx, 0xff00
imul eax, edi
add ecx, eax
mov eax, dword [esp + 0x14]
and eax, 0xff0000
imul eax, dword [esp + 0x4c]
add ecx, eax
mov eax, esi
mov esi, dword [esp + 0x1c]
mov eax, dword [esi + eax*4]
and eax, 0xff0000
mov esi, dword [esp + 0xb4]
imul eax, ebp
add ecx, eax
mov eax, dword [esp + 0xb4]
or edx, ecx
shr edx, 8
mov ecx, dword [eax]
movzx eax, dl
and edx, 0xff0000
imul eax, dword [esi + 0xc]
imul edx, dword [esi + 4]
mov esi, dword [esp + 0x1c]
and eax, 0xff00
or eax, edx
shr eax, 8
movzx edx, al
and eax, 0xff0000
imul eax, ecx
imul edx, ecx
and edx, 0xff00
or edx, eax
mov eax, dword [esp + 0x28]
and eax, 0xff00
shr edx, 8
imul eax, ebx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x28]
and eax, 0xff00
imul eax, edi
mov edi, dword [esp + 0x18]
add ebx, eax
mov eax, dword [esp + 0x14]
and eax, 0xff00
imul eax, dword [esp + 0x4c]
add ebx, eax
mov eax, dword [esi + edi*4]
and eax, 0xff00
mov esi, dword [esp + 0x74]
imul eax, ebp
movzx edi, dl
add ebx, eax
mov eax, dword [esp + 0xb4]
and ebx, 0xff0000
bswap ebx
imul ebx, dword [eax + 8]
and ebx, 0xff0000
bswap ebx
imul ebx, ecx
mov ecx, dword [esi]
mov eax, ecx
and eax, 0xff0000
add eax, edx
mov edx, 0xff
shr eax, 0x10
and ebx, 0xff0000
bswap ebx
mov dword [esp + 0x28], ebx
mov ebx, 0xff
cmp eax, ebx
cmovbe ebx, eax
mov eax, ecx
and eax, 0xff00
add eax, dword [esp + 0x28]
shr eax, 8
cmp eax, edx
cmovbe edx, eax
movzx eax, cl
add eax, edi
mov ecx, 0xff
cmp eax, ecx
cmovbe ecx, eax
or ebx, 0xffffff00
shl ebx, 8
or ebx, edx
mov ebp, dword [esp + 0x58]
add ebp, dword [esp + 0x48]
mov eax, dword [esp + 0x80]
shl ebx, 8
or ebx, ecx
mov dword [esp + 0x58], ebp
mov dword [esi], ebx
add esi, 4
mov ebx, dword [esp + 0x68]
add ebx, dword [esp + 0x6c]
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0x9c]
mov dword [esp + 0x68], ebx
test eax, eax
jg 0x455b92
mov ebx, dword [esp + 0xac]
mov edx, dword [esp + 0x38]
add dword [esp + 0x24], edx
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
lea edx, [ebx*4]
add dword [esp + 0x2c], edx
mov edx, dword [esp + 0x88]
add dword [esp + 0x40], edx
add ecx, dword [esp + 0x94]
add eax, dword [esp + 0x94]
mov edx, dword [esp + 0x60]
add dword [esp + 0x44], edx
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x30], eax
test ebp, ebp
jg 0x455b06
jmp 0x45628f
jle 0x456293
test ebp, ebp
jle 0x456293
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x3c]
cdq
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x80], edx
cdq
mov dword [esp + 0x5c], eax
lea eax, [ecx + 0xffff]
mov dword [esp + 0x4c], eax
lea eax, [edi + 0xffff]
mov dword [esp + 0x78], edx
mov dword [esp + 0x64], eax
dec ebp
mov dword [esp + 0x34], ebp
mov ebp, eax
and ebp, 0xffff0000
mov eax, ebp
sub eax, ecx
cdq
mov edi, edx
mov ebx, eax
push edi
push ebx
push dword [esp + 0x88]
push dword [esp + 0x88]
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0x80]
shrd eax, edx, 0x10
push dword [esp + 0x68]
add eax, dword [esp + 0x50]
mov dword [esp + 0x94], eax
call fcn.0059bca0
mov ecx, eax
mov eax, ebp
shrd ecx, edx, 0x10
mov edx, dword [esp + 0x2c]
add ecx, dword [esp + 0x44]
sar eax, 0x10
lea eax, [edx + eax*4]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x4c]
sub eax, ebp
sar eax, 0x10
test eax, eax
jle 0x45623d
mov ebx, dword [esp + 0x84]
lea ebp, [ecx - 0x8000]
add ebx, 0xffff8000
mov dword [esp + 0x74], ebp
mov dword [esp + 0x68], ebx
nop word [eax + eax]
dec eax
mov dword [esp + 0x8c], eax
test ebx, ebx
jle 0x455fa1
mov ecx, ebx
mov dword [esp + 0x30], ebx
sar ecx, 0x10
lea eax, [esi - 1]
xor edx, edx
cmp ecx, eax
setl dl
jmp 0x455fa9
xor eax, eax
xor edx, edx
mov dword [esp + 0x30], eax
test ebp, ebp
jle 0x455fc5
mov eax, dword [esp + 0x98]
mov ecx, ebp
sar ecx, 0x10
dec eax
xor edi, edi
cmp ecx, eax
mov ecx, ebp
cmovl edi, esi
jmp 0x455fc9
xor ecx, ecx
xor edi, edi
mov eax, dword [esp + 0x30]
sar eax, 0x10
sar ecx, 0x10
imul ecx, esi
mov esi, dword [esp + 0x1c]
add ecx, eax
mov dword [esp + 0x20], ecx
lea eax, [ecx + edx]
mov eax, dword [esi + eax*4]
mov dword [esp + 0x14], eax
lea eax, [ecx + edi]
mov ecx, dword [esi + eax*4]
mov edi, 0x10000
add eax, edx
mov dword [esp + 0x18], ecx
mov ecx, ebx
mov ebx, ebp
and ecx, 0xfffe
and ebx, 0xfffe
inc ecx
inc ebx
mov edx, dword [esi + eax*4]
sub edi, ecx
mov eax, dword [esp + 0x20]
mov ebp, edi
mov dword [esp + 0x28], edx
mov edx, 0x10000
sub edx, ebx
imul edi, ebx
imul ebp, edx
mov eax, dword [esi + eax*4]
shr eax, 0x18
imul edx, ecx
imul ebx, ecx
mov ecx, dword [esp + 0x28]
shr ebp, 0x10
imul ebp, eax
mov eax, dword [esp + 0x14]
shr eax, 0x18
shr edx, 0x10
imul edx, eax
mov eax, dword [esp + 0x18]
shr eax, 0x18
mov esi, dword [esp + 0x20]
shr edi, 0x10
imul edi, eax
mov eax, ecx
shr eax, 0x18
shr edx, 0x10
shr ebx, 0x10
imul ebx, eax
mov eax, dword [esp + 0x18]
movzx eax, al
mov dword [esp + 0x24], edx
movzx edx, cl
and ecx, 0xff0000
shr edi, 0x10
imul eax, edi
shr ebx, 0x10
imul edx, ebx
shr ebp, 0x10
mov dword [esp + 0x84], ebp
mov ebp, dword [esp + 0x1c]
imul ecx, ebx
add edx, eax
mov eax, dword [esp + 0x14]
movzx eax, al
imul eax, dword [esp + 0x24]
add edx, eax
mov eax, dword [ebp + esi*4]
mov ebp, dword [esp + 0x84]
movzx eax, al
imul eax, ebp
add edx, eax
mov eax, dword [esp + 0x18]
and eax, 0xff0000
and edx, 0xff00
imul eax, edi
add ecx, eax
mov eax, dword [esp + 0x14]
and eax, 0xff0000
imul eax, dword [esp + 0x24]
add ecx, eax
mov eax, esi
mov esi, dword [esp + 0x1c]
mov eax, dword [esi + eax*4]
and eax, 0xff0000
mov esi, dword [esp + 0xb4]
imul eax, ebp
add ecx, eax
mov eax, dword [esp + 0xb4]
or edx, ecx
shr edx, 8
mov ecx, dword [eax]
movzx eax, dl
and edx, 0xff0000
imul eax, dword [esi + 0xc]
imul edx, dword [esi + 4]
mov esi, dword [esp + 0x1c]
and eax, 0xff00
or eax, edx
shr eax, 8
movzx edx, al
and eax, 0xff0000
imul eax, ecx
imul edx, ecx
and edx, 0xff00
or edx, eax
mov eax, dword [esp + 0x28]
and eax, 0xff00
shr edx, 8
imul eax, ebx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x28]
and eax, 0xff00
imul eax, edi
mov edi, dword [esp + 0x20]
add ebx, eax
mov eax, dword [esp + 0x14]
and eax, 0xff00
imul eax, dword [esp + 0x24]
add ebx, eax
mov eax, dword [esi + edi*4]
and eax, 0xff00
mov esi, dword [esp + 0x58]
imul eax, ebp
movzx edi, dl
add ebx, eax
mov eax, dword [esp + 0xb4]
and ebx, 0xff0000
bswap ebx
imul ebx, dword [eax + 8]
and ebx, 0xff0000
bswap ebx
imul ebx, ecx
mov ecx, dword [esi]
mov eax, ecx
and eax, 0xff0000
add eax, edx
mov edx, 0xff
shr eax, 0x10
and ebx, 0xff0000
bswap ebx
mov dword [esp + 0x28], ebx
mov ebx, 0xff
cmp eax, ebx
cmovbe ebx, eax
mov eax, ecx
and eax, 0xff00
add eax, dword [esp + 0x28]
shr eax, 8
cmp eax, edx
cmovbe edx, eax
movzx eax, cl
add eax, edi
mov ecx, 0xff
cmp eax, ecx
cmovbe ecx, eax
or ebx, 0xffffff00
shl ebx, 8
or ebx, edx
mov ebp, dword [esp + 0x74]
add ebp, dword [esp + 0x48]
mov eax, dword [esp + 0x8c]
shl ebx, 8
or ebx, ecx
mov dword [esp + 0x74], ebp
mov dword [esi], ebx
add esi, 4
mov ebx, dword [esp + 0x68]
add ebx, dword [esp + 0x6c]
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x9c]
mov dword [esp + 0x68], ebx
test eax, eax
jg 0x455f80
mov ebx, dword [esp + 0xac]
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x94]
add ecx, eax
add dword [esp + 0x4c], eax
mov eax, dword [esp + 0x64]
lea edx, [ebx*4]
add dword [esp + 0x2c], edx
mov edx, dword [esp + 0x88]
add dword [esp + 0x40], edx
add eax, dword [esp + 0x38]
mov edx, dword [esp + 0x60]
add dword [esp + 0x44], edx
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x64], eax
test ebp, ebp
jg 0x455ee8
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x50]
sub dword [esp + 0x70], eax
je 0x456ab0
mov eax, dword [esp + 0x90]
mov ebx, dword [ecx + 4]
mov ebp, dword [ecx]
mov eax, dword [eax + 4]
sub eax, ebx
cdq
push edx
push eax
push 0x10000
push 0
call fcn.0059bbf0
mov edi, eax
mov ecx, edx
mov eax, dword [esp + 0x90]
mov eax, dword [eax]
sub eax, ebp
cdq
push edx
push eax
push ecx
push edi
call fcn.0059bca0
mov eax, dword [esp + 0x50]
mov ecx, edx
shl eax, 0x10
sub eax, ebx
mov dword [esp + 0x68], ecx
imul ecx
mov ecx, eax
shrd ecx, edx, 0x10
cmp dword [esp + 0x54], ebp
jge 0x4566df
mov ebx, dword [esp + 0x70]
test ebx, ebx
jle 0x456ab0
mov eax, dword [esp + 0x6c]
cdq
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x8c], edx
cdq
mov dword [esp + 0x78], eax
lea eax, [ecx + 0xffff]
mov ecx, dword [esp + 0x3c]
add eax, ebp
mov dword [esp + 0x7c], edx
mov dword [esp + 0x24], eax
nop word [eax + eax]
lea ebp, [ecx + 0xffff]
dec ebx
and ebp, 0xffff0000
mov dword [esp + 0x70], ebx
mov eax, ebp
sub eax, ecx
cdq
mov edi, edx
mov ebx, eax
push edi
push ebx
push dword [esp + 0x94]
push dword [esp + 0x8c]
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0x84]
shrd eax, edx, 0x10
push dword [esp + 0x84]
add eax, dword [esp + 0x50]
mov dword [esp + 0x6c], eax
call fcn.0059bca0
mov edi, eax
mov ecx, ebp
shrd edi, edx, 0x10
mov edx, dword [esp + 0x2c]
add edi, dword [esp + 0x44]
sar ecx, 0x10
lea eax, [edx + ecx*4]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x24]
sub eax, ebp
sar eax, 0x10
test eax, eax
jle 0x45668c
mov ebx, dword [esp + 0x5c]
lea ebp, [edi - 0x8000]
add ebx, 0xffff8000
mov dword [esp + 0x34], ebp
mov dword [esp + 0x58], ebx
dec eax
mov dword [esp + 0x5c], eax
test ebx, ebx
jle 0x4563f1
mov ecx, ebx
mov dword [esp + 0x38], ebx
sar ecx, 0x10
lea eax, [esi - 1]
xor edx, edx
cmp ecx, eax
setl dl
jmp 0x4563f9
xor eax, eax
xor edx, edx
mov dword [esp + 0x38], eax
test ebp, ebp
jle 0x456413
mov eax, dword [esp + 0x98]
mov ecx, ebp
sar ecx, 0x10
dec eax
xor edi, edi
cmp ecx, eax
cmovl edi, esi
jmp 0x456417
xor ebp, ebp
xor edi, edi
mov eax, dword [esp + 0x38]
sar eax, 0x10
mov ecx, dword [esp + 0x1c]
sar ebp, 0x10
imul ebp, esi
add ebp, eax
mov dword [esp + 0x54], ebp
lea eax, [edx + ebp]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x20], eax
lea eax, [edi + ebp]
mov ecx, dword [ecx + eax*4]
mov edi, ebx
add eax, edx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x1c]
and edi, 0xfffe
inc edi
mov edx, 0x10000
sub edx, edi
mov ebx, edx
mov eax, dword [ecx + eax*4]
mov ecx, 0x10000
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x34]
and eax, 0xfffe
inc eax
sub ecx, eax
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x1c]
imul ebx, ecx
mov eax, dword [eax + ebp*4]
mov ebp, edi
shr eax, 0x18
shr ebx, 0x10
imul ebx, eax
mov eax, dword [esp + 0x20]
shr eax, 0x18
imul ebp, ecx
mov ecx, dword [esp + 0x18]
shr ebx, 0x10
mov dword [esp + 0x50], ebx
mov ebx, ecx
imul ebx, edx
mov edx, dword [esp + 0x10]
shr ebp, 0x10
imul ebp, eax
mov eax, dword [esp + 0x14]
shr eax, 0x18
imul ecx, edi
shr ebx, 0x10
imul ebx, eax
mov eax, edx
shr eax, 0x18
and edx, 0xff0000
shr ebp, 0x10
shr ecx, 0x10
imul ecx, eax
mov eax, dword [esp + 0x14]
and eax, 0xff0000
shr ebx, 0x10
imul eax, ebx
shr ecx, 0x10
imul edx, ecx
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x1c]
add edx, eax
mov eax, dword [esp + 0x20]
and eax, 0xff0000
imul eax, ebp
add edx, eax
mov eax, dword [esp + 0x54]
mov eax, dword [ecx + eax*4]
and eax, 0xff0000
imul eax, dword [esp + 0x50]
add edx, eax
mov eax, dword [esp + 0x10]
movzx ecx, al
and edx, 0xff0000ff
imul ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
movzx eax, al
imul eax, ebx
mov edi, dword [esp + 0x54]
mov esi, dword [esp + 0x1c]
add ecx, eax
mov eax, dword [esp + 0x20]
movzx eax, al
imul eax, ebp
add ecx, eax
mov eax, dword [esi + edi*4]
movzx eax, al
imul eax, dword [esp + 0x50]
mov esi, dword [esp + 0xb4]
add ecx, eax
mov eax, dword [esi + 0xc]
and ecx, 0xff00
or edx, ecx
mov ecx, dword [esi]
shr edx, 8
imul eax, edx
and edx, 0xff0000
imul edx, dword [esi + 4]
and eax, 0xff00
or eax, edx
shr eax, 8
movzx edx, al
and eax, 0xff0000
imul eax, ecx
imul edx, ecx
and edx, 0xff00
or edx, eax
mov eax, dword [esp + 0x10]
and eax, 0xff00
shr edx, 8
imul eax, dword [esp + 0x18]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
and eax, 0xff00
imul eax, ebx
mov ebx, dword [esp + 0x10]
add ebx, eax
mov eax, dword [esp + 0x20]
and eax, 0xff00
imul eax, ebp
mov ebp, dword [esp + 0x1c]
add ebx, eax
mov eax, dword [ebp + edi*4]
and eax, 0xff00
movzx edi, dl
imul eax, dword [esp + 0x50]
add ebx, eax
and ebx, 0xff0000
bswap ebx
imul ebx, dword [esi + 8]
mov esi, dword [esp + 0x30]
and ebx, 0xff0000
bswap ebx
imul ebx, ecx
mov ecx, dword [esi]
mov eax, ecx
and eax, 0xff0000
add eax, edx
mov edx, 0xff
shr eax, 0x10
and ebx, 0xff0000
bswap ebx
mov dword [esp + 0x10], ebx
mov ebx, 0xff
cmp eax, ebx
cmovbe ebx, eax
mov eax, ecx
and eax, 0xff00
add eax, dword [esp + 0x10]
shr eax, 8
cmp eax, edx
cmovbe edx, eax
movzx eax, cl
add eax, edi
mov ecx, 0xff
cmp eax, ecx
cmovbe ecx, eax
mov ebp, dword [esp + 0x34]
or ebx, 0xffffff00
add ebp, dword [esp + 0x48]
mov eax, dword [esp + 0x5c]
shl ebx, 8
or ebx, edx
mov dword [esp + 0x34], ebp
shl ebx, 8
or ebx, ecx
mov dword [esi], ebx
add esi, 4
mov ebx, dword [esp + 0x58]
add ebx, dword [esp + 0x6c]
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x9c]
mov dword [esp + 0x58], ebx
test eax, eax
jg 0x4563d3
mov edx, dword [esp + 0xac]
mov eax, dword [esp + 0x68]
add dword [esp + 0x24], eax
mov ecx, dword [esp + 0x3c]
add ecx, dword [esp + 0x94]
lea eax, [edx*4]
add dword [esp + 0x2c], eax
mov eax, dword [esp + 0x88]
add dword [esp + 0x40], eax
mov eax, dword [esp + 0x60]
add dword [esp + 0x44], eax
mov ebx, dword [esp + 0x70]
mov dword [esp + 0x3c], ecx
test ebx, ebx
jg 0x456340
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x90
ret
jle 0x456ab0
mov ebx, dword [esp + 0x70]
test ebx, ebx
jle 0x456ab0
mov eax, dword [esp + 0x6c]
cdq
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x8c], edx
cdq
mov dword [esp + 0x78], eax
lea eax, [ecx + 0xffff]
add eax, ebp
mov dword [esp + 0x7c], edx
mov dword [esp + 0x74], eax
nop dword [eax]
mov ebp, eax
dec ebx
and ebp, 0xffff0000
mov dword [esp + 0x70], ebx
mov eax, ebp
sub eax, dword [esp + 0x3c]
cdq
mov edi, edx
mov ebx, eax
push edi
push ebx
push dword [esp + 0x94]
push dword [esp + 0x8c]
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0x84]
shrd eax, edx, 0x10
push dword [esp + 0x84]
add eax, dword [esp + 0x50]
mov dword [esp + 0x6c], eax
call fcn.0059bca0
mov edi, eax
mov ecx, ebp
shrd edi, edx, 0x10
mov edx, dword [esp + 0x2c]
add edi, dword [esp + 0x44]
sar ecx, 0x10
lea eax, [edx + ecx*4]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x3c]
sub eax, ebp
add eax, 0xffff
sar eax, 0x10
test eax, eax
jle 0x456a68
mov ebx, dword [esp + 0x5c]
lea ebp, [edi - 0x8000]
add ebx, 0xffff8000
mov dword [esp + 0x24], ebp
mov dword [esp + 0x58], ebx
dec eax
mov dword [esp + 0x5c], eax
test ebx, ebx
jle 0x4567d4
mov ecx, ebx
mov dword [esp + 0x38], ebx
sar ecx, 0x10
lea eax, [esi - 1]
xor edx, edx
cmp ecx, eax
setl dl
jmp 0x4567dc
xor eax, eax
xor edx, edx
mov dword [esp + 0x38], eax
test ebp, ebp
jle 0x4567f6
mov eax, dword [esp + 0x98]
mov ecx, ebp
sar ecx, 0x10
dec eax
xor edi, edi
cmp ecx, eax
cmovl edi, esi
jmp 0x4567fa
xor ebp, ebp
xor edi, edi
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x1c]
sar eax, 0x10
sar ebp, 0x10
imul ebp, esi
add ebp, eax
mov dword [esp + 0x50], ebp
lea eax, [edx + ebp]
mov eax, dword [ecx + eax*4]
mov dword [esp + 0x14], eax
lea eax, [edi + ebp]
mov ecx, dword [ecx + eax*4]
mov edi, ebx
add eax, edx
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x1c]
and edi, 0xfffe
inc edi
mov edx, 0x10000
sub edx, edi
mov ebx, edx
mov eax, dword [ecx + eax*4]
mov ecx, 0x10000
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x24]
and eax, 0xfffe
inc eax
sub ecx, eax
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x1c]
imul ebx, ecx
mov eax, dword [eax + ebp*4]
mov ebp, edi
shr eax, 0x18
shr ebx, 0x10
imul ebx, eax
mov eax, dword [esp + 0x14]
imul ebp, ecx
mov ecx, dword [esp + 0x54]
shr eax, 0x18
shr ebx, 0x10
mov dword [esp + 0x34], ebx
mov ebx, ecx
imul ebx, edx
mov edx, dword [esp + 0x10]
imul ecx, edi
shr ebp, 0x10
imul ebp, eax
mov eax, dword [esp + 0x18]
shr eax, 0x18
mov edi, dword [esp + 0x50]
shr ebx, 0x10
imul ebx, eax
mov eax, edx
shr eax, 0x18
shr ecx, 0x10
imul ecx, eax
mov eax, dword [esp + 0x18]
movzx eax, al
movzx edx, dl
shr ebx, 0x10
imul eax, ebx
shr ecx, 0x10
imul edx, ecx
shr ebp, 0x10
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x1c]
add edx, eax
mov eax, dword [esp + 0x14]
movzx eax, al
imul eax, ebp
add edx, eax
mov eax, dword [ecx + edi*4]
mov ecx, dword [esp + 0x10]
movzx eax, al
and ecx, 0xff0000
imul eax, dword [esp + 0x34]
add edx, eax
mov eax, dword [esp + 0x18]
and edx, 0xff00
imul ecx, dword [esp + 0x54]
and eax, 0xff0000
mov esi, dword [esp + 0x1c]
imul eax, ebx
add ecx, eax
mov eax, dword [esp + 0x14]
and eax, 0xff0000
imul eax, ebp
add ecx, eax
mov eax, edi
mov eax, dword [esi + eax*4]
and eax, 0xff0000
mov esi, dword [esp + 0xb4]
imul eax, dword [esp + 0x34]
add ecx, eax
or edx, ecx
mov ecx, dword [esi]
shr edx, 8
movzx eax, dl
and edx, 0xff0000
imul eax, dword [esi + 0xc]
imul edx, dword [esi + 4]
and eax, 0xff00
or eax, edx
shr eax, 8
movzx edx, al
and eax, 0xff0000
imul eax, ecx
imul edx, ecx
and edx, 0xff00
or edx, eax
mov eax, dword [esp + 0x10]
and eax, 0xff00
shr edx, 8
imul eax, dword [esp + 0x54]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x18]
and eax, 0xff00
imul eax, ebx
mov ebx, dword [esp + 0x10]
add ebx, eax
mov eax, dword [esp + 0x14]
and eax, 0xff00
imul eax, ebp
mov ebp, dword [esp + 0x1c]
add ebx, eax
mov eax, dword [ebp + edi*4]
and eax, 0xff00
movzx edi, dl
imul eax, dword [esp + 0x34]
add ebx, eax
and ebx, 0xff0000
bswap ebx
imul ebx, dword [esi + 8]
mov esi, dword [esp + 0x30]
and ebx, 0xff0000
bswap ebx
imul ebx, ecx
mov ecx, dword [esi]
mov eax, ecx
and eax, 0xff0000
add eax, edx
mov edx, 0xff
shr eax, 0x10
and ebx, 0xff0000
bswap ebx
mov dword [esp + 0x10], ebx
mov ebx, 0xff
cmp eax, ebx
cmovbe ebx, eax
mov eax, ecx
and eax, 0xff00
add eax, dword [esp + 0x10]
shr eax, 8
cmp eax, edx
cmovbe edx, eax
movzx eax, cl
add eax, edi
mov ecx, 0xff
cmp eax, ecx
cmovbe ecx, eax
or ebx, 0xffffff00
mov ebp, dword [esp + 0x24]
add ebp, dword [esp + 0x48]
mov eax, dword [esp + 0x5c]
shl ebx, 8
or ebx, edx
mov dword [esp + 0x24], ebp
shl ebx, 8
or ebx, ecx
mov dword [esi], ebx
add esi, 4
mov ebx, dword [esp + 0x58]
add ebx, dword [esp + 0x6c]
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x9c]
mov dword [esp + 0x58], ebx
test eax, eax
jg 0x4567b6
mov edx, dword [esp + 0xac]
mov eax, dword [esp + 0x94]
add dword [esp + 0x3c], eax
mov eax, dword [esp + 0x74]
add eax, dword [esp + 0x68]
lea ecx, [edx*4]
add dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x88]
add dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x60]
add dword [esp + 0x44], ecx
mov ebx, dword [esp + 0x70]
mov dword [esp + 0x74], eax
test ebx, ebx
jg 0x456720
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x90
ret