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

Disassembly:
sub esp, 0xd0
mov eax, dword [esp + 0xe0]
shr dword [esp + 0xdc], 1
push ebx
push ebp
mov ecx, dword [eax + 0x10]
push esi
mov esi, dword [esp + 0xe0]
mov edx, esi
mov dword [esp + 0xd0], ecx
mov ecx, dword [eax + 0x14]
mov eax, dword [eax]
mov dword [esp + 0xd4], ecx
lea ebp, [esi + 0x20]
mov ecx, dword [esi + 0x24]
lea ebx, [esi + 0x40]
cmp dword [esi + 4], ecx
mov ecx, dword [esi + 0x44]
cmovle edx, ebp
mov dword [esp + 0xd8], eax
cmovle ebp, esi
push edi
mov edi, ebx
cmp dword [edx + 4], ecx
mov ecx, ebp
mov eax, dword [ebp + 4]
cmovle ebx, edx
mov dword [esp + 0x14], ecx
cmovg edi, edx
mov dword [esp + 0xa8], ebx
mov dword [esp + 0x44], edi
cmp eax, dword [ebx + 4]
jle 0x437836
mov ecx, ebx
mov dword [esp + 0x14], ebx
mov ebx, ebp
mov dword [esp + 0xa8], ebp
mov esi, dword [esp + 0xf4]
mov eax, dword [ecx + 8]
imul eax, dword [esi]
shr eax, 8
mov dword [ecx + 8], eax
mov eax, dword [esi + 4]
imul eax, dword [ecx + 0xc]
shr eax, 8
mov dword [ecx + 0xc], eax
mov eax, dword [esi + 8]
imul eax, dword [ecx + 0x10]
shr eax, 8
mov dword [ecx + 0x10], eax
mov eax, dword [esi + 0xc]
imul eax, dword [ecx + 0x14]
shr eax, 8
mov dword [ecx + 0x14], eax
mov eax, dword [esi]
imul eax, dword [ebx + 8]
shr eax, 8
mov dword [ebx + 8], eax
mov eax, dword [esi + 4]
imul eax, dword [ebx + 0xc]
shr eax, 8
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 0x10]
imul eax, dword [esi + 8]
shr eax, 8
mov dword [ebx + 0x10], eax
mov eax, dword [ebx + 0x14]
imul eax, dword [esi + 0xc]
shr eax, 8
mov dword [ebx + 0x14], eax
mov eax, dword [esi]
imul eax, dword [edi + 8]
shr eax, 8
mov dword [edi + 8], eax
mov dword [esp + 0x1c], eax
mov eax, dword [esi + 4]
imul eax, dword [edi + 0xc]
shr eax, 8
mov dword [edi + 0xc], eax
mov dword [esp + 0x74], eax
mov eax, dword [edi + 0x10]
imul eax, dword [esi + 8]
shr eax, 8
mov dword [edi + 0x10], eax
mov dword [esp + 0x48], eax
mov eax, dword [edi + 0x14]
imul eax, dword [esi + 0xc]
shr eax, 8
mov dword [edi + 0x14], eax
mov dword [esp + 0xac], eax
mov eax, dword [ecx + 4]
mov ecx, dword [edi + 4]
mov dword [esp + 0x3c], eax
lea edx, [eax + 0xffff]
lea eax, [ecx + 0xffff]
sar edx, 0x10
sar eax, 0x10
mov dword [esp + 0x2c], edx
mov dword [esp + 0xa0], eax
cmp edx, eax
je 0x438c3c
mov ebp, dword [ebx + 4]
sub ecx, dword [esp + 0x3c]
lea eax, [ebp + 0xffff]
sar eax, 0x10
mov dword [esp + 0x6c], 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 + 0x14]
push edi
push ebx
mov ecx, dword [eax]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x28], ecx
mov eax, dword [eax]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x14]
push edi
mov dword [esp + 0xc0], edx
push ebx
mov ecx, dword [eax + 8]
mov eax, dword [esp + 0x24]
sub eax, ecx
mov dword [esp + 0x2c], ecx
cdq
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x14]
push edi
mov dword [esp + 0xd4], edx
push ebx
mov ecx, dword [eax + 0xc]
mov eax, dword [esp + 0x7c]
sub eax, ecx
mov dword [esp + 0x80], ecx
cdq
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x14]
push edi
mov dword [esp + 0xd0], edx
push ebx
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x50]
sub eax, ecx
mov dword [esp + 0x70], ecx
cdq
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x14]
push edi
mov dword [esp + 0xcc], edx
push ebx
mov ecx, dword [eax + 0x14]
mov eax, dword [esp + 0xb4]
sub eax, ecx
mov dword [esp + 0x6c], ecx
cdq
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x14]
mov dword [esp + 0xc4], edx
mov ecx, dword [eax + 0x18]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x48], ecx
mov eax, dword [eax + 0x18]
sub eax, ecx
push edi
cdq
push ebx
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x14]
push edi
mov dword [esp + 0xc4], edx
push ebx
mov ecx, dword [eax + 0x1c]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x7c], ecx
mov eax, dword [eax + 0x1c]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov edi, dword [esp + 0x3c]
sub ebp, edi
mov dword [esp + 0xac], edx
mov eax, ebp
cdq
mov ecx, eax
mov ebx, edx
mov eax, dword [esp + 0xbc]
cdq
push ebx
mov ebp, eax
mov dword [esp + 0x38], ecx
mov eax, edx
mov dword [esp + 0x34], ebx
push ecx
push eax
push ebp
mov dword [esp + 0x70], ebp
mov dword [esp + 0x20], eax
call fcn.0059bca0
mov ebp, dword [esp + 0xa8]
mov ecx, eax
mov ebx, dword [esp + 0x20]
shrd ecx, edx, 0x10
mov eax, dword [ebp]
add ecx, ebx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x1c], eax
cmp eax, ecx
je 0x438c3c
mov eax, dword [esp + 0x2c]
shl eax, 0x10
sub eax, edi
cdq
mov ecx, edx
mov dword [esp + 0x28], eax
push ecx
push eax
push dword [esp + 0x18]
mov dword [esp + 0x44], ecx
push dword [esp + 0x6c]
call fcn.0059bca0
push dword [esp + 0x38]
shrd eax, edx, 0x10
push dword [esp + 0x2c]
add eax, ebx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xd8]
cdq
mov edi, edx
mov ebx, eax
push edi
push ebx
call fcn.0059bca0
push dword [esp + 0x38]
shrd eax, edx, 0x10
push dword [esp + 0x2c]
add eax, dword [esp + 0x2c]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0xd4]
cdq
mov ecx, eax
mov eax, edx
push eax
push ecx
mov dword [esp + 0x80], ecx
mov dword [esp + 0x70], eax
call fcn.0059bca0
push dword [esp + 0x38]
shrd eax, edx, 0x10
push dword [esp + 0x2c]
add eax, dword [esp + 0x80]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0xd0]
cdq
mov ecx, eax
mov eax, edx
push eax
push ecx
mov dword [esp + 0x90], ecx
mov dword [esp + 0x8c], eax
call fcn.0059bca0
push dword [esp + 0x38]
shrd eax, edx, 0x10
push dword [esp + 0x2c]
add eax, dword [esp + 0x70]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0xcc]
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 + 0x38]
shrd eax, edx, 0x10
push dword [esp + 0x2c]
add eax, dword [esp + 0x6c]
mov dword [esp + 0x60], 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 + 0x48]
push dword [esp + 0x38]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0xb0]
push dword [esp + 0x2c]
cdq
mov ecx, eax
mov eax, edx
push eax
push ecx
mov dword [esp + 0xa8], ecx
mov dword [esp + 0xa4], eax
call fcn.0059bca0
shrd eax, edx, 0x10
add eax, dword [esp + 0x74]
mov dword [esp + 0x14], eax
mov eax, dword [ebp]
sub eax, dword [esp + 0x3c]
cdq
push edx
push eax
push 0x10000
push 0
call fcn.0059bbf0
push dword [esp + 0x30]
mov dword [esp + 0x14], eax
push dword [esp + 0x38]
mov dword [esp + 0x20], edx
push edi
push ebx
call fcn.0059bca0
push dword [esp + 0x18]
mov ecx, eax
mov edi, edx
mov eax, dword [ebp + 8]
push dword [esp + 0x14]
cdq
shrd ecx, edi, 0x10
mov ebp, eax
mov ebx, edx
mov eax, dword [esp + 0x2c]
sar edi, 0x10
sub ebp, ecx
cdq
sbb ebx, edi
sub ebp, eax
sbb ebx, edx
push ebx
push ebp
call fcn.0059bca0
push dword [esp + 0x30]
mov dword [esp + 0xa8], edx
push dword [esp + 0x38]
push dword [esp + 0x68]
push dword [esp + 0x7c]
call fcn.0059bca0
push dword [esp + 0x18]
mov ecx, eax
mov edi, edx
mov eax, dword [esp + 0xac]
push dword [esp + 0x14]
shrd ecx, edi, 0x10
mov eax, dword [eax + 0xc]
cdq
mov ebp, eax
sar edi, 0x10
mov eax, dword [esp + 0x80]
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 + 0x30]
mov dword [esp + 0x74], edx
push dword [esp + 0x38]
push dword [esp + 0x84]
push dword [esp + 0x8c]
call fcn.0059bca0
push dword [esp + 0x18]
mov ecx, eax
mov edi, edx
mov eax, dword [esp + 0xac]
push dword [esp + 0x14]
shrd ecx, edi, 0x10
mov eax, dword [eax + 0x10]
cdq
mov ebp, eax
sar edi, 0x10
mov eax, dword [esp + 0x70]
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 + 0x30]
mov dword [esp + 0x64], edx
push dword [esp + 0x38]
push dword [esp + 0x8c]
push dword [esp + 0x94]
call fcn.0059bca0
push dword [esp + 0x18]
mov ecx, eax
mov edi, edx
mov eax, dword [esp + 0xac]
push dword [esp + 0x14]
shrd ecx, edi, 0x10
mov eax, dword [eax + 0x14]
cdq
mov ebp, eax
sar edi, 0x10
mov eax, dword [esp + 0x6c]
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 + 0x30]
mov dword [esp + 0x68], edx
push dword [esp + 0x38]
push dword [esp + 0x94]
push dword [esp + 0x9c]
call fcn.0059bca0
push dword [esp + 0x18]
mov ecx, eax
mov edi, edx
mov eax, dword [esp + 0xac]
push dword [esp + 0x14]
shrd ecx, edi, 0x10
mov eax, dword [eax + 0x18]
cdq
mov ebp, eax
sar edi, 0x10
mov eax, dword [esp + 0x50]
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 + 0x30]
mov dword [esp + 0x6c], edx
push dword [esp + 0x38]
push dword [esp + 0x9c]
push dword [esp + 0xa4]
call fcn.0059bca0
mov ecx, eax
mov edi, edx
mov eax, dword [esp + 0xa8]
push dword [esp + 0x18]
shrd ecx, edi, 0x10
push dword [esp + 0x14]
mov eax, dword [eax + 0x1c]
cdq
mov ebp, eax
sar edi, 0x10
mov eax, dword [esp + 0x7c]
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 + 0x2c]
mov ebp, edx
imul ecx, dword [esp + 0xec]
mov eax, dword [esp + 0xe8]
mov dword [esp + 0x78], ebp
lea eax, [eax + ecx*2]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x6c]
sub eax, dword [esp + 0x2c]
mov dword [esp + 0x10], eax
je 0x438536
push dword [esp + 0x30]
mov eax, dword [esp + 0x20]
push dword [esp + 0x38]
sub eax, dword [esp + 0x28]
cdq
push 0x10000
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 + 0x38]
mov eax, edx
push dword [esp + 0x2c]
mov dword [esp + 0x7c], eax
cdq
push edx
push eax
call fcn.0059bca0
mov edi, eax
mov eax, dword [esp + 0x1c]
shrd edi, edx, 0x10
add edi, dword [esp + 0x20]
cmp dword [esp + 0x3c], eax
jge 0x4381d9
mov ebx, dword [esp + 0x10]
test ebx, ebx
jle 0x438536
mov eax, dword [esp + 0xa4]
cdq
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x98], edx
cdq
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x90], edx
cdq
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x88], edx
cdq
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x80], edx
cdq
mov dword [esp + 0xb0], eax
mov eax, ebp
mov dword [esp + 0x48], edx
cdq
mov dword [esp + 0xb8], eax
lea eax, [edi + 0xffff]
mov dword [esp + 0xb4], edx
lea edx, [ecx + 0xffff]
mov dword [esp + 0x24], eax
mov dword [esp + 0x2c], edx
mov ebp, edx
dec ebx
and ebp, 0xffff0000
mov dword [esp + 0x10], ebx
mov eax, ebp
sub eax, ecx
cdq
mov edi, edx
mov ebx, eax
push edi
push ebx
push dword [esp + 0xa0]
push dword [esp + 0xa0]
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0x98]
shrd eax, edx, 0x10
push dword [esp + 0x98]
add eax, dword [esp + 0x5c]
mov dword [esp + 0x30], eax
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0x90]
shrd eax, edx, 0x10
push dword [esp + 0x90]
add eax, dword [esp + 0x60]
mov dword [esp + 0x38], eax
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0x88]
shrd eax, edx, 0x10
push dword [esp + 0x88]
add eax, dword [esp + 0x64]
mov dword [esp + 0x48], eax
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0x50]
shrd eax, edx, 0x10
push dword [esp + 0xbc]
add eax, dword [esp + 0x68]
mov dword [esp + 0x44], eax
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0xbc]
shrd eax, edx, 0x10
push dword [esp + 0xc4]
add eax, dword [esp + 0x6c]
mov dword [esp + 0x40], eax
call fcn.0059bca0
mov ecx, eax
mov eax, ebp
shrd ecx, edx, 0x10
mov edx, dword [esp + 0x18]
add ecx, dword [esp + 0x14]
sar eax, 0x10
mov dword [esp + 0x1c], ecx
lea eax, [edx + eax*2]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x24]
sub eax, ebp
sar eax, 0x10
test eax, eax
jle 0x438152
mov ebp, dword [esp + 0x9c]
nop word [eax + eax]
dec eax
shr ecx, 0x10
imul ecx, dword [esp + 0xd4]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x30]
shr eax, 0x10
add ecx, eax
cmp ecx, dword [esp + 0xd8]
jae 0x438051
mov eax, dword [esp + 0xdc]
mov ebx, dword [eax + ecx*4]
jmp 0x438053
xor ebx, ebx
mov eax, dword [esi]
mov ecx, ebx
imul eax, dword [esp + 0x20]
and ecx, 0xff00
mov edx, dword [esi + 0xc]
imul edx, dword [esp + 0x34]
shr eax, 0x18
imul edi, eax, 0xff
shr edx, 0x18
movzx eax, bl
and ebx, 0xff0000
imul edx, eax
mov eax, dword [esi + 4]
imul eax, dword [esp + 0x28]
shr edi, 8
and edx, 0xff00
shr eax, 0x18
imul eax, ebx
or edx, eax
mov eax, dword [esi + 8]
imul eax, dword [esp + 0x38]
shr edx, 8
mov ebx, edx
and ebx, 0xff0000
imul ebx, edi
shr eax, 0x18
imul eax, ecx
movzx ecx, dl
imul ecx, edi
shr ebx, 0x10
and ebx, 0xf800
and eax, 0xff0000
bswap eax
imul eax, edi
movzx edi, word [ebp]
mov edx, edi
shr ecx, 0xb
and edx, 0x7e0
shr eax, 0xd
and eax, 0x7e0
add edx, eax
mov eax, edi
and eax, 0x1f
shr edx, 5
add eax, ecx
and edi, 0xf800
mov ecx, dword [esp + 0x1c]
add edi, ebx
add ecx, dword [esp + 0x78]
shr eax, 5
or edx, eax
shr edi, 5
mov eax, dword [esp + 0xa4]
or edx, edi
add dword [esp + 0x20], eax
mov eax, dword [esp + 0x70]
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x60]
add dword [esp + 0x38], eax
mov eax, dword [esp + 0x64]
add dword [esp + 0x34], eax
mov eax, dword [esp + 0x68]
add dword [esp + 0x30], eax
mov eax, dword [esp + 0x9c]
mov word [ebp], dx
add ebp, 2
mov dword [esp + 0x1c], ecx
test eax, eax
jg 0x438020
mov ebx, dword [esp + 0xec]
mov eax, dword [esp + 0x74]
add dword [esp + 0x24], eax
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x2c]
lea eax, [ebx + ebx]
add dword [esp + 0x18], eax
mov eax, dword [esp + 0xd0]
add dword [esp + 0x4c], eax
mov eax, dword [esp + 0xcc]
add dword [esp + 0x50], eax
mov eax, dword [esp + 0xc8]
add dword [esp + 0x54], eax
mov eax, dword [esp + 0xc4]
add dword [esp + 0x58], eax
mov eax, dword [esp + 0xc0]
add dword [esp + 0x5c], eax
add ecx, dword [esp + 0xbc]
add edx, dword [esp + 0xbc]
mov eax, dword [esp + 0xac]
add dword [esp + 0x14], eax
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x2c], edx
test ebx, ebx
jg 0x437f11
jmp 0x438532
jle 0x438536
mov ebx, dword [esp + 0x10]
test ebx, ebx
jle 0x438536
mov eax, dword [esp + 0xa4]
cdq
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x9c], edx
cdq
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x98], edx
cdq
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x90], edx
cdq
mov dword [esp + 0x84], eax
mov eax, ebp
mov dword [esp + 0x88], edx
cdq
mov dword [esp + 0x7c], eax
lea eax, [ecx + 0xffff]
mov dword [esp + 0x30], eax
lea eax, [edi + 0xffff]
mov dword [esp + 0x80], edx
mov dword [esp + 0x2c], eax
mov ebp, eax
dec ebx
and ebp, 0xffff0000
mov dword [esp + 0x10], ebx
mov eax, ebp
sub eax, ecx
cdq
mov edi, edx
mov ebx, eax
push edi
push ebx
push dword [esp + 0xa4]
push dword [esp + 0xc4]
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0xbc]
shrd eax, edx, 0x10
push dword [esp + 0xbc]
add eax, dword [esp + 0x5c]
mov dword [esp + 0x34], eax
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0xa0]
shrd eax, edx, 0x10
push dword [esp + 0xa0]
add eax, dword [esp + 0x60]
mov dword [esp + 0x30], eax
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0x98]
shrd eax, edx, 0x10
push dword [esp + 0x98]
add eax, dword [esp + 0x64]
mov dword [esp + 0x38], eax
call fcn.0059bca0
push edi
push ebx
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
push edi
push ebx
push dword [esp + 0x88]
shrd eax, edx, 0x10
push dword [esp + 0x88]
add eax, dword [esp + 0x6c]
mov dword [esp + 0x44], eax
call fcn.0059bca0
mov ecx, eax
mov eax, ebp
shrd ecx, edx, 0x10
mov edx, dword [esp + 0x18]
add ecx, dword [esp + 0x14]
sar eax, 0x10
mov dword [esp + 0x1c], ecx
lea eax, [edx + eax*2]
mov edx, dword [esp + 0x30]
mov dword [esp + 0x48], eax
mov eax, edx
sub eax, ebp
sar eax, 0x10
test eax, eax
jle 0x4384b0
mov ebp, dword [esp + 0x48]
nop dword [eax + eax]
dec eax
shr ecx, 0x10
imul ecx, dword [esp + 0xd4]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x34]
shr eax, 0x10
add ecx, eax
cmp ecx, dword [esp + 0xd8]
jae 0x4383ae
mov eax, dword [esp + 0xdc]
mov ebx, dword [eax + ecx*4]
jmp 0x4383b0
xor ebx, ebx
mov eax, dword [esi]
mov ecx, ebx
imul eax, dword [esp + 0x24]
and ecx, 0xff00
mov edx, dword [esi + 0xc]
imul edx, dword [esp + 0x38]
shr eax, 0x18
imul edi, eax, 0xff
shr edx, 0x18
movzx eax, bl
and ebx, 0xff0000
imul edx, eax
mov eax, dword [esi + 4]
imul eax, dword [esp + 0x20]
shr edi, 8
and edx, 0xff00
shr eax, 0x18
imul eax, ebx
or edx, eax
mov eax, dword [esi + 8]
imul eax, dword [esp + 0x28]
shr edx, 8
mov ebx, edx
and ebx, 0xff0000
imul ebx, edi
shr eax, 0x18
imul eax, ecx
movzx ecx, dl
imul ecx, edi
shr ebx, 0x10
and ebx, 0xf800
and eax, 0xff0000
bswap eax
imul eax, edi
movzx edi, word [ebp]
mov edx, edi
shr ecx, 0xb
and edx, 0x7e0
shr eax, 0xd
and eax, 0x7e0
add edx, eax
mov eax, edi
and eax, 0x1f
shr edx, 5
add eax, ecx
and edi, 0xf800
mov ecx, dword [esp + 0x1c]
add edi, ebx
add ecx, dword [esp + 0x78]
shr eax, 5
or edx, eax
shr edi, 5
mov eax, dword [esp + 0xa4]
or edx, edi
add dword [esp + 0x24], eax
mov eax, dword [esp + 0x70]
add dword [esp + 0x20], eax
mov eax, dword [esp + 0x60]
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x64]
add dword [esp + 0x38], eax
mov eax, dword [esp + 0x68]
add dword [esp + 0x34], eax
mov eax, dword [esp + 0x48]
mov word [ebp], dx
add ebp, 2
mov dword [esp + 0x1c], ecx
test eax, eax
jg 0x438380
mov edx, dword [esp + 0x30]
add edx, dword [esp + 0xbc]
mov ebx, dword [esp + 0xec]
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x2c]
add ecx, dword [esp + 0xbc]
add eax, dword [esp + 0x74]
mov dword [esp + 0x30], edx
lea edx, [ebx + ebx]
add dword [esp + 0x18], edx
mov edx, dword [esp + 0xd0]
add dword [esp + 0x4c], edx
mov edx, dword [esp + 0xcc]
add dword [esp + 0x50], edx
mov edx, dword [esp + 0xc8]
add dword [esp + 0x54], edx
mov edx, dword [esp + 0xc4]
add dword [esp + 0x58], edx
mov edx, dword [esp + 0xc0]
add dword [esp + 0x5c], edx
mov edx, dword [esp + 0xac]
add dword [esp + 0x14], edx
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x2c], eax
test ebx, ebx
jg 0x438273
mov ebp, dword [esp + 0x78]
mov eax, dword [esp + 0x6c]
sub dword [esp + 0xa0], eax
je 0x438c3c
mov eax, dword [esp + 0xa8]
mov ebx, dword [eax + 4]
mov eax, dword [eax]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x44]
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 + 0x44]
mov eax, dword [eax]
sub eax, dword [esp + 0x1c]
cdq
push edx
push eax
push ecx
push edi
call fcn.0059bca0
mov eax, dword [esp + 0x6c]
mov ecx, edx
shl eax, 0x10
sub eax, ebx
mov dword [esp + 0x48], ecx
imul ecx
mov edi, eax
mov eax, dword [esp + 0x1c]
shrd edi, edx, 0x10
add edi, eax
cmp dword [esp + 0x3c], eax
jge 0x4388f7
mov ebx, dword [esp + 0xa0]
test ebx, ebx
jle 0x438c3c
mov eax, dword [esp + 0xa4]
cdq
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x9c], edx
cdq
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x98], edx
cdq
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x90], edx
cdq
mov dword [esp + 0x84], eax
mov eax, ebp
mov dword [esp + 0x88], edx
cdq
mov dword [esp + 0x7c], eax
lea eax, [edi + 0xffff]
mov dword [esp + 0x80], edx
mov dword [esp + 0x10], eax
nop dword [eax + eax]
lea ebp, [ecx + 0xffff]
dec ebx
and ebp, 0xffff0000
mov dword [esp + 0xa0], ebx
mov eax, ebp
sub eax, ecx
cdq
mov edi, edx
mov ebx, eax
push edi
push ebx
push dword [esp + 0xa4]
push dword [esp + 0xc4]
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0xbc]
shrd eax, edx, 0x10
push dword [esp + 0xbc]
add eax, dword [esp + 0x5c]
mov dword [esp + 0x4c], eax
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0xa0]
shrd eax, edx, 0x10
push dword [esp + 0xa0]
add eax, dword [esp + 0x60]
mov dword [esp + 0x7c], eax
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0x98]
shrd eax, edx, 0x10
push dword [esp + 0x98]
add eax, dword [esp + 0x64]
mov dword [esp + 0x34], eax
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0x90]
shrd eax, edx, 0x10
push dword [esp + 0x90]
add eax, dword [esp + 0x68]
mov dword [esp + 0x30], eax
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0x88]
shrd eax, edx, 0x10
push dword [esp + 0x88]
add eax, dword [esp + 0x6c]
mov dword [esp + 0x54], eax
call fcn.0059bca0
mov ebx, eax
mov ecx, ebp
mov eax, dword [esp + 0x10]
shrd ebx, edx, 0x10
mov edx, dword [esp + 0x18]
sub eax, ebp
add ebx, dword [esp + 0x14]
sar ecx, 0x10
sar eax, 0x10
mov dword [esp + 0x1c], ebx
lea ecx, [edx + ecx*2]
mov dword [esp + 0x2c], ecx
test eax, eax
jle 0x438876
mov ebp, ecx
dec eax
mov ecx, ebx
shr ecx, 0x10
imul ecx, dword [esp + 0xd4]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x44]
shr eax, 0x10
add ecx, eax
cmp ecx, dword [esp + 0xd8]
jae 0x438778
mov eax, dword [esp + 0xdc]
mov ebx, dword [eax + ecx*4]
jmp 0x43877a
xor ebx, ebx
mov eax, dword [esi]
mov ecx, ebx
imul eax, dword [esp + 0x3c]
and ecx, 0xff00
mov edx, dword [esi + 0xc]
imul edx, dword [esp + 0x20]
shr eax, 0x18
imul edi, eax, 0xff
shr edx, 0x18
movzx eax, bl
and ebx, 0xff0000
imul edx, eax
mov eax, dword [esi + 4]
imul eax, dword [esp + 0x6c]
shr edi, 8
and edx, 0xff00
shr eax, 0x18
imul eax, ebx
or edx, eax
mov eax, dword [esi + 8]
imul eax, dword [esp + 0x24]
shr edx, 8
mov ebx, edx
and ebx, 0xff0000
imul ebx, edi
shr eax, 0x18
imul eax, ecx
movzx ecx, dl
imul ecx, edi
shr ebx, 0x10
and ebx, 0xf800
and eax, 0xff0000
bswap eax
imul eax, edi
movzx edi, word [ebp]
mov edx, edi
shr ecx, 0xb
and edx, 0x7e0
shr eax, 0xd
and eax, 0x7e0
add edx, eax
mov eax, edi
and eax, 0x1f
shr edx, 5
add eax, ecx
and edi, 0xf800
shr eax, 5
add edi, ebx
mov ebx, dword [esp + 0x1c]
or edx, eax
mov eax, dword [esp + 0xa4]
add dword [esp + 0x3c], eax
mov eax, dword [esp + 0x70]
add dword [esp + 0x6c], eax
mov eax, dword [esp + 0x60]
add dword [esp + 0x24], eax
mov eax, dword [esp + 0x64]
add dword [esp + 0x20], eax
mov eax, dword [esp + 0x68]
add dword [esp + 0x44], eax
add ebx, dword [esp + 0x78]
mov eax, dword [esp + 0x2c]
shr edi, 5
or edx, edi
mov dword [esp + 0x1c], ebx
mov word [ebp], dx
add ebp, 2
test eax, eax
jg 0x438748
mov edx, dword [esp + 0xec]
mov eax, dword [esp + 0x48]
add dword [esp + 0x10], eax
mov ecx, dword [esp + 0x40]
add ecx, dword [esp + 0xbc]
lea eax, [edx + edx]
add dword [esp + 0x18], eax
mov eax, dword [esp + 0xd0]
add dword [esp + 0x4c], eax
mov eax, dword [esp + 0xcc]
add dword [esp + 0x50], eax
mov eax, dword [esp + 0xc8]
add dword [esp + 0x54], eax
mov eax, dword [esp + 0xc4]
add dword [esp + 0x58], eax
mov eax, dword [esp + 0xc0]
add dword [esp + 0x5c], eax
mov eax, dword [esp + 0xac]
add dword [esp + 0x14], eax
mov ebx, dword [esp + 0xa0]
mov dword [esp + 0x40], ecx
test ebx, ebx
jg 0x438640
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd0
ret
jle 0x438c3c
mov ecx, dword [esp + 0xa0]
test ecx, ecx
jle 0x438c3c
mov eax, dword [esp + 0xa4]
cdq
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x9c], edx
cdq
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x98], edx
cdq
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x90], edx
cdq
mov dword [esp + 0x84], eax
mov eax, ebp
mov dword [esp + 0x88], edx
cdq
mov dword [esp + 0x7c], eax
lea eax, [edi + 0xffff]
mov dword [esp + 0x80], edx
mov dword [esp + 0x10], eax
mov ebp, eax
dec ecx
and ebp, 0xffff0000
mov dword [esp + 0xa0], ecx
mov eax, ebp
sub eax, dword [esp + 0x40]
cdq
mov edi, edx
mov ebx, eax
push edi
push ebx
push dword [esp + 0xa4]
push dword [esp + 0xc4]
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0xbc]
shrd eax, edx, 0x10
push dword [esp + 0xbc]
add eax, dword [esp + 0x5c]
mov dword [esp + 0x4c], eax
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0xa0]
shrd eax, edx, 0x10
push dword [esp + 0xa0]
add eax, dword [esp + 0x60]
mov dword [esp + 0x7c], eax
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0x98]
shrd eax, edx, 0x10
push dword [esp + 0x98]
add eax, dword [esp + 0x64]
mov dword [esp + 0x34], eax
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0x90]
shrd eax, edx, 0x10
push dword [esp + 0x90]
add eax, dword [esp + 0x68]
mov dword [esp + 0x30], eax
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0x88]
shrd eax, edx, 0x10
push dword [esp + 0x88]
add eax, dword [esp + 0x6c]
mov dword [esp + 0x54], eax
call fcn.0059bca0
mov ebx, eax
mov ecx, ebp
mov eax, dword [esp + 0x40]
shrd ebx, edx, 0x10
mov edx, dword [esp + 0x18]
sub eax, ebp
add ebx, dword [esp + 0x14]
add eax, 0xffff
sar ecx, 0x10
sar eax, 0x10
mov dword [esp + 0x74], ebx
lea ecx, [edx + ecx*2]
mov dword [esp + 0x2c], ecx
test eax, eax
jle 0x438bc6
nop
dec eax
mov ecx, ebx
shr ecx, 0x10
imul ecx, dword [esp + 0xd4]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x44]
shr eax, 0x10
add ecx, eax
cmp ecx, dword [esp + 0xd8]
jae 0x438ac0
mov eax, dword [esp + 0xdc]
mov ecx, dword [eax + ecx*4]
jmp 0x438ac2
xor ecx, ecx
mov ebx, dword [esi + 4]
mov edx, ecx
imul ebx, dword [esp + 0x6c]
and edx, 0xff00
mov eax, dword [esi]
imul eax, dword [esp + 0x3c]
mov dword [esp + 0x1c], ecx
and ecx, 0xff0000
shr ebx, 0x18
imul ebx, ecx
mov ecx, dword [esi + 0xc]
imul ecx, dword [esp + 0x20]
shr eax, 0x18
imul edi, eax, 0xff
mov eax, dword [esp + 0x1c]
movzx eax, al
shr ecx, 0x18
imul ecx, eax
mov eax, dword [esi + 8]
imul eax, dword [esp + 0x24]
shr edi, 8
or ebx, ecx
shr ebx, 8
shr eax, 0x18
mov ebp, ebx
imul eax, edx
and ebp, 0xff0000
movzx ecx, bl
mov ebx, dword [esp + 0x2c]
imul ebp, edi
imul ecx, edi
and eax, 0xff0000
bswap eax
imul eax, edi
movzx edi, word [ebx]
mov edx, edi
shr ecx, 0xb
and edx, 0x7e0
shr ebp, 0x10
and ebp, 0xf800
shr eax, 0xd
and eax, 0x7e0
add edx, eax
mov eax, edi
and eax, 0x1f
shr edx, 5
add eax, ecx
and edi, 0xf800
shr eax, 5
add edi, ebp
or edx, eax
shr edi, 5
mov eax, dword [esp + 0xa4]
or edx, edi
add dword [esp + 0x3c], eax
mov eax, dword [esp + 0x70]
add dword [esp + 0x6c], eax
mov eax, dword [esp + 0x60]
add dword [esp + 0x24], eax
mov eax, dword [esp + 0x64]
add dword [esp + 0x20], eax
mov eax, dword [esp + 0x68]
add dword [esp + 0x44], eax
mov eax, dword [esp + 0x28]
mov word [ebx], dx
add ebx, 2
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x74]
add ebx, dword [esp + 0x78]
mov dword [esp + 0x74], ebx
test eax, eax
jg 0x438a90
mov edx, dword [esp + 0xec]
mov eax, dword [esp + 0xbc]
add dword [esp + 0x40], eax
mov eax, dword [esp + 0x10]
add eax, dword [esp + 0x48]
lea ecx, [edx + edx]
add dword [esp + 0x18], ecx
mov ecx, dword [esp + 0xd0]
add dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0xcc]
add dword [esp + 0x50], ecx
mov ecx, dword [esp + 0xc8]
add dword [esp + 0x54], ecx
mov ecx, dword [esp + 0xc4]
add dword [esp + 0x58], ecx
mov ecx, dword [esp + 0xc0]
add dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0xac]
add dword [esp + 0x14], ecx
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0x10], eax
test ecx, ecx
jg 0x438986
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd0
ret