Function at 0x57a610
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0xf4
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, ecx
mov byte [esi + 4], 1
cmp byte [edi + 0x75], 0
mov dword [esp + 0xbc], edi
jne 0x58191f
mov eax, dword [edi]
mov edx, dword [eax + 0x68]
call edx
mov ecx, edi
call fcn.0056ba50
test al, al
je 0x57a69a
fld qword [ebp + 0x24]
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x20]
mov edx, dword [ebp + 0x1c]
sub esp, 8
fstp qword [esp]
push eax
fld dword [ebp + 0x30]
mov eax, dword [ebp + 0x18]
sub esp, 8
fstp dword [esp + 4]
fld dword [ebp + 0x2c]
fstp dword [esp]
push ecx
fld dword [ebp + 0x10]
mov ecx, dword [edi + 0x6c]
push edx
mov edx, dword [ecx + 0x30]
push eax
sub esp, 8
fstp dword [esp + 4]
fld dword [ebp + 0xc]
fstp dword [esp]
push esi
push edx
call fcn.00568470
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
cmp byte [edi + 0x79], 0
jne 0x5818e0
cmp byte [edi + 0x52], 0
jne 0x5818e0
cmp byte [edi + 0x51], 0
je 0x57a6be
cmp byte [edi + 0x77], 0
je 0x5818e0
mov eax, dword [edi + 0x6c]
cmp byte [eax + 0x38], 0
jne 0x5818e0
fldz
mov edx, dword [ebp + 0x18]
mov ebx, dword [ebp + 0x14]
fst qword [esp + 0xd8]
fst qword [esp + 0xe0]
sub esp, 0x10
fst qword [esp + 0xf8]
lea ecx, [esp + 0xe8]
fstp qword [esp + 0x100]
lea eax, [ebp + 0x10]
fld qword [ebp + 0x24]
fstp qword [esp + 8]
fld dword [ebp + 0x30]
fstp dword [esp + 4]
fld dword [ebp + 0x2c]
fstp dword [esp]
push ecx
push edx
lea ecx, [ebp + 0xc]
call fcn.00594db0
test al, al
je 0x58191f
push 0
push 0x6a5660
push 0x6a5a0c
push 0
push esi
call fcn.0061eefc
add esp, 0x14
push 0
push 0x6a5680
push 0x6a5a0c
push 0
push esi
mov ebx, eax
call fcn.0061eefc
add esp, 0x14
test ebx, ebx
je 0x581856
mov eax, dword [ebx]
mov edx, dword [eax + 0x68]
mov ecx, ebx
call edx
cmp dword [ebp + 0x20], 0
jne 0x57fda3
mov edi, dword [ebx + 0x48]
test edi, edi
jne 0x57d172
mov eax, ebx
call fcn.00588a10
mov edi, eax
mov eax, dword [ebp + 0x14]
imul edi, dword [eax + 4]
add edi, dword [eax]
mov eax, dword [ebx]
mov edx, dword [eax + 0x7c]
add edi, edi
mov ecx, ebx
add edi, edi
call edx
add eax, edi
fld qword [ebp + 0x24]
mov dword [esp + 0x80], eax
call fcn.00639f90
fstp qword [esp + 0xc8]
fld qword [ebp + 0x24]
call fcn.0063a180
fst qword [esp + 0xc0]
fld qword [esp + 0xc8]
fld qword [0x679478]
fmul st(1), st(0)
fxch st(1)
call fcn.006397d0
fmulp st(1)
mov edi, eax
mov dword [esp + 0x94], edi
call fcn.006397d0
mov ecx, dword [esp + 0xbc]
mov ebx, eax
mov eax, dword [ecx]
mov edx, dword [eax + 0xbc]
mov dword [esp + 0x70], ebx
call edx
test al, al
je 0x58191f
mov ecx, dword [esp + 0xbc]
mov eax, dword [ecx + 0x6c]
mov edx, dword [eax + 0x20]
mov dword [esp + 0xa4], edx
mov edx, dword [eax + 0x24]
mov dword [esp + 0x84], edx
mov edx, dword [eax + 0x28]
mov dword [esp + 0xd4], edx
mov edx, 0x20
sub edx, dword [eax + 0x14]
mov dword [esp + 0xd0], edx
mov edx, 0x18
sub edx, dword [eax + 0x18]
mov dword [esp + 0x98], edx
mov edx, 0x10
sub edx, dword [eax + 0x1c]
mov eax, dword [ecx + 0xd4]
cmp eax, 0x10
mov dword [esp + 0xb8], edx
mov edx, dword [ecx + 0xd8]
mov dword [esp + 0x34], edx
mov edx, dword [ecx + 0xdc]
mov ecx, dword [ecx + 0xe0]
mov dword [esp + 0xac], edx
mov dword [esp + 0x40], ecx
jne 0x57c212
fld qword [esp + 0xe0]
call fcn.006397d0
fld qword [esp + 0xd8]
mov dword [esp + 0x3c], eax
call fcn.006397d0
mov edx, dword [esp + 0xbc]
mov ecx, dword [edx + 0x90]
mov dword [esp + 0x64], eax
mov eax, ecx
imul eax, dword [esp + 0x3c]
cdq
sub eax, edx
mov edx, dword [esp + 0xbc]
mov edx, dword [edx + 0xa4]
sar eax, 1
add eax, dword [esp + 0x64]
lea eax, [edx + eax*2]
mov dword [esp + 0x50], eax
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x8c], eax
mov eax, dword [ebp + 0x1c]
call fcn.00564470
test al, al
fld qword [esp + 0xf0]
fcomp qword [0x679298]
je 0x57bcb8
cmp byte [0x6a9f64], 0
je 0x57b7c3
mov eax, dword [esp + 0xac]
cmp eax, 0x7e0
jne 0x57adf2
fnstsw ax
mov dword [esp + 0xa4], 0
test ah, 0x41
jne 0x57fd7d
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0x90]
fld dword [esp + 0x90]
fld st(0)
fld qword [esp + 0xc8]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xc0]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov ecx, dword [esp + 0x8c]
fld qword [0x679478]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
lea edx, [ecx + ecx]
mov dword [esp + 0x6c], edx
mov dword [esp + 0x98], eax
fild dword [esp + 0x98]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0x90]
fld dword [esp + 0x90]
fld qword [esp + 0xc0]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov dword [esp + 0x30], eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov edx, dword [esp + 0x64]
mov ecx, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x40], edx
mov edx, ecx
sar edx, 0x10
sar eax, 0x10
cmp edi, 0xffffffff
mov dword [esp + 0x2c], 0
mov dword [esp + 0x44], edx
jg 0x57aa41
test eax, eax
jl 0x57adb9
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, dword [esp + 0x30]
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x57aa29
mov dword [esp + 0x2c], eax
mov eax, 0x7fff
sub eax, dword [esp + 0x30]
cdq
idiv edi
cmp eax, dword [esp + 0x40]
jge 0x57aab2
mov dword [esp + 0x40], eax
jmp 0x57aab2
cmp edi, 1
jl 0x57aa8e
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
mov dword [esp + 0x3c], edx
add edx, 0xffffffff
cmp eax, edx
jge 0x57adb9
mov eax, 0x10000
sub eax, dword [esp + 0x30]
cdq
idiv edi
test eax, eax
jle 0x57aa6f
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, dword [esp + 0x30]
sub eax, 0x17fff
cdq
idiv edi
cmp eax, dword [esp + 0x40]
jge 0x57aab2
mov dword [esp + 0x40], eax
jmp 0x57aab2
cmp dword [esp + 0x30], 0
jl 0x57adb9
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp dword [esp + 0x30], edx
jge 0x57adb9
cmp ebx, 0xffffffff
jg 0x57aaf2
cmp dword [esp + 0x44], 0
jl 0x57adb9
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv ebx
cmp eax, dword [esp + 0x2c]
jle 0x57aadf
mov dword [esp + 0x2c], eax
mov eax, ecx
cdq
idiv ebx
neg eax
cmp eax, dword [esp + 0x40]
jge 0x57ab5e
mov dword [esp + 0x40], eax
jmp 0x57ab5e
cmp ebx, 1
jl 0x57ab3f
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
mov dword [esp + 0x3c], eax
add eax, 0xffffffff
cmp dword [esp + 0x44], eax
jge 0x57adb9
mov eax, 0x10000
sub eax, ecx
cdq
idiv ebx
cmp eax, dword [esp + 0x2c]
jle 0x57ab22
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, dword [esp + 0x40]
jge 0x57ab5e
mov dword [esp + 0x40], eax
jmp 0x57ab5e
test ecx, ecx
jl 0x57adb9
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp ecx, edx
jge 0x57adb9
mov eax, dword [esp + 0x2c]
imul eax, edi
add dword [esp + 0x30], eax
mov eax, dword [esp + 0x2c]
mov edx, eax
imul edx, ebx
add ecx, edx
cmp eax, dword [esp + 0x40]
mov edx, dword [esp + 0x50]
lea edx, [edx + eax*2]
mov dword [esp + 0x60], edx
mov edx, dword [esi + 0x24]
mov dword [esp + 0x58], ecx
mov dword [esp + 0x90], edx
jg 0x57adb9
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0x2c]
add eax, 1
mov dword [esp + 0x68], eax
mov edx, dword [esp + 0x30]
mov eax, ecx
sar eax, 0x10
imul eax, dword [esp + 0x90]
mov edi, edx
sar edi, 0x10
add eax, edi
mov edi, dword [esp + 0x80]
mov ebx, dword [edi + eax*4]
lea edi, [edi + eax*4]
mov eax, ecx
mov ecx, dword [edi + 4]
mov dword [esp + 0x48], ecx
mov ecx, dword [esi + 0x24]
lea edi, [edi + ecx*4]
mov ecx, dword [edi]
and eax, 0xfffe
add eax, 1
and edx, 0xfffe
add edx, 1
mov dword [esp + 0x44], edx
mov dword [esp + 0x5c], ecx
mov ecx, dword [edi + 4]
mov edi, 0x10000
sub edi, edx
mov edx, edi
imul edi, eax
mov esi, 0x10000
sub esi, eax
imul eax, dword [esp + 0x44]
imul edx, esi
imul esi, dword [esp + 0x44]
shr esi, 0x10
mov dword [esp + 0x4c], ebx
shr ebx, 0x18
shr edx, 0x10
imul edx, ebx
mov ebx, dword [esp + 0x48]
shr ebx, 0x18
imul esi, ebx
mov ebx, dword [esp + 0x5c]
shr esi, 0x10
mov dword [esp + 0x54], esi
shr edi, 0x10
mov esi, ebx
shr esi, 0x18
imul edi, esi
shr eax, 0x10
mov esi, ecx
shr esi, 0x18
imul eax, esi
shr eax, 0x10
mov esi, eax
mov dword [esp + 0x74], esi
mov eax, ecx
and eax, 0xffff00ff
imul eax, esi
shr edi, 0x10
mov esi, ebx
and esi, 0xffff00ff
imul esi, edi
add eax, esi
mov esi, dword [esp + 0x48]
and esi, 0xffff00ff
imul esi, dword [esp + 0x54]
add eax, esi
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x84], edi
and esi, 0xffff00ff
shr edx, 0x10
imul esi, edx
mov edi, ecx
and edi, 0xff00
imul edi, dword [esp + 0x74]
and ebx, 0xff00
imul ebx, dword [esp + 0x84]
add eax, esi
mov esi, dword [esp + 0x48]
and esi, 0xff00
add edi, ebx
imul esi, dword [esp + 0x54]
add edi, esi
mov esi, dword [esp + 0x4c]
mov ebx, esi
and ebx, 0xff00
imul ebx, edx
and ecx, 0xff00ff
imul ecx, dword [esp + 0x74]
add edi, ebx
xor eax, edi
mov edi, dword [esp + 0x5c]
mov ebx, dword [esp + 0x54]
and edi, 0xff00ff
imul edi, dword [esp + 0x84]
add ecx, edi
mov edi, dword [esp + 0x48]
and edi, 0xff00ff
imul edi, ebx
add ecx, edi
mov edi, dword [esp + 0x60]
and esi, 0xff00ff
imul esi, edx
add ecx, esi
movzx esi, word [edi]
and eax, 0xff0000
xor eax, ecx
mov ecx, 0x100
sub ecx, dword [esp + 0x74]
shr eax, 8
sub ecx, dword [esp + 0x84]
add edi, 2
sub ecx, ebx
sub ecx, edx
sar ecx, 3
mov edx, esi
shl edx, 0x10
or edx, esi
and edx, 0x7e0f81f
imul ecx, edx
mov edx, eax
mov ebx, dword [esp + 0x70]
shr ecx, 5
and edx, 0xfc00
and ecx, 0x7e0f81f
mov esi, dword [ebp + 8]
shl edx, 0xb
add ecx, edx
mov edx, eax
shr eax, 8
shr edx, 3
and eax, 0xf800
and edx, 0x1f
add ecx, edx
add ecx, eax
mov eax, ecx
shr eax, 0x10
or eax, ecx
mov ecx, dword [esp + 0x58]
mov word [edi - 2], ax
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x94]
add dword [esp + 0x30], edi
add ecx, ebx
sub dword [esp + 0x68], 1
mov dword [esp + 0x58], ecx
jne 0x57aba6
mov ecx, dword [esp + 0x6c]
add dword [esp + 0x50], ecx
mov eax, 1
add dword [esp + 0xa4], eax
fild dword [esp + 0xa4]
add dword [esp + 0x98], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x57a99d
jmp 0x57fd73
cmp eax, 0x3e0
fnstsw ax
jne 0x57b2d0
test ah, 0x41
mov dword [esp + 0x98], 0
jne 0x57fd7d
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0x90]
fld dword [esp + 0x90]
fld st(0)
fld qword [esp + 0xc8]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xc0]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov edx, dword [esp + 0x8c]
fld qword [0x679478]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x64], eax
lea eax, [edx + edx]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x84], ecx
fild dword [esp + 0x84]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0x90]
fld dword [esp + 0x90]
fld qword [esp + 0xc0]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov dword [esp + 0x30], eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov edx, dword [esp + 0x64]
mov ecx, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x40], edx
mov edx, ecx
sar edx, 0x10
sar eax, 0x10
cmp edi, 0xffffffff
mov dword [esp + 0x2c], 0
mov dword [esp + 0x44], edx
jg 0x57af1b
test eax, eax
jl 0x57b297
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, dword [esp + 0x30]
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x57af03
mov dword [esp + 0x2c], eax
mov eax, 0x7fff
sub eax, dword [esp + 0x30]
cdq
idiv edi
cmp eax, dword [esp + 0x40]
jge 0x57af8c
mov dword [esp + 0x40], eax
jmp 0x57af8c
cmp edi, 1
jl 0x57af68
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
mov dword [esp + 0x3c], edx
add edx, 0xffffffff
cmp eax, edx
jge 0x57b297
mov eax, 0x10000
sub eax, dword [esp + 0x30]
cdq
idiv edi
test eax, eax
jle 0x57af49
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, dword [esp + 0x30]
sub eax, 0x17fff
cdq
idiv edi
cmp eax, dword [esp + 0x40]
jge 0x57af8c
mov dword [esp + 0x40], eax
jmp 0x57af8c
cmp dword [esp + 0x30], 0
jl 0x57b297
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp dword [esp + 0x30], edx
jge 0x57b297
cmp ebx, 0xffffffff
jg 0x57afcc
cmp dword [esp + 0x44], 0
jl 0x57b297
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv ebx
cmp eax, dword [esp + 0x2c]
jle 0x57afb9
mov dword [esp + 0x2c], eax
mov eax, ecx
cdq
idiv ebx
neg eax
cmp eax, dword [esp + 0x40]
jge 0x57b038
mov dword [esp + 0x40], eax
jmp 0x57b038
cmp ebx, 1
jl 0x57b019
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
mov dword [esp + 0x3c], eax
add eax, 0xffffffff
cmp dword [esp + 0x44], eax
jge 0x57b297
mov eax, 0x10000
sub eax, ecx
cdq
idiv ebx
cmp eax, dword [esp + 0x2c]
jle 0x57affc
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, dword [esp + 0x40]
jge 0x57b038
mov dword [esp + 0x40], eax
jmp 0x57b038
test ecx, ecx
jl 0x57b297
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp ecx, edx
jge 0x57b297
mov eax, dword [esp + 0x2c]
imul eax, edi
add dword [esp + 0x30], eax
mov eax, dword [esp + 0x2c]
mov edx, eax
imul edx, ebx
add ecx, edx
cmp eax, dword [esp + 0x40]
mov edx, dword [esp + 0x50]
lea edx, [edx + eax*2]
mov dword [esp + 0x60], edx
mov edx, dword [esi + 0x24]
mov dword [esp + 0x58], ecx
mov dword [esp + 0x90], edx
jg 0x57b297
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0x2c]
add eax, 1
mov dword [esp + 0x68], eax
mov edi, dword [esp + 0x30]
mov eax, ecx
sar eax, 0x10
imul eax, dword [esp + 0x90]
mov edx, edi
sar edx, 0x10
add eax, edx
mov edx, dword [esp + 0x80]
mov ebx, dword [edx + eax*4]
lea edx, [edx + eax*4]
mov eax, ecx
mov ecx, dword [edx + 4]
and edi, 0xfffe
and eax, 0xfffe
mov dword [esp + 0x54], ecx
mov ecx, dword [esi + 0x24]
add edi, 1
add eax, 1
lea edx, [edx + ecx*4]
mov ecx, dword [edx]
mov dword [esp + 0x9c], edi
mov dword [esp + 0x48], ecx
mov ecx, dword [edx + 4]
mov esi, 0x10000
sub esi, eax
mov edx, 0x10000
sub edx, edi
imul edi, esi
shr edi, 0x10
mov dword [esp + 0xb0], edx
imul edx, esi
mov esi, dword [esp + 0x54]
shr esi, 0x18
imul edi, esi
mov esi, eax
imul eax, dword [esp + 0x9c]
imul esi, dword [esp + 0xb0]
mov dword [esp + 0x44], ebx
shr ebx, 0x18
shr edx, 0x10
imul edx, ebx
mov ebx, dword [esp + 0x48]
shr ebx, 0x18
shr esi, 0x10
imul esi, ebx
shr eax, 0x10
mov ebx, ecx
shr ebx, 0x18
imul eax, ebx
shr eax, 0x10
mov ebx, eax
mov dword [esp + 0x74], ebx
mov eax, ecx
and eax, 0xffff00ff
imul eax, ebx
mov ebx, dword [esp + 0x48]
and ebx, 0xffff00ff
shr esi, 0x10
imul ebx, esi
add eax, ebx
mov ebx, dword [esp + 0x54]
shr edi, 0x10
mov dword [esp + 0x4c], edi
and ebx, 0xffff00ff
imul ebx, edi
mov edi, dword [esp + 0x44]
and edi, 0xffff00ff
shr edx, 0x10
imul edi, edx
add eax, ebx
mov ebx, dword [esp + 0x48]
add eax, edi
mov edi, ecx
and edi, 0xff00
imul edi, dword [esp + 0x74]
and ebx, 0xff00
imul ebx, esi
mov dword [esp + 0x5c], esi
mov esi, dword [esp + 0x54]
add edi, ebx
and esi, 0xff00
imul esi, dword [esp + 0x4c]
add edi, esi
mov esi, dword [esp + 0x44]
mov ebx, esi
and ebx, 0xff00
imul ebx, edx
and ecx, 0xff00ff
imul ecx, dword [esp + 0x74]
add edi, ebx
xor eax, edi
mov edi, dword [esp + 0x48]
mov ebx, dword [esp + 0x4c]
and edi, 0xff00ff
imul edi, dword [esp + 0x5c]
add ecx, edi
mov edi, dword [esp + 0x54]
and edi, 0xff00ff
imul edi, ebx
add ecx, edi
mov edi, dword [esp + 0x60]
and esi, 0xff00ff
imul esi, edx
add ecx, esi
movzx esi, word [edi]
and eax, 0xff0000
xor eax, ecx
mov ecx, 0x100
sub ecx, dword [esp + 0x74]
shr eax, 8
sub ecx, dword [esp + 0x5c]
add edi, 2
sub ecx, ebx
sub ecx, edx
sar ecx, 3
mov edx, esi
shl edx, 0x10
or edx, esi
and edx, 0x3e07c1f
imul ecx, edx
mov edx, eax
mov ebx, dword [esp + 0x70]
shr ecx, 5
shr edx, 3
and ecx, 0x3e07c1f
mov esi, dword [ebp + 8]
and edx, 0x1f
add ecx, edx
mov edx, eax
and eax, 0xf800
shr edx, 9
shl eax, 0xa
and edx, 0x7c00
add ecx, edx
add ecx, eax
mov eax, ecx
shr eax, 0x10
or eax, ecx
mov ecx, dword [esp + 0x58]
mov word [edi - 2], ax
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x94]
add dword [esp + 0x30], edi
add ecx, ebx
sub dword [esp + 0x68], 1
mov dword [esp + 0x58], ecx
jne 0x57b080
mov ecx, dword [esp + 0x6c]
add dword [esp + 0x50], ecx
mov eax, 1
add dword [esp + 0x98], eax
fild dword [esp + 0x98]
add dword [esp + 0x84], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x57ae77
jmp 0x57fd73
test ah, 0x41
mov dword [esp + 0x58], 0
jne 0x57fd7d
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0x90]
fld dword [esp + 0x90]
fld st(0)
fld qword [esp + 0xc8]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xc0]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov edx, dword [esp + 0x8c]
fld qword [0x679478]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x64], eax
lea eax, [edx + edx]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x68], ecx
fild dword [esp + 0x68]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0x90]
fld dword [esp + 0x90]
fld qword [esp + 0xc0]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov dword [esp + 0x30], eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov edx, dword [esp + 0x64]
mov ecx, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x2c], edx
mov edx, ecx
sar edx, 0x10
sar eax, 0x10
cmp edi, 0xffffffff
mov dword [esp + 0x38], 0
mov dword [esp + 0x44], edx
jg 0x57b3e3
test eax, eax
jl 0x57b793
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, dword [esp + 0x30]
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x57b3cb
mov dword [esp + 0x38], eax
mov eax, 0x7fff
sub eax, dword [esp + 0x30]
cdq
idiv edi
cmp eax, dword [esp + 0x2c]
jge 0x57b454
mov dword [esp + 0x2c], eax
jmp 0x57b454
cmp edi, 1
jl 0x57b430
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
mov dword [esp + 0x3c], edx
add edx, 0xffffffff
cmp eax, edx
jge 0x57b793
mov eax, 0x10000
sub eax, dword [esp + 0x30]
cdq
idiv edi
test eax, eax
jle 0x57b411
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, dword [esp + 0x30]
sub eax, 0x17fff
cdq
idiv edi
cmp eax, dword [esp + 0x2c]
jge 0x57b454
mov dword [esp + 0x2c], eax
jmp 0x57b454
cmp dword [esp + 0x30], 0
jl 0x57b793
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp dword [esp + 0x30], edx
jge 0x57b793
cmp ebx, 0xffffffff
jg 0x57b494
cmp dword [esp + 0x44], 0
jl 0x57b793
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv ebx
cmp eax, dword [esp + 0x38]
jle 0x57b481
mov dword [esp + 0x38], eax
mov eax, ecx
cdq
idiv ebx
neg eax
cmp eax, dword [esp + 0x2c]
jge 0x57b500
mov dword [esp + 0x2c], eax
jmp 0x57b500
cmp ebx, 1
jl 0x57b4e1
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
mov dword [esp + 0x3c], eax
add eax, 0xffffffff
cmp dword [esp + 0x44], eax
jge 0x57b793
mov eax, 0x10000
sub eax, ecx
cdq
idiv ebx
cmp eax, dword [esp + 0x38]
jle 0x57b4c4
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, dword [esp + 0x2c]
jge 0x57b500
mov dword [esp + 0x2c], eax
jmp 0x57b500
test ecx, ecx
jl 0x57b793
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp ecx, edx
jge 0x57b793
mov eax, dword [esp + 0x38]
imul eax, edi
add dword [esp + 0x30], eax
mov eax, dword [esp + 0x38]
mov edx, eax
imul edx, ebx
add ecx, edx
mov edx, dword [esp + 0x50]
lea edx, [edx + eax*2]
mov dword [esp + 0x3c], edx
mov edx, dword [esi + 0x24]
mov dword [esp + 0x90], edx
mov edx, dword [esp + 0x2c]
cmp eax, edx
mov dword [esp + 0x5c], ecx
jg 0x57b793
sub edx, eax
add edx, 1
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x30]
mov esi, dword [esi + 0x24]
mov eax, ecx
sar eax, 0x10
imul eax, dword [esp + 0x90]
mov edi, edx
sar edi, 0x10
add eax, edi
mov edi, dword [esp + 0x80]
mov ebx, dword [edi + eax*4]
lea eax, [edi + eax*4]
mov edi, dword [eax + 4]
lea eax, [eax + esi*4]
mov esi, dword [eax]
and ecx, 0xfffe
add ecx, 1
mov dword [esp + 0x48], esi
and edx, 0xfffe
add edx, 1
mov dword [esp + 0x54], edi
mov dword [esp + 0x9c], edx
mov eax, dword [eax + 4]
mov esi, 0x10000
sub esi, ecx
mov edi, 0x10000
sub edi, edx
imul edx, esi
mov dword [esp + 0x74], ebx
mov dword [esp + 0xb0], edi
imul edi, esi
mov esi, dword [esp + 0x54]
shr ebx, 0x18
shr esi, 0x18
shr edx, 0x10
imul edx, esi
mov esi, ecx
imul ecx, dword [esp + 0x9c]
imul esi, dword [esp + 0xb0]
shr edi, 0x10
imul edi, ebx
mov ebx, dword [esp + 0x48]
shr ebx, 0x18
shr ecx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
mov ebx, dword [esp + 0x3c]
movzx ebx, word [ebx]
mov dword [esp + 0xb0], ebx
shr ecx, 0x10
shr edx, 0x10
shr esi, 0x10
mov ebx, 0x100
sub ebx, ecx
sub ebx, esi
sub ebx, edx
shr edi, 0x10
sub ebx, edi
mov dword [esp + 0x38], ebx
movzx ebx, word [esp + 0xb0]
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x44], ecx
movzx ebx, al
imul ebx, ecx
movzx ecx, byte [esp + 0x48]
imul ecx, esi
add ebx, ecx
movzx ecx, byte [esp + 0x54]
imul ecx, edx
mov dword [esp + 0x4c], edx
movzx edx, byte [esp + 0x74]
imul edx, edi
add ebx, ecx
mov ecx, dword [esp + 0xb8]
add ebx, edx
shr ebx, cl
mov ecx, dword [esp + 0xd4]
mov dword [esp + 0x78], esi
shl ebx, cl
mov ecx, dword [esp + 0x8c]
and ecx, dword [esp + 0x40]
mov edx, eax
imul ecx, dword [esp + 0x38]
shr ecx, 8
and ecx, dword [esp + 0x40]
and edx, 0xff0000
add ebx, ecx
imul edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
and ecx, 0xff0000
imul ecx, esi
add edx, ecx
mov ecx, dword [esp + 0x54]
and ecx, 0xff0000
imul ecx, dword [esp + 0x4c]
add edx, ecx
mov ecx, dword [esp + 0x74]
and ecx, 0xff0000
imul ecx, edi
add edx, ecx
mov ecx, dword [esp + 0xd0]
shr edx, cl
mov ecx, dword [esp + 0xa4]
and eax, 0xff00
imul eax, dword [esp + 0x44]
shl edx, cl
mov ecx, dword [esp + 0x8c]
and ecx, dword [esp + 0x34]
imul ecx, dword [esp + 0x38]
shr ecx, 8
and ecx, dword [esp + 0x34]
add edx, ecx
mov ecx, dword [esp + 0x48]
and ecx, 0xff00
imul ecx, esi
add eax, ecx
mov ecx, dword [esp + 0x54]
and ecx, 0xff00
imul ecx, dword [esp + 0x4c]
add eax, ecx
mov ecx, dword [esp + 0x74]
and ecx, 0xff00
imul ecx, edi
add eax, ecx
mov ecx, dword [esp + 0x98]
shr eax, cl
mov ecx, dword [esp + 0x84]
mov edi, dword [esp + 0x94]
add dword [esp + 0x30], edi
shl eax, cl
mov ecx, dword [esp + 0x8c]
or ebx, edx
mov edx, dword [esp + 0xac]
and ecx, edx
imul ecx, dword [esp + 0x38]
mov esi, dword [ebp + 8]
shr ecx, 8
and ecx, edx
add eax, ecx
mov ecx, dword [esp + 0x5c]
or ebx, eax
mov eax, dword [esp + 0x3c]
mov word [eax], bx
mov ebx, dword [esp + 0x70]
add eax, 2
add ecx, ebx
sub dword [esp + 0x60], 1
mov dword [esp + 0x3c], eax
mov dword [esp + 0x5c], ecx
jne 0x57b544
mov edx, dword [esp + 0x6c]
add dword [esp + 0x50], edx
mov eax, 1
add dword [esp + 0x58], eax
fild dword [esp + 0x58]
add dword [esp + 0x68], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x57b342
jmp 0x57fd73
fnstsw ax
mov dword [esp + 0x5c], 0
test ah, 0x41
jne 0x57fd7d
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0x90]
fld dword [esp + 0x90]
fld st(0)
fld qword [esp + 0xc8]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xc0]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov edx, dword [esp + 0x3c]
fld qword [0x679478]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x8c]
lea ecx, [eax + eax]
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x60], edx
fild dword [esp + 0x60]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0x90]
fld dword [esp + 0x90]
fld qword [esp + 0xc0]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov dword [esp + 0x30], eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov ecx, eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x30]
mov edx, ecx
sar edx, 0x10
sar eax, 0x10
cmp edi, 0xffffffff
mov dword [esp + 0x38], 0
mov dword [esp + 0x44], edx
jg 0x57b8d8
test eax, eax
jl 0x57bc88
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, dword [esp + 0x30]
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x57b8c0
mov dword [esp + 0x38], eax
mov eax, 0x7fff
sub eax, dword [esp + 0x30]
cdq
idiv edi
cmp eax, dword [esp + 0x2c]
jge 0x57b949
mov dword [esp + 0x2c], eax
jmp 0x57b949
cmp edi, 1
jl 0x57b925
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
mov dword [esp + 0x3c], edx
add edx, 0xffffffff
cmp eax, edx
jge 0x57bc88
mov eax, 0x10000
sub eax, dword [esp + 0x30]
cdq
idiv edi
test eax, eax
jle 0x57b906
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, dword [esp + 0x30]
sub eax, 0x17fff
cdq
idiv edi
cmp eax, dword [esp + 0x2c]
jge 0x57b949
mov dword [esp + 0x2c], eax
jmp 0x57b949
cmp dword [esp + 0x30], 0
jl 0x57bc88
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp dword [esp + 0x30], edx
jge 0x57bc88
cmp ebx, 0xffffffff
jg 0x57b989
cmp dword [esp + 0x44], 0
jl 0x57bc88
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv ebx
cmp eax, dword [esp + 0x38]
jle 0x57b976
mov dword [esp + 0x38], eax
mov eax, ecx
cdq
idiv ebx
neg eax
cmp eax, dword [esp + 0x2c]
jge 0x57b9f5
mov dword [esp + 0x2c], eax
jmp 0x57b9f5
cmp ebx, 1
jl 0x57b9d6
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
mov dword [esp + 0x3c], eax
add eax, 0xffffffff
cmp dword [esp + 0x44], eax
jge 0x57bc88
mov eax, 0x10000
sub eax, ecx
cdq
idiv ebx
cmp eax, dword [esp + 0x38]
jle 0x57b9b9
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, dword [esp + 0x2c]
jge 0x57b9f5
mov dword [esp + 0x2c], eax
jmp 0x57b9f5
test ecx, ecx
jl 0x57bc88
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp ecx, edx
jge 0x57bc88
mov eax, dword [esp + 0x38]
imul eax, edi
add dword [esp + 0x30], eax
mov eax, dword [esp + 0x38]
mov edx, eax
imul edx, ebx
add ecx, edx
mov edx, dword [esp + 0x50]
lea edx, [edx + eax*2]
mov dword [esp + 0x8c], edx
mov edx, dword [esi + 0x24]
mov dword [esp + 0x90], edx
mov edx, dword [esp + 0x2c]
cmp eax, edx
mov dword [esp + 0x38], ecx
jg 0x57bc88
sub edx, eax
add edx, 1
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x30]
mov esi, dword [esi + 0x24]
mov eax, ecx
sar eax, 0x10
imul eax, dword [esp + 0x90]
mov edi, edx
sar edi, 0x10
add eax, edi
mov edi, dword [esp + 0x80]
mov ebx, dword [edi + eax*4]
lea eax, [edi + eax*4]
mov edi, dword [eax + 4]
lea eax, [eax + esi*4]
mov esi, dword [eax]
and ecx, 0xfffe
add ecx, 1
mov dword [esp + 0x48], esi
and edx, 0xfffe
add edx, 1
mov dword [esp + 0x54], edi
mov dword [esp + 0x9c], edx
mov eax, dword [eax + 4]
mov esi, 0x10000
sub esi, ecx
mov edi, 0x10000
sub edi, edx
imul edx, esi
mov dword [esp + 0x58], ebx
mov dword [esp + 0xb0], edi
imul edi, esi
mov esi, dword [esp + 0x54]
shr ebx, 0x18
shr esi, 0x18
shr edx, 0x10
imul edx, esi
mov esi, ecx
imul ecx, dword [esp + 0x9c]
imul esi, dword [esp + 0xb0]
shr edi, 0x10
imul edi, ebx
mov ebx, dword [esp + 0x48]
shr ebx, 0x18
shr ecx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
mov ebx, dword [esp + 0x8c]
movzx ebx, word [ebx]
mov dword [esp + 0xb0], ebx
shr ecx, 0x10
shr edx, 0x10
shr esi, 0x10
mov ebx, 0x100
sub ebx, ecx
sub ebx, esi
sub ebx, edx
shr edi, 0x10
sub ebx, edi
mov dword [esp + 0x74], ebx
movzx ebx, word [esp + 0xb0]
mov dword [esp + 0x68], ebx
mov dword [esp + 0x44], ecx
movzx ebx, al
imul ebx, ecx
movzx ecx, byte [esp + 0x48]
imul ecx, esi
add ebx, ecx
movzx ecx, byte [esp + 0x54]
imul ecx, edx
mov dword [esp + 0x4c], edx
movzx edx, byte [esp + 0x58]
imul edx, edi
add ebx, ecx
mov ecx, dword [esp + 0xb8]
add ebx, edx
shr ebx, cl
mov ecx, dword [esp + 0xd4]
mov dword [esp + 0x78], esi
shl ebx, cl
mov ecx, dword [esp + 0x68]
and ecx, dword [esp + 0x40]
mov edx, eax
imul ecx, dword [esp + 0x74]
shr ecx, 8
and ecx, dword [esp + 0x40]
and edx, 0xff0000
add ebx, ecx
imul edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
and ecx, 0xff0000
imul ecx, esi
add edx, ecx
mov ecx, dword [esp + 0x54]
and ecx, 0xff0000
imul ecx, dword [esp + 0x4c]
add edx, ecx
mov ecx, dword [esp + 0x58]
and ecx, 0xff0000
imul ecx, edi
add edx, ecx
mov ecx, dword [esp + 0xd0]
shr edx, cl
mov ecx, dword [esp + 0xa4]
and eax, 0xff00
imul eax, dword [esp + 0x44]
shl edx, cl
mov ecx, dword [esp + 0x68]
and ecx, dword [esp + 0x34]
imul ecx, dword [esp + 0x74]
shr ecx, 8
and ecx, dword [esp + 0x34]
add edx, ecx
mov ecx, dword [esp + 0x48]
and ecx, 0xff00
imul ecx, esi
add eax, ecx
mov ecx, dword [esp + 0x54]
and ecx, 0xff00
imul ecx, dword [esp + 0x4c]
add eax, ecx
mov ecx, dword [esp + 0x58]
and ecx, 0xff00
imul ecx, edi
add eax, ecx
mov ecx, dword [esp + 0x98]
shr eax, cl
mov ecx, dword [esp + 0x84]
mov edi, dword [esp + 0x94]
add dword [esp + 0x30], edi
shl eax, cl
mov ecx, dword [esp + 0x68]
or ebx, edx
mov edx, dword [esp + 0xac]
and ecx, edx
imul ecx, dword [esp + 0x74]
mov esi, dword [ebp + 8]
shr ecx, 8
and ecx, edx
add eax, ecx
mov ecx, dword [esp + 0x38]
or ebx, eax
mov eax, dword [esp + 0x8c]
mov word [eax], bx
mov ebx, dword [esp + 0x70]
add eax, 2
add ecx, ebx
sub dword [esp + 0x2c], 1
mov dword [esp + 0x8c], eax
mov dword [esp + 0x38], ecx
jne 0x57ba3c
mov edx, dword [esp + 0x6c]
add dword [esp + 0x50], edx
mov eax, 1
add dword [esp + 0x5c], eax
fild dword [esp + 0x5c]
add dword [esp + 0x60], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x57b837
jmp 0x57fd73
mov eax, dword [ebp + 0x1c]
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x48], ecx
mov ecx, dword [eax]
add ecx, 1
mov dword [esp + 0xa0], ecx
mov ecx, dword [eax + 4]
mov eax, dword [eax + 8]
add eax, 1
mov dword [esp + 0x88], eax
fnstsw ax
add ecx, 1
test ah, 0x41
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x4c], 0
jne 0x57fd7d
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0x90]
fld dword [esp + 0x90]
fld st(0)
fld qword [esp + 0xc8]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xc0]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov edx, dword [esp + 0x8c]
fld qword [0x679478]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x64], eax
lea eax, [edx + edx]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x8c], ecx
fild dword [esp + 0x8c]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0x90]
fld dword [esp + 0x90]
fld qword [esp + 0xc0]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov dword [esp + 0x30], eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov edx, dword [esp + 0x64]
mov ecx, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x2c], edx
mov edx, ecx
sar edx, 0x10
sar eax, 0x10
cmp edi, 0xffffffff
mov dword [esp + 0x38], 0
mov dword [esp + 0x44], edx
jg 0x57be00
test eax, eax
jl 0x57c1df
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, dword [esp + 0x30]
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x57bde8
mov dword [esp + 0x38], eax
mov eax, 0x7fff
sub eax, dword [esp + 0x30]
cdq
idiv edi
cmp eax, dword [esp + 0x2c]
jge 0x57be71
mov dword [esp + 0x2c], eax
jmp 0x57be71
cmp edi, 1
jl 0x57be4d
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
mov dword [esp + 0x3c], edx
add edx, 0xffffffff
cmp eax, edx
jge 0x57c1df
mov eax, 0x10000
sub eax, dword [esp + 0x30]
cdq
idiv edi
test eax, eax
jle 0x57be2e
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, dword [esp + 0x30]
sub eax, 0x17fff
cdq
idiv edi
cmp eax, dword [esp + 0x2c]
jge 0x57be71
mov dword [esp + 0x2c], eax
jmp 0x57be71
cmp dword [esp + 0x30], 0
jl 0x57c1df
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp dword [esp + 0x30], edx
jge 0x57c1df
cmp ebx, 0xffffffff
jg 0x57beb1
cmp dword [esp + 0x44], 0
jl 0x57c1df
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv ebx
cmp eax, dword [esp + 0x38]
jle 0x57be9e
mov dword [esp + 0x38], eax
mov eax, ecx
cdq
idiv ebx
neg eax
cmp eax, dword [esp + 0x2c]
jge 0x57bf1d
mov dword [esp + 0x2c], eax
jmp 0x57bf1d
cmp ebx, 1
jl 0x57befe
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
mov dword [esp + 0x3c], eax
add eax, 0xffffffff
cmp dword [esp + 0x44], eax
jge 0x57c1df
mov eax, 0x10000
sub eax, ecx
cdq
idiv ebx
cmp eax, dword [esp + 0x38]
jle 0x57bee1
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, dword [esp + 0x2c]
jge 0x57bf1d
mov dword [esp + 0x2c], eax
jmp 0x57bf1d
test ecx, ecx
jl 0x57c1df
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp ecx, edx
jge 0x57c1df
mov eax, dword [esp + 0x38]
imul eax, edi
add dword [esp + 0x30], eax
mov eax, dword [esp + 0x38]
mov edx, eax
imul edx, ebx
add ecx, edx
mov edx, dword [esp + 0x50]
lea edx, [edx + eax*2]
mov dword [esp + 0x68], edx
mov edx, dword [esi + 0x24]
mov dword [esp + 0x90], edx
mov edx, dword [esp + 0x2c]
cmp eax, edx
mov dword [esp + 0x3c], ecx
jg 0x57c1df
sub edx, eax
add edx, 1
mov dword [esp + 0x2c], edx
mov esi, dword [esi + 0x24]
mov edx, dword [esp + 0x30]
mov eax, ecx
sar eax, 0x10
imul eax, dword [esp + 0x90]
mov edi, edx
sar edi, 0x10
add eax, edi
mov edi, dword [esp + 0x80]
mov ebx, dword [edi + eax*4]
lea eax, [edi + eax*4]
mov edi, dword [eax + 4]
lea eax, [eax + esi*4]
mov esi, dword [eax]
mov dword [esp + 0x54], esi
mov esi, dword [esp + 0x68]
movzx esi, word [esi]
and ecx, 0xfffe
mov dword [esp + 0x78], esi
add ecx, 1
mov dword [esp + 0x74], edi
and edx, 0xfffe
add edx, 1
mov dword [esp + 0x9c], edx
mov eax, dword [eax + 4]
mov esi, 0x10000
sub esi, ecx
mov edi, 0x10000
sub edi, edx
imul edx, esi
mov dword [esp + 0xb0], edi
imul edi, esi
mov esi, dword [esp + 0x74]
shr esi, 0x18
shr edx, 0x10
imul edx, esi
mov esi, ecx
imul ecx, dword [esp + 0x9c]
imul esi, dword [esp + 0xb0]
mov dword [esp + 0x5c], ebx
shr ebx, 0x18
shr edi, 0x10
imul edi, ebx
mov ebx, dword [esp + 0x54]
shr ebx, 0x18
shr esi, 0x10
imul esi, ebx
shr ecx, 0x10
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
imul ecx, dword [esp + 0x48]
shr esi, 0x10
imul esi, dword [esp + 0x48]
shr edx, 0x10
imul edx, dword [esp + 0x48]
shr edi, 0x10
imul edi, dword [esp + 0x48]
sar ecx, 8
sar esi, 8
mov ebx, 0x100
sub ebx, ecx
sub ebx, esi
sar edx, 8
sub ebx, edx
sar edi, 8
sub ebx, edi
mov dword [esp + 0x58], ebx
movzx ebx, word [esp + 0x78]
mov dword [esp + 0x60], ebx
movzx ebx, al
imul ebx, ecx
mov dword [esp + 0x44], ecx
movzx ecx, byte [esp + 0x54]
imul ecx, esi
add ebx, ecx
movzx ecx, byte [esp + 0x74]
mov dword [esp + 0x38], edx
imul ecx, edx
mov dword [esp + 0xb0], esi
add ebx, ecx
movzx edx, byte [esp + 0x5c]
imul edx, edi
add ebx, edx
mov ecx, dword [esp + 0xb8]
shr ebx, 8
imul ebx, dword [esp + 0x88]
shr ebx, cl
mov ecx, dword [esp + 0xd4]
mov edx, eax
and edx, 0xff0000
shl ebx, cl
imul edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x60]
and ecx, dword [esp + 0x40]
and eax, 0xff00
imul ecx, dword [esp + 0x58]
imul eax, dword [esp + 0x44]
shr ecx, 8
and ecx, dword [esp + 0x40]
add ebx, ecx
mov ecx, dword [esp + 0x54]
and ecx, 0xff0000
imul ecx, esi
add edx, ecx
mov ecx, dword [esp + 0x74]
and ecx, 0xff0000
imul ecx, dword [esp + 0x38]
add edx, ecx
mov ecx, dword [esp + 0x5c]
and ecx, 0xff0000
imul ecx, edi
add edx, ecx
mov ecx, dword [esp + 0xd0]
shr edx, 8
imul edx, dword [esp + 0xa0]
shr edx, cl
mov ecx, dword [esp + 0xa4]
shl edx, cl
mov ecx, dword [esp + 0x60]
and ecx, dword [esp + 0x34]
imul ecx, dword [esp + 0x58]
shr ecx, 8
and ecx, dword [esp + 0x34]
add edx, ecx
mov ecx, dword [esp + 0x54]
and ecx, 0xff00
imul ecx, esi
add eax, ecx
mov ecx, dword [esp + 0x74]
and ecx, 0xff00
imul ecx, dword [esp + 0x38]
add eax, ecx
mov ecx, dword [esp + 0x5c]
and ecx, 0xff00
imul ecx, edi
add eax, ecx
mov ecx, dword [esp + 0x98]
shr eax, 8
imul eax, dword [esp + 0x7c]
shr eax, cl
mov ecx, dword [esp + 0x84]
mov edi, dword [esp + 0x94]
add dword [esp + 0x30], edi
shl eax, cl
mov ecx, dword [esp + 0x60]
or ebx, edx
mov edx, dword [esp + 0xac]
and ecx, edx
imul ecx, dword [esp + 0x58]
shr ecx, 8
and ecx, edx
add eax, ecx
mov ecx, dword [esp + 0x3c]
or ebx, eax
mov eax, dword [esp + 0x68]
mov word [eax], bx
mov ebx, dword [esp + 0x70]
add eax, 2
mov dword [esp + 0x68], eax
add ecx, ebx
sub dword [esp + 0x2c], 1
mov esi, dword [ebp + 8]
mov dword [esp + 0x3c], ecx
jne 0x57bf61
mov edx, dword [esp + 0x6c]
add dword [esp + 0x50], edx
mov eax, 1
add dword [esp + 0x4c], eax
fild dword [esp + 0x4c]
add dword [esp + 0x8c], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x57bd5c
jmp 0x57fd73
cmp eax, 0x20
jne 0x57fd7d
fld qword [esp + 0xe0]
call fcn.006397d0
fld qword [esp + 0xd8]
mov dword [esp + 0x3c], eax
call fcn.006397d0
mov ecx, dword [esp + 0xbc]
mov ecx, dword [ecx + 0x90]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
imul eax, ecx
cdq
and edx, 3
add eax, edx
mov edx, dword [esp + 0xbc]
mov edx, dword [edx + 0xa4]
sar eax, 2
add eax, dword [esp + 0x64]
lea eax, [edx + eax*4]
mov dword [esp + 0x6c], eax
mov eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 0x1c]
call fcn.00564470
test al, al
fld qword [esp + 0xf0]
fcomp qword [0x679298]
je 0x57cc39
cmp byte [0x6a9f64], 0
fnstsw ax
je 0x57c768
test ah, 0x41
mov dword [esp + 0x68], 0
jne 0x57fd7d
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0x7c]
fld dword [esp + 0x7c]
fld st(0)
fld qword [esp + 0xc8]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xc0]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov ecx, dword [esp + 0x4c]
fld qword [0x679478]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
lea edx, [ecx*4]
mov dword [esp + 0x8c], edx
mov dword [esp + 0x58], eax
fild dword [esp + 0x58]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0x7c]
fld dword [esp + 0x7c]
fld qword [esp + 0xc0]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov dword [esp + 0x30], eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov edx, dword [esp + 0x64]
mov ecx, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x2c], edx
mov edx, ecx
sar edx, 0x10
sar eax, 0x10
cmp edi, 0xffffffff
mov dword [esp + 0x38], 0
mov dword [esp + 0x44], edx
jg 0x57c3b6
test eax, eax
jl 0x57c735
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, dword [esp + 0x30]
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x57c39e
mov dword [esp + 0x38], eax
mov eax, 0x7fff
sub eax, dword [esp + 0x30]
cdq
idiv edi
cmp eax, dword [esp + 0x2c]
jge 0x57c427
mov dword [esp + 0x2c], eax
jmp 0x57c427
cmp edi, 1
jl 0x57c403
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
mov dword [esp + 0x3c], edx
add edx, 0xffffffff
cmp eax, edx
jge 0x57c735
mov eax, 0x10000
sub eax, dword [esp + 0x30]
cdq
idiv edi
test eax, eax
jle 0x57c3e4
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, dword [esp + 0x30]
sub eax, 0x17fff
cdq
idiv edi
cmp eax, dword [esp + 0x2c]
jge 0x57c427
mov dword [esp + 0x2c], eax
jmp 0x57c427
cmp dword [esp + 0x30], 0
jl 0x57c735
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp dword [esp + 0x30], edx
jge 0x57c735
cmp ebx, 0xffffffff
jg 0x57c467
cmp dword [esp + 0x44], 0
jl 0x57c735
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv ebx
cmp eax, dword [esp + 0x38]
jle 0x57c454
mov dword [esp + 0x38], eax
mov eax, ecx
cdq
idiv ebx
neg eax
cmp eax, dword [esp + 0x2c]
jge 0x57c4d3
mov dword [esp + 0x2c], eax
jmp 0x57c4d3
cmp ebx, 1
jl 0x57c4b4
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
mov dword [esp + 0x3c], eax
add eax, 0xffffffff
cmp dword [esp + 0x44], eax
jge 0x57c735
mov eax, 0x10000
sub eax, ecx
cdq
idiv ebx
cmp eax, dword [esp + 0x38]
jle 0x57c497
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, dword [esp + 0x2c]
jge 0x57c4d3
mov dword [esp + 0x2c], eax
jmp 0x57c4d3
test ecx, ecx
jl 0x57c735
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp ecx, edx
jge 0x57c735
mov eax, dword [esp + 0x38]
imul eax, edi
add dword [esp + 0x30], eax
mov eax, dword [esp + 0x38]
mov edx, eax
imul edx, ebx
add ecx, edx
mov edx, dword [esp + 0x6c]
lea edx, [edx + eax*4]
mov dword [esp + 0x60], edx
mov edx, dword [esi + 0x24]
mov dword [esp + 0x7c], edx
mov edx, dword [esp + 0x2c]
cmp eax, edx
mov dword [esp + 0x98], ecx
jg 0x57c735
sub edx, eax
add edx, 1
mov dword [esp + 0xa4], edx
mov edx, dword [esp + 0x30]
mov esi, dword [esi + 0x24]
mov eax, ecx
sar eax, 0x10
imul eax, dword [esp + 0x7c]
mov edi, edx
sar edi, 0x10
add eax, edi
mov edi, dword [esp + 0x80]
mov ebx, dword [edi + eax*4]
lea eax, [edi + eax*4]
mov edi, dword [eax + 4]
lea eax, [eax + esi*4]
mov esi, dword [eax]
and ecx, 0xfffe
add ecx, 1
mov dword [esp + 0x48], esi
and edx, 0xfffe
add edx, 1
mov dword [esp + 0x54], edi
mov dword [esp + 0x90], edx
mov eax, dword [eax + 4]
mov esi, 0x10000
sub esi, ecx
mov edi, 0x10000
sub edi, edx
imul edx, esi
mov dword [esp + 0x4c], ebx
mov dword [esp + 0xa0], edi
imul edi, esi
mov esi, dword [esp + 0x54]
shr ebx, 0x18
shr esi, 0x18
shr edx, 0x10
imul edx, esi
mov esi, ecx
imul ecx, dword [esp + 0x90]
imul esi, dword [esp + 0xa0]
shr edi, 0x10
imul edi, ebx
mov ebx, dword [esp + 0x48]
shr ebx, 0x18
shr ecx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
mov ebx, dword [esp + 0x60]
mov ebx, dword [ebx]
mov dword [esp + 0x5c], ebx
shr ecx, 0x10
shr edx, 0x10
shr esi, 0x10
mov ebx, 0x100
sub ebx, ecx
sub ebx, esi
sub ebx, edx
shr edi, 0x10
sub ebx, edi
mov dword [esp + 0x44], ebx
mov dword [esp + 0x74], ecx
mov ebx, eax
and ebx, 0xff00
imul ebx, ecx
mov ecx, dword [esp + 0x48]
and ecx, 0xff00
imul ecx, esi
add ebx, ecx
mov ecx, dword [esp + 0x54]
and ecx, 0xff00
imul ecx, edx
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0x4c]
and edx, 0xff00
imul edx, edi
add ebx, ecx
mov ecx, dword [esp + 0x5c]
add ebx, edx
mov dword [esp + 0xa0], esi
and ebx, 0xffff0000
and ecx, 0xff00
imul ecx, dword [esp + 0x44]
movzx edx, byte [esp + 0x48]
add ebx, ecx
imul edx, esi
movzx ecx, al
imul ecx, dword [esp + 0x74]
add ecx, edx
movzx edx, byte [esp + 0x54]
imul edx, dword [esp + 0x84]
add ecx, edx
movzx edx, byte [esp + 0x4c]
mov esi, dword [esp + 0x5c]
imul edx, edi
add ecx, edx
mov edx, dword [esp + 0x44]
and ecx, 0xff00
and esi, 0xffff00ff
imul esi, edx
add ecx, esi
xor ebx, ecx
mov ecx, dword [esp + 0x48]
and ecx, 0xff00ff
imul ecx, dword [esp + 0xa0]
and eax, 0xff00ff
imul eax, dword [esp + 0x74]
add eax, ecx
mov ecx, dword [esp + 0x54]
and ecx, 0xff00ff
imul ecx, dword [esp + 0x84]
add eax, ecx
mov ecx, dword [esp + 0x4c]
and ecx, 0xff00ff
imul ecx, edi
add eax, ecx
mov ecx, dword [esp + 0x5c]
mov edi, dword [esp + 0x94]
add dword [esp + 0x30], edi
mov esi, dword [ebp + 8]
and ecx, 0xff00ff
imul ecx, edx
and eax, 0xff00ff00
add eax, ecx
mov ecx, dword [esp + 0x98]
and ebx, 0xff0000
xor ebx, eax
mov eax, dword [esp + 0x60]
shr ebx, 8
mov dword [eax], ebx
mov ebx, dword [esp + 0x70]
add eax, 4
add ecx, ebx
sub dword [esp + 0xa4], 1
mov dword [esp + 0x60], eax
mov dword [esp + 0x98], ecx
jne 0x57c51a
mov eax, 1
add dword [esp + 0x68], eax
fild dword [esp + 0x68]
add dword [esp + 0x58], eax
mov eax, dword [esp + 0x8c]
add dword [esp + 0x6c], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x57c31b
jmp 0x57fd73
test ah, 0x41
mov dword [esp + 0x74], 0
jne 0x57fd7d
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0x7c]
fld dword [esp + 0x7c]
fld st(0)
fld qword [esp + 0xc8]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xc0]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov ecx, dword [esp + 0x4c]
fld qword [0x679478]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
lea edx, [ecx*4]
mov dword [esp + 0x8c], edx
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0x7c]
fld dword [esp + 0x7c]
fld qword [esp + 0xc0]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov dword [esp + 0x30], eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov edx, dword [esp + 0x64]
mov ecx, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x2c], edx
mov edx, ecx
sar edx, 0x10
sar eax, 0x10
cmp edi, 0xffffffff
mov dword [esp + 0x38], 0
mov dword [esp + 0x44], edx
jg 0x57c873
test eax, eax
jl 0x57cc06
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, dword [esp + 0x30]
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x57c85b
mov dword [esp + 0x38], eax
mov eax, 0x7fff
sub eax, dword [esp + 0x30]
cdq
idiv edi
cmp eax, dword [esp + 0x2c]
jge 0x57c8e4
mov dword [esp + 0x2c], eax
jmp 0x57c8e4
cmp edi, 1
jl 0x57c8c0
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
mov dword [esp + 0x3c], edx
add edx, 0xffffffff
cmp eax, edx
jge 0x57cc06
mov eax, 0x10000
sub eax, dword [esp + 0x30]
cdq
idiv edi
test eax, eax
jle 0x57c8a1
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, dword [esp + 0x30]
sub eax, 0x17fff
cdq
idiv edi
cmp eax, dword [esp + 0x2c]
jge 0x57c8e4
mov dword [esp + 0x2c], eax
jmp 0x57c8e4
cmp dword [esp + 0x30], 0
jl 0x57cc06
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp dword [esp + 0x30], edx
jge 0x57cc06
cmp ebx, 0xffffffff
jg 0x57c924
cmp dword [esp + 0x44], 0
jl 0x57cc06
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv ebx
cmp eax, dword [esp + 0x38]
jle 0x57c911
mov dword [esp + 0x38], eax
mov eax, ecx
cdq
idiv ebx
neg eax
cmp eax, dword [esp + 0x2c]
jge 0x57c990
mov dword [esp + 0x2c], eax
jmp 0x57c990
cmp ebx, 1
jl 0x57c971
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
mov dword [esp + 0x3c], eax
add eax, 0xffffffff
cmp dword [esp + 0x44], eax
jge 0x57cc06
mov eax, 0x10000
sub eax, ecx
cdq
idiv ebx
cmp eax, dword [esp + 0x38]
jle 0x57c954
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, dword [esp + 0x2c]
jge 0x57c990
mov dword [esp + 0x2c], eax
jmp 0x57c990
test ecx, ecx
jl 0x57cc06
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp ecx, edx
jge 0x57cc06
mov eax, dword [esp + 0x38]
imul eax, edi
add dword [esp + 0x30], eax
mov eax, dword [esp + 0x38]
mov edx, eax
imul edx, ebx
add ecx, edx
mov edx, dword [esp + 0x6c]
lea edx, [edx + eax*4]
mov dword [esp + 0x58], edx
mov edx, dword [esi + 0x24]
mov dword [esp + 0x7c], edx
mov edx, dword [esp + 0x2c]
cmp eax, edx
mov dword [esp + 0x3c], ecx
jg 0x57cc06
sub edx, eax
add edx, 1
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x30]
mov esi, dword [esi + 0x24]
mov eax, ecx
sar eax, 0x10
imul eax, dword [esp + 0x7c]
mov edi, edx
sar edi, 0x10
add eax, edi
mov edi, dword [esp + 0x80]
mov ebx, dword [edi + eax*4]
lea eax, [edi + eax*4]
mov edi, dword [eax + 4]
lea eax, [eax + esi*4]
mov esi, dword [eax]
and ecx, 0xfffe
add ecx, 1
mov dword [esp + 0x48], esi
and edx, 0xfffe
add edx, 1
mov dword [esp + 0x54], edi
mov dword [esp + 0x90], edx
mov eax, dword [eax + 4]
mov esi, 0x10000
sub esi, ecx
mov edi, 0x10000
sub edi, edx
imul edx, esi
mov dword [esp + 0x4c], ebx
mov dword [esp + 0xa0], edi
imul edi, esi
mov esi, dword [esp + 0x54]
shr ebx, 0x18
shr esi, 0x18
shr edx, 0x10
imul edx, esi
mov esi, ecx
imul ecx, dword [esp + 0x90]
imul esi, dword [esp + 0xa0]
shr edi, 0x10
imul edi, ebx
mov ebx, dword [esp + 0x48]
shr ebx, 0x18
shr ecx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
mov ebx, dword [esp + 0x58]
mov ebx, dword [ebx]
mov dword [esp + 0x5c], ebx
shr ecx, 0x10
shr edx, 0x10
shr esi, 0x10
mov ebx, 0x100
sub ebx, ecx
sub ebx, esi
sub ebx, edx
shr edi, 0x10
sub ebx, edi
mov dword [esp + 0x60], ebx
mov dword [esp + 0x44], ecx
mov ebx, eax
and ebx, 0xff00
imul ebx, ecx
mov ecx, dword [esp + 0x48]
and ecx, 0xff00
imul ecx, esi
add ebx, ecx
mov ecx, dword [esp + 0x54]
and ecx, 0xff00
imul ecx, edx
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x4c]
and edx, 0xff00
imul edx, edi
add ebx, ecx
mov ecx, dword [esp + 0x98]
add ebx, edx
mov dword [esp + 0xa0], esi
shr ebx, cl
mov ecx, dword [esp + 0x84]
shl ebx, cl
mov ecx, dword [esp + 0x5c]
and ecx, dword [esp + 0xac]
movzx edx, al
imul ecx, dword [esp + 0x60]
imul edx, dword [esp + 0x44]
shr ecx, 8
and ecx, dword [esp + 0xac]
and eax, 0xff0000
add ebx, ecx
imul eax, dword [esp + 0x44]
movzx ecx, byte [esp + 0x48]
imul ecx, esi
add edx, ecx
movzx ecx, byte [esp + 0x54]
imul ecx, dword [esp + 0x38]
add edx, ecx
movzx ecx, byte [esp + 0x4c]
imul ecx, edi
add edx, ecx
mov ecx, dword [esp + 0xb8]
shr edx, cl
mov ecx, dword [esp + 0xd4]
shl edx, cl
mov ecx, dword [esp + 0x5c]
and ecx, dword [esp + 0x40]
imul ecx, dword [esp + 0x60]
shr ecx, 8
and ecx, dword [esp + 0x40]
add edx, ecx
mov ecx, dword [esp + 0x48]
and ecx, 0xff0000
imul ecx, esi
add eax, ecx
mov ecx, dword [esp + 0x54]
and ecx, 0xff0000
imul ecx, dword [esp + 0x38]
add eax, ecx
mov ecx, dword [esp + 0x4c]
and ecx, 0xff0000
imul ecx, edi
add eax, ecx
mov ecx, dword [esp + 0xd0]
shr eax, cl
mov ecx, dword [esp + 0xa4]
mov edi, dword [esp + 0x94]
add dword [esp + 0x30], edi
shl eax, cl
mov ecx, dword [esp + 0x5c]
or ebx, edx
mov edx, dword [esp + 0x34]
and ecx, edx
imul ecx, dword [esp + 0x60]
mov esi, dword [ebp + 8]
shr ecx, 8
and ecx, edx
add eax, ecx
mov ecx, dword [esp + 0x3c]
or ebx, eax
mov eax, dword [esp + 0x58]
mov dword [eax], ebx
mov ebx, dword [esp + 0x70]
add eax, 4
add ecx, ebx
sub dword [esp + 0x2c], 1
mov dword [esp + 0x58], eax
mov dword [esp + 0x3c], ecx
jne 0x57c9d1
mov edx, dword [esp + 0x8c]
add dword [esp + 0x6c], edx
mov eax, 1
add dword [esp + 0x74], eax
fild dword [esp + 0x74]
add dword [esp + 0x68], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x57c7d8
jmp 0x57fd73
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x5c], eax
mov eax, dword [ecx]
add eax, 1
mov dword [esp + 0x90], eax
mov eax, dword [ecx + 4]
add eax, 1
mov dword [esp + 0xb0], eax
mov eax, dword [ecx + 8]
add eax, 1
mov dword [esp + 0xa0], eax
fnstsw ax
mov dword [esp + 0x68], 0
test ah, 0x41
jne 0x57fd7d
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0x7c]
fld dword [esp + 0x7c]
fld st(0)
fld qword [esp + 0xc8]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xc0]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov ecx, dword [esp + 0x4c]
fld qword [0x679478]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
lea edx, [ecx*4]
mov dword [esp + 0x8c], edx
mov dword [esp + 0x58], eax
fild dword [esp + 0x58]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0x7c]
fld dword [esp + 0x7c]
fld qword [esp + 0xc0]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov dword [esp + 0x30], eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov edx, dword [esp + 0x64]
mov ecx, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x2c], edx
mov edx, ecx
sar edx, 0x10
sar eax, 0x10
cmp edi, 0xffffffff
mov dword [esp + 0x38], 0
mov dword [esp + 0x44], edx
jg 0x57cd76
test eax, eax
jl 0x57d13f
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, dword [esp + 0x30]
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x57cd5e
mov dword [esp + 0x38], eax
mov eax, 0x7fff
sub eax, dword [esp + 0x30]
cdq
idiv edi
cmp eax, dword [esp + 0x2c]
jge 0x57cde7
mov dword [esp + 0x2c], eax
jmp 0x57cde7
cmp edi, 1
jl 0x57cdc3
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
mov dword [esp + 0x3c], edx
add edx, 0xffffffff
cmp eax, edx
jge 0x57d13f
mov eax, 0x10000
sub eax, dword [esp + 0x30]
cdq
idiv edi
test eax, eax
jle 0x57cda4
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, dword [esp + 0x30]
sub eax, 0x17fff
cdq
idiv edi
cmp eax, dword [esp + 0x2c]
jge 0x57cde7
mov dword [esp + 0x2c], eax
jmp 0x57cde7
cmp dword [esp + 0x30], 0
jl 0x57d13f
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp dword [esp + 0x30], edx
jge 0x57d13f
cmp ebx, 0xffffffff
jg 0x57ce27
cmp dword [esp + 0x44], 0
jl 0x57d13f
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv ebx
cmp eax, dword [esp + 0x38]
jle 0x57ce14
mov dword [esp + 0x38], eax
mov eax, ecx
cdq
idiv ebx
neg eax
cmp eax, dword [esp + 0x2c]
jge 0x57ce93
mov dword [esp + 0x2c], eax
jmp 0x57ce93
cmp ebx, 1
jl 0x57ce74
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
mov dword [esp + 0x3c], eax
add eax, 0xffffffff
cmp dword [esp + 0x44], eax
jge 0x57d13f
mov eax, 0x10000
sub eax, ecx
cdq
idiv ebx
cmp eax, dword [esp + 0x38]
jle 0x57ce57
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, dword [esp + 0x2c]
jge 0x57ce93
mov dword [esp + 0x2c], eax
jmp 0x57ce93
test ecx, ecx
jl 0x57d13f
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp ecx, edx
jge 0x57d13f
mov eax, dword [esp + 0x38]
imul eax, edi
add dword [esp + 0x30], eax
mov eax, dword [esp + 0x38]
mov edx, eax
imul edx, ebx
add ecx, edx
mov edx, dword [esp + 0x6c]
lea edx, [edx + eax*4]
mov dword [esp + 0x60], edx
mov edx, dword [esi + 0x24]
mov dword [esp + 0x7c], edx
mov edx, dword [esp + 0x2c]
cmp eax, edx
mov dword [esp + 0x50], ecx
jg 0x57d13f
sub edx, eax
add edx, 1
mov dword [esp + 0x88], edx
mov edx, dword [esp + 0x60]
mov esi, dword [esi + 0x24]
mov edi, dword [esp + 0x30]
mov edx, dword [edx]
mov eax, ecx
sar eax, 0x10
imul eax, dword [esp + 0x7c]
mov ebx, edi
sar ebx, 0x10
add eax, ebx
mov ebx, dword [esp + 0x80]
lea eax, [ebx + eax*4]
mov ebx, dword [eax]
mov dword [esp + 0x38], ebx
mov ebx, dword [eax + 4]
lea eax, [eax + esi*4]
mov esi, dword [eax]
mov dword [esp + 0x48], esi
and edi, 0xfffe
and ecx, 0xfffe
mov dword [esp + 0x4c], edx
add edi, 1
add ecx, 1
mov dword [esp + 0x44], edi
mov edx, 0x10000
sub edx, edi
mov edi, edx
imul edx, ecx
mov esi, 0x10000
sub esi, ecx
imul ecx, dword [esp + 0x44]
imul edi, esi
imul esi, dword [esp + 0x44]
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0x38]
shr ebx, 0x18
shr esi, 0x10
shr edi, 0x10
imul edi, ebx
mov ebx, dword [esp + 0x54]
shr ebx, 0x18
imul esi, ebx
mov eax, dword [eax + 4]
shr esi, 0x10
imul esi, dword [esp + 0x5c]
mov ebx, dword [esp + 0x5c]
sar esi, 8
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0x48]
shr edx, 0x10
shr esi, 0x18
imul edx, esi
shr ecx, 0x10
mov esi, eax
shr esi, 0x18
imul ecx, esi
shr ecx, 0x10
imul ecx, ebx
shr edx, 0x10
imul edx, ebx
sar ecx, 8
movzx esi, al
imul esi, ecx
sar edx, 8
mov dword [esp + 0x44], ecx
mov ebx, 0x100
sub ebx, ecx
movzx ecx, byte [esp + 0x48]
sub ebx, edx
imul ecx, edx
sub ebx, dword [esp + 0x74]
shr edi, 0x10
imul edi, dword [esp + 0x5c]
mov dword [esp + 0x2c], edx
movzx edx, byte [esp + 0x54]
imul edx, dword [esp + 0x74]
sar edi, 8
sub ebx, edi
add esi, ecx
movzx ecx, byte [esp + 0x38]
mov dword [esp + 0x3c], ebx
add esi, edx
imul ecx, edi
add esi, ecx
mov ecx, dword [esp + 0xb8]
mov edx, dword [esp + 0x4c]
shr esi, 8
imul esi, dword [esp + 0xa0]
shr esi, cl
mov ecx, dword [esp + 0xd4]
shl esi, cl
mov ecx, dword [esp + 0x40]
and edx, ecx
imul edx, ebx
shr edx, 8
and edx, ecx
mov ecx, dword [esp + 0x48]
and ecx, 0xff0000
imul ecx, dword [esp + 0x2c]
add esi, edx
mov edx, eax
and edx, 0xff0000
imul edx, dword [esp + 0x44]
add edx, ecx
mov ecx, dword [esp + 0x54]
and ecx, 0xff0000
imul ecx, dword [esp + 0x74]
add edx, ecx
mov ecx, dword [esp + 0x38]
and ecx, 0xff0000
imul ecx, edi
add edx, ecx
mov ecx, dword [esp + 0xd0]
shr edx, 8
imul edx, dword [esp + 0x90]
shr edx, cl
mov ecx, dword [esp + 0xa4]
and eax, 0xff00
imul eax, dword [esp + 0x44]
shl edx, cl
mov ecx, dword [esp + 0x4c]
and ecx, dword [esp + 0x34]
imul ecx, ebx
shr ecx, 8
and ecx, dword [esp + 0x34]
add edx, ecx
mov ecx, dword [esp + 0x48]
and ecx, 0xff00
imul ecx, dword [esp + 0x2c]
add eax, ecx
mov ecx, dword [esp + 0x54]
and ecx, 0xff00
imul ecx, dword [esp + 0x74]
add eax, ecx
mov ecx, dword [esp + 0x38]
and ecx, 0xff00
imul ecx, edi
add eax, ecx
mov ecx, dword [esp + 0x98]
shr eax, 8
imul eax, dword [esp + 0xb0]
shr eax, cl
mov ecx, dword [esp + 0x84]
mov edi, dword [esp + 0x94]
add dword [esp + 0x30], edi
shl eax, cl
mov ecx, dword [esp + 0x4c]
or esi, edx
mov edx, dword [esp + 0xac]
and ecx, edx
imul ecx, ebx
mov ebx, dword [esp + 0x70]
shr ecx, 8
and ecx, edx
mov edx, dword [esp + 0x60]
add eax, ecx
mov ecx, dword [esp + 0x50]
or esi, eax
mov dword [edx], esi
add edx, 4
add ecx, ebx
mov dword [esp + 0x60], edx
mov dword [esp + 0x50], ecx
sub dword [esp + 0x88], 1
mov esi, dword [ebp + 8]
jne 0x57cedb
mov edx, dword [esp + 0x8c]
add dword [esp + 0x6c], edx
mov eax, 1
add dword [esp + 0x68], eax
fild dword [esp + 0x68]
add dword [esp + 0x58], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x57ccdb
jmp 0x57fd73
mov edx, ebx
mov eax, edx
call fcn.00588a10
fld qword [ebp + 0x24]
mov ecx, dword [ebp + 0x14]
imul eax, dword [ecx + 4]
add eax, dword [edx + 0x4c]
add eax, dword [ecx]
mov dword [esp + 0xd4], eax
call fcn.00639f90
fstp qword [esp + 0xc8]
fld qword [ebp + 0x24]
call fcn.0063a180
fst qword [esp + 0xc0]
fld qword [esp + 0xc8]
fld qword [0x679478]
fmul st(1), st(0)
fxch st(1)
call fcn.006397d0
fmulp st(1)
mov ebx, eax
mov dword [esp + 0xac], ebx
call fcn.006397d0
mov ecx, dword [esp + 0xbc]
mov dword [esp + 0x50], eax
mov eax, dword [ecx]
mov edx, dword [eax + 0xbc]
call edx
test al, al
je 0x58191f
mov ecx, dword [esp + 0xbc]
mov eax, dword [ecx + 0x6c]
mov edx, dword [eax + 0x20]
mov dword [esp + 0x74], edx
mov edx, dword [eax + 0x24]
mov dword [esp + 0x48], edx
mov edx, dword [eax + 0x28]
mov dword [esp + 0xa4], edx
mov edx, 0x20
sub edx, dword [eax + 0x14]
mov dword [esp + 0xd0], edx
mov edx, 0x18
sub edx, dword [eax + 0x18]
mov dword [esp + 0x54], edx
mov edx, 0x10
sub edx, dword [eax + 0x1c]
mov eax, dword [ecx + 0xd4]
cmp eax, 0x10
mov dword [esp + 0x98], edx
mov edx, dword [ecx + 0xd8]
mov dword [esp + 0x38], edx
mov edx, dword [ecx + 0xdc]
mov ecx, dword [ecx + 0xe0]
mov dword [esp + 0x8c], edx
mov dword [esp + 0xb8], ecx
jne 0x57ecd5
fld qword [esp + 0xe0]
call fcn.006397d0
fld qword [esp + 0xd8]
mov dword [esp + 0x3c], eax
call fcn.006397d0
mov edx, dword [esp + 0xbc]
mov ecx, dword [edx + 0x90]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
imul eax, ecx
cdq
sub eax, edx
mov edx, dword [esp + 0xbc]
mov edx, dword [edx + 0xa4]
sar eax, 1
add eax, dword [esp + 0x64]
lea eax, [edx + eax*2]
mov dword [esp + 0x30], eax
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x84], eax
mov eax, dword [ebp + 0x1c]
call fcn.00564470
test al, al
fld qword [esp + 0xf0]
fcomp qword [0x679298]
je 0x57e752
cmp byte [0x6a9f64], 0
je 0x57e219
mov eax, dword [esp + 0x8c]
cmp eax, 0x7e0
jne 0x57d7fc
fnstsw ax
mov dword [esp + 0x58], 0
test ah, 0x41
jne 0x57fd7d
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0x7c]
fld dword [esp + 0x7c]
fld st(0)
fld qword [esp + 0xc8]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xc0]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov ecx, dword [esp + 0x84]
fld qword [0x679478]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
lea edx, [ecx + ecx]
mov dword [esp + 0x80], edx
mov dword [esp + 0x60], eax
fild dword [esp + 0x60]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0x7c]
fld dword [esp + 0x7c]
fld qword [esp + 0xc0]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov dword [esp + 0x34], eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x40], eax
sar eax, 0x10
sar edx, 0x10
cmp ebx, 0xffffffff
mov dword [esp + 0x2c], 0
mov dword [esp + 0x48], ecx
mov dword [esp + 0x88], eax
jg 0x57d40b
test edx, edx
jl 0x57d7c9
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, dword [esp + 0x34]
sub eax, 0x27fff
cdq
idiv ebx
test eax, eax
jl 0x57d400
mov dword [esp + 0x2c], eax
mov eax, 0x7fff
sub eax, dword [esp + 0x34]
jmp 0x57d449
cmp ebx, 1
jl 0x57d458
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
mov dword [esp + 0x3c], eax
add eax, 0xffffffff
cmp edx, eax
jge 0x57d7c9
mov eax, 0x10000
sub eax, dword [esp + 0x34]
cdq
idiv ebx
test eax, eax
jle 0x57d439
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, dword [esp + 0x34]
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, ecx
jge 0x57d47b
mov ecx, eax
mov dword [esp + 0x48], ecx
jmp 0x57d47b
cmp dword [esp + 0x34], 0
jl 0x57d7c9
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp dword [esp + 0x34], eax
jge 0x57d7c9
mov eax, dword [esp + 0x50]
cmp eax, 0xffffffff
jg 0x57d4ca
cmp dword [esp + 0x88], 0
jl 0x57d7c9
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0xc]
shl eax, 0x10
sub eax, dword [esp + 0x40]
sub eax, 0x27fff
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x2c]
jle 0x57d4b3
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x40]
cdq
idiv dword [esp + 0x50]
mov ecx, dword [esp + 0x48]
neg eax
cmp eax, ecx
jge 0x57d543
mov ecx, eax
jmp 0x57d543
cmp eax, 1
jl 0x57d520
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
add eax, 0xffffffff
cmp dword [esp + 0x88], eax
jge 0x57d7c9
mov eax, 0x10000
sub eax, dword [esp + 0x40]
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x2c]
jle 0x57d4fd
mov dword [esp + 0x2c], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x48]
sub eax, 0x17fff
cdq
idiv dword [esp + 0x50]
cmp eax, ecx
jge 0x57d543
mov ecx, eax
jmp 0x57d543
cmp dword [esp + 0x40], 0
jl 0x57d7c9
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp dword [esp + 0x40], eax
jge 0x57d7c9
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x2c]
imul edx, ebx
imul eax, dword [esp + 0x50]
add dword [esp + 0x34], edx
add dword [esp + 0x40], eax
mov eax, dword [esp + 0x2c]
cmp eax, ecx
mov edx, dword [esp + 0x30]
lea edx, [edx + eax*2]
mov dword [esp + 0x44], edx
mov edx, dword [esi + 0x24]
mov dword [esp + 0x7c], edx
jg 0x57d7c9
sub ecx, eax
add ecx, 1
mov dword [esp + 0x68], ecx
mov eax, dword [esp + 0x40]
mov ebx, dword [esp + 0x34]
mov edx, eax
sar edx, 0x10
imul edx, dword [esp + 0x7c]
add edx, dword [esp + 0xd4]
mov ecx, ebx
sar ecx, 0x10
add ecx, edx
movzx edx, byte [ecx]
mov edx, dword [edi + edx*4]
mov dword [esp + 0x74], edx
movzx edx, byte [ecx + 1]
mov edx, dword [edi + edx*4]
mov dword [esp + 0x54], edx
mov edx, dword [esi + 0x24]
add ecx, edx
movzx edx, byte [ecx]
mov edx, dword [edi + edx*4]
mov dword [esp + 0x48], edx
and ebx, 0xfffe
add ebx, 1
and eax, 0xfffe
add eax, 1
mov dword [esp + 0x88], ebx
mov esi, 0x10000
sub esi, ebx
mov ebx, dword [esp + 0x74]
mov dword [esp + 0xa0], esi
mov edx, 0x10000
sub edx, eax
imul esi, edx
imul edx, dword [esp + 0x88]
shr ebx, 0x18
shr edx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, dword [esp + 0x54]
shr ebx, 0x18
imul edx, ebx
movzx ecx, byte [ecx + 1]
mov ebx, dword [esp + 0x48]
mov ecx, dword [edi + ecx*4]
shr edx, 0x10
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0xa0]
imul edx, eax
imul eax, dword [esp + 0x88]
shr edx, 0x10
shr ebx, 0x18
imul edx, ebx
shr eax, 0x10
mov ebx, ecx
shr ebx, 0x18
imul eax, ebx
shr eax, 0x10
mov ebx, eax
shr edx, 0x10
mov eax, ecx
and eax, 0xffff00ff
imul eax, ebx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x4c], ebx
mov ebx, dword [esp + 0x48]
and ebx, 0xffff00ff
imul ebx, edx
mov edx, dword [esp + 0x54]
and edx, 0xffff00ff
imul edx, dword [esp + 0x84]
add eax, ebx
add eax, edx
mov edx, dword [esp + 0x74]
shr esi, 0x10
and edx, 0xffff00ff
imul edx, esi
add eax, edx
mov edx, ecx
and edx, 0xff00
imul edx, dword [esp + 0x4c]
mov dword [esp + 0x90], esi
mov esi, dword [esp + 0x48]
and esi, 0xff00
imul esi, dword [esp + 0x5c]
add edx, esi
mov esi, dword [esp + 0x54]
mov ebx, dword [esp + 0x74]
and esi, 0xff00
imul esi, dword [esp + 0x84]
add edx, esi
mov esi, dword [esp + 0x90]
and ebx, 0xff00
imul ebx, esi
add edx, ebx
xor eax, edx
mov edx, dword [esp + 0x48]
and ecx, 0xff00ff
imul ecx, dword [esp + 0x4c]
and edx, 0xff00ff
imul edx, dword [esp + 0x5c]
add ecx, edx
mov edx, dword [esp + 0x54]
and edx, 0xff00ff
imul edx, dword [esp + 0x84]
add ecx, edx
mov edx, dword [esp + 0x74]
and edx, 0xff00ff
imul edx, esi
add ecx, edx
mov edx, dword [esp + 0x44]
movzx ebx, word [edx]
and eax, 0xff0000
xor eax, ecx
mov ecx, 0x100
sub ecx, dword [esp + 0x4c]
shr eax, 8
sub ecx, dword [esp + 0x5c]
add edx, 2
sub ecx, dword [esp + 0x84]
mov dword [esp + 0x44], edx
sub ecx, esi
sar ecx, 3
mov esi, ebx
shl esi, 0x10
or esi, ebx
and esi, 0x7e0f81f
imul ecx, esi
mov ebx, dword [esp + 0xac]
add dword [esp + 0x34], ebx
mov esi, eax
shr ecx, 5
and esi, 0xfc00
shl esi, 0xb
and ecx, 0x7e0f81f
add ecx, esi
mov esi, eax
shr esi, 3
shr eax, 8
and esi, 0x1f
and eax, 0xf800
add ecx, esi
mov esi, dword [ebp + 8]
add ecx, eax
mov eax, ecx
shr eax, 0x10
or eax, ecx
mov ecx, dword [esp + 0x50]
add dword [esp + 0x40], ecx
sub dword [esp + 0x68], 1
mov word [edx - 2], ax
jne 0x57d582
mov edx, dword [esp + 0x80]
add dword [esp + 0x30], edx
mov eax, 1
add dword [esp + 0x58], eax
fild dword [esp + 0x58]
add dword [esp + 0x60], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x57d37a
jmp 0x57fd73
cmp eax, 0x3e0
fnstsw ax
jne 0x57dcfa
test ah, 0x41
mov dword [esp + 0x58], 0
jne 0x57fd7d
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0x7c]
fld dword [esp + 0x7c]
fld st(0)
fld qword [esp + 0xc8]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xc0]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov edx, dword [esp + 0x3c]
fld qword [0x679478]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x84]
lea ecx, [eax + eax]
mov dword [esp + 0x80], ecx
mov dword [esp + 0x60], edx
fild dword [esp + 0x60]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0x7c]
fld dword [esp + 0x7c]
fld qword [esp + 0xc0]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov dword [esp + 0x34], eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x40], eax
sar eax, 0x10
sar edx, 0x10
cmp ebx, 0xffffffff
mov dword [esp + 0x2c], 0
mov dword [esp + 0x48], ecx
mov dword [esp + 0x88], eax
jg 0x57d909
test edx, edx
jl 0x57dcc7
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, dword [esp + 0x34]
sub eax, 0x27fff
cdq
idiv ebx
test eax, eax
jl 0x57d8fe
mov dword [esp + 0x2c], eax
mov eax, 0x7fff
sub eax, dword [esp + 0x34]
jmp 0x57d947
cmp ebx, 1
jl 0x57d956
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
mov dword [esp + 0x3c], eax
add eax, 0xffffffff
cmp edx, eax
jge 0x57dcc7
mov eax, 0x10000
sub eax, dword [esp + 0x34]
cdq
idiv ebx
test eax, eax
jle 0x57d937
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, dword [esp + 0x34]
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, ecx
jge 0x57d979
mov ecx, eax
mov dword [esp + 0x48], ecx
jmp 0x57d979
cmp dword [esp + 0x34], 0
jl 0x57dcc7
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp dword [esp + 0x34], eax
jge 0x57dcc7
mov eax, dword [esp + 0x50]
cmp eax, 0xffffffff
jg 0x57d9c8
cmp dword [esp + 0x88], 0
jl 0x57dcc7
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0xc]
shl eax, 0x10
sub eax, dword [esp + 0x40]
sub eax, 0x27fff
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x2c]
jle 0x57d9b1
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x40]
cdq
idiv dword [esp + 0x50]
mov ecx, dword [esp + 0x48]
neg eax
cmp eax, ecx
jge 0x57da41
mov ecx, eax
jmp 0x57da41
cmp eax, 1
jl 0x57da1e
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
add eax, 0xffffffff
cmp dword [esp + 0x88], eax
jge 0x57dcc7
mov eax, 0x10000
sub eax, dword [esp + 0x40]
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x2c]
jle 0x57d9fb
mov dword [esp + 0x2c], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x48]
sub eax, 0x17fff
cdq
idiv dword [esp + 0x50]
cmp eax, ecx
jge 0x57da41
mov ecx, eax
jmp 0x57da41
cmp dword [esp + 0x40], 0
jl 0x57dcc7
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp dword [esp + 0x40], eax
jge 0x57dcc7
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x2c]
imul edx, ebx
imul eax, dword [esp + 0x50]
add dword [esp + 0x34], edx
add dword [esp + 0x40], eax
mov eax, dword [esp + 0x2c]
cmp eax, ecx
mov edx, dword [esp + 0x30]
lea edx, [edx + eax*2]
mov dword [esp + 0x44], edx
mov edx, dword [esi + 0x24]
mov dword [esp + 0x7c], edx
jg 0x57dcc7
sub ecx, eax
add ecx, 1
mov dword [esp + 0x68], ecx
mov eax, dword [esp + 0x40]
mov ebx, dword [esp + 0x34]
mov edx, eax
sar edx, 0x10
imul edx, dword [esp + 0x7c]
add edx, dword [esp + 0xd4]
mov ecx, ebx
sar ecx, 0x10
add ecx, edx
movzx edx, byte [ecx]
mov edx, dword [edi + edx*4]
mov dword [esp + 0x74], edx
movzx edx, byte [ecx + 1]
mov edx, dword [edi + edx*4]
mov dword [esp + 0x54], edx
mov edx, dword [esi + 0x24]
add ecx, edx
movzx edx, byte [ecx]
mov edx, dword [edi + edx*4]
mov dword [esp + 0x48], edx
and ebx, 0xfffe
add ebx, 1
and eax, 0xfffe
add eax, 1
mov dword [esp + 0x88], ebx
mov esi, 0x10000
sub esi, ebx
mov ebx, dword [esp + 0x74]
mov dword [esp + 0xa0], esi
mov edx, 0x10000
sub edx, eax
imul esi, edx
imul edx, dword [esp + 0x88]
shr ebx, 0x18
shr edx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, dword [esp + 0x54]
shr ebx, 0x18
imul edx, ebx
movzx ecx, byte [ecx + 1]
mov ebx, dword [esp + 0x48]
mov ecx, dword [edi + ecx*4]
shr edx, 0x10
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0xa0]
imul edx, eax
imul eax, dword [esp + 0x88]
shr edx, 0x10
shr ebx, 0x18
imul edx, ebx
shr eax, 0x10
mov ebx, ecx
shr ebx, 0x18
imul eax, ebx
shr eax, 0x10
mov ebx, eax
shr edx, 0x10
mov eax, ecx
and eax, 0xffff00ff
imul eax, ebx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x4c], ebx
mov ebx, dword [esp + 0x48]
and ebx, 0xffff00ff
imul ebx, edx
mov edx, dword [esp + 0x54]
and edx, 0xffff00ff
imul edx, dword [esp + 0x84]
add eax, ebx
add eax, edx
mov edx, dword [esp + 0x74]
shr esi, 0x10
and edx, 0xffff00ff
imul edx, esi
add eax, edx
mov edx, ecx
and edx, 0xff00
imul edx, dword [esp + 0x4c]
mov dword [esp + 0x90], esi
mov esi, dword [esp + 0x48]
and esi, 0xff00
imul esi, dword [esp + 0x5c]
add edx, esi
mov esi, dword [esp + 0x54]
mov ebx, dword [esp + 0x74]
and esi, 0xff00
imul esi, dword [esp + 0x84]
add edx, esi
mov esi, dword [esp + 0x90]
and ebx, 0xff00
imul ebx, esi
add edx, ebx
xor eax, edx
mov edx, dword [esp + 0x48]
and ecx, 0xff00ff
imul ecx, dword [esp + 0x4c]
and edx, 0xff00ff
imul edx, dword [esp + 0x5c]
add ecx, edx
mov edx, dword [esp + 0x54]
and edx, 0xff00ff
imul edx, dword [esp + 0x84]
add ecx, edx
mov edx, dword [esp + 0x74]
and edx, 0xff00ff
imul edx, esi
add ecx, edx
mov edx, dword [esp + 0x44]
movzx ebx, word [edx]
and eax, 0xff0000
xor eax, ecx
mov ecx, 0x100
sub ecx, dword [esp + 0x4c]
shr eax, 8
sub ecx, dword [esp + 0x5c]
add edx, 2
sub ecx, dword [esp + 0x84]
mov dword [esp + 0x44], edx
sub ecx, esi
sar ecx, 3
mov esi, ebx
shl esi, 0x10
or esi, ebx
and esi, 0x3e07c1f
imul ecx, esi
mov ebx, dword [esp + 0xac]
add dword [esp + 0x34], ebx
mov esi, eax
shr ecx, 5
shr esi, 3
and esi, 0x1f
and ecx, 0x3e07c1f
add ecx, esi
mov esi, eax
shr esi, 9
and eax, 0xf800
and esi, 0x7c00
shl eax, 0xa
add ecx, esi
mov esi, dword [ebp + 8]
add ecx, eax
mov eax, ecx
shr eax, 0x10
or eax, ecx
mov ecx, dword [esp + 0x50]
add dword [esp + 0x40], ecx
sub dword [esp + 0x68], 1
mov word [edx - 2], ax
jne 0x57da80
mov edx, dword [esp + 0x80]
add dword [esp + 0x30], edx
mov eax, 1
add dword [esp + 0x58], eax
fild dword [esp + 0x58]
add dword [esp + 0x60], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x57d878
jmp 0x57fd73
test ah, 0x41
mov dword [esp + 0x68], 0
jne 0x57fd7d
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0x7c]
fld dword [esp + 0x7c]
fld st(0)
fld qword [esp + 0xc8]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xc0]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov edx, dword [esp + 0x3c]
fld qword [0x679478]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x84]
lea ecx, [eax + eax]
mov dword [esp + 0x80], ecx
mov dword [esp + 0x58], edx
fild dword [esp + 0x58]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0x7c]
fld dword [esp + 0x7c]
fld qword [esp + 0xc0]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov dword [esp + 0x34], eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov ecx, eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x34]
mov edx, ecx
sar edx, 0x10
sar eax, 0x10
cmp ebx, 0xffffffff
mov dword [esp + 0x2c], 0
mov dword [esp + 0x88], edx
jg 0x57de07
test eax, eax
jl 0x57e1e6
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, dword [esp + 0x34]
sub eax, 0x27fff
cdq
idiv ebx
test eax, eax
jl 0x57ddef
mov dword [esp + 0x2c], eax
mov eax, 0x7fff
sub eax, dword [esp + 0x34]
cdq
idiv ebx
cmp eax, dword [esp + 0x6c]
jge 0x57de78
mov dword [esp + 0x6c], eax
jmp 0x57de78
cmp ebx, 1
jl 0x57de54
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
mov dword [esp + 0x3c], edx
add edx, 0xffffffff
cmp eax, edx
jge 0x57e1e6
mov eax, 0x10000
sub eax, dword [esp + 0x34]
cdq
idiv ebx
test eax, eax
jle 0x57de35
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, dword [esp + 0x34]
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, dword [esp + 0x6c]
jge 0x57de78
mov dword [esp + 0x6c], eax
jmp 0x57de78
cmp dword [esp + 0x34], 0
jl 0x57e1e6
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp dword [esp + 0x34], edx
jge 0x57e1e6
mov eax, dword [esp + 0x50]
cmp eax, 0xffffffff
jg 0x57dec3
cmp dword [esp + 0x88], 0
jl 0x57e1e6
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x2c]
jle 0x57deae
mov dword [esp + 0x2c], eax
mov eax, ecx
cdq
idiv dword [esp + 0x50]
neg eax
cmp eax, dword [esp + 0x6c]
jge 0x57df33
mov dword [esp + 0x6c], eax
jmp 0x57df33
cmp eax, 1
jl 0x57df15
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
add eax, 0xffffffff
cmp dword [esp + 0x88], eax
jge 0x57e1e6
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x2c]
jle 0x57def4
mov dword [esp + 0x2c], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x6c]
jge 0x57df33
mov dword [esp + 0x6c], eax
jmp 0x57df33
test ecx, ecx
jl 0x57e1e6
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x57e1e6
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x2c]
imul edx, ebx
imul eax, dword [esp + 0x50]
add dword [esp + 0x34], edx
mov edx, dword [esp + 0x30]
add ecx, eax
mov eax, dword [esp + 0x2c]
lea edx, [edx + eax*2]
mov dword [esp + 0x60], edx
mov edx, dword [esi + 0x24]
mov dword [esp + 0x7c], edx
mov edx, dword [esp + 0x6c]
cmp eax, edx
mov dword [esp + 0x70], ecx
jg 0x57e1e6
sub edx, eax
add edx, 1
mov dword [esp + 0x78], edx
mov ebx, dword [esp + 0x34]
mov edx, ecx
sar edx, 0x10
imul edx, dword [esp + 0x7c]
add edx, dword [esp + 0xd4]
mov eax, ebx
sar eax, 0x10
add eax, edx
movzx edx, byte [eax]
mov edx, dword [edi + edx*4]
mov dword [esp + 0x40], edx
movzx edx, byte [eax + 1]
mov edx, dword [edi + edx*4]
mov dword [esp + 0x2c], edx
mov edx, dword [esi + 0x24]
and ebx, 0xfffe
add ebx, 1
add eax, edx
movzx edx, byte [eax]
mov edx, dword [edi + edx*4]
and ecx, 0xfffe
add ecx, 1
mov dword [esp + 0x88], ebx
mov dword [esp + 0x94], edx
mov edx, 0x10000
sub edx, ebx
mov ebx, dword [esp + 0x40]
mov dword [esp + 0xa0], edx
shr ebx, 0x18
mov esi, 0x10000
sub esi, ecx
imul edx, esi
imul esi, dword [esp + 0x88]
shr edx, 0x10
imul edx, ebx
mov ebx, dword [esp + 0x2c]
shr ebx, 0x18
shr esi, 0x10
imul esi, ebx
movzx eax, byte [eax + 1]
mov ebx, dword [esp + 0x94]
mov eax, dword [edi + eax*4]
shr esi, 0x10
mov dword [esp + 0x6c], esi
mov esi, dword [esp + 0xa0]
imul esi, ecx
imul ecx, dword [esp + 0x88]
shr ebx, 0x18
shr ecx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
mov dword [esp + 0x84], ecx
mov ecx, dword [esp + 0x60]
movzx ecx, word [ecx]
shr esi, 0x10
mov ebx, 0x100
sub ebx, dword [esp + 0x84]
movzx ecx, cx
sub ebx, esi
sub ebx, dword [esp + 0x6c]
shr edx, 0x10
sub ebx, edx
mov dword [esp + 0x4c], ecx
movzx ecx, byte [esp + 0x94]
mov dword [esp + 0x5c], ebx
imul ecx, esi
movzx ebx, al
imul ebx, dword [esp + 0x84]
add ebx, ecx
movzx ecx, byte [esp + 0x2c]
imul ecx, dword [esp + 0x6c]
add ebx, ecx
movzx ecx, byte [esp + 0x40]
imul ecx, edx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x44], esi
add ebx, ecx
mov ecx, dword [esp + 0x98]
shr ebx, cl
mov ecx, dword [esp + 0xa4]
shl ebx, cl
mov ecx, dword [esp + 0xb8]
mov edx, ecx
and edx, dword [esp + 0x4c]
imul edx, dword [esp + 0x5c]
shr edx, 8
and edx, ecx
mov ecx, dword [esp + 0x94]
and ecx, 0xff0000
imul ecx, esi
add ebx, edx
mov edx, eax
and edx, 0xff0000
imul edx, dword [esp + 0x84]
add edx, ecx
mov ecx, dword [esp + 0x2c]
and ecx, 0xff0000
imul ecx, dword [esp + 0x6c]
add edx, ecx
mov ecx, dword [esp + 0x40]
and ecx, 0xff0000
imul ecx, dword [esp + 0x3c]
add edx, ecx
mov ecx, dword [esp + 0xd0]
shr edx, cl
mov ecx, dword [esp + 0x74]
and eax, 0xff00
imul eax, dword [esp + 0x84]
shl edx, cl
mov ecx, dword [esp + 0x38]
and ecx, dword [esp + 0x4c]
imul ecx, dword [esp + 0x5c]
shr ecx, 8
and ecx, dword [esp + 0x38]
add edx, ecx
mov ecx, dword [esp + 0x94]
and ecx, 0xff00
imul ecx, esi
add eax, ecx
mov ecx, dword [esp + 0x2c]
and ecx, 0xff00
imul ecx, dword [esp + 0x6c]
add eax, ecx
mov ecx, dword [esp + 0x40]
and ecx, 0xff00
imul ecx, dword [esp + 0x3c]
add eax, ecx
mov ecx, dword [esp + 0x54]
shr eax, cl
mov ecx, dword [esp + 0x48]
or ebx, edx
mov esi, dword [ebp + 8]
shl eax, cl
mov ecx, dword [esp + 0x8c]
mov edx, ecx
and edx, dword [esp + 0x4c]
imul edx, dword [esp + 0x5c]
shr edx, 8
and edx, ecx
mov ecx, dword [esp + 0x70]
add ecx, dword [esp + 0x50]
add eax, edx
or ebx, eax
mov eax, dword [esp + 0x60]
mov word [eax], bx
mov ebx, dword [esp + 0xac]
add dword [esp + 0x34], ebx
add eax, 2
sub dword [esp + 0x78], 1
mov dword [esp + 0x60], eax
mov dword [esp + 0x70], ecx
jne 0x57df78
mov eax, 1
add dword [esp + 0x68], eax
fild dword [esp + 0x68]
add dword [esp + 0x58], eax
mov eax, dword [esp + 0x80]
add dword [esp + 0x30], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x57dd69
jmp 0x57fd73
fnstsw ax
mov dword [esp + 0x68], 0
test ah, 0x41
jne 0x57fd7d
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0x7c]
fld dword [esp + 0x7c]
fld st(0)
fld qword [esp + 0xc8]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xc0]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov ecx, dword [esp + 0x84]
fld qword [0x679478]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
lea edx, [ecx + ecx]
mov dword [esp + 0x80], edx
mov dword [esp + 0x58], eax
fild dword [esp + 0x58]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0x7c]
fld dword [esp + 0x7c]
fld qword [esp + 0xc0]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov dword [esp + 0x34], eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov edx, dword [esp + 0x64]
mov ecx, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x40], edx
mov edx, ecx
sar edx, 0x10
sar eax, 0x10
cmp ebx, 0xffffffff
mov dword [esp + 0x6c], 0
mov dword [esp + 0x78], edx
jg 0x57e325
test eax, eax
jl 0x57e71f
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, dword [esp + 0x34]
sub eax, 0x27fff
cdq
idiv ebx
test eax, eax
jl 0x57e30d
mov dword [esp + 0x6c], eax
mov eax, 0x7fff
sub eax, dword [esp + 0x34]
cdq
idiv ebx
cmp eax, dword [esp + 0x40]
jge 0x57e396
mov dword [esp + 0x40], eax
jmp 0x57e396
cmp ebx, 1
jl 0x57e372
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
mov dword [esp + 0x3c], edx
add edx, 0xffffffff
cmp eax, edx
jge 0x57e71f
mov eax, 0x10000
sub eax, dword [esp + 0x34]
cdq
idiv ebx
test eax, eax
jle 0x57e353
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, dword [esp + 0x34]
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, dword [esp + 0x40]
jge 0x57e396
mov dword [esp + 0x40], eax
jmp 0x57e396
cmp dword [esp + 0x34], 0
jl 0x57e71f
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp dword [esp + 0x34], edx
jge 0x57e71f
mov eax, dword [esp + 0x50]
cmp eax, 0xffffffff
jg 0x57e3de
cmp dword [esp + 0x78], 0
jl 0x57e71f
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x6c]
jle 0x57e3c9
mov dword [esp + 0x6c], eax
mov eax, ecx
cdq
idiv dword [esp + 0x50]
neg eax
cmp eax, dword [esp + 0x40]
jge 0x57e44b
mov dword [esp + 0x40], eax
jmp 0x57e44b
cmp eax, 1
jl 0x57e42d
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
add eax, 0xffffffff
cmp dword [esp + 0x78], eax
jge 0x57e71f
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x6c]
jle 0x57e40c
mov dword [esp + 0x6c], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x40]
jge 0x57e44b
mov dword [esp + 0x40], eax
jmp 0x57e44b
test ecx, ecx
jl 0x57e71f
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x57e71f
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x6c]
imul edx, ebx
imul eax, dword [esp + 0x50]
add dword [esp + 0x34], edx
mov edx, dword [esp + 0x30]
add ecx, eax
mov eax, dword [esp + 0x6c]
cmp eax, dword [esp + 0x40]
lea edx, [edx + eax*2]
mov dword [esp + 0x60], edx
mov edx, dword [esi + 0x24]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x7c], edx
jg 0x57e71f
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0x6c]
add eax, 1
mov dword [esp + 0x44], eax
jmp 0x57e49a
mov ecx, dword [esp + 0x2c]
mov esi, dword [esi + 0x24]
mov eax, ecx
mov ecx, dword [esp + 0x34]
sar eax, 0x10
imul eax, dword [esp + 0x7c]
add eax, dword [esp + 0xd4]
mov edx, ecx
sar edx, 0x10
movzx ebx, byte [edx + eax]
mov ebx, dword [edi + ebx*4]
add edx, eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x6c], ebx
movzx ebx, byte [edx + 1]
mov ebx, dword [edi + ebx*4]
add edx, esi
movzx esi, byte [edx]
mov esi, dword [edi + esi*4]
movzx edx, byte [edx + 1]
mov edx, dword [edi + edx*4]
and eax, 0xfffe
mov dword [esp + 0x70], esi
add eax, 1
mov dword [esp + 0x94], ebx
mov ebx, dword [esp + 0x6c]
mov dword [esp + 0x84], edx
and ecx, 0xfffe
add ecx, 1
mov dword [esp + 0x90], ecx
mov esi, 0x10000
sub esi, eax
mov edx, 0x10000
sub edx, ecx
imul ecx, esi
mov dword [esp + 0xa0], edx
imul edx, esi
mov esi, dword [esp + 0x94]
shr ebx, 0x18
shr esi, 0x18
shr ecx, 0x10
imul ecx, esi
mov esi, eax
imul eax, dword [esp + 0x90]
imul esi, dword [esp + 0xa0]
shr edx, 0x10
imul edx, ebx
mov ebx, dword [esp + 0x70]
shr ebx, 0x18
shr esi, 0x10
imul esi, ebx
mov ebx, dword [esp + 0x84]
shr ebx, 0x18
shr eax, 0x10
imul eax, ebx
mov ebx, dword [esp + 0x60]
movzx ebx, word [ebx]
mov dword [esp + 0xa0], ebx
shr eax, 0x10
shr esi, 0x10
mov ebx, 0x100
sub ebx, eax
sub ebx, esi
shr ecx, 0x10
sub ebx, ecx
shr edx, 0x10
sub ebx, edx
mov dword [esp + 0x5c], ebx
movzx ebx, word [esp + 0xa0]
mov dword [esp + 0x4c], ebx
mov ebx, dword [esp + 0x84]
mov dword [esp + 0x78], eax
and ebx, 0xff0000
imul ebx, eax
mov eax, dword [esp + 0x70]
and eax, 0xff0000
imul eax, esi
add ebx, eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x88], ecx
mov dword [esp + 0xb0], esi
and eax, 0xff0000
imul eax, ecx
mov ecx, dword [esp + 0x6c]
and ecx, 0xff0000
imul ecx, edx
add ebx, eax
mov eax, dword [esp + 0x38]
and eax, dword [esp + 0x4c]
add ebx, ecx
imul eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0xd0]
shr ebx, cl
mov ecx, dword [esp + 0x74]
shr eax, 8
and eax, dword [esp + 0x38]
shl ebx, cl
mov ecx, dword [esp + 0x70]
and ecx, 0xff00
imul ecx, esi
add ebx, eax
mov eax, dword [esp + 0x84]
and eax, 0xff00
imul eax, dword [esp + 0x78]
add eax, ecx
mov ecx, dword [esp + 0x94]
and ecx, 0xff00
imul ecx, dword [esp + 0x88]
add eax, ecx
mov ecx, dword [esp + 0x6c]
and ecx, 0xff00
imul ecx, edx
add eax, ecx
mov ecx, dword [esp + 0x54]
shr eax, cl
mov ecx, dword [esp + 0x48]
movzx esi, byte [esp + 0x84]
shl eax, cl
imul esi, dword [esp + 0x78]
mov ecx, dword [esp + 0x8c]
and ecx, dword [esp + 0x4c]
imul ecx, dword [esp + 0x5c]
shr ecx, 8
and ecx, dword [esp + 0x8c]
add eax, ecx
movzx ecx, byte [esp + 0x94]
imul ecx, dword [esp + 0x88]
or ebx, eax
movzx eax, byte [esp + 0x70]
imul eax, dword [esp + 0xb0]
add esi, eax
movzx eax, byte [esp + 0x6c]
imul eax, edx
add esi, ecx
mov ecx, dword [esp + 0x98]
add esi, eax
mov eax, dword [esp + 0xb8]
shr esi, cl
mov ecx, dword [esp + 0xa4]
mov edx, dword [esp + 0x50]
add dword [esp + 0x2c], edx
shl esi, cl
mov ecx, eax
and ecx, dword [esp + 0x4c]
imul ecx, dword [esp + 0x5c]
shr ecx, 8
and ecx, eax
mov eax, dword [esp + 0x60]
add esi, ecx
or ebx, esi
mov esi, dword [ebp + 8]
mov word [eax], bx
mov ebx, dword [esp + 0xac]
add dword [esp + 0x34], ebx
add eax, 2
sub dword [esp + 0x44], 1
mov dword [esp + 0x60], eax
jne 0x57e496
mov eax, 1
add dword [esp + 0x68], eax
fild dword [esp + 0x68]
add dword [esp + 0x58], eax
mov eax, dword [esp + 0x80]
add dword [esp + 0x30], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x57e28a
jmp 0x57fd73
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ecx]
mov edx, dword [ecx + 0xc]
add eax, 1
mov dword [esp + 0x9c], eax
mov eax, dword [ecx + 4]
add eax, 1
mov dword [esp + 0xa8], eax
mov eax, dword [ecx + 8]
add eax, 1
mov dword [esp + 0xb0], eax
fnstsw ax
mov dword [esp + 0x6c], edx
test ah, 0x41
mov dword [esp + 0x68], 0
jne 0x57fd7d
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0x7c]
fld dword [esp + 0x7c]
fld st(0)
fld qword [esp + 0xc8]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xc0]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov edx, dword [esp + 0x3c]
fld qword [0x679478]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x84]
lea ecx, [eax + eax]
mov dword [esp + 0x80], ecx
mov dword [esp + 0x58], edx
fild dword [esp + 0x58]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0x7c]
fld dword [esp + 0x7c]
fld qword [esp + 0xc0]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov dword [esp + 0x34], eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov ecx, eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x34]
mov edx, ecx
sar edx, 0x10
sar eax, 0x10
cmp ebx, 0xffffffff
mov dword [esp + 0x70], 0
mov dword [esp + 0x78], edx
jg 0x57e88e
test eax, eax
jl 0x57eca2
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, dword [esp + 0x34]
sub eax, 0x27fff
cdq
idiv ebx
test eax, eax
jl 0x57e876
mov dword [esp + 0x70], eax
mov eax, 0x7fff
sub eax, dword [esp + 0x34]
cdq
idiv ebx
cmp eax, dword [esp + 0x2c]
jge 0x57e8ff
mov dword [esp + 0x2c], eax
jmp 0x57e8ff
cmp ebx, 1
jl 0x57e8db
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
mov dword [esp + 0x3c], edx
add edx, 0xffffffff
cmp eax, edx
jge 0x57eca2
mov eax, 0x10000
sub eax, dword [esp + 0x34]
cdq
idiv ebx
test eax, eax
jle 0x57e8bc
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, dword [esp + 0x34]
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, dword [esp + 0x2c]
jge 0x57e8ff
mov dword [esp + 0x2c], eax
jmp 0x57e8ff
cmp dword [esp + 0x34], 0
jl 0x57eca2
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp dword [esp + 0x34], edx
jge 0x57eca2
mov eax, dword [esp + 0x50]
cmp eax, 0xffffffff
jg 0x57e947
cmp dword [esp + 0x78], 0
jl 0x57eca2
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x70]
jle 0x57e932
mov dword [esp + 0x70], eax
mov eax, ecx
cdq
idiv dword [esp + 0x50]
neg eax
cmp eax, dword [esp + 0x2c]
jge 0x57e9b4
mov dword [esp + 0x2c], eax
jmp 0x57e9b4
cmp eax, 1
jl 0x57e996
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
add eax, 0xffffffff
cmp dword [esp + 0x78], eax
jge 0x57eca2
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x70]
jle 0x57e975
mov dword [esp + 0x70], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x2c]
jge 0x57e9b4
mov dword [esp + 0x2c], eax
jmp 0x57e9b4
test ecx, ecx
jl 0x57eca2
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x57eca2
mov eax, dword [esp + 0x70]
mov edx, ebx
imul edx, dword [esp + 0x70]
add dword [esp + 0x34], edx
mov edx, dword [esp + 0x50]
imul edx, eax
add ecx, edx
mov edx, dword [esp + 0x30]
lea edx, [edx + eax*2]
mov dword [esp + 0x60], edx
mov edx, dword [esi + 0x24]
mov dword [esp + 0x7c], edx
mov edx, dword [esp + 0x2c]
cmp eax, edx
mov dword [esp + 0x94], ecx
jg 0x57eca2
sub edx, eax
add edx, 1
mov dword [esp + 0x3c], edx
mov ebx, dword [esp + 0x34]
mov edx, ecx
sar edx, 0x10
imul edx, dword [esp + 0x7c]
add edx, dword [esp + 0xd4]
mov eax, ebx
sar eax, 0x10
add eax, edx
movzx edx, byte [eax]
mov edx, dword [edi + edx*4]
mov dword [esp + 0x40], edx
movzx edx, byte [eax + 1]
mov edx, dword [edi + edx*4]
mov dword [esp + 0x70], edx
mov edx, dword [esi + 0x24]
add eax, edx
movzx edx, byte [eax]
mov edx, dword [edi + edx*4]
and ebx, 0xfffe
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0x60]
movzx edx, word [edx]
add ebx, 1
mov dword [esp + 0x78], ebx
mov dword [esp + 0x90], edx
and ecx, 0xfffe
add ecx, 1
mov edx, 0x10000
sub edx, ebx
mov ebx, dword [esp + 0x40]
mov dword [esp + 0xa0], edx
mov esi, 0x10000
sub esi, ecx
imul edx, esi
imul esi, dword [esp + 0x78]
shr ebx, 0x18
shr esi, 0x10
shr edx, 0x10
imul edx, ebx
mov ebx, dword [esp + 0x70]
shr ebx, 0x18
imul esi, ebx
shr esi, 0x10
imul esi, dword [esp + 0x6c]
movzx eax, byte [eax + 1]
mov ebx, dword [esp + 0x84]
mov eax, dword [edi + eax*4]
sar esi, 8
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0xa0]
imul esi, ecx
imul ecx, dword [esp + 0x78]
shr ebx, 0x18
shr esi, 0x10
imul esi, ebx
shr ecx, 0x10
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
imul ecx, dword [esp + 0x6c]
shr esi, 0x10
imul esi, dword [esp + 0x6c]
shr edx, 0x10
imul edx, dword [esp + 0x6c]
sar ecx, 8
sar esi, 8
mov ebx, 0x100
sub ebx, ecx
sub ebx, esi
sub ebx, dword [esp + 0x2c]
sar edx, 8
sub ebx, edx
mov dword [esp + 0x5c], ebx
movzx ebx, word [esp + 0x90]
mov dword [esp + 0x4c], ebx
movzx ebx, al
mov dword [esp + 0x44], edx
imul ebx, ecx
mov dword [esp + 0x88], esi
mov dword [esp + 0x78], ecx
movzx ecx, byte [esp + 0x84]
imul ecx, esi
add ebx, ecx
movzx ecx, byte [esp + 0x70]
imul ecx, dword [esp + 0x2c]
add ebx, ecx
movzx ecx, byte [esp + 0x40]
imul ecx, edx
add ebx, ecx
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0x4c]
shr ebx, 8
imul ebx, dword [esp + 0xb0]
shr ebx, cl
mov ecx, dword [esp + 0xa4]
shl ebx, cl
mov ecx, dword [esp + 0xb8]
and edx, ecx
imul edx, dword [esp + 0x5c]
shr edx, 8
and edx, ecx
mov ecx, dword [esp + 0x84]
and ecx, 0xff0000
imul ecx, esi
add ebx, edx
mov edx, eax
and edx, 0xff0000
imul edx, dword [esp + 0x78]
add edx, ecx
mov ecx, dword [esp + 0x70]
and ecx, 0xff0000
imul ecx, dword [esp + 0x2c]
add edx, ecx
mov ecx, dword [esp + 0x40]
and ecx, 0xff0000
imul ecx, dword [esp + 0x44]
add edx, ecx
mov ecx, dword [esp + 0xd0]
shr edx, 8
imul edx, dword [esp + 0x9c]
shr edx, cl
mov ecx, dword [esp + 0x74]
and eax, 0xff00
imul eax, dword [esp + 0x78]
shl edx, cl
mov ecx, dword [esp + 0x4c]
and ecx, dword [esp + 0x38]
imul ecx, dword [esp + 0x5c]
shr ecx, 8
and ecx, dword [esp + 0x38]
add edx, ecx
mov ecx, dword [esp + 0x84]
and ecx, 0xff00
imul ecx, esi
add eax, ecx
mov ecx, dword [esp + 0x70]
and ecx, 0xff00
imul ecx, dword [esp + 0x2c]
add eax, ecx
mov ecx, dword [esp + 0x40]
and ecx, 0xff00
imul ecx, dword [esp + 0x44]
add eax, ecx
mov ecx, dword [esp + 0x54]
shr eax, 8
imul eax, dword [esp + 0xa8]
shr eax, cl
mov ecx, dword [esp + 0x48]
or ebx, edx
mov edx, dword [esp + 0x8c]
shl eax, cl
mov ecx, dword [esp + 0x4c]
and ecx, edx
imul ecx, dword [esp + 0x5c]
shr ecx, 8
and ecx, edx
add eax, ecx
or ebx, eax
mov eax, dword [esp + 0x60]
mov word [eax], bx
add eax, 2
mov ecx, dword [esp + 0x94]
mov ebx, dword [esp + 0xac]
add ecx, dword [esp + 0x50]
add dword [esp + 0x34], ebx
sub dword [esp + 0x3c], 1
mov esi, dword [ebp + 8]
mov dword [esp + 0x60], eax
mov dword [esp + 0x94], ecx
jne 0x57e9fa
mov edx, dword [esp + 0x80]
add dword [esp + 0x30], edx
mov eax, 1
add dword [esp + 0x68], eax
fild dword [esp + 0x68]
add dword [esp + 0x58], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x57e7f3
jmp 0x57fd73
cmp eax, 0x20
jne 0x57fd7d
fld qword [esp + 0xe0]
call fcn.006397d0
fld qword [esp + 0xd8]
mov dword [esp + 0x3c], eax
call fcn.006397d0
mov ecx, dword [esp + 0xbc]
mov ecx, dword [ecx + 0x90]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
imul eax, ecx
cdq
and edx, 3
add eax, edx
mov edx, dword [esp + 0xbc]
mov edx, dword [edx + 0xa4]
sar eax, 2
add eax, dword [esp + 0x64]
lea eax, [edx + eax*4]
mov dword [esp + 0x6c], eax
mov eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 0x1c]
call fcn.00564470
test al, al
fld qword [esp + 0xf0]
fcomp qword [0x679298]
je 0x57f7bd
cmp byte [0x6a9f64], 0
fnstsw ax
je 0x57f282
test ah, 0x41
mov dword [esp + 0x58], 0
jne 0x57fd7d
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0xa8]
fld dword [esp + 0xa8]
fld st(0)
fld qword [esp + 0xc8]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xc0]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov ecx, dword [esp + 0x4c]
fld qword [0x679478]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
lea edx, [ecx*4]
mov dword [esp + 0x84], edx
mov dword [esp + 0x60], eax
fild dword [esp + 0x60]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0xa8]
fld dword [esp + 0xa8]
fld qword [esp + 0xc0]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov dword [esp + 0x34], eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov edx, dword [esp + 0x64]
mov ecx, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x80], edx
mov edx, ecx
sar edx, 0x10
sar eax, 0x10
cmp ebx, 0xffffffff
mov dword [esp + 0x70], 0
mov dword [esp + 0x78], edx
jg 0x57ee92
test eax, eax
jl 0x57f24f
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, dword [esp + 0x34]
sub eax, 0x27fff
cdq
idiv ebx
test eax, eax
jl 0x57ee70
mov dword [esp + 0x70], eax
mov eax, 0x7fff
sub eax, dword [esp + 0x34]
cdq
idiv ebx
cmp eax, dword [esp + 0x80]
jge 0x57ef09
mov dword [esp + 0x80], eax
jmp 0x57ef09
cmp ebx, 1
jl 0x57eee5
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
mov dword [esp + 0x3c], edx
add edx, 0xffffffff
cmp eax, edx
jge 0x57f24f
mov eax, 0x10000
sub eax, dword [esp + 0x34]
cdq
idiv ebx
test eax, eax
jle 0x57eec0
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, dword [esp + 0x34]
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, dword [esp + 0x80]
jge 0x57ef09
mov dword [esp + 0x80], eax
jmp 0x57ef09
cmp dword [esp + 0x34], 0
jl 0x57f24f
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp dword [esp + 0x34], edx
jge 0x57f24f
mov eax, dword [esp + 0x50]
cmp eax, 0xffffffff
jg 0x57ef57
cmp dword [esp + 0x78], 0
jl 0x57f24f
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x70]
jle 0x57ef3c
mov dword [esp + 0x70], eax
mov eax, ecx
cdq
idiv dword [esp + 0x50]
neg eax
cmp eax, dword [esp + 0x80]
jge 0x57efca
mov dword [esp + 0x80], eax
jmp 0x57efca
cmp eax, 1
jl 0x57efac
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
add eax, 0xffffffff
cmp dword [esp + 0x78], eax
jge 0x57f24f
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x70]
jle 0x57ef85
mov dword [esp + 0x70], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x80]
jge 0x57efca
mov dword [esp + 0x80], eax
jmp 0x57efca
test ecx, ecx
jl 0x57f24f
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x57f24f
mov eax, dword [esp + 0x70]
mov edx, ebx
imul edx, dword [esp + 0x70]
add dword [esp + 0x34], edx
mov edx, dword [esp + 0x50]
imul edx, eax
add ecx, edx
mov edx, dword [esp + 0x6c]
lea edx, [edx + eax*4]
mov dword [esp + 0x5c], edx
mov edx, dword [esi + 0x24]
mov dword [esp + 0xa8], edx
mov edx, dword [esp + 0x80]
cmp eax, edx
mov dword [esp + 0x94], ecx
jg 0x57f24f
sub edx, eax
add edx, 1
mov dword [esp + 0xa4], edx
mov ebx, dword [esp + 0x34]
mov edx, ecx
sar edx, 0x10
imul edx, dword [esp + 0xa8]
add edx, dword [esp + 0xd4]
mov eax, ebx
sar eax, 0x10
add eax, edx
movzx edx, byte [eax]
mov edx, dword [edi + edx*4]
mov dword [esp + 0x98], edx
movzx edx, byte [eax + 1]
mov edx, dword [edi + edx*4]
and ebx, 0xfffe
add ebx, 1
mov dword [esp + 0x54], edx
mov edx, dword [esi + 0x24]
add eax, edx
movzx edx, byte [eax]
mov edx, dword [edi + edx*4]
mov dword [esp + 0x78], ebx
and ecx, 0xfffe
add ecx, 1
mov dword [esp + 0x48], edx
mov edx, 0x10000
sub edx, ebx
mov ebx, dword [esp + 0x98]
shr ebx, 0x18
mov dword [esp + 0x7c], edx
mov esi, 0x10000
sub esi, ecx
imul edx, esi
imul esi, dword [esp + 0x78]
shr edx, 0x10
imul edx, ebx
mov ebx, dword [esp + 0x54]
shr ebx, 0x18
shr esi, 0x10
imul esi, ebx
movzx eax, byte [eax + 1]
mov ebx, dword [esp + 0x48]
mov eax, dword [edi + eax*4]
shr esi, 0x10
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0x7c]
imul esi, ecx
imul ecx, dword [esp + 0x78]
shr ebx, 0x18
shr ecx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
mov ebx, dword [esp + 0x5c]
mov ebx, dword [ebx]
mov dword [esp + 0x4c], ebx
shr ecx, 0x10
shr esi, 0x10
mov ebx, 0x100
sub ebx, ecx
sub ebx, esi
sub ebx, dword [esp + 0x74]
shr edx, 0x10
sub ebx, edx
mov dword [esp + 0x78], ebx
mov dword [esp + 0x88], ecx
movzx ebx, al
imul ebx, ecx
movzx ecx, byte [esp + 0x48]
imul ecx, esi
add ebx, ecx
movzx ecx, byte [esp + 0x54]
imul ecx, dword [esp + 0x74]
add ebx, ecx
movzx ecx, byte [esp + 0x98]
imul ecx, edx
add ebx, ecx
mov dword [esp + 0x68], edx
mov dword [esp + 0x44], esi
and ebx, 0xff00
mov edx, dword [esp + 0x4c]
and edx, 0xffff00ff
imul edx, dword [esp + 0x78]
add ebx, edx
mov edx, dword [esp + 0x48]
mov ecx, eax
and ecx, 0xff00
imul ecx, dword [esp + 0x88]
and edx, 0xff00
imul edx, esi
add ecx, edx
mov edx, dword [esp + 0x54]
and edx, 0xff00
imul edx, dword [esp + 0x74]
add ecx, edx
mov edx, dword [esp + 0x98]
mov esi, dword [esp + 0x4c]
and edx, 0xff00
imul edx, dword [esp + 0x68]
add ecx, edx
mov edx, dword [esp + 0x78]
and ecx, 0xffff0000
and esi, 0xff00
imul esi, edx
add ecx, esi
xor ebx, ecx
mov ecx, dword [esp + 0x48]
and ecx, 0xff00ff
imul ecx, dword [esp + 0x44]
and eax, 0xff00ff
imul eax, dword [esp + 0x88]
add eax, ecx
mov ecx, dword [esp + 0x54]
and ecx, 0xff00ff
imul ecx, dword [esp + 0x74]
add eax, ecx
mov ecx, dword [esp + 0x98]
and ecx, 0xff00ff
imul ecx, dword [esp + 0x68]
add eax, ecx
mov ecx, dword [esp + 0x4c]
mov esi, dword [ebp + 8]
and ecx, 0xff00ff
imul ecx, edx
and eax, 0xff00ff00
add eax, ecx
mov ecx, dword [esp + 0x94]
add ecx, dword [esp + 0x50]
and ebx, 0xff0000
xor ebx, eax
mov eax, dword [esp + 0x5c]
shr ebx, 8
mov dword [eax], ebx
mov ebx, dword [esp + 0xac]
add dword [esp + 0x34], ebx
add eax, 4
sub dword [esp + 0xa4], 1
mov dword [esp + 0x5c], eax
mov dword [esp + 0x94], ecx
jne 0x57f019
mov eax, 1
add dword [esp + 0x58], eax
fild dword [esp + 0x58]
add dword [esp + 0x60], eax
mov eax, dword [esp + 0x84]
add dword [esp + 0x6c], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x57ede4
jmp 0x57fd73
test ah, 0x41
mov dword [esp + 0x68], 0
jne 0x57fd7d
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0xa8]
fld dword [esp + 0xa8]
fld st(0)
fld qword [esp + 0xc8]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xc0]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov ecx, dword [esp + 0x4c]
fld qword [0x679478]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
lea edx, [ecx*4]
mov dword [esp + 0x84], edx
mov dword [esp + 0x58], eax
fild dword [esp + 0x58]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0xa8]
fld dword [esp + 0xa8]
fld qword [esp + 0xc0]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov dword [esp + 0x34], eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov edx, dword [esp + 0x64]
mov ecx, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x2c], edx
mov edx, ecx
sar edx, 0x10
sar eax, 0x10
cmp ebx, 0xffffffff
mov dword [esp + 0x80], 0
mov dword [esp + 0x78], edx
jg 0x57f39f
test eax, eax
jl 0x57f78a
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, dword [esp + 0x34]
sub eax, 0x27fff
cdq
idiv ebx
test eax, eax
jl 0x57f387
mov dword [esp + 0x80], eax
mov eax, 0x7fff
sub eax, dword [esp + 0x34]
cdq
idiv ebx
cmp eax, dword [esp + 0x2c]
jge 0x57f413
mov dword [esp + 0x2c], eax
jmp 0x57f413
cmp ebx, 1
jl 0x57f3ef
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
mov dword [esp + 0x3c], edx
add edx, 0xffffffff
cmp eax, edx
jge 0x57f78a
mov eax, 0x10000
sub eax, dword [esp + 0x34]
cdq
idiv ebx
test eax, eax
jle 0x57f3d0
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, dword [esp + 0x34]
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, dword [esp + 0x2c]
jge 0x57f413
mov dword [esp + 0x2c], eax
jmp 0x57f413
cmp dword [esp + 0x34], 0
jl 0x57f78a
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp dword [esp + 0x34], edx
jge 0x57f78a
mov eax, dword [esp + 0x50]
cmp eax, 0xffffffff
jg 0x57f461
cmp dword [esp + 0x78], 0
jl 0x57f78a
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x80]
jle 0x57f44c
mov dword [esp + 0x80], eax
mov eax, ecx
cdq
idiv dword [esp + 0x50]
neg eax
cmp eax, dword [esp + 0x2c]
jge 0x57f4d4
mov dword [esp + 0x2c], eax
jmp 0x57f4d4
cmp eax, 1
jl 0x57f4b6
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
add eax, 0xffffffff
cmp dword [esp + 0x78], eax
jge 0x57f78a
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x80]
jle 0x57f495
mov dword [esp + 0x80], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x2c]
jge 0x57f4d4
mov dword [esp + 0x2c], eax
jmp 0x57f4d4
test ecx, ecx
jl 0x57f78a
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x57f78a
mov edx, dword [esp + 0x80]
mov eax, dword [esp + 0x80]
imul edx, ebx
imul eax, dword [esp + 0x50]
add dword [esp + 0x34], edx
mov edx, dword [esp + 0x6c]
add ecx, eax
mov eax, dword [esp + 0x80]
lea edx, [edx + eax*4]
mov dword [esp + 0x60], edx
mov edx, dword [esi + 0x24]
mov dword [esp + 0xa8], edx
mov edx, dword [esp + 0x2c]
cmp eax, edx
mov dword [esp + 0x70], ecx
jg 0x57f78a
sub edx, eax
add edx, 1
mov dword [esp + 0x30], edx
mov ebx, dword [esp + 0x34]
mov edx, ecx
sar edx, 0x10
imul edx, dword [esp + 0xa8]
add edx, dword [esp + 0xd4]
mov eax, ebx
sar eax, 0x10
add eax, edx
movzx edx, byte [eax]
mov edx, dword [edi + edx*4]
mov dword [esp + 0x40], edx
movzx edx, byte [eax + 1]
mov edx, dword [edi + edx*4]
mov dword [esp + 0x80], edx
mov edx, dword [esi + 0x24]
add eax, edx
movzx edx, byte [eax]
mov edx, dword [edi + edx*4]
and ebx, 0xfffe
add ebx, 1
mov dword [esp + 0x94], edx
mov dword [esp + 0x78], ebx
and ecx, 0xfffe
add ecx, 1
mov esi, 0x10000
sub esi, ebx
mov ebx, dword [esp + 0x40]
shr ebx, 0x18
mov dword [esp + 0x7c], esi
mov edx, 0x10000
sub edx, ecx
imul esi, edx
imul edx, dword [esp + 0x78]
shr edx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, dword [esp + 0x80]
shr ebx, 0x18
imul edx, ebx
movzx eax, byte [eax + 1]
mov ebx, dword [esp + 0x94]
mov eax, dword [edi + eax*4]
shr edx, 0x10
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x7c]
imul edx, ecx
imul ecx, dword [esp + 0x78]
shr ebx, 0x18
shr edx, 0x10
imul edx, ebx
shr ecx, 0x10
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
mov ebx, dword [esp + 0x60]
mov ebx, dword [ebx]
mov dword [esp + 0x4c], ebx
shr ecx, 0x10
shr edx, 0x10
mov ebx, 0x100
sub ebx, ecx
sub ebx, edx
sub ebx, dword [esp + 0x2c]
shr esi, 0x10
sub ebx, esi
mov dword [esp + 0x5c], ebx
mov ebx, eax
and ebx, 0xff00
imul ebx, ecx
mov dword [esp + 0x78], ecx
mov ecx, dword [esp + 0x94]
and ecx, 0xff00
imul ecx, edx
mov dword [esp + 0x88], edx
mov edx, dword [esp + 0x80]
and edx, 0xff00
imul edx, dword [esp + 0x2c]
add ebx, ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x44], esi
add ebx, edx
and ecx, 0xff00
imul ecx, esi
add ebx, ecx
mov ecx, dword [esp + 0x54]
shr ebx, cl
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
shl ebx, cl
mov ecx, dword [esp + 0x8c]
and edx, ecx
imul edx, dword [esp + 0x5c]
shr edx, 8
and edx, ecx
movzx ecx, byte [esp + 0x94]
imul ecx, dword [esp + 0x88]
add ebx, edx
movzx edx, al
imul edx, dword [esp + 0x78]
add edx, ecx
movzx ecx, byte [esp + 0x80]
imul ecx, dword [esp + 0x2c]
add edx, ecx
movzx ecx, byte [esp + 0x40]
imul ecx, esi
add edx, ecx
mov ecx, dword [esp + 0x98]
shr edx, cl
mov ecx, dword [esp + 0xa4]
and eax, 0xff0000
imul eax, dword [esp + 0x78]
shl edx, cl
mov ecx, dword [esp + 0x4c]
and ecx, dword [esp + 0xb8]
imul ecx, dword [esp + 0x5c]
shr ecx, 8
and ecx, dword [esp + 0xb8]
add edx, ecx
mov ecx, dword [esp + 0x94]
and ecx, 0xff0000
imul ecx, dword [esp + 0x88]
add eax, ecx
mov ecx, dword [esp + 0x80]
and ecx, 0xff0000
imul ecx, dword [esp + 0x2c]
add eax, ecx
mov ecx, dword [esp + 0x40]
and ecx, 0xff0000
imul ecx, esi
add eax, ecx
mov ecx, dword [esp + 0xd0]
shr eax, cl
mov ecx, dword [esp + 0x74]
or ebx, edx
mov edx, dword [esp + 0x38]
shl eax, cl
mov ecx, dword [esp + 0x4c]
and ecx, edx
imul ecx, dword [esp + 0x5c]
mov esi, dword [ebp + 8]
shr ecx, 8
and ecx, edx
add eax, ecx
mov ecx, dword [esp + 0x70]
add ecx, dword [esp + 0x50]
or ebx, eax
mov eax, dword [esp + 0x60]
mov dword [eax], ebx
mov ebx, dword [esp + 0xac]
add dword [esp + 0x34], ebx
add eax, 4
sub dword [esp + 0x30], 1
mov dword [esp + 0x60], eax
mov dword [esp + 0x70], ecx
jne 0x57f525
mov edx, dword [esp + 0x84]
add dword [esp + 0x6c], edx
mov eax, 1
add dword [esp + 0x68], eax
fild dword [esp + 0x68]
add dword [esp + 0x58], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x57f2f8
jmp 0x57fd73
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x94], eax
mov eax, dword [ecx]
add eax, 1
mov dword [esp + 0x9c], eax
mov eax, dword [ecx + 4]
add eax, 1
mov dword [esp + 0xb4], eax
mov eax, dword [ecx + 8]
add eax, 1
mov dword [esp + 0xb0], eax
fnstsw ax
mov dword [esp + 0x44], 0
test ah, 0x41
jne 0x57fd7d
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0xa8]
fld dword [esp + 0xa8]
fld st(0)
fld qword [esp + 0xc8]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xc0]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov ecx, dword [esp + 0x4c]
fld qword [0x679478]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
lea edx, [ecx*4]
mov dword [esp + 0x84], edx
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0xa8]
fld dword [esp + 0xa8]
fld qword [esp + 0xc0]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov dword [esp + 0x34], eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov edx, dword [esp + 0x64]
mov ecx, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x2c], edx
mov edx, ecx
sar edx, 0x10
sar eax, 0x10
cmp ebx, 0xffffffff
mov dword [esp + 0x80], 0
mov dword [esp + 0x78], edx
jg 0x57f90f
test eax, eax
jl 0x57fd45
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, dword [esp + 0x34]
sub eax, 0x27fff
cdq
idiv ebx
test eax, eax
jl 0x57f8f7
mov dword [esp + 0x80], eax
mov eax, 0x7fff
sub eax, dword [esp + 0x34]
cdq
idiv ebx
cmp eax, dword [esp + 0x2c]
jge 0x57f983
mov dword [esp + 0x2c], eax
jmp 0x57f983
cmp ebx, 1
jl 0x57f95f
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
mov dword [esp + 0x3c], edx
add edx, 0xffffffff
cmp eax, edx
jge 0x57fd45
mov eax, 0x10000
sub eax, dword [esp + 0x34]
cdq
idiv ebx
test eax, eax
jle 0x57f940
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x3c]
shl eax, 0x10
sub eax, dword [esp + 0x34]
sub eax, 0x17fff
cdq
idiv ebx
cmp eax, dword [esp + 0x2c]
jge 0x57f983
mov dword [esp + 0x2c], eax
jmp 0x57f983
cmp dword [esp + 0x34], 0
jl 0x57fd45
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp dword [esp + 0x34], edx
jge 0x57fd45
mov eax, dword [esp + 0x50]
cmp eax, 0xffffffff
jg 0x57f9d1
cmp dword [esp + 0x78], 0
jl 0x57fd45
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x80]
jle 0x57f9bc
mov dword [esp + 0x80], eax
mov eax, ecx
cdq
idiv dword [esp + 0x50]
neg eax
cmp eax, dword [esp + 0x2c]
jge 0x57fa44
mov dword [esp + 0x2c], eax
jmp 0x57fa44
cmp eax, 1
jl 0x57fa26
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
add eax, 0xffffffff
cmp dword [esp + 0x78], eax
jge 0x57fd45
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x80]
jle 0x57fa05
mov dword [esp + 0x80], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [esp + 0x50]
cmp eax, dword [esp + 0x2c]
jge 0x57fa44
mov dword [esp + 0x2c], eax
jmp 0x57fa44
test ecx, ecx
jl 0x57fd45
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x57fd45
mov edx, dword [esp + 0x80]
mov eax, dword [esp + 0x80]
imul edx, ebx
imul eax, dword [esp + 0x50]
add dword [esp + 0x34], edx
mov edx, dword [esp + 0x6c]
add ecx, eax
mov eax, dword [esp + 0x80]
lea edx, [edx + eax*4]
mov dword [esp + 0x58], edx
mov edx, dword [esi + 0x24]
mov dword [esp + 0xa8], edx
mov edx, dword [esp + 0x2c]
cmp eax, edx
mov dword [esp + 0x70], ecx
jg 0x57fd45
sub edx, eax
add edx, 1
mov dword [esp + 0x88], edx
mov esi, dword [esi + 0x24]
mov edx, dword [esp + 0x34]
mov ebx, ecx
sar ebx, 0x10
imul ebx, dword [esp + 0xa8]
add ebx, dword [esp + 0xd4]
mov eax, edx
sar eax, 0x10
add eax, ebx
movzx ebx, byte [eax]
mov ebx, dword [edi + ebx*4]
mov dword [esp + 0x40], ebx
movzx ebx, byte [eax + 1]
mov ebx, dword [edi + ebx*4]
add eax, esi
movzx esi, byte [eax]
mov esi, dword [edi + esi*4]
mov dword [esp + 0x80], esi
mov esi, dword [esp + 0x58]
mov esi, dword [esi]
mov dword [esp + 0x5c], esi
mov dword [esp + 0x2c], ebx
and edx, 0xfffe
and ecx, 0xfffe
add edx, 1
add ecx, 1
mov esi, 0x10000
sub esi, edx
mov dword [esp + 0xa0], esi
mov ebx, 0x10000
sub ebx, ecx
imul esi, ebx
mov dword [esp + 0x7c], ebx
mov ebx, dword [esp + 0x40]
shr esi, 0x10
shr ebx, 0x18
imul esi, ebx
shr esi, 0x10
imul esi, dword [esp + 0x94]
movzx eax, byte [eax + 1]
mov dword [esp + 0x90], edx
imul edx, dword [esp + 0x7c]
mov ebx, dword [esp + 0x80]
mov eax, dword [edi + eax*4]
sar esi, 8
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x2c]
shr esi, 0x18
shr edx, 0x10
imul edx, esi
mov esi, ecx
imul ecx, dword [esp + 0x90]
imul esi, dword [esp + 0xa0]
shr ebx, 0x18
shr esi, 0x10
imul esi, ebx
shr ecx, 0x10
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
imul ecx, dword [esp + 0x94]
shr esi, 0x10
imul esi, dword [esp + 0x94]
shr edx, 0x10
imul edx, dword [esp + 0x94]
sar ecx, 8
sar esi, 8
mov ebx, 0x100
sub ebx, ecx
sub ebx, esi
sar edx, 8
sub ebx, edx
sub ebx, dword [esp + 0x30]
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x60], ebx
movzx ebx, al
imul ebx, ecx
movzx ecx, byte [esp + 0x80]
mov dword [esp + 0x78], edx
mov dword [esp + 0x7c], esi
imul ecx, esi
add ebx, ecx
movzx ecx, byte [esp + 0x2c]
imul ecx, edx
add ebx, ecx
movzx edx, byte [esp + 0x40]
imul edx, dword [esp + 0x30]
add ebx, edx
mov ecx, dword [esp + 0x98]
shr ebx, 8
imul ebx, dword [esp + 0xb0]
shr ebx, cl
mov ecx, dword [esp + 0xa4]
mov edx, eax
and edx, 0xff0000
shl ebx, cl
imul edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x5c]
and ecx, dword [esp + 0xb8]
and eax, 0xff00
imul ecx, dword [esp + 0x60]
imul eax, dword [esp + 0x4c]
shr ecx, 8
and ecx, dword [esp + 0xb8]
add ebx, ecx
mov ecx, dword [esp + 0x80]
and ecx, 0xff0000
imul ecx, esi
add edx, ecx
mov ecx, dword [esp + 0x2c]
and ecx, 0xff0000
imul ecx, dword [esp + 0x78]
add edx, ecx
mov ecx, dword [esp + 0x40]
and ecx, 0xff0000
imul ecx, dword [esp + 0x30]
add edx, ecx
mov ecx, dword [esp + 0xd0]
shr edx, 8
imul edx, dword [esp + 0x9c]
shr edx, cl
mov ecx, dword [esp + 0x74]
shl edx, cl
mov ecx, dword [esp + 0x5c]
and ecx, dword [esp + 0x38]
imul ecx, dword [esp + 0x60]
shr ecx, 8
and ecx, dword [esp + 0x38]
add edx, ecx
mov ecx, dword [esp + 0x80]
and ecx, 0xff00
imul ecx, esi
add eax, ecx
mov ecx, dword [esp + 0x2c]
and ecx, 0xff00
imul ecx, dword [esp + 0x78]
add eax, ecx
mov ecx, dword [esp + 0x40]
and ecx, 0xff00
imul ecx, dword [esp + 0x30]
add eax, ecx
mov ecx, dword [esp + 0x54]
shr eax, 8
imul eax, dword [esp + 0xb4]
shr eax, cl
mov ecx, dword [esp + 0x48]
or ebx, edx
mov edx, dword [esp + 0x8c]
shl eax, cl
mov ecx, dword [esp + 0x5c]
and ecx, edx
imul ecx, dword [esp + 0x60]
shr ecx, 8
and ecx, edx
add eax, ecx
or ebx, eax
mov eax, dword [esp + 0x58]
mov dword [eax], ebx
mov ebx, dword [esp + 0xac]
add eax, 4
mov dword [esp + 0x58], eax
mov ecx, dword [esp + 0x70]
add ecx, dword [esp + 0x50]
add dword [esp + 0x34], ebx
sub dword [esp + 0x88], 1
mov esi, dword [ebp + 8]
mov dword [esp + 0x70], ecx
jne 0x57fa98
mov edx, dword [esp + 0x84]
add dword [esp + 0x6c], edx
mov eax, 1
add dword [esp + 0x44], eax
fild dword [esp + 0x44]
add dword [esp + 0x68], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x57f868
fstp st(0)
fstp st(0)
fstp st(1)
fstp st(0)
fstp st(0)
mov ecx, dword [esp + 0xbc]
mov eax, dword [ecx]
mov edx, dword [eax + 0xc0]
call edx
mov esi, dword [esp + 0xbc]
call fcn.0056c560
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
mov ecx, ebx
mov ebx, dword [ecx + 0x48]
mov eax, ecx
mov dword [esp + 0xa4], ebx
call fcn.00588a10
test ebx, ebx
jne 0x580b4f
mov edi, eax
mov eax, dword [ebp + 0x14]
imul edi, dword [eax + 4]
add edi, dword [eax]
mov eax, dword [ecx]
mov edx, dword [eax + 0x7c]
add edi, edi
add edi, edi
call edx
add eax, edi
fld qword [ebp + 0x24]
mov dword [esp + 0xb8], eax
call fcn.00639f90
fstp qword [esp + 0xf8]
fld qword [ebp + 0x24]
call fcn.0063a180
fst qword [esp + 0xc0]
fld qword [esp + 0xf8]
fld qword [0x679478]
fmul st(1), st(0)
fxch st(1)
call fcn.006397d0
fmulp st(1)
mov dword [esp + 0x34], eax
call fcn.006397d0
mov ebx, dword [esp + 0xbc]
mov edi, eax
mov eax, dword [ebx]
mov edx, dword [eax + 0xbc]
mov ecx, ebx
mov dword [esp + 0x30], edi
call edx
test al, al
je 0x58191f
mov eax, dword [ebx + 0x6c]
mov ecx, dword [eax + 0xd0]
mov edx, dword [eax + 0xd4]
mov dword [esp + 0x70], ecx
mov ecx, dword [eax + 0xd8]
mov dword [esp + 0x2c], ecx
mov ecx, dword [eax + 0x24]
mov dword [esp + 0x50], ecx
mov ecx, 0x20
sub ecx, dword [eax + 0x14]
mov dword [esp + 0x9c], edx
mov edx, dword [eax + 0x20]
mov dword [esp + 0xac], ecx
mov ecx, 0x18
sub ecx, dword [eax + 0x18]
mov dword [esp + 0x74], edx
mov edx, dword [eax + 0x28]
mov dword [esp + 0x6c], ecx
mov ecx, 0x10
sub ecx, dword [eax + 0x1c]
mov eax, dword [ebx + 0xd8]
mov dword [esp + 0xd4], eax
mov eax, dword [ebx + 0xd4]
cmp eax, 0x10
mov dword [esp + 0x84], edx
mov edx, dword [ebx + 0xe0]
mov dword [esp + 0x94], ecx
mov ecx, dword [ebx + 0xdc]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x80], edx
jne 0x580504
fld qword [esp + 0xe0]
call fcn.006397d0
fld qword [esp + 0xd8]
mov dword [esp + 0x3c], eax
call fcn.006397d0
fld qword [esp + 0xf0]
mov ecx, dword [ebx + 0x90]
fcomp qword [0x679298]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
imul eax, ecx
cdq
sub eax, edx
mov edx, dword [ebx + 0xa4]
sar eax, 1
add eax, dword [esp + 0x64]
mov dword [esp + 0x68], 0
lea eax, [edx + eax*2]
mov dword [esp + 0x58], eax
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0xa8], eax
mov eax, dword [ebp + 0x1c]
mov edx, dword [eax + 0xc]
mov ecx, dword [eax]
imul ecx, edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0xa0], eax
mov eax, dword [ebp + 0x1c]
mov ecx, dword [eax + 4]
mov eax, dword [eax + 0xc]
imul ecx, eax
mov dword [esp + 0xb4], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [ebp + 0x1c]
mov ecx, dword [ecx + 8]
imul ecx, dword [esp + 0xb4]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0xb0], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x90], eax
fnstsw ax
test ah, 0x41
jne 0x580b46
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0xb4]
fld dword [esp + 0xb4]
fld st(0)
fld qword [esp + 0xf8]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xc0]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov edx, dword [esp + 0xa8]
fld qword [0x679478]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x64], eax
lea eax, [edx + edx]
mov dword [esp + 0xc8], eax
mov dword [esp + 0x60], ecx
fild dword [esp + 0x60]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0xb4]
fld dword [esp + 0xb4]
fld qword [esp + 0xc0]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov ebx, eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov edx, dword [esp + 0x64]
mov ecx, eax
mov eax, ebx
sar eax, 0x10
mov dword [esp + 0x78], eax
mov eax, ecx
sar eax, 0x10
cmp dword [esp + 0x34], 0xffffffff
mov dword [esp + 0x38], 0
mov dword [esp + 0x8c], edx
mov dword [esp + 0x88], eax
jg 0x5800e3
cmp dword [esp + 0x78], 0
jl 0x5804d1
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
mov edi, dword [esp + 0x34]
shl eax, 0x10
sub eax, ebx
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x5800bb
mov dword [esp + 0x38], eax
mov eax, 0x7fff
sub eax, ebx
cdq
idiv edi
mov edx, dword [esp + 0x8c]
mov edi, dword [esp + 0x30]
cmp eax, edx
jge 0x58015e
mov edx, eax
mov dword [esp + 0x8c], edx
jmp 0x58015e
cmp dword [esp + 0x34], 1
jl 0x580140
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
add eax, 0xffffffff
cmp dword [esp + 0x78], eax
jge 0x5804d1
mov edi, dword [esp + 0x34]
mov eax, 0x10000
sub eax, ebx
cdq
idiv edi
test eax, eax
jle 0x580113
mov dword [esp + 0x38], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, ebx
sub eax, 0x17fff
cdq
idiv edi
mov edx, dword [esp + 0x8c]
mov edi, dword [esp + 0x30]
cmp eax, edx
jge 0x58015e
mov edx, eax
mov dword [esp + 0x8c], eax
jmp 0x58015e
test ebx, ebx
jl 0x5804d1
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, 0x10000
cmp ebx, eax
jge 0x5804d1
cmp edi, 0xffffffff
jg 0x5801a4
cmp dword [esp + 0x88], 0
jl 0x5804d1
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv edi
cmp eax, dword [esp + 0x38]
jle 0x58018e
mov dword [esp + 0x38], eax
mov eax, ecx
cdq
idiv edi
mov edx, dword [esp + 0x8c]
neg eax
cmp eax, edx
jge 0x580213
mov edx, eax
jmp 0x580213
cmp edi, 1
jl 0x5801f5
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
add eax, 0xffffffff
cmp dword [esp + 0x88], eax
jge 0x5804d1
mov eax, 0x10000
sub eax, ecx
cdq
idiv edi
cmp eax, dword [esp + 0x38]
jle 0x5801d3
mov dword [esp + 0x38], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv edi
mov edx, dword [esp + 0x8c]
cmp eax, edx
jge 0x580213
mov edx, eax
jmp 0x580213
test ecx, ecx
jl 0x5804d1
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x5804d1
mov eax, dword [esp + 0x38]
imul eax, dword [esp + 0x34]
mov edi, dword [esp + 0x58]
add ebx, eax
mov eax, dword [esp + 0x38]
imul eax, dword [esp + 0x30]
add ecx, eax
mov eax, dword [esp + 0x38]
cmp eax, edx
lea edi, [edi + eax*2]
mov dword [esp + 0x5c], edi
mov edi, dword [esi + 0x24]
mov dword [esp + 0x98], ebx
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xb4], edi
jg 0x5804cd
sub edx, eax
add edx, 1
mov dword [esp + 0xd0], edx
mov esi, dword [esi + 0x24]
mov edx, ecx
sar edx, 0x10
imul edx, dword [esp + 0xb4]
mov eax, ebx
sar eax, 0x10
add edx, eax
mov eax, dword [esp + 0xb8]
mov edi, dword [eax + edx*4 + 4]
lea eax, [eax + edx*4]
mov edx, ebx
mov ebx, dword [eax]
and ecx, 0xfffe
lea eax, [eax + esi*4]
mov esi, dword [eax]
add ecx, 1
mov dword [esp + 0x48], esi
and edx, 0xfffe
add edx, 1
mov dword [esp + 0x54], edi
mov dword [esp + 0x7c], edx
mov eax, dword [eax + 4]
mov esi, 0x10000
sub esi, ecx
mov edi, 0x10000
sub edi, edx
imul edx, esi
mov dword [esp + 0xa8], edi
imul edi, esi
mov esi, dword [esp + 0x54]
mov dword [esp + 0x44], ebx
shr ebx, 0x18
shr edx, 0x10
shr esi, 0x18
imul edx, esi
mov esi, ecx
imul ecx, dword [esp + 0x7c]
imul esi, dword [esp + 0xa8]
shr edi, 0x10
imul edi, ebx
mov ebx, dword [esp + 0x48]
shr ebx, 0x18
shr ecx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
mov ebx, dword [esp + 0x5c]
movzx ebx, word [ebx]
movzx ebx, bx
mov dword [esp + 0x4c], ebx
shr ecx, 0x10
mov dword [esp + 0x78], ecx
mov ebx, eax
and ebx, 0xff0000
imul ebx, ecx
mov ecx, dword [esp + 0x48]
and ecx, 0xff0000
shr esi, 0x10
imul ecx, esi
add ebx, ecx
mov ecx, dword [esp + 0x54]
shr edx, 0x10
and ecx, 0xff0000
imul ecx, edx
mov dword [esp + 0x88], edx
mov edx, dword [esp + 0x44]
and edx, 0xff0000
shr edi, 0x10
imul edx, edi
add ebx, ecx
mov ecx, dword [esp + 0xac]
add ebx, edx
mov edx, dword [esp + 0xd4]
shr ebx, cl
mov ecx, dword [esp + 0x74]
mov dword [esp + 0xa8], esi
imul ebx, dword [esp + 0xa0]
shr ebx, 8
and edx, dword [esp + 0x4c]
shr edx, cl
mov ecx, dword [esp + 0x70]
add ebx, edx
mov dx, word [ecx + ebx*4]
mov ecx, dword [esp + 0x74]
shl dx, cl
movzx ecx, byte [esp + 0x48]
imul ecx, esi
movzx ebx, al
imul ebx, dword [esp + 0x78]
add ebx, ecx
movzx ecx, byte [esp + 0x54]
imul ecx, dword [esp + 0x88]
add ebx, ecx
movzx ecx, byte [esp + 0x44]
imul ecx, edi
add ebx, ecx
imul ebx, dword [esp + 0x90]
mov ecx, dword [esp + 0x94]
mov esi, dword [esp + 0x80]
and esi, dword [esp + 0x4c]
add ecx, 8
shr ebx, cl
mov ecx, dword [esp + 0x84]
shr esi, cl
mov ecx, dword [esp + 0x2c]
and eax, 0xff00
imul eax, dword [esp + 0x78]
add ebx, esi
mov si, word [ecx + ebx*4]
mov ecx, dword [esp + 0x84]
shl si, cl
mov ecx, dword [esp + 0x48]
and ecx, 0xff00
imul ecx, dword [esp + 0xa8]
add eax, ecx
mov ecx, dword [esp + 0x54]
and ecx, 0xff00
imul ecx, dword [esp + 0x88]
add eax, ecx
mov ecx, dword [esp + 0x44]
and ecx, 0xff00
imul ecx, edi
add eax, ecx
imul eax, dword [esp + 0xb0]
mov ecx, dword [esp + 0x6c]
mov ebx, dword [esp + 0x98]
add ebx, dword [esp + 0x34]
mov edi, dword [esp + 0x30]
or dx, si
mov esi, dword [esp + 0x40]
and esi, dword [esp + 0x4c]
add ecx, 8
shr eax, cl
mov ecx, dword [esp + 0x50]
shr esi, cl
mov dword [esp + 0x98], ebx
add eax, esi
mov esi, dword [esp + 0x9c]
mov ax, word [esi + eax*4]
mov esi, dword [ebp + 8]
shl ax, cl
mov ecx, dword [esp + 0xa4]
add ecx, edi
mov dword [esp + 0xa4], ecx
or dx, ax
mov eax, dword [esp + 0x5c]
mov word [eax], dx
add eax, 2
sub dword [esp + 0xd0], 1
mov dword [esp + 0x5c], eax
jne 0x580264
jmp 0x5804d1
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0xc8]
add dword [esp + 0x58], ecx
mov eax, 1
add dword [esp + 0x68], eax
fild dword [esp + 0x68]
add dword [esp + 0x60], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x580025
jmp 0x580b35
cmp eax, 0x20
jne 0x580b46
fld qword [esp + 0xe0]
call fcn.006397d0
fld qword [esp + 0xd8]
mov dword [esp + 0x3c], eax
call fcn.006397d0
fld qword [esp + 0xf0]
mov ecx, dword [ebx + 0x90]
fcomp qword [0x679298]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
imul eax, ecx
cdq
and edx, 3
add eax, edx
mov edx, dword [ebx + 0xa4]
sar eax, 2
add eax, dword [esp + 0x64]
mov dword [esp + 0x68], 0
lea eax, [edx + eax*4]
mov dword [esp + 0x58], eax
mov eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [esp + 0xb4], eax
mov eax, dword [ebp + 0x1c]
mov edx, dword [eax + 0xc]
mov ecx, dword [eax]
imul ecx, edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x7c], eax
mov eax, dword [ebp + 0x1c]
mov ecx, dword [eax + 4]
mov eax, dword [eax + 0xc]
imul ecx, eax
mov dword [esp + 0xc8], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [ebp + 0x1c]
mov ecx, dword [ecx + 8]
imul ecx, dword [esp + 0xc8]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x90], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0xa0], eax
fnstsw ax
test ah, 0x41
jne 0x580b46
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0xc8]
fld dword [esp + 0xc8]
fld st(0)
fld qword [esp + 0xf8]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xc0]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov edx, dword [esp + 0xb4]
fld qword [0x679478]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x64], eax
lea eax, [edx*4]
mov dword [esp + 0xb0], eax
mov dword [esp + 0x60], ecx
fild dword [esp + 0x60]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0xc8]
fld dword [esp + 0xc8]
fld qword [esp + 0xc0]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov ebx, eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov edx, dword [esp + 0x64]
mov ecx, eax
mov eax, ebx
sar eax, 0x10
mov dword [esp + 0x78], eax
mov eax, ecx
sar eax, 0x10
cmp dword [esp + 0x34], 0xffffffff
mov dword [esp + 0x38], 0
mov dword [esp + 0x8c], edx
mov dword [esp + 0x88], eax
jg 0x580723
cmp dword [esp + 0x78], 0
jl 0x580b07
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
mov edi, dword [esp + 0x34]
shl eax, 0x10
sub eax, ebx
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x5806fb
mov dword [esp + 0x38], eax
mov eax, 0x7fff
sub eax, ebx
cdq
idiv edi
mov edx, dword [esp + 0x8c]
mov edi, dword [esp + 0x30]
cmp eax, edx
jge 0x58079e
mov edx, eax
mov dword [esp + 0x8c], edx
jmp 0x58079e
cmp dword [esp + 0x34], 1
jl 0x580780
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
add eax, 0xffffffff
cmp dword [esp + 0x78], eax
jge 0x580b07
mov edi, dword [esp + 0x34]
mov eax, 0x10000
sub eax, ebx
cdq
idiv edi
test eax, eax
jle 0x580753
mov dword [esp + 0x38], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, ebx
sub eax, 0x17fff
cdq
idiv edi
mov edx, dword [esp + 0x8c]
mov edi, dword [esp + 0x30]
cmp eax, edx
jge 0x58079e
mov edx, eax
mov dword [esp + 0x8c], eax
jmp 0x58079e
test ebx, ebx
jl 0x580b07
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, 0x10000
cmp ebx, eax
jge 0x580b07
cmp edi, 0xffffffff
jg 0x5807e4
cmp dword [esp + 0x88], 0
jl 0x580b07
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv edi
cmp eax, dword [esp + 0x38]
jle 0x5807ce
mov dword [esp + 0x38], eax
mov eax, ecx
cdq
idiv edi
mov edx, dword [esp + 0x8c]
neg eax
cmp eax, edx
jge 0x580853
mov edx, eax
jmp 0x580853
cmp edi, 1
jl 0x580835
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
add eax, 0xffffffff
cmp dword [esp + 0x88], eax
jge 0x580b07
mov eax, 0x10000
sub eax, ecx
cdq
idiv edi
cmp eax, dword [esp + 0x38]
jle 0x580813
mov dword [esp + 0x38], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv edi
mov edx, dword [esp + 0x8c]
cmp eax, edx
jge 0x580853
mov edx, eax
jmp 0x580853
test ecx, ecx
jl 0x580b07
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x580b07
mov eax, dword [esp + 0x38]
imul eax, dword [esp + 0x34]
mov edi, dword [esp + 0x58]
add ebx, eax
mov eax, dword [esp + 0x38]
imul eax, dword [esp + 0x30]
add ecx, eax
mov eax, dword [esp + 0x38]
cmp eax, edx
lea edi, [edi + eax*4]
mov dword [esp + 0x5c], edi
mov edi, dword [esi + 0x24]
mov dword [esp + 0x98], ebx
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xc8], edi
jg 0x580b03
sub edx, eax
add edx, 1
mov dword [esp + 0xd0], edx
mov esi, dword [esi + 0x24]
mov edx, ecx
sar edx, 0x10
imul edx, dword [esp + 0xc8]
mov eax, ebx
sar eax, 0x10
add edx, eax
mov eax, dword [esp + 0xb8]
mov edi, dword [eax + edx*4 + 4]
lea eax, [eax + edx*4]
mov edx, ebx
mov ebx, dword [eax]
and ecx, 0xfffe
lea eax, [eax + esi*4]
mov esi, dword [eax]
add ecx, 1
and edx, 0xfffe
mov dword [esp + 0x48], esi
add edx, 1
mov dword [esp + 0xa8], edx
mov dword [esp + 0x54], edi
mov eax, dword [eax + 4]
mov esi, 0x10000
sub esi, ecx
mov edi, 0x10000
sub edi, edx
imul edx, esi
mov dword [esp + 0xb4], edi
imul edi, esi
mov esi, dword [esp + 0x54]
shr edx, 0x10
mov dword [esp + 0x44], ebx
shr esi, 0x18
imul edx, esi
mov esi, ecx
imul ecx, dword [esp + 0xa8]
imul esi, dword [esp + 0xb4]
shr ebx, 0x18
shr edi, 0x10
imul edi, ebx
mov ebx, dword [esp + 0x48]
shr ebx, 0x18
shr ecx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
mov ebx, dword [esp + 0x5c]
mov ebx, dword [ebx]
mov dword [esp + 0x4c], ebx
shr ecx, 0x10
mov dword [esp + 0x78], ecx
mov ebx, eax
and ebx, 0xff0000
imul ebx, ecx
mov ecx, dword [esp + 0x48]
and ecx, 0xff0000
shr esi, 0x10
imul ecx, esi
add ebx, ecx
mov ecx, dword [esp + 0x54]
shr edx, 0x10
mov dword [esp + 0x88], edx
and ecx, 0xff0000
imul ecx, edx
mov edx, dword [esp + 0x44]
and edx, 0xff0000
shr edi, 0x10
imul edx, edi
add ebx, ecx
mov ecx, dword [esp + 0xac]
add ebx, edx
mov edx, dword [esp + 0x4c]
and edx, dword [esp + 0xd4]
shr ebx, cl
mov ecx, dword [esp + 0x74]
mov dword [esp + 0xb4], esi
imul ebx, dword [esp + 0x7c]
shr ebx, 8
shr edx, cl
mov ecx, dword [esp + 0x70]
add ebx, edx
mov ebx, dword [ecx + ebx*4]
mov ecx, dword [esp + 0x74]
shl ebx, cl
movzx ecx, byte [esp + 0x48]
imul ecx, esi
movzx edx, al
imul edx, dword [esp + 0x78]
add edx, ecx
movzx ecx, byte [esp + 0x54]
imul ecx, dword [esp + 0x88]
add edx, ecx
movzx ecx, byte [esp + 0x44]
imul ecx, edi
add edx, ecx
imul edx, dword [esp + 0xa0]
mov ecx, dword [esp + 0x94]
mov esi, dword [esp + 0x4c]
and esi, dword [esp + 0x80]
add ecx, 8
shr edx, cl
mov ecx, dword [esp + 0x84]
shr esi, cl
mov ecx, dword [esp + 0x2c]
and eax, 0xff00
imul eax, dword [esp + 0x78]
add edx, esi
mov edx, dword [ecx + edx*4]
mov ecx, dword [esp + 0x84]
shl edx, cl
mov ecx, dword [esp + 0x48]
and ecx, 0xff00
imul ecx, dword [esp + 0xb4]
add eax, ecx
mov ecx, dword [esp + 0x54]
and ecx, 0xff00
imul ecx, dword [esp + 0x88]
add eax, ecx
mov ecx, dword [esp + 0x44]
and ecx, 0xff00
imul ecx, edi
add eax, ecx
imul eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x6c]
or ebx, edx
mov edx, dword [esp + 0x4c]
and edx, dword [esp + 0x40]
mov edi, dword [esp + 0x30]
add ecx, 8
shr eax, cl
mov ecx, dword [esp + 0x50]
mov esi, dword [ebp + 8]
shr edx, cl
add eax, edx
mov edx, dword [esp + 0x9c]
mov eax, dword [edx + eax*4]
shl eax, cl
mov ecx, dword [esp + 0xa4]
add ecx, edi
mov dword [esp + 0xa4], ecx
or ebx, eax
mov eax, dword [esp + 0x5c]
mov dword [eax], ebx
mov ebx, dword [esp + 0x98]
add ebx, dword [esp + 0x34]
add eax, 4
sub dword [esp + 0xd0], 1
mov dword [esp + 0x5c], eax
mov dword [esp + 0x98], ebx
jne 0x5808a4
jmp 0x580b07
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0xb0]
add dword [esp + 0x58], ecx
mov eax, 1
add dword [esp + 0x68], eax
fild dword [esp + 0x68]
add dword [esp + 0x60], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x580665
mov ebx, dword [esp + 0xbc]
fstp st(0)
fstp st(0)
fstp st(1)
fstp st(0)
fstp st(0)
mov edx, dword [ebx]
mov ecx, ebx
jmp 0x58184e
mov edx, dword [ebp + 0x14]
fld qword [ebp + 0x24]
imul eax, dword [edx + 4]
add eax, dword [ecx + 0x4c]
add eax, dword [edx]
mov dword [esp + 0xd0], eax
call fcn.00639f90
fstp qword [esp + 0xc0]
fld qword [ebp + 0x24]
call fcn.0063a180
fst qword [esp + 0xf8]
fld qword [esp + 0xc0]
fld qword [0x679478]
fmul st(1), st(0)
fxch st(1)
call fcn.006397d0
fmulp st(1)
mov dword [esp + 0x30], eax
call fcn.006397d0
mov edx, dword [edi]
mov dword [esp + 0x8c], eax
mov eax, dword [edx + 0xbc]
mov ecx, edi
call eax
test al, al
je 0x58191f
mov eax, dword [edi + 0x6c]
mov ecx, dword [eax + 0xd0]
mov edx, dword [eax + 0xd4]
mov dword [esp + 0x94], ecx
mov ecx, dword [eax + 0xd8]
mov dword [esp + 0x6c], ecx
mov ecx, dword [eax + 0x24]
mov dword [esp + 0xb0], ecx
mov ecx, 0x20
sub ecx, dword [eax + 0x14]
mov dword [esp + 0x90], edx
mov edx, dword [eax + 0x20]
mov dword [esp + 0xd4], ecx
mov ecx, 0x18
sub ecx, dword [eax + 0x18]
mov dword [esp + 0x84], edx
mov edx, dword [eax + 0x28]
mov dword [esp + 0x40], ecx
mov ecx, 0x10
sub ecx, dword [eax + 0x1c]
mov eax, dword [edi + 0xd8]
mov dword [esp + 0x70], eax
mov eax, dword [edi + 0xd4]
cmp eax, 0x10
mov dword [esp + 0x98], edx
mov edx, dword [edi + 0xe0]
mov dword [esp + 0x80], ecx
mov ecx, dword [edi + 0xdc]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x2c], edx
jne 0x58126f
fld qword [esp + 0xe0]
call fcn.006397d0
fld qword [esp + 0xd8]
mov dword [esp + 0x3c], eax
call fcn.006397d0
fld qword [esp + 0xf0]
mov ecx, dword [edi + 0x90]
fcomp qword [0x679298]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
imul eax, ecx
cdq
sub eax, edx
mov edx, dword [edi + 0xa4]
sar eax, 1
add eax, dword [esp + 0x64]
mov edi, dword [ebp + 0x1c]
lea eax, [edx + eax*2]
mov dword [esp + 0x60], eax
mov eax, ecx
mov ecx, dword [edi]
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0xb4], eax
mov eax, dword [edi + 0xc]
imul ecx, eax
mov dword [esp + 0x9c], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [edi + 4]
imul ecx, dword [esp + 0x9c]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0xa8], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [edi + 8]
imul ecx, dword [esp + 0x9c]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0xa0], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x7c], eax
mov dword [esp + 0x58], 0
fnstsw ax
test ah, 0x41
jne 0x581845
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0xc8]
fld dword [esp + 0xc8]
fld st(0)
fld qword [esp + 0xc0]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xf8]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov ecx, dword [esp + 0xb4]
fld qword [0x679478]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
lea edx, [ecx + ecx]
mov dword [esp + 0xac], edx
mov dword [esp + 0x5c], eax
fild dword [esp + 0x5c]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0xc8]
fld dword [esp + 0xc8]
fld qword [esp + 0xf8]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov edi, eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov edx, dword [esp + 0x64]
mov ecx, eax
mov eax, edi
mov dword [esp + 0x34], ecx
sar ecx, 0x10
sar eax, 0x10
cmp dword [esp + 0x30], 0xffffffff
mov dword [esp + 0x38], 0
mov dword [esp + 0xb8], edx
mov dword [esp + 0x9c], ecx
jg 0x580e3a
test eax, eax
jl 0x58123c
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 8]
mov ecx, dword [esp + 0x30]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv ecx
test eax, eax
jl 0x580e31
mov dword [esp + 0x38], eax
mov eax, 0x7fff
sub eax, edi
jmp 0x580e78
cmp dword [esp + 0x30], 1
jl 0x580e91
mov edx, dword [ebp + 0x14]
mov ecx, dword [edx + 8]
add ecx, 0xffffffff
cmp eax, ecx
jge 0x58123c
mov ecx, dword [esp + 0x30]
mov eax, 0x10000
sub eax, edi
cdq
idiv ecx
test eax, eax
jle 0x580e68
mov dword [esp + 0x38], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
cdq
idiv ecx
mov edx, dword [esp + 0xb8]
cmp eax, edx
jge 0x580eaf
mov edx, eax
mov dword [esp + 0xb8], edx
jmp 0x580eaf
test edi, edi
jl 0x58123c
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 8]
shl eax, 0x10
sub eax, 0x10000
cmp edi, eax
jge 0x58123c
mov ecx, dword [esp + 0x8c]
cmp ecx, 0xffffffff
jg 0x580f00
cmp dword [esp + 0x9c], 0
jl 0x58123c
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, dword [esp + 0x34]
sub eax, 0x27fff
cdq
idiv ecx
cmp eax, dword [esp + 0x38]
jle 0x580ee8
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x34]
cdq
idiv ecx
mov edx, dword [esp + 0xb8]
neg eax
cmp eax, edx
jge 0x580f78
mov edx, eax
jmp 0x580f78
cmp ecx, 1
jl 0x580f55
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
add eax, 0xffffffff
cmp dword [esp + 0x9c], eax
jge 0x58123c
mov eax, 0x10000
sub eax, dword [esp + 0x34]
cdq
idiv ecx
cmp eax, dword [esp + 0x38]
jle 0x580f31
mov dword [esp + 0x38], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, dword [esp + 0x34]
sub eax, 0x17fff
cdq
idiv ecx
mov edx, dword [esp + 0xb8]
cmp eax, edx
jge 0x580f78
mov edx, eax
jmp 0x580f78
cmp dword [esp + 0x34], 0
jl 0x58123c
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp dword [esp + 0x34], eax
jge 0x58123c
mov eax, dword [esp + 0x38]
imul eax, dword [esp + 0x30]
add edi, eax
mov eax, dword [esp + 0x38]
imul eax, ecx
add dword [esp + 0x34], eax
mov eax, dword [esp + 0x38]
cmp eax, edx
mov ecx, dword [esp + 0x60]
lea ecx, [ecx + eax*2]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esi + 0x24]
mov dword [esp + 0x88], edi
mov dword [esp + 0xc8], ecx
jg 0x58123c
sub edx, eax
mov eax, dword [esp + 0x34]
add edx, 1
mov dword [esp + 0x68], edx
mov edx, eax
sar edx, 0x10
imul edx, dword [esp + 0xc8]
add edx, dword [esp + 0xd0]
mov eax, edi
mov ecx, dword [esp + 0x34]
sar eax, 0x10
add eax, edx
movzx edx, byte [eax]
mov edx, dword [ebx + edx*4]
mov dword [esp + 0x74], edx
movzx edx, byte [eax + 1]
mov edx, dword [ebx + edx*4]
mov dword [esp + 0x54], edx
mov edx, dword [esi + 0x24]
add eax, edx
movzx edx, byte [eax]
mov edx, dword [ebx + edx*4]
movzx eax, byte [eax + 1]
mov eax, dword [ebx + eax*4]
mov ebx, dword [esp + 0x74]
and ecx, 0xfffe
add ecx, 1
mov dword [esp + 0x48], edx
and edi, 0xfffe
add edi, 1
mov dword [esp + 0x9c], edi
shr ebx, 0x18
mov esi, 0x10000
sub esi, edi
mov edi, esi
imul esi, ecx
mov edx, 0x10000
sub edx, ecx
imul ecx, dword [esp + 0x9c]
imul edi, edx
imul edx, dword [esp + 0x9c]
shr edi, 0x10
imul edi, ebx
mov ebx, dword [esp + 0x54]
shr ebx, 0x18
shr edx, 0x10
imul edx, ebx
mov ebx, dword [esp + 0x48]
shr ebx, 0x18
shr ecx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
mov ebx, dword [esp + 0x4c]
movzx ebx, word [ebx]
movzx ebx, bx
mov dword [esp + 0x44], ebx
shr ecx, 0x10
mov dword [esp + 0x9c], ecx
mov ebx, eax
and ebx, 0xff0000
imul ebx, ecx
mov ecx, dword [esp + 0x48]
and ecx, 0xff0000
shr esi, 0x10
imul ecx, esi
add ebx, ecx
mov ecx, dword [esp + 0x54]
shr edx, 0x10
and ecx, 0xff0000
imul ecx, edx
mov dword [esp + 0x78], edx
mov edx, dword [esp + 0x74]
shr edi, 0x10
and edx, 0xff0000
imul edx, edi
add ebx, ecx
mov ecx, dword [esp + 0xd4]
add ebx, edx
shr ebx, cl
mov dword [esp + 0xb4], esi
imul ebx, dword [esp + 0xa8]
shr ebx, 8
mov edx, dword [esp + 0x44]
and edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x84]
shr edx, cl
mov ecx, dword [esp + 0x94]
add ebx, edx
mov bx, word [ecx + ebx*4]
mov ecx, dword [esp + 0x84]
shl bx, cl
movzx ecx, byte [esp + 0x48]
imul ecx, esi
movzx edx, al
imul edx, dword [esp + 0x9c]
add edx, ecx
movzx ecx, byte [esp + 0x54]
imul ecx, dword [esp + 0x78]
add edx, ecx
movzx ecx, byte [esp + 0x74]
imul ecx, edi
add edx, ecx
imul edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x80]
mov esi, dword [esp + 0x44]
and esi, dword [esp + 0x2c]
add ecx, 8
shr edx, cl
mov ecx, dword [esp + 0x98]
shr esi, cl
mov ecx, dword [esp + 0x6c]
and eax, 0xff00
imul eax, dword [esp + 0x9c]
add edx, esi
mov dx, word [ecx + edx*4]
mov ecx, dword [esp + 0x98]
shl dx, cl
mov ecx, dword [esp + 0x48]
and ecx, 0xff00
imul ecx, dword [esp + 0xb4]
add eax, ecx
mov ecx, dword [esp + 0x54]
and ecx, 0xff00
imul ecx, dword [esp + 0x78]
add eax, ecx
mov ecx, dword [esp + 0x74]
and ecx, 0xff00
imul ecx, edi
add eax, ecx
imul eax, dword [esp + 0xa0]
mov ecx, dword [esp + 0x40]
or bx, dx
mov edx, dword [esp + 0x44]
and edx, dword [esp + 0x50]
mov edi, dword [esp + 0x88]
add edi, dword [esp + 0x30]
add ecx, 8
shr eax, cl
mov ecx, dword [esp + 0xb0]
mov esi, dword [ebp + 8]
shr edx, cl
mov dword [esp + 0x88], edi
add eax, edx
mov edx, dword [esp + 0x90]
mov ax, word [edx + eax*4]
shl ax, cl
or bx, ax
mov eax, dword [esp + 0x4c]
mov word [eax], bx
mov ebx, dword [esp + 0xa4]
add eax, 2
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x34]
add eax, dword [esp + 0x8c]
sub dword [esp + 0x68], 1
mov dword [esp + 0x34], eax
jne 0x580fc3
mov ecx, dword [esp + 0xac]
add dword [esp + 0x60], ecx
mov eax, 1
add dword [esp + 0x58], eax
fild dword [esp + 0x58]
add dword [esp + 0x5c], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x580da0
jmp 0x58183b
cmp eax, 0x20
jne 0x581845
fld qword [esp + 0xe0]
call fcn.006397d0
fld qword [esp + 0xd8]
mov edx, edi
mov edi, dword [edx + 0x90]
mov dword [esp + 0x3c], eax
call fcn.006397d0
fld qword [esp + 0xf0]
mov ecx, eax
fcomp qword [0x679298]
mov eax, edi
imul eax, dword [esp + 0x3c]
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, ecx
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0xbc]
mov edx, dword [ecx + 0xa4]
lea eax, [edx + eax*4]
mov dword [esp + 0x60], eax
mov eax, edi
mov edi, dword [ebp + 0x1c]
mov ecx, dword [edi]
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [esp + 0xb4], eax
mov eax, dword [edi + 0xc]
imul ecx, eax
mov dword [esp + 0x9c], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [edi + 4]
imul ecx, dword [esp + 0x9c]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x7c], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [edi + 8]
imul ecx, dword [esp + 0x9c]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0xb8], eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0xa0], eax
mov dword [esp + 0x58], 0
fnstsw ax
test ah, 0x41
jne 0x581845
fild dword [esp + 0x64]
fsub dword [ebp + 0x2c]
fsub dword [ebp + 0xc]
fstp dword [esp + 0xc8]
fld dword [esp + 0xc8]
fld st(0)
fld qword [esp + 0xc0]
fmul st(1), st(0)
fxch st(2)
fmul qword [esp + 0xf8]
fld qword [esp + 0xe8]
fsub qword [0x65b8f8]
call fcn.006397d0
fld dword [ebp + 0x30]
mov ecx, dword [esp + 0xb4]
fld qword [0x679478]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
lea edx, [ecx*4]
mov dword [esp + 0xc0], edx
mov dword [esp + 0x5c], eax
fild dword [esp + 0x5c]
fsub st(2)
fsub dword [ebp + 0x10]
fstp dword [esp + 0xc8]
fld dword [esp + 0xc8]
fld qword [esp + 0xf8]
fmul st(1)
fsubr st(5)
fadd dword [ebp + 0x2c]
fmul st(2)
call fcn.006397d0
fmul st(5)
mov edi, eax
fadd st(3)
fadd st(2)
fmul st(1)
call fcn.006397d0
mov edx, dword [esp + 0x64]
mov ecx, eax
mov dword [esp + 0x38], edx
mov eax, edi
mov edx, ecx
sar edx, 0x10
sar eax, 0x10
cmp dword [esp + 0x30], 0xffffffff
mov dword [esp + 0x34], ecx
mov dword [esp + 0xac], 0
mov dword [esp + 0x9c], edx
jg 0x581474
test eax, eax
jl 0x58180d
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
mov ecx, dword [esp + 0x30]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv ecx
test eax, eax
jl 0x58146b
mov dword [esp + 0xac], eax
mov eax, 0x7fff
sub eax, edi
jmp 0x5814b5
cmp dword [esp + 0x30], 1
jl 0x5814c8
mov ecx, dword [ebp + 0x14]
mov ecx, dword [ecx + 8]
add ecx, 0xffffffff
cmp eax, ecx
jge 0x58180d
mov ecx, dword [esp + 0x30]
mov eax, 0x10000
sub eax, edi
cdq
idiv ecx
test eax, eax
jle 0x5814a5
mov dword [esp + 0xac], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
cdq
idiv ecx
mov ecx, dword [esp + 0x34]
cmp eax, dword [esp + 0x38]
jge 0x5814e7
mov dword [esp + 0x38], eax
jmp 0x5814e7
test edi, edi
jl 0x58180d
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp edi, edx
jge 0x58180d
mov eax, dword [esp + 0x8c]
cmp eax, 0xffffffff
jg 0x58186b
cmp dword [esp + 0x9c], 0
jl 0x58180d
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
mov ecx, dword [esp + 0x8c]
sub eax, 0x27fff
cdq
idiv ecx
cmp eax, dword [esp + 0xac]
jle 0x58152f
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0x34]
cdq
idiv ecx
neg eax
cmp eax, dword [esp + 0x38]
jge 0x581542
mov dword [esp + 0x38], eax
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0xac]
mov edx, eax
imul eax, dword [esp + 0x8c]
imul edx, dword [esp + 0x30]
add edi, edx
mov edx, dword [esp + 0x60]
add ecx, eax
mov eax, dword [esp + 0xac]
lea edx, [edx + eax*4]
mov dword [esp + 0x4c], edx
mov edx, dword [esi + 0x24]
mov dword [esp + 0xc8], edx
mov edx, dword [esp + 0x38]
cmp eax, edx
mov dword [esp + 0x88], edi
mov dword [esp + 0x34], ecx
jg 0x58180d
sub edx, eax
add edx, 1
mov dword [esp + 0x68], edx
mov esi, dword [esi + 0x24]
mov edx, ecx
sar edx, 0x10
imul edx, dword [esp + 0xc8]
add edx, dword [esp + 0xd0]
mov eax, edi
sar eax, 0x10
add eax, edx
mov edx, edi
movzx edi, byte [eax]
mov edi, dword [ebx + edi*4]
mov dword [esp + 0x74], edi
movzx edi, byte [eax + 1]
mov edi, dword [ebx + edi*4]
add eax, esi
movzx esi, byte [eax]
mov esi, dword [ebx + esi*4]
and ecx, 0xfffe
add ecx, 1
movzx eax, byte [eax + 1]
mov eax, dword [ebx + eax*4]
mov dword [esp + 0x48], esi
and edx, 0xfffe
add edx, 1
mov ebx, dword [esp + 0x74]
mov dword [esp + 0x54], edi
mov dword [esp + 0xa8], edx
mov esi, 0x10000
sub esi, ecx
mov edi, 0x10000
sub edi, edx
imul edx, esi
mov dword [esp + 0xb4], edi
imul edi, esi
mov esi, dword [esp + 0x54]
shr esi, 0x18
shr edx, 0x10
imul edx, esi
mov esi, ecx
imul ecx, dword [esp + 0xa8]
imul esi, dword [esp + 0xb4]
shr ebx, 0x18
shr edi, 0x10
imul edi, ebx
mov ebx, dword [esp + 0x48]
shr ebx, 0x18
shr ecx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
mov ebx, dword [esp + 0x4c]
mov ebx, dword [ebx]
mov dword [esp + 0x44], ebx
shr ecx, 0x10
mov dword [esp + 0x9c], ecx
mov ebx, eax
and ebx, 0xff0000
imul ebx, ecx
mov ecx, dword [esp + 0x48]
and ecx, 0xff0000
shr esi, 0x10
imul ecx, esi
add ebx, ecx
mov ecx, dword [esp + 0x54]
shr edx, 0x10
and ecx, 0xff0000
imul ecx, edx
mov dword [esp + 0x78], edx
mov edx, dword [esp + 0x74]
shr edi, 0x10
and edx, 0xff0000
imul edx, edi
add ebx, ecx
mov ecx, dword [esp + 0xd4]
add ebx, edx
shr ebx, cl
mov dword [esp + 0xb4], esi
imul ebx, dword [esp + 0x7c]
shr ebx, 8
mov edx, dword [esp + 0x44]
and edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x84]
shr edx, cl
mov ecx, dword [esp + 0x94]
add ebx, edx
mov ebx, dword [ecx + ebx*4]
mov ecx, dword [esp + 0x84]
shl ebx, cl
movzx ecx, byte [esp + 0x48]
imul ecx, esi
movzx edx, al
imul edx, dword [esp + 0x9c]
add edx, ecx
movzx ecx, byte [esp + 0x54]
imul ecx, dword [esp + 0x78]
add edx, ecx
movzx ecx, byte [esp + 0x74]
imul ecx, edi
add edx, ecx
imul edx, dword [esp + 0xa0]
mov ecx, dword [esp + 0x80]
mov esi, dword [esp + 0x44]
and esi, dword [esp + 0x2c]
add ecx, 8
shr edx, cl
mov ecx, dword [esp + 0x98]
shr esi, cl
mov ecx, dword [esp + 0x6c]
and eax, 0xff00
imul eax, dword [esp + 0x9c]
add edx, esi
mov edx, dword [ecx + edx*4]
mov ecx, dword [esp + 0x98]
shl edx, cl
mov ecx, dword [esp + 0x48]
and ecx, 0xff00
imul ecx, dword [esp + 0xb4]
add eax, ecx
mov ecx, dword [esp + 0x54]
and ecx, 0xff00
imul ecx, dword [esp + 0x78]
add eax, ecx
mov ecx, dword [esp + 0x74]
and ecx, 0xff00
imul ecx, edi
add eax, ecx
imul eax, dword [esp + 0xb8]
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x88]
add edi, dword [esp + 0x30]
or ebx, edx
mov edx, dword [esp + 0x44]
and edx, dword [esp + 0x50]
mov esi, dword [ebp + 8]
add ecx, 8
shr eax, cl
mov ecx, dword [esp + 0xb0]
shr edx, cl
mov dword [esp + 0x88], edi
add eax, edx
mov edx, dword [esp + 0x90]
mov eax, dword [edx + eax*4]
shl eax, cl
mov ecx, dword [esp + 0x34]
add ecx, dword [esp + 0x8c]
or ebx, eax
mov eax, dword [esp + 0x4c]
mov dword [eax], ebx
mov ebx, dword [esp + 0xa4]
add eax, 4
sub dword [esp + 0x68], 1
mov dword [esp + 0x4c], eax
mov dword [esp + 0x34], ecx
jne 0x58159c
mov ecx, dword [esp + 0xc0]
add dword [esp + 0x60], ecx
mov eax, 1
add dword [esp + 0x58], eax
fild dword [esp + 0x58]
add dword [esp + 0x5c], eax
fcomp qword [esp + 0xf0]
fnstsw ax
test ah, 5
jnp 0x5813d5
fstp st(0)
fstp st(0)
fstp st(1)
fstp st(0)
fstp st(0)
mov ecx, dword [esp + 0xbc]
mov edx, dword [ecx]
mov eax, dword [edx + 0xc0]
call eax
mov esi, dword [esp + 0xbc]
call fcn.0056c560
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 1
jl 0x5818bd
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
add eax, 0xffffffff
cmp dword [esp + 0x9c], eax
jge 0x58180d
mov eax, 0x10000
sub eax, ecx
mov ecx, dword [esp + 0x8c]
cdq
idiv ecx
cmp eax, dword [esp + 0xac]
jle 0x5818a3
mov dword [esp + 0xac], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, dword [esp + 0x34]
sub eax, 0x17fff
cdq
idiv ecx
jmp 0x581538
test ecx, ecx
jl 0x58180d
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jge 0x58180d
jmp 0x581546
fld dword [ebp + 0x30]
mov ecx, dword [ebp + 0x20]
mov edx, dword [ebp + 0x1c]
mov eax, dword [ebp + 0x18]
sub esp, 0x10
fstp dword [esp + 0xc]
fld dword [ebp + 0x2c]
fstp dword [esp + 8]
fld qword [ebp + 0x24]
fstp qword [esp]
push ecx
mov ecx, dword [ebp + 0x14]
fld dword [ebp + 0x10]
push edx
push eax
push ecx
sub esp, 8
fstp dword [esp + 4]
mov ecx, edi
fld dword [ebp + 0xc]
fstp dword [esp]
push esi
call fcn.00595360
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c