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

Disassembly:
sub esp, 0x68
mov eax, dword [esp + 0x6c]
fld dword [esp + 0x74]
mov eax, dword [eax]
fadd qword [0x4a6ba0]
mov ecx, dword [0x52b3ac]
mov ecx, dword [ecx]
push ebx
push ebp
mov ebp, dword [esp + 0x78]
push esi
mov esi, dword [eax + 4]
imul esi, ebp
add esi, dword [eax + 0x18]
mov eax, dword [ecx + 4]
imul eax, dword [0x52b3b0]
add eax, dword [ecx + 0x18]
mov edx, dword [esi + 0x2c]
push edi
sub esp, 8
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], edx
fstp qword [esp]
call sub.MSVCR90.dll_floor
call fcn.00499690
fld dword [esp + 0x90]
mov dword [esp + 0x64], eax
fadd qword [0x4a6ba0]
fstp qword [esp]
call sub.MSVCR90.dll_floor
add esp, 8
call fcn.00499690
fld dword [esp + 0x90]
fld st(0)
mov dword [esp + 0x4c], eax
fld qword [0x4a6c18]
fmul st(1), st(0)
fxch st(1)
call fcn.00499690
fld qword [0x4a6e10]
mov edi, eax
mov dword [esp + 0x50], eax
test edi, edi
jge 0x41fb97
fld dword [esp + 0x8c]
neg edi
fadd st(1)
mov dword [esp + 0x50], edi
fstp dword [esp + 0x8c]
fld dword [esp + 0x94]
fld st(0)
fmulp st(3)
fxch st(2)
call fcn.00499690
mov dword [esp + 0x40], eax
test eax, eax
jge 0x41fbc7
fadd dword [esp + 0x8c]
neg eax
mov dword [esp + 0x40], eax
fstp dword [esp + 0x8c]
jmp 0x41fbc9
fstp st(0)
test edi, edi
je 0x4205e9
test eax, eax
je 0x4205e9
fldz
fld dword [esp + 0x8c]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 5
jp 0x41fc1d
fld qword [0x4a6e08]
fdivr st(1)
call fcn.00499690
imul eax, eax, 0xfffffe98
mov ecx, 0x168
sub ecx, eax
mov dword [esp + 0x68], ecx
fiadd dword [esp + 0x68]
fstp dword [esp + 0x8c]
fld dword [esp + 0x8c]
fmul qword [0x4a6e00]
call fcn.00499690
cdq
mov ecx, 0xb40
idiv ecx
mov ebx, edx
test ebx, ebx
jne 0x41fc6b
fmul dword [esp + 0x9c]
sub esp, 0x10
fstp dword [esp + 0xa4]
fld dword [esp + 0xa4]
fstp dword [esp + 0xc]
fchs
fmul dword [esp + 0xa8]
fstp dword [esp + 0xa4]
fld dword [esp + 0xa4]
jmp 0x41fca6
cmp ebx, 0x5a0
jne 0x41fcd8
fchs
sub esp, 0x10
fmul dword [esp + 0xac]
fstp dword [esp + 0xa4]
fld dword [esp + 0xa4]
fstp dword [esp + 0xc]
fmul dword [esp + 0xa8]
fstp dword [esp + 0xa4]
fld dword [esp + 0xa4]
mov edi, dword [esp + 0x8c]
fstp dword [esp + 8]
fld dword [esp + 0x98]
mov esi, ebp
fstp dword [esp + 4]
fld dword [esp + 0x94]
fstp dword [esp]
call fcn.00417ca0
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret
mov eax, dword [esi + 8]
mov edx, dword [esi + 4]
mov ecx, dword [esi + 0xc]
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], edx
mov dword [esp + 0x34], ecx
lea eax, [ebx + 0x2d0]
cdq
mov ecx, 0xb40
idiv ecx
mov ecx, dword [0x52b310]
mov eax, 0xb60b60b7
mov ebp, dword [esi]
mov dword [esp + 0x60], ebp
mov edx, dword [ecx + edx*4]
mov dword [esp + 0x88], edx
imul ebx
fild dword [esp + 0x88]
fstp dword [esp + 0x54]
fld dword [esp + 0x54]
fld qword [0x4a6df8]
fmul st(1), st(0)
fxch st(1)
add edx, ebx
sar edx, 0xb
fstp dword [esp + 0x28]
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0xb40
mov edx, ebx
sub edx, eax
mov eax, dword [ecx + edx*4]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x88]
shl eax, 0x10
cdq
fild dword [esp + 0x84]
idiv edi
fstp dword [esp + 0x58]
fmul dword [esp + 0x58]
fstp dword [esp + 0x24]
mov dword [esp + 0x88], eax
fild dword [esp + 0x88]
fld dword [esp + 0x98]
fld st(0)
fdivp st(2)
fxch st(1)
call fcn.00499690
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x84]
shl eax, 0x10
cdq
idiv dword [esp + 0x40]
mov dword [esp + 0x88], eax
fidivr dword [esp + 0x88]
call fcn.00499690
cmp ebx, 0x2d0
mov dword [esp + 0x44], eax
jge 0x41fe5c
mov eax, dword [esp + 0x30]
mov ecx, eax
neg ecx
mov dword [esp + 0x88], ecx
fild dword [esp + 0x88]
mov ecx, dword [esp + 0x34]
mov edx, ecx
neg edx
fstp dword [esp + 0x18]
mov dword [esp + 0x88], edx
fld dword [esp + 0x18]
sub ebp, eax
mov eax, dword [esp + 0x2c]
fst dword [esp + 0x84]
fild dword [esp + 0x88]
dec ebp
mov dword [esp + 0x68], ebp
sub eax, ecx
fstp dword [esp + 0x14]
dec eax
fld dword [esp + 0x14]
fst dword [esp + 0x88]
fild dword [esp + 0x68]
mov dword [esp + 0x68], eax
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fst dword [esp + 0x20]
fstp dword [esp + 0x18]
fstp dword [esp + 0x1c]
fild dword [esp + 0x68]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fst dword [esp + 0x14]
fstp dword [esp + 0x38]
fstp dword [esp + 0x3c]
jmp 0x42001a
cmp ebx, 0x5a0
jge 0x41fee9
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
sub ebp, eax
dec ebp
mov dword [esp + 0x88], ebp
fild dword [esp + 0x88]
mov edx, ecx
neg edx
mov dword [esp + 0x88], edx
mov edx, dword [esp + 0x2c]
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
sub edx, ecx
fst dword [esp + 0x84]
dec edx
fild dword [esp + 0x88]
mov dword [esp + 0x68], edx
neg eax
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fst dword [esp + 0x88]
fxch st(1)
fstp dword [esp + 0x20]
fild dword [esp + 0x68]
mov dword [esp + 0x68], eax
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fst dword [esp + 0x1c]
fild dword [esp + 0x68]
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
jmp 0x42000a
cmp ebx, 0x870
jge 0x41ff82
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x2c]
sub ebp, eax
dec ebp
mov dword [esp + 0x88], ebp
fild dword [esp + 0x88]
sub edx, ecx
dec edx
mov dword [esp + 0x88], edx
fstp dword [esp + 0x18]
neg eax
fld dword [esp + 0x18]
mov dword [esp + 0x68], eax
fst dword [esp + 0x84]
neg ecx
fild dword [esp + 0x88]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fst dword [esp + 0x88]
fild dword [esp + 0x68]
mov dword [esp + 0x68], ecx
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fst dword [esp + 0x20]
fstp dword [esp + 0x18]
fstp dword [esp + 0x1c]
fild dword [esp + 0x68]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fst dword [esp + 0x14]
fstp dword [esp + 0x38]
fstp dword [esp + 0x3c]
jmp 0x42001a
cmp ebx, 0xb40
jge 0x4205e9
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x2c]
mov ecx, eax
neg ecx
mov dword [esp + 0x88], ecx
fild dword [esp + 0x88]
mov ecx, dword [esp + 0x34]
sub edx, ecx
dec edx
fstp dword [esp + 0x18]
mov dword [esp + 0x88], edx
fld dword [esp + 0x18]
neg ecx
fst dword [esp + 0x84]
mov dword [esp + 0x68], ecx
fild dword [esp + 0x88]
sub ebp, eax
dec ebp
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fst dword [esp + 0x88]
fxch st(1)
fstp dword [esp + 0x20]
fild dword [esp + 0x68]
mov dword [esp + 0x68], ebp
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fst dword [esp + 0x1c]
fild dword [esp + 0x68]
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fst dword [esp + 0x18]
fstp dword [esp + 0x3c]
fstp dword [esp + 0x14]
fstp dword [esp + 0x38]
fld dword [esp + 0x84]
sub esp, 8
fmul st(2)
fstp dword [esp + 0x8c]
fld dword [esp + 0x90]
fmul st(1)
fstp dword [esp + 0x90]
fld dword [esp + 0x28]
fmul st(2)
fstp dword [esp + 0x28]
fld dword [esp + 0x24]
fmul st(1)
fstp dword [esp + 0x24]
fld dword [esp + 0x20]
fmulp st(2)
fxch st(1)
fstp dword [esp + 0x20]
fmul dword [esp + 0x1c]
fstp dword [esp + 0x1c]
fld dword [esp + 0x90]
fmul dword [esp + 0x30]
fld dword [esp + 0x8c]
fmul dword [esp + 0x2c]
fsubp st(1)
fmul dword [esp + 0xa4]
fstp dword [esp + 0x70]
fld dword [esp + 0x70]
fadd qword [0x4a6ba0]
fstp qword [esp]
call sub.MSVCR90.dll_floor
call fcn.00499690
fld dword [esp + 0x1c]
fmul dword [esp + 0x30]
mov edi, eax
fld dword [esp + 0x20]
mov dword [esp + 0x6c], edi
fmul dword [esp + 0x2c]
fsubp st(1)
fmul dword [esp + 0xa4]
fstp dword [esp + 0x70]
fld dword [esp + 0x70]
fadd qword [0x4a6ba0]
fstp qword [esp]
call sub.MSVCR90.dll_floor
call fcn.00499690
fld dword [esp + 0x24]
fmul dword [esp + 0x30]
mov ebx, eax
fld dword [esp + 0x28]
mov dword [esp + 0x70], ebx
fmul dword [esp + 0x2c]
fsubp st(1)
fmul dword [esp + 0xa4]
fstp dword [esp + 0x74]
fld dword [esp + 0x74]
fadd qword [0x4a6ba0]
fstp qword [esp]
call sub.MSVCR90.dll_floor
call fcn.00499690
fld dword [esp + 0x40]
fmul dword [esp + 0x9c]
mov ebp, eax
fstp dword [esp + 0x9c]
fld dword [esp + 0x9c]
fmul dword [esp + 0x30]
fld dword [esp + 0x44]
fmul dword [esp + 0x98]
fstp dword [esp + 0x9c]
fld dword [esp + 0x9c]
fmul dword [esp + 0x2c]
fsubp st(1)
fmul dword [esp + 0xa4]
fstp dword [esp + 0x9c]
fld dword [esp + 0x9c]
fadd qword [0x4a6ba0]
fstp qword [esp]
call sub.MSVCR90.dll_floor
add esp, 8
call fcn.00499690
mov dword [esp + 0x3c], eax
mov eax, ebp
sub eax, edi
mov dword [esp + 0x94], eax
je 0x42025c
mov eax, ebp
sub eax, ebx
mov dword [esp + 0x6c], eax
je 0x42025c
fld dword [esp + 0x1c]
fld dword [esp + 0x24]
fld st(0)
fmulp st(2)
fld dword [esp + 0x20]
fld dword [esp + 0x28]
fld st(0)
fmulp st(2)
fxch st(3)
faddp st(1)
fld dword [esp + 0x88]
fmul st(2)
fld dword [esp + 0x84]
fmul st(4)
faddp st(1)
fsubr st(1)
fld qword [0x4a6da0]
fmul st(1), st(0)
fld dword [esp + 0x98]
fld st(0)
fmulp st(3)
fild dword [esp + 0x94]
fdivp st(3)
fxch st(2)
call fcn.00499690
mov edi, eax
mov dword [esp + 0x90], eax
test edi, edi
jge 0x42020a
neg edi
mov dword [esp + 0x90], edi
fld dword [esp + 0x14]
fmulp st(4)
fld dword [esp + 0x18]
fmulp st(5)
fxch st(3)
faddp st(4)
fxch st(3)
fsub st(1)
fmul st(2)
fmul st(3)
fidiv dword [esp + 0x6c]
call fcn.00499690
mov ebx, eax
mov dword [esp + 0x94], eax
test ebx, ebx
jge 0x420241
neg ebx
mov dword [esp + 0x94], ebx
fmulp st(1)
fmulp st(1)
call fcn.00499690
mov ecx, eax
mov dword [esp + 0x84], ecx
mov dword [esp + 0x88], ecx
jmp 0x4202d5
fld dword [esp + 0x88]
xor ebx, ebx
fld dword [esp + 0x24]
xor edi, edi
fld st(0)
mov dword [esp + 0x94], ebx
fmulp st(2)
mov dword [esp + 0x90], edi
fld dword [esp + 0x84]
fld dword [esp + 0x28]
fld st(0)
fmulp st(2)
fxch st(3)
faddp st(1)
fld qword [0x4a6da0]
fmul st(1), st(0)
fld dword [esp + 0x98]
fld st(0)
fmulp st(3)
fxch st(2)
call fcn.00499690
fld dword [esp + 0x14]
fmulp st(3)
mov dword [esp + 0x88], eax
fld dword [esp + 0x18]
fmulp st(4)
fxch st(2)
faddp st(3)
fxch st(2)
fmulp st(1)
fmulp st(1)
call fcn.00499690
mov dword [esp + 0x84], eax
mov ecx, eax
mov eax, dword [0x52be04]
sub eax, dword [esp + 0x4c]
cmp ebp, eax
jge 0x42031b
mov edx, dword [esp + 0x88]
lea esp, [esp]
cmp ebp, dword [esp + 0x64]
jge 0x4202fa
sub edx, edi
jmp 0x4202fc
add edx, ebx
cmp ebp, dword [esp + 0x68]
jge 0x420306
add ecx, ebx
jmp 0x420308
sub ecx, edi
inc ebp
cmp ebp, eax
jl 0x4202f0
mov dword [esp + 0x84], ecx
mov dword [esp + 0x88], edx
mov eax, dword [0x52be08]
sub eax, dword [esp + 0x4c]
cmp dword [esp + 0x3c], eax
jle 0x42032e
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x80]
mov ebx, dword [esp + 0x7c]
push eax
mov eax, ebx
call fcn.00417890
add esp, 4
mov dword [esp + 0x24], eax
test eax, eax
je 0x4205ed
mov ecx, dword [0x52b3b0]
mov eax, dword [0x52b3ac]
push ecx
call fcn.00417890
mov dword [esp + 0x2c], eax
mov eax, dword [ebx + 0x14]
add esp, 4
test eax, eax
jne 0x420383
mov edx, dword [esi + 0x30]
push edx
mov eax, ebx
call fcn.004177d0
add esp, 4
mov dword [esp + 0x38], eax
jmp 0x42038e
mov ebx, eax
mov dword [esp + 0x38], eax
call fcn.00413ac0
cmp ebp, dword [esp + 0x3c]
mov dword [esp + 0x80], ebp
jg 0x4205ed
fild dword [esp + 0x50]
mov eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x30]
shl eax, 0x10
fstp dword [esp + 0x7c]
mov dword [esp + 0x34], eax
fild dword [esp + 0x40]
mov eax, dword [esp + 0x4c]
add ebp, eax
shl ebx, 0x10
fstp dword [esp + 0x40]
add ebp, ebp
fld qword [0x4a6df0]
add ebp, ebp
fld dword [esp + 0x7c]
mov dword [esp + 0x6c], ebx
fld dword [esp + 0x54]
mov dword [esp + 0x50], ebp
fld dword [esp + 0x58]
jmp 0x4203eb
mov ebx, dword [esp + 0x6c]
mov esi, dword [esp + 0x88]
mov eax, dword [esp + 0x5c]
mov edi, dword [esp + 0x84]
mov ecx, dword [0x52be3c]
sar esi, 0x10
mov edx, eax
sub edx, esi
sar edi, 0x10
cmp edx, dword [0x52be18]
mov dword [esp + 0x7c], esi
jle 0x420425
mov esi, eax
sub esi, dword [0x52be18]
mov dword [esp + 0x7c], esi
mov edx, eax
sub edx, edi
cmp edx, ecx
jge 0x420431
mov edi, eax
sub edi, ecx
fild dword [esp + 0x7c]
fdiv dword [esp + 0x98]
fild dword [esp + 0x80]
fdiv dword [esp + 0x9c]
fld st(3)
fmul st(2)
fld st(3)
fmul st(2)
fsubp st(1)
fmul st(6)
fdiv st(5)
call fcn.00499690
fmul st(3)
fld st(2)
sub ebx, eax
fmulp st(2)
faddp st(1)
fmul st(4)
fdiv dword [esp + 0x40]
call fcn.00499690
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x70]
mov ecx, dword [ecx + 0x2c]
mov ecx, dword [ecx + ebp]
mov ebp, dword [esp + 0x44]
sub edx, eax
mov eax, dword [esp + 0x5c]
sub eax, esi
lea eax, [ecx + eax*2]
add eax, dword [esp + 0x28]
mov dword [esp + 0x7c], eax
mov eax, edi
sub eax, esi
inc eax
mov ecx, eax
imul eax, ebp
imul ecx, dword [esp + 0x48]
add eax, edx
add ecx, ebx
cmp edi, esi
mov dword [esp + 0x58], eax
jl 0x42052b
sar eax, 0x10
cmp eax, dword [esp + 0x2c]
mov dword [esp + 0x54], eax
jge 0x4204d5
mov eax, ecx
sar eax, 0x10
cmp eax, dword [esp + 0x60]
jge 0x4204d5
cmp dword [esp + 0x54], 0
jl 0x4204d5
test eax, eax
jge 0x4204ee
mov eax, dword [esp + 0x58]
mov ebp, dword [esp + 0x44]
sub ecx, dword [esp + 0x48]
sub eax, ebp
dec edi
cmp edi, esi
mov dword [esp + 0x58], eax
jge 0x4204b2
jmp 0x42052b
cmp esi, edi
mov ebp, dword [esp + 0x44]
jg 0x42052b
mov eax, edx
sar eax, 0x10
cmp eax, dword [esp + 0x2c]
mov dword [esp + 0x58], eax
jge 0x42051b
mov eax, ebx
sar eax, 0x10
cmp eax, dword [esp + 0x60]
jge 0x42051b
cmp dword [esp + 0x58], 0
jl 0x42051b
test eax, eax
jge 0x42052b
add ebx, dword [esp + 0x48]
sub dword [esp + 0x7c], 2
inc esi
add edx, ebp
cmp esi, edi
jle 0x4204f6
sub edi, esi
inc edi
test edi, edi
jle 0x420579
mov ecx, dword [esp + 0x74]
mov eax, edx
sar eax, 0x10
mov eax, dword [ecx + eax*4]
mov esi, ebx
sar esi, 0x10
add eax, esi
mov esi, dword [esp + 0x24]
movzx ax, byte [eax + esi]
movzx eax, ax
test ax, ax
je 0x420569
mov esi, dword [esp + 0x38]
movzx eax, ax
mov ax, word [esi + eax*2 + 0x5c]
mov esi, dword [esp + 0x7c]
mov word [esi], ax
add ebx, dword [esp + 0x48]
sub dword [esp + 0x7c], 2
add edx, ebp
sub edi, 1
jne 0x420536
mov eax, dword [esp + 0x80]
cmp eax, dword [esp + 0x64]
jge 0x420596
mov ecx, dword [esp + 0x90]
sub dword [esp + 0x88], ecx
jmp 0x4205a4
mov edx, dword [esp + 0x94]
add dword [esp + 0x88], edx
cmp eax, dword [esp + 0x68]
jge 0x4205ba
mov ecx, dword [esp + 0x94]
add dword [esp + 0x84], ecx
jmp 0x4205c8
mov edx, dword [esp + 0x90]
sub dword [esp + 0x84], edx
mov ebp, dword [esp + 0x50]
inc eax
add ebp, 4
cmp eax, dword [esp + 0x3c]
mov dword [esp + 0x80], eax
mov dword [esp + 0x50], ebp
jle 0x4203e7
fstp st(3)
fstp st(0)
fstp st(1)
fstp st(0)
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret