Function at 0x401980
Capabilities:
Terminate process

Disassembly:
push ebp
mov ebp, esp
mov edx, dword [ebp + 0x10]
sub esp, 0x74
push ebx
mov ebx, dword [ebp + 0xc]
push esi
push edi
mov edi, dword [ebp + 8]
cmp edi, 1
jne 0x4019c3
test edx, edx
je 0x40199f
fld qword [ebx]
fstp qword [edx]
fld qword [0x436290]
fcomp qword [ebx]
fnstsw ax
test ah, 5
jp 0x4019ba
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, [edi + edi*2]
mov dword [ebp - 0x4c], esi
add esi, 3
imul esi, edi
add esi, esi
add esi, esi
xor eax, eax
add esi, esi
mov dword [ebp - 0x18], eax
cmp esi, eax
je 0x401a2a
push esi
call dword [sym.imp.MSVCR100.dll_malloc]
mov ebx, eax
add esp, 4
test ebx, ebx
jne 0x401a16
push str._Out_of_memory._Please_run_a_smaller_problem_n
call dword [sym.imp.MSVCR100.dll_printf]
add esp, 4
call fcn.00404c60
inc dword [0x437d8c]
je 0x401a0e
call fcn.004048c0
push 3
call dword [sym.imp.MSVCR100.dll_exit]
push esi
push 0
push ebx
call sub.MSVCR100.dll_memset
mov edx, dword [ebp + 0x10]
mov eax, ebx
mov ebx, dword [ebp + 0xc]
add esp, 0xc
mov dword [ebp - 0x14], eax
lea esi, [edi*8]
add eax, esi
mov dword [ebp - 0xc], eax
add eax, esi
lea ecx, [esi + eax]
mov dword [ebp - 0x1c], eax
mov eax, edi
imul eax, edi
mov dword [ebp - 0x5c], eax
lea eax, [ecx + eax*8]
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x40], eax
test edx, edx
je 0x401a5e
fld qword [0x438da8]
fstp qword [edx]
test edi, edi
jle 0x401a8e
mov edx, dword [ebp + 0x14]
lea eax, [edx*8]
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x44], edi
mov ecx, dword [ebp - 0x2c]
push esi
push ebx
push ecx
call sub.MSVCR100.dll_memcpy
add ebx, dword [ebp - 0x48]
add dword [ebp - 0x2c], esi
add esp, 0xc
dec dword [ebp - 0x44]
jne 0x401a75
fldz
add edi, 0xfffffffe
mov dword [ebp - 4], 0
test edi, edi
jle 0x401fc8
mov eax, dword [ebp - 0x10]
mov esi, dword [ebp + 8]
lea ecx, [eax + 8]
sub eax, dword [ebp - 0x14]
lea edx, [esi*8 + 8]
mov dword [ebp - 0x2c], esi
dec esi
add eax, 8
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x54], edx
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x28], eax
mov ebx, dword [ebp - 0x14]
xor edx, edx
cmp esi, 4
jl 0x401b17
mov edx, dword [ebp - 0x28]
lea ecx, [esi - 4]
shr ecx, 2
inc ecx
lea eax, [ebx + edx + 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 0x401aeb
mov edi, dword [ebp - 0x24]
cmp edx, esi
jge 0x401b2a
fld qword [edi + edx*8]
inc edx
fmul st(0), st(0)
faddp st(1)
cmp edx, esi
jl 0x401b1e
call sub.MSVCR100.dll__CIsqrt
fst qword [ebp - 0x70]
fld st(0)
fldz
fld st(0)
fucomp st(2)
fnstsw ax
fstp st(1)
test ah, 0x44
jnp 0x401bd1
fld qword [edi]
fcom st(1)
fnstsw ax
test ah, 0x41
jp 0x401b56
fsubrp st(2)
jmp 0x401b58
faddp st(2)
mov edx, 1
cmp esi, edx
jle 0x401bd1
lea eax, [esi - 1]
cmp eax, 4
jl 0x401bb5
lea edx, [edi + 0x20]
sub edi, ebx
lea ecx, [esi - 5]
shr ecx, 2
mov dword [ebp - 0x48], edi
inc ecx
lea edi, [ecx*4 + 1]
mov dword [ebp - 8], edi
mov edi, dword [ebp - 0x48]
lea eax, [ebx + 0x10]
fld qword [edx - 0x18]
add eax, 0x20
fdiv st(2)
add edx, 0x20
dec ecx
fstp qword [eax - 0x28]
fld qword [eax + edi - 0x20]
fdiv st(2)
fstp qword [eax - 0x20]
fld qword [edx - 0x28]
fdiv st(2)
fstp qword [eax - 0x18]
fld qword [edx - 0x20]
fdiv st(2)
fstp qword [eax - 0x10]
jne 0x401b88
mov edx, dword [ebp - 8]
cmp edx, esi
jge 0x401bd1
mov ecx, esi
lea eax, [ebx + edx*8]
sub ecx, edx
mov edx, dword [ebp - 0x28]
fld qword [eax + edx]
add eax, 8
dec ecx
fdiv st(2)
fstp qword [eax - 8]
jne 0x401bc0
fstp st(1)
fld1
fstp qword [ebx]
test esi, esi
jle 0x401c99
mov edx, dword [ebp - 0xc]
xor eax, eax
mov ecx, esi
and ecx, 0x1fffffff
add ecx, ecx
mov edi, edx
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 8]
add eax, eax
add eax, eax
add eax, eax
add eax, dword [ebp - 0x28]
mov dword [ebp - 0x44], esi
mov dword [ebp - 0x20], eax
mov eax, edx
xor edi, edi
cmp esi, 4
jl 0x401c63
mov edx, dword [ebp - 0x20]
lea edi, [esi - 4]
shr edi, 2
lea edx, [ebx + edx + 0x18]
lea ecx, [ebx + 8]
inc edi
lea ebx, [edi*4]
mov dword [ebp - 0x48], ebx
mov ebx, dword [ebp - 0x20]
fld qword [ecx - 8]
add ecx, 0x20
fmul qword [edx - 0x18]
add edx, 0x20
dec edi
fadd qword [eax]
fst qword [eax]
fld qword [ebx + 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 0x401c2b
mov ebx, dword [ebp - 0x14]
mov edi, dword [ebp - 0x48]
cmp edi, esi
jge 0x401c81
mov edx, esi
lea ecx, [ebx + edi*8]
sub edx, edi
mov edi, dword [ebp - 0x20]
fld qword [edi + ecx]
add ecx, 8
dec edx
fmul qword [ecx - 8]
fadd qword [eax]
fstp qword [eax]
jne 0x401c6e
mov ecx, dword [ebp + 8]
add ecx, ecx
add ecx, ecx
add ecx, ecx
add dword [ebp - 0x20], ecx
add eax, 8
dec dword [ebp - 0x44]
jne 0x401c06
mov edi, dword [ebp - 0xc]
fld st(0)
xor edx, edx
cmp esi, 4
jl 0x401ce2
lea ecx, [esi - 4]
shr ecx, 2
inc ecx
lea eax, [ebx + 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 0x401cb6
cmp edx, esi
jge 0x401cf2
fld qword [ebx + edx*8]
inc edx
fmul st(0), st(0)
faddp st(1)
cmp edx, esi
jl 0x401ce6
xor eax, eax
mov dword [ebp - 8], eax
cmp esi, 4
jl 0x401d6b
fld qword [0x4361d0]
mov edx, ebx
sub edx, edi
fdiv st(1)
mov dword [ebp - 0x48], edx
lea edx, [esi - 4]
shr edx, 2
lea eax, [edi + 8]
inc edx
lea edi, [edx*4]
mov dword [ebp - 8], edi
mov edi, dword [ebp - 0x48]
lea ecx, [ebx + 0x18]
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(3)
fld st(0)
fmul qword [eax - 0x20]
fst qword [eax - 0x20]
fmul qword [edi + eax - 0x20]
faddp st(3)
fld qword [eax - 0x18]
fmul st(1)
fst qword [eax - 0x18]
fmul qword [ecx - 0x28]
faddp st(3)
fld st(0)
fmul qword [eax - 0x10]
fst qword [eax - 0x10]
fmul qword [ecx - 0x20]
faddp st(3)
jne 0x401d25
mov eax, dword [ebp - 8]
fstp st(0)
mov edi, dword [ebp - 0xc]
cmp eax, esi
jge 0x401d98
fld qword [0x4361d0]
mov edx, ebx
mov ecx, esi
fdiv st(1)
sub edx, edi
sub ecx, dword [ebp - 8]
lea eax, [edi + eax*8]
fld qword [eax]
add eax, 8
dec ecx
fmul st(1)
fst qword [eax - 8]
fmul qword [eax + edx - 8]
faddp st(3)
jne 0x401d83
fstp st(0)
xor edx, edx
cmp esi, 4
jl 0x401e16
mov ecx, dword [ebp - 0x1c]
sub edi, ebx
mov dword [ebp - 0x48], edi
mov edi, dword [ebp - 0x1c]
sub edi, ebx
mov dword [ebp - 0x20], edi
mov edi, dword [ebp - 0xc]
add ecx, 0x10
sub edi, dword [ebp - 0x1c]
lea eax, [ebx + 8]
mov dword [ebp - 0x44], edi
mov edi, dword [ebp - 0xc]
fld qword [eax - 8]
mov ebx, dword [ebp - 0x48]
fmul st(2)
add edx, 4
add eax, 0x20
add ecx, 0x20
fdiv st(1)
fsubr qword [edi + edx*8 - 0x20]
fstp qword [ecx - 0x30]
fld qword [eax - 0x20]
fmul st(2)
fdiv st(1)
fsubr qword [ebx + eax - 0x20]
mov ebx, dword [ebp - 0x20]
fstp qword [ebx + eax - 0x20]
mov ebx, dword [ebp - 0x44]
fld qword [eax - 0x18]
fmul st(2)
fdiv st(1)
fsubr qword [ebx + ecx - 0x20]
lea ebx, [esi - 3]
fstp qword [ecx - 0x20]
fld qword [eax - 0x10]
fmul st(2)
fdiv st(1)
fsubr qword [edi + edx*8 - 8]
fstp qword [ecx - 0x18]
cmp edx, ebx
jl 0x401dc1
mov ebx, dword [ebp - 0x14]
cmp edx, esi
jge 0x401e42
mov ecx, dword [ebp - 0x1c]
sub ecx, ebx
mov dword [ebp - 0x20], ecx
mov ecx, esi
sub edi, ebx
lea eax, [ebx + edx*8]
sub ecx, edx
fld qword [eax]
mov edx, dword [ebp - 0x20]
fmul st(2)
add eax, 8
dec ecx
fdiv st(1)
fsubr qword [eax + edi - 8]
fstp qword [eax + edx - 8]
jne 0x401e2b
mov eax, dword [ebp - 0x14]
fstp st(1)
mov edi, dword [ebp - 0x40]
fstp st(0)
mov edx, dword [ebp - 0x1c]
push eax
push esi
push esi
mov eax, edi
mov ebx, 1
call fcn.004038a0
add esp, 0xc
test esi, esi
jle 0x401e93
mov ebx, dword [ebp - 0x14]
mov edx, edi
sub ebx, edi
mov dword [ebp - 0x44], esi
xor ecx, ecx
mov eax, edx
mov edi, dword [ebp - 0x1c]
fld qword [edi + ecx*8]
inc ecx
fmul qword [ebx + edx]
fadd qword [eax]
fstp qword [eax]
lea eax, [eax + esi*8]
cmp ecx, esi
jl 0x401e73
add edx, 8
dec dword [ebp - 0x44]
jne 0x401e6f
mov edi, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x2c]
add ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x10]
lea ecx, [eax + ecx*8]
mov eax, dword [ebp + 8]
lea edx, [ecx + 8]
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x44], edx
test esi, esi
jle 0x401f60
mov dword [ebp - 0x38], esi
lea esp, [esp]
xor ebx, ebx
cmp esi, 4
jl 0x401f17
lea eax, [edx + 8]
lea ecx, [edi + 0x18]
sub edi, edx
lea edx, [esi - 4]
shr edx, 2
inc edx
lea ebx, [edx*4]
lea ecx, [ecx]
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 0x401ee0
mov edi, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x44]
mov eax, dword [ebp + 8]
cmp ebx, esi
jge 0x401f42
mov ecx, edi
sub ecx, edx
mov dword [ebp - 0x48], ecx
mov ecx, esi
lea eax, [edx + ebx*8]
sub ecx, ebx
mov ebx, dword [ebp - 0x48]
lea esp, [esp]
fld qword [eax]
add eax, 8
dec ecx
fsub qword [eax + ebx - 8]
fstp qword [eax - 8]
jne 0x401f30
mov eax, dword [ebp + 8]
lea ecx, [eax*8]
add edx, ecx
dec dword [ebp - 0x38]
lea edi, [edi + esi*8]
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x3c], edi
jne 0x401ec0
mov ecx, dword [ebp - 0x20]
fld qword [ebp - 0x70]
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 0x24]
fst qword [edx]
add ebx, 2
fstp qword [ecx]
fldz
cmp ebx, eax
jge 0x401fa6
mov ecx, dword [ebp - 0x34]
mov edx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x10]
add ecx, ebx
lea edx, [edx + ecx*8]
mov ecx, dword [ebp - 0x2c]
add ecx, dword [ebp - 4]
add ecx, eax
lea edi, [edi + ecx*8]
mov ecx, eax
sub ecx, ebx
fst qword [edx]
lea ebx, [eax*8]
fst qword [edi]
add edx, 8
add edi, ebx
dec ecx
jne 0x401f93
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 0x54]
add dword [ebp - 0x34], eax
add dword [ebp - 0x2c], eax
add dword [ebp - 0x24], edx
add dword [ebp - 0x28], edx
inc ecx
add eax, 0xfffffffe
dec esi
mov dword [ebp - 4], ecx
cmp ecx, eax
jl 0x401acc
mov ebx, dword [ebp - 0x10]
mov esi, dword [ebp + 8]
mov dword [ebp - 0x48], 0
jmp 0x401fdd
fstp st(1)
fstp st(0)
fldz
mov eax, dword [ebp - 0x5c]
fld qword [0x436288]
cmp eax, 0x32
jge 0x401ff0
mov eax, 0x32
mov ecx, dword [ebp - 0x48]
inc ecx
mov dword [ebp - 0x48], ecx
cmp ecx, eax
jg 0x402a23
lea edx, [esi - 2]
mov ecx, edx
mov dword [ebp - 4], 0
mov dword [ebp - 8], 1
test ecx, ecx
js 0x402472
inc edx
cmp edx, 4
jl 0x4022ae
or eax, 0xffffffff
imul edx, esi
sub eax, esi
shl eax, 5
mov dword [ebp - 0x54], eax
mov eax, esi
neg eax
add eax, eax
add eax, eax
mov dword [ebp - 0x64], eax
lea eax, [ecx - 2]
imul eax, esi
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x34], edx
lea eax, [ecx - 1]
imul eax, esi
mov dword [ebp - 0x2c], eax
lea eax, [esi*8 + 8]
imul eax, ecx
lea edx, [esi + 1]
neg edx
shl edx, 5
mov dword [ebp - 0x6c], edx
lea edi, [eax + ebx]
mov dword [ebp - 0x28], edi
lea edx, [esi + esi*2 + 3]
add edx, edx
add edx, edx
lea edi, [edx + edx]
mov edx, eax
sub edx, edi
add edx, ebx
mov dword [ebp - 0x44], edx
mov edx, eax
lea edi, [esi + 1]
shl edi, 4
sub edx, edi
add edx, ebx
mov dword [ebp - 0x40], edx
lea edx, [esi*8]
sub eax, edx
lea eax, [eax + ebx - 8]
mov dword [ebp - 0x3c], eax
lea edx, [esi + 1]
mov eax, ecx
imul eax, edx
lea edx, [ebx + eax*8 + 8]
mov dword [ebp - 0x1c], edx
mov edx, eax
sub edx, dword [ebp - 0x4c]
mov edi, eax
lea edx, [ebx + edx*8 - 0x10]
mov dword [ebp - 0x20], edx
lea edx, [esi + esi]
sub edi, edx
lea edx, [ebx + edi*8 - 8]
mov edi, dword [ebp - 0x28]
sub eax, esi
lea eax, [ebx + eax*8]
mov dword [ebp - 0xc], edx
mov edx, dword [ebp - 0x54]
mov dword [ebp - 0x38], eax
jmp 0x4020db
fxch st(1)
fxch st(1)
fcom qword [edi]
fnstsw ax
fld qword [edi]
test ah, 0x41
jne 0x4020ea
fchs
mov eax, dword [ebp - 0x34]
fxch st(1)
add eax, ecx
fcom qword [ebx + eax*8 + 8]
lea edi, [ebx + eax*8]
fnstsw ax
fld qword [edi + 8]
test ah, 0x41
jne 0x402104
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 0x40211f
fchs
fcomp st(2)
fnstsw ax
fstp st(1)
test ah, 0x41
jp 0x40213c
cmp dword [ebp - 8], 0
mov eax, dword [ebp - 0x1c]
fst qword [eax]
fst qword [edi]
je 0x402143
inc dword [ebp - 4]
jmp 0x402143
mov dword [ebp - 8], 0
mov edi, dword [ebp - 0x3c]
fcom qword [edi]
fnstsw ax
fld qword [edi]
test ah, 0x41
jne 0x402153
fchs
mov edi, dword [ebp - 0x28]
fxch st(1)
fcom qword [edi]
fnstsw ax
fld qword [edi]
test ah, 0x41
jne 0x402165
fchs
mov edi, dword [ebp - 0x38]
faddp st(2)
fxch st(1)
fmul st(2)
fxch st(1)
fcom qword [edi]
fnstsw ax
fld qword [edi]
test ah, 0x41
jne 0x40217d
fchs
fcomp st(2)
fnstsw ax
fstp st(1)
test ah, 0x41
jp 0x40219b
cmp dword [ebp - 8], 0
fst qword [edi]
mov eax, dword [ebp - 0x28]
fst qword [eax - 8]
je 0x4021a2
inc dword [ebp - 4]
jmp 0x4021a2
mov dword [ebp - 8], 0
mov edi, dword [ebp - 0x40]
fcom qword [edi]
fnstsw ax
fld qword [edi]
test ah, 0x41
jne 0x4021b2
fchs
mov edi, dword [ebp - 0x2c]
fxch st(1)
add edi, ecx
fcom qword [ebx + edi*8 - 8]
fnstsw ax
fld qword [ebx + edi*8 - 8]
test ah, 0x41
jne 0x4021ca
fchs
mov eax, dword [ebp - 0xc]
faddp st(2)
fxch st(1)
fmul st(2)
fxch st(1)
fcom qword [eax]
fnstsw ax
test ah, 0x41
mov eax, dword [ebp - 0xc]
fld qword [eax]
jne 0x4021e5
fchs
fcomp st(2)
fnstsw ax
fstp st(1)
test ah, 0x41
jp 0x402204
cmp dword [ebp - 8], 0
mov eax, dword [ebp - 0xc]
fst qword [eax]
fst qword [ebx + edi*8 - 0x10]
je 0x40220b
inc dword [ebp - 4]
jmp 0x40220b
mov dword [ebp - 8], 0
mov edi, dword [ebp - 0x44]
fcom qword [edi]
fnstsw ax
fld qword [edi]
test ah, 0x41
jne 0x40221b
fchs
mov edi, dword [ebp - 0x24]
fxch st(1)
add edi, ecx
fcom qword [ebx + edi*8 - 0x10]
fnstsw ax
fld qword [ebx + edi*8 - 0x10]
test ah, 0x41
jne 0x402233
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 0x40224e
fchs
fcomp st(2)
fnstsw ax
fstp st(1)
test ah, 0x41
jp 0x40226d
cmp dword [ebp - 8], 0
mov eax, dword [ebp - 0x20]
fst qword [eax]
fst qword [ebx + edi*8 - 0x18]
je 0x402274
inc dword [ebp - 4]
jmp 0x402274
mov dword [ebp - 8], 0
mov eax, dword [ebp - 0x64]
add dword [ebp - 0x34], eax
add dword [ebp - 0x2c], eax
add dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x6c]
mov edi, dword [ebp - 0x28]
add dword [ebp - 0x1c], eax
add dword [ebp - 0xc], eax
add dword [ebp - 0x20], eax
add dword [ebp - 0x38], eax
add dword [ebp - 0x3c], edx
add dword [ebp - 0x40], edx
add dword [ebp - 0x44], edx
sub ecx, 4
add edi, edx
mov dword [ebp - 0x28], edi
cmp ecx, 3
jge 0x4020d9
jmp 0x4022b0
fxch st(1)
test ecx, ecx
js 0x402372
lea edx, [esi*8]
mov eax, 0xfffffff8
sub eax, edx
add edx, 8
imul edx, ecx
mov dword [ebp - 0x54], eax
mov eax, esi
neg eax
mov dword [ebp - 0x6c], eax
lea edi, [ecx + 1]
lea eax, [esi + 1]
imul edi, esi
add edx, ebx
imul eax, ecx
lea eax, [ebx + eax*8 + 8]
mov dword [ebp - 0x20], eax
jmp 0x4022f0
mov edi, dword [ebp - 0x64]
fcom qword [edx]
fnstsw ax
fld qword [edx]
test ah, 0x41
jne 0x4022fd
fchs
lea eax, [edi + ecx]
fxch st(1)
fcom qword [ebx + eax*8 + 8]
lea eax, [ebx + eax*8]
mov dword [ebp - 0x44], eax
fnstsw ax
test ah, 0x41
mov eax, dword [ebp - 0x44]
fld qword [eax + 8]
jne 0x40231b
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 0x402336
fchs
fcomp st(2)
fnstsw ax
fstp st(1)
test ah, 0x41
jp 0x402356
cmp dword [ebp - 8], 0
mov eax, dword [ebp - 0x20]
fst qword [eax]
mov eax, dword [ebp - 0x44]
fst qword [eax]
je 0x40235d
inc dword [ebp - 4]
jmp 0x40235d
mov dword [ebp - 8], 0
mov eax, dword [ebp - 0x54]
add edi, dword [ebp - 0x6c]
add dword [ebp - 0x20], eax
add edx, eax
dec ecx
mov dword [ebp - 0x64], edi
jns 0x4022ed
fstp st(1)
mov eax, dword [ebp - 4]
lea ecx, [esi - 1]
cmp eax, ecx
jge 0x402829
mov edi, esi
sub edi, eax
mov dword [ebp - 0xc], edi
add edi, 0xfffffffe
mov edx, edi
mov dword [ebp - 4], edx
js 0x402484
lea eax, [edi + 1]
cmp eax, 4
jl 0x40243c
lea edx, [esi + 1]
mov eax, edi
imul eax, edx
mov ecx, edx
lea edx, [ebx + eax*8 + 8]
mov dword [ebp - 0x44], edx
mov edx, eax
sub edx, dword [ebp - 0x4c]
mov dword [ebp - 0x6c], eax
lea edx, [ebx + edx*8 - 0x10]
mov dword [ebp - 0x3c], edx
lea edx, [esi + esi]
sub eax, edx
lea eax, [ebx + eax*8 - 8]
neg ecx
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x6c]
shl ecx, 5
sub eax, esi
lea edx, [ebx + eax*8]
mov dword [ebp - 0x38], edx
mov edx, edi
mov eax, dword [ebp - 0x44]
fld qword [eax]
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jnp 0x402484
mov eax, dword [ebp - 0x38]
fld qword [eax]
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jnp 0x402479
mov eax, dword [ebp - 0x40]
fld qword [eax]
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jnp 0x40247c
mov eax, dword [ebp - 0x3c]
fld qword [eax]
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jnp 0x402481
add dword [ebp - 0x44], ecx
add dword [ebp - 0x40], ecx
add dword [ebp - 0x3c], ecx
add dword [ebp - 0x38], ecx
sub edx, 4
sub edi, 4
cmp edx, 3
jge 0x4023e1
test edx, edx
js 0x402484
lea eax, [esi*8]
mov ecx, 0xfffffff8
sub ecx, eax
lea eax, [esi + 1]
imul eax, edx
mov dword [ebp - 0x44], edx
lea edx, [ebx + eax*8 + 8]
fld qword [edx]
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jnp 0x402484
dec edi
add edx, ecx
dec dword [ebp - 0x44]
jns 0x40245b
jmp 0x402484
fstp st(0)
jmp 0x402374
dec edi
jmp 0x402484
sub edi, 2
jmp 0x402484
sub edi, 3
mov ecx, dword [ebp - 0xc]
lea eax, [ecx - 1]
add ecx, 0xfffffffe
mov dword [ebp - 0x6c], ecx
lea ecx, [esi*8 + 8]
mov edx, ecx
imul edx, eax
add edx, ebx
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x6c]
mov edx, ecx
imul edx, eax
inc edi
fld qword [edx + ebx]
mov edx, dword [ebp - 0x44]
fsub qword [edx]
mov edx, dword [ebp - 0x64]
imul edx, esi
fmul qword [0x4361d8]
fst qword [ebp - 0x58]
add edx, eax
fld qword [ebx + edx*8]
fmul st(0), st(0)
fst qword [ebp - 0x68]
fxch st(2)
fcomp st(1)
fnstsw ax
test ah, 0x41
jp 0x4024dd
fld1
jmp 0x4024e3
fld qword [0x436280]
imul ecx, edi
fstp qword [ebp - 0x70]
fmul st(0), st(0)
faddp st(1)
add ecx, ebx
mov dword [ebp - 0x40], ecx
call sub.MSVCR100.dll__CIsqrt
mov eax, dword [ebp - 0x44]
fmul qword [ebp - 0x70]
mov ecx, dword [ebp - 0x40]
mov dword [ebp - 4], edi
fadd qword [ebp - 0x58]
fdivr qword [ebp - 0x68]
fsubr qword [eax]
lea eax, [edi + 1]
imul eax, esi
fsubr qword [ecx]
fst qword [ebp - 0x30]
mov ecx, dword [ebp - 0xc]
lea edx, [eax + edi]
dec ecx
fld qword [ebx + edx*8]
fst qword [ebp - 0x68]
cmp edi, ecx
jge 0x401fd7
mov ecx, dword [ebp - 0xc]
fldz
add ecx, 0xfffffffe
mov dword [ebp - 0x6c], ecx
lea ecx, [edi + 2]
imul ecx, esi
mov dword [ebp - 0x34], ecx
lea ecx, [esi + 1]
imul ecx, edi
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x40]
lea edx, [ebx + ecx*8 + 8]
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x40], edx
mov dword [ebp - 0x3c], eax
jmp 0x40255e
fxch st(1)
fxch st(2)
fld st(1)
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jp 0x402573
fstp st(2)
fld1
fld st(2)
jmp 0x4025de
fstp st(0)
fld st(0)
fabs
fld st(2)
fabs
fcompp
fnstsw ax
test ah, 5
jp 0x4025b4
fdivp st(1)
fchs
fst qword [ebp - 0x58]
fmul st(0), st(0)
fadd qword [0x4361c0]
call sub.MSVCR100.dll__CIsqrt
fld1
fdivrp st(1)
fld qword [ebp - 0x58]
fmul st(1)
fldz
fld qword [ebp - 0x68]
fxch st(1)
fxch st(3)
fxch st(1)
fxch st(2)
fxch st(1)
jmp 0x4025de
fdivrp st(1)
fchs
fst qword [ebp - 0x58]
fmul st(0), st(0)
fadd qword [0x4361c0]
call sub.MSVCR100.dll__CIsqrt
fld1
fdivrp st(1)
fld qword [ebp - 0x58]
fmul st(1)
fldz
fld qword [ebp - 0x68]
fxch st(1)
fxch st(3)
fxch st(1)
fxch st(2)
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x3c]
lea ecx, [eax + esi*8]
mov dword [ebp - 8], edi
cmp edi, edx
jge 0x4026d1
mov ebx, edx
sub ebx, edi
cmp ebx, 4
jl 0x40269e
mov ebx, edx
sub ebx, edi
sub ebx, 4
shr ebx, 2
inc ebx
lea edx, [edi + ebx*4]
mov dword [ebp - 8], edx
fld qword [eax]
add eax, 0x20
fld qword [ecx]
add ecx, 0x20
dec ebx
fld st(1)
fmul st(4)
fld st(1)
fmul st(4)
fsubp st(1)
fstp qword [eax - 0x20]
fxch st(1)
fmul st(2)
fxch st(1)
fmul st(3)
faddp st(1)
fstp qword [ecx - 0x20]
fld qword [eax - 0x18]
fld qword [ecx - 0x18]
fld st(1)
fmul st(4)
fld st(1)
fmul st(4)
fsubp st(1)
fstp qword [eax - 0x18]
fxch st(1)
fmul st(2)
fxch st(1)
fmul st(3)
faddp st(1)
fstp qword [ecx - 0x18]
fld qword [eax - 0x10]
fld qword [ecx - 0x10]
fld st(1)
fmul st(4)
fld st(1)
fmul st(4)
fsubp st(1)
fstp qword [eax - 0x10]
fxch st(1)
fmul st(2)
fxch st(1)
fmul st(3)
faddp st(1)
fstp qword [ecx - 0x10]
fld qword [eax - 8]
fld qword [ecx - 8]
fld st(1)
fmul st(4)
fld st(1)
fmul st(4)
fsubp st(1)
fstp qword [eax - 8]
fxch st(1)
fmul st(2)
fxch st(1)
fmul st(3)
faddp st(1)
fstp qword [ecx - 8]
jne 0x402610
mov edx, dword [ebp - 0xc]
mov ebx, dword [ebp - 8]
cmp ebx, edx
jge 0x4026ce
sub edx, ebx
fld qword [eax]
add eax, 8
fld qword [ecx]
add ecx, 8
dec edx
fld st(1)
fmul st(4)
fld st(1)
fmul st(4)
fsubp st(1)
fstp qword [eax - 8]
fxch st(1)
fmul st(2)
fxch st(1)
fmul st(3)
faddp st(1)
fstp qword [ecx - 8]
jne 0x4026a7
mov ebx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x40]
mov dword [ebp - 8], edi
cmp edi, dword [ebp - 0xc]
jge 0x4027ca
mov edx, dword [ebp - 0xc]
sub edx, edi
cmp edx, 4
jl 0x402791
mov ebx, dword [ebp - 0xc]
sub ebx, edi
sub ebx, 4
shr ebx, 2
inc ebx
lea edx, [edi + ebx*4]
mov dword [ebp - 8], edx
fld qword [eax]
lea edx, [esi*8]
fld qword [ecx]
fld st(1)
fmul st(4)
fld st(1)
fmul st(4)
fsubp st(1)
fstp qword [eax]
add eax, edx
fxch st(1)
fmul st(2)
fxch st(1)
fmul st(3)
faddp st(1)
fstp qword [ecx]
add ecx, edx
fld qword [eax]
fld qword [ecx]
fld st(1)
fmul st(4)
fld st(1)
fmul st(4)
fsubp st(1)
fstp qword [eax]
add eax, edx
fxch st(1)
fmul st(2)
fxch st(1)
fmul st(3)
faddp st(1)
fstp qword [ecx]
add ecx, edx
fld qword [eax]
fld qword [ecx]
fld st(1)
fmul st(4)
fld st(1)
fmul st(4)
fsubp st(1)
fstp qword [eax]
add eax, edx
fxch st(1)
fmul st(2)
fxch st(1)
fmul st(3)
faddp st(1)
fstp qword [ecx]
add ecx, edx
fld qword [eax]
fld qword [ecx]
fld st(1)
fmul st(4)
fld st(1)
fmul st(4)
fsubp st(1)
fstp qword [eax]
add eax, edx
fxch st(1)
fmul st(2)
fxch st(1)
fmul st(3)
faddp st(1)
fstp qword [ecx]
add ecx, edx
dec ebx
jne 0x402703
mov edx, dword [ebp - 8]
mov ebx, dword [ebp - 0xc]
cmp edx, ebx
jge 0x4027c7
sub ebx, edx
fld qword [eax]
lea edx, [esi*8]
fld qword [ecx]
fld st(1)
fmul st(4)
fld st(1)
fmul st(4)
fsubp st(1)
fstp qword [eax]
add eax, edx
fxch st(1)
fmul st(2)
fxch st(1)
fmul st(3)
faddp st(1)
fstp qword [ecx]
add ecx, edx
dec ebx
jne 0x40279d
mov ebx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
fstp st(1)
fstp st(0)
cmp eax, dword [ebp - 0x6c]
jge 0x4027f0
mov ecx, dword [ebp - 0x38]
fstp st(0)
mov edx, dword [ebp - 0x34]
add ecx, eax
fld qword [ebx + ecx*8]
add edx, eax
fst qword [ebp - 0x30]
fld qword [ebx + edx*8]
fst qword [ebp - 0x68]
jmp 0x4027f5
fld qword [ebp - 0x30]
fxch st(1)
add dword [ebp - 0x38], esi
add dword [ebp - 0x34], esi
mov ecx, 8
add dword [ebp - 0x44], ecx
add dword [ebp - 0x40], ecx
lea ecx, [esi*8]
add dword [ebp - 0x3c], ecx
mov ecx, dword [ebp - 0xc]
inc eax
dec ecx
mov dword [ebp - 4], eax
cmp eax, ecx
jl 0x40255a
fstp st(1)
fstp st(0)
jmp 0x401fdd
cmp dword [ebp + 0x10], 0
je 0x40283d
fld qword [0x438da8]
fld qword [0x4394f0]
jmp 0x402843
fld qword [ebp - 0x70]
fld qword [ebp - 0x70]
fld qword [0x436278]
mov dword [ebp - 4], 0
mov dword [ebp - 0x18], 1
cmp esi, 4
jl 0x40298d
fild dword [ebp + 8]
lea eax, [esi + esi*2 + 3]
lea edx, [ebx + eax*8]
mov dword [ebp - 0x3c], edx
lea edi, [esi + 1]
fdivr st(1)
shl edi, 4
lea edx, [esi - 4]
lea ecx, [esi + 1]
lea eax, [ebx + esi*8 + 8]
shr edx, 2
shl ecx, 5
add edi, ebx
inc edx
mov dword [ebp - 0x40], eax
lea eax, [edx*4]
mov dword [ebp - 0x44], ebx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x44]
fld qword [eax]
fcom st(1)
fnstsw ax
test ah, 0x41
jp 0x4028ad
mov dword [ebp - 0x18], 0
cmp dword [ebp + 0x10], 0
je 0x4028cf
fcom st(3)
fnstsw ax
test ah, 5
jnp 0x4028c2
fstp st(3)
fld st(2)
fxch st(3)
fcom st(4)
fnstsw ax
test ah, 0x41
je 0x4028cf
fstp st(4)
jmp 0x4028d1
fstp st(0)
mov eax, dword [ebp - 0x40]
fld qword [eax]
fcom st(1)
fnstsw ax
test ah, 0x41
jp 0x4028e6
mov dword [ebp - 0x18], 0
cmp dword [ebp + 0x10], 0
je 0x402908
fcom st(3)
fnstsw ax
test ah, 5
jnp 0x4028fb
fstp st(3)
fld st(2)
fxch st(3)
fcom st(4)
fnstsw ax
test ah, 0x41
je 0x402908
fstp st(4)
jmp 0x40290a
fstp st(0)
fld qword [edi]
fcom st(1)
fnstsw ax
test ah, 0x41
jp 0x40291c
mov dword [ebp - 0x18], 0
cmp dword [ebp + 0x10], 0
je 0x40293e
fcom st(3)
fnstsw ax
test ah, 5
jnp 0x402931
fstp st(3)
fld st(2)
fxch st(3)
fcom st(4)
fnstsw ax
test ah, 0x41
je 0x40293e
fstp st(4)
jmp 0x402940
fstp st(0)
mov eax, dword [ebp - 0x3c]
fld qword [eax]
fcom st(1)
fnstsw ax
test ah, 0x41
jp 0x402955
mov dword [ebp - 0x18], 0
cmp dword [ebp + 0x10], 0
je 0x402977
fcom st(3)
fnstsw ax
test ah, 5
jnp 0x40296a
fstp st(3)
fld st(2)
fxch st(3)
fcom st(4)
fnstsw ax
test ah, 0x41
je 0x402977
fstp st(4)
jmp 0x402979
fstp st(0)
add dword [ebp - 0x44], ecx
add dword [ebp - 0x40], ecx
add dword [ebp - 0x3c], ecx
add edi, ecx
dec edx
jne 0x402898
fstp st(0)
mov eax, dword [ebp - 4]
cmp eax, esi
jge 0x4029e3
fidiv dword [ebp + 8]
mov edi, dword [ebp + 0x10]
lea edx, [esi*8 + 8]
mov ecx, edx
imul ecx, eax
add ecx, ebx
sub esi, eax
fld qword [ecx]
fcom st(1)
fnstsw ax
test ah, 0x41
jp 0x4029bc
mov dword [ebp - 0x18], 0
test edi, edi
je 0x4029dc
fcom st(2)
fnstsw ax
test ah, 5
jnp 0x4029cf
fstp st(2)
fld st(1)
fxch st(2)
fcom st(3)
fnstsw ax
test ah, 0x41
je 0x4029dc
fstp st(3)
jmp 0x4029de
fstp st(0)
add ecx, edx
dec esi
jne 0x4029aa
cmp dword [ebp + 0x10], 0
fstp st(0)
je 0x402a21
fld st(1)
fld st(3)
fucompp
fnstsw ax
test ah, 0x44
jp 0x402a0b
mov ecx, dword [ebp + 0x10]
fstp st(1)
fstp st(0)
fstp st(0)
fld qword [0x438da8]
fstp qword [ecx]
jmp 0x402a27
fdivrp st(1)
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 5
jp 0x402a1a
fchs
mov edx, dword [ebp + 0x10]
fstp qword [edx]
jmp 0x402a27
fstp st(1)
fstp st(0)
fstp st(0)
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x402a38
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