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

Disassembly:
sub esp, 0xe8
shr dword [esp + 0xf4], 1
push ebx
push ebp
push esi
mov esi, dword [esp + 0x104]
push edi
mov edi, dword [esp + 0xfc]
mov edx, edi
mov eax, dword [esi + 0x10]
mov dword [esp + 0xb0], eax
mov ecx, dword [edi + 4]
lea ebx, [edi + 0x20]
cmp ecx, dword [edi + 0x24]
lea ebp, [edi + 0x40]
mov eax, dword [esi + 0x18]
mov esi, dword [esi]
cmovle edx, ebx
cmovle ebx, edi
mov dword [esp + 0xf4], eax
mov eax, dword [edi + 0x44]
mov ecx, ebx
mov edi, ebp
mov dword [esp + 0x20], ecx
cmp dword [edx + 4], eax
mov eax, dword [ebx + 4]
cmovle ebp, edx
cmovg edi, edx
mov dword [esp + 0x8c], edi
mov dword [esp + 0x40], ebp
cmp eax, dword [ebp + 4]
jle 0x43465c
mov ecx, ebp
mov dword [esp + 0x20], ebp
mov ebp, ebx
mov dword [esp + 0x40], ebx
mov ebx, dword [ecx + 4]
mov edx, dword [edi + 4]
mov dword [esp + 0x24], ebx
lea ecx, [ebx + 0xffff]
lea eax, [edx + 0xffff]
sar ecx, 0x10
sar eax, 0x10
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x9c], eax
cmp ecx, eax
je 0x436162
mov ebp, dword [ebp + 4]
sub edx, ebx
lea eax, [ebp + 0xffff]
sar eax, 0x10
mov dword [esp + 0x74], eax
mov eax, edx
cdq
push edx
push eax
push 0x10000
push 0
call fcn.0059bbf0
mov ebx, eax
mov edi, edx
mov eax, dword [esp + 0x20]
push edi
push ebx
mov ecx, dword [eax]
mov eax, dword [esp + 0x94]
mov dword [esp + 0x90], ecx
mov eax, dword [eax]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x20]
push edi
mov dword [esp + 0xe8], edx
push ebx
mov ecx, dword [eax + 8]
mov eax, dword [esp + 0x94]
mov dword [esp + 0x38], ecx
mov eax, dword [eax + 8]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x20]
push edi
mov dword [esp + 0xe4], edx
push ebx
mov ecx, dword [eax + 0xc]
mov eax, dword [esp + 0x94]
mov dword [esp + 0x3c], ecx
mov eax, dword [eax + 0xc]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x20]
push edi
mov dword [esp + 0xdc], edx
push ebx
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x94]
mov dword [esp + 0x40], ecx
mov eax, dword [eax + 0x10]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x20]
push edi
mov dword [esp + 0xf4], edx
push ebx
mov ecx, dword [eax + 0x14]
mov eax, dword [esp + 0x94]
mov dword [esp + 0x58], ecx
mov eax, dword [eax + 0x14]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x20]
mov dword [esp + 0xec], edx
mov ecx, dword [eax + 0x18]
mov eax, dword [esp + 0x8c]
push edi
push ebx
mov dword [esp + 0x80], ecx
mov eax, dword [eax + 0x18]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov eax, dword [esp + 0x20]
push edi
mov dword [esp + 0xec], edx
push ebx
mov ecx, dword [eax + 0x1c]
mov eax, dword [esp + 0x94]
mov dword [esp + 0x8c], ecx
mov eax, dword [eax + 0x1c]
sub eax, ecx
cdq
push edx
push eax
call fcn.0059bca0
mov edi, dword [esp + 0x24]
sub ebp, edi
mov dword [esp + 0xdc], edx
mov eax, ebp
cdq
mov ecx, eax
mov ebx, edx
mov eax, dword [esp + 0xe4]
cdq
mov ebp, eax
mov dword [esp + 0x18], ecx
mov eax, edx
mov dword [esp + 0x3c], ebx
push eax
push ebp
push ebx
push ecx
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x34], eax
call fcn.0059bca0
mov ebx, dword [esp + 0x88]
mov ecx, eax
mov eax, dword [esp + 0x40]
shrd ecx, edx, 0x10
add ecx, ebx
mov ebp, dword [eax]
mov dword [esp + 0x70], ecx
cmp ebp, ecx
je 0x436162
mov eax, dword [esp + 0x4c]
push dword [esp + 0x24]
shl eax, 0x10
push dword [esp + 0x30]
sub eax, edi
cdq
mov ecx, edx
mov dword [esp + 0x18], eax
push ecx
push eax
mov dword [esp + 0x2c], ecx
call fcn.0059bca0
shrd eax, edx, 0x10
add eax, ebx
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0xe0]
cdq
mov edi, edx
mov ebx, eax
push edi
push ebx
push dword [esp + 0x24]
push dword [esp + 0x1c]
call fcn.0059bca0
shrd eax, edx, 0x10
add eax, dword [esp + 0x30]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0xd8]
cdq
mov ecx, eax
mov eax, edx
push eax
push ecx
push dword [esp + 0x24]
mov dword [esp + 0x38], ecx
push dword [esp + 0x1c]
mov dword [esp + 0x34], eax
call fcn.0059bca0
shrd eax, edx, 0x10
add eax, dword [esp + 0x34]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0xf0]
cdq
mov ecx, eax
mov eax, edx
push eax
push ecx
push dword [esp + 0x24]
mov dword [esp + 0x50], ecx
push dword [esp + 0x1c]
mov dword [esp + 0x68], eax
call fcn.0059bca0
shrd eax, edx, 0x10
add eax, dword [esp + 0x38]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0xec]
cdq
mov ecx, eax
mov eax, edx
push eax
push ecx
push dword [esp + 0x24]
mov dword [esp + 0x8c], ecx
push dword [esp + 0x1c]
mov dword [esp + 0x8c], eax
call fcn.0059bca0
shrd eax, edx, 0x10
add eax, dword [esp + 0x50]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0xe8]
cdq
mov ecx, eax
mov eax, edx
push eax
push ecx
push dword [esp + 0x24]
mov dword [esp + 0x9c], ecx
push dword [esp + 0x1c]
mov dword [esp + 0x58], eax
call fcn.0059bca0
shrd eax, edx, 0x10
add eax, dword [esp + 0x78]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0xdc]
cdq
mov ecx, eax
mov eax, edx
push eax
push ecx
push dword [esp + 0x24]
mov dword [esp + 0xa4], ecx
push dword [esp + 0x1c]
mov dword [esp + 0xa4], eax
call fcn.0059bca0
shrd eax, edx, 0x10
add eax, dword [esp + 0x84]
mov dword [esp + 0x20], eax
mov eax, ebp
sub eax, dword [esp + 0x70]
cdq
push edx
push eax
push 0x10000
push 0
call fcn.0059bbf0
push edi
push ebx
push dword [esp + 0x44]
mov dword [esp + 0x20], eax
push dword [esp + 0x24]
mov dword [esp + 0x38], edx
call fcn.0059bca0
push dword [esp + 0x28]
mov ecx, eax
mov edi, edx
mov eax, dword [esp + 0x44]
push dword [esp + 0x18]
shrd ecx, edi, 0x10
mov eax, dword [eax + 8]
cdq
mov ebp, eax
sar edi, 0x10
mov eax, dword [esp + 0x38]
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 + 0x24]
mov dword [esp + 0xb0], edx
push dword [esp + 0x30]
push dword [esp + 0x44]
push dword [esp + 0x24]
call fcn.0059bca0
push dword [esp + 0x28]
mov ecx, eax
mov edi, edx
mov eax, dword [esp + 0x44]
push dword [esp + 0x18]
shrd ecx, edi, 0x10
mov eax, dword [eax + 0xc]
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 + 0x58]
mov dword [esp + 0xac], edx
push dword [esp + 0x48]
push dword [esp + 0x44]
push dword [esp + 0x24]
call fcn.0059bca0
push dword [esp + 0x28]
mov ecx, eax
mov edi, edx
mov eax, dword [esp + 0x44]
push dword [esp + 0x18]
shrd ecx, edi, 0x10
mov eax, dword [eax + 0x10]
cdq
mov ebp, eax
sar edi, 0x10
mov eax, dword [esp + 0x40]
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 + 0x7c]
mov dword [esp + 0xa8], edx
push dword [esp + 0x84]
push dword [esp + 0x44]
push dword [esp + 0x24]
call fcn.0059bca0
push dword [esp + 0x28]
mov ecx, eax
mov edi, edx
mov eax, dword [esp + 0x44]
push dword [esp + 0x18]
shrd ecx, edi, 0x10
mov eax, dword [eax + 0x14]
cdq
mov ebp, eax
sar edi, 0x10
mov eax, dword [esp + 0x58]
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 + 0x48]
mov dword [esp + 0xa4], edx
push dword [esp + 0x94]
push dword [esp + 0x44]
push dword [esp + 0x24]
call fcn.0059bca0
push dword [esp + 0x28]
mov ecx, eax
mov edi, edx
mov eax, dword [esp + 0x44]
push dword [esp + 0x18]
shrd ecx, edi, 0x10
mov eax, dword [eax + 0x18]
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 + 0x94]
mov dword [esp + 0x84], edx
push dword [esp + 0x9c]
push dword [esp + 0x44]
push dword [esp + 0x24]
call fcn.0059bca0
mov ecx, eax
mov eax, dword [esp + 0x40]
mov edi, edx
push dword [esp + 0x28]
shrd ecx, edi, 0x10
push dword [esp + 0x18]
mov eax, dword [eax + 0x1c]
cdq
mov ebp, eax
sar edi, 0x10
mov eax, dword [esp + 0x8c]
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 + 0x4c]
mov ebp, edx
imul ecx, dword [esp + 0x104]
mov eax, dword [esp + 0x100]
mov dword [esp + 0x84], ebp
lea eax, [eax + ecx*2]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x74]
sub eax, dword [esp + 0x4c]
mov dword [esp + 0x14], eax
je 0x435697
push dword [esp + 0x3c]
mov eax, dword [esp + 0x44]
push dword [esp + 0x1c]
push 0x10000
mov eax, dword [eax]
sub eax, dword [esp + 0x94]
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 + 0x1c]
mov eax, edx
push dword [esp + 0x14]
mov dword [esp + 0x2c], eax
cdq
push edx
push eax
call fcn.0059bca0
mov ecx, dword [esp + 0x40]
mov edi, eax
shrd edi, edx, 0x10
add edi, dword [esp + 0x88]
mov eax, dword [ecx]
cmp dword [esp + 0x70], eax
jge 0x435155
mov ebx, dword [esp + 0x14]
test ebx, ebx
jle 0x43569b
mov eax, dword [esp + 0xac]
cdq
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x98], edx
cdq
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x90], edx
cdq
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0xbc], edx
cdq
mov dword [esp + 0xc8], eax
mov eax, ebp
mov dword [esp + 0xc4], edx
cdq
mov dword [esp + 0xd0], eax
lea eax, [edi + 0xffff]
mov dword [esp + 0x30], eax
lea eax, [ecx + 0xffff]
mov dword [esp + 0xcc], edx
mov dword [esp + 0x2c], eax
nop dword [eax + eax]
mov ebp, eax
dec ebx
and ebp, 0xffff0000
mov dword [esp + 0x14], 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 + 0x54]
add eax, dword [esp + 0x6c]
mov dword [esp + 0x60], eax
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0xbc]
shrd eax, edx, 0x10
push dword [esp + 0xc4]
add eax, dword [esp + 0x70]
mov dword [esp + 0x48], eax
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0xc4]
shrd eax, edx, 0x10
push dword [esp + 0xcc]
add eax, dword [esp + 0x74]
mov dword [esp + 0x8c], eax
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0xcc]
shrd eax, edx, 0x10
push dword [esp + 0xd4]
add eax, dword [esp + 0x78]
mov dword [esp + 0x44], eax
call fcn.0059bca0
push edi
push ebx
push dword [esp + 0xd4]
shrd eax, edx, 0x10
push dword [esp + 0xdc]
add eax, dword [esp + 0x7c]
mov dword [esp + 0x54], eax
call fcn.0059bca0
mov edi, eax
mov eax, ebp
shrd edi, edx, 0x10
mov edx, dword [esp + 0x28]
sar eax, 0x10
add edi, 0xffff8000
lea eax, [edx + eax*2]
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x30]
sub eax, ebp
sar eax, 0x10
test eax, eax
jle 0x4350ce
mov ebp, dword [esp + 0x44]
add edi, dword [esp + 0x20]
add ebp, 0xffff8000
mov dword [esp + 0x58], edi
mov dword [esp + 0x44], ebp
nop dword [eax]
nop word [eax + eax]
mov edx, dword [esp + 0xb0]
dec eax
mov dword [esp + 0xd4], eax
test ebp, ebp
jle 0x434df8
mov ecx, ebp
mov dword [esp + 0x4c], ebp
sar ecx, 0x10
lea eax, [edx - 1]
xor ebx, ebx
cmp ecx, eax
setl bl
jmp 0x434e00
xor eax, eax
xor ebx, ebx
mov dword [esp + 0x4c], eax
test edi, edi
jle 0x434e2a
mov eax, dword [esp + 0xf4]
mov ecx, edi
dec eax
sar ecx, 0x10
mov dword [esp + 0x10], 0
cmp ecx, eax
mov eax, dword [esp + 0x10]
mov ecx, edi
cmovl eax, edx
mov dword [esp + 0x10], eax
jmp 0x434e30
xor ecx, ecx
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x4c]
sar eax, 0x10
sar ecx, 0x10
imul ecx, edx
mov edx, 0x10000
add ecx, eax
mov dword [esp + 0x18], ecx
lea eax, [ecx + ebx]
mov eax, dword [esi + eax*4]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [esi + eax*4]
add eax, ebx
mov dword [esp + 0x10], ecx
mov ecx, ebp
and ecx, 0xfffe
mov ebp, edi
inc ecx
and ebp, 0xfffe
mov ebx, dword [esi + eax*4]
inc ebp
mov eax, dword [esp + 0x18]
sub edx, ebp
mov dword [esp + 0x3c], ebx
mov ebx, 0x10000
sub ebx, ecx
mov edi, ebx
imul ebx, ebp
mov eax, dword [esi + eax*4]
shr eax, 0x18
imul edi, edx
imul edx, ecx
imul ebp, ecx
mov ecx, dword [esp + 0x3c]
shr ebx, 0x10
shr edi, 0x10
imul edi, eax
mov eax, dword [esp + 0x1c]
shr eax, 0x18
shr edx, 0x10
imul edx, eax
mov eax, dword [esp + 0x10]
shr eax, 0x18
imul ebx, eax
mov eax, ecx
shr eax, 0x18
shr edx, 0x10
mov dword [esp + 0x88], edx
mov edx, ecx
shr ebp, 0x10
and edx, 0xff0000
imul ebp, eax
mov eax, dword [esp + 0x10]
and eax, 0xff0000
shr ebx, 0x10
imul eax, ebx
shr edi, 0x10
shr ebp, 0x10
imul edx, ebp
movzx ecx, cl
imul ecx, ebp
mov dword [esp + 0x4c], edi
add edx, eax
mov eax, dword [esp + 0x1c]
and eax, 0xff0000
imul eax, dword [esp + 0x88]
add edx, eax
mov eax, dword [esp + 0x18]
mov eax, dword [esi + eax*4]
and eax, 0xff0000
imul eax, edi
add edx, eax
mov eax, dword [esp + 0x10]
movzx eax, al
and edx, 0xff0000ff
imul eax, ebx
add ecx, eax
mov eax, dword [esp + 0x1c]
movzx eax, al
imul eax, dword [esp + 0x88]
add ecx, eax
mov edi, dword [esp + 0x18]
mov eax, dword [esi + edi*4]
movzx eax, al
imul eax, dword [esp + 0x4c]
mov edi, dword [esp + 0x50]
shr edi, 0x10
add ecx, eax
mov eax, dword [esp + 0x34]
shr eax, 0x10
and ecx, 0xff00
or edx, ecx
shr edx, 8
movzx ecx, dl
and edx, 0xff0000
imul ecx, eax
mov eax, dword [esp + 0x38]
shr eax, 0x10
imul edx, eax
mov eax, dword [esp + 0x10]
and eax, 0xff00
and ecx, 0xff00
imul eax, ebx
mov ebx, dword [esp + 0x18]
or ecx, edx
mov edx, dword [esp + 0x3c]
and edx, 0xff00
shr ecx, 8
imul edx, ebp
mov ebp, dword [esp + 0x7c]
add edx, eax
mov eax, dword [esp + 0x1c]
and eax, 0xff00
imul eax, dword [esp + 0x88]
add edx, eax
mov eax, dword [esi + ebx*4]
and eax, 0xff00
imul eax, dword [esp + 0x4c]
add edx, eax
mov eax, ebp
and edx, 0xff0000
shr eax, 0x10
bswap edx
imul edx, eax
mov eax, ecx
and eax, 0xff0000
imul eax, edi
and edx, 0xff0000
bswap edx
imul edx, edi
and eax, 0xff0000ff
and edx, 0xff0000
or edx, eax
movzx eax, cl
mov ecx, dword [esp + 0x78]
imul eax, edi
and eax, 0xff00
or edx, eax
shr edx, 8
mov edi, edx
mov eax, edx
shr edx, 3
and edx, 0x1f
shr eax, 5
mov dword [esp + 0x3c], edx
and eax, 0x7e0
movzx edx, word [ecx]
mov ecx, edx
shr edi, 8
and ecx, 0x7e0
and edi, 0xf800
add ecx, eax
mov eax, edx
and eax, 0x1f
shr ecx, 5
add eax, dword [esp + 0x3c]
and edx, 0xf800
shr eax, 5
add edx, edi
or ecx, eax
shr edx, 5
add ebp, dword [esp + 0xa4]
or ecx, edx
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0xac]
add dword [esp + 0x50], eax
mov eax, dword [esp + 0xa8]
add dword [esp + 0x38], eax
mov eax, dword [esp + 0xa0]
mov edi, dword [esp + 0x58]
add dword [esp + 0x34], eax
add edi, dword [esp + 0x84]
mov eax, dword [esp + 0xd4]
mov dword [esp + 0x7c], ebp
mov ebp, dword [esp + 0x44]
add ebp, dword [esp + 0x80]
mov word [edx], cx
add edx, 2
mov dword [esp + 0x78], edx
mov dword [esp + 0x44], ebp
mov dword [esp + 0x58], edi
test eax, eax
jg 0x434dd0
mov ebx, dword [esp + 0x104]
mov edx, dword [esp + 0x24]
add dword [esp + 0x30], edx
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x2c]
lea edx, [ebx + ebx]
add dword [esp + 0x28], edx
mov edx, dword [esp + 0xe0]
add dword [esp + 0x5c], edx
mov edx, dword [esp + 0xd8]
add dword [esp + 0x60], edx
mov edx, dword [esp + 0xf0]
add dword [esp + 0x64], edx
mov edx, dword [esp + 0xec]
add dword [esp + 0x68], edx
mov edx, dword [esp + 0xe8]
add dword [esp + 0x6c], edx
add ecx, dword [esp + 0xe4]
add eax, dword [esp + 0xe4]
mov edx, dword [esp + 0xdc]
add dword [esp + 0x20], edx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x54], ecx
mov dword [esp + 0x2c], eax
test ebx, ebx
jg 0x434cb0
jmp 0x435690
jle 0x43569b
mov ebx, dword [esp + 0x14]
test ebx, ebx
jle 0x43569b
mov eax, dword [esp + 0xac]
cdq
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 0x54]
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 + 0xa0]
mov dword [esp + 0xc4], edx
cdq
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0xbc], edx
cdq
mov dword [esp + 0x98], eax
mov eax, ebp
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0x90], eax
lea eax, [ecx + 0xffff]
mov dword [esp + 0x78], eax
lea eax, [edi + 0xffff]
mov dword [esp + 0x94], edx
mov dword [esp + 0x4c], eax
nop
push dword [esp + 0xd4]
mov ebp, eax
dec ebx
push dword [esp + 0xd4]
and ebp, 0xffff0000
mov dword [esp + 0x1c], ebx
mov eax, ebp
sub eax, ecx
cdq
mov edi, edx
mov ebx, eax
push edi
push ebx
call fcn.0059bca0
push dword [esp + 0xcc]
shrd eax, edx, 0x10
push dword [esp + 0xcc]
add eax, dword [esp + 0x64]
push edi
push ebx
mov dword [esp + 0x44], eax
call fcn.0059bca0
push dword [esp + 0xc4]
shrd eax, edx, 0x10
push dword [esp + 0xc4]
add eax, dword [esp + 0x68]
push edi
push ebx
mov dword [esp + 0x48], eax
call fcn.0059bca0
push dword [esp + 0xbc]
shrd eax, edx, 0x10
push dword [esp + 0xbc]
add eax, dword [esp + 0x6c]
push edi
push ebx
mov dword [esp + 0x68], eax
call fcn.0059bca0
push dword [esp + 0xb4]
shrd eax, edx, 0x10
push dword [esp + 0x9c]
add eax, dword [esp + 0x70]
push edi
push ebx
mov dword [esp + 0x60], eax
call fcn.0059bca0
push dword [esp + 0x94]
shrd eax, edx, 0x10
push dword [esp + 0x94]
add eax, dword [esp + 0x74]
push edi
push ebx
mov dword [esp + 0x58], eax
call fcn.0059bca0
mov edi, eax
mov eax, ebp
shrd edi, edx, 0x10
mov edx, dword [esp + 0x28]
sar eax, 0x10
add edi, 0xffff8000
lea eax, [edx + eax*2]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x78]
sub eax, ebp
sar eax, 0x10
test eax, eax
jle 0x435613
add edi, dword [esp + 0x20]
mov ebp, dword [esp + 0x48]
add ebp, 0xffff8000
mov dword [esp + 0x7c], edi
mov dword [esp + 0x44], ebp
nop dword [eax]
nop word [eax + eax]
mov edx, dword [esp + 0xb0]
dec eax
mov dword [esp + 0x88], eax
test ebp, ebp
jle 0x435348
mov ecx, ebp
mov dword [esp + 0x2c], ebp
sar ecx, 0x10
lea eax, [edx - 1]
xor ebx, ebx
cmp ecx, eax
setl bl
jmp 0x435350
xor eax, eax
xor ebx, ebx
mov dword [esp + 0x2c], eax
test edi, edi
jle 0x43537a
mov eax, dword [esp + 0xf4]
mov ecx, edi
dec eax
sar ecx, 0x10
mov dword [esp + 0x10], 0
cmp ecx, eax
mov eax, dword [esp + 0x10]
mov ecx, edi
cmovl eax, edx
mov dword [esp + 0x10], eax
jmp 0x435380
xor ecx, ecx
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x2c]
sar eax, 0x10
sar ecx, 0x10
imul ecx, edx
mov edx, 0x10000
add ecx, eax
mov dword [esp + 0x3c], ecx
lea eax, [ecx + ebx]
mov eax, dword [esi + eax*4]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [esi + eax*4]
add eax, ebx
mov dword [esp + 0x1c], ecx
mov ebx, 0x10000
mov ecx, ebp
mov ebp, edi
and ebp, 0xfffe
and ecx, 0xfffe
mov eax, dword [esi + eax*4]
inc ecx
mov dword [esp + 0x48], eax
inc ebp
mov eax, dword [esp + 0x3c]
sub ebx, ebp
sub edx, ecx
mov edi, edx
imul edx, ebp
imul edi, ebx
mov eax, dword [esi + eax*4]
shr eax, 0x18
imul ebx, ecx
imul ebp, ecx
mov ecx, dword [esp + 0x48]
shr edi, 0x10
imul edi, eax
mov eax, dword [esp + 0x18]
shr eax, 0x18
shr ebx, 0x10
imul ebx, eax
mov eax, dword [esp + 0x1c]
shr eax, 0x18
shr edx, 0x10
imul edx, eax
mov eax, ecx
shr eax, 0x18
shr ebp, 0x10
imul ebp, eax
mov eax, ecx
and eax, 0xff00
shr ebx, 0x10
shr edx, 0x10
mov dword [esp + 0x2c], ebx
shr edi, 0x10
shr ebp, 0x10
imul eax, ebp
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x1c]
and eax, 0xff00
imul eax, edx
add 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 + 0x3c]
mov eax, dword [esi + eax*4]
and eax, 0xff00
imul eax, edi
add ebx, eax
mov eax, dword [esp + 0x1c]
and ebx, 0xff0000
and eax, 0xff0000
mov dword [esp + 0x10], ebx
mov ebx, ecx
and ebx, 0xff0000
imul eax, edx
imul ebx, ebp
add ebx, eax
mov eax, dword [esp + 0x18]
and eax, 0xff0000
movzx ecx, cl
imul eax, dword [esp + 0x2c]
imul ecx, ebp
mov ebp, dword [esp + 0x10]
add ebx, eax
mov eax, dword [esp + 0x3c]
mov eax, dword [esi + eax*4]
and eax, 0xff0000
imul eax, edi
add ebx, eax
mov eax, dword [esp + 0x1c]
movzx eax, al
and ebx, 0xff0000ff
imul eax, edx
mov edx, dword [esp + 0x3c]
add ecx, eax
mov eax, dword [esp + 0x18]
movzx eax, al
imul eax, dword [esp + 0x2c]
add ecx, eax
mov eax, dword [esi + edx*4]
movzx eax, al
imul eax, edi
mov edx, dword [esp + 0x34]
shr edx, 0x10
add ecx, eax
mov eax, dword [esp + 0x50]
and ecx, 0xff00
shr eax, 0x10
or ebx, ecx
or ebx, ebp
shr ebx, 8
movzx ecx, bl
and ebx, 0xff0000
imul ecx, eax
mov eax, dword [esp + 0x38]
shr eax, 0x10
imul ebx, eax
bswap ebp
and ecx, 0xff00
or ecx, ebx
mov ebx, dword [esp + 0x58]
mov eax, ebx
shr ecx, 8
shr eax, 0x10
imul ebp, eax
mov eax, ecx
and eax, 0xff0000
imul eax, edx
and ebp, 0xff0000
bswap ebp
imul ebp, edx
and eax, 0xff0000ff
and ebp, 0xff0000
or ebp, eax
movzx eax, cl
mov ecx, dword [esp + 0x30]
imul eax, edx
movzx edx, word [ecx]
mov ecx, edx
and eax, 0xff00
and ecx, 0x7e0
or ebp, eax
shr ebp, 8
mov eax, ebp
mov edi, ebp
shr eax, 5
and eax, 0x7e0
shr ebp, 3
add ecx, eax
shr edi, 8
mov eax, edx
shr ecx, 5
and eax, 0x1f
and ebp, 0x1f
add eax, ebp
and edi, 0xf800
shr eax, 5
or ecx, eax
mov eax, dword [esp + 0xac]
and edx, 0xf800
add dword [esp + 0x34], eax
add edx, edi
mov eax, dword [esp + 0xa8]
add dword [esp + 0x38], eax
mov eax, dword [esp + 0xa0]
mov ebp, dword [esp + 0x44]
mov edi, dword [esp + 0x7c]
add dword [esp + 0x50], eax
add ebx, dword [esp + 0xa4]
add ebp, dword [esp + 0x80]
add edi, dword [esp + 0x84]
mov eax, dword [esp + 0x88]
shr edx, 5
or ecx, edx
mov dword [esp + 0x58], ebx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x44], ebp
mov dword [esp + 0x7c], edi
mov word [edx], cx
add edx, 2
mov dword [esp + 0x30], edx
test eax, eax
jg 0x435320
mov ebx, dword [esp + 0x104]
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0xe4]
add ecx, eax
add dword [esp + 0x78], eax
mov eax, dword [esp + 0x4c]
lea edx, [ebx + ebx]
add dword [esp + 0x28], edx
mov edx, dword [esp + 0xe0]
add dword [esp + 0x5c], edx
mov edx, dword [esp + 0xd8]
add dword [esp + 0x60], edx
mov edx, dword [esp + 0xf0]
add dword [esp + 0x64], edx
mov edx, dword [esp + 0xec]
add dword [esp + 0x68], edx
mov edx, dword [esp + 0xe8]
add dword [esp + 0x6c], edx
add eax, dword [esp + 0x24]
mov edx, dword [esp + 0xdc]
add dword [esp + 0x20], edx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x54], ecx
mov dword [esp + 0x4c], eax
test ebx, ebx
jg 0x435200
mov ebp, dword [esp + 0x84]
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x74]
sub dword [esp + 0x9c], eax
je 0x436162
mov eax, dword [esp + 0x8c]
mov ebx, dword [ecx + 4]
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 + 0x8c]
mov edx, dword [esp + 0x40]
mov eax, dword [eax]
sub eax, dword [edx]
cdq
push edx
push eax
push ecx
push edi
call fcn.0059bca0
mov eax, dword [esp + 0x74]
mov ecx, edx
shl eax, 0x10
sub eax, ebx
mov dword [esp + 0x7c], ecx
imul ecx
mov ecx, dword [esp + 0x40]
mov edi, eax
shrd edi, edx, 0x10
mov eax, dword [ecx]
add edi, eax
cmp dword [esp + 0x70], eax
jge 0x435c3d
mov ebx, dword [esp + 0x9c]
test ebx, ebx
jle 0x436162
mov eax, dword [esp + 0xac]
cdq
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 0x54]
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 + 0xa0]
mov dword [esp + 0xc4], edx
cdq
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0xbc], edx
cdq
mov dword [esp + 0x98], eax
mov eax, ebp
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0x90], eax
lea eax, [edi + 0xffff]
mov dword [esp + 0x94], edx
mov dword [esp + 0x50], eax
nop dword [eax]
push dword [esp + 0xd4]
lea ebp, [ecx + 0xffff]
dec ebx
push dword [esp + 0xd4]
and ebp, 0xffff0000
mov dword [esp + 0xa4], ebx
mov eax, ebp
sub eax, ecx
cdq
mov edi, edx
mov ebx, eax
push edi
push ebx
call fcn.0059bca0
push dword [esp + 0xcc]
shrd eax, edx, 0x10
push dword [esp + 0xcc]
add eax, dword [esp + 0x64]
push edi
push ebx
mov dword [esp + 0x40], eax
call fcn.0059bca0
push dword [esp + 0xc4]
shrd eax, edx, 0x10
push dword [esp + 0xc4]
add eax, dword [esp + 0x68]
push edi
push ebx
mov dword [esp + 0x44], eax
call fcn.0059bca0
push dword [esp + 0xbc]
shrd eax, edx, 0x10
push dword [esp + 0xbc]
add eax, dword [esp + 0x6c]
push edi
push ebx
mov dword [esp + 0x3c], eax
call fcn.0059bca0
push dword [esp + 0xb4]
shrd eax, edx, 0x10
push dword [esp + 0x9c]
add eax, dword [esp + 0x70]
push edi
push ebx
mov dword [esp + 0x48], eax
call fcn.0059bca0
push dword [esp + 0x94]
shrd eax, edx, 0x10
push dword [esp + 0x94]
add eax, dword [esp + 0x74]
push edi
push ebx
mov dword [esp + 0x58], eax
call fcn.0059bca0
mov edi, eax
mov ecx, ebp
shrd edi, edx, 0x10
mov edx, dword [esp + 0x28]
sar ecx, 0x10
add edi, 0xffff8000
lea eax, [edx + ecx*2]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x50]
sub eax, ebp
sar eax, 0x10
test eax, eax
jle 0x435bbc
add edi, dword [esp + 0x20]
mov ebp, dword [esp + 0x48]
add ebp, 0xffff8000
mov dword [esp + 0x44], edi
mov dword [esp + 0x58], ebp
nop word [eax + eax]
mov edx, dword [esp + 0xb0]
dec eax
mov dword [esp + 0x48], eax
test ebp, ebp
jle 0x4358f5
mov ecx, ebp
mov dword [esp + 0x24], ebp
sar ecx, 0x10
lea eax, [edx - 1]
xor ebx, ebx
cmp ecx, eax
setl bl
jmp 0x4358fd
xor eax, eax
xor ebx, ebx
mov dword [esp + 0x24], eax
test edi, edi
jle 0x435927
mov eax, dword [esp + 0xf4]
mov ecx, edi
dec eax
sar ecx, 0x10
mov dword [esp + 0x14], 0
cmp ecx, eax
mov eax, dword [esp + 0x14]
mov ecx, edi
cmovl eax, edx
mov dword [esp + 0x14], eax
jmp 0x43592d
xor ecx, ecx
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x24]
sar eax, 0x10
sar ecx, 0x10
imul ecx, edx
mov edx, 0x10000
add ecx, eax
mov dword [esp + 0x1c], ecx
lea eax, [ecx + ebx]
mov eax, dword [esi + eax*4]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esi + eax*4]
add eax, ebx
mov dword [esp + 0x14], ecx
mov ecx, ebp
and ecx, 0xfffe
mov ebp, edi
inc ecx
and ebp, 0xfffe
mov ebx, dword [esi + eax*4]
inc ebp
mov eax, dword [esp + 0x1c]
sub edx, ebp
mov dword [esp + 0x18], ebx
mov ebx, 0x10000
sub ebx, ecx
mov edi, ebx
imul ebx, ebp
mov eax, dword [esi + eax*4]
shr eax, 0x18
imul edi, edx
imul edx, ecx
imul ebp, ecx
mov ecx, dword [esp + 0x18]
shr ebx, 0x10
shr edi, 0x10
imul edi, eax
mov eax, dword [esp + 0x10]
shr eax, 0x18
shr edx, 0x10
imul edx, eax
mov eax, dword [esp + 0x14]
shr eax, 0x18
imul ebx, eax
mov eax, ecx
shr eax, 0x18
shr edx, 0x10
mov dword [esp + 0x70], edx
mov edx, ecx
shr ebp, 0x10
and edx, 0xff0000
imul ebp, eax
mov eax, dword [esp + 0x14]
and eax, 0xff0000
shr ebx, 0x10
imul eax, ebx
shr edi, 0x10
shr ebp, 0x10
imul edx, ebp
movzx ecx, cl
imul ecx, ebp
mov dword [esp + 0x24], edi
add edx, eax
mov eax, dword [esp + 0x10]
and eax, 0xff0000
imul eax, dword [esp + 0x70]
add edx, eax
mov eax, dword [esp + 0x1c]
mov eax, dword [esi + eax*4]
and eax, 0xff0000
imul eax, edi
add edx, eax
mov eax, dword [esp + 0x14]
movzx eax, al
and edx, 0xff0000ff
imul eax, ebx
add ecx, eax
mov eax, dword [esp + 0x10]
movzx eax, al
imul eax, dword [esp + 0x70]
add ecx, eax
mov edi, dword [esp + 0x1c]
mov eax, dword [esi + edi*4]
movzx eax, al
imul eax, dword [esp + 0x24]
mov edi, dword [esp + 0x30]
shr edi, 0x10
add ecx, eax
mov eax, dword [esp + 0x38]
shr eax, 0x10
and ecx, 0xff00
or edx, ecx
shr edx, 8
movzx ecx, dl
and edx, 0xff0000
imul ecx, eax
mov eax, dword [esp + 0x34]
shr eax, 0x10
imul edx, eax
mov eax, dword [esp + 0x14]
and eax, 0xff00
and ecx, 0xff00
imul eax, ebx
mov ebx, dword [esp + 0x1c]
or ecx, edx
mov edx, dword [esp + 0x18]
and edx, 0xff00
shr ecx, 8
imul edx, ebp
mov ebp, dword [esp + 0x2c]
add edx, eax
mov eax, dword [esp + 0x10]
and eax, 0xff00
imul eax, dword [esp + 0x70]
add edx, eax
mov eax, dword [esi + ebx*4]
and eax, 0xff00
imul eax, dword [esp + 0x24]
add edx, eax
mov eax, ebp
and edx, 0xff0000
shr eax, 0x10
bswap edx
imul edx, eax
mov eax, ecx
and eax, 0xff0000
imul eax, edi
and edx, 0xff0000
bswap edx
imul edx, edi
and eax, 0xff0000ff
and edx, 0xff0000
or edx, eax
movzx eax, cl
mov ecx, dword [esp + 0x74]
imul eax, edi
and eax, 0xff00
or edx, eax
shr edx, 8
mov edi, edx
mov eax, edx
shr edx, 3
and edx, 0x1f
shr eax, 5
mov dword [esp + 0x18], edx
and eax, 0x7e0
movzx edx, word [ecx]
mov ecx, edx
shr edi, 8
and ecx, 0x7e0
and edi, 0xf800
add ecx, eax
mov eax, edx
and eax, 0x1f
shr ecx, 5
add eax, dword [esp + 0x18]
and edx, 0xf800
shr eax, 5
add edx, edi
or ecx, eax
shr edx, 5
add ebp, dword [esp + 0xa4]
or ecx, edx
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 0xac]
add dword [esp + 0x30], eax
mov eax, dword [esp + 0xa8]
add dword [esp + 0x34], eax
mov eax, dword [esp + 0xa0]
mov edi, dword [esp + 0x44]
add dword [esp + 0x38], eax
add edi, dword [esp + 0x84]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x2c], ebp
mov ebp, dword [esp + 0x58]
add ebp, dword [esp + 0x80]
mov word [edx], cx
add edx, 2
mov dword [esp + 0x74], edx
mov dword [esp + 0x58], ebp
mov dword [esp + 0x44], edi
test eax, eax
jg 0x4358d0
mov edx, dword [esp + 0x104]
mov eax, dword [esp + 0x7c]
add dword [esp + 0x50], eax
mov ecx, dword [esp + 0x54]
add ecx, dword [esp + 0xe4]
lea eax, [edx + edx]
add dword [esp + 0x28], eax
mov eax, dword [esp + 0xe0]
add dword [esp + 0x5c], eax
mov eax, dword [esp + 0xd8]
add dword [esp + 0x60], eax
mov eax, dword [esp + 0xf0]
add dword [esp + 0x64], eax
mov eax, dword [esp + 0xec]
add dword [esp + 0x68], eax
mov eax, dword [esp + 0xe8]
add dword [esp + 0x6c], eax
mov eax, dword [esp + 0xdc]
add dword [esp + 0x20], eax
mov ebx, dword [esp + 0x9c]
mov dword [esp + 0x54], ecx
test ebx, ebx
jg 0x4357b0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe8
ret
jle 0x436162
mov ecx, dword [esp + 0x9c]
test ecx, ecx
jle 0x436162
mov eax, dword [esp + 0xac]
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 + 0xa0]
mov dword [esp + 0xc4], edx
cdq
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0xbc], edx
cdq
mov dword [esp + 0x98], eax
mov eax, ebp
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0x90], eax
lea eax, [edi + 0xffff]
mov dword [esp + 0x94], edx
mov dword [esp + 0x4c], eax
nop dword [eax + eax]
push dword [esp + 0xd4]
mov ebp, eax
dec ecx
push dword [esp + 0xd4]
and ebp, 0xffff0000
mov dword [esp + 0xa4], ecx
mov eax, ebp
sub eax, dword [esp + 0x5c]
cdq
mov edi, edx
mov ebx, eax
push edi
push ebx
call fcn.0059bca0
push dword [esp + 0xcc]
shrd eax, edx, 0x10
push dword [esp + 0xcc]
add eax, dword [esp + 0x64]
push edi
push ebx
mov dword [esp + 0x40], eax
call fcn.0059bca0
push dword [esp + 0xc4]
shrd eax, edx, 0x10
push dword [esp + 0xc4]
add eax, dword [esp + 0x68]
push edi
push ebx
mov dword [esp + 0x44], eax
call fcn.0059bca0
push dword [esp + 0xbc]
shrd eax, edx, 0x10
push dword [esp + 0xbc]
add eax, dword [esp + 0x6c]
push edi
push ebx
mov dword [esp + 0x3c], eax
call fcn.0059bca0
push dword [esp + 0xb4]
shrd eax, edx, 0x10
push dword [esp + 0x9c]
add eax, dword [esp + 0x70]
push edi
push ebx
mov dword [esp + 0x48], eax
call fcn.0059bca0
push dword [esp + 0x94]
shrd eax, edx, 0x10
push dword [esp + 0x94]
add eax, dword [esp + 0x74]
push edi
push ebx
mov dword [esp + 0x58], eax
call fcn.0059bca0
mov edi, eax
mov ecx, ebp
shrd edi, edx, 0x10
mov edx, dword [esp + 0x28]
sar ecx, 0x10
add edi, 0xffff8000
lea eax, [edx + ecx*2]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x54]
sub eax, ebp
add eax, 0xffff
sar eax, 0x10
test eax, eax
jle 0x4360ec
add edi, dword [esp + 0x20]
mov ebp, dword [esp + 0x48]
add ebp, 0xffff8000
mov dword [esp + 0x44], edi
mov dword [esp + 0x58], ebp
nop dword [eax]
mov edx, dword [esp + 0xb0]
dec eax
mov dword [esp + 0x48], eax
test ebp, ebp
jle 0x435e25
mov ecx, ebp
mov dword [esp + 0x24], ebp
sar ecx, 0x10
lea eax, [edx - 1]
xor ebx, ebx
cmp ecx, eax
setl bl
jmp 0x435e2d
xor eax, eax
xor ebx, ebx
mov dword [esp + 0x24], eax
test edi, edi
jle 0x435e57
mov eax, dword [esp + 0xf4]
mov ecx, edi
dec eax
sar ecx, 0x10
mov dword [esp + 0x14], 0
cmp ecx, eax
mov eax, dword [esp + 0x14]
mov ecx, edi
cmovl eax, edx
mov dword [esp + 0x14], eax
jmp 0x435e5d
xor ecx, ecx
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x24]
sar eax, 0x10
sar ecx, 0x10
imul ecx, edx
mov edx, 0x10000
add ecx, eax
mov dword [esp + 0x1c], ecx
lea eax, [ecx + ebx]
mov eax, dword [esi + eax*4]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esi + eax*4]
add eax, ebx
mov dword [esp + 0x14], ecx
mov ecx, ebp
and ecx, 0xfffe
mov ebp, edi
inc ecx
and ebp, 0xfffe
mov ebx, dword [esi + eax*4]
inc ebp
mov eax, dword [esp + 0x1c]
sub edx, ebp
mov dword [esp + 0x18], ebx
mov ebx, 0x10000
sub ebx, ecx
mov edi, ebx
imul ebx, ebp
mov eax, dword [esi + eax*4]
shr eax, 0x18
imul edi, edx
imul edx, ecx
imul ebp, ecx
mov ecx, dword [esp + 0x18]
shr ebx, 0x10
shr edi, 0x10
imul edi, eax
mov eax, dword [esp + 0x10]
shr eax, 0x18
shr edx, 0x10
imul edx, eax
mov eax, dword [esp + 0x14]
shr eax, 0x18
imul ebx, eax
mov eax, ecx
shr eax, 0x18
shr edx, 0x10
mov dword [esp + 0x70], edx
mov edx, ecx
shr ebp, 0x10
and edx, 0xff0000
imul ebp, eax
mov eax, dword [esp + 0x14]
and eax, 0xff0000
shr ebx, 0x10
imul eax, ebx
shr edi, 0x10
shr ebp, 0x10
imul edx, ebp
movzx ecx, cl
imul ecx, ebp
mov dword [esp + 0x24], edi
add edx, eax
mov eax, dword [esp + 0x10]
and eax, 0xff0000
imul eax, dword [esp + 0x70]
add edx, eax
mov eax, dword [esp + 0x1c]
mov eax, dword [esi + eax*4]
and eax, 0xff0000
imul eax, edi
add edx, eax
mov eax, dword [esp + 0x14]
movzx eax, al
and edx, 0xff0000ff
imul eax, ebx
add ecx, eax
mov eax, dword [esp + 0x10]
movzx eax, al
imul eax, dword [esp + 0x70]
add ecx, eax
mov edi, dword [esp + 0x1c]
mov eax, dword [esi + edi*4]
movzx eax, al
imul eax, dword [esp + 0x24]
mov edi, dword [esp + 0x30]
shr edi, 0x10
add ecx, eax
mov eax, dword [esp + 0x38]
shr eax, 0x10
and ecx, 0xff00
or edx, ecx
shr edx, 8
movzx ecx, dl
and edx, 0xff0000
imul ecx, eax
mov eax, dword [esp + 0x34]
shr eax, 0x10
imul edx, eax
mov eax, dword [esp + 0x14]
and eax, 0xff00
and ecx, 0xff00
imul eax, ebx
mov ebx, dword [esp + 0x1c]
or ecx, edx
mov edx, dword [esp + 0x18]
and edx, 0xff00
shr ecx, 8
imul edx, ebp
mov ebp, dword [esp + 0x2c]
add edx, eax
mov eax, dword [esp + 0x10]
and eax, 0xff00
imul eax, dword [esp + 0x70]
add edx, eax
mov eax, dword [esi + ebx*4]
and eax, 0xff00
imul eax, dword [esp + 0x24]
add edx, eax
mov eax, ebp
and edx, 0xff0000
shr eax, 0x10
bswap edx
imul edx, eax
mov eax, ecx
and eax, 0xff0000
imul eax, edi
and edx, 0xff0000
bswap edx
imul edx, edi
and eax, 0xff0000ff
and edx, 0xff0000
or edx, eax
movzx eax, cl
mov ecx, dword [esp + 0x74]
imul eax, edi
and eax, 0xff00
or edx, eax
shr edx, 8
mov edi, edx
mov eax, edx
shr edx, 3
and edx, 0x1f
shr eax, 5
mov dword [esp + 0x18], edx
and eax, 0x7e0
movzx edx, word [ecx]
mov ecx, edx
shr edi, 8
and ecx, 0x7e0
and edi, 0xf800
add ecx, eax
mov eax, edx
and eax, 0x1f
shr ecx, 5
add eax, dword [esp + 0x18]
and edx, 0xf800
shr eax, 5
add edx, edi
or ecx, eax
shr edx, 5
add ebp, dword [esp + 0xa4]
or ecx, edx
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 0xac]
add dword [esp + 0x30], eax
mov eax, dword [esp + 0xa8]
add dword [esp + 0x34], eax
mov eax, dword [esp + 0xa0]
mov edi, dword [esp + 0x44]
add dword [esp + 0x38], eax
add edi, dword [esp + 0x84]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x2c], ebp
mov ebp, dword [esp + 0x58]
add ebp, dword [esp + 0x80]
mov word [edx], cx
add edx, 2
mov dword [esp + 0x74], edx
mov dword [esp + 0x58], ebp
mov dword [esp + 0x44], edi
test eax, eax
jg 0x435e00
mov edx, dword [esp + 0x104]
mov eax, dword [esp + 0xe4]
add dword [esp + 0x54], eax
mov eax, dword [esp + 0x4c]
add eax, dword [esp + 0x7c]
lea ecx, [edx + edx]
add dword [esp + 0x28], ecx
mov ecx, dword [esp + 0xe0]
add dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0xd8]
add dword [esp + 0x60], ecx
mov ecx, dword [esp + 0xf0]
add dword [esp + 0x64], ecx
mov ecx, dword [esp + 0xec]
add dword [esp + 0x68], ecx
mov ecx, dword [esp + 0xe8]
add dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0xdc]
add dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x4c], eax
test ecx, ecx
jg 0x435ce0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe8
ret