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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x43f76d
mov eax, dword fs:[0]
push eax
sub esp, 0xa8
push ebx
push esi
push edi
mov eax, dword [0x44dd70]
xor eax, esp
push eax
lea eax, [esp + 0xb8]
mov dword fs:[0], eax
mov esi, ecx
xor ecx, ecx
cmp dword [esi + 4], ecx
je 0x40f6f6
lea eax, [ecx + 0xa]
mov ecx, dword [esp + 0xb8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x3c
fld qword [0x443490]
fld qword [ebp + 0x38]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 5
jp 0x40f729
fstp st(0)
mov eax, 1
mov ecx, dword [esp + 0xb8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x3c
fld qword [0x443420]
fld qword [ebp + 0x28]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jnp 0x410135
fld qword [ebp + 0x20]
fcom st(2)
fnstsw ax
test ah, 0x41
jnp 0x410133
fld qword [ebp + 8]
mov ebx, 1
fcom st(3)
fnstsw ax
fldz
test ah, 0x41
jp 0x40f7a0
fstp st(1)
fld qword [ebp + 0x10]
fcom st(4)
fnstsw ax
test ah, 0x41
jp 0x40f796
fstp st(4)
mov eax, ebx
fstp st(3)
fstp st(0)
fstp st(0)
fstp st(0)
mov ecx, dword [esp + 0xb8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x3c
fxch st(1)
mov dword [esi + 0x24], ebx
fst qword [esi + 0x58]
jmp 0x40f7fe
fld qword [ebp + 0x10]
fcom st(5)
fnstsw ax
test ah, 0x41
jp 0x40f7c3
fstp st(0)
mov dword [esi + 0x24], 2
fxch st(1)
fst qword [esi + 0x58]
fxch st(1)
fst qword [esi + 0x50]
fxch st(1)
jmp 0x40f803
fcom st(2)
fnstsw ax
test ah, 0x41
jp 0x40f7f2
fstp st(5)
mov eax, ebx
fstp st(1)
fstp st(1)
fstp st(2)
fstp st(0)
fstp st(0)
mov ecx, dword [esp + 0xb8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x3c
fxch st(2)
mov dword [esi + 0x24], 3
fstp qword [esi + 0x58]
fxch st(1)
fst qword [esi + 0x50]
fadd st(2)
fst qword [esp + 0x64]
fld qword [ebp + 0x30]
fld st(0)
fsub qword [esi + 0x58]
fst qword [esi + 0x40]
fcomp st(6)
fnstsw ax
test ah, 0x41
jp 0x40f843
fstp st(5)
mov eax, ebx
fstp st(4)
fstp st(1)
fstp st(2)
fstp st(0)
fstp st(0)
mov ecx, dword [esp + 0xb8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x3c
mov eax, dword [ebp + 0x40]
fxch st(5)
fst qword [esi + 0x48]
mov dword [esi + 0x34], eax
fxch st(4)
mov dword [esp + 0x48], ecx
fst qword [esi + 0x70]
mov dword [esi + 0x78], ebx
fxch st(3)
fstp qword [esi + 0x60]
fxch st(4)
fstp qword [esi + 0x38]
fld qword [ebp + 0x18]
fst qword [esi + 0x68]
fxch st(2)
fmul qword [0x443858]
fst qword [esp + 0x74]
fstp qword [esp + 0x5c]
fxch st(1)
fsub qword [esi + 0x58]
fcomp st(2)
fnstsw ax
test ah, 0x41
jne 0x40f895
fstp qword [esp + 0x5c]
mov dword [esp + 0x48], ebx
mov dword [esi + 0x78], ecx
jmp 0x40f897
fstp st(0)
fdivrp st(1)
fld1
fsubrp st(1)
call sub.MSVCR90.dll__CIacos
fadd st(0), st(0)
fdivr qword [0x443840]
call fcn.0043cdf0
sub ebx, eax
cmp ebx, 3
mov dword [esp + 0x34], ebx
jge 0x40f8c3
mov ebx, 3
mov dword [esp + 0x34], ebx
fild dword [esp + 0x34]
mov eax, dword [esi + 0x24]
xor edi, edi
mov dword [esp + 0x40], edi
fdivr qword [0x443838]
fstp qword [esp + 0x6c]
fldz
fstp qword [esp + 0x7c]
cmp eax, 1
je 0x40f930
fld qword [0x443428]
fsub qword [esp + 0x5c]
fstp qword [esp + 0x7c]
fld qword [ebp + 0x38]
fdiv qword [esi + 0x58]
fld1
fsubrp st(1)
call sub.MSVCR90.dll__CIacos
fadd st(0), st(0)
fld qword [esp + 0x7c]
fld st(0)
fdivrp st(2)
fxch st(1)
call fcn.0043cdf0
mov edi, eax
inc edi
cmp edi, 3
mov dword [esp + 0x40], edi
jge 0x40f928
mov edi, 3
mov dword [esp + 0x40], edi
fidiv dword [esp + 0x40]
fstp qword [esp + 0x7c]
lea eax, [ebx + ebx*2]
add eax, eax
cmp dword [esp + 0x48], 0
lea ecx, [ebx + ebx + 2]
mov dword [esi], ecx
mov dword [esi + 0xc], eax
je 0x40f94f
add ecx, ebx
mov dword [esi], ecx
lea ecx, [eax + ebx*2]
mov dword [esi + 0xc], ecx
mov eax, dword [esi + 0x24]
sub eax, 1
je 0x40f989
sub eax, 1
je 0x40f975
sub eax, 1
jne 0x40f98b
mov eax, edi
lea edx, [edi + 1]
imul eax, ebx
imul edx, ebx
add dword [esi], edx
add eax, eax
add dword [esi + 0xc], eax
jmp 0x40f98b
lea edx, [edi - 1]
mov ecx, edi
imul edx, ebx
imul ecx, ebx
add dword [esi], ecx
add edx, edx
add dword [esi + 0xc], edx
jmp 0x40f98b
add dword [esi], ebx
mov ecx, dword [esi]
mov eax, dword [esi + 0xc]
lea edx, [eax + ecx - 2]
push eax
push edx
push ecx
mov ecx, esi
mov dword [esi + 0x1c], edx
call fcn.0040dc90
mov dword [esp + 0x58], eax
test eax, eax
je 0x40f9cc
mov ecx, esi
call fcn.0040db40
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0xb8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x3c
fldz
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0x40]
push ecx
sub esp, 0x10
fstp qword [esp + 8]
lea ecx, [esp + 0x84]
fld qword [esp + 0x84]
fstp qword [esp]
push ebx
call fcn.0040d3e0
cmp dword [esp + 0x3c], 0
mov dword [esp + 0xc0], 0
je 0x4100fb
cmp dword [esp + 0x44], 0
je 0x4100fb
fld qword [esp + 0x5c]
lea edx, [esp + 0x4c]
push edx
lea ecx, [esp + 0x54]
push ecx
sub esp, 0x10
fstp qword [esp + 8]
lea eax, [edi + 1]
fld qword [esp + 0x94]
lea ecx, [esp + 0x94]
fstp qword [esp]
push eax
mov dword [esp + 0x74], eax
call fcn.0040d3e0
cmp dword [esp + 0x50], 0
mov byte [esp + 0xc0], 1
je 0x4100e1
cmp dword [esp + 0x4c], 0
je 0x4100e1
fld qword [esi + 0x40]
sub esp, 0x18
fldz
mov ecx, esi
fadd st(1), st(0)
fxch st(1)
fstp qword [esp + 0x10]
fst qword [esp + 8]
fstp qword [esp]
push 0
call fcn.0040da20
fld qword [esi + 0x40]
fadd qword [0x442f18]
mov edi, 1
fstp qword [esp + 0x5c]
test ebx, ebx
jle 0x40faea
mov ebx, dword [esp + 0x3c]
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x34]
sub eax, ebx
mov dword [esp + 0x38], eax
mov dword [esp + 0x54], edx
fld qword [esp + 0x5c]
mov eax, dword [esp + 0x38]
sub esp, 0x18
fstp qword [esp + 0x10]
mov ecx, esi
fld qword [eax + ebx]
fld qword [esp + 0x7c]
fmul st(1), st(0)
fxch st(1)
fstp qword [esp + 8]
fmul qword [ebx]
fstp qword [esp]
push edi
call fcn.0040da20
inc edi
add ebx, 8
sub dword [esp + 0x54], 1
jne 0x40fab4
cmp dword [esp + 0x48], 0
fld qword [esp + 0x74]
je 0x40fb07
call sub.MSVCR90.dll__CItan
fdivr qword [esi + 0x60]
fld qword [esi + 0x68]
fsub qword [esi + 0x58]
faddp st(1)
jmp 0x40fb28
call sub.MSVCR90.dll__CIcos
fld qword [esi + 0x58]
fadd qword [esi + 0x60]
fmulp st(1)
fsub qword [esi + 0x58]
fstp qword [esp + 0x5c]
fld qword [esp + 0x74]
call sub.MSVCR90.dll__CIsin
fdivr qword [esp + 0x5c]
cmp dword [esp + 0x34], 0
fldz
fadd st(1), st(0)
fxch st(1)
fstp qword [esp + 0x5c]
jle 0x40fb89
mov ebx, dword [esp + 0x3c]
fstp st(0)
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x34]
sub eax, ebx
mov dword [esp + 0x38], eax
mov dword [esp + 0x54], ecx
fld qword [esp + 0x5c]
mov edx, dword [esp + 0x38]
sub esp, 0x18
fstp qword [esp + 0x10]
mov ecx, esi
fld qword [ebx + edx]
fld qword [esp + 0x7c]
fmul st(1), st(0)
fxch st(1)
fstp qword [esp + 8]
fmul qword [ebx]
fstp qword [esp]
push edi
call fcn.0040da20
inc edi
add ebx, 8
sub dword [esp + 0x54], 1
jne 0x40fb51
fldz
cmp dword [esp + 0x48], 0
je 0x40fc1a
fld qword [esi + 0x58]
fcomp qword [esi + 0x50]
fnstsw ax
test ah, 5
jp 0x40fba6
fld qword [esi + 0x50]
jmp 0x40fba9
fld qword [esi + 0x58]
cmp dword [esp + 0x34], 0
fst qword [esp + 0x74]
fld qword [esi + 0x68]
fsub qword [esi + 0x58]
fadd st(2)
fstp qword [esp + 0x5c]
jle 0x40fc18
mov ebx, dword [esp + 0x3c]
fstp st(1)
mov eax, dword [esp + 0x44]
sub eax, ebx
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x54], eax
jmp 0x40fbe4
fld qword [esp + 0x74]
fld qword [esp + 0x5c]
mov ecx, dword [esp + 0x38]
sub esp, 0x18
fstp qword [esp + 0x10]
fld qword [ebx + ecx]
mov ecx, esi
fmul st(1)
fstp qword [esp + 8]
fmul qword [ebx]
fstp qword [esp]
push edi
call fcn.0040da20
inc edi
add ebx, 8
sub dword [esp + 0x54], 1
jne 0x40fbe0
fldz
jmp 0x40fc1a
fstp st(0)
mov eax, dword [esi + 0x24]
sub eax, 1
je 0x40fdae
sub eax, 1
je 0x40fcff
sub eax, 1
jne 0x40fe02
cmp dword [esp + 0x40], eax
fld qword [esi + 0x50]
fsub qword [esi + 0x58]
fstp qword [esp + 0x74]
jl 0x40fe02
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x58]
sub eax, ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x50], eax
mov dword [esp + 0x58], edx
cmp dword [esp + 0x34], 0
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
fld qword [ecx + eax]
fmul qword [esi + 0x58]
fadd qword [esp + 0x74]
fst qword [esp + 0x64]
fld qword [esi + 0x58]
fmul qword [eax]
fsubr st(2)
fstp qword [esp + 0x5c]
jle 0x40fce8
mov ebx, dword [esp + 0x3c]
fstp st(1)
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x34]
sub eax, ebx
mov dword [esp + 0x38], eax
mov dword [esp + 0x54], edx
jmp 0x40fcb4
fld qword [esp + 0x64]
fld qword [esp + 0x5c]
mov eax, dword [esp + 0x38]
sub esp, 0x18
fstp qword [esp + 0x10]
mov ecx, esi
fld qword [ebx + eax]
fmul st(1)
fstp qword [esp + 8]
fmul qword [ebx]
fstp qword [esp]
push edi
call fcn.0040da20
inc edi
add ebx, 8
sub dword [esp + 0x54], 1
jne 0x40fcb0
fldz
jmp 0x40fcea
fstp st(0)
add dword [esp + 0x4c], 8
sub dword [esp + 0x58], 1
jne 0x40fc66
jmp 0x40fe02
cmp dword [esp + 0x40], 0
jle 0x40fe02
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x50]
sub eax, ecx
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], ecx
cmp dword [esp + 0x34], 0
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x50]
fld qword [eax + edx]
fmul qword [esi + 0x58]
fst qword [esp + 0x74]
fld qword [esi + 0x58]
fmul qword [eax]
fsubr st(2)
fstp qword [esp + 0x5c]
jle 0x40fd9a
mov ebx, dword [esp + 0x3c]
fstp st(1)
mov eax, dword [esp + 0x44]
sub eax, ebx
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x58], eax
jmp 0x40fd66
fld qword [esp + 0x74]
fld qword [esp + 0x5c]
mov ecx, dword [esp + 0x38]
sub esp, 0x18
fstp qword [esp + 0x10]
fld qword [ebx + ecx]
mov ecx, esi
fmul st(1)
fstp qword [esp + 8]
fmul qword [ebx]
fstp qword [esp]
push edi
call fcn.0040da20
inc edi
add ebx, 8
sub dword [esp + 0x58], 1
jne 0x40fd62
fldz
jmp 0x40fd9c
fstp st(0)
add dword [esp + 0x4c], 8
sub dword [esp + 0x54], 1
jne 0x40fd24
jmp 0x40fe02
cmp dword [esp + 0x34], 0
jle 0x40fe02
mov ebx, dword [esp + 0x3c]
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x34]
sub eax, ebx
mov dword [esp + 0x38], eax
mov dword [esp + 0x58], edx
jmp 0x40fdd0
mov eax, dword [esp + 0x38]
sub esp, 0x18
fstp qword [esp + 0x10]
mov ecx, esi
fld qword [ebx + eax]
fmul qword [esi + 0x50]
fstp qword [esp + 8]
fld qword [ebx]
fmul qword [esi + 0x50]
fstp qword [esp]
push edi
call fcn.0040da20
fldz
inc edi
add ebx, 8
sub dword [esp + 0x58], 1
jne 0x40fdd0
fld st(0)
sub esp, 0x18
fsub qword [esi + 0x58]
mov ecx, esi
mov dword [esp + 0x6c], edi
fstp qword [esp + 0x10]
fst qword [esp + 8]
fstp qword [esp]
push edi
call fcn.0040da20
inc edi
cmp edi, dword [esi]
je 0x40fe3e
push 0x518
push 0x443688
push 0x4436a4
call dword [sym.imp.MSVCR90.dll__wassert]
add esp, 0xc
xor edi, edi
cmp dword [esp + 0x34], edi
mov ebx, 1
mov dword [esp + 0x38], ebx
jle 0x40fe74
nop
mov eax, 1
cmp ebx, dword [esp + 0x34]
je 0x40fe5e
lea eax, [ebx + 1]
push 0
push eax
push ebx
push edi
mov ecx, esi
call fcn.0040da70
mov eax, ebx
inc edi
inc ebx
cmp eax, dword [esp + 0x34]
jl 0x40fe50
xor eax, eax
cmp dword [esp + 0x48], eax
setne al
add eax, 2
test eax, eax
jle 0x40ff3c
mov dword [esp + 0x58], eax
lea esp, [esp]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
add ecx, eax
mov dword [esp + 0x3c], ecx
test eax, eax
jle 0x40ff29
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
sub ecx, eax
mov ebx, 1
mov dword [esp + 0x50], ecx
jmp 0x40fec8
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x3c]
cmp ebx, dword [esp + 0x34]
jne 0x40fed8
mov edx, dword [esp + 0x38]
mov dword [esp + 0x44], edx
jmp 0x40fee0
add eax, ebx
add ecx, eax
mov dword [esp + 0x44], ecx
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x44]
push ecx
mov dword [esp + 0x4c], eax
lea eax, [edx + ebx - 1]
mov edx, dword [esp + 0x3c]
push eax
lea eax, [edx + ebx - 1]
push eax
push edi
mov ecx, esi
call fcn.0040da70
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x3c]
push ecx
lea eax, [edx + ebx - 1]
push eax
mov eax, dword [esp + 0x4c]
push eax
inc edi
push edi
mov ecx, esi
call fcn.0040da70
mov eax, ebx
inc edi
inc ebx
cmp eax, dword [esp + 0x34]
jl 0x40fec0
sub dword [esp + 0x58], 1
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x38], ecx
jne 0x40fe90
mov eax, dword [esi + 0x24]
cmp eax, 1
je 0x41000d
cmp eax, 2
mov eax, dword [esp + 0x40]
jne 0x40ff52
dec eax
test eax, eax
jle 0x41000d
mov dword [esp + 0x58], eax
mov edi, edi
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
add edx, eax
mov dword [esp + 0x3c], edx
test eax, eax
jle 0x40fffa
mov ecx, dword [esp + 0x38]
mov eax, edx
sub ecx, eax
mov ebx, 1
mov dword [esp + 0x50], ecx
jmp 0x40ff98
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x3c]
cmp ebx, dword [esp + 0x34]
jne 0x40ffa8
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x44], ecx
jmp 0x40ffb1
add eax, ebx
lea edx, [eax + ecx]
mov dword [esp + 0x44], edx
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x3c]
push ecx
lea eax, [ebx + eax - 1]
push eax
lea eax, [ebx + edx - 1]
push eax
push edi
mov ecx, esi
call fcn.0040da70
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x3c]
push ecx
lea eax, [ebx + edx - 1]
push eax
mov eax, dword [esp + 0x4c]
push eax
inc edi
push edi
mov ecx, esi
call fcn.0040da70
mov eax, ebx
inc edi
inc ebx
cmp eax, dword [esp + 0x34]
jl 0x40ff90
sub dword [esp + 0x58], 1
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x38], ecx
jne 0x40ff60
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x54]
sub eax, ecx
mov dword [esp + 0x38], eax
test ecx, ecx
jle 0x410055
mov ebx, 1
jmp 0x41002e
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x38]
cmp ebx, ecx
je 0x410034
add eax, ebx
mov edx, dword [esp + 0x54]
push eax
mov eax, dword [esp + 0x3c]
push edx
lea ecx, [ebx + eax - 1]
push ecx
push edi
mov ecx, esi
call fcn.0040da70
mov eax, ebx
inc edi
inc ebx
cmp eax, dword [esp + 0x34]
jl 0x410026
cmp edi, dword [esi + 0xc]
je 0x410072
push 0x552
push 0x4436cc
push 0x4436e8
call dword [sym.imp.MSVCR90.dll__wassert]
add esp, 0xc
fldz
mov ecx, esi
fst dword [esi + 0x28]
fstp dword [esi + 0x2c]
fld1
fstp dword [esi + 0x30]
call fcn.0040d930
mov edx, dword [esp + 0x7c]
push edx
mov byte [esp + 0xc4], 0
call sub.MSVCR90.dll_void___cdecl_operator_delete_void__
mov eax, dword [esp + 0x84]
push eax
call sub.MSVCR90.dll_void___cdecl_operator_delete_void__
mov ecx, dword [esp + 0x74]
push ecx
mov dword [esp + 0xcc], 0xffffffff
call sub.MSVCR90.dll_void___cdecl_operator_delete_void__
mov edx, dword [esp + 0x7c]
push edx
call sub.MSVCR90.dll_void___cdecl_operator_delete_void__
add esp, 0x10
xor eax, eax
mov ecx, dword [esp + 0xb8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x3c
mov ecx, esi
call fcn.0040db40
lea ecx, [esp + 0x7c]
mov byte [esp + 0xc0], 0
call fcn.0040d3b0
jmp 0x410102
mov ecx, esi
call fcn.0040db40
lea ecx, [esp + 0x6c]
mov dword [esp + 0xc0], 0xffffffff
call fcn.0040d3b0
mov eax, 4
mov ecx, dword [esp + 0xb8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x3c
fstp st(0)
mov eax, dword [ebp + 0x40]
fstp st(0)
push eax
sub esp, 0x20
fstp qword [esp + 0x18]
mov ecx, esi
fld qword [ebp + 0x30]
fstp qword [esp + 0x10]
fld qword [ebp + 0x10]
fstp qword [esp + 8]
fld qword [ebp + 8]
fstp qword [esp]
call fcn.0040ef40
mov ecx, dword [esp + 0xb8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x3c