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

Disassembly:
sub esp, 0x40
mov eax, dword [esp + 0x48]
cmp eax, 1
mov dword [esp + 0x18], ecx
jle 0x410125
push ebx
push ebp
push esi
dec eax
push edi
mov edi, dword [esp + 0x54]
mov dword [esp + 0x24], eax
cmp byte [edi + 0xa1], 3
mov ebx, dword [esp + 0x5c]
lea esi, [edi + ebx]
ja 0x41010f
mov eax, dword [edi + 0x94]
mov ecx, dword [eax + ebx]
add eax, ebx
mov dword [esi], ecx
mov edx, dword [eax + 4]
mov dword [esi + 4], edx
mov ecx, dword [eax + 8]
mov dword [esi + 8], ecx
mov edx, dword [eax + 0xc]
mov dword [esi + 0xc], edx
mov ecx, dword [eax + 0x10]
mov dword [esi + 0x10], ecx
mov edx, dword [eax + 0x14]
mov dword [esi + 0x14], edx
mov ecx, dword [eax + 0x18]
mov dword [esi + 0x18], ecx
mov edx, dword [eax + 0x1c]
mov dword [esi + 0x1c], edx
mov ecx, dword [eax + 0x20]
mov dword [esi + 0x20], ecx
mov edx, dword [eax + 0x24]
mov dword [esi + 0x24], edx
mov ecx, dword [eax + 0x28]
mov dword [esi + 0x28], ecx
mov edx, dword [eax + 0x2c]
mov dword [esi + 0x2c], edx
mov ecx, dword [eax + 0x30]
mov dword [esi + 0x30], ecx
mov edx, dword [eax + 0x34]
mov dword [esi + 0x34], edx
mov ecx, dword [eax + 0x38]
mov dword [esi + 0x38], ecx
mov edx, dword [eax + 0x3c]
mov dword [esi + 0x3c], edx
mov eax, dword [edi + 0x90]
push eax
lea ecx, [esp + 0x3c]
push ecx
mov ecx, esi
call fcn.004048b0
fld dword [esp + 0x38]
fadd dword [esi + 0x30]
sub esp, 0xc
mov ecx, esi
fstp dword [esi + 0x30]
fld dword [esi + 0x34]
fadd dword [esp + 0x48]
fstp dword [esi + 0x34]
fld dword [esi + 0x38]
fadd dword [esp + 0x4c]
fstp dword [esi + 0x38]
fld dword [edi + 0x7c]
fstp dword [esp + 8]
fld dword [edi + 0x78]
fstp dword [esp + 4]
fld dword [edi + 0x74]
fstp dword [esp]
call fcn.004011e0
cmp byte [edi + 0xa3], 0
je 0x40fd82
lea edx, [edi + 0x80]
push edx
mov ecx, esi
call fcn.0040d9e0
cmp byte [edi + 0xa1], 3
jne 0x41010f
mov eax, dword [edi + 0x98]
mov ecx, dword [eax + 0x14]
mov ebp, dword [eax + 0x18]
mov eax, dword [eax + 0xc]
fld dword [eax]
mov dword [esp + 0x18], ecx
fsub dword [esi + 0x30]
add ebx, ecx
lea ecx, [esp + 0x2c]
fstp dword [esp + 0x44]
fld dword [eax + 4]
fsub dword [esi + 0x34]
fstp dword [esp + 0x48]
fld dword [eax + 8]
lea eax, [esp + 0x44]
fsub dword [esi + 0x38]
push eax
push ecx
mov ecx, esi
fstp dword [esp + 0x54]
call fcn.0040da60
fld dword [esp + 0x30]
fld dword [esp + 0x2c]
fmul st(0), st(0)
fld st(1)
fmulp st(2)
faddp st(1)
fstp dword [esp + 0x58]
fld dword [esp + 0x34]
fmul st(0), st(0)
fld dword [esp + 0x58]
fld st(0)
faddp st(2)
fxch st(1)
fstp dword [esp + 0x10]
call fcn.004118d0
fstp dword [esp + 0x58]
fld dword [esp + 0x58]
fstp dword [esp + 0x58]
fld dword [esp + 0x10]
call fcn.004118d0
fstp dword [esp + 0x54]
fld dword [esp + 0x54]
sub esp, 8
fstp dword [esp + 0x5c]
mov ecx, esi
fld dword [esp + 0x60]
fld1
fld st(0)
fdivrp st(2)
fxch st(1)
fstp dword [esp + 0x28]
fdiv dword [esp + 0x5c]
fstp dword [esp + 0x24]
fld dword [esp + 0x34]
fld dword [esp + 0x28]
fld st(0)
fmulp st(2)
fxch st(1)
fstp dword [esp + 0x28]
fld dword [esp + 0x28]
fstp dword [esp + 4]
fmul dword [esp + 0x38]
fstp dword [esp + 0x28]
fld dword [esp + 0x28]
fstp dword [esp]
call fcn.0040c620
fld dword [esp + 0x1c]
sub esp, 8
fld st(0)
fmul dword [esp + 0x60]
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fstp dword [esp + 4]
fld dword [esp + 0x3c]
fchs
fmulp st(1)
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fstp dword [esp]
call fcn.0040c570
mov edx, dword [esp + 0x18]
mov eax, dword [edx + 0x90]
fld dword [eax]
mov ecx, dword [ebp + 0x90]
fstp dword [esp + 0x20]
fld dword [ecx]
fstp dword [esp + 0x1c]
fld dword [esp + 0x54]
fld dword [esp + 0x1c]
fld st(0)
fld dword [esp + 0x20]
fld st(0)
faddp st(2)
fxch st(1)
fstp dword [esp + 0x58]
fld dword [esp + 0x58]
fcomp st(3)
fnstsw ax
test ah, 0x41
jne 0x4100fe
fld st(0)
fld st(0)
fmulp st(1)
fsubr dword [esp + 0x10]
fstp dword [esp + 0x54]
fld st(1)
fmul st(0), st(0)
fstp dword [esp + 0x58]
fxch st(1)
fadd st(0), st(0)
fstp dword [esp + 0x14]
fld dword [esp + 0x58]
fld st(0)
fld dword [esp + 0x54]
fld st(0)
faddp st(2)
fld dword [esp + 0x14]
fld st(0)
fmulp st(6)
fxch st(2)
fdivrp st(5)
fxch st(4)
fstp dword [esp + 0x54]
fxch st(3)
fsubrp st(1)
fxch st(2)
fmulp st(1)
fdivp st(1)
fstp dword [esp + 0x58]
fld1
fld dword [esp + 0x54]
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x40ff4e
fstp st(0)
fst dword [esp + 0x54]
fld dword [esp + 0x54]
fld dword [0x424bec]
jmp 0x40ff69
fld dword [0x424bec]
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x40ff69
fstp st(1)
fst dword [esp + 0x54]
fld dword [esp + 0x54]
fxch st(1)
fld dword [esp + 0x58]
fcom st(3)
fnstsw ax
test ah, 0x41
jne 0x40ff82
fstp st(1)
fstp st(0)
fxch st(1)
fstp dword [esp + 0x58]
jmp 0x40ff99
fstp st(3)
fcom st(2)
fnstsw ax
fstp st(2)
test ah, 0x41
jne 0x40ff97
fxch st(1)
fstp dword [esp + 0x58]
jmp 0x40ff99
fstp st(1)
test byte [ebp + 0xa1], 1
fmul st(0), st(0)
fld1
fsubrp st(1)
jne 0x40ffe4
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
call fcn.004118d0
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fchs
fstp dword [esp + 0x14]
fld dword [esp + 0x58]
fmul st(0), st(0)
fld1
fsubrp st(1)
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
call fcn.004118d0
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
jmp 0x41001e
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
call fcn.004118d0
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fstp dword [esp + 0x14]
fld dword [esp + 0x58]
fmul st(0), st(0)
fld1
fsubrp st(1)
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
call fcn.004118d0
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
fchs
fstp dword [esp + 0x10]
sub esp, 8
fld dword [esp + 0x5c]
mov ecx, esi
fstp dword [esp + 4]
fld dword [esp + 0x1c]
fstp dword [esp]
call fcn.0040c620
push esi
mov ecx, ebx
call fcn.0040c2a0
fld dword [esp + 0x58]
sub esp, 8
fstp dword [esp + 4]
mov ecx, esi
fld dword [esp + 0x18]
fstp dword [esp]
call fcn.0040c620
fld dword [esp + 0x10]
fld dword [esp + 0x58]
call fcn.0041152a
fstp dword [esp + 0x58]
fld dword [esp + 0x58]
mov edx, dword [esp + 0x18]
fchs
fstp dword [edx + 0x7c]
fld dword [esp + 0x1c]
fld dword [esp + 0x20]
fxch st(1)
fld dword [esi]
fmul st(2)
fadd dword [esi + 0x30]
fstp dword [ebx + 0x30]
fld dword [esi + 4]
fmul st(2)
fadd dword [esi + 0x34]
fstp dword [ebx + 0x34]
fld dword [esi + 8]
fmulp st(2)
fld dword [esi + 0x38]
faddp st(2)
fxch st(1)
fstp dword [ebx + 0x38]
test byte [ebp + 0xa1], 0x10
jne 0x41010d
mov eax, dword [esp + 0x5c]
lea esi, [eax + ebp]
push ebx
mov ecx, esi
call fcn.0040c2a0
fld dword [esi]
fmul st(1)
sub esp, 0xc
mov ecx, esi
fadd dword [esi + 0x30]
fstp dword [esi + 0x30]
fld dword [esi + 4]
fmul st(1)
fadd dword [esi + 0x34]
fstp dword [esi + 0x34]
fmul dword [esi + 8]
fadd dword [esi + 0x38]
fstp dword [esi + 0x38]
fld dword [ebp + 0x7c]
fstp dword [esp + 8]
fld dword [ebp + 0x78]
fstp dword [esp + 4]
fld dword [ebp + 0x74]
fstp dword [esp]
call fcn.004011e0
jmp 0x41010f
push esi
fstp st(2)
mov ecx, ebx
call fcn.0040c2a0
jmp 0x410084
fstp st(0)
mov ecx, dword [esp + 0x28]
add edi, dword [ecx + 0x48]
sub dword [esp + 0x24], 1
jne 0x40fca1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x40
ret 0xc