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

Disassembly:
sub esp, 0x7c
fldz
push ebx
fstp qword [esp + 0x2c]
push ebp
fld qword [0x41dd88]
push esi
mov esi, dword [0x43f084]
fst qword [esp + 0x4c]
fld qword [0x41dd80]
push edi
mov edi, dword [sym.imp.MSVCR90.dll_fprintf]
fstp qword [esp + 0x58]
fld qword [0x41dd78]
push str.strict_graph_n
fst qword [esp + 0x64]
push esi
fxch st(1)
fstp qword [esp + 0x70]
fld qword [0x41dd70]
fstp qword [esp + 0x78]
fld qword [0x41dd68]
fstp qword [esp + 0x80]
fstp qword [esp + 0x88]
call edi
add esp, 8
cmp dword [esp + 0x90], 0
mov dword [esp + 0x18], 0
jle 0x402b88
lea esp, [esp]
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x94]
mov eax, dword [eax + ecx*4]
mov edx, dword [eax + 0x20]
mov ebx, dword [eax + 0x10]
mov eax, dword [eax + 8]
push ecx
dec eax
push str._d__pos_
push esi
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], eax
call edi
add esp, 0xc
xor ebp, ebp
test ebx, ebx
jle 0x402afe
test ebp, ebp
je 0x402ae1
push 0x41d9b0
push esi
call edi
add esp, 8
mov eax, dword [esp + 0x30]
fld qword [eax + ebp*8]
sub esp, 8
fstp qword [esp]
push 0x41d9b4
push esi
call edi
inc ebp
add esp, 0x10
cmp ebp, ebx
jl 0x402ad2
push 0x41d9b8
push esi
call edi
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0x20]
add edx, ecx
push edx
push str._d__pos_
push esi
call edi
add esp, 0x14
xor ebp, ebp
test ebx, ebx
jle 0x402b67
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
imul eax, ebx
lea edx, [ecx + eax*8]
mov dword [esp + 0x20], edx
test ebp, ebp
je 0x402b46
push 0x41d9b0
push esi
call edi
add esp, 8
mov eax, dword [esp + 0x20]
fld qword [eax]
sub esp, 8
fstp qword [esp]
push 0x41d9b4
push esi
call edi
add dword [esp + 0x30], 8
inc ebp
add esp, 0x10
cmp ebp, ebx
jl 0x402b37
push 0x41d9b8
push esi
call edi
mov eax, dword [esp + 0x20]
inc eax
add esp, 8
cmp eax, dword [esp + 0x90]
mov dword [esp + 0x18], eax
jl 0x402aa0
cmp dword [esp + 0x90], 0
mov dword [esp + 0x18], 0
jle 0x402c5d
fld qword [esp + 0x38]
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x18]
mov eax, dword [ecx + edx*4]
mov ecx, dword [eax + 0x24]
mov dword [esp + 0x30], ecx
test ecx, ecx
je 0x402c43
mov ecx, dword [eax + 8]
dec ecx
xor ebp, ebp
cmp ecx, 4
jl 0x402c21
mov edx, dword [esp + 0x30]
lea ebx, [ecx - 4]
shr ebx, 2
add edx, 0x10
inc ebx
lea ebp, [ebx*4]
fcom qword [edx - 0x10]
fnstsw ax
test ah, 0x41
je 0x402bee
fstp st(0)
fld qword [edx - 0x10]
fcom qword [edx - 8]
fnstsw ax
test ah, 0x41
je 0x402bfd
fstp st(0)
fld qword [edx - 8]
fcom qword [edx]
fnstsw ax
test ah, 0x41
je 0x402c0a
fstp st(0)
fld qword [edx]
fcom qword [edx + 8]
fnstsw ax
test ah, 0x41
je 0x402c19
fstp st(0)
fld qword [edx + 8]
add edx, 0x20
sub ebx, 1
jne 0x402bdf
cmp ebp, ecx
jge 0x402c43
mov eax, dword [esp + 0x30]
lea edx, [eax + ebp*8]
sub ecx, ebp
fcom qword [edx]
fnstsw ax
test ah, 0x41
je 0x402c3b
fstp st(0)
fld qword [edx]
add edx, 8
sub ecx, 1
jne 0x402c2e
mov eax, dword [esp + 0x18]
inc eax
cmp eax, dword [esp + 0x90]
mov dword [esp + 0x18], eax
jl 0x402ba2
fstp qword [esp + 0x38]
xor ebx, ebx
cmp dword [esp + 0x90], ebx
mov dword [esp + 0x18], ebx
jle 0x40318e
jmp 0x402c76
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x90]
lea edx, [ebx + ecx]
push edx
push ebx
push str._d_____d__pos_
push esi
call edi
mov eax, dword [esp + 0xa4]
mov eax, dword [eax + ebx*4]
mov ecx, dword [eax + 0x20]
mov ebp, dword [eax + 0x10]
add esp, 0x10
cmp dword [eax + 8], 0
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], 0
jle 0x402e15
lea eax, [ebp*8]
mov dword [esp + 0x20], ecx
sub ecx, eax
mov dword [esp + 0x30], ecx
cmp dword [esp + 0x1c], 0
je 0x402dad
push 0x41d9d0
push esi
mov ebx, 3
call edi
mov eax, dword [esp + 0x24]
add esp, 8
cmp eax, 1
je 0x402cfa
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 8]
dec edx
cmp eax, edx
je 0x402cfa
lea eax, [esp + 0x50]
jmp 0x402d03
lea eax, [esp + 0x68]
mov ebx, 4
mov dword [esp + 0x2c], eax
mov dword [esp + 0x34], ebx
jmp 0x402d10
mov eax, dword [esp + 0x2c]
fld qword [eax]
xor ebx, ebx
fst qword [esp + 0x48]
test ebp, ebp
jle 0x402d82
fld1
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x30]
fsubrp st(1)
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], edx
fstp qword [esp + 0x40]
test ebx, ebx
je 0x402d47
push 0x41d9b0
push esi
call edi
add esp, 8
mov eax, dword [esp + 0x24]
fld qword [eax]
mov ecx, dword [esp + 0x28]
fmul qword [esp + 0x40]
sub esp, 8
fld qword [esp + 0x50]
fmul qword [ecx]
faddp st(1)
fstp qword [esp]
push 0x41d9b4
push esi
call edi
mov eax, 8
add dword [esp + 0x34], eax
add dword [esp + 0x38], eax
inc ebx
add esp, 0x10
cmp ebx, ebp
jl 0x402d38
jmp 0x402d84
fstp st(0)
push 0x41d9d0
push esi
call edi
add dword [esp + 0x34], 8
add esp, 8
sub dword [esp + 0x34], 1
jne 0x402d10
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 8]
dec eax
cmp dword [esp + 0x1c], eax
jne 0x402df0
xor ebx, ebx
test ebp, ebp
jle 0x402df0
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x2c], ecx
jmp 0x402dc0
test ebx, ebx
je 0x402dcf
push 0x41d9b0
push esi
call edi
add esp, 8
mov edx, dword [esp + 0x2c]
fld qword [edx]
sub esp, 8
fstp qword [esp]
push 0x41d9b4
push esi
call edi
add dword [esp + 0x3c], 8
inc ebx
add esp, 0x10
cmp ebx, ebp
jl 0x402dc0
mov ecx, dword [esp + 0x1c]
lea eax, [ebp*8]
add dword [esp + 0x30], eax
add dword [esp + 0x20], eax
mov eax, dword [esp + 0x14]
inc ecx
cmp ecx, dword [eax + 8]
mov dword [esp + 0x1c], ecx
jl 0x402cc4
mov ecx, dword [esp + 0x14]
cmp dword [ecx + 0x24], 0
je 0x40316d
push str.___wgts_
push esi
call edi
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + 8]
dec eax
add esp, 8
xor ebx, ebx
test eax, eax
jle 0x402e77
lea esp, [esp]
test ebx, ebx
je 0x402e4f
push 0x41d9b0
push esi
call edi
add esp, 8
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 0x24]
fld qword [edx + ebx*8]
sub esp, 8
fstp qword [esp]
push 0x41d9b4
push esi
call edi
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 8]
inc ebx
dec ecx
add esp, 0x10
cmp ebx, ecx
jl 0x402e40
fldz
push str.___color_
push esi
fstp qword [esp + 0x48]
call edi
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + 8]
dec eax
add esp, 8
mov dword [esp + 0x24], eax
test eax, eax
jle 0x402f97
mov ecx, dword [esp + 0x24]
lea eax, [ebp*8 + 0x10]
mov dword [esp + 0x30], 0
mov dword [esp + 0x28], 0x10
mov dword [esp + 0x2c], eax
mov dword [esp + 0x34], ecx
nop
fldz
xor ebx, ebx
cmp ebp, 4
mov dword [esp + 0x20], ebx
jl 0x402f2f
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x20]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
add ecx, eax
add eax, edx
lea edx, [ebp - 4]
shr edx, 2
inc edx
lea ebx, [edx*4]
mov dword [esp + 0x20], ebx
fld qword [eax - 0x10]
add eax, 0x20
fsub qword [ecx - 0x10]
add ecx, 0x20
sub edx, 1
fld qword [eax - 0x28]
fsub qword [ecx - 0x28]
fld qword [eax - 0x20]
fsub qword [ecx - 0x20]
fld qword [eax - 0x18]
fsub qword [ecx - 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 0x402ef2
cmp ebx, ebp
jge 0x402f68
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x20]
lea edx, [ecx + ebx]
add edx, ebp
add ecx, ebx
lea edx, [eax + edx*8]
lea ecx, [eax + ecx*8]
mov eax, ebp
sub eax, ebx
add ebx, eax
mov dword [esp + 0x20], ebx
fld qword [ecx]
add ecx, 8
fsub qword [edx]
add edx, 8
sub eax, 1
fmul st(0), st(0)
faddp st(1)
jne 0x402f55
fidiv dword [esp + 0x20]
call sub.MSVCR90.dll__CIsqrt
fadd qword [esp + 0x40]
add dword [esp + 0x30], ebp
lea eax, [ebp*8]
add dword [esp + 0x2c], eax
fstp qword [esp + 0x40]
add dword [esp + 0x28], eax
sub dword [esp + 0x34], 1
jne 0x402ec0
cmp dword [esp + 0x24], 0
mov dword [esp + 0x1c], 0
jle 0x40316d
lea eax, [ebp*8 + 0x10]
mov dword [esp + 0x30], 0
mov dword [esp + 0x28], 0x10
mov dword [esp + 0x2c], eax
fldz
xor ebx, ebx
cmp ebp, 4
mov dword [esp + 0x20], ebx
jl 0x403035
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x20]
mov edx, dword [esp + 0x2c]
lea ecx, [eax + edx]
mov edx, dword [esp + 0x28]
add eax, edx
lea edx, [ebp - 4]
shr edx, 2
inc edx
lea ebx, [edx*4]
mov dword [esp + 0x20], ebx
fld qword [eax - 0x10]
add eax, 0x20
fsub qword [ecx - 0x10]
add ecx, 0x20
sub edx, 1
fld qword [eax - 0x28]
fsub qword [ecx - 0x28]
fld qword [eax - 0x20]
fsub qword [ecx - 0x20]
fld qword [eax - 0x18]
fsub qword [ecx - 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 0x402ff8
cmp ebx, ebp
jge 0x40306e
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x20]
lea edx, [ecx + ebx]
add edx, ebp
add ecx, ebx
lea edx, [eax + edx*8]
lea ecx, [eax + ecx*8]
mov eax, ebp
sub eax, ebx
add ebx, eax
mov dword [esp + 0x20], ebx
fld qword [ecx]
add ecx, 8
fsub qword [edx]
add edx, 8
sub eax, 1
fmul st(0), st(0)
faddp st(1)
jne 0x40305b
fidiv dword [esp + 0x20]
call sub.MSVCR90.dll__CIsqrt
fstp qword [esp + 0x48]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x24]
mov edx, dword [esp + 0x1c]
fld qword [ecx + edx*8]
fdiv qword [esp + 0x38]
fld st(0)
fld qword [0x41dd60]
fmul st(1), st(0)
fxch st(1)
call fcn.0041bbb0
fld1
fsubrp st(2)
mov ebx, eax
fmulp st(1)
call fcn.0041bbb0
cmp dword [esp + 0x1c], 0
mov dword [esp + 0x34], eax
je 0x4030c1
push 0x41d9ec
push esi
call edi
add esp, 8
push 0x41d984
push esi
call edi
add esp, 8
cmp ebx, 0x10
push ebx
jl 0x4030d9
push 0x41d988
jmp 0x4030de
push str.0_1x
push esi
call edi
add esp, 0xc
push 0
push str.0_1x
push esi
call edi
mov eax, dword [esp + 0x40]
add esp, 0xc
cmp eax, 0x10
push eax
jl 0x403102
push 0x41d988
jmp 0x403107
push str.0_1x
push esi
call edi
add esp, 0xc
push 0x55
push 0x41d988
push esi
call edi
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 8]
mov ebx, dword [esp + 0x28]
sub ecx, 2
add esp, 0xc
cmp ebx, ecx
jge 0x403145
fld qword [esp + 0x48]
sub esp, 8
fdiv qword [esp + 0x48]
fstp qword [esp]
push 0x41d8c0
push esi
call edi
add esp, 0x10
mov edx, dword [esp + 0x14]
add dword [esp + 0x30], ebp
lea eax, [ebp*8]
add dword [esp + 0x2c], eax
add dword [esp + 0x28], eax
mov eax, dword [edx + 8]
inc ebx
dec eax
cmp ebx, eax
mov dword [esp + 0x1c], ebx
jl 0x402fc5
push 0x41d9b8
push esi
call edi
mov eax, dword [esp + 0x20]
inc eax
add esp, 8
cmp eax, dword [esp + 0x90]
mov dword [esp + 0x18], eax
jl 0x402c72
push 0x41d9f0
push esi
call edi
add esp, 8
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x7c
ret