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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xa4
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
push 0
push 0x6a5680
push 0x6a5a0c
mov esi, ecx
push 0
push edi
mov dword [esp + 0x58], esi
mov byte [edi + 4], 1
call fcn.0061eefc
add esp, 0x14
push 0
push 0x6a5660
push 0x6a5a0c
push 0
push edi
call fcn.0061eefc
mov dword [esp + 0x88], eax
mov eax, dword [esi]
mov edx, dword [eax + 0x68]
add esp, 0x14
mov ecx, esi
call edx
mov ecx, esi
call fcn.0056ba50
test al, al
je 0x583b83
mov eax, dword [ebp + 0x20]
mov ecx, dword [ebp + 0x1c]
mov edx, dword [ebp + 0x18]
mov ebx, dword [ebp + 0x10]
push 1
push eax
mov eax, dword [ebp + 0x14]
push ecx
mov ecx, dword [esi + 0x6c]
push edx
mov edx, dword [ecx + 0x30]
push eax
push edi
mov edi, dword [ebp + 0xc]
push edx
call fcn.005683a0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x1c
fldz
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 0x10]
fst qword [esp + 0x88]
mov esi, dword [ebp + 0xc]
fst qword [esp + 0x90]
lea eax, [esp + 0x88]
fst qword [esp + 0x98]
push eax
fstp qword [esp + 0xa4]
xor edi, edi
push ecx
push edx
lea ebx, [esp + 0x68]
mov dword [esp + 0x68], edi
mov dword [esp + 0x6c], edi
mov dword [esp + 0x70], edi
mov dword [esp + 0x74], edi
call fcn.00595260
test al, al
je 0x5842a6
mov esi, dword [esp + 0x74]
cmp esi, edi
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x64]
lea ebx, [eax + ecx - 1]
je 0x58429b
mov edx, dword [esi]
mov eax, dword [edx + 0x68]
mov ecx, esi
call eax
mov edi, dword [esp + 0x44]
mov edx, dword [esi]
mov eax, dword [edi + 0x6c]
mov edx, dword [edx + 0x44]
push eax
mov ecx, esi
call edx
cmp dword [ebp + 0x1c], 0
mov dword [esp + 0x78], eax
jne 0x584954
cmp dword [esi + 0x48], 0
jne 0x5842af
mov eax, dword [edi]
mov edx, dword [eax + 0xbc]
mov ecx, edi
call edx
test al, al
je 0x5842a6
fld qword [esp + 0x90]
fld qword [0x679478]
fmul st(1), st(0)
fxch st(1)
call fcn.006397d0
fld qword [esp + 0x98]
fmul st(1)
mov dword [esp + 0x14], eax
fidiv dword [esp + 0x64]
call fcn.006397d0
fld qword [esp + 0xa0]
fmul st(1)
mov dword [esp + 0x54], eax
fidiv dword [esp + 0x68]
call fcn.006397d0
mov esi, dword [ebp + 0x18]
mov dword [esp + 0x58], eax
mov eax, esi
call fcn.00564470
test al, al
je 0x583f07
mov eax, dword [edi + 0xd4]
cmp eax, 0x10
jne 0x583dc9
mov eax, dword [edi + 0x90]
imul eax, dword [esp + 0x60]
mov ecx, dword [edi + 0xa4]
mov esi, dword [edi + 0xdc]
cdq
sub eax, edx
sar eax, 1
add eax, ebx
mov ebx, dword [esp + 0x68]
test ebx, ebx
lea edx, [ecx + eax*2]
mov eax, dword [edi + 0xd8]
mov edi, dword [edi + 0xe0]
mov dword [esp + 0x10], edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x34], esi
mov dword [esp + 0x2c], edi
jle 0x58428b
fmul qword [esp + 0x88]
call fcn.006397d0
mov dword [esp + 0x38], eax
mov dword [esp + 0x1c], ebx
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x74]
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x10]
sar ecx, 0x10
imul ecx, dword [ebx + 0x24]
mov ebx, dword [esp + 0x78]
lea ecx, [ebx + ecx*4]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x64]
test ecx, ecx
mov dword [esp + 0x24], eax
jle 0x583d97
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x40]
sar eax, 0x10
mov ebx, dword [ecx + eax*4]
movzx eax, word [edx]
mov dword [esp + 0x20], ebx
shr ebx, 0x18
je 0x583d81
mov ecx, 0x100
sub ecx, ebx
mov ebx, eax
and ebx, edi
imul ebx, ecx
shr ebx, 8
and ebx, edi
mov edi, eax
and edi, esi
imul edi, ecx
shr edi, 8
and edi, esi
mov esi, dword [esp + 0x28]
add edi, dword [esp + 0x20]
and eax, esi
imul eax, ecx
shr eax, 8
and eax, esi
mov esi, dword [esp + 0x34]
add edi, ebx
add eax, edi
mov edi, dword [esp + 0x2c]
mov word [edx], ax
mov eax, dword [esp + 0x24]
add eax, dword [esp + 0x54]
sub edx, 2
sub dword [esp + 0x18], 1
mov dword [esp + 0x24], eax
jne 0x583d2b
mov edx, dword [esp + 0x44]
mov eax, dword [edx + 0x90]
mov ecx, dword [esp + 0x10]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov eax, dword [esp + 0x58]
add dword [esp + 0x14], eax
sub dword [esp + 0x1c], 1
mov dword [esp + 0x10], edx
jne 0x583cf9
jmp 0x58428d
cmp eax, 0x20
jne 0x58428b
mov ecx, edi
mov eax, dword [ecx + 0x90]
imul eax, dword [esp + 0x60]
mov esi, dword [ecx + 0xdc]
mov edi, dword [ecx + 0xe0]
cdq
and edx, 3
add eax, edx
mov edx, dword [ecx + 0xa4]
sar eax, 2
add eax, ebx
mov ebx, dword [esp + 0x68]
test ebx, ebx
lea eax, [edx + eax*4]
mov edx, dword [ecx + 0xd8]
mov dword [esp + 0x10], eax
mov dword [esp + 0x28], edx
mov dword [esp + 0x34], esi
mov dword [esp + 0x2c], edi
jle 0x58428b
fmul qword [esp + 0x88]
call fcn.006397d0
mov dword [esp + 0x38], eax
mov dword [esp + 0x1c], ebx
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x74]
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x10]
sar ecx, 0x10
imul ecx, dword [ebx + 0x24]
mov ebx, dword [esp + 0x78]
lea ecx, [ebx + ecx*4]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x64]
test ecx, ecx
mov dword [esp + 0x24], eax
jle 0x583ed1
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x40]
sar eax, 0x10
mov ebx, dword [ecx + eax*4]
mov eax, dword [edx]
mov dword [esp + 0x20], ebx
shr ebx, 0x18
je 0x583ebb
mov ecx, 0x100
sub ecx, ebx
mov ebx, eax
and ebx, edi
imul ebx, ecx
shr ebx, 8
and ebx, edi
mov edi, eax
and edi, esi
imul edi, ecx
shr edi, 8
and edi, esi
mov esi, dword [esp + 0x28]
add edi, dword [esp + 0x20]
and eax, esi
imul eax, ecx
shr eax, 8
and eax, esi
mov esi, dword [esp + 0x34]
add edi, ebx
add eax, edi
mov edi, dword [esp + 0x2c]
mov dword [edx], eax
mov eax, dword [esp + 0x24]
add eax, dword [esp + 0x54]
sub edx, 4
sub dword [esp + 0x18], 1
mov dword [esp + 0x24], eax
jne 0x583e67
mov edx, dword [esp + 0x44]
mov eax, dword [edx + 0x90]
mov ecx, dword [esp + 0x10]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x58]
add dword [esp + 0x14], eax
sub dword [esp + 0x1c], 1
mov dword [esp + 0x10], edx
jne 0x583e35
jmp 0x58428d
mov eax, dword [esi + 0xc]
mov ecx, dword [esi]
imul ecx, eax
mov dword [esp + 0x3c], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esi + 4]
imul ecx, dword [esp + 0x3c]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x34], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esi + 8]
imul ecx, dword [esp + 0x3c]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x50], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x70], eax
mov eax, dword [edi + 0xd4]
cmp eax, 0x10
jne 0x5840fb
mov eax, dword [edi + 0x90]
imul eax, dword [esp + 0x60]
mov ecx, dword [edi + 0xa4]
mov esi, dword [esp + 0x68]
cdq
sub eax, edx
sar eax, 1
add eax, ebx
test esi, esi
lea edx, [ecx + eax*2]
mov eax, dword [edi + 0xd8]
mov ecx, dword [edi + 0xdc]
mov edi, dword [edi + 0xe0]
mov dword [esp + 0x48], edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x18], edi
jle 0x58428b
fmul qword [esp + 0x88]
call fcn.006397d0
mov dword [esp + 0x38], eax
mov dword [esp + 0x4c], esi
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x38]
mov ebx, dword [esp + 0x48]
sar eax, 0x10
imul eax, dword [ecx + 0x24]
cmp dword [esp + 0x64], 0
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x78]
lea eax, [edx + eax*4]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x40], eax
jle 0x5840c9
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x1c], ecx
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x40]
sar edx, 0x10
mov esi, dword [eax + edx*4]
movzx ecx, word [ebx]
mov edx, esi
shr edx, 0x18
imul edx, dword [esp + 0x3c]
mov eax, 0x80808081
mul edx
shr edx, 7
je 0x5840af
mov eax, 0x100
sub eax, edx
mov edx, ecx
and edx, edi
imul edx, eax
mov ebx, esi
and ebx, edi
imul ebx, dword [esp + 0x70]
add edx, ebx
shr edx, 8
and edx, dword [esp + 0x18]
mov edi, ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x24]
and edi, edx
imul edi, eax
mov eax, esi
and eax, edx
imul eax, dword [esp + 0x50]
add edi, eax
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x10]
shr edi, 8
and edi, edx
add eax, edi
mov edi, dword [esp + 0x18]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x28]
and ecx, eax
imul ecx, dword [esp + 0x2c]
and esi, eax
imul esi, dword [esp + 0x34]
add ecx, esi
shr ecx, 8
and ecx, eax
mov eax, dword [esp + 0x20]
add eax, ecx
mov word [ebx], ax
mov ecx, dword [esp + 0x54]
add dword [esp + 0x30], ecx
sub ebx, 2
sub dword [esp + 0x1c], 1
mov dword [esp + 0x10], ebx
jne 0x584011
mov edx, dword [esp + 0x44]
mov eax, dword [edx + 0x90]
mov ecx, dword [esp + 0x48]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov eax, dword [esp + 0x58]
add dword [esp + 0x14], eax
sub dword [esp + 0x4c], 1
mov dword [esp + 0x48], edx
jne 0x583fd4
jmp 0x58428d
cmp eax, 0x20
jne 0x58428b
mov ecx, edi
mov eax, dword [ecx + 0x90]
imul eax, dword [esp + 0x60]
mov esi, dword [esp + 0x68]
cdq
and edx, 3
add eax, edx
mov edx, dword [ecx + 0xa4]
sar eax, 2
add eax, ebx
test esi, esi
mov ebx, dword [ecx + 0xdc]
lea eax, [edx + eax*4]
mov edx, dword [ecx + 0xd8]
mov dword [esp + 0x4c], eax
mov eax, dword [ecx + 0xe0]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x10], eax
jle 0x58428b
fmul qword [esp + 0x88]
call fcn.006397d0
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x38], eax
mov dword [esp + 0x18], esi
nop
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x74]
sar eax, 0x10
imul eax, dword [edx + 0x24]
test ecx, ecx
mov edx, dword [esp + 0x78]
lea eax, [edx + eax*4]
mov dword [esp + 0x30], edi
mov dword [esp + 0x40], eax
jle 0x58425c
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x40]
sar ecx, 0x10
mov ecx, dword [edx + ecx*4]
mov esi, dword [edi]
mov edx, ecx
shr edx, 0x18
imul edx, dword [esp + 0x3c]
mov eax, 0x80808081
mul edx
shr edx, 7
je 0x58423a
mov eax, 0x100
sub eax, edx
mov edx, ecx
and edx, dword [esp + 0x10]
mov edi, esi
and edi, dword [esp + 0x10]
imul edx, dword [esp + 0x70]
imul edi, eax
add edx, edi
mov dword [esp + 0x20], eax
shr edx, 8
and edx, dword [esp + 0x10]
mov eax, ecx
and eax, ebx
imul eax, dword [esp + 0x50]
mov edi, esi
and edi, ebx
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x20]
imul edi, edx
add eax, edi
mov edi, dword [esp + 0x2c]
shr eax, 8
and eax, ebx
add edi, eax
mov eax, dword [esp + 0x1c]
and ecx, eax
imul ecx, dword [esp + 0x34]
and esi, eax
imul esi, edx
add ecx, esi
shr ecx, 8
and ecx, eax
add edi, ecx
mov eax, edi
mov edi, dword [esp + 0x30]
mov dword [edi], eax
mov ecx, dword [esp + 0x54]
add dword [esp + 0x48], ecx
sub edi, 4
sub dword [esp + 0x24], 1
mov dword [esp + 0x30], edi
jne 0x5841a2
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x44]
mov eax, dword [edx + 0x90]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edi, [edi + eax*4]
mov eax, dword [esp + 0x58]
add dword [esp + 0x14], eax
sub dword [esp + 0x18], 1
mov dword [esp + 0x4c], edi
jne 0x584170
jmp 0x58428d
fstp st(0)
mov ecx, dword [esp + 0x44]
mov edx, dword [ecx]
mov eax, dword [edx + 0xc0]
call eax
mov edi, dword [esp + 0x44]
mov esi, edi
call fcn.0056c560
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x1c
mov ecx, dword [esi + 0x4c]
mov edx, dword [edi]
mov eax, dword [edx + 0xbc]
mov dword [esp + 0x58], ecx
mov ecx, edi
call eax
test al, al
je 0x5842a6
fld qword [esp + 0x90]
fld qword [0x679478]
fmul st(1), st(0)
fxch st(1)
call fcn.006397d0
fld qword [esp + 0x98]
fmul st(1)
mov dword [esp + 0x14], eax
fidiv dword [esp + 0x64]
call fcn.006397d0
fld qword [esp + 0xa0]
fmul st(1)
mov dword [esp + 0x3c], eax
fidiv dword [esp + 0x68]
call fcn.006397d0
mov esi, dword [ebp + 0x18]
mov dword [esp + 0x70], eax
mov eax, esi
call fcn.00564470
test al, al
je 0x5845b8
mov eax, dword [edi + 0xd4]
cmp eax, 0x10
jne 0x584466
mov eax, dword [edi + 0x90]
imul eax, dword [esp + 0x60]
mov ecx, dword [edi + 0xa4]
mov esi, dword [edi + 0xdc]
cdq
sub eax, edx
sar eax, 1
add eax, ebx
mov ebx, dword [esp + 0x68]
test ebx, ebx
lea edx, [ecx + eax*2]
mov eax, dword [edi + 0xd8]
mov edi, dword [edi + 0xe0]
mov dword [esp + 0x30], edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x2c], esi
mov dword [esp + 0x28], edi
jle 0x58428b
fmul qword [esp + 0x88]
call fcn.006397d0
mov dword [esp + 0x38], eax
mov dword [esp + 0x50], ebx
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x30]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x14]
sar ecx, 0x10
imul ecx, dword [eax + 0x24]
add ecx, dword [esp + 0x58]
cmp dword [esp + 0x64], 0
mov dword [esp + 0x24], ecx
jle 0x584434
mov eax, dword [esp + 0x64]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x78]
sar eax, 0x10
movzx eax, byte [eax + ecx]
mov ebx, dword [ebx + eax*4]
movzx eax, word [edx]
mov dword [esp + 0x40], ebx
shr ebx, 0x18
je 0x584422
mov ecx, 0x100
sub ecx, ebx
mov ebx, eax
and ebx, edi
imul ebx, ecx
shr ebx, 8
and ebx, edi
mov edi, eax
and edi, esi
imul edi, ecx
shr edi, 8
and edi, esi
mov esi, dword [esp + 0x20]
add edi, dword [esp + 0x40]
and eax, esi
imul eax, ecx
mov ecx, dword [esp + 0x24]
shr eax, 8
and eax, esi
mov esi, dword [esp + 0x2c]
add edi, ebx
add eax, edi
mov edi, dword [esp + 0x28]
mov word [edx], ax
mov eax, dword [esp + 0x3c]
add dword [esp + 0x10], eax
sub edx, 2
sub dword [esp + 0x34], 1
jne 0x5843c0
mov ecx, dword [esp + 0x44]
mov eax, dword [ecx + 0x90]
mov ecx, dword [esp + 0x70]
add dword [esp + 0x14], ecx
cdq
sub eax, edx
mov edx, dword [esp + 0x30]
sar eax, 1
sub dword [esp + 0x50], 1
lea eax, [edx + eax*2]
mov dword [esp + 0x30], eax
jne 0x58438a
jmp 0x58428d
cmp eax, 0x20
jne 0x58428b
mov ecx, edi
mov eax, dword [ecx + 0x90]
imul eax, dword [esp + 0x60]
mov esi, dword [ecx + 0xdc]
mov edi, dword [ecx + 0xe0]
cdq
and edx, 3
add eax, edx
mov edx, dword [ecx + 0xa4]
sar eax, 2
add eax, ebx
mov ebx, dword [esp + 0x68]
test ebx, ebx
lea eax, [edx + eax*4]
mov edx, dword [ecx + 0xd8]
mov dword [esp + 0x30], eax
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], esi
mov dword [esp + 0x2c], edi
jle 0x58428b
fmul qword [esp + 0x88]
call fcn.006397d0
mov dword [esp + 0x38], eax
mov dword [esp + 0x50], ebx
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x30]
sar ecx, 0x10
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x74]
imul ecx, dword [eax + 0x24]
add ecx, dword [esp + 0x58]
cmp dword [esp + 0x64], 0
mov dword [esp + 0x28], ecx
jle 0x584582
mov eax, dword [esp + 0x64]
mov dword [esp + 0x34], eax
jmp 0x584510
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x78]
sar eax, 0x10
movzx eax, byte [eax + ecx]
mov ebx, dword [ebx + eax*4]
mov eax, dword [edx]
mov dword [esp + 0x40], ebx
shr ebx, 0x18
je 0x584570
mov ecx, 0x100
sub ecx, ebx
mov ebx, eax
and ebx, edi
imul ebx, ecx
shr ebx, 8
and ebx, edi
mov edi, eax
and edi, esi
imul edi, ecx
shr edi, 8
and edi, esi
mov esi, dword [esp + 0x20]
add edi, dword [esp + 0x40]
and eax, esi
imul eax, ecx
mov ecx, dword [esp + 0x28]
shr eax, 8
and eax, esi
mov esi, dword [esp + 0x24]
add edi, ebx
add eax, edi
mov edi, dword [esp + 0x2c]
mov dword [edx], eax
mov eax, dword [esp + 0x3c]
add dword [esp + 0x10], eax
sub edx, 4
sub dword [esp + 0x34], 1
jne 0x584510
mov ecx, dword [esp + 0x44]
mov eax, dword [ecx + 0x90]
mov ecx, dword [esp + 0x70]
add dword [esp + 0x14], ecx
cdq
and edx, 3
add eax, edx
mov edx, dword [esp + 0x30]
sar eax, 2
sub dword [esp + 0x50], 1
lea eax, [edx + eax*4]
mov dword [esp + 0x30], eax
jne 0x5844d2
jmp 0x58428d
mov eax, dword [esi + 0xc]
mov ecx, dword [esi]
imul ecx, eax
mov dword [esp + 0x54], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esi + 4]
imul ecx, dword [esp + 0x54]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x28], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esi + 8]
imul ecx, dword [esp + 0x54]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x2c], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x1c], eax
mov eax, dword [edi + 0xd4]
cmp eax, 0x10
jne 0x5847b2
mov eax, dword [edi + 0x90]
imul eax, dword [esp + 0x60]
mov ecx, dword [edi + 0xd8]
mov esi, dword [esp + 0x68]
cdq
sub eax, edx
mov edx, dword [edi + 0xa4]
sar eax, 1
add eax, ebx
test esi, esi
lea eax, [edx + eax*2]
mov edx, dword [edi + 0xdc]
mov edi, dword [edi + 0xe0]
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x34], edx
mov dword [esp + 0x50], edi
jle 0x58428b
fmul qword [esp + 0x88]
call fcn.006397d0
mov dword [esp + 0x38], eax
mov dword [esp + 0x18], esi
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x74]
mov ebx, dword [esp + 0x48]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x14]
sar eax, 0x10
imul eax, dword [ecx + 0x24]
add eax, dword [esp + 0x58]
cmp dword [esp + 0x64], 0
mov dword [esp + 0x10], ebx
mov dword [esp + 0x40], eax
jle 0x584780
mov edx, dword [esp + 0x64]
mov dword [esp + 0x24], edx
nop
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x40]
sar eax, 0x10
movzx edx, byte [eax + ecx]
mov eax, dword [esp + 0x78]
mov esi, dword [eax + edx*4]
movzx ecx, word [ebx]
mov edx, esi
shr edx, 0x18
imul edx, dword [esp + 0x54]
mov eax, 0x80808081
mul edx
shr edx, 7
je 0x584766
mov eax, 0x100
sub eax, edx
mov edx, ecx
and edx, edi
imul edx, eax
mov ebx, esi
and ebx, edi
imul ebx, dword [esp + 0x1c]
add edx, ebx
shr edx, 8
and edx, dword [esp + 0x50]
mov edi, ecx
mov dword [esp + 0x6c], eax
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x34]
and edi, edx
imul edi, eax
mov eax, esi
and eax, edx
imul eax, dword [esp + 0x2c]
add edi, eax
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x10]
shr edi, 8
and edi, edx
add eax, edi
mov edi, dword [esp + 0x50]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x4c]
and ecx, eax
imul ecx, dword [esp + 0x6c]
and esi, eax
imul esi, dword [esp + 0x28]
add ecx, esi
shr ecx, 8
and ecx, eax
mov eax, dword [esp + 0x20]
add eax, ecx
mov word [ebx], ax
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x30], ecx
sub ebx, 2
sub dword [esp + 0x24], 1
mov dword [esp + 0x10], ebx
jne 0x5846c0
mov edx, dword [esp + 0x44]
mov eax, dword [edx + 0x90]
mov ecx, dword [esp + 0x48]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov eax, dword [esp + 0x70]
add dword [esp + 0x14], eax
sub dword [esp + 0x18], 1
mov dword [esp + 0x48], edx
jne 0x584685
jmp 0x58428d
cmp eax, 0x20
jne 0x58428b
mov ecx, edi
mov eax, dword [ecx + 0x90]
imul eax, dword [esp + 0x60]
mov esi, dword [esp + 0x68]
cdq
and edx, 3
add eax, edx
mov edx, dword [ecx + 0xa4]
sar eax, 2
add eax, ebx
test esi, esi
mov ebx, dword [ecx + 0xdc]
lea eax, [edx + eax*4]
mov edx, dword [ecx + 0xd8]
mov dword [esp + 0x4c], eax
mov eax, dword [ecx + 0xe0]
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], eax
jle 0x58428b
fmul qword [esp + 0x88]
call fcn.006397d0
mov ecx, dword [esp + 0x64]
mov edi, dword [esp + 0x4c]
mov dword [esp + 0x38], eax
mov dword [esp + 0x50], esi
jmp 0x584830
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x14]
sar eax, 0x10
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x74]
imul eax, dword [edx + 0x24]
add eax, dword [esp + 0x58]
test ecx, ecx
mov dword [esp + 0x30], edi
mov dword [esp + 0x6c], eax
jle 0x584922
mov dword [esp + 0x34], ecx
nop
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x6c]
sar eax, 0x10
movzx edx, byte [eax + ecx]
mov eax, dword [esp + 0x78]
mov ecx, dword [eax + edx*4]
mov esi, dword [edi]
mov edx, ecx
shr edx, 0x18
imul edx, dword [esp + 0x54]
mov eax, 0x80808081
mul edx
shr edx, 7
je 0x584900
mov eax, 0x100
sub eax, edx
mov edx, ecx
and edx, dword [esp + 0x10]
mov edi, esi
and edi, dword [esp + 0x10]
imul edx, dword [esp + 0x1c]
imul edi, eax
add edx, edi
mov dword [esp + 0x40], eax
shr edx, 8
and edx, dword [esp + 0x10]
mov eax, ecx
and eax, ebx
imul eax, dword [esp + 0x2c]
mov edi, esi
and edi, ebx
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x40]
imul edi, edx
add eax, edi
mov edi, dword [esp + 0x24]
shr eax, 8
and eax, ebx
add edi, eax
mov eax, dword [esp + 0x18]
and ecx, eax
imul ecx, dword [esp + 0x28]
and esi, eax
imul esi, edx
add ecx, esi
shr ecx, 8
and ecx, eax
add edi, ecx
mov eax, edi
mov edi, dword [esp + 0x30]
mov dword [edi], eax
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x48], ecx
sub edi, 4
sub dword [esp + 0x34], 1
mov dword [esp + 0x30], edi
jne 0x584860
mov ecx, dword [esp + 0x64]
mov edi, dword [esp + 0x4c]
mov edx, dword [esp + 0x44]
mov eax, dword [edx + 0x90]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edi, [edi + eax*4]
mov eax, dword [esp + 0x70]
add dword [esp + 0x14], eax
sub dword [esp + 0x50], 1
mov dword [esp + 0x4c], edi
jne 0x584830
jmp 0x58428d
cmp dword [esi + 0x48], 0
mov edx, dword [edi]
mov eax, dword [edx + 0xbc]
jne 0x58512d
mov ecx, edi
call eax
test al, al
je 0x5842a6
mov eax, dword [edi + 0x6c]
fld qword [esp + 0x90]
mov ecx, dword [eax + 0xd0]
fld qword [0x679478]
mov edx, dword [eax + 0xd4]
fmul st(1), st(0)
mov esi, dword [eax + 0x28]
fxch st(1)
mov dword [esp + 0x4c], ecx
mov ecx, dword [eax + 0xd8]
mov dword [esp + 0x58], edx
mov edx, dword [eax + 0x20]
mov dword [esp + 0x70], ecx
mov ecx, dword [eax + 0x24]
mov dword [esp + 0x54], edx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x34], esi
call fcn.006397d0
fld qword [esp + 0x98]
fmul st(1)
mov dword [esp + 0x14], eax
fidiv dword [esp + 0x64]
call fcn.006397d0
fld qword [esp + 0xa0]
fmul st(1)
mov dword [esp + 0x48], eax
fidiv dword [esp + 0x68]
call fcn.006397d0
mov dword [esp + 0x30], eax
mov eax, dword [ebp + 0x18]
call fcn.00564470
test al, al
je 0x584d1c
mov eax, dword [edi + 0xd4]
cmp eax, 0x10
jne 0x584b92
mov eax, dword [edi + 0x90]
imul eax, dword [esp + 0x60]
mov ecx, dword [edi + 0xd8]
cdq
sub eax, edx
mov edx, dword [edi + 0xa4]
sar eax, 1
add eax, ebx
cmp dword [esp + 0x68], 0
mov ebx, dword [edi + 0xe0]
lea eax, [edx + eax*2]
mov edx, dword [edi + 0xdc]
mov dword [esp + 0x18], eax
mov dword [esp + 0x40], ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x20], ebx
jle 0x58510f
fmul qword [esp + 0x88]
call fcn.006397d0
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x34], eax
lea ecx, [ecx]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x38]
sar edx, 0x10
imul edx, dword [eax + 0x24]
mov eax, dword [esp + 0x78]
lea edx, [eax + edx*4]
mov eax, dword [esp + 0x64]
test eax, eax
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x6c], edx
jle 0x584b4d
mov dword [esp + 0x2c], eax
lea ebx, [ebx]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x6c]
sar eax, 0x10
mov edx, dword [edx + eax*4]
test edx, edx
movzx eax, word [ecx]
je 0x584b33
mov edi, eax
and edi, ebx
mov ecx, edx
and ecx, ebx
add edi, ecx
mov ecx, esi
shr edi, cl
mov ecx, dword [esp + 0x70]
mov ebx, eax
and ebx, dword [esp + 0x28]
mov di, word [ecx + edi*4]
mov ecx, esi
shl di, cl
mov ecx, edx
and ecx, dword [esp + 0x28]
add ebx, ecx
mov ecx, dword [esp + 0x3c]
shr ebx, cl
mov ecx, dword [esp + 0x58]
mov bx, word [ecx + ebx*4]
mov ecx, dword [esp + 0x3c]
shl bx, cl
mov ecx, dword [esp + 0x40]
and eax, ecx
and edx, ecx
mov ecx, dword [esp + 0x54]
add eax, edx
mov edx, dword [esp + 0x4c]
shr eax, cl
or di, bx
mov ebx, dword [esp + 0x20]
mov ax, word [edx + eax*4]
shl ax, cl
mov ecx, dword [esp + 0x10]
or di, ax
mov word [ecx], di
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
add dword [esp + 0x1c], edx
sub ecx, 2
sub dword [esp + 0x2c], 1
mov dword [esp + 0x10], ecx
jne 0x584ab0
mov eax, dword [edi + 0x90]
mov ecx, dword [esp + 0x18]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov eax, dword [esp + 0x30]
add dword [esp + 0x14], eax
sub dword [esp + 0x34], 1
mov dword [esp + 0x18], edx
jne 0x584a70
mov edx, dword [edi]
mov eax, dword [edx + 0xc0]
mov ecx, edi
call eax
mov esi, edi
call fcn.0056c560
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x1c
cmp eax, 0x20
jne 0x58510f
mov eax, dword [edi + 0x90]
imul eax, dword [esp + 0x60]
mov ecx, dword [edi + 0xa4]
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, ebx
cmp dword [esp + 0x68], 0
mov ebx, dword [edi + 0xe0]
lea edx, [ecx + eax*4]
mov eax, dword [edi + 0xd8]
mov ecx, dword [edi + 0xdc]
mov dword [esp + 0x10], edx
mov dword [esp + 0x40], eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x20], ebx
jle 0x58510f
fmul qword [esp + 0x88]
call fcn.006397d0
mov edx, dword [esp + 0x68]
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], edx
nop
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x74]
sar edx, 0x10
imul edx, dword [eax + 0x24]
mov eax, dword [esp + 0x78]
lea edx, [eax + edx*4]
mov eax, dword [esp + 0x64]
test eax, eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x6c], edx
jle 0x584cd3
mov dword [esp + 0x2c], eax
lea ebx, [ebx]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x6c]
sar eax, 0x10
mov edx, dword [edx + eax*4]
test edx, edx
mov eax, dword [ecx]
je 0x584cb9
mov edi, eax
and edi, ebx
mov ecx, edx
and ecx, ebx
add edi, ecx
mov ecx, esi
shr edi, cl
mov ecx, dword [esp + 0x70]
mov ebx, eax
and ebx, dword [esp + 0x28]
mov edi, dword [ecx + edi*4]
mov ecx, esi
shl edi, cl
mov ecx, edx
and ecx, dword [esp + 0x28]
add ebx, ecx
mov ecx, dword [esp + 0x3c]
shr ebx, cl
mov ecx, dword [esp + 0x58]
mov ebx, dword [ecx + ebx*4]
mov ecx, dword [esp + 0x3c]
shl ebx, cl
mov ecx, dword [esp + 0x40]
and eax, ecx
and edx, ecx
mov ecx, dword [esp + 0x54]
add eax, edx
mov edx, dword [esp + 0x4c]
shr eax, cl
or edi, ebx
mov ebx, dword [esp + 0x20]
mov eax, dword [edx + eax*4]
shl eax, cl
mov ecx, dword [esp + 0x18]
or edi, eax
mov dword [ecx], edi
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
add dword [esp + 0x1c], edx
sub ecx, 4
sub dword [esp + 0x2c], 1
mov dword [esp + 0x18], ecx
jne 0x584c40
mov eax, dword [edi + 0x90]
mov ecx, dword [esp + 0x10]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x30]
add dword [esp + 0x14], eax
sub dword [esp + 0x34], 1
mov dword [esp + 0x10], edx
jne 0x584c00
mov edx, dword [edi]
mov eax, dword [edx + 0xc0]
mov ecx, edi
call eax
mov esi, edi
call fcn.0056c560
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x1c
mov ecx, dword [ebp + 0x18]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ecx]
imul ecx, eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax + 4]
mov eax, dword [eax + 0xc]
imul ecx, eax
mov dword [esp + 0x6c], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [ebp + 0x18]
mov ecx, dword [ecx + 8]
imul ecx, dword [esp + 0x6c]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x24], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x50], eax
mov eax, dword [edi + 0xd4]
cmp eax, 0x10
jne 0x584f53
mov eax, dword [edi + 0x90]
imul eax, dword [esp + 0x60]
mov ecx, dword [edi + 0xd8]
cdq
sub eax, edx
mov edx, dword [edi + 0xa4]
sar eax, 1
add eax, ebx
cmp dword [esp + 0x68], 0
mov ebx, dword [edi + 0xe0]
lea eax, [edx + eax*2]
mov edx, dword [edi + 0xdc]
mov dword [esp + 0x10], eax
mov dword [esp + 0x84], ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x7c], ebx
jle 0x58510f
fmul qword [esp + 0x88]
call fcn.006397d0
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x34], eax
lea esp, [esp]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x38]
sar edx, 0x10
imul edx, dword [eax + 0x24]
mov eax, dword [esp + 0x78]
lea edx, [eax + edx*4]
mov eax, dword [esp + 0x64]
test eax, eax
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x6c], edx
jle 0x584f0e
mov dword [esp + 0x2c], eax
lea ebx, [ebx]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x6c]
sar eax, 0x10
mov eax, dword [edx + eax*4]
test eax, eax
movzx edx, word [ecx]
mov dword [esp + 0x80], edx
je 0x584ef4
mov edi, eax
and edi, ebx
mov ecx, esi
shr edi, cl
mov ecx, edx
and ecx, ebx
and edx, dword [esp + 0x28]
imul edi, dword [esp + 0x50]
mov ebx, ecx
shr edi, 8
mov ecx, esi
shr ebx, cl
mov ecx, dword [esp + 0x70]
add edi, ebx
mov bx, word [ecx + edi*4]
mov edi, eax
and edi, dword [esp + 0x28]
mov ecx, esi
shl bx, cl
mov ecx, dword [esp + 0x3c]
shr edi, cl
shr edx, cl
imul edi, dword [esp + 0x24]
shr edi, 8
add edi, edx
mov edx, dword [esp + 0x58]
mov dx, word [edx + edi*4]
mov edi, dword [esp + 0x84]
shl dx, cl
mov ecx, dword [esp + 0x54]
and eax, edi
shr eax, cl
or bx, dx
mov edx, dword [esp + 0x80]
and edx, edi
imul eax, dword [esp + 0x20]
mov edi, dword [esp + 0x44]
shr edx, cl
shr eax, 8
add eax, edx
mov edx, dword [esp + 0x4c]
mov ax, word [edx + eax*4]
shl ax, cl
mov ecx, dword [esp + 0x18]
or bx, ax
mov word [ecx], bx
mov ebx, dword [esp + 0x7c]
mov edx, dword [esp + 0x48]
add dword [esp + 0x1c], edx
sub ecx, 2
sub dword [esp + 0x2c], 1
mov dword [esp + 0x18], ecx
jne 0x584e40
mov eax, dword [edi + 0x90]
mov ecx, dword [esp + 0x10]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov eax, dword [esp + 0x30]
add dword [esp + 0x14], eax
sub dword [esp + 0x34], 1
mov dword [esp + 0x10], edx
jne 0x584e00
mov edx, dword [edi]
mov eax, dword [edx + 0xc0]
mov ecx, edi
call eax
mov esi, edi
call fcn.0056c560
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x1c
cmp eax, 0x20
jne 0x58510f
mov eax, dword [edi + 0x90]
imul eax, dword [esp + 0x60]
mov ecx, dword [edi + 0xa4]
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, ebx
cmp dword [esp + 0x68], 0
mov ebx, dword [edi + 0xe0]
lea edx, [ecx + eax*4]
mov eax, dword [edi + 0xd8]
mov ecx, dword [edi + 0xdc]
mov dword [esp + 0x10], edx
mov dword [esp + 0x6c], eax
mov dword [esp + 0x84], ecx
mov dword [esp + 0x40], ebx
jle 0x58510f
fmul qword [esp + 0x88]
call fcn.006397d0
mov edx, dword [esp + 0x68]
mov dword [esp + 0x38], eax
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x74]
sar edx, 0x10
imul edx, dword [eax + 0x24]
mov eax, dword [esp + 0x78]
lea edx, [eax + edx*4]
mov eax, dword [esp + 0x64]
test eax, eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x7c], edx
jle 0x5850c6
mov dword [esp + 0x28], eax
lea ecx, [ecx]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x7c]
sar eax, 0x10
mov eax, dword [edx + eax*4]
test eax, eax
mov edx, dword [ecx]
je 0x5850ac
mov edi, eax
and edi, ebx
mov ecx, esi
shr edi, cl
mov ecx, edx
and ecx, ebx
mov ebx, ecx
imul edi, dword [esp + 0x50]
mov ecx, esi
shr ebx, cl
mov ecx, dword [esp + 0x70]
shr edi, 8
add edi, ebx
mov edi, dword [ecx + edi*4]
mov ecx, esi
mov esi, dword [esp + 0x84]
shl edi, cl
mov ecx, dword [esp + 0x3c]
mov ebx, eax
and ebx, esi
shr ebx, cl
mov ecx, edx
and ecx, esi
mov esi, ecx
imul ebx, dword [esp + 0x24]
mov ecx, dword [esp + 0x3c]
shr esi, cl
mov ecx, dword [esp + 0x58]
shr ebx, 8
add ebx, esi
mov esi, dword [ecx + ebx*4]
mov ecx, dword [esp + 0x3c]
shl esi, cl
mov ecx, dword [esp + 0x54]
mov ebx, dword [esp + 0x40]
or edi, esi
mov esi, dword [esp + 0x6c]
and eax, esi
shr eax, cl
and edx, esi
mov esi, dword [esp + 0x34]
shr edx, cl
imul eax, dword [esp + 0x20]
shr eax, 8
add eax, edx
mov edx, dword [esp + 0x4c]
mov eax, dword [edx + eax*4]
shl eax, cl
mov ecx, dword [esp + 0x18]
or edi, eax
mov dword [ecx], edi
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
add dword [esp + 0x1c], edx
sub ecx, 4
sub dword [esp + 0x28], 1
mov dword [esp + 0x18], ecx
jne 0x585000
mov eax, dword [edi + 0x90]
mov ecx, dword [esp + 0x10]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x30]
add dword [esp + 0x14], eax
sub dword [esp + 0x2c], 1
mov dword [esp + 0x10], edx
jne 0x584fc3
mov edx, dword [edi]
mov eax, dword [edx + 0xc0]
mov ecx, edi
call eax
mov esi, edi
call fcn.0056c560
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x1c
fstp st(0)
mov edx, dword [edi]
mov eax, dword [edx + 0xc0]
mov ecx, edi
call eax
mov esi, edi
call fcn.0056c560
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x1c
mov ecx, dword [esi + 0x4c]
mov dword [esp + 0x30], ecx
mov ecx, edi
call eax
test al, al
je 0x5842a6
mov eax, dword [edi + 0x6c]
fld qword [esp + 0x90]
mov ecx, dword [eax + 0xd0]
fld qword [0x679478]
mov edx, dword [eax + 0xd4]
fmul st(1), st(0)
mov esi, dword [eax + 0x28]
fxch st(1)
mov dword [esp + 0x58], ecx
mov ecx, dword [eax + 0xd8]
mov dword [esp + 0x4c], edx
mov edx, dword [eax + 0x20]
mov dword [esp + 0x48], ecx
mov ecx, dword [eax + 0x24]
mov dword [esp + 0x70], edx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x6c], esi
call fcn.006397d0
fld qword [esp + 0x98]
fmul st(1)
mov dword [esp + 0x14], eax
fidiv dword [esp + 0x64]
call fcn.006397d0
fld qword [esp + 0xa0]
fmul st(1)
mov dword [esp + 0x54], eax
fidiv dword [esp + 0x68]
call fcn.006397d0
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x18]
call fcn.00564470
test al, al
je 0x5854e3
mov eax, dword [edi + 0xd4]
cmp eax, 0x10
jne 0x58535d
mov eax, dword [edi + 0x90]
imul eax, dword [esp + 0x60]
mov ecx, dword [edi + 0xd8]
cdq
sub eax, edx
mov edx, dword [edi + 0xa4]
sar eax, 1
add eax, ebx
cmp dword [esp + 0x68], 0
mov ebx, dword [edi + 0xe0]
lea eax, [edx + eax*2]
mov edx, dword [edi + 0xdc]
mov dword [esp + 0x24], eax
mov dword [esp + 0x80], ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x84], ebx
jle 0x58510f
fmul qword [esp + 0x88]
call fcn.006397d0
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x38]
sar eax, 0x10
imul eax, dword [edx + 0x24]
add eax, dword [esp + 0x30]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x64]
test eax, eax
mov dword [esp + 0x18], ecx
jle 0x58532f
mov dword [esp + 0x28], eax
jmp 0x585280
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x7c]
sar eax, 0x10
movzx eax, byte [eax + edx]
mov edx, dword [esp + 0x78]
mov edx, dword [edx + eax*4]
test edx, edx
movzx eax, word [ecx]
je 0x585315
mov edi, eax
and edi, ebx
mov ecx, edx
and ecx, ebx
add edi, ecx
mov ecx, esi
shr edi, cl
mov ecx, dword [esp + 0x48]
mov ebx, eax
and ebx, dword [esp + 0x20]
mov di, word [ecx + edi*4]
mov ecx, esi
shl di, cl
mov ecx, edx
and ecx, dword [esp + 0x20]
add ebx, ecx
mov ecx, dword [esp + 0x3c]
shr ebx, cl
mov ecx, dword [esp + 0x4c]
mov bx, word [ecx + ebx*4]
mov ecx, dword [esp + 0x3c]
shl bx, cl
mov ecx, dword [esp + 0x80]
and eax, ecx
and edx, ecx
mov ecx, dword [esp + 0x70]
add eax, edx
mov edx, dword [esp + 0x58]
shr eax, cl
or di, bx
mov ebx, dword [esp + 0x84]
mov ax, word [edx + eax*4]
shl ax, cl
mov ecx, dword [esp + 0x18]
or di, ax
mov word [ecx], di
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 0x54]
add dword [esp + 0x1c], edx
sub ecx, 2
sub dword [esp + 0x28], 1
mov dword [esp + 0x18], ecx
jne 0x585280
mov eax, dword [edi + 0x90]
mov ecx, dword [esp + 0x24]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov eax, dword [esp + 0x10]
add dword [esp + 0x14], eax
sub dword [esp + 0x2c], 1
mov dword [esp + 0x24], edx
jne 0x585241
jmp 0x585111
cmp eax, 0x20
jne 0x58510f
mov eax, dword [edi + 0x90]
imul eax, dword [esp + 0x60]
mov ecx, dword [edi + 0xa4]
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, ebx
cmp dword [esp + 0x68], 0
mov ebx, dword [edi + 0xe0]
lea edx, [ecx + eax*4]
mov eax, dword [edi + 0xd8]
mov ecx, dword [edi + 0xdc]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x80], eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x84], ebx
jle 0x58510f
fmul qword [esp + 0x88]
call fcn.006397d0
mov edx, dword [esp + 0x68]
mov dword [esp + 0x38], eax
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
sar eax, 0x10
imul eax, dword [edx + 0x24]
add eax, dword [esp + 0x30]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x64]
test eax, eax
jle 0x5854b1
mov dword [esp + 0x28], eax
jmp 0x585410
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x7c]
sar eax, 0x10
movzx eax, byte [eax + edx]
mov edx, dword [esp + 0x78]
mov edx, dword [edx + eax*4]
test edx, edx
mov eax, dword [ecx]
je 0x585497
mov edi, eax
and edi, ebx
mov ecx, edx
and ecx, ebx
add edi, ecx
mov ecx, esi
shr edi, cl
mov ecx, dword [esp + 0x48]
mov ebx, eax
and ebx, dword [esp + 0x20]
mov edi, dword [ecx + edi*4]
mov ecx, esi
shl edi, cl
mov ecx, edx
and ecx, dword [esp + 0x20]
add ebx, ecx
mov ecx, dword [esp + 0x3c]
shr ebx, cl
mov ecx, dword [esp + 0x4c]
mov ebx, dword [ecx + ebx*4]
mov ecx, dword [esp + 0x3c]
shl ebx, cl
mov ecx, dword [esp + 0x80]
and eax, ecx
and edx, ecx
mov ecx, dword [esp + 0x70]
add eax, edx
mov edx, dword [esp + 0x58]
shr eax, cl
or edi, ebx
mov ebx, dword [esp + 0x84]
mov eax, dword [edx + eax*4]
shl eax, cl
mov ecx, dword [esp + 0x24]
or edi, eax
mov dword [ecx], edi
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 0x54]
add dword [esp + 0x18], edx
sub ecx, 4
sub dword [esp + 0x28], 1
mov dword [esp + 0x24], ecx
jne 0x585410
mov eax, dword [edi + 0x90]
mov ecx, dword [esp + 0x1c]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x10]
add dword [esp + 0x14], eax
sub dword [esp + 0x2c], 1
mov dword [esp + 0x1c], edx
jne 0x5853d0
jmp 0x585111
mov ecx, dword [ebp + 0x18]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ecx]
imul ecx, eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x40], eax
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax + 4]
mov eax, dword [eax + 0xc]
imul ecx, eax
mov dword [esp + 0x7c], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [ebp + 0x18]
mov ecx, dword [ecx + 8]
imul ecx, dword [esp + 0x7c]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x50], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x34], eax
mov eax, dword [edi + 0xd4]
cmp eax, 0x10
jne 0x585701
mov eax, dword [edi + 0x90]
imul eax, dword [esp + 0x60]
mov ecx, dword [edi + 0xd8]
cdq
sub eax, edx
mov edx, dword [edi + 0xa4]
sar eax, 1
add eax, ebx
cmp dword [esp + 0x68], 0
mov ebx, dword [edi + 0xe0]
lea eax, [edx + eax*2]
mov edx, dword [edi + 0xdc]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x84], ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0xac], ebx
jle 0x58510f
fmul qword [esp + 0x88]
call fcn.006397d0
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x38]
sar eax, 0x10
imul eax, dword [edx + 0x24]
add eax, dword [esp + 0x30]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x64]
test eax, eax
mov dword [esp + 0x24], ecx
jle 0x5856d3
mov dword [esp + 0x28], eax
lea ebx, [ebx]
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x7c]
sar eax, 0x10
movzx eax, byte [eax + edx]
mov edx, dword [esp + 0x78]
mov eax, dword [edx + eax*4]
test eax, eax
movzx edx, word [ecx]
mov dword [esp + 0x6c], edx
je 0x5856b9
mov edi, eax
and edi, ebx
mov ecx, esi
shr edi, cl
mov ecx, edx
and ecx, ebx
and edx, dword [esp + 0x20]
imul edi, dword [esp + 0x34]
mov ebx, ecx
shr edi, 8
mov ecx, esi
shr ebx, cl
mov ecx, dword [esp + 0x48]
add edi, ebx
mov bx, word [ecx + edi*4]
mov edi, eax
and edi, dword [esp + 0x20]
mov ecx, esi
shl bx, cl
mov ecx, dword [esp + 0x3c]
shr edi, cl
shr edx, cl
imul edi, dword [esp + 0x50]
shr edi, 8
add edi, edx
mov edx, dword [esp + 0x4c]
mov dx, word [edx + edi*4]
mov edi, dword [esp + 0x84]
shl dx, cl
mov ecx, dword [esp + 0x70]
and eax, edi
shr eax, cl
or bx, dx
mov edx, dword [esp + 0x6c]
and edx, edi
imul eax, dword [esp + 0x40]
mov edi, dword [esp + 0x44]
shr edx, cl
shr eax, 8
add eax, edx
mov edx, dword [esp + 0x58]
mov ax, word [edx + eax*4]
shl ax, cl
mov ecx, dword [esp + 0x24]
or bx, ax
mov word [ecx], bx
mov ebx, dword [esp + 0xac]
mov edx, dword [esp + 0x54]
add dword [esp + 0x18], edx
sub ecx, 2
sub dword [esp + 0x28], 1
mov dword [esp + 0x24], ecx
jne 0x585600
mov eax, dword [edi + 0x90]
mov ecx, dword [esp + 0x1c]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov eax, dword [esp + 0x10]
add dword [esp + 0x14], eax
sub dword [esp + 0x2c], 1
mov dword [esp + 0x1c], edx
jne 0x5855c3
jmp 0x585111
cmp eax, 0x20
jne 0x58510f
mov eax, dword [edi + 0x90]
imul eax, dword [esp + 0x60]
mov ecx, dword [edi + 0xa4]
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, ebx
cmp dword [esp + 0x68], 0
mov ebx, dword [edi + 0xe0]
lea edx, [ecx + eax*4]
mov eax, dword [edi + 0xd8]
mov ecx, dword [edi + 0xdc]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x84], eax
mov dword [esp + 0x80], ecx
mov dword [esp + 0x2c], ebx
jle 0x58510f
fmul qword [esp + 0x88]
call fcn.006397d0
mov edx, dword [esp + 0x68]
mov dword [esp + 0x38], eax
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
sar eax, 0x10
imul eax, dword [edx + 0x24]
add eax, dword [esp + 0x30]
mov dword [esp + 0x24], ecx
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0x64]
test eax, eax
jle 0x585884
mov dword [esp + 0x20], eax
mov edi, edi
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0xac]
sar eax, 0x10
movzx eax, byte [eax + edx]
mov edx, dword [esp + 0x78]
mov eax, dword [edx + eax*4]
test eax, eax
mov edx, dword [ecx]
je 0x58586a
mov edi, eax
and edi, ebx
mov ecx, esi
shr edi, cl
mov ecx, edx
and ecx, ebx
mov ebx, ecx
imul edi, dword [esp + 0x34]
mov ecx, esi
shr ebx, cl
mov ecx, dword [esp + 0x48]
shr edi, 8
add edi, ebx
mov edi, dword [ecx + edi*4]
mov ecx, esi
mov esi, dword [esp + 0x80]
shl edi, cl
mov ecx, dword [esp + 0x3c]
mov ebx, eax
and ebx, esi
shr ebx, cl
mov ecx, edx
and ecx, esi
mov esi, ecx
imul ebx, dword [esp + 0x50]
mov ecx, dword [esp + 0x3c]
shr esi, cl
mov ecx, dword [esp + 0x4c]
shr ebx, 8
add ebx, esi
mov esi, dword [ecx + ebx*4]
mov ecx, dword [esp + 0x3c]
shl esi, cl
mov ecx, dword [esp + 0x70]
mov ebx, dword [esp + 0x2c]
or edi, esi
mov esi, dword [esp + 0x84]
and eax, esi
shr eax, cl
and edx, esi
mov esi, dword [esp + 0x6c]
shr edx, cl
imul eax, dword [esp + 0x40]
shr eax, 8
add eax, edx
mov edx, dword [esp + 0x58]
mov eax, dword [edx + eax*4]
shl eax, cl
mov ecx, dword [esp + 0x24]
or edi, eax
mov dword [ecx], edi
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 0x54]
add dword [esp + 0x18], edx
sub ecx, 4
sub dword [esp + 0x20], 1
mov dword [esp + 0x24], ecx
jne 0x5857b0
mov eax, dword [edi + 0x90]
mov ecx, dword [esp + 0x1c]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x10]
add dword [esp + 0x14], eax
sub dword [esp + 0x28], 1
mov dword [esp + 0x1c], edx
jne 0x585774
jmp 0x585111