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

Disassembly:
push ebx
push esi
push edi
push ebp
sub esp, 0xe8
push 0
push 8
call fcn.005a43c0
pop ecx
pop ecx
push 1
push 0xc
call fcn.005a43c0
pop ecx
pop ecx
push 2
push 0xa
call fcn.005a43c0
pop ecx
pop ecx
push 2
push 0xb
call fcn.005a43c0
mov eax, dword [0x8f5fe0]
pop ecx
pop ecx
push eax
push 1
call fcn.005a43c0
cmp word [0x95cc3e], 0
pop ecx
mov dword [esp + 0x48], 0
pop ecx
jle 0x511800
mov dword [esp + 0x14], 0x6fad2c
mov eax, dword [esp + 0x14]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x40], 0
mov dword [esp + 0x48], 0x7096d0
mov eax, eax
lea eax, [eax]
mov eax, dword [esp + 0x40]
mov al, byte [eax + 0x7096f9]
cmp al, 1
fldz
fldz
fldz
fldz
fldz
je 0x510cd0
cmp al, 2
jne 0x5118d0
cmp al, 1
jne 0x510ce0
fld dword [0x885af4]
jmp 0x510ce6
fld dword [0x5fe94c]
fstp dword [esp + 0x5c]
fld dword [0x5fe958]
fcomp dword [esp + 0x5c]
fnstsw ax
and ah, 0x44
cmp ah, 0x40
je 0x5118e0
mov eax, dword [esp + 0x40]
mov al, byte [eax + 0x7096f8]
cmp al, 1
jne 0x511310
mov eax, dword [esp + 0x40]
fld dword [0x5fe97c]
fmul dword [eax + 0x7096e0]
fld dword [eax + 0x7096d4]
fstp st(6)
mov eax, dword [esp + 0x40]
fadd st(5)
fstp st(2)
fld dword [0x5fe97c]
fmul dword [eax + 0x7096dc]
fld dword [eax + 0x7096d0]
fstp st(2)
fadd st(1)
fstp st(3)
fld st(2)
fcomp st(1)
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x510d62
fld st(2)
fstp st(4)
fld st(0)
jmp 0x510d68
fld st(0)
fstp st(4)
fld st(2)
fstp st(3)
fld st(1)
fcomp st(5)
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x510d82
fld st(1)
fstp dword [esp + 0x54]
fld st(4)
jmp 0x510d8a
fld st(4)
fstp dword [esp + 0x54]
fld st(1)
fstp st(5)
fld dword [0x5fe980]
fsubp st(4)
fld dword [0x5fe980]
faddp st(3)
fld dword [esp + 0x54]
fsub dword [0x5fe980]
fstp dword [esp + 0x54]
fld dword [0x5fe980]
faddp st(5)
fld st(3)
fnstcw word [esp + 0x50]
mov eax, dword [esp + 0x50]
or byte [esp + 0x51], 0xc
fldcw word [esp + 0x50]
fistp dword [esp + 0x78]
mov ebp, dword [esp + 0x78]
mov dword [esp + 0x50], eax
movsx edi, bp
fldcw word [esp + 0x50]
fld dword [0x5fe984]
mov eax, edi
cdq
fmul dword [esp + 0x5c]
and edx, 3
add eax, edx
and eax, 3
sub eax, edx
sub edi, eax
mov eax, dword [esp + 0x40]
fstp dword [esp + 0x64]
fld st(4)
mov dword [esp + 0x3c], eax
fnstcw word [esp + 0x50]
mov eax, dword [esp + 0x50]
or byte [esp + 0x51], 0xc
fldcw word [esp + 0x50]
fistp dword [esp + 0x78]
mov edx, dword [esp + 0x78]
mov dword [esp + 0x50], eax
movsx eax, dx
fldcw word [esp + 0x50]
fld st(2)
fnstcw word [esp + 0x50]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x50]
or byte [esp + 0x51], 0xc
add dword [esp + 0x2c], 4
fldcw word [esp + 0x50]
mov dword [esp + 0x50], eax
fistp dword [esp + 0x78]
fldcw word [esp + 0x50]
mov ecx, dword [esp + 0x78]
movsx eax, cx
mov dword [esp + 0x34], eax
add dword [esp + 0x34], 4
jmp 0x511897
fld dword [esp + 0x54]
fnstcw word [esp + 0x50]
mov eax, dword [esp + 0x50]
or byte [esp + 0x51], 0xc
fldcw word [esp + 0x50]
mov dword [esp + 0x50], eax
mov esi, dword [esp + 0x3c]
fistp dword [esp + 0x78]
mov eax, dword [esp + 0x78]
movsx ebx, ax
fldcw word [esp + 0x50]
mov eax, ebx
cdq
and edx, 3
add eax, edx
and eax, 3
sub eax, edx
sub ebx, eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x20], eax
jmp 0x5112e5
mov eax, dword [esp + 0x10]
xor eax, ebp
sar eax, 2
and eax, 0xf
movsx ebp, ax
fldz
fldz
mov eax, ebp
and eax, 1
fldz
je 0x511810
movsx eax, di
sar ebp, 1
mov dword [esp + 0x78], eax
fild dword [esp + 0x78]
movsx eax, bx
fsub dword [esi + 0x7096d0]
mov dword [esp + 0x78], eax
fstp st(3)
fild dword [esp + 0x78]
fsub dword [esi + 0x7096d4]
fstp st(2)
fld st(1)
fmul dword [esi + 0x7096e0]
fld st(3)
fmul dword [esi + 0x7096dc]
faddp st(1)
fst st(1)
fcomp dword [0x5fe958]
fnstsw ax
test ah, 0x45
jne 0x511820
fcom dword [0x5fe97c]
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x511830
fld st(0)
fmul st(0)
fld st(2)
fmul st(0)
fld st(4)
fmul st(0)
faddp st(1)
fsubrp st(1)
fcomp dword [0x5fe988]
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x511840
movsx eax, di
lea edx, [esp + 0xc0]
push 0
mov dword [esp + 0x7c], eax
fild dword [esp + 0x7c]
movsx eax, bx
push 0
fstp dword [esp + 0xcc]
mov dword [esp + 0x80], eax
lea eax, [esp + 0xa0]
fild dword [esp + 0x80]
push 1
push 0
fstp dword [esp + 0xd8]
fld dword [0x5fe98c]
fadd dword [esi + 0x7096d8]
push 0
push 0
fstp dword [esp + 0xe4]
fld dword [esp + 0xe4]
fsub dword [0x5fe990]
push 1
push edx
push eax
push eax
fstp dword [esp]
fcompp
lea eax, [esp + 0xec]
push eax
fstp st(0)
call fcn.004b0de0
add esp, 0x2c
test al, al
fldz
fldz
fldz
fldz
je 0x511850
fld dword [0x5fe994]
fadd dword [esp + 0xa0]
movsx eax, di
fstp dword [esp + 0xcc]
mov dword [esp + 0x78], eax
fild dword [esp + 0x78]
movsx eax, bx
fsub dword [esi + 0x7096d0]
mov dword [esp + 0x78], eax
fstp st(2)
fild dword [esp + 0x78]
fsub dword [esi + 0x7096d4]
fstp st(1)
fld dword [esp + 0xcc]
fsub dword [esi + 0x7096d8]
fstp st(3)
fld st(0)
fmul dword [esi + 0x7096e0]
fld st(2)
fmul dword [esi + 0x7096dc]
faddp st(1)
fld st(3)
fmul dword [esi + 0x7096e4]
faddp st(1)
fstp st(4)
fld st(3)
fcomp dword [0x5fe958]
fnstsw ax
test ah, 0x45
jne 0x511860
fld st(3)
fcomp dword [0x5fe97c]
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x511870
fld st(0)
fmul st(0)
fld st(2)
fmul st(0)
faddp st(1)
fld st(3)
fmul st(0)
faddp st(1)
fstp st(3)
fld st(3)
fmul st(0)
fsubr st(3)
fstp st(2)
fld st(1)
fcomp dword [0x5fe988]
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x511880
fld st(2)
fsqrt
fstp dword [esp + 0x78]
fld dword [esp + 0x78]
fstp st(3)
fld dword [esp + 0x60]
fmul st(4)
fdiv st(3)
fstp dword [esp + 0x58]
fld st(3)
fmul dword [0x5fe998]
fstp st(4)
fld st(3)
fmul st(0)
fsubr dword [0x5fe94c]
fmul dword [esp + 0x58]
fstp dword [esp + 0x58]
fld st(1)
fsqrt
fstp dword [esp + 0x78]
fld dword [esp + 0x78]
fstp st(4)
fld st(1)
fsqrt
fstp dword [esp + 0x78]
fld dword [esp + 0x78]
fstp st(3)
movsx eax, di
fld st(2)
fmul dword [0x5fe99c]
fld st(4)
fmul dword [0x5fe99c]
mov dword [esp + 0x78], eax
lea ecx, [esp + 0x94]
movsx eax, bx
fmulp st(1)
fsubr dword [0x5fe94c]
lea edx, [esp + 0x84]
push 1
fmul dword [esp + 0x5c]
push ecx
fstp dword [esp + 0x60]
fild dword [esp + 0x80]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0xe0], eax
lea eax, [esp + 0x98]
fstp dword [esp + 0xd8]
fild dword [esp + 0x80]
push eax
lea eax, [esp + 0xdc]
push edx
push eax
fstp dword [esp + 0xe8]
fcompp
fcompp
call fcn.0051c3a0
add esp, 0x14
test al, al
fldz
fldz
je 0x511890
fld dword [esp + 0x8c]
fstp st(1)
fld dword [0x5fe94c]
fdiv st(1)
mov ecx, dword [0x885b48]
mov dword [esp + 0x7c], 0
and ecx, 0x1fff
mov eax, ecx
mov dword [esp + 0x78], ecx
mov dword [esp + 0x78], eax
fstp st(2)
fild qword [esp + 0x78]
push 0xff
fmul qword [0x5fe9a0]
fstp dword [esp + 0x7c]
fld dword [esp + 0x7c]
push eax
fstp dword [esp]
push eax
fld st(1)
fstp dword [esp]
fld dword [esp + 0x64]
fnstcw word [esp + 0x5c]
mov eax, dword [esp + 0x5c]
or byte [esp + 0x5d], 0xc
fldcw word [esp + 0x5c]
mov dword [esp + 0x5c], eax
fistp dword [esp + 0x84]
fldcw word [esp + 0x5c]
fld dword [esp + 0x64]
fmul dword [esi + 0x7096f4]
mov eax, dword [esp + 0x84]
push eax
fnstcw word [esp + 0x60]
mov eax, dword [esp + 0x60]
or byte [esp + 0x61], 0xc
fldcw word [esp + 0x60]
mov dword [esp + 0x60], eax
fistp dword [esp + 0x88]
fldcw word [esp + 0x60]
fld dword [esp + 0x68]
fmul dword [esi + 0x7096f0]
mov eax, dword [esp + 0x88]
push eax
fnstcw word [esp + 0x64]
mov eax, dword [esp + 0x64]
or byte [esp + 0x65], 0xc
fldcw word [esp + 0x64]
mov dword [esp + 0x64], eax
fistp dword [esp + 0x8c]
mov eax, dword [esp + 0x8c]
fldcw word [esp + 0x64]
fld dword [esp + 0x6c]
fmul dword [esi + 0x7096ec]
push eax
fnstcw word [esp + 0x68]
mov eax, dword [esp + 0x68]
or byte [esp + 0x69], 0xc
fldcw word [esp + 0x68]
mov dword [esp + 0x68], eax
movsx eax, bp
fistp dword [esp + 0x90]
fldcw word [esp + 0x68]
fld dword [eax*4 + 0x5fe95c]
mov edx, dword [esp + 0x90]
fstp st(2)
fld dword [esp + 0xac]
push edx
push eax
fmul st(2)
fstp dword [esp]
push eax
fld dword [esp + 0xb4]
fmul st(2)
fstp dword [esp]
push eax
fst dword [esp]
fcompp
push dword [esp + 0xb0]
push dword [esp + 0xb0]
call fcn.0051d110
add esp, 0x30
add ebx, 4
movsx ebp, bx
cmp ebp, dword [esp + 0x20]
jle 0x510eb0
add edi, 4
movsx eax, di
cmp eax, dword [esp + 0x34]
mov dword [esp + 0x10], eax
jle 0x510e60
jmp 0x5117e0
test al, al
je 0x511320
cmp al, 4
je 0x511320
cmp al, 3
jne 0x5118f0
lea eax, [esp + 0x98]
lea ecx, [esp + 0xc0]
push 0
push 0
push 1
push 0
push 0
push 0
push 1
push ecx
push eax
mov eax, dword [esp + 0x64]
fld dword [eax + 0x7096d8]
fsub dword [0x5fe990]
push eax
fstp dword [esp]
fcompp
fcompp
push dword [esp + 0x70]
fstp st(0)
call fcn.004b0de0
add esp, 0x2c
test al, al
fldz
fldz
fldz
je 0x511900
mov eax, dword [esp + 0x40]
fld dword [eax + 0x7096d0]
fstp st(3)
mov eax, dword [esp + 0x40]
fld st(2)
fsub dword [0x5fe9a8]
fstp st(1)
fld dword [eax + 0x7096d4]
fstp st(2)
fld st(1)
fsub dword [0x5fe9a8]
fstp dword [esp + 0x70]
fld st(0)
fnstcw word [esp + 0x50]
mov eax, dword [esp + 0x50]
or byte [esp + 0x51], 0xc
fldcw word [esp + 0x50]
fistp dword [esp + 0x78]
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x50], eax
movsx eax, bx
fldcw word [esp + 0x50]
fld dword [0x5fe9ac]
cdq
mov dword [esp + 0xc], eax
and eax, 1
fmul dword [esp + 0x5c]
xor eax, edx
sub eax, edx
sub dword [esp + 0xc], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x4c]
fstp dword [esp + 0x6c]
fld dword [0x5fe9a8]
fadd st(2)
mov dword [esp + 0x38], eax
fnstcw word [esp + 0x50]
mov eax, dword [esp + 0x50]
or byte [esp + 0x51], 0xc
fldcw word [esp + 0x50]
fistp dword [esp + 0x78]
mov edx, dword [esp + 0x78]
mov dword [esp + 0x50], eax
fldcw word [esp + 0x50]
fld dword [0x5fe9a8]
movsx eax, dx
fadd st(3)
fnstcw word [esp + 0x50]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x50]
or byte [esp + 0x51], 0xc
add dword [esp + 0x24], 2
fldcw word [esp + 0x50]
mov dword [esp + 0x50], eax
fistp dword [esp + 0x78]
fldcw word [esp + 0x50]
mov ecx, dword [esp + 0x78]
movsx eax, cx
mov dword [esp + 0x28], eax
add dword [esp + 0x28], 2
jmp 0x5118c7
fld dword [esp + 0x70]
fnstcw word [esp + 0x50]
mov eax, dword [esp + 0x50]
or byte [esp + 0x51], 0xc
fldcw word [esp + 0x50]
mov dword [esp + 0x50], eax
mov esi, dword [esp + 0x30]
fistp dword [esp + 0x78]
mov eax, dword [esp + 0x78]
mov edi, dword [esp + 0x38]
movsx ebp, ax
fldcw word [esp + 0x50]
mov eax, ebp
cdq
and eax, 1
xor eax, edx
sub eax, edx
sub ebp, eax
cmp dword [esp + 0x18], 0x80000000
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x24]
sbb dword [esp + 0x18], 0xffffffff
sar dword [esp + 0x18], 1
mov dword [esp + 0x1c], eax
jmp 0x5117bb
cmp eax, 0x80000000
sbb eax, 0xffffffff
sar eax, 1
xor eax, dword [esp + 0x18]
and eax, 0xf
movsx ebx, ax
fldz
fldz
mov eax, ebx
and eax, 1
je 0x5118a2
movsx eax, bp
sar ebx, 1
mov dword [esp + 0x78], eax
fild dword [esp + 0x78]
movsx eax, word [esp + 0xc]
fsub dword [esi + 0x7096d4]
mov dword [esp + 0x78], eax
fstp st(2)
fld st(1)
fmul st(0)
fild dword [esp + 0x78]
fsub dword [esi + 0x7096d0]
fstp st(3)
fld st(2)
fmul st(0)
faddp st(1)
fsqrt
fstp dword [esp + 0x78]
fld dword [esp + 0x78]
fstp st(2)
fld st(1)
fcomp dword [0x5fe9a8]
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x5118b0
movsx eax, bp
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x14]
fild dword [esp + 0x78]
fsub dword [eax + 4]
movsx eax, word [esp + 0xc]
fst st(1)
mov dword [esp + 0x78], eax
fmul st(0)
fild dword [esp + 0x78]
fsub dword [edi]
fstp st(2)
fld st(1)
fmul st(0)
faddp st(1)
fsqrt
fstp dword [esp + 0x78]
fld dword [esp + 0x78]
fst st(1)
fcomp dword [0x5fe934]
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x5118b7
fcom dword [0x5fe9b0]
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x5115a3
fld dword [0x5fe94c]
jmp 0x5115b7
fld st(0)
fsub dword [0x5fe9b0]
fmul dword [0x5fe9b4]
fsubr dword [0x5fe94c]
fstp dword [esp + 0x74]
fld st(1)
fmul dword [0x5fe9b8]
movsx eax, word [esp + 0xc]
lea edx, [esp + 0x94]
lea ecx, [esp + 0x84]
fstp st(2)
mov dword [esp + 0x78], eax
fld st(1)
fmul st(0)
fsubr dword [0x5fe94c]
movsx eax, bp
push 1
fmul dword [esp + 0x6c]
push edx
fmul dword [esp + 0x7c]
fstp dword [esp + 0x7c]
fild dword [esp + 0x80]
mov dword [esp + 0x80], eax
lea eax, [esp + 0x98]
push eax
push ecx
fstp dword [esp + 0xec]
fild dword [esp + 0x88]
lea eax, [esp + 0xec]
push eax
fstp dword [esp + 0xf4]
fld dword [0x5fe9bc]
fadd dword [esp + 0xb4]
fstp dword [esp + 0xf8]
fcompp
call fcn.0051c3a0
add esp, 0x14
test al, al
fldz
fldz
je 0x5118c0
fld dword [esp + 0x8c]
fstp st(1)
fld dword [0x5fe94c]
fdiv st(1)
mov edx, dword [0x885b48]
mov dword [esp + 0x7c], 0
and edx, 0x3fff
mov eax, edx
mov dword [esp + 0x78], edx
mov dword [esp + 0x78], eax
fstp st(2)
fild qword [esp + 0x78]
push 0xff
fmul qword [0x5fe9c0]
fstp dword [esp + 0x7c]
fld dword [esp + 0x7c]
push eax
fstp dword [esp]
push eax
fld st(1)
fstp dword [esp]
fld dword [esp + 0x80]
fnstcw word [esp + 0x5c]
mov eax, dword [esp + 0x5c]
or byte [esp + 0x5d], 0xc
fldcw word [esp + 0x5c]
mov dword [esp + 0x5c], eax
fistp dword [esp + 0x84]
fldcw word [esp + 0x5c]
fld dword [esp + 0x80]
fmul dword [esi + 0x7096f4]
mov eax, dword [esp + 0x84]
push eax
fnstcw word [esp + 0x60]
mov eax, dword [esp + 0x60]
or byte [esp + 0x61], 0xc
fldcw word [esp + 0x60]
mov dword [esp + 0x60], eax
fistp dword [esp + 0x88]
fldcw word [esp + 0x60]
fld dword [esp + 0x84]
fmul dword [esi + 0x7096f0]
mov eax, dword [esp + 0x88]
push eax
fnstcw word [esp + 0x64]
mov eax, dword [esp + 0x64]
or byte [esp + 0x65], 0xc
fldcw word [esp + 0x64]
mov dword [esp + 0x64], eax
fistp dword [esp + 0x8c]
mov eax, dword [esp + 0x8c]
fldcw word [esp + 0x64]
fld dword [esp + 0x88]
fmul dword [esi + 0x7096ec]
push eax
fnstcw word [esp + 0x68]
mov eax, dword [esp + 0x68]
or byte [esp + 0x69], 0xc
fldcw word [esp + 0x68]
mov dword [esp + 0x68], eax
movsx eax, bx
fistp dword [esp + 0x90]
fldcw word [esp + 0x68]
fld dword [eax*4 + 0x5fe95c]
mov ecx, dword [esp + 0x90]
fstp st(2)
fld dword [esp + 0xac]
push ecx
push eax
fmul st(2)
fstp dword [esp]
push eax
fld dword [esp + 0xb4]
fmul st(2)
fstp dword [esp]
push eax
fst dword [esp]
fcompp
push dword [esp + 0xb0]
push dword [esp + 0xb0]
call fcn.0051d110
add esp, 0x30
add ebp, 2
movsx eax, bp
cmp eax, dword [esp + 0x1c]
jle 0x5114c5
add dword [esp + 0xc], 2
movsx eax, word [esp + 0xc]
cmp eax, dword [esp + 0x28]
mov dword [esp + 0x18], eax
jle 0x511463
inc dword [esp + 0x44]
mov ax, word [esp + 0x44]
add dword [esp + 0x48], 0x2c
add dword [esp + 0x40], 0x2c
cmp ax, word [0x95cc3e]
jl 0x510cb0
add esp, 0xe8
pop ebp
pop edi
pop esi
pop ebx
ret
fcompp
fstp st(0)
jmp 0x5112e2
fcompp
fstp st(0)
jmp 0x5112e2
fcompp
fstp st(0)
jmp 0x5112e2
fcompp
fstp st(0)
jmp 0x5112e2
fcompp
fcompp
jmp 0x5112e2
fcompp
fcompp
jmp 0x5112e2
fcompp
fcompp
jmp 0x5112e2
fcompp
fcompp
jmp 0x5112e2
fcompp
jmp 0x5112e2
fcompp
fcompp
fstp st(0)
jmp 0x5112f5
fcompp
jmp 0x5117b8
fcompp
jmp 0x5117b8
fcompp
jmp 0x5117b8
fcompp
jmp 0x5117b8
fcompp
fstp st(0)
jmp 0x5117cd
fcompp
fcompp
fstp st(0)
jmp 0x5117e0
fcompp
fcompp
fstp st(0)
jmp 0x5117e0
fcompp
fcompp
fstp st(0)
jmp 0x5117e0
fcompp
fstp st(0)
jmp 0x5117e0