Function at 0x10150580
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, dword fs:[0x2c]
sub esp, 0x44
mov ecx, dword [0x10236a90]
push esi
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x102f7704]
cmp eax, dword [ecx + 4]
jle 0x101505dd
push 0x102f7704
call fcn.1017dd04
add esp, 4
cmp dword [0x102f7704], 0xffffffff
jne 0x101505dd
push 0x102f7704
mov dword [0x102f7698], 0
mov dword [0x102f7694], 0x102f15d0
call fcn.1017dcb3
add esp, 4
mov eax, dword [0x102f7694]
mov eax, dword [eax]
test eax, eax
jne 0x101505fb
mov dword [0x102f7698], eax
mov byte [0x1023712c], 0
pop esi
mov esp, ebp
pop ebp
ret 8
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
shr eax, 0xf
and al, 1
movzx eax, al
mov dword [0x102f7698], eax
je 0x101505ed
cmp byte [0x1023712c], 0
jne 0x10150654
mov ecx, dword [ebp + 0xc]
lea eax, [esp + 0x3c]
push eax
call fcn.10079090
mov byte [0x1023712c], 1
movss xmm0, dword [eax]
movss dword [0x102343e4], xmm0
movss xmm0, dword [eax + 4]
movss dword [0x102343e8], xmm0
movss xmm0, dword [eax + 8]
movss dword [0x102343ec], xmm0
mov ecx, dword [0x10236ddc]
lea edx, [esp + 0x30]
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x4c]
call eax
movss xmm0, dword [esp + 0x30]
mulss xmm0, dword [0x1021e88c]
movss dword [esp + 0x24], xmm0
cvtps2pd xmm0, xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sin_precise
cvtsd2ss xmm0, xmm0
lea eax, [esp + 0xc]
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x28]
mov dword [esp + 0x18], eax
movss dword [esp + 0x20], xmm0
movss xmm0, dword [esp + 0x24]
movss dword [esp + 0x24], xmm0
fld dword [esp + 0x24]
fsincos
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
fstp dword [edx]
fstp dword [eax]
movss xmm0, dword [esp + 0x34]
lea eax, [esp + 0x14]
movss xmm1, dword [0x1021e88c]
mulss xmm0, xmm1
mov dword [esp + 0x1c], eax
lea eax, [esp + 8]
mov dword [esp + 0x18], eax
movss dword [esp + 0x24], xmm0
fld dword [esp + 0x24]
fsincos
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
fstp dword [edx]
fstp dword [eax]
movss xmm0, dword [esp + 0x38]
lea eax, [esp + 0x2c]
mulss xmm0, xmm1
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x10]
mov dword [esp + 0x18], eax
movss dword [esp + 0x24], xmm0
fld dword [esp + 0x24]
fsincos
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
fstp dword [edx]
fstp dword [eax]
movss xmm5, dword [esp + 0x14]
xorps xmm3, xmm3
movss xmm6, dword [esp + 0xc]
movaps xmm0, xmm5
movss xmm4, dword [esp + 8]
movss xmm2, dword [esp + 0x28]
xorps xmm2, xmmword [0x1021ef40]
movss xmm7, dword [esp + 0x2c]
mulss xmm7, dword [0x1021ec28]
mov esi, dword [ebp + 8]
mulss xmm0, xmm6
movss dword [esp + 0x24], xmm2
movss xmm2, dword [esp + 0x10]
mulss xmm2, dword [esp + 0x28]
mov eax, dword [esi + 0x24]
movss dword [esp + 0x18], xmm0
movaps xmm0, xmm4
mulss xmm0, xmm6
movss dword [esp + 8], xmm3
movss dword [esp + 0x1c], xmm0
movaps xmm0, xmm4
xorps xmm0, xmmword [0x1021ef40]
mulss xmm0, xmm7
mulss xmm7, xmm5
movss dword [esp + 0x14], xmm0
movaps xmm0, xmm2
movss xmm1, dword [esp + 0x14]
mulss xmm0, xmm5
movss xmm5, dword [esp + 0x18]
mulss xmm2, xmm4
movss xmm4, dword [esp + 0x10]
subss xmm1, xmm0
mulss xmm4, dword [0x1021ec28]
xorps xmm0, xmm0
subss xmm7, xmm2
xorps xmm2, xmm2
movss dword [esp + 0x10], xmm2
movss dword [esp + 0x14], xmm1
xorps xmm1, xmm1
mulss xmm4, xmm6
movss dword [esp + 0xc], xmm1
movss xmm6, dword [esp + 0x1c]
test al, 8
je 0x1015084a
movss xmm2, dword [esp + 0x24]
movaps xmm3, xmm5
addss xmm2, xmm0
movaps xmm1, xmm6
addss xmm3, xmm0
addss xmm1, xmm0
movss xmm0, dword [esp + 0x20]
subss xmm2, xmm0
movss dword [esp + 8], xmm3
movss dword [esp + 0xc], xmm1
movss dword [esp + 0x10], xmm2
jmp 0x10150850
movss xmm0, dword [esp + 0x20]
test al, 0x10
je 0x10150878
subss xmm2, dword [esp + 0x24]
subss xmm3, xmm5
subss xmm1, xmm6
addss xmm2, xmm0
movss dword [esp + 8], xmm3
movss dword [esp + 0xc], xmm1
movss dword [esp + 0x10], xmm2
movss xmm0, dword [esp + 0x14]
test eax, 0x200
je 0x101508a3
subss xmm3, xmm0
subss xmm1, xmm7
subss xmm2, xmm4
movss dword [esp + 8], xmm3
movss dword [esp + 0xc], xmm1
movss dword [esp + 0x10], xmm2
test eax, 0x400
je 0x101508c8
addss xmm3, xmm0
addss xmm1, xmm7
addss xmm2, xmm4
movss dword [esp + 8], xmm3
movss dword [esp + 0xc], xmm1
movss dword [esp + 0x10], xmm2
movaps xmm0, xmm1
mulss xmm0, xmm1
movaps xmm1, xmm3
mulss xmm1, xmm3
addss xmm0, xmm1
movaps xmm1, xmm2
mulss xmm1, xmm2
addss xmm0, xmm1
call fcn.10063f20
xorps xmm4, xmm4
ucomiss xmm0, xmm4
lahf
test ah, 0x44
jp 0x101508fe
xorps xmm3, xmm3
xorps xmm2, xmm2
jmp 0x1015091c
movss xmm4, dword [esp + 8]
movss xmm3, dword [esp + 0xc]
movss xmm2, dword [esp + 0x10]
divss xmm4, xmm0
divss xmm3, xmm0
divss xmm2, xmm0
movss xmm1, dword [0x102f207c]
movaps xmm0, xmm1
mulss xmm0, xmm4
addss xmm0, dword [0x102343e4]
movss dword [0x102343e4], xmm0
movaps xmm0, xmm1
mulss xmm0, xmm3
mulss xmm1, xmm2
addss xmm0, dword [0x102343e8]
addss xmm1, dword [0x102343ec]
movss dword [0x102343e8], xmm0
movss dword [0x102343ec], xmm1
mov dword [esi + 0x24], 0
mov dword [esi + 0x18], 0
mov dword [esi + 0x1c], 0
mov dword [esi + 0x20], 0
pop esi
mov esp, ebp
pop ebp
ret 8