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

Disassembly:
sub esp, 0x54
push ebx
push ebp
push edi
mov edi, ecx
movsx edx, word [edi + 0x2e]
movsx ecx, word [edi + 0x32]
sub ecx, edx
movsx edx, word [edi + 0x2c]
mov dword [esp + 0x2c], ecx
movsx ecx, word [edi + 0x30]
fild dword [esp + 0x2c]
sub ecx, edx
test eax, eax
mov dword [esp + 0x2c], ecx
fstp dword [esp + 0x28]
mov ebp, 0x3f800000
fild dword [esp + 0x2c]
fstp dword [esp + 0x2c]
je 0x508897
mov edx, dword [eax]
mov ecx, esi
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov edx, dword [eax + 8]
mov dword [ecx + 8], edx
mov eax, dword [eax + 0xc]
mov dword [ecx + 0xc], eax
jmp 0x5088aa
mov dword [esi + 8], 0xbf800000
mov dword [esi], 0xbf800000
mov dword [esi + 0xc], ebp
mov dword [esi + 4], ebp
fld dword [esi + 4]
fsub dword [esi]
fmul dword [0x66c408]
fld dword [esi + 0xc]
fsub dword [esi + 8]
fmul dword [0x66c408]
fld dword [esi]
fadd dword [esi + 4]
fdiv st(2)
fmul dword [0x66c53c]
fstp dword [esp + 0x10]
fld dword [esi + 8]
fadd dword [esi + 0xc]
fdiv st(1)
fmul dword [0x66c53c]
fstp dword [esp + 0x14]
fld dword [edi + 0x28]
fmul dword [0x66c408]
fptan
fstp st(0)
fxch st(2)
fdiv dword [esp + 0x2c]
fmul dword [esp + 0x28]
fmul st(2)
fdivr dword [0x66c410]
fstp dword [esp + 0x18]
fxch st(1)
fmul st(1)
fdivr dword [0x66c410]
fstp dword [esp + 0x1c]
fstp st(0)
fld dword [edi + 0x20]
fmul dword [edi + 0x10]
fld dword [edi + 0x1c]
fmul dword [edi + 0x14]
fsubp st(1)
fstp dword [esp + 0x50]
mov ecx, dword [esp + 0x50]
fld dword [edi + 0x14]
mov dword [esp + 0x38], ecx
fmul dword [edi + 0x18]
fld dword [edi + 0x20]
fmul dword [edi + 0xc]
fsubp st(1)
fstp dword [esp + 0x54]
mov edx, dword [esp + 0x54]
fld dword [edi + 0x1c]
mov dword [esp + 0x3c], edx
fmul dword [edi + 0xc]
fld dword [edi + 0x10]
fmul dword [edi + 0x18]
fsubp st(1)
fstp dword [esp + 0x58]
mov eax, dword [esp + 0x58]
fld dword [esp + 0x3c]
mov dword [esp + 0x40], eax
fmul dword [edi + 0x14]
fld dword [esp + 0x40]
fmul dword [edi + 0x10]
fsubp st(1)
fstp dword [esp + 0x50]
fld dword [esp + 0x40]
fmul dword [edi + 0xc]
fld dword [esp + 0x38]
fmul dword [edi + 0x14]
fsubp st(1)
fstp dword [esp + 0x54]
fld dword [esp + 0x38]
fmul dword [edi + 0x10]
fld dword [esp + 0x3c]
fmul dword [edi + 0xc]
fsubp st(1)
fstp dword [esp + 0x58]
fld dword [edi + 0xc]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x54]
fchs
mov eax, dword [esp + 0x58]
fstp dword [esp + 0x50]
fld dword [edi + 0x10]
mov dword [esp + 0x44], ecx
fchs
lea ecx, [esp + 0x38]
fstp dword [esp + 0x54]
mov dword [esp + 0x48], edx
fld dword [edi + 0x14]
mov dword [esp + 0x4c], eax
fchs
fstp dword [esp + 0x58]
call fcn.00401990
lea ecx, [esp + 0x44]
fstp st(0)
call fcn.00401990
fstp st(0)
lea ecx, [esp + 0x50]
call fcn.00401990
fstp st(0)
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
lea ecx, [esi + 0x48]
mov dword [ecx], edx
mov edx, dword [esp + 0x40]
mov dword [ecx + 4], eax
mov dword [ecx + 8], edx
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
lea eax, [esi + 0x54]
mov dword [eax], ecx
mov ecx, dword [esp + 0x4c]
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
lea edx, [esi + 0x60]
mov dword [edx], eax
mov eax, dword [esp + 0x58]
mov dword [edx + 4], ecx
mov dword [edx + 8], eax
mov edx, edi
mov eax, dword [edx]
lea ecx, [esi + 0x6c]
mov dword [ecx], eax
mov eax, dword [edx + 4]
mov dword [ecx + 4], eax
mov edx, dword [edx + 8]
lea ebx, [esi + 0x44]
mov dword [ecx + 8], edx
lea eax, [esi + 0x10]
mov ecx, ebx
mov dword [ebx], ebp
call fcn.004c9ae0
fld dword [esp + 0x18]
fchs
lea ecx, [esp + 0x38]
fstp dword [esp + 0x38]
mov dword [esp + 0x3c], 0
fld dword [esp + 0x10]
fadd dword [0x66c410]
fst dword [esp + 0x30]
fstp dword [esp + 0x40]
call fcn.00401990
mov ecx, dword [esp + 0x3c]
fstp st(0)
mov ebp, dword [0x6904e8]
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x38]
mov dword [esp + 0x54], ecx
fld dword [esp + 0x54]
fmul dword [ebp + 4]
mov dword [esp + 0x58], edx
fld dword [esp + 0x58]
mov dword [esp + 0x50], eax
fmul dword [ebp + 8]
faddp st(1)
fld dword [esp + 0x50]
lea eax, [esi + 0x78]
fmul dword [ebp]
lea edx, [esp + 0x50]
mov ecx, ebx
faddp st(1)
fstp dword [esp + 0x5c]
call fcn.004ca250
fld dword [0x66c410]
mov eax, dword [esp + 0x18]
fsub dword [esp + 0x10]
lea ecx, [esp + 0x38]
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], 0
fstp dword [esp + 0x40]
call fcn.00401990
mov edx, dword [esp + 0x3c]
fstp st(0)
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x54], edx
fld dword [esp + 0x54]
fmul dword [ebp + 4]
mov dword [esp + 0x58], eax
fld dword [esp + 0x58]
mov dword [esp + 0x50], ecx
fmul dword [ebp + 8]
lea eax, [esi + 0x88]
lea edx, [esp + 0x50]
mov ecx, ebx
faddp st(1)
fld dword [esp + 0x50]
fmul dword [ebp]
faddp st(1)
fstp dword [esp + 0x5c]
call fcn.004ca250
fld dword [esp + 0x1c]
lea ecx, [esp + 0x38]
fchs
mov dword [esp + 0x38], 0
fstp dword [esp + 0x3c]
fld dword [esp + 0x14]
fadd dword [0x66c410]
fst dword [esp + 0x34]
fstp dword [esp + 0x40]
call fcn.00401990
mov edx, dword [esp + 0x3c]
fstp st(0)
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x54], edx
fld dword [esp + 0x54]
fmul dword [ebp + 4]
mov dword [esp + 0x58], eax
fld dword [esp + 0x58]
mov dword [esp + 0x50], ecx
fmul dword [ebp + 8]
lea eax, [esi + 0x98]
lea edx, [esp + 0x50]
mov ecx, ebx
faddp st(1)
fld dword [esp + 0x50]
fmul dword [ebp]
faddp st(1)
fstp dword [esp + 0x5c]
call fcn.004ca250
fld dword [0x66c410]
mov ecx, dword [esp + 0x1c]
fsub dword [esp + 0x14]
mov dword [esp + 0x3c], ecx
lea ecx, [esp + 0x38]
mov dword [esp + 0x38], 0
fstp dword [esp + 0x40]
call fcn.00401990
mov edx, dword [esp + 0x38]
fstp st(0)
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x50], edx
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], ecx
fld dword [esp + 0x54]
lea eax, [esi + 0xa8]
fmul dword [ebp + 4]
lea edx, [esp + 0x50]
fld dword [esp + 0x58]
mov ecx, ebx
fmul dword [ebp + 8]
faddp st(1)
fld dword [esp + 0x50]
fmul dword [ebp]
faddp st(1)
fstp dword [esp + 0x5c]
call fcn.004ca250
fld dword [edi + 0x3c]
lea eax, [esi + 0xb8]
fchs
mov dword [esp + 0x50], 0
fstp dword [esp + 0x5c]
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0x3f800000
call fcn.004ca250
mov edx, dword [edi + 0x40]
mov dword [esp + 0x5c], edx
lea eax, [esi + 0xc8]
lea edx, [esp + 0x50]
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0xbf800000
call fcn.004ca250
fld dword [0x66c410]
fdiv dword [esp + 0x18]
mov eax, dword [edi + 0x3c]
mov dword [esi + 0xd8], eax
mov ecx, dword [edi + 0x40]
mov dword [esi + 0xdc], ecx
lea ebp, [esi + 0xe0]
push ebx
fst dword [esp + 0x24]
fmul dword [edi + 0x40]
fchs
fld dword [0x66c410]
fdiv dword [esp + 0x20]
fst dword [esp + 0x28]
fmul dword [edi + 0x40]
fchs
fld dword [edi + 0x40]
fadd dword [edi + 0x3c]
fmul dword [0x66c408]
fstp dword [esp + 0x10]
fld dword [esp + 0x34]
fmul st(2)
fstp dword [esp + 0x54]
mov edx, dword [esp + 0x54]
fld dword [esp + 0x14]
mov dword [esp + 0x3c], edx
fsub dword [0x66c410]
lea edx, [esp + 0x3c]
fmul st(2)
fstp dword [esp + 0x58]
fld dword [esp + 0x38]
fmul st(1)
fstp dword [esp + 0x5c]
mov eax, dword [esp + 0x5c]
fld dword [esp + 0x18]
mov dword [esp + 0x40], eax
fsub dword [0x66c410]
mov eax, ebp
fmul st(1)
fstp dword [esp + 0x60]
fstp st(0)
fstp st(0)
fld dword [edi + 0x40]
fchs
fstp dword [esp + 0x44]
call fcn.004ca120
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x3c], ecx
fld dword [edi + 0x40]
mov dword [esp + 0x40], edx
fchs
lea eax, [esi + 0xec]
push ebx
fstp dword [esp + 0x48]
lea edx, [esp + 0x40]
call fcn.004ca120
fld dword [edi + 0x40]
mov eax, dword [esp + 0x58]
fchs
mov ecx, dword [esp + 0x64]
fstp dword [esp + 0x48]
mov dword [esp + 0x40], eax
lea eax, [esi + 0xf8]
push ebx
lea edx, [esp + 0x44]
mov dword [esp + 0x48], ecx
call fcn.004ca120
fld dword [edi + 0x40]
mov edx, dword [esp + 0x60]
fchs
mov eax, dword [esp + 0x68]
fstp dword [esp + 0x4c]
mov dword [esp + 0x44], edx
mov dword [esp + 0x48], eax
lea eax, [esi + 0x104]
push ebx
lea edx, [esp + 0x48]
call fcn.004ca120
fld dword [esp + 0x30]
fmul dword [esp + 0x1c]
mov edx, edi
mov eax, dword [edx]
lea ecx, [esi + 0x110]
fmul dword [esp + 0x20]
mov dword [ecx], eax
mov eax, dword [edx + 4]
mov dword [ecx + 4], eax
mov edx, dword [edx + 8]
fchs
fstp dword [esp + 0x60]
mov dword [ecx + 8], edx
fld dword [esp + 0x34]
lea eax, [esi + 0x11c]
fmul dword [esp + 0x1c]
push ebx
lea edx, [esp + 0x64]
fmul dword [esp + 0x28]
fchs
fstp dword [esp + 0x68]
fld dword [esp + 0x20]
fchs
fstp dword [esp + 0x6c]
call fcn.004ca120
fld dword [ebp]
add esp, 0x14
fst dword [esi + 0x12c]
lea ecx, [esi + 0xf0]
fstp dword [esi + 0x128]
mov edx, 4
fld dword [esi + 0xe4]
fst dword [esi + 0x134]
fstp dword [esi + 0x130]
fld dword [esi + 0xe8]
fst dword [esi + 0x13c]
fstp dword [esi + 0x138]
fld dword [esi + 0x128]
fcomp dword [ecx - 4]
fnstsw ax
test ah, 0x41
jne 0x508e55
fld dword [ecx - 4]
jmp 0x508e5b
fld dword [esi + 0x128]
fstp dword [esi + 0x128]
fld dword [esi + 0x130]
fcomp dword [ecx]
fnstsw ax
test ah, 0x41
jne 0x508e74
fld dword [ecx]
jmp 0x508e7a
fld dword [esi + 0x130]
fstp dword [esi + 0x130]
fld dword [esi + 0x138]
fcomp dword [ecx + 4]
fnstsw ax
test ah, 0x41
jne 0x508e95
fld dword [ecx + 4]
jmp 0x508e9b
fld dword [esi + 0x138]
fstp dword [esi + 0x138]
fld dword [esi + 0x12c]
fcomp dword [ecx - 4]
fnstsw ax
test ah, 0x41
jne 0x508eb9
fld dword [esi + 0x12c]
jmp 0x508ebc
fld dword [ecx - 4]
fstp dword [esi + 0x12c]
fld dword [esi + 0x134]
fcomp dword [ecx]
fnstsw ax
test ah, 0x41
jne 0x508ed9
fld dword [esi + 0x134]
jmp 0x508edb
fld dword [ecx]
fstp dword [esi + 0x134]
fld dword [esi + 0x13c]
fcomp dword [ecx + 4]
fnstsw ax
test ah, 0x41
jne 0x508ef9
fld dword [esi + 0x13c]
jmp 0x508efc
fld dword [ecx + 4]
add ecx, 0xc
fstp dword [esi + 0x13c]
dec edx
jne 0x508e40
mov al, byte [esp + 0x64]
test al, al
je 0x5090ab
fld dword [0x66c40c]
fld dword [edi + 0x3c]
fucompp
fnstsw ax
test ah, 0x44
jp 0x508f47
lea edx, [edi + 0x44]
lea eax, [esp + 0x50]
lea ecx, [esi + 0x10]
call fcn.004ca250
fld dword [esp + 0x50]
fld dword [esp + 0x58]
fld dword [esp + 0x5c]
jmp 0x508f60
fld dword [0x66c40c]
mov dword [esp + 0x54], 0
fld dword [0x66c410]
fld dword [edi + 0x3c]
fchs
fld dword [0x66c410]
fdiv st(2)
fstp dword [esp + 0x64]
fmul dword [esp + 0x64]
fchs
fstp dword [esp + 0x24]
fstp st(0)
fld dword [edi + 0x40]
fld st(0)
fld dword [esp + 0x54]
fmul dword [esp + 0x64]
fabs
fld st(3)
fmul dword [esp + 0x64]
fabs
faddp st(1)
fadd qword [0x66c440]
fxch st(2)
fsub dword [esp + 0x24]
fmulp st(2)
fxch st(1)
fdivp st(1)
fst dword [esp + 0xc]
fmulp st(1)
mov eax, dword [esp + 0xc]
mov dword [esp + 0x58], eax
fmul dword [esp + 0x64]
fld dword [esp + 0xc]
fmul dword [esp + 0x54]
fmul dword [esp + 0x64]
fstp dword [esp + 0x54]
fld dword [esp + 0xc]
fmul dword [esp + 0x24]
fchs
fcom dword [0x66c40c]
fnstsw ax
test ah, 0x41
jne 0x509008
fld dword [0x66c40c]
fld dword [edi + 0x3c]
fucompp
fnstsw ax
test ah, 0x44
jp 0x509008
fxch st(1)
fchs
fxch st(1)
fld dword [esp + 0x54]
fchs
fld dword [esp + 0xc]
fchs
fxch st(2)
fchs
fxch st(2)
jmp 0x509010
fld dword [esp + 0x54]
fld dword [esp + 0x58]
lea edx, [esi + 0x144]
fxch st(3)
fchs
mov edi, edx
mov ecx, 0x10
xor eax, eax
rep stosd dword es:[edi], eax
fstp dword [esi + 0x14c]
fchs
fstp dword [esi + 0x15c]
fld dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
fchs
pop edi
fstp dword [esi + 0x164]
mov dword [edx], ecx
fld dword [esp + 0x10]
mov edx, dword [esp + 0x18]
fchs
pop ebp
fstp dword [esi + 0x168]
mov dword [esi + 0x158], edx
fxch st(1)
mov dword [esi + 0x170], 0xbf800000
fchs
mov byte [esi + 0x140], 1
fstp dword [esi + 0x16c]
pop ebx
fstp dword [esi + 0x17c]
fld dword [esp + 0xc]
fmul dword [esp + 0x1c]
fmul dword [0x66c408]
fstp dword [esi + 0x184]
fld dword [esp + 0x10]
fmul dword [esp + 0x20]
fmul dword [0x66c408]
fstp dword [esi + 0x188]
add esp, 0x54
ret
pop edi
pop ebp
mov byte [esi + 0x140], 0
pop ebx
add esp, 0x54
ret