Function at 0x401760
Capabilities:
Terminate process

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
sub esp, 0x6c
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
cmp ebx, 1
jne 0x4017a3
test eax, eax
je 0x40177f
fld qword [ecx]
fstp qword [eax]
fld qword [0x42e258]
fcomp qword [ecx]
fnstsw ax
test ah, 5
jp 0x40179a
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea esi, [ebx + ebx*2]
mov dword [ebp - 0x5c], esi
add esi, 3
imul esi, ebx
add esi, esi
add esi, esi
xor eax, eax
add esi, esi
mov dword [ebp - 0x18], eax
cmp esi, eax
jne 0x4017c3
mov dword [ebp - 8], eax
jmp 0x40180c
push esi
call dword [sym.imp.MSVCR100.dll_malloc]
mov edi, eax
add esp, 4
test edi, edi
jne 0x4017fb
push str._Out_of_memory._Please_run_a_smaller_problem_n
call dword [sym.imp.MSVCR100.dll_printf]
add esp, 4
call fcn.00404240
inc dword [0x42fba4]
je 0x4017f3
call fcn.00403eb0
push 3
call dword [sym.imp.MSVCR100.dll_exit]
push esi
push 0
push edi
call sub.MSVCR100.dll_memset
add esp, 0xc
mov eax, edi
mov dword [ebp - 8], edi
lea esi, [ebx*8]
add eax, esi
mov dword [ebp - 0x10], eax
add eax, esi
lea edi, [esi + eax]
mov dword [ebp - 0x1c], eax
mov eax, ebx
imul eax, ebx
mov dword [ebp - 0x60], eax
lea eax, [edi + eax*8]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 4], edi
test eax, eax
je 0x401840
fld qword [0x430a68]
fstp qword [eax]
test ebx, ebx
jle 0x40187f
mov ecx, dword [ebp + 0x14]
mov eax, dword [ebp + 0xc]
lea edx, [ecx*8]
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x54], ebx
lea ecx, [ecx]
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x20]
push esi
push ecx
push edx
call sub.MSVCR100.dll_memcpy
mov eax, dword [ebp - 0x58]
add dword [ebp - 0x24], eax
add dword [ebp - 0x20], esi
add esp, 0xc
dec dword [ebp - 0x54]
jne 0x401860
fldz
xor eax, eax
lea ecx, [ebx - 2]
mov dword [ebp - 0xc], eax
test ecx, ecx
jle 0x401e01
jmp 0x401899
mov edi, dword [ebp - 4]
mov eax, dword [ebp - 0xc]
lea ecx, [ebx + 1]
imul ecx, eax
mov esi, ebx
sub esi, eax
lea edi, [edi + ecx*8 + 8]
dec esi
xor ecx, ecx
mov dword [ebp - 0x20], edi
cmp esi, 4
jl 0x4018ef
lea edx, [esi - 4]
shr edx, 2
inc edx
lea eax, [edi + 0x10]
lea ecx, [edx*4]
fld qword [eax - 0x10]
add eax, 0x20
dec edx
fld qword [eax - 0x28]
fld qword [eax - 0x20]
fld qword [eax - 0x18]
fld st(3)
fmulp st(4)
fxch st(3)
faddp st(4)
fld st(1)
fmulp st(2)
fxch st(3)
faddp st(1)
fld st(2)
fmulp st(3)
faddp st(2)
fmul st(0), st(0)
faddp st(1)
jne 0x4018c3
cmp ecx, esi
jge 0x4018ff
fld qword [edi + ecx*8]
inc ecx
fmul st(0), st(0)
faddp st(1)
cmp ecx, esi
jl 0x4018f3
call sub.MSVCR100.dll__CIsqrt
fld st(0)
fld st(1)
fldz
fld st(0)
fucomp st(2)
fnstsw ax
fstp st(1)
test ah, 0x44
jnp 0x4019b3
mov ecx, dword [ebp - 0x20]
fld qword [ecx]
fcom st(1)
fnstsw ax
test ah, 0x41
jp 0x40192d
fsubrp st(3)
jmp 0x40192f
faddp st(3)
mov edi, 1
cmp esi, edi
jle 0x4019b3
lea edx, [esi - 1]
cmp edx, 4
jl 0x401992
mov edx, dword [ebp - 0x20]
mov edi, dword [ebp - 8]
lea ecx, [edx + 0x20]
sub edx, edi
mov dword [ebp - 0x58], edx
lea edx, [esi - 5]
shr edx, 2
lea eax, [edi + 0x10]
inc edx
lea edi, [edx*4 + 1]
mov dword [ebp - 0x14], edi
mov edi, dword [ebp - 0x58]
fld qword [ecx - 0x18]
add eax, 0x20
fdiv st(3)
add ecx, 0x20
dec edx
fstp qword [eax - 0x28]
fld qword [edi + eax - 0x20]
fdiv st(3)
fstp qword [eax - 0x20]
fld qword [ecx - 0x28]
fdiv st(3)
fstp qword [eax - 0x18]
fld qword [ecx - 0x20]
fdiv st(3)
fstp qword [eax - 0x10]
jne 0x401965
mov edi, dword [ebp - 0x14]
cmp edi, esi
jge 0x4019b3
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 0x20]
lea eax, [ecx + edi*8]
sub edx, ecx
mov ecx, esi
sub ecx, edi
fld qword [eax + edx]
add eax, 8
dec ecx
fdiv st(3)
fstp qword [eax - 8]
jne 0x4019a5
mov eax, dword [ebp - 8]
fstp st(2)
fld1
mov ecx, dword [ebp - 0x20]
fstp qword [eax]
lea edx, [ecx + ebx*8]
test esi, esi
jle 0x401a87
mov edi, dword [ebp - 0x10]
mov ecx, esi
and ecx, 0x1fffffff
add ecx, ecx
xor eax, eax
rep stosd dword es:[edi], eax
test esi, esi
jle 0x401a87
sub edx, dword [ebp - 8]
mov eax, dword [ebp - 0x10]
mov edi, edx
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x50], esi
xor ecx, ecx
mov dword [ebp - 0x14], ecx
cmp esi, 4
jl 0x401a50
mov ecx, dword [ebp - 8]
lea edx, [ecx + edi + 0x18]
lea edi, [esi - 4]
shr edi, 2
inc edi
mov dword [ebp - 0x54], edi
add edi, edi
add ecx, 8
add edi, edi
mov dword [ebp - 0x14], edi
fld qword [ecx - 8]
mov edi, dword [ebp - 0x24]
fmul qword [edx - 0x18]
add ecx, 0x20
add edx, 0x20
dec dword [ebp - 0x54]
fadd qword [eax]
fst qword [eax]
fld qword [edi + ecx - 0x20]
fmul qword [ecx - 0x20]
faddp st(1)
fst qword [eax]
fld qword [ecx - 0x18]
fmul qword [edx - 0x28]
faddp st(1)
fst qword [eax]
fld qword [ecx - 0x10]
fmul qword [edx - 0x20]
faddp st(1)
fstp qword [eax]
jne 0x401a16
mov ecx, dword [ebp - 0x14]
cmp ecx, esi
jge 0x401a6f
mov edx, dword [ebp - 8]
lea ecx, [edx + ecx*8]
mov edx, esi
sub edx, dword [ebp - 0x14]
fld qword [edi + ecx]
add ecx, 8
dec edx
fmul qword [ecx - 8]
fadd qword [eax]
fstp qword [eax]
jne 0x401a5f
lea ecx, [ebx*8]
add edi, ecx
add eax, 8
dec dword [ebp - 0x50]
mov dword [ebp - 0x24], edi
jne 0x4019f1
mov edi, dword [ebp - 8]
fld st(1)
xor edx, edx
cmp esi, 4
jl 0x401ad0
lea ecx, [esi - 4]
shr ecx, 2
inc ecx
lea eax, [edi + 0x10]
lea edx, [ecx*4]
fld qword [eax - 0x10]
add eax, 0x20
dec ecx
fld qword [eax - 0x28]
fld qword [eax - 0x20]
fld qword [eax - 0x18]
fld st(3)
fmulp st(4)
fxch st(3)
faddp st(4)
fld st(1)
fmulp st(2)
fxch st(3)
faddp st(1)
fld st(2)
fmulp st(3)
faddp st(2)
fmul st(0), st(0)
faddp st(1)
jne 0x401aa4
cmp edx, esi
jge 0x401ae0
fld qword [edi + edx*8]
inc edx
fmul st(0), st(0)
faddp st(1)
cmp edx, esi
jl 0x401ad4
xor edx, edx
fld st(2)
cmp esi, 4
jl 0x401b5a
mov eax, dword [ebp - 0x10]
fld qword [0x42e1a0]
lea ecx, [edi + 0x18]
fdiv st(2)
sub edi, dword [ebp - 0x10]
lea edx, [esi - 4]
shr edx, 2
add eax, 8
mov dword [ebp - 0x58], edi
inc edx
lea edi, [edx*4]
mov dword [ebp - 0x14], edi
mov edi, dword [ebp - 0x58]
fld qword [eax - 8]
add eax, 0x20
fmul st(1)
add ecx, 0x20
dec edx
fst qword [eax - 0x28]
fmul qword [ecx - 0x38]
faddp st(2)
fld st(0)
fmul qword [eax - 0x20]
fst qword [eax - 0x20]
fmul qword [edi + eax - 0x20]
faddp st(2)
fld qword [eax - 0x18]
fmul st(1)
fst qword [eax - 0x18]
fmul qword [ecx - 0x28]
faddp st(2)
fld st(0)
fmul qword [eax - 0x10]
fst qword [eax - 0x10]
fmul qword [ecx - 0x20]
faddp st(2)
jne 0x401b14
mov edx, dword [ebp - 0x14]
fstp st(0)
mov edi, dword [ebp - 8]
cmp edx, esi
jge 0x401b87
mov ecx, dword [ebp - 0x10]
fld qword [0x42e1a0]
lea eax, [ecx + edx*8]
fdiv st(2)
sub edi, ecx
mov ecx, esi
sub ecx, edx
fld qword [eax]
add eax, 8
dec ecx
fmul st(1)
fst qword [eax - 8]
fmul qword [eax + edi - 8]
faddp st(2)
jne 0x401b72
fstp st(0)
xor edx, edx
mov dword [ebp - 0x14], edx
cmp esi, 4
jl 0x401c15
mov edx, dword [ebp - 8]
mov edi, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x1c]
sub edi, edx
mov dword [ebp - 0x24], edi
mov edi, dword [ebp - 0x1c]
sub edi, edx
lea eax, [edx + 8]
mov edx, dword [ebp - 0x10]
add ecx, 0x10
sub edx, dword [ebp - 0x1c]
mov dword [ebp - 0x58], edi
mov dword [ebp - 0x54], edx
mov edx, dword [ebp - 0x14]
fld qword [eax - 8]
mov edi, dword [ebp - 0x10]
fmul st(1)
add edx, 4
add eax, 0x20
add ecx, 0x20
fdiv st(2)
fsubr qword [edi + edx*8 - 0x20]
mov edi, dword [ebp - 0x24]
fstp qword [ecx - 0x30]
fld qword [eax - 0x20]
fmul st(1)
fdiv st(2)
fsubr qword [edi + eax - 0x20]
mov edi, dword [ebp - 0x58]
fstp qword [edi + eax - 0x20]
mov edi, dword [ebp - 0x54]
fld qword [eax - 0x18]
fmul st(1)
fdiv st(2)
fsubr qword [edi + ecx - 0x20]
mov edi, dword [ebp - 0x10]
fstp qword [ecx - 0x20]
fld qword [eax - 0x10]
fmul st(1)
fdiv st(2)
fsubr qword [edi + edx*8 - 8]
lea edi, [esi - 3]
fstp qword [ecx - 0x18]
cmp edx, edi
jl 0x401bbd
cmp edx, esi
jge 0x401c47
mov ecx, dword [ebp - 8]
mov edi, dword [ebp - 0x10]
sub edi, ecx
mov dword [ebp - 0x24], edi
mov edi, dword [ebp - 0x1c]
lea eax, [ecx + edx*8]
sub edi, ecx
mov ecx, esi
sub ecx, edx
mov edx, dword [ebp - 0x24]
fld qword [eax]
add eax, 8
dec ecx
fmul st(1)
fdiv st(2)
fsubr qword [eax + edx - 8]
fstp qword [eax + edi - 8]
jne 0x401c33
fstp st(0)
fstp st(0)
test esi, esi
jle 0x401cd6
mov edi, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x1c]
sub eax, edi
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], esi
xor eax, eax
mov ecx, edi
jmp 0x401c71
fxch st(1)
xor eax, eax
mov ecx, edi
jmp 0x401c71
fxch st(1)
mov edx, dword [ebp - 8]
fxch st(1)
fst qword [ecx]
inc eax
fld qword [edx + eax*8 - 8]
mov edx, dword [ebp - 0x58]
fmul qword [edx + edi]
lea edx, [esi*8]
fadd st(1)
fstp qword [ecx]
add ecx, edx
cmp eax, esi
jl 0x401c6f
add edi, 8
dec dword [ebp - 0x54]
jne 0x401c67
mov edi, dword [ebp - 0x2c]
mov eax, dword [ebp - 8]
sub eax, edi
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], esi
xor eax, eax
mov ecx, edi
mov edx, dword [ebp - 0x1c]
fld qword [edx + eax*8]
mov edx, dword [ebp - 0x58]
fmul qword [edx + edi]
lea edx, [esi*8]
inc eax
fadd qword [ecx]
fstp qword [ecx]
add ecx, edx
cmp eax, esi
jl 0x401cae
add edi, 8
dec dword [ebp - 0x54]
jne 0x401caa
fxch st(1)
mov eax, dword [ebp - 0xc]
mov edi, dword [ebp - 0x2c]
lea ecx, [eax + 1]
mov dword [ebp - 0x4c], ecx
imul ecx, ebx
add ecx, eax
mov eax, dword [ebp - 4]
lea ecx, [eax + ecx*8]
lea eax, [ecx + 8]
mov dword [ebp - 0x54], edi
mov dword [ebp - 0x58], ecx
mov dword [ebp - 0x24], eax
test esi, esi
jle 0x401db1
mov dword [ebp - 0x50], esi
xor ecx, ecx
mov dword [ebp - 0x14], ecx
cmp esi, 4
jl 0x401d65
lea ecx, [edi + 0x18]
sub edi, dword [ebp - 0x24]
lea edx, [esi - 4]
shr edx, 2
add eax, 8
mov dword [ebp - 0x34], edi
inc edx
lea edi, [edx*4]
mov dword [ebp - 0x14], edi
mov edi, dword [ebp - 0x34]
fld qword [eax - 8]
add eax, 0x20
fsub qword [ecx - 0x18]
add ecx, 0x20
dec edx
fstp qword [eax - 0x28]
fld qword [eax - 0x20]
fsub qword [edi + eax - 0x20]
fstp qword [eax - 0x20]
fld qword [eax - 0x18]
fsub qword [ecx - 0x28]
fstp qword [eax - 0x18]
fld qword [eax - 0x10]
fsub qword [ecx - 0x20]
fstp qword [eax - 0x10]
jne 0x401d2e
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x14]
mov edi, dword [ebp - 0x54]
cmp ecx, esi
jge 0x401d8d
mov edx, edi
sub edx, eax
mov dword [ebp - 0x34], edx
mov edx, esi
sub edx, dword [ebp - 0x14]
lea ecx, [eax + ecx*8]
mov eax, dword [ebp - 0x34]
fld qword [ecx]
add ecx, 8
dec edx
fsub qword [ecx + eax - 8]
fstp qword [ecx - 8]
jne 0x401d7b
mov eax, dword [ebp - 0x24]
lea ecx, [ebx*8]
add eax, ecx
lea ecx, [esi*8]
add edi, ecx
dec dword [ebp - 0x50]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x54], edi
jne 0x401d04
mov ecx, dword [ebp - 0x58]
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x20]
lea esi, [eax + 2]
fst qword [edx]
fstp qword [ecx]
cmp esi, ebx
jge 0x401df0
mov edx, dword [ebp - 4]
mov ecx, eax
imul ecx, ebx
mov edi, esi
imul edi, ebx
add edi, eax
add ecx, esi
mov eax, ebx
lea ecx, [edx + ecx*8]
lea edx, [edx + edi*8]
sub eax, esi
fst qword [ecx]
lea esi, [ebx*8]
fst qword [edx]
add ecx, 8
add edx, esi
dec eax
jne 0x401ddd
mov eax, dword [ebp - 0x4c]
lea ecx, [ebx - 2]
mov dword [ebp - 0xc], eax
cmp eax, ecx
jl 0x401893
mov dword [ebp - 0x58], 0
jmp 0x401e16
fstp st(0)
fstp st(0)
fldz
mov eax, dword [ebp - 0x60]
fld qword [0x42e250]
cmp eax, 0x32
jge 0x401e29
mov eax, 0x32
mov ecx, dword [ebp - 0x58]
inc ecx
mov dword [ebp - 0x58], ecx
cmp ecx, eax
jg 0x402888
lea esi, [ebx - 2]
mov ecx, esi
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x10], 1
test ecx, ecx
js 0x4021b9
inc esi
cmp esi, 4
jl 0x402100
mov eax, ebx
imul esi, ebx
neg eax
add eax, eax
add eax, eax
mov dword [ebp - 0x64], eax
lea eax, [ecx - 2]
imul eax, ebx
mov dword [ebp - 0x3c], eax
mov edi, dword [ebp - 4]
lea eax, [ecx - 1]
imul eax, ebx
mov dword [ebp - 0x2c], eax
lea eax, [ebx*8 + 8]
imul eax, ecx
add edi, eax
mov dword [ebp - 0x24], edi
lea edi, [ebx + ebx*2 + 3]
add edi, edi
add edi, edi
or edx, 0xffffffff
sub edx, ebx
mov dword [ebp - 0x34], esi
lea esi, [ebx + 1]
lea ebx, [edi + edi]
mov edi, eax
sub edi, ebx
add edi, dword [ebp - 4]
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x54], edi
inc ebx
mov edi, eax
shl ebx, 4
sub edi, ebx
mov ebx, dword [ebp - 4]
add edi, ebx
mov dword [ebp - 0x50], edi
mov edi, dword [ebp + 8]
add edi, edi
add edi, edi
add edi, edi
sub eax, edi
lea eax, [eax + ebx - 8]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp + 8]
inc eax
imul eax, ecx
lea edi, [ebx + eax*8 + 8]
mov dword [ebp - 0x1c], edi
mov edi, eax
sub edi, dword [ebp - 0x5c]
neg esi
lea edi, [ebx + edi*8 - 0x10]
mov dword [ebp - 0x20], edi
mov edi, dword [ebp + 8]
add edi, edi
mov ebx, eax
sub ebx, edi
mov edi, dword [ebp - 4]
lea ebx, [edi + ebx*8 - 8]
mov dword [ebp - 0x14], ebx
mov ebx, dword [ebp + 8]
shl edx, 5
shl esi, 5
sub eax, ebx
lea eax, [edi + eax*8]
mov edi, dword [ebp - 0x24]
mov dword [ebp - 0x44], eax
jmp 0x401f1b
fxch st(1)
fxch st(1)
fcom qword [edi]
fnstsw ax
fld qword [edi]
test ah, 0x41
jne 0x401f2a
fchs
mov eax, dword [ebp - 0x34]
fxch st(1)
mov edi, dword [ebp - 4]
add eax, ecx
fcom qword [edi + eax*8 + 8]
lea edi, [edi + eax*8]
fnstsw ax
fld qword [edi + 8]
test ah, 0x41
jne 0x401f47
fchs
mov eax, dword [ebp - 0x1c]
faddp st(2)
fxch st(1)
fmul st(2)
fxch st(1)
fcom qword [eax]
fnstsw ax
test ah, 0x41
mov eax, dword [ebp - 0x1c]
fld qword [eax]
jne 0x401f62
fchs
fcomp st(2)
fnstsw ax
fstp st(1)
test ah, 0x41
jp 0x401f7f
cmp dword [ebp - 0x10], 0
mov eax, dword [ebp - 0x1c]
fst qword [eax]
fst qword [edi]
je 0x401f86
inc dword [ebp - 0xc]
jmp 0x401f86
mov dword [ebp - 0x10], 0
mov edi, dword [ebp - 0x4c]
fcom qword [edi]
fnstsw ax
fld qword [edi]
test ah, 0x41
jne 0x401f96
fchs
mov edi, dword [ebp - 0x24]
fxch st(1)
fcom qword [edi]
fnstsw ax
fld qword [edi]
test ah, 0x41
jne 0x401fa8
fchs
mov edi, dword [ebp - 0x44]
faddp st(2)
fxch st(1)
fmul st(2)
fxch st(1)
fcom qword [edi]
fnstsw ax
fld qword [edi]
test ah, 0x41
jne 0x401fc0
fchs
fcomp st(2)
fnstsw ax
fstp st(1)
test ah, 0x41
jp 0x401fde
cmp dword [ebp - 0x10], 0
fst qword [edi]
mov eax, dword [ebp - 0x24]
fst qword [eax - 8]
je 0x401fe5
inc dword [ebp - 0xc]
jmp 0x401fe5
mov dword [ebp - 0x10], 0
mov edi, dword [ebp - 0x50]
fcom qword [edi]
fnstsw ax
fld qword [edi]
test ah, 0x41
jne 0x401ff5
fchs
mov edi, dword [ebp - 0x2c]
fxch st(1)
mov eax, dword [ebp - 4]
add edi, ecx
fcom qword [eax + edi*8 - 8]
fnstsw ax
test ah, 0x41
mov eax, dword [ebp - 4]
fld qword [eax + edi*8 - 8]
jne 0x402013
fchs
mov eax, dword [ebp - 0x14]
faddp st(2)
fxch st(1)
fmul st(2)
fxch st(1)
fcom qword [eax]
fnstsw ax
test ah, 0x41
mov eax, dword [ebp - 0x14]
fld qword [eax]
jne 0x40202e
fchs
fcomp st(2)
fnstsw ax
fstp st(1)
test ah, 0x41
jp 0x402050
cmp dword [ebp - 0x10], 0
mov eax, dword [ebp - 0x14]
fst qword [eax]
mov eax, dword [ebp - 4]
fst qword [eax + edi*8 - 0x10]
je 0x402057
inc dword [ebp - 0xc]
jmp 0x402057
mov dword [ebp - 0x10], 0
mov edi, dword [ebp - 0x54]
fcom qword [edi]
fnstsw ax
fld qword [edi]
test ah, 0x41
jne 0x402067
fchs
mov edi, dword [ebp - 0x3c]
fxch st(1)
mov eax, dword [ebp - 4]
add edi, ecx
fcom qword [eax + edi*8 - 0x10]
fnstsw ax
test ah, 0x41
mov eax, dword [ebp - 4]
fld qword [eax + edi*8 - 0x10]
jne 0x402085
fchs
mov eax, dword [ebp - 0x20]
faddp st(2)
fxch st(1)
fmul st(2)
fxch st(1)
fcom qword [eax]
fnstsw ax
test ah, 0x41
mov eax, dword [ebp - 0x20]
fld qword [eax]
jne 0x4020a0
fchs
fcomp st(2)
fnstsw ax
fstp st(1)
test ah, 0x41
jp 0x4020c2
cmp dword [ebp - 0x10], 0
mov eax, dword [ebp - 0x20]
fst qword [eax]
mov eax, dword [ebp - 4]
fst qword [eax + edi*8 - 0x18]
je 0x4020c9
inc dword [ebp - 0xc]
jmp 0x4020c9
mov dword [ebp - 0x10], 0
mov eax, dword [ebp - 0x64]
mov edi, dword [ebp - 0x24]
add dword [ebp - 0x34], eax
add dword [ebp - 0x2c], eax
add dword [ebp - 0x3c], eax
add dword [ebp - 0x1c], esi
add dword [ebp - 0x14], esi
add dword [ebp - 0x20], esi
add dword [ebp - 0x44], esi
add dword [ebp - 0x4c], edx
add dword [ebp - 0x50], edx
add dword [ebp - 0x54], edx
sub ecx, 4
add edi, edx
mov dword [ebp - 0x24], edi
cmp ecx, 3
jge 0x401f19
jmp 0x402102
fxch st(1)
test ecx, ecx
js 0x4021bd
mov edi, dword [ebp - 4]
lea edx, [ebx*8]
mov eax, 0xfffffff8
sub eax, edx
add edx, 8
imul edx, ecx
mov dword [ebp - 0x54], eax
mov eax, ebx
neg eax
mov dword [ebp - 0x64], eax
lea esi, [ecx + 1]
lea eax, [ebx + 1]
imul esi, ebx
add edx, edi
imul eax, ecx
lea eax, [edi + eax*8 + 8]
mov dword [ebp - 0x20], eax
fcom qword [edx]
fnstsw ax
fld qword [edx]
test ah, 0x41
jne 0x40214d
fchs
lea eax, [esi + ecx]
fxch st(1)
fcom qword [edi + eax*8 + 8]
lea edi, [edi + eax*8]
fnstsw ax
fld qword [edi + 8]
test ah, 0x41
jne 0x402165
fchs
mov eax, dword [ebp - 0x20]
faddp st(2)
fxch st(1)
fmul st(2)
fxch st(1)
fcom qword [eax]
fnstsw ax
test ah, 0x41
mov eax, dword [ebp - 0x20]
fld qword [eax]
jne 0x402180
fchs
fcomp st(2)
fnstsw ax
fstp st(1)
test ah, 0x41
jp 0x40219d
cmp dword [ebp - 0x10], 0
mov eax, dword [ebp - 0x20]
fst qword [eax]
fst qword [edi]
je 0x4021a4
inc dword [ebp - 0xc]
jmp 0x4021a4
mov dword [ebp - 0x10], 0
mov eax, dword [ebp - 0x54]
add esi, dword [ebp - 0x64]
add dword [ebp - 0x20], eax
mov edi, dword [ebp - 4]
add edx, eax
dec ecx
jns 0x402140
fstp st(1)
jmp 0x4021c2
fstp st(0)
jmp 0x4021bf
fstp st(1)
mov edi, dword [ebp - 4]
mov eax, dword [ebp - 0xc]
lea ecx, [ebx - 1]
cmp eax, ecx
jge 0x40268f
mov esi, ebx
sub esi, eax
mov dword [ebp - 0x10], esi
add esi, 0xfffffffe
mov edx, esi
mov dword [ebp - 0xc], edx
js 0x4022c2
lea eax, [esi + 1]
cmp eax, 4
jl 0x402283
mov edx, dword [ebp - 4]
lea eax, [ebx + 1]
mov ecx, eax
imul eax, esi
lea edi, [edx + eax*8 + 8]
mov dword [ebp - 0x54], edi
mov edi, eax
sub edi, dword [ebp - 0x5c]
neg ecx
lea edx, [edx + edi*8 - 0x10]
mov dword [ebp - 0x50], edx
mov edi, eax
lea edx, [ebx + ebx]
sub edi, edx
mov edx, dword [ebp - 4]
shl ecx, 5
sub eax, ebx
lea eax, [edx + eax*8]
lea edi, [edx + edi*8 - 8]
mov dword [ebp - 0x4c], eax
mov edx, esi
mov eax, dword [ebp - 0x54]
fld qword [eax]
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jnp 0x4022c2
mov eax, dword [ebp - 0x4c]
fld qword [eax]
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jnp 0x4022b7
fld qword [edi]
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jnp 0x4022ba
mov eax, dword [ebp - 0x50]
fld qword [eax]
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jnp 0x4022bf
add dword [ebp - 0x54], ecx
add dword [ebp - 0x50], ecx
add dword [ebp - 0x4c], ecx
sub edx, 4
sub esi, 4
add edi, ecx
cmp edx, 3
jge 0x40222c
test edx, edx
js 0x4022c2
mov edi, dword [ebp - 4]
lea eax, [ebx*8]
mov ecx, 0xfffffff8
sub ecx, eax
lea eax, [ebx + 1]
imul eax, edx
lea edi, [edi + eax*8 + 8]
fld qword [edi]
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jnp 0x4022c2
dec esi
add edi, ecx
dec edx
jns 0x4022a2
jmp 0x4022c2
dec esi
jmp 0x4022c2
sub esi, 2
jmp 0x4022c2
sub esi, 3
mov ecx, dword [ebp - 0x10]
lea eax, [ecx - 1]
add ecx, 0xfffffffe
mov dword [ebp - 0x50], ecx
lea edi, [ebx*8]
lea ecx, [edi + 8]
mov edx, ecx
imul edx, eax
add edx, dword [ebp - 4]
mov dword [ebp - 0x54], eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0x4c], edx
mov edx, ecx
imul edx, dword [ebp - 0x50]
inc esi
fld qword [edx + eax]
mov eax, dword [ebp - 0x54]
mov edx, dword [ebp - 0x4c]
imul eax, ebx
fsub qword [edx]
fmul qword [0x42e1a8]
fst qword [ebp - 0x48]
add eax, dword [ebp - 0x50]
mov edx, dword [ebp - 4]
fld qword [edx + eax*8]
fmul st(0), st(0)
fst qword [ebp - 0x38]
fxch st(2)
fcomp st(1)
fnstsw ax
test ah, 0x41
jp 0x402324
fld1
jmp 0x40232a
fld qword [0x42e248]
imul ecx, esi
fstp qword [ebp - 0x68]
fmul st(0), st(0)
faddp st(1)
add ecx, dword [ebp - 4]
mov dword [ebp - 0x50], ecx
call sub.MSVCR100.dll__CIsqrt
fmul qword [ebp - 0x68]
mov ecx, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x50]
fadd qword [ebp - 0x48]
lea eax, [esi + 1]
imul eax, ebx
fdivr qword [ebp - 0x38]
mov dword [ebp - 0xc], esi
fsubr qword [ecx]
lea ecx, [eax + esi]
fsubr qword [edx]
mov edx, dword [ebp - 4]
fst qword [ebp - 0x28]
fld qword [edx + ecx*8]
fst qword [ebp - 0x38]
cmp esi, dword [ebp - 0x54]
jge 0x401e10
mov ecx, dword [ebp - 0x54]
fldz
dec ecx
mov dword [ebp - 0x64], ecx
lea ecx, [esi + 2]
imul ecx, ebx
lea edx, [ebx + 1]
imul edx, esi
mov dword [ebp - 0x3c], ecx
mov ecx, dword [ebp - 4]
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x50]
lea edx, [ecx + edx*8 + 8]
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x50], edx
mov dword [ebp - 0x4c], eax
jmp 0x4023a7
fxch st(1)
fxch st(2)
fld st(1)
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jp 0x4023ba
fld1
fld st(1)
jmp 0x40242b
fstp st(0)
fld st(0)
fabs
fld st(2)
fabs
fcompp
fnstsw ax
test ah, 5
jp 0x4023fe
fdivp st(1)
fchs
fst qword [ebp - 0x30]
fmul st(0), st(0)
fadd qword [0x42e190]
call sub.MSVCR100.dll__CIsqrt
fld1
fdivrp st(1)
fld qword [ebp - 0x30]
fmul st(1)
fldz
fld qword [ebp - 0x28]
fld qword [ebp - 0x38]
fxch st(1)
fxch st(4)
fxch st(1)
fxch st(3)
fxch st(1)
jmp 0x40242b
fdivrp st(1)
fchs
fst qword [ebp - 0x30]
fmul st(0), st(0)
fadd qword [0x42e190]
call sub.MSVCR100.dll__CIsqrt
fld1
fdivrp st(1)
fld qword [ebp - 0x30]
fmul st(1)
fldz
fld qword [ebp - 0x28]
fld qword [ebp - 0x38]
fxch st(1)
fxch st(4)
fxch st(1)
fxch st(3)
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x4c]
lea ecx, [eax + edi]
mov dword [ebp - 0x14], esi
cmp esi, edx
jge 0x402527
mov edi, edx
sub edi, esi
cmp edi, 4
jl 0x4024ec
sub edx, esi
fstp st(2)
sub edx, 4
shr edx, 2
inc edx
lea edi, [esi + edx*4]
fld qword [eax]
add eax, 0x20
fld qword [ecx]
add ecx, 0x20
dec edx
fld st(1)
fmul st(3)
fld st(1)
fmul st(5)
fsubp st(1)
fstp qword [eax - 0x20]
fxch st(1)
fmul st(3)
fxch st(1)
fmul st(2)
faddp st(1)
fstp qword [ecx - 0x20]
fld qword [eax - 0x18]
fld qword [ecx - 0x18]
fld st(1)
fmul st(3)
fld st(1)
fmul st(5)
fsubp st(1)
fstp qword [eax - 0x18]
fxch st(1)
fmul st(3)
fxch st(1)
fmul st(2)
faddp st(1)
fstp qword [ecx - 0x18]
fld qword [eax - 0x10]
fld qword [ecx - 0x10]
fld st(1)
fmul st(3)
fld st(1)
fmul st(5)
fsubp st(1)
fstp qword [eax - 0x10]
fxch st(1)
fmul st(3)
fxch st(1)
fmul st(2)
faddp st(1)
fstp qword [ecx - 0x10]
fld qword [eax - 8]
fld qword [ecx - 8]
fld st(1)
fmul st(3)
fld st(1)
fmul st(5)
fsubp st(1)
fstp qword [eax - 8]
fxch st(1)
fmul st(3)
fxch st(1)
fmul st(2)
faddp st(1)
fstp qword [ecx - 8]
jne 0x40245a
fldz
mov edx, dword [ebp - 0x10]
jmp 0x4024f1
mov edi, dword [ebp - 0x14]
fxch st(2)
cmp edi, edx
jge 0x402529
fstp st(0)
sub edx, edi
fld qword [eax]
add eax, 8
fld qword [ecx]
add ecx, 8
dec edx
fld st(1)
fmul st(3)
fld st(1)
fmul st(5)
fsubp st(1)
fstp qword [eax - 8]
fxch st(1)
fmul st(3)
fxch st(1)
fmul st(2)
faddp st(1)
fstp qword [ecx - 8]
jne 0x4024f9
fldz
mov edx, dword [ebp - 0x10]
jmp 0x402529
fxch st(2)
mov eax, dword [ebp - 0x54]
mov ecx, dword [ebp - 0x50]
mov dword [ebp - 0x14], esi
cmp esi, edx
jge 0x40262c
mov edx, dword [ebp - 0x10]
sub edx, esi
cmp edx, 4
jl 0x4025ec
mov edi, dword [ebp - 0x10]
fstp st(0)
sub edi, esi
sub edi, 4
shr edi, 2
inc edi
lea edx, [esi + edi*4]
mov dword [ebp - 0x14], edx
fld qword [eax]
lea edx, [ebx*8]
fld qword [ecx]
fld st(1)
fmul st(3)
fld st(1)
fmul st(5)
fsubp st(1)
fstp qword [eax]
add eax, edx
fxch st(1)
fmul st(3)
fxch st(1)
fmul st(2)
faddp st(1)
fstp qword [ecx]
add ecx, edx
fld qword [eax]
fld qword [ecx]
fld st(1)
fmul st(3)
fld st(1)
fmul st(5)
fsubp st(1)
fstp qword [eax]
add eax, edx
fxch st(1)
fmul st(3)
fxch st(1)
fmul st(2)
faddp st(1)
fstp qword [ecx]
add ecx, edx
fld qword [eax]
fld qword [ecx]
fld st(1)
fmul st(3)
fld st(1)
fmul st(5)
fsubp st(1)
fstp qword [eax]
add eax, edx
fxch st(1)
fmul st(3)
fxch st(1)
fmul st(2)
faddp st(1)
fstp qword [ecx]
add ecx, edx
fld qword [eax]
fld qword [ecx]
fld st(1)
fmul st(3)
fld st(1)
fmul st(5)
fsubp st(1)
fstp qword [eax]
add eax, edx
fxch st(1)
fmul st(3)
fxch st(1)
fmul st(2)
faddp st(1)
fstp qword [ecx]
add ecx, edx
dec edi
jne 0x40255c
fldz
mov edx, dword [ebp - 0x14]
mov edi, dword [ebp - 0x10]
cmp edx, edi
jge 0x40262c
fstp st(0)
sub edi, edx
fld qword [eax]
lea edx, [ebx*8]
fld qword [ecx]
fld st(1)
fmul st(3)
fld st(1)
fmul st(5)
fsubp st(1)
fstp qword [eax]
add eax, edx
fxch st(1)
fmul st(3)
fxch st(1)
fmul st(2)
faddp st(1)
fstp qword [ecx]
add ecx, edx
dec edi
jne 0x4025fa
fstp st(0)
fstp st(0)
fldz
jmp 0x402630
fstp st(1)
fstp st(1)
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x64]
jge 0x402657
mov edx, dword [ebp - 0x44]
fstp st(1)
mov ecx, dword [ebp - 4]
fstp st(1)
add edx, eax
fld qword [ecx + edx*8]
mov edx, dword [ebp - 0x3c]
add edx, eax
fst qword [ebp - 0x28]
fld qword [ecx + edx*8]
fst qword [ebp - 0x38]
jmp 0x40265b
fxch st(2)
fxch st(1)
add dword [ebp - 0x44], ebx
add dword [ebp - 0x3c], ebx
mov ecx, 8
add dword [ebp - 0x54], ecx
add dword [ebp - 0x50], ecx
mov ecx, dword [ebp - 0x10]
inc eax
lea edi, [ebx*8]
add dword [ebp - 0x4c], edi
dec ecx
mov dword [ebp - 0xc], eax
cmp eax, ecx
jl 0x4023a3
fstp st(0)
fstp st(0)
jmp 0x401e16
cmp dword [ebp + 0x10], 0
je 0x4026a3
fld qword [0x430a68]
fld qword [0x430d18]
jmp 0x4026a9
fld qword [ebp - 0x68]
fld qword [ebp - 0x68]
fld qword [0x42e240]
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x18], 1
cmp ebx, 4
jl 0x4027f3
fild dword [ebp + 8]
lea eax, [ebx + ebx*2 + 3]
lea edx, [edi + eax*8]
mov dword [ebp - 0x4c], edx
lea esi, [ebx + 1]
fdivr st(1)
shl esi, 4
lea edx, [ebx - 4]
lea ecx, [ebx + 1]
lea eax, [edi + ebx*8 + 8]
shr edx, 2
shl ecx, 5
add esi, edi
inc edx
mov dword [ebp - 0x50], eax
lea eax, [edx*4]
mov dword [ebp - 0x54], edi
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x54]
fld qword [eax]
fcom st(1)
fnstsw ax
test ah, 0x41
jp 0x402713
mov dword [ebp - 0x18], 0
cmp dword [ebp + 0x10], 0
je 0x402735
fcom st(3)
fnstsw ax
test ah, 5
jnp 0x402728
fstp st(3)
fld st(2)
fxch st(3)
fcom st(4)
fnstsw ax
test ah, 0x41
je 0x402735
fstp st(4)
jmp 0x402737
fstp st(0)
mov eax, dword [ebp - 0x50]
fld qword [eax]
fcom st(1)
fnstsw ax
test ah, 0x41
jp 0x40274c
mov dword [ebp - 0x18], 0
cmp dword [ebp + 0x10], 0
je 0x40276e
fcom st(3)
fnstsw ax
test ah, 5
jnp 0x402761
fstp st(3)
fld st(2)
fxch st(3)
fcom st(4)
fnstsw ax
test ah, 0x41
je 0x40276e
fstp st(4)
jmp 0x402770
fstp st(0)
fld qword [esi]
fcom st(1)
fnstsw ax
test ah, 0x41
jp 0x402782
mov dword [ebp - 0x18], 0
cmp dword [ebp + 0x10], 0
je 0x4027a4
fcom st(3)
fnstsw ax
test ah, 5
jnp 0x402797
fstp st(3)
fld st(2)
fxch st(3)
fcom st(4)
fnstsw ax
test ah, 0x41
je 0x4027a4
fstp st(4)
jmp 0x4027a6
fstp st(0)
mov eax, dword [ebp - 0x4c]
fld qword [eax]
fcom st(1)
fnstsw ax
test ah, 0x41
jp 0x4027bb
mov dword [ebp - 0x18], 0
cmp dword [ebp + 0x10], 0
je 0x4027dd
fcom st(3)
fnstsw ax
test ah, 5
jnp 0x4027d0
fstp st(3)
fld st(2)
fxch st(3)
fcom st(4)
fnstsw ax
test ah, 0x41
je 0x4027dd
fstp st(4)
jmp 0x4027df
fstp st(0)
add dword [ebp - 0x54], ecx
add dword [ebp - 0x50], ecx
add dword [ebp - 0x4c], ecx
add esi, ecx
dec edx
jne 0x4026fe
fstp st(0)
cmp dword [ebp - 0xc], ebx
jge 0x402848
mov eax, dword [ebp - 0xc]
fidiv dword [ebp + 8]
mov esi, dword [ebp + 0x10]
lea edx, [ebx*8 + 8]
mov ecx, edx
sub ebx, eax
imul ecx, eax
add ecx, edi
xor edi, edi
fld qword [ecx]
fcom st(1)
fnstsw ax
test ah, 0x41
jp 0x402821
mov dword [ebp - 0x18], edi
cmp esi, edi
je 0x402841
fcom st(2)
fnstsw ax
test ah, 5
jnp 0x402834
fstp st(2)
fld st(1)
fxch st(2)
fcom st(3)
fnstsw ax
test ah, 0x41
je 0x402841
fstp st(3)
jmp 0x402843
fstp st(0)
add ecx, edx
dec ebx
jne 0x402813
cmp dword [ebp + 0x10], 0
fstp st(0)
je 0x402886
fld st(1)
fld st(3)
fucompp
fnstsw ax
test ah, 0x44
jp 0x402870
mov ecx, dword [ebp + 0x10]
fstp st(1)
fstp st(0)
fstp st(0)
fld qword [0x430a68]
fstp qword [ecx]
jmp 0x40288c
fdivrp st(1)
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 5
jp 0x40287f
fchs
mov edx, dword [ebp + 0x10]
fstp qword [edx]
jmp 0x40288c
fstp st(1)
fstp st(0)
fstp st(0)
cmp dword [ebp - 8], 0
je 0x40289f
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.MSVCR100.dll_free]
add esp, 4
mov eax, dword [ebp - 0x18]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret