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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x448888
mov eax, dword fs:[0]
push eax
sub esp, 0x78
push ebx
push esi
push edi
mov eax, dword [0x45c020]
xor eax, esp
push eax
lea eax, [esp + 0x88]
mov dword fs:[0], eax
mov edi, ecx
mov ebx, dword [edi + 0x24]
cmp ebx, dword [edi + 0x28]
lea esi, [edi + 0x20]
jbe 0x402a55
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
cmp ebx, dword [esi + 8]
jb 0x402a5d
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
mov ebx, dword [esi + 8]
cmp dword [esi + 4], ebx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], ecx
jbe 0x402a78
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
lea eax, [ebx - 8]
cmp eax, dword [esi + 8]
mov dword [esp + 0x38], ebx
ja 0x402a89
cmp eax, dword [esi + 4]
jae 0x402a8f
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
add ebx, 0xfffffff8
cmp ebx, dword [esi + 8]
jb 0x402a9d
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
mov eax, dword [ebx]
mov ecx, dword [edi + 4]
cmp ecx, 1
mov ebx, dword [ebx + 4]
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], ebx
jne 0x402ac6
fld dword [0x451a0c]
fstp dword [esp + 0x14]
fld dword [0x451a08]
fstp dword [esp + 0x18]
cmp ecx, 3
jne 0x402add
fld dword [0x451a04]
fstp dword [esp + 0x14]
fld dword [0x451a00]
jmp 0x402af2
cmp ecx, 5
jne 0x402af6
fld dword [0x4519fc]
fstp dword [esp + 0x14]
fld dword [0x4519f8]
fstp dword [esp + 0x18]
fldz
sub eax, dword [esp + 0x3c]
fst dword [esp + 0x54]
sub ebx, dword [esp + 0x40]
fstp dword [esp + 0x58]
fld dword [esp + 0x14]
fchs
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
fst dword [esp + 0x5c]
fld dword [esp + 0x18]
fst dword [esp + 0x60]
fxch st(1)
fstp dword [esp + 0x20]
fchs
fstp dword [esp + 0x1c]
fld dword [esp + 0x20]
mov dword [esp + 0x20], eax
fstp dword [esp + 0x64]
fld dword [esp + 0x1c]
fstp dword [esp + 0x68]
fild dword [esp + 0x20]
mov dword [esp + 0x20], ebx
fstp dword [esp + 0x18]
fild dword [esp + 0x20]
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fld dword [esp + 0x18]
fmul st(0), st(0)
fld st(1)
fmulp st(2)
faddp st(1)
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
call sub.MSVCR80.dll__CIsqrt
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
fld dword [esp + 0x14]
fcomp st(1)
fnstsw ax
test ah, 0x41
je 0x402da8
fld dword [esp + 0x18]
xor eax, eax
fdiv st(1)
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
fstp dword [esp + 0x18]
fdivr dword [esp + 0x1c]
fstp dword [esp + 0x14]
mov dword [esp + 0x90], eax
fild dword [esp + 0x38]
lea ebx, [esp + 0x54]
mov dword [esp + 0x1c], 3
fstp dword [esp + 0x24]
fild dword [esp + 0x34]
fstp dword [esp + 0x2c]
jmp 0x402be0
fld dword [esp + 0x18]
lea esi, [esp + 0x44]
fld dword [esp + 0x14]
fld dword [ebx]
fmul st(1)
fld st(2)
fmul dword [ebx + 4]
faddp st(1)
fadd dword [esp + 0x24]
fstp dword [esp + 0x34]
fld dword [ebx]
fmulp st(2)
fmul dword [ebx + 4]
fsubp st(1)
fadd dword [esp + 0x2c]
fstp dword [ebx]
fld dword [esp + 0x34]
fstp dword [ebx + 4]
call fcn.00403e70
add ebx, 8
sub dword [esp + 0x1c], 1
jne 0x402be0
mov edx, dword [edi + 4]
fld dword [esp + 0x20]
mov ecx, dword [ebp + 8]
add edx, edx
mov dword [esp + 0x34], edx
fisub dword [esp + 0x34]
lea eax, [esp + 0x20]
fld dword [esp + 0x18]
push eax
fmul st(1)
xor ebx, ebx
push ecx
mov dword [esp + 0x28], ebx
fiadd dword [esp + 0x44]
fstp dword [esp + 0x2c]
fmul dword [esp + 0x1c]
fiadd dword [esp + 0x48]
fstp dword [esp + 0x30]
call sub.gdiplus.dll_GdipCreateFromHDC
mov ecx, dword [edi + 0xc]
mov edx, dword [edi + 4]
mov esi, dword [esp + 0x20]
movzx eax, cl
mov dword [esp + 0x34], edx
or eax, 0xffffff00
fild dword [esp + 0x34]
movzx edx, ch
shl eax, 8
or eax, edx
shr ecx, 0x10
lea edx, [esp + 0x2c]
push edx
movzx ecx, cl
push ebx
shl eax, 8
push ecx
or eax, ecx
mov dword [esp + 0x38], ebx
fstp dword [esp]
push eax
call sub.gdiplus.dll_GdipCreatePen1
push 4
push esi
mov dword [esp + 0x38], eax
call sub.gdiplus.dll_GdipSetSmoothingMode
fild dword [esp + 0x3c]
mov eax, dword [esp + 0x2c]
sub esp, 0x10
fstp dword [esp + 0x44]
fild dword [esp + 0x50]
fstp dword [esp + 0x48]
fld dword [esp + 0x38]
fstp dword [esp + 0xc]
fld dword [esp + 0x34]
fstp dword [esp + 8]
fld dword [esp + 0x48]
fstp dword [esp + 4]
fld dword [esp + 0x44]
fstp dword [esp]
push eax
push esi
call sub.gdiplus.dll_GdipDrawLine
mov eax, dword [edi + 0xc]
movzx edx, al
lea ecx, [esp + 0x1c]
or edx, 0xffffff00
push ecx
movzx ecx, ah
shl edx, 8
shr eax, 0x10
or edx, ecx
movzx eax, al
shl edx, 8
or edx, eax
push edx
mov dword [esp + 0x24], ebx
call sub.gdiplus.dll_GdipCreateSolidFill
mov eax, dword [esp + 0x1c]
fld dword [esp + 0x54]
mov edi, eax
fstp dword [esp + 0x6c]
fld dword [esp + 0x58]
push ebx
fstp dword [esp + 0x74]
push 3
fld dword [esp + 0x64]
lea ecx, [esp + 0x74]
fstp dword [esp + 0x7c]
push ecx
fld dword [esp + 0x6c]
push eax
fstp dword [esp + 0x88]
push esi
fld dword [esp + 0x78]
fstp dword [esp + 0x90]
fld dword [esp + 0x7c]
fstp dword [esp + 0x94]
call sub.gdiplus.dll_GdipFillPolygon
push edi
call sub.gdiplus.dll_GdipDeleteBrush
mov edx, dword [esp + 0x2c]
push edx
call sub.gdiplus.dll_GdipDeletePen
push esi
call sub.gdiplus.dll_GdipDeleteGraphics
mov eax, dword [esp + 0x48]
test eax, eax
je 0x402daa
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete_void__
add esp, 4
mov ecx, dword [esp + 0x88]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
fstp st(0)
mov ecx, dword [esp + 0x88]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4