Function at 0x180002840
Capabilities:
Log keystrokes via polling

Disassembly:
sub rsp, 0x1a8
mov rax, qword [0x180078040]
xor rax, rsp
mov qword [rsp + 0xf0], rax
cmp byte [0x18007aa9a], 0
je 0x180002bce
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
lea r8, [rax + 0x9387c78]
test r8, r8
je 0x180002bce
mov rcx, qword [r8]
test rcx, rcx
je 0x180002bce
mov rcx, qword [rcx + 0x1d8]
mov qword [rsp + 0x1c0], rsi
mov rdx, qword [rcx + 0x38]
mov rsi, qword [rdx]
test rsi, rsi
je 0x180002bc6
mov rsi, qword [rsi + 0x30]
test rsi, rsi
je 0x180002bc6
mov qword [rsp + 0x1a0], r14
lea r14, [rax + 0x372bb00]
test r14, r14
je 0x180002bbe
mov rax, qword [0x18007a868]
movaps xmmword [rsp + 0x150], xmm10
movaps xmmword [rsp + 0x140], xmm11
movss xmm0, dword [rax + 0x10]
mulss xmm0, dword [0x18006ab98]
cvtps2pd xmm10, xmm0
movss xmm0, dword [rax + 0x14]
mov rax, qword [rsi + 0x348]
mulss xmm0, dword [0x18006ab98]
movsd xmm1, qword [rax + 0x13b0]
cvtps2pd xmm11, xmm0
movups xmm0, xmmword [rax + 0x13a0]
movsd qword [rsp + 0x30], xmm1
movups xmmword [rsp + 0x20], xmm0
xorps xmm0, xmm0
movups xmmword [rsp + 0x60], xmm0
mov rax, qword [r8]
mov rcx, qword [rax + 0x160]
test rcx, rcx
je 0x180002bac
mov eax, dword [rcx + 0x2b0]
movups xmm1, xmmword [rcx + 0x2a8]
test eax, eax
jle 0x180002bac
mov qword [rsp + 0x1b0], rbx
mov qword [rsp + 0x1b8], rbp
mov ebp, eax
mov qword [rsp + 0x1c8], rdi
movq rdi, xmm1
movaps xmmword [rsp + 0x160], xmm9
movss xmm9, dword [0x18006ac8c]
movaps xmmword [rsp + 0x130], xmm12
movsd xmm12, qword [0x18006ac48]
movaps xmmword [rsp + 0x120], xmm13
movsd xmm13, qword [0x18006ac00]
movaps xmmword [rsp + 0x110], xmm14
movsd xmm14, qword [rsp + 0x30]
movaps xmmword [rsp + 0x100], xmm15
movsd xmm15, qword [rsp + 0x28]
movaps xmmword [rsp + 0x190], xmm6
movaps xmmword [rsp + 0x180], xmm7
movaps xmmword [rsp + 0x170], xmm8
nop dword [rax + rax]
mov rax, qword [rdi]
mov rbx, qword [rax + 0x308]
test rbx, rbx
je 0x180002b40
mov rax, qword [rsi + 0x338]
test rax, rax
je 0x180002a18
cmp rbx, rax
je 0x180002b40
mov rbx, qword [rbx + 0x318]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov r8d, 9
lea rdx, [rsp + 0x70]
add rax, 0x35dadd0
mov rcx, rbx
call rax
movsd xmm7, qword [rsp + 0xd0]
lea r8, [rsp + 0x60]
movsd xmm6, qword [rsp + 0xd8]
lea rdx, [rsp + 0x40]
movsd xmm8, qword [rsp + 0xe0]
mov rcx, rsi
movsd qword [rsp + 0x40], xmm7
movsd qword [rsp + 0x48], xmm6
movsd qword [rsp + 0x50], xmm8
call r14
test al, al
je 0x180002b40
movups xmm1, xmmword [rsp + 0x60]
movaps xmm0, xmm1
unpckhpd xmm1, xmm1
subsd xmm1, xmm11
subsd xmm0, xmm10
mulsd xmm1, xmm1
mulsd xmm0, xmm0
addsd xmm1, xmm0
xorps xmm0, xmm0
cvtsd2ss xmm0, xmm1
sqrtss xmm1, xmm0
comiss xmm1, xmm9
ja 0x180002b40
mov ecx, 2
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x180002b40
subsd xmm7, qword [rsp + 0x20]
subsd xmm6, xmm15
subsd xmm8, xmm14
movaps xmm1, xmm7
movaps xmm0, xmm6
call fcn.18005573c
mulsd xmm6, xmm6
movaps xmm1, xmm8
mulsd xmm1, xmm8
mulsd xmm7, xmm7
mulsd xmm0, xmm12
addsd xmm6, xmm7
divsd xmm0, xmm13
addsd xmm6, xmm1
xorps xmm1, xmm1
movsd qword [rsi + 0x310], xmm0
cvtpd2ps xmm2, xmm6
sqrtss xmm3, xmm2
cvtss2sd xmm1, xmm3
divsd xmm8, xmm1
movaps xmm0, xmm8
call fcn.1800554b8
mulsd xmm0, xmm12
divsd xmm0, xmm13
movsd qword [rsi + 0x308], xmm0
add rdi, 8
sub rbp, 1
jne 0x1800029f0
movaps xmm15, xmmword [rsp + 0x100]
movaps xmm14, xmmword [rsp + 0x110]
movaps xmm13, xmmword [rsp + 0x120]
movaps xmm12, xmmword [rsp + 0x130]
movaps xmm9, xmmword [rsp + 0x160]
movaps xmm8, xmmword [rsp + 0x170]
movaps xmm7, xmmword [rsp + 0x180]
movaps xmm6, xmmword [rsp + 0x190]
mov rdi, qword [rsp + 0x1c8]
mov rbp, qword [rsp + 0x1b8]
mov rbx, qword [rsp + 0x1b0]
movaps xmm10, xmmword [rsp + 0x150]
movaps xmm11, xmmword [rsp + 0x140]
mov r14, qword [rsp + 0x1a0]
mov rsi, qword [rsp + 0x1c0]
mov rcx, qword [rsp + 0xf0]
xor rcx, rsp
call fcn.180035350
add rsp, 0x1a8
ret