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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x47b556
mov eax, dword fs:[0]
push eax
sub esp, 0x168
push ebx
push esi
push edi
mov eax, dword [0x48f400]
xor eax, esp
push eax
lea eax, [esp + 0x178]
mov dword fs:[0], eax
mov esi, dword [ebp + 0x18]
cmp byte [ebp + 0x54], 0
je 0x40f9e4
mov eax, dword [ebp + 0x50]
mov dword [eax], 0
push 5
push 5
lea ecx, [esp + 0x70]
call fcn.00411970
fld qword [ebp + 0x28]
fstp qword [esp + 0x2c]
lea ecx, [esp + 0x2c]
fld qword [ebp + 0x38]
push ecx
lea ecx, [esp + 0x6c]
fstp qword [esp + 0x38]
mov dword [esp + 0x184], 0
call fcn.00411a50
fld qword [ebp + 0x30]
fstp qword [esp + 0x2c]
lea edx, [esp + 0x2c]
fld qword [ebp + 0x38]
push edx
lea ecx, [esp + 0x6c]
fstp qword [esp + 0x38]
call fcn.00411a50
fld qword [ebp + 0x30]
fstp qword [esp + 0x2c]
lea eax, [esp + 0x2c]
fld qword [ebp + 0x40]
push eax
lea ecx, [esp + 0x6c]
fstp qword [esp + 0x38]
call fcn.00411a50
fld qword [ebp + 0x28]
fstp qword [esp + 0x2c]
lea ecx, [esp + 0x2c]
fld qword [ebp + 0x40]
push ecx
lea ecx, [esp + 0x6c]
fstp qword [esp + 0x38]
call fcn.00411a50
fld qword [ebp + 0x28]
fstp qword [esp + 0x2c]
lea edx, [esp + 0x2c]
fld qword [ebp + 0x38]
push edx
lea ecx, [esp + 0x6c]
fstp qword [esp + 0x38]
call fcn.00411a50
fld qword [0x493de0]
fadd st(0), st(0)
mov edi, dword [sym.imp.MSVCR90.dll__wassert]
mov bl, 1
fsub qword [0x493e08]
fstp qword [esp + 0x5c]
fld qword [0x493e30]
fld qword [0x485510]
fmul st(1)
fld qword [0x485508]
fmul st(1)
fmulp st(1)
fld st(1)
fmulp st(2)
fsubrp st(1)
fst qword [esp + 0x54]
fldz
fcomp st(1)
fnstsw ax
test ah, 5
jnp 0x40fae9
push 0x4a4
fstp st(0)
push 0x484bf0
push str.val___0.
call edi
fld qword [esp + 0x60]
add esp, 0xc
call sub.MSVCR90.dll__CIsqrt
fmul qword [0x485500]
fld qword [esp + 0x5c]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x40fb14
fld st(0)
fadd st(1)
fcomp st(2)
fnstsw ax
fstp st(1)
test ah, 5
jp 0x40fb16
xor bl, bl
jmp 0x40fb16
fstp st(0)
fld qword [0x4854f8]
fmul st(1)
fstp qword [esp + 0xe4]
test bl, bl
je 0x40fb3d
mov eax, dword [ebp + 8]
sub esp, 8
fstp qword [esp]
push eax
call fcn.0040ebc0
add esp, 0xc
jmp 0x40fb3f
fstp st(0)
cmp byte [ebp + 0x24], 0
fld qword [0x4854f0]
fstp qword [esp + 0x8c]
je 0x40fced
fldz
mov ebx, dword [ebp + 0x14]
lea ecx, [esp + 0x5c]
fst qword [esp + 0x7c]
push ecx
fst qword [esp + 0x88]
lea edx, [esp + 0x30]
fst qword [esp + 0x30]
push edx
fstp qword [esp + 0x3c]
lea eax, [esp + 0x5c]
push eax
lea ecx, [esp + 0x88]
push ecx
push ebx
call fcn.0041a0a0
add esp, 0x14
mov dword [0x48eac0], eax
test eax, eax
jne 0x40fc0e
mov edx, dword [ebp + 0x10]
fld qword [esp + 0x54]
fstp qword [esp + 0x8c]
cmp dword [edx], eax
jne 0x40fbbd
push 0x4ce
push 0x484c24
push str.p_tupInf
call edi
add esp, 0xc
cmp dword [esi], 0
jne 0x40fc3c
push 0x10
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
mov dword [esp + 0x50], eax
mov byte [esp + 0x180], 1
test eax, eax
je 0x40fbef
push 0x2710
push 0xc350
mov ecx, eax
call fcn.00411200
jmp 0x40fbf1
xor eax, eax
mov byte [esp + 0x180], 0
mov dword [esi], eax
test eax, eax
jne 0x40fc3c
push 0xffffffffffffffff
push str.could_not_create_UserPoint_array
call fcn.00412930
add esp, 8
lea ecx, [esp + 0x68]
mov esi, eax
mov dword [esp + 0x180], 0xffffffff
call fcn.00412290
mov eax, esi
mov ecx, dword [esp + 0x178]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esi]
mov dword [eax], 0
mov eax, dword [ebx]
xor esi, esi
test eax, eax
jle 0x40fced
xor edi, edi
fld qword [0x485390]
test edi, edi
jl 0x40fdb0
cmp esi, eax
jge 0x40fdb0
mov eax, dword [ebx + 0xc]
fld qword [eax + edi + 8]
lea ecx, [eax + edi]
fld qword [ecx]
fabs
fcomp st(2)
fnstsw ax
test ah, 5
jp 0x40fccc
fabs
fcompp
fnstsw ax
test ah, 5
jp 0x40fcd0
fld qword [ecx + 8]
mov dword [esp + 0xcc], 0xffffffff
fld qword [ecx]
fstp qword [esp + 0xd4]
fstp qword [esp + 0xdc]
mov edx, dword [ebp + 0x18]
lea ecx, [esp + 0xcc]
push ecx
mov ecx, dword [edx]
mov byte [esp + 0x184], 2
call fcn.004115e0
mov byte [esp + 0x180], 0
jmp 0x40fcdf
fstp st(0)
fstp st(0)
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax]
push 0x48eba0
call fcn.004115e0
mov eax, dword [ebx]
inc esi
add edi, 0x10
cmp esi, eax
jl 0x40fc52
fld qword [ebp + 0x48]
mov edx, dword [ebp + 8]
fld qword [0x4854e8]
xor ecx, ecx
fadd st(1)
mov dword [0x493e90], ecx
mov eax, dword [edx]
mov eax, dword [eax + 0x14]
cmp eax, ecx
fstp qword [esp + 0x54]
fld qword [0x484760]
mov edx, dword [ebp + 0xc]
mov edx, dword [edx]
fld st(0)
fst qword [esp + 0x5c]
mov dword [esp + 0x50], eax
fxch st(1)
mov dword [esp + 0x78], edx
fst qword [esp + 0x94]
lea ebx, [ecx - 0x67]
mov dword [esp + 0x28], ecx
jg 0x40fdc8
fstp st(0)
fstp st(0)
lea ecx, [esp + 0x10c]
fstp st(0)
call fcn.00430620
fld qword [0x4854c8]
push 1
push 0
sub esp, 0x10
fst qword [esp + 8]
lea ecx, [esp + 0x124]
fstp qword [esp]
push 0x493e90
mov byte [esp + 0x19c], 3
call fcn.00431e10
test eax, eax
jge 0x40fd98
push 0x594
push str.jc_trochoid.cxx
push str.nbMaxCtr___0
call dword [sym.imp.MSVCR90.dll__wassert]
add esp, 0xc
mov eax, dword [0x493e90]
xor esi, esi
mov ebx, eax
test eax, eax
jle 0x410445
xor edi, edi
jmp 0x4103f5
fstp st(0)
push str.Invalid_Array_Index
push 0x40
push 0x4853c8
call fcn.0040dec0
fld qword [ebp + 0x48]
fxch st(2)
mov eax, dword [ebp + 8]
mov esi, dword [eax]
mov eax, dword [esp + 0x28]
test eax, eax
jl 0x40fded
cmp eax, dword [esi + 0x14]
jge 0x40fded
mov ecx, dword [esi + 0x10]
cdq
idiv ecx
mov ecx, dword [esi]
mov eax, dword [ecx + eax*4]
lea edx, [edx + edx*2]
lea eax, [eax + edx*8]
jmp 0x40fdef
xor eax, eax
fld qword [eax + 8]
mov edi, dword [eax]
fst qword [esp + 0x3c]
mov dword [esp + 0x24], edi
fld qword [eax + 0x10]
fst qword [esp + 0x44]
test edi, edi
jl 0x41003d
cmp edi, dword [esp + 0x78]
fstp st(2)
fstp st(2)
fstp st(1)
fstp st(0)
fstp st(0)
jl 0x40fe33
push 0x506
push 0x484c7c
push str.tag___nbCenters
call dword [sym.imp.MSVCR90.dll__wassert]
add esp, 0xc
cmp dword [0x493da8], 3
je 0x410010
mov ecx, dword [ebp + 0x1c]
fld qword [esp + 0x44]
push ecx
sub esp, 0x10
fstp qword [esp + 8]
fld qword [esp + 0x50]
fstp qword [esp]
call fcn.00413160
add esp, 0x14
test al, al
jne 0x410010
mov eax, dword [ebp + 0xc]
cmp edi, dword [eax]
jge 0x40fdb2
mov edx, dword [eax + 0xc]
lea esi, [edi + edi*2]
add esi, esi
add esi, esi
add esi, esi
fld qword [esi + edx]
lea ecx, [esi + edx]
fld qword [0x484760]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x41000e
fcomp qword [ecx + 8]
fnstsw ax
test ah, 0x41
jne 0x410010
cmp byte [ebp + 0x24], 0
jne 0x40ff0f
cmp byte [ebp + 0x20], 0
jne 0x40ff0f
fld qword [0x493e50]
mov esi, dword [ebp + 0xc]
sub esp, 8
fstp qword [esp]
push 0x493e90
fld qword [ebp + 0x48]
sub esp, 8
fstp qword [esp]
push edi
mov ecx, esi
call fcn.004115b0
fld qword [esp + 0x58]
push eax
sub esp, 0x10
fstp qword [esp + 8]
fld qword [esp + 0x64]
fstp qword [esp]
call fcn.00414d30
add esp, 0x28
push edi
mov ecx, esi
call fcn.004115b0
fld qword [0x484760]
fst qword [eax]
fstp qword [eax + 8]
fldz
fstp qword [eax + 0x10]
jmp 0x410010
fld qword [0x493e30]
fld qword [esp + 0x8c]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
je 0x40ff3a
fcomp qword [0x493db8]
fnstsw ax
test ah, 0x41
jne 0x410010
jmp 0x40ff3c
fstp st(0)
fld qword [0x493e50]
mov eax, dword [ebp + 0x18]
mov edx, dword [ebp + 0x10]
mov ebx, dword [0x493e90]
sub esp, 8
fstp qword [esp]
push 0x493e90
fld qword [ebp + 0x48]
sub esp, 8
fstp qword [esp]
push ecx
fld qword [esp + 0x5c]
mov ecx, dword [eax]
mov eax, dword [edx]
sub esp, 0x10
fstp qword [esp + 8]
fld qword [esp + 0x64]
fstp qword [esp]
push ecx
push eax
call fcn.00414de0
mov ecx, dword [ebp + 0xc]
add esp, 0x30
cmp edi, dword [ecx]
jge 0x40fdb2
fld qword [0x484760]
mov edx, ecx
mov eax, dword [edx + 0xc]
fst qword [eax + esi]
add eax, esi
fstp qword [eax + 8]
fldz
fstp qword [eax + 0x10]
cmp dword [0x493e90], ebx
jle 0x410010
mov ecx, 0x493e90
call fcn.00411550
fld dword [eax]
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
fsub qword [esp + 0x3c]
fabs
fcomp qword [0x4854c8]
fnstsw ax
test ah, 0x41
je 0x40fffd
mov ecx, 0x493e90
call fcn.00411550
fld dword [eax + 4]
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
fsub qword [esp + 0x44]
fabs
fcomp qword [0x4854c8]
fnstsw ax
test ah, 0x41
jne 0x410010
push 0x48eb68
mov ecx, 0x493e90
call fcn.00411810
jmp 0x410010
fstp st(0)
fld qword [esp + 0x3c]
lea eax, [esp + 0xa8]
fstp dword [esp + 0xa8]
push eax
fld qword [esp + 0x48]
fstp dword [esp + 0xb0]
fld qword [ebp + 0x48]
fstp dword [esp + 0xb4]
jmp 0x4103b0
cmp edi, 0xffffffff
je 0x410390
cmp edi, 0xfffffffe
je 0x410390
cmp edi, 0xffffff2e
je 0x410390
cmp edi, 0xffffff9c
jne 0x410107
fstp st(2)
fstp st(2)
fstp st(1)
fstp st(0)
fstp st(0)
cmp ebx, edi
je 0x4100da
mov ecx, 0x493e90
cmp ebx, 0xffffff9a
jne 0x41009d
call fcn.00411550
mov ecx, dword [0x48eb68]
mov dword [eax], ecx
mov edx, dword [0x48eb6c]
mov dword [eax + 4], edx
mov ecx, dword [0x48eb70]
mov dword [eax + 8], ecx
jmp 0x4100a7
push 0x48eb68
call fcn.00411810
fld qword [esp + 0x3c]
lea edx, [esp + 0x9c]
fstp dword [esp + 0x9c]
push edx
fld qword [esp + 0x48]
mov ecx, 0x493e90
fstp dword [esp + 0xa4]
fld qword [esp + 0x58]
fstp dword [esp + 0xa8]
call fcn.00411810
fld qword [esp + 0x3c]
lea eax, [esp + 0xb4]
fstp dword [esp + 0xb4]
push eax
fld qword [esp + 0x48]
fstp dword [esp + 0xbc]
fld qword [ebp + 0x48]
fstp dword [esp + 0xc0]
jmp 0x4103b0
cmp edi, 0xffffff9b
jne 0x41013b
fstp st(4)
fucompp
fnstsw ax
test ah, 0x44
jp 0x41012d
fucompp
fnstsw ax
test ah, 0x44
jp 0x410131
cmp ebx, 0xffffff99
je 0x410131
or edi, 0xffffffff
jmp 0x4103ba
fstp st(0)
fstp st(0)
push 0x48eb68
jmp 0x4103b0
cmp edi, 0xffffff9a
jne 0x41036e
cmp ebx, 0xffffff97
jne 0x410291
mov ebx, dword [esp + 0x28]
fstp st(2)
mov ecx, dword [ebp + 8]
fstp st(2)
fstp st(1)
add ebx, 0xfffffffe
fstp st(0)
push ebx
fstp st(0)
call fcn.00411580
mov ecx, dword [ebp + 8]
mov edi, eax
push ebx
add edi, 0x10
call fcn.00411580
fld qword [edi]
fld qword [eax + 8]
mov ecx, dword [esp + 0x28]
fstp qword [esp + 0xcc]
add eax, 8
fstp qword [esp + 0xd4]
fld qword [esp + 0x94]
fstp qword [esp + 0xfc]
fld qword [esp + 0x5c]
fstp qword [esp + 0x104]
fld qword [esp + 0x3c]
fst qword [esp + 0xec]
fld qword [esp + 0x44]
fst qword [esp + 0xf4]
fldz
fst qword [esp + 0x2c]
fstp qword [esp + 0x34]
fld qword [0x484750]
add ecx, 1
js 0x4101ed
cmp ecx, dword [esi + 0x14]
jge 0x4101ed
mov edi, dword [esi + 0x10]
mov eax, ecx
cdq
idiv edi
mov edi, dword [esi]
mov eax, dword [edi + eax*4]
lea edx, [edx + edx*2]
lea ebx, [eax + edx*8]
jmp 0x4101ef
xor ebx, ebx
test ecx, ecx
jl 0x41020d
cmp ecx, dword [esi + 0x14]
jge 0x41020d
mov edi, dword [esi + 0x10]
mov eax, ecx
cdq
idiv edi
mov edi, dword [esi]
mov eax, dword [edi + eax*4]
lea edx, [edx + edx*2]
lea eax, [eax + edx*8]
jmp 0x41020f
xor eax, eax
fld qword [ebx + 0x10]
fld qword [eax + 8]
fst qword [esp + 0x2c]
fxch st(1)
fst qword [esp + 0x34]
fxch st(1)
fsub st(4)
fxch st(1)
fsub st(3)
fmul st(0), st(0)
fld st(1)
fmulp st(2)
faddp st(1)
fcomp st(1)
fnstsw ax
test ah, 0x41
jnp 0x4101ce
fstp st(2)
sub esp, 8
fstp st(0)
lea ecx, [esp + 0x34]
fstp st(0)
lea edx, [esp + 0xf4]
fld qword [0x493e50]
lea eax, [esp + 0x104]
fstp qword [esp]
push 0x493e90
fld qword [ebp + 0x48]
sub esp, 0x10
fstp qword [esp + 8]
fld qword [esp + 0x100]
fstp qword [esp]
push ecx
push edx
push eax
lea ecx, [esp + 0xf4]
push ecx
call fcn.00415300
mov edi, dword [esp + 0x50]
add esp, 0x2c
jmp 0x410344
cmp ebx, 0xffffff99
je 0x41032b
cmp ebx, 0xfffffed4
je 0x41032b
fld qword [0x493e50]
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax]
sub esp, 8
fstp qword [esp]
push 0x493e90
lea edx, [esp + 0x74]
fxch st(4)
push edx
mov edx, dword [ebp + 0x10]
mov eax, dword [edx]
push ecx
push eax
sub esp, 0x28
fstp qword [esp + 0x20]
cmp ebx, 0xffffff9b
fxch st(3)
setne cl
fstp qword [esp + 0x18]
movzx edx, cl
fxch st(2)
fstp qword [esp + 0x10]
fstp qword [esp + 8]
fstp qword [esp]
push edx
fld qword [0x493e30]
sub esp, 0x18
fld qword [0x4854e0]
fmul st(1)
fstp qword [esp + 0x10]
fld qword [0x493db8]
fstp qword [esp + 8]
fstp qword [esp]
call fcn.00412980
fmul qword [0x485510]
add esp, 8
fstp qword [esp]
call fcn.004164b0
add esp, 0x54
jmp 0x410344
fstp st(2)
push 0x48eb68
fstp st(2)
mov ecx, 0x493e90
fstp st(1)
fstp st(0)
fstp st(0)
call fcn.00411810
fld qword [esp + 0x3c]
lea eax, [esp + 0xc0]
fstp dword [esp + 0xc0]
push eax
fld qword [esp + 0x48]
fstp dword [esp + 0xc8]
fld qword [ebp + 0x48]
fstp dword [esp + 0xcc]
jmp 0x4103b0
fstp st(2)
fstp st(2)
fstp st(1)
fstp st(0)
fstp st(0)
cmp edi, 0xffffff99
jne 0x410384
push 0x48eb68
jmp 0x4103b0
cmp edi, 0xffffff97
je 0x4103ba
push 0x48eb68
jmp 0x4103b0
fstp st(2)
lea ecx, [esp + 0x7c]
fstp st(2)
push ecx
fxch st(1)
fstp dword [esp + 0x80]
fstp dword [esp + 0x84]
fstp dword [esp + 0x88]
mov ecx, 0x493e90
call fcn.00411810
fld qword [esp + 0x3c]
mov eax, dword [esp + 0x28]
inc eax
fst qword [esp + 0x94]
cmp eax, dword [esp + 0x50]
fld qword [esp + 0x44]
fst qword [esp + 0x5c]
mov ebx, edi
mov dword [esp + 0x28], eax
jl 0x40fdc3
fstp st(1)
jmp 0x40fd41
mov eax, dword [0x493e90]
test edi, edi
jl 0x40fdb2
cmp esi, eax
jge 0x40fdb2
mov edx, dword [0x493e9c]
fld dword [edi + edx + 8]
lea ecx, [edi + edx]
fstp dword [esp + 0x50]
fld dword [esp + 0x50]
fsubr qword [esp + 0x54]
fabs
fcomp qword [0x4854d8]
fnstsw ax
test ah, 5
jp 0x410434
push 0x48eaf0
jmp 0x410435
push ecx
mov ecx, dword [ebp + 0x50]
call fcn.00411810
inc esi
add edi, 0xc
cmp esi, ebx
jl 0x4103f0
mov ecx, dword [ebp + 0x50]
push 0x48eae4
call fcn.00411810
lea ecx, [esp + 0x10c]
mov dword [0x493e90], 0
mov byte [esp + 0x180], 0
call fcn.00430630
mov eax, dword [esp + 0x74]
mov dword [esp + 0x180], 0xffffffff
test eax, eax
je 0x4104a0
mov ecx, dword [eax - 4]
lea esi, [eax - 4]
push 0x40dfa0
push ecx
push 0x10
push eax
call fcn.00428593
push esi
call sub.MSVCR90.dll_void___cdecl_operator_delete_void__
add esp, 4
xor eax, eax
mov ecx, dword [esp + 0x178]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret