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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xcc
mov edx, dword [ebp + 0x30]
mov eax, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x10]
push ebx
mov ebx, dword [ebp + 0x24]
push esi
and edx, 1
test eax, eax
mov esi, ebx
push edi
mov dword [esp + 0x74], ecx
mov dword [esp + 0xa4], edx
mov dword [esp + 0x6c], esi
je 0x10040302
mov ecx, dword [ebp + 0x2c]
push ecx
push eax
mov eax, dword [ebp + 8]
test edx, edx
mov edx, dword [ebp + 0xc]
push edx
push eax
jne 0x100402f3
call dword [0x100dcadc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x34
call dword [0x100dcae0]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x34
cmp ebx, ecx
jne 0x1004030d
mov edi, 1
jmp 0x1004032e
lea eax, [ecx + ecx]
cmp ebx, eax
jne 0x1004031b
mov edi, 2
jmp 0x1004032e
mov eax, ebx
cdq
idiv ecx
mov ecx, dword [ebp + 0x10]
mov edx, dword [esp + 0xa4]
mov esi, ebx
mov edi, eax
mov eax, dword [ebp + 0xc]
cmp eax, dword [ebp + 8]
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x30], edi
je 0x1004049f
test edx, edx
jne 0x100403fc
lea eax, [ecx - 2]
test eax, eax
jl 0x100403c8
mov edx, dword [ebp + 0xc]
add eax, 2
shr eax, 1
lea ecx, [eax + eax]
mov dword [esp + 0x40], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0x14], ecx
mov edi, dword [eax + edi*4]
mov eax, dword [eax]
shl eax, 4
add eax, dword [ebp + 8]
shl edi, 4
mov ecx, dword [eax]
add edi, dword [ebp + 8]
mov dword [edx], ecx
mov ecx, dword [eax + 4]
mov dword [edx + 4], ecx
mov ecx, dword [eax + 8]
mov dword [edx + 8], ecx
mov eax, dword [eax + 0xc]
mov dword [edx + 0xc], eax
mov ecx, dword [edi]
mov dword [edx + 0x10], ecx
mov eax, dword [edi + 4]
mov dword [edx + 0x14], eax
mov ecx, dword [edi + 8]
mov dword [edx + 0x18], ecx
mov eax, dword [edi + 0xc]
mov edi, dword [esp + 0x30]
mov dword [edx + 0x1c], eax
mov eax, dword [ebp + 0x1c]
lea ecx, [edi*8]
add eax, ecx
add edx, 0x20
sub dword [esp + 0x40], 1
mov dword [ebp + 0x1c], eax
jne 0x10040366
mov ecx, dword [ebp + 0x10]
mov edx, dword [esp + 0x14]
cmp edx, ecx
jge 0x100406ce
mov edx, dword [ebp + 8]
shl ecx, 4
lea eax, [ecx + edx - 0x10]
mov edx, dword [ebp + 0xc]
lea ecx, [ecx + edx - 0x10]
mov edx, dword [eax]
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov edx, dword [eax + 8]
mov dword [ecx + 8], edx
mov eax, dword [eax + 0xc]
mov dword [ecx + 0xc], eax
jmp 0x100406ce
lea edx, [ecx - 2]
xor eax, eax
test edx, edx
jl 0x10040474
mov eax, dword [ebp + 0xc]
lea ecx, [edx + 2]
shr ecx, 1
mov dword [esp + 0x40], ecx
add ecx, ecx
mov dword [esp + 0x14], ecx
mov ecx, dword [ebp + 0x1c]
lea ebx, [ebx]
mov edi, dword [ecx + edi*4]
mov edx, dword [ecx]
mov ecx, dword [ebp + 8]
shl edx, 4
fld qword [edx + ecx]
add edx, ecx
fld qword [edx + 8]
shl edi, 4
fchs
add edi, ecx
mov ecx, dword [ebp + 0x1c]
fxch st(1)
fstp qword [eax]
add eax, 0x20
fstp qword [eax - 0x18]
fld qword [edi]
fld qword [edi + 8]
mov edi, dword [esp + 0x30]
fchs
lea edx, [edi*8]
fxch st(1)
add ecx, edx
sub dword [esp + 0x40], 1
fstp qword [eax - 0x10]
mov dword [ebp + 0x1c], ecx
fstp qword [eax - 8]
jne 0x10040420
mov ecx, dword [ebp + 0x10]
mov eax, dword [esp + 0x14]
cmp eax, ecx
jge 0x100406ce
mov edx, dword [ebp + 8]
shl ecx, 4
fld qword [ecx + edx - 0x10]
add ecx, edx
fld qword [ecx - 8]
shl eax, 4
add eax, dword [ebp + 0xc]
fchs
fxch st(1)
fstp qword [eax]
fstp qword [eax + 8]
jmp 0x100406ce
test byte [ebp + 0x30], 2
jne 0x1004067c
mov edx, dword [eax]
mov ecx, dword [ebp + 0x14]
cmp edx, dword [eax + ecx*4 - 4]
je 0x100404c2
mov eax, 0xffffff90
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x34
cmp ecx, 1
mov ecx, dword [ebp + 0x10]
jne 0x10040615
test cl, 3
jne 0x1004067c
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
mov edx, eax
mov dword [esp + 0x40], eax
mov eax, dword [ebp + 0xc]
shl edx, 4
add edx, eax
cmp dword [esp + 0x40], 0
mov dword [esp + 0x28], edx
mov dword [esp + 0x14], 0
jle 0x1004067c
lea ecx, [edi*8]
mov edi, dword [ebp + 0xc]
sub edi, edx
mov dword [esp + 0x80], ecx
mov ecx, dword [ebp + 0x1c]
mov dword [esp + 0x54], eax
lea eax, [edx + 0x10]
mov dword [esp + 0x70], edi
mov ecx, dword [ecx]
fld qword [edi + eax]
fld qword [edi + eax + 8]
mov edx, ecx
mov dword [esp + 0x58], ecx
fxch st(1)
mov ecx, dword [esp + 0x28]
shl edx, 4
mov ecx, dword [edx + ecx]
mov dword [edi + eax], ecx
mov ecx, dword [esp + 0x28]
mov ecx, dword [edx + ecx + 4]
mov dword [edi + eax + 4], ecx
mov ecx, dword [esp + 0x28]
mov ecx, dword [edx + ecx + 8]
mov dword [edi + eax + 8], ecx
mov ecx, dword [esp + 0x28]
mov ecx, dword [edx + ecx + 0xc]
mov dword [edi + eax + 0xc], ecx
mov ecx, dword [esp + 0x28]
fstp qword [edx + ecx]
fstp qword [edx + ecx + 8]
mov ecx, dword [esp + 0x58]
cmp ecx, dword [esp + 0x14]
mov ecx, dword [esp + 0x54]
jle 0x100405e4
fld qword [ecx]
mov edi, dword [ebp + 0xc]
mov edi, dword [edx + edi]
fld qword [ecx + 8]
mov dword [ecx], edi
fxch st(1)
mov edi, dword [ebp + 0xc]
mov edi, dword [edx + edi + 4]
mov dword [ecx + 4], edi
mov edi, dword [ebp + 0xc]
mov edi, dword [edx + edi + 8]
mov dword [ecx + 8], edi
mov edi, dword [ebp + 0xc]
mov edi, dword [edx + edi + 0xc]
mov dword [ecx + 0xc], edi
mov edi, dword [ebp + 0xc]
fstp qword [edx + edi]
fstp qword [edx + edi + 8]
mov edi, dword [esp + 0x28]
fld qword [eax]
lea edx, [edx + edi + 0x10]
mov edi, dword [edx]
fld qword [eax + 8]
mov dword [eax], edi
fxch st(1)
mov edi, dword [edx + 4]
mov dword [eax + 4], edi
mov edi, dword [edx + 8]
mov dword [eax + 8], edi
mov edi, dword [edx + 0xc]
mov dword [eax + 0xc], edi
fstp qword [edx]
mov edi, dword [esp + 0x70]
fstp qword [edx + 8]
mov edx, dword [esp + 0x14]
add ecx, 0x20
mov dword [esp + 0x54], ecx
mov ecx, dword [ebp + 0x1c]
add ecx, dword [esp + 0x80]
add edx, 2
add eax, 0x20
cmp edx, dword [esp + 0x40]
mov dword [esp + 0x14], edx
mov dword [ebp + 0x1c], ecx
jl 0x10040524
mov ecx, dword [ebp + 0x10]
jmp 0x1004067c
test ecx, ecx
mov dword [esp + 0x14], 0
jle 0x1004067c
mov eax, dword [ebp + 0xc]
lea edx, [edi*4]
mov dword [esp + 0x70], edx
mov edx, dword [ebp + 0x1c]
mov edx, dword [edx]
cmp edx, dword [esp + 0x14]
jle 0x10040664
fld qword [eax]
mov edi, dword [ebp + 0xc]
fld qword [eax + 8]
shl edx, 4
add edx, edi
fxch st(1)
mov edi, dword [edx]
mov dword [eax], edi
mov edi, dword [edx + 4]
mov dword [eax + 4], edi
mov edi, dword [edx + 8]
mov dword [eax + 8], edi
mov edi, dword [edx + 0xc]
mov dword [eax + 0xc], edi
fstp qword [edx]
fstp qword [edx + 8]
mov edx, dword [ebp + 0x1c]
add edx, dword [esp + 0x70]
add dword [esp + 0x14], 1
add eax, 0x10
cmp dword [esp + 0x14], ecx
mov dword [ebp + 0x1c], edx
jl 0x10040632
cmp dword [esp + 0xa4], 0
je 0x100406ce
lea edx, [ecx - 2]
xor edi, edi
test edx, edx
jl 0x100406b8
mov eax, dword [ebp + 0xc]
add edx, 2
add eax, 0x18
shr edx, 1
lea edi, [edx + edx]
lea ecx, [ecx]
fld qword [eax - 0x10]
add eax, 0x20
sub edx, 1
fchs
fstp qword [eax - 0x30]
fld qword [eax - 0x20]
fchs
fstp qword [eax - 0x20]
jne 0x100406a0
cmp edi, ecx
jge 0x100406ce
mov eax, dword [ebp + 0xc]
shl ecx, 4
fld qword [ecx + eax - 8]
lea ecx, [ecx + eax - 8]
fchs
fstp qword [ecx]
mov ecx, dword [ebp + 0x18]
mov ecx, dword [ecx]
mov eax, 1
test al, cl
mov dword [ebp + 0x10], eax
jne 0x10040d78
cmp ecx, 4
jl 0x10040a3f
lea esp, [esp]
lea ecx, [eax*4]
mov dword [esp + 0x1c], eax
mov eax, esi
cdq
and edx, 3
add eax, edx
sar eax, 2
cmp dword [esp + 0x74], 0
mov esi, eax
mov dword [ebp + 0x10], ecx
mov dword [esp + 0x6c], esi
mov dword [esp + 0x14], 0
jle 0x10040a2a
mov edx, dword [esp + 0x1c]
mov edi, edx
shl edx, 4
lea eax, [edx + 8]
mov dword [esp + 0x60], edx
mov dword [esp + 0x2c], eax
mov eax, ecx
mov ecx, dword [ebp + 0xc]
shl edi, 5
add edx, edi
shl eax, 4
add edx, ecx
mov dword [esp + 0x10], eax
lea eax, [ecx + 8]
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x3c], edx
mov edx, ecx
neg edx
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x2c]
sub edx, ecx
mov dword [esp + 0x28], edi
mov dword [esp + 0x78], eax
mov dword [esp + 0x24], edx
jmp 0x10040774
mov edx, dword [esp + 0x24]
cmp dword [esp + 0x1c], 1
fld qword [eax - 8]
fld qword [eax]
mov ecx, dword [esp + 0x60]
fld qword [ecx + eax - 8]
fld qword [ecx + eax]
mov ecx, dword [esp + 0x3c]
fld st(1)
fadd st(4)
fld st(1)
fadd st(4)
fxch st(5)
fsubrp st(3)
fxch st(3)
fsubrp st(1)
fld qword [ecx]
fld qword [ecx + edx]
mov edx, dword [esp + 0x20]
fld qword [edi + eax - 8]
fld qword [edx + ecx + 8]
fstp qword [esp + 0x88]
fld st(0)
fadd st(3)
fstp qword [esp + 0x90]
fld qword [esp + 0x88]
fadd st(2)
fstp qword [esp + 0x98]
fld qword [esp + 0x88]
fsubrp st(2)
fsubp st(2)
fld st(4)
fadd qword [esp + 0x90]
fstp qword [eax - 8]
fld st(5)
fld qword [esp + 0x98]
fadd st(1), st(0)
fxch st(1)
fstp qword [eax]
fxch st(5)
fsub qword [esp + 0x90]
fstp qword [edi + eax - 8]
fxch st(5)
fsubrp st(4)
fxch st(3)
fstp qword [edx + ecx + 8]
mov edx, dword [esp + 0x60]
fld st(3)
fadd st(2)
fstp qword [edx + eax - 8]
fld st(2)
fadd st(1)
fstp qword [edx + eax]
mov edx, dword [esp + 0x24]
fxch st(1)
fsubrp st(3)
fxch st(2)
fstp qword [ecx]
fsubp st(1)
fstp qword [ecx + edx]
jle 0x10040a04
lea edx, [esi + esi*2]
mov ecx, esi
shl esi, 5
mov dword [esp + 0x58], esi
mov esi, dword [ebp + 0x20]
shl ecx, 4
shl edx, 4
mov dword [esp + 0x5c], ecx
add ecx, esi
add eax, 8
mov dword [esp + 0x54], edx
add edx, esi
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x30], edx
lea edx, [ecx + esi]
mov ecx, dword [esp + 0x3c]
mov esi, dword [esp + 0x1c]
lea ecx, [eax + ecx + 0x10]
mov eax, dword [esp + 0x14]
lea eax, [eax + esi*2 + 1]
mov esi, 8
sub esi, edi
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x60]
sub esi, edi
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x60]
shl eax, 4
add eax, dword [esp + 0x60]
add esi, 8
add eax, dword [ebp + 0xc]
sub esi, edi
mov edi, dword [esp + 0x1c]
add edi, 0xffffffff
mov dword [esp + 0x2c], esi
mov dword [esp + 0x44], edi
jmp 0x100408c4
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x4c]
fld qword [edi + ecx]
fmul qword [edx]
fld qword [edx + 8]
fmul qword [esi + ecx]
fsubp st(1)
fld qword [edx + 8]
fmul qword [edi + ecx]
mov edi, dword [esp + 0x20]
fld qword [esi + ecx]
mov esi, dword [esp + 0x50]
fmul qword [edx]
faddp st(1)
fld qword [esi]
fmul qword [edi + eax + 8]
fld qword [ecx]
fmul qword [esi + 8]
faddp st(1)
fld qword [ecx]
fmul qword [esi]
fld qword [esi + 8]
fmul qword [edi + eax + 8]
mov edi, dword [esp + 0x30]
fsubp st(1)
fld qword [eax]
fmul qword [edi + 8]
mov edi, dword [esp + 0x24]
fld qword [edi + eax]
mov edi, dword [esp + 0x30]
fmul qword [edi]
faddp st(1)
fld qword [eax]
fmul qword [edi]
mov edi, dword [esp + 0x24]
fld qword [edi + eax]
mov edi, dword [esp + 0x30]
fmul qword [edi + 8]
mov edi, dword [esp + 0x18]
fsubp st(1)
fld st(0)
fadd st(3)
fld st(2)
fadd st(5)
fxch st(5)
fsubrp st(3)
fxch st(1)
fsubrp st(3)
fld qword [edi]
mov edi, dword [esp + 0x40]
fld qword [edi + ecx]
mov edi, dword [esp + 0x18]
fstp qword [esp + 0x88]
fld st(0)
fadd st(7)
fstp qword [esp + 0x90]
fld qword [esp + 0x88]
fadd st(6)
fxch st(1)
fsubrp st(7)
fld qword [esp + 0x88]
fsubrp st(6)
fld qword [esp + 0x90]
fadd st(2)
fstp qword [edi]
mov edi, dword [esp + 0x40]
fld st(0)
fadd st(5)
fstp qword [edi + ecx]
mov edi, dword [esp + 0x20]
fld qword [esp + 0x90]
fsubrp st(2)
fxch st(1)
fstp qword [ecx]
fsubrp st(3)
fxch st(2)
fstp qword [edi + eax + 8]
mov edi, dword [esp + 0x4c]
fld st(1)
fadd st(4)
fstp qword [edi + ecx]
fld st(0)
mov edi, dword [esp + 0x2c]
fadd st(3)
add esi, dword [esp + 0x5c]
add dword [esp + 0x18], 0x10
add edx, dword [esp + 0x58]
fstp qword [edi + ecx]
mov edi, dword [esp + 0x24]
fxch st(3)
fsubrp st(1)
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x54]
add dword [esp + 0x30], esi
fstp qword [eax]
add ecx, 0x10
add eax, 0x10
sub dword [esp + 0x44], 1
fsubrp st(1)
fstp qword [edi + eax - 0x10]
jne 0x100408c0
mov esi, dword [esp + 0x6c]
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x78]
mov ecx, dword [ebp + 0x10]
add dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x74]
add dword [esp + 0x3c], ecx
add eax, ecx
cmp dword [esp + 0x14], edx
mov dword [esp + 0x78], eax
jl 0x10040770
mov ecx, dword [ebp + 0x10]
lea eax, [ecx*4]
mov ecx, dword [ebp + 0x18]
cmp eax, dword [ecx]
mov eax, dword [ebp + 0x10]
jle 0x100406f0
mov edx, dword [ebp + 0x18]
cmp eax, dword [edx]
jge 0x10040d78
jmp 0x10040a53
mov eax, dword [ebp + 0x10]
mov ecx, eax
add eax, eax
mov dword [ebp + 0x10], eax
mov eax, esi
cdq
sub eax, edx
sar eax, 1
cmp dword [esp + 0x74], 0
mov esi, eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x6c], esi
mov dword [esp + 0x14], 0
jle 0x10040d6a
mov eax, dword [ebp + 0x10]
shl ecx, 4
shl eax, 4
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0xc]
mov edx, ecx
lea edi, [ecx + 8]
mov dword [esp + 0x30], eax
add eax, ecx
neg edx
sub edi, ecx
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], edi
jmp 0x10040ab4
mov edi, dword [esp + 0x24]
fld qword [eax + edi]
mov dword [esp + 0x58], 1
fadd qword [edx + eax + 8]
mov dword [esp + 0x48], esi
fld qword [ecx]
fsub qword [eax]
fld qword [edx + eax + 8]
fsub qword [eax + edi]
fld qword [eax]
fadd qword [ecx]
fstp qword [ecx]
mov ecx, dword [esp + 0x1c]
fxch st(2)
add ecx, 0xffffffff
cmp ecx, 4
fstp qword [edx + eax + 8]
fstp qword [eax]
fstp qword [eax + edi]
jl 0x10040c8b
mov ecx, esi
mov esi, dword [ebp + 0x20]
shl ecx, 4
mov dword [esp + 0x5c], ecx
add ecx, esi
lea esi, [eax + edi + 0x10]
mov edi, dword [esp + 0x60]
mov dword [esp + 0x20], esi
add edi, 8
mov esi, 0x10
sub esi, edi
mov dword [esp + 0x70], esi
mov esi, dword [esp + 0x1c]
add esi, 0xfffffffb
shr esi, 2
add eax, 0x20
add esi, 1
mov dword [esp + 0x40], esi
lea esi, [esi*4 + 1]
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x6c]
mov edi, edi
fld qword [eax - 0x10]
mov edi, dword [esp + 0x20]
fmul qword [ecx]
add dword [esp + 0x48], esi
fld qword [edi]
mov esi, dword [esp + 0x24]
fmul qword [ecx + 8]
fsubp st(1)
fld qword [edi]
fmul qword [ecx]
fld qword [eax - 0x10]
fmul qword [ecx + 8]
add ecx, dword [esp + 0x5c]
faddp st(1)
fld qword [edx + eax - 0x10]
fld qword [edx + eax - 8]
fld st(3)
fadd st(2)
fstp qword [edx + eax - 0x10]
fld st(2)
fadd st(1)
fstp qword [edx + eax - 8]
fxch st(1)
fsubrp st(3)
fxch st(2)
fstp qword [eax - 0x10]
fsubp st(1)
fstp qword [edi]
mov edi, dword [esp + 0x70]
fld qword [eax]
fmul qword [ecx]
fld qword [esi + eax]
fmul qword [ecx + 8]
fsubp st(1)
fld qword [eax]
fmul qword [ecx + 8]
fld qword [esi + eax]
mov esi, dword [esp + 0x20]
fmul qword [ecx]
faddp st(1)
fld qword [edi + esi]
fld qword [edx + eax + 8]
fld st(3)
fadd st(2)
fstp qword [edi + esi]
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x20]
fld st(2)
fadd st(1)
fstp qword [edx + eax + 8]
fxch st(1)
fsubrp st(3)
fxch st(2)
fstp qword [eax]
fsubp st(1)
fstp qword [esi + eax]
mov esi, dword [esp + 0x6c]
fld qword [eax + 0x10]
add dword [esp + 0x48], esi
add ecx, dword [esp + 0x5c]
fmul qword [ecx]
fld qword [ecx + 8]
fmul qword [edi + 0x20]
fsubp st(1)
fld qword [eax + 0x10]
fmul qword [ecx + 8]
fld qword [ecx]
fmul qword [edi + 0x20]
faddp st(1)
fld qword [edx + eax + 0x10]
fld qword [edx + eax + 0x18]
fld st(3)
fadd st(2)
fstp qword [edx + eax + 0x10]
fld st(2)
fadd st(1)
fstp qword [edx + eax + 0x18]
fxch st(1)
fsubrp st(3)
fxch st(2)
fstp qword [eax + 0x10]
add ecx, dword [esp + 0x5c]
fsubp st(1)
add dword [esp + 0x48], esi
add dword [esp + 0x48], esi
fstp qword [edi + 0x20]
add dword [esp + 0x20], 0x40
fld qword [ecx]
add eax, 0x40
fmul qword [eax - 0x20]
fld qword [edi + 0x30]
fmul qword [ecx + 8]
fsubp st(1)
fld qword [edi + 0x30]
fmul qword [ecx]
fld qword [ecx + 8]
add ecx, dword [esp + 0x5c]
sub dword [esp + 0x40], 1
fmul qword [eax - 0x20]
faddp st(1)
fld qword [edx + eax - 0x20]
fld qword [edx + eax - 0x18]
fld st(3)
fadd st(2)
fstp qword [edx + eax - 0x20]
fld st(2)
fadd st(1)
fstp qword [edx + eax - 0x18]
fxch st(1)
fsubrp st(3)
fxch st(2)
fstp qword [eax - 0x20]
fsubp st(1)
fstp qword [edi + 0x30]
jne 0x10040b40
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x58]
cmp edi, dword [esp + 0x1c]
jge 0x10040d41
mov ecx, dword [esp + 0x14]
mov eax, esi
shl eax, 4
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x48]
shl eax, 4
add eax, dword [ebp + 0x20]
add ecx, edi
mov dword [esp + 0x70], eax
mov eax, dword [ebp + 0xc]
shl ecx, 4
add eax, ecx
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x60]
add ecx, eax
mov eax, dword [esp + 0x1c]
add ecx, dword [ebp + 0xc]
sub eax, edi
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x70]
lea esp, [esp]
fld qword [ecx]
mov edi, dword [esp + 0x24]
fmul qword [eax]
add ecx, 0x10
fld qword [eax + 8]
fmul qword [edi + ecx - 0x10]
fsubp st(1)
fld qword [eax + 8]
fmul qword [ecx - 0x10]
fld qword [edi + ecx - 0x10]
mov edi, dword [esp + 0x54]
fmul qword [eax]
add eax, dword [esp + 0x5c]
add dword [esp + 0x54], 0x10
sub dword [esp + 0x40], 1
faddp st(1)
fld qword [edi]
fld qword [edx + ecx - 8]
fld st(3)
fadd st(2)
fstp qword [edi]
mov edi, dword [esp + 0x24]
fld st(2)
fadd st(1)
fstp qword [edx + ecx - 8]
fxch st(1)
fsubrp st(3)
fxch st(2)
fstp qword [ecx - 0x10]
fsubp st(1)
fstp qword [edi + ecx - 0x10]
jne 0x10040ce0
mov eax, dword [esp + 0x18]
mov ecx, dword [ebp + 0x10]
add dword [esp + 0x14], ecx
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x30]
add ecx, edi
add eax, edi
mov edi, dword [esp + 0x74]
cmp dword [esp + 0x14], edi
mov dword [esp + 0x30], ecx
mov dword [esp + 0x18], eax
jl 0x10040ab0
mov edx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x10]
cmp eax, dword [edx]
jl 0x10040a50
mov ecx, dword [ebp + 0x18]
mov eax, dword [ecx]
not eax
and eax, 1
cmp eax, dword [ebp + 0x14]
mov dword [esp + 0x40], eax
jge 0x10041df3
fld qword [0x100b4610]
mov edx, dword [ebp + 0x18]
mov eax, dword [esp + 0x40]
mov ecx, dword [edx + eax*4]
mov eax, dword [ebp + 0x10]
mov edx, ecx
imul edx, eax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x6c]
mov dword [ebp + 0x10], edx
cdq
idiv ecx
cmp ecx, 3
mov dword [esp + 0x98], ecx
mov dword [esp + 0x6c], eax
jne 0x10040fd2
cmp dword [esp + 0x74], 0
mov dword [esp + 0x14], 0
jle 0x10041ddd
mov ecx, dword [esp + 0x1c]
mov edx, dword [ebp + 0x10]
shl edx, 4
mov eax, ecx
shl eax, 4
mov dword [esp + 0x10], edx
mov edx, dword [ebp + 0xc]
shl ecx, 5
mov dword [esp + 0x2c], edx
lea esi, [eax + edx]
mov edx, ecx
mov edi, eax
neg edi
sub edx, eax
sub ecx, eax
add ecx, 8
mov dword [esp + 0x20], edi
mov dword [esp + 0x18], edx
mov dword [esp + 0x28], ecx
cmp dword [esp + 0x1c], 1
fld qword [esi + edx]
fadd qword [esi]
mov eax, dword [esp + 0x28]
fld qword [esi + eax]
mov eax, dword [esp + 0x2c]
mov ecx, 8
fadd qword [ecx + esi]
fld qword [eax]
mov eax, dword [esp + 0x28]
fld qword [edi + esi + 8]
fld qword [ecx + esi]
fsub qword [esi + eax]
mov eax, dword [esp + 0x2c]
fmul st(5)
fld qword [esi + edx]
fsub qword [esi]
fmul st(6)
fld st(3)
fadd st(6)
fstp qword [eax]
fld st(2)
fadd st(5)
fstp qword [edi + esi + 8]
fld qword [0x100b6168]
fmul st(6), st(0)
fxch st(4)
fsubrp st(6)
fxch st(4)
fmulp st(3)
fxch st(1)
fsubrp st(2)
fld st(0)
fadd st(4)
fstp qword [esi]
fld st(2)
fadd st(2)
fstp qword [ecx + esi]
mov ecx, dword [esp + 0x28]
fsubp st(3)
fxch st(2)
fstp qword [esi + edx]
fsubp st(1)
fstp qword [esi + ecx]
jle 0x10040fae
mov ecx, dword [esp + 0x6c]
mov eax, dword [ebp + 0x20]
mov edx, ecx
shl edx, 5
shl ecx, 4
mov dword [esp + 0x58], edx
add edx, eax
mov dword [esp + 0x5c], ecx
add ecx, eax
lea eax, [edi + esi + 0x10]
mov edi, dword [esp + 0x1c]
add edi, 0xffffffff
mov dword [esp + 0x30], eax
lea eax, [esi + 0x10]
mov dword [esp + 0x4c], edi
fld qword [eax]
mov edi, 8
fmul qword [ecx]
add eax, 0x10
fld qword [ecx + 8]
fmul qword [edi + eax - 0x10]
fsubp st(1)
fld qword [eax - 0x10]
fmul qword [ecx + 8]
fld qword [edi + eax - 0x10]
mov edi, dword [esp + 0x18]
fmul qword [ecx]
add ecx, dword [esp + 0x5c]
faddp st(1)
fld qword [edi + eax - 0x10]
mov edi, dword [esp + 0x28]
fmul qword [edx]
fld qword [edi + eax - 0x10]
mov edi, dword [esp + 0x18]
fmul qword [edx + 8]
fsubp st(1)
fld qword [edi + eax - 0x10]
mov edi, dword [esp + 0x28]
fmul qword [edx + 8]
fld qword [edx]
add edx, dword [esp + 0x58]
fmul qword [edi + eax - 0x10]
mov edi, dword [esp + 0x30]
faddp st(1)
fld st(1)
fadd st(4)
fld st(1)
fadd st(4)
fxch st(4)
fsubrp st(2)
fxch st(1)
fmul st(5)
fxch st(2)
fsubrp st(4)
fxch st(3)
fmul st(4)
fld qword [edi]
mov edi, dword [esp + 0x20]
fld qword [edi + eax - 8]
mov edi, dword [esp + 0x30]
fld st(1)
add dword [esp + 0x30], 0x10
sub dword [esp + 0x4c], 1
fadd st(6)
fstp qword [edi]
mov edi, dword [esp + 0x20]
fld st(0)
fadd st(5)
fstp qword [edi + eax - 8]
mov edi, 8
fld qword [0x100b6168]
fmul st(6), st(0)
fxch st(2)
fsubrp st(6)
fxch st(4)
fmulp st(1)
fsubp st(3)
fld st(1)
fadd st(4)
fstp qword [eax - 0x10]
fld st(0)
fadd st(3)
fstp qword [edi + eax - 0x10]
mov edi, dword [esp + 0x18]
fxch st(3)
fsubrp st(1)
fstp qword [edi + eax - 0x10]
mov edi, dword [esp + 0x28]
fsubrp st(1)
fstp qword [edi + eax - 0x10]
jne 0x10040ec5
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x10]
mov ecx, dword [ebp + 0x10]
add dword [esp + 0x14], ecx
add dword [esp + 0x2c], eax
add esi, eax
mov eax, dword [esp + 0x14]
cmp eax, dword [esp + 0x74]
jl 0x10040e15
jmp 0x10041ddd
cmp ecx, 5
jne 0x10041380
cmp dword [esp + 0x74], 0
mov dword [esp + 0x14], 0
jle 0x10041ddd
mov esi, dword [ebp + 0x10]
fstp st(0)
mov ecx, dword [ebp + 0x20]
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x1c]
shl esi, 4
mov dword [esp + 0x50], 0
mov dword [esp + 0x10], esi
test edx, edx
jle 0x1004135c
mov esi, edx
shl edx, 4
lea edi, [edx + 8]
mov dword [esp + 0x2c], edi
mov edi, eax
shl edi, 5
mov dword [esp + 0x58], edi
shl esi, 5
lea edi, [eax + eax*2]
shl edi, 4
mov dword [esp + 0x54], edi
mov dword [esp + 0x28], esi
mov edi, eax
shl edi, 6
shl eax, 4
mov dword [esp + 0x70], edi
mov edi, dword [ebp + 0xc]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x50]
add esi, eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x78], ecx
lea ecx, [edx + eax]
lea eax, [esi + edi + 8]
mov esi, dword [esp + 0x14]
add ecx, edi
mov edi, dword [esp + 0x1c]
lea esi, [esi + edi*4]
mov edi, dword [ebp + 0xc]
shl esi, 4
lea esi, [esi + edi + 8]
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x30], esi
mov esi, 0xfffffff8
sub esi, dword [esp + 0x28]
mov dword [esp + 0x4c], esi
mov esi, 8
sub esi, edx
mov dword [esp + 0x44], esi
mov esi, dword [esp + 0x1c]
sub edi, edx
mov dword [esp + 0x24], edi
mov dword [esp + 0x48], esi
jmp 0x100410b6
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x78]
fld qword [ecx]
fmul qword [esi]
fld qword [edi + ecx]
fmul qword [esi + 8]
fsubp st(1)
fld qword [esi]
fmul qword [edi + ecx]
mov edi, dword [esp + 0x3c]
fld qword [ecx]
fmul qword [esi + 8]
faddp st(1)
fld qword [edi]
mov edi, dword [esp + 0x28]
fmul qword [edi + eax - 8]
mov edi, dword [esp + 0x3c]
fld qword [edi + 8]
mov edi, dword [esp + 0x30]
fmul qword [edi]
mov edi, dword [esp + 0x3c]
fsubp st(1)
fld qword [edi]
mov edi, dword [esp + 0x30]
fmul qword [edi]
mov edi, dword [esp + 0x3c]
fld qword [edi + 8]
mov edi, dword [esp + 0x28]
fmul qword [edi + eax - 8]
mov edi, dword [esp + 0x18]
faddp st(1)
fld st(1)
fadd st(4)
fld st(1)
fadd st(4)
fxch st(5)
fsubrp st(3)
fxch st(3)
fsubrp st(1)
fld qword [edx + eax - 8]
fmul qword [edi]
mov edi, dword [esp + 0x2c]
fld qword [edi + eax - 8]
mov edi, dword [esp + 0x18]
fmul qword [edi + 8]
fsubp st(1)
fld qword [edx + eax - 8]
fmul qword [edi + 8]
mov edi, dword [esp + 0x2c]
fld qword [edi + eax - 8]
mov edi, dword [esp + 0x18]
fmul qword [edi]
mov edi, dword [esp + 0x20]
faddp st(1)
fld qword [edi]
fmul qword [eax - 8]
fld qword [edi + 8]
fmul qword [eax]
fsubp st(1)
fstp qword [esp + 0x88]
fld qword [edi]
fmul qword [eax]
fld qword [edi + 8]
mov edi, dword [esp + 0x4c]
fmul qword [eax - 8]
faddp st(1)
fld qword [esp + 0x88]
fadd st(3)
fstp qword [esp + 0x90]
fld st(0)
fadd st(2)
fstp qword [esp + 0x98]
fxch st(2)
fsub qword [esp + 0x88]
fxch st(1)
fsubrp st(2)
fld qword [eax + edi]
mov edi, dword [esp + 0x44]
fstp qword [esp + 0x88]
fld qword [edi + ecx]
fstp qword [esp + 0x60]
fld st(4)
fadd qword [esp + 0x90]
mov edi, dword [esp + 0x4c]
fstp qword [esp + 0x80]
fld st(5)
fadd qword [esp + 0x98]
fstp qword [esp + 0x78]
fld qword [esp + 0x80]
fadd qword [esp + 0x88]
fstp qword [eax + edi]
mov edi, dword [esp + 0x44]
fld qword [esp + 0x78]
fadd qword [esp + 0x60]
fstp qword [edi + ecx]
mov edi, dword [esp + 0x24]
fld qword [esp + 0x80]
fmul qword [0x100b43d8]
fsubr qword [esp + 0x88]
fstp qword [esp + 0x88]
fld qword [esp + 0x78]
fmul qword [0x100b43d8]
fsubr qword [esp + 0x60]
fxch st(5)
fsub qword [esp + 0x90]
fld qword [0x100b4620]
fmul st(1), st(0)
fxch st(7)
fsub qword [esp + 0x98]
fmulp st(7)
fld st(2)
fadd st(4)
fmul qword [0x100b6160]
fstp qword [esp + 0x90]
fld st(1)
fadd st(5)
fmul qword [0x100b4628]
fstp qword [esp + 0x98]
fxch st(3)
fmul qword [0x100b6158]
fadd qword [esp + 0x90]
fxch st(4)
fmul qword [0x100b4638]
fadd qword [esp + 0x98]
fxch st(2)
fmul qword [0x100b6150]
fsubr qword [esp + 0x90]
fxch st(1)
fmul qword [0x100b4630]
fsubr qword [esp + 0x98]
fld qword [esp + 0x88]
fadd st(4)
fstp qword [esp + 0x90]
fld st(5)
fadd st(7)
fstp qword [esp + 0x98]
fld qword [esp + 0x88]
fsubrp st(4)
fxch st(5)
fsubrp st(6)
fld qword [esp + 0x90]
fadd st(1)
fstp qword [ecx]
fld st(4)
fld qword [esp + 0x98]
fadd st(1), st(0)
fxch st(1)
fstp qword [edi + ecx]
mov edi, dword [esp + 0x28]
fld qword [esp + 0x90]
fsubrp st(2)
fxch st(1)
fstp qword [edi + eax - 8]
mov edi, dword [esp + 0x30]
fsubrp st(4)
fxch st(3)
fstp qword [edi]
fld st(1)
fadd st(1)
fstp qword [eax - 8]
fld st(2)
fadd st(4)
fstp qword [eax]
add esi, dword [esp + 0x5c]
fsubrp st(1)
mov edi, dword [esp + 0x2c]
add dword [esp + 0x30], 0x10
mov dword [esp + 0x78], esi
fstp qword [edx + eax - 8]
mov esi, dword [esp + 0x70]
add dword [esp + 0x3c], esi
fsubp st(1)
mov esi, dword [esp + 0x54]
add dword [esp + 0x18], esi
mov esi, dword [esp + 0x58]
fstp qword [edi + eax - 8]
add dword [esp + 0x20], esi
add eax, 0x10
add ecx, 0x10
sub dword [esp + 0x48], 1
jne 0x100410b2
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x6c]
mov esi, dword [esp + 0x10]
mov ecx, dword [ebp + 0x20]
mov edi, dword [ebp + 0x10]
add dword [esp + 0x14], edi
mov edi, dword [esp + 0x14]
add dword [esp + 0x50], esi
cmp edi, dword [esp + 0x74]
jl 0x1004100d
fld qword [0x100b4610]
jmp 0x10041ddd
lea eax, [ecx - 1]
cdq
sub eax, edx
mov esi, eax
mov eax, ebx
cdq
idiv ecx
sar esi, 1
mov dword [esp + 0x78], esi
shl esi, 4
add esi, dword [ebp + 0x2c]
mov dword [esp + 0x50], esi
xor esi, esi
cmp dword [esp + 0x74], esi
mov dword [esp + 0x14], esi
mov dword [esp + 0x70], eax
jle 0x10041ddd
xor edi, edi
xor ecx, ecx
cmp dword [esp + 0x1c], edi
mov dword [esp + 0x58], ecx
mov dword [esp + 0x48], edi
jle 0x10041dcc
xor eax, eax
fstp st(0)
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x6c]
mov edx, eax
neg edx
shl edx, 4
mov dword [esp + 0x88], edx
mov edx, eax
shl edx, 4
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0x98]
imul edx, eax
shl edx, 4
mov dword [esp + 0x90], edx
mov edx, dword [ebp + 0x20]
mov dword [esp + 0x54], edx
lea esp, [esp]
lea eax, [ecx + esi]
shl eax, 4
add eax, dword [ebp + 0xc]
test ecx, ecx
mov edx, dword [eax]
fld qword [eax]
fld qword [eax + 8]
mov dword [esp + 0xb8], edx
mov edx, dword [eax + 4]
mov dword [esp + 0xbc], edx
mov edx, dword [eax + 8]
mov dword [esp + 0xc0], edx
mov edx, dword [eax + 0xc]
mov ecx, 1
mov dword [esp + 0x4c], eax
mov dword [esp + 0xc4], edx
mov dword [esp + 0x3c], ecx
jne 0x1004168c
cmp dword [esp + 0x78], 4
mov edi, dword [esp + 0x1c]
jl 0x100415c8
mov edx, dword [ebp + 0x2c]
mov ecx, edi
neg ecx
shl ecx, 4
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x50]
add ecx, 0x18
mov dword [esp + 0x10], ecx
mov ecx, dword [ebp + 0x10]
sub ecx, edi
mov esi, edi
shl esi, 4
shl ecx, 4
add ecx, eax
mov dword [esp + 0x60], esi
add esi, eax
mov eax, dword [esp + 0x50]
sub eax, dword [ebp + 0x2c]
add edx, 8
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x78]
shr eax, 2
mov dword [esp + 0x30], eax
lea eax, [eax*4 + 1]
mov dword [esp + 0x3c], eax
fld qword [ecx]
mov eax, dword [esp + 0x10]
fadd qword [esi]
add edi, dword [esp + 0x1c]
fld qword [esi + 8]
fsub qword [ecx + 8]
add edi, dword [esp + 0x1c]
fld qword [esi]
fsub qword [ecx]
add edi, dword [esp + 0x1c]
fld qword [ecx + 8]
add ecx, dword [esp + 0x24]
fadd qword [esi + 8]
add esi, dword [esp + 0x60]
fxch st(5)
fadd st(3)
fxch st(4)
fadd st(5)
fxch st(3)
fstp qword [edx - 8]
fxch st(1)
fstp qword [edx]
fstp qword [eax - 0x18]
mov eax, dword [esp + 0x2c]
fxch st(2)
fstp qword [eax + edx]
mov eax, dword [esp + 0x10]
fld qword [ecx]
fadd qword [esi]
fld qword [esi + 8]
fsub qword [ecx + 8]
fld qword [esi]
fsub qword [ecx]
fld qword [ecx + 8]
add ecx, dword [esp + 0x24]
fadd qword [esi + 8]
add esi, dword [esp + 0x60]
fxch st(4)
fadd st(3)
fxch st(5)
fadd st(4)
fxch st(3)
fstp qword [edx + 8]
fxch st(1)
fstp qword [edx + 0x10]
fstp qword [eax - 8]
fxch st(1)
fstp qword [eax]
fld qword [ecx]
fadd qword [esi]
fld qword [esi + 8]
fsub qword [ecx + 8]
fld qword [esi]
fsub qword [ecx]
fld qword [ecx + 8]
add ecx, dword [esp + 0x24]
fadd qword [esi + 8]
add esi, dword [esp + 0x60]
fxch st(5)
fadd st(3)
fxch st(4)
fadd st(5)
fxch st(3)
fstp qword [edx + 0x18]
fxch st(1)
fstp qword [edx + 0x20]
fstp qword [eax + 8]
fxch st(2)
fstp qword [eax + 0x10]
fld qword [ecx]
fadd qword [esi]
fld qword [esi + 8]
fsub qword [ecx + 8]
fld qword [esi]
fsub qword [ecx]
fld qword [ecx + 8]
fadd qword [esi + 8]
fxch st(4)
fadd st(3)
fxch st(5)
fadd st(4)
add edi, dword [esp + 0x1c]
fxch st(3)
add ecx, dword [esp + 0x24]
fstp qword [edx + 0x28]
add esi, dword [esp + 0x60]
fxch st(1)
add dword [esp + 0x10], 0x40
fstp qword [edx + 0x30]
add edx, 0x40
sub dword [esp + 0x30], 1
fstp qword [eax + 0x18]
fxch st(1)
fstp qword [eax + 0x20]
jne 0x100414bb
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x4c]
cmp ecx, dword [esp + 0x78]
jg 0x10041a81
mov esi, dword [esp + 0x1c]
mov edx, esi
neg esi
shl esi, 4
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x50]
shl ecx, 4
lea esi, [esi + ecx - 0x10]
mov dword [esp + 0x30], esi
mov esi, dword [ebp + 0x2c]
lea ecx, [ecx + esi - 8]
shl edx, 4
mov dword [esp + 0x80], ecx
mov ecx, dword [ebp + 0x10]
sub ecx, edi
mov dword [esp + 0x60], edx
mov edx, edi
mov edi, dword [esp + 0x50]
sub edi, esi
mov esi, dword [esp + 0x78]
sub esi, dword [esp + 0x3c]
shl edx, 4
shl ecx, 4
add edx, eax
add ecx, eax
add esi, 1
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x80]
mov dword [esp + 0x2c], edi
jmp 0x1004163a
fxch st(1)
fld qword [ecx]
mov edi, dword [esp + 0x30]
fadd qword [edx]
add dword [esp + 0x30], 0x10
fld qword [edx + 8]
add esi, 0x10
fsub qword [ecx + 8]
fld qword [edx]
fsub qword [ecx]
fld qword [ecx + 8]
add ecx, dword [esp + 0x24]
fadd qword [edx + 8]
add edx, dword [esp + 0x60]
sub dword [esp + 0x4c], 1
fxch st(5)
fadd st(3)
fxch st(4)
fadd st(5)
fxch st(3)
fstp qword [esi - 0x18]
fxch st(1)
fstp qword [esi - 0x10]
fstp qword [edi]
mov edi, dword [esp + 0x2c]
fxch st(2)
fstp qword [edi + esi - 0x10]
jne 0x10041638
jmp 0x10041a7f
cmp dword [esp + 0x78], 4
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x10], edi
mov dword [esp + 0x44], edx
jl 0x10041967
mov ecx, dword [ebp + 0x20]
mov ebx, edx
mov edx, dword [esp + 0x20]
lea edi, [edx + ecx]
mov edx, dword [esp + 0x54]
mov ecx, ebx
neg ecx
shl ecx, 4
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x50]
sub edx, dword [esp + 0x20]
add ecx, 0x18
mov dword [esp + 0x30], ecx
mov ecx, dword [ebp + 0x2c]
add ecx, 8
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp + 0x10]
sub ecx, ebx
mov esi, ebx
mov ebx, dword [esp + 0x18]
shl esi, 4
shl ecx, 4
add ecx, eax
mov dword [esp + 0x60], esi
add esi, eax
mov eax, dword [esp + 0x50]
sub eax, dword [ebp + 0x2c]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x78]
shr eax, 2
mov dword [esp + 0x80], eax
lea eax, [eax*4 + 1]
mov dword [esp + 0x3c], eax
jmp 0x10041718
fxch st(1)
fld qword [esi]
mov eax, dword [esp + 0x30]
fmul qword [edi]
fld qword [esi + 8]
fmul qword [edi + 8]
fsubp st(1)
fld qword [esi]
fmul qword [edi + 8]
fld qword [esi + 8]
add esi, dword [esp + 0x60]
fmul qword [edi]
add edi, dword [esp + 0x20]
faddp st(1)
fld qword [edx]
fmul qword [ecx]
fld qword [edx + 8]
fmul qword [ecx + 8]
fsubp st(1)
fld qword [edx + 8]
fmul qword [ecx]
fld qword [edx]
fmul qword [ecx + 8]
add ecx, dword [esp + 0x24]
faddp st(1)
fld st(1)
fadd st(4)
fld st(3)
fsub st(2)
fxch st(2)
faddp st(4)
fld st(0)
faddp st(7)
fld st(3)
faddp st(6)
fxch st(5)
fstp qword [esp + 0xd0]
fxch st(4)
fstp qword [ebx - 8]
fxch st(3)
fstp qword [ebx]
fxch st(1)
fsubrp st(2)
fxch st(1)
fstp qword [eax - 0x18]
mov eax, dword [esp + 0x2c]
fstp qword [ebx + eax]
mov eax, dword [esp + 0x1c]
fld qword [esi]
add dword [esp + 0x44], eax
fmul qword [edi]
mov eax, dword [esp + 0x48]
fld qword [esi + 8]
add dword [esp + 0x10], eax
fmul qword [edi + 8]
add edx, dword [esp + 0x28]
fsubp st(1)
fld qword [esi]
fmul qword [edi + 8]
fld qword [esi + 8]
fmul qword [edi]
faddp st(1)
fld qword [edx]
fmul qword [ecx]
fld qword [edx + 8]
fmul qword [ecx + 8]
fsubp st(1)
fld qword [edx + 8]
fmul qword [ecx]
fld qword [edx]
fmul qword [ecx + 8]
faddp st(1)
fld st(1)
fadd st(4)
fld st(3)
fsub st(2)
fxch st(2)
faddp st(4)
fld st(0)
faddp st(6)
fld st(3)
fadd qword [esp + 0xd0]
mov eax, dword [esp + 0x18]
fxch st(1)
fstp qword [eax + 8]
add esi, dword [esp + 0x60]
add edi, dword [esp + 0x20]
fxch st(1)
fstp qword [eax + 0x10]
mov eax, dword [esp + 0x30]
add edx, dword [esp + 0x28]
fxch st(3)
fsubrp st(1)
add ecx, dword [esp + 0x24]
fstp qword [eax - 8]
fstp qword [eax]
mov eax, dword [esp + 0x1c]
fld qword [esi]
add dword [esp + 0x44], eax
fmul qword [edi]
mov eax, dword [esp + 0x48]
fld qword [esi + 8]
add dword [esp + 0x10], eax
fmul qword [edi + 8]
mov eax, dword [esp + 0x18]
fsubp st(1)
fld qword [esi]
fmul qword [edi + 8]
fld qword [esi + 8]
add esi, dword [esp + 0x60]
fmul qword [edi]
add edi, dword [esp + 0x20]
faddp st(1)
fld qword [edx]
fmul qword [ecx]
fld qword [edx + 8]
fmul qword [ecx + 8]
fsubp st(1)
fld qword [edx + 8]
fmul qword [ecx]
fld qword [edx]
fmul qword [ecx + 8]
add ecx, dword [esp + 0x24]
faddp st(1)
fld st(1)
fadd st(4)
fld st(3)
fsub st(2)
fxch st(2)
faddp st(4)
fld st(0)
faddp st(7)
fxch st(6)
fstp qword [esp + 0xc8]
fld st(2)
faddp st(5)
fxch st(5)
fstp qword [eax + 0x18]
fxch st(4)
fstp qword [eax + 0x20]
mov eax, dword [esp + 0x30]
fxch st(1)
fsubrp st(3)
fxch st(2)
fstp qword [eax + 8]
fxch st(1)
fstp qword [eax + 0x10]
mov eax, dword [esp + 0x1c]
fld qword [esi]
add dword [esp + 0x44], eax
fmul qword [edi]
mov eax, dword [esp + 0x48]
fld qword [esi + 8]
add dword [esp + 0x10], eax
fmul qword [edi + 8]
add edx, dword [esp + 0x28]
fsubp st(1)
fld qword [esi]
fmul qword [edi + 8]
fld qword [esi + 8]
fmul qword [edi]
faddp st(1)
fld qword [edx]
fmul qword [ecx]
mov eax, dword [esp + 0x18]
fld qword [edx + 8]
mov ebx, dword [esp + 0x18]
fmul qword [ecx + 8]
add esi, dword [esp + 0x60]
add edi, dword [esp + 0x20]
add ebx, 0x40
fsubp st(1)
mov dword [esp + 0x18], ebx
fld qword [edx + 8]
fmul qword [ecx]
fld qword [edx]
add edx, dword [esp + 0x28]
fmul qword [ecx + 8]
add ecx, dword [esp + 0x24]
faddp st(1)
fld st(1)
fadd st(4)
fld st(3)
fsub st(2)
fxch st(2)
faddp st(4)
fld qword [esp + 0xc8]
fadd st(1)
fld st(4)
faddp st(7)
fxch st(1)
fstp qword [eax + 0x28]
fxch st(1)
fstp qword [eax + 0x30]
mov eax, dword [esp + 0x30]
add dword [esp + 0x30], 0x40
fxch st(3)
fsubrp st(1)
fstp qword [eax + 0x18]
fstp qword [eax + 0x20]
mov eax, dword [esp + 0x1c]
add dword [esp + 0x44], eax
mov eax, dword [esp + 0x48]
add dword [esp + 0x10], eax
sub dword [esp + 0x80], 1
jne 0x10041716
mov eax, dword [esp + 0x4c]
mov ebx, dword [ebp + 0x24]
mov ecx, dword [esp + 0x3c]
mov edi, dword [esp + 0x10]
jmp 0x10041969
fxch st(1)
cmp ecx, dword [esp + 0x78]
jg 0x10041a7f
mov esi, dword [ebp + 0x20]
mov edx, dword [esp + 0x1c]
shl edi, 4
add esi, edi
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x1c]
neg esi
shl esi, 4
shl ecx, 4
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x50]
lea esi, [esi + ecx - 0x10]
mov dword [esp + 0x10], esi
mov esi, dword [ebp + 0x2c]
lea ecx, [ecx + esi - 8]
mov esi, dword [esp + 0x54]
shl edx, 4
mov dword [esp + 0x30], ecx
mov ecx, dword [ebp + 0x10]
sub ecx, dword [esp + 0x44]
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x44]
shl edx, 4
add edx, eax
shl ecx, 4
add ecx, eax
mov eax, dword [esp + 0x50]
sub eax, dword [ebp + 0x2c]
sub esi, edi
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x78]
sub eax, dword [esp + 0x3c]
add eax, 1
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x18]
fld qword [edx]
mov edi, dword [esp + 0x30]
fmul qword [eax]
add dword [esp + 0x30], 0x10
fld qword [edx + 8]
fmul qword [eax + 8]
fsubp st(1)
fld qword [edx]
fmul qword [eax + 8]
fld qword [edx + 8]
add edx, dword [esp + 0x60]
fmul qword [eax]
mov eax, dword [esp + 0x10]
add dword [esp + 0x10], 0x10
faddp st(1)
fld qword [esi]
fmul qword [ecx]
fld qword [esi + 8]
fmul qword [ecx + 8]
fsubp st(1)
fld qword [esi + 8]
fmul qword [ecx]
fld qword [esi]
add esi, dword [esp + 0x28]
fmul qword [ecx + 8]
add ecx, dword [esp + 0x24]
faddp st(1)
fld st(1)
fadd st(4)
fld st(3)
fsub st(2)
fxch st(2)
faddp st(4)
fld st(0)
faddp st(6)
fld st(3)
faddp st(7)
fstp qword [edi - 8]
fstp qword [edi]
fsubp st(2)
fxch st(1)
fstp qword [eax]
mov eax, dword [esp + 0x2c]
fstp qword [edi + eax]
mov eax, dword [esp + 0x18]
add eax, dword [esp + 0x20]
sub dword [esp + 0x80], 1
mov dword [esp + 0x18], eax
jne 0x100419ed
mov eax, dword [esp + 0x4c]
fxch st(1)
cmp dword [esp + 0x78], 1
fxch st(1)
fstp qword [eax]
fstp qword [eax + 8]
jl 0x10041d83
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x70]
mov edi, dword [ebp + 0x10]
mov dword [esp + 0x10], ecx
mov ecx, edx
shl ecx, 4
mov dword [esp + 0x60], ecx
add ecx, eax
mov dword [esp + 0x2c], ecx
mov ecx, edx
sub edi, edx
mov edx, dword [esp + 0x78]
neg ecx
shl ecx, 4
shl edi, 4
add edi, eax
mov eax, dword [ebp + 0x2c]
mov dword [esp + 0x44], edx
mov edx, dword [ebp + 0x20]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x3c], edi
jmp 0x10041ae0
cmp dword [esp + 0x78], 4
fld qword [esp + 0xc0]
fld qword [esp + 0xb8]
mov ecx, dword [esp + 0x10]
fld st(0)
mov dword [esp + 0x30], 0
fld st(2)
fst qword [esp + 0xb0]
jl 0x10041caa
mov edx, dword [esp + 0x50]
lea edi, [eax + 0x18]
sub eax, edx
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x78]
add eax, 0xfffffffc
shr eax, 2
add eax, 1
mov dword [esp + 0x80], eax
add eax, eax
add eax, eax
lea esi, [edx + 8]
mov edx, dword [ebp + 0x20]
mov dword [esp + 0x30], eax
fstp st(0)
mov eax, ecx
fld qword [edi - 0x18]
shl eax, 4
fmul qword [eax + edx]
add eax, edx
mov edx, dword [esp + 0x4c]
fld qword [edx + esi]
add ecx, dword [esp + 0x10]
fmul qword [eax + 8]
mov edx, dword [ebp + 0x20]
fld qword [eax]
fmul qword [esi]
fld qword [esi - 8]
fmul qword [eax + 8]
xor eax, eax
fld st(2)
cmp ecx, ebx
fadd st(4)
setge al
faddp st(6)
fxch st(3)
fsubrp st(2)
fxch st(1)
neg eax
faddp st(3)
and eax, ebx
sub ecx, eax
mov eax, ecx
fld st(0)
shl eax, 4
fsub st(2)
add eax, edx
add ecx, dword [esp + 0x10]
faddp st(5)
faddp st(1)
fadd qword [esp + 0xb0]
fstp qword [esp + 0xb0]
fld qword [edi - 8]
fmul qword [eax]
fld qword [eax + 8]
fmul qword [edi]
fld qword [esi + 0x10]
fmul qword [eax]
fld qword [esi + 8]
fmul qword [eax + 8]
xor eax, eax
fld st(2)
cmp ecx, ebx
fadd st(4)
setge al
faddp st(6)
fxch st(3)
fsubrp st(2)
fxch st(1)
neg eax
faddp st(3)
and eax, ebx
sub ecx, eax
mov eax, ecx
fld st(0)
shl eax, 4
fsub st(2)
add eax, edx
faddp st(5)
faddp st(1)
fadd qword [esp + 0xb0]
fstp qword [esp + 0xb0]
fld qword [edi + 8]
fmul qword [eax]
fld qword [edi + 0x10]
fmul qword [eax + 8]
fld qword [esi + 0x20]
fmul qword [eax]
fld qword [esi + 0x18]
fmul qword [eax + 8]
fld st(2)
fadd st(4)
faddp st(6)
fxch st(3)
fsubrp st(2)
add ecx, dword [esp + 0x10]
fxch st(1)
faddp st(3)
xor eax, eax
cmp ecx, ebx
setge al
fld st(0)
fsub st(2)
faddp st(5)
neg eax
faddp st(1)
and eax, ebx
sub ecx, eax
mov eax, ecx
fadd qword [esp + 0xb0]
shl eax, 4
add eax, edx
add ecx, dword [esp + 0x10]
fstp qword [esp + 0xb0]
fld qword [edi + 0x18]
fmul qword [eax]
fld qword [edi + 0x20]
fmul qword [eax + 8]
fld qword [esi + 0x30]
fmul qword [eax]
fld qword [esi + 0x28]
fmul qword [eax + 8]
xor eax, eax
fld st(2)
cmp ecx, ebx
fadd st(4)
setge al
add edi, 0x40
add esi, 0x40
faddp st(6)
fxch st(3)
fsubrp st(2)
fxch st(1)
neg eax
faddp st(3)
and eax, ebx
sub ecx, eax
sub dword [esp + 0x80], 1
fld st(0)
fsub st(2)
faddp st(5)
faddp st(1)
fadd qword [esp + 0xb0]
fst qword [esp + 0xb0]
jne 0x10041b3f
mov eax, dword [ebp + 0x2c]
mov edi, dword [esp + 0x3c]
mov esi, dword [esp + 0x30]
cmp esi, dword [esp + 0x78]
jge 0x10041d50
shl esi, 4
lea edi, [esi + eax]
sub eax, dword [esp + 0x50]
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x50]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x78]
sub eax, dword [esp + 0x30]
lea edi, [edi + esi + 8]
mov dword [esp + 0x80], eax
mov eax, ecx
shl eax, 4
fld qword [eax + edx]
lea esi, [eax + edx]
mov eax, dword [esp + 0x18]
fmul qword [eax]
mov eax, dword [esp + 0x4c]
fld qword [eax + edi]
add ecx, dword [esp + 0x10]
fmul qword [esi + 8]
xor eax, eax
fld qword [esi]
cmp ecx, ebx
fmul qword [edi]
setge al
fld qword [edi - 8]
add dword [esp + 0x18], 0x10
fmul qword [esi + 8]
add edi, 0x10
fstp qword [esp + 0x30]
fld st(1)
fadd st(3)
neg eax
and eax, ebx
sub ecx, eax
sub dword [esp + 0x80], 1
faddp st(6)
fxch st(2)
fsubrp st(1)
faddp st(3)
fld st(0)
fld qword [esp + 0x30]
fsub st(1), st(0)
fxch st(1)
faddp st(6)
faddp st(1)
faddp st(1)
jne 0x10041ce1
mov edi, dword [esp + 0x3c]
mov eax, dword [ebp + 0x2c]
mov ecx, dword [esp + 0x2c]
fxch st(1)
fstp qword [ecx]
fstp qword [ecx + 8]
mov ecx, dword [esp + 0x70]
add dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x60]
fstp qword [edi]
add dword [esp + 0x2c], ecx
fstp qword [edi + 8]
add edi, dword [esp + 0x24]
sub dword [esp + 0x44], 1
mov dword [esp + 0x3c], edi
jne 0x10041ae0
mov edx, dword [esp + 0x90]
mov ecx, dword [esp + 0x58]
mov edi, dword [esp + 0x48]
add dword [esp + 0x54], edx
add edi, dword [esp + 0x6c]
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x88]
add dword [esp + 0x20], eax
add dword [esp + 0x28], edx
mov esi, dword [esp + 0x14]
add ecx, 1
cmp ecx, dword [esp + 0x1c]
mov dword [esp + 0x58], ecx
mov dword [esp + 0x48], edi
jl 0x10041410
fld qword [0x100b4610]
add esi, dword [ebp + 0x10]
cmp esi, dword [esp + 0x74]
mov dword [esp + 0x14], esi
jl 0x100413b1
mov eax, dword [esp + 0x40]
add eax, 1
cmp eax, dword [ebp + 0x14]
mov dword [esp + 0x40], eax
jl 0x10040d95
fstp st(0)
fld qword [ebp + 0x34]
fld qword [0x100b12c8]
fsubr st(1)
fabs
fcomp qword [0x100b12c0]
fnstsw ax
test ah, 0x41
jne 0x10041ec0
cmp dword [esp + 0xa4], 0
fld st(0)
je 0x10041e23
fstp st(0)
fld st(0)
fchs
mov edx, dword [esp + 0x74]
xor esi, esi
cmp edx, 4
jl 0x10041e8c
mov eax, dword [ebp + 0xc]
lea ecx, [edx - 4]
shr ecx, 2
add eax, 0x10
add ecx, 1
lea esi, [ecx*4]
fld st(1)
add eax, 0x40
sub ecx, 1
fmul qword [eax - 0x50]
fstp qword [eax - 0x50]
fld st(0)
fmul qword [eax - 0x48]
fstp qword [eax - 0x48]
fld st(1)
fmul qword [eax - 0x40]
fstp qword [eax - 0x40]
fld qword [eax - 0x38]
fmul st(1)
fstp qword [eax - 0x38]
fld st(1)
fmul qword [eax - 0x30]
fstp qword [eax - 0x30]
fld st(0)
fmul qword [eax - 0x28]
fstp qword [eax - 0x28]
fld qword [eax - 0x20]
fmul st(2)
fstp qword [eax - 0x20]
fld qword [eax - 0x18]
fmul st(1)
fstp qword [eax - 0x18]
jne 0x10041e44
cmp esi, edx
jge 0x10041eb1
mov eax, esi
shl eax, 4
add eax, dword [ebp + 0xc]
sub edx, esi
fld qword [eax]
add eax, 0x10
sub edx, 1
fmul st(2)
fstp qword [eax - 0x10]
fld st(0)
fmul qword [eax - 8]
fstp qword [eax - 8]
jne 0x10041e9a
fstp st(0)
fstp st(0)
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x34
cmp dword [esp + 0xa4], 0
fstp st(0)
je 0x10041eb5
mov esi, dword [esp + 0x74]
lea ecx, [esi - 2]
xor edx, edx
test ecx, ecx
jl 0x10041eff
mov eax, dword [ebp + 0xc]
add ecx, 2
add eax, 0x18
shr ecx, 1
lea edx, [ecx + ecx]
fld qword [eax - 0x10]
add eax, 0x20
sub ecx, 1
fchs
fstp qword [eax - 0x30]
fld qword [eax - 0x20]
fchs
fstp qword [eax - 0x20]
jne 0x10041ee7
cmp edx, esi
jge 0x10041eb5
mov eax, dword [ebp + 0xc]
shl esi, 4
fld qword [esi + eax - 8]
lea eax, [esi + eax - 8]
pop edi
fchs
pop esi
fstp qword [eax]
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0x34