Function at 0x1400550d0
Capabilities:
Log keystrokes via polling

Disassembly:
push rbx
sub rsp, 0x30
mov edx, dword [0x1400cc570]
movaps xmmword [rsp + 0x20], xmm6
movsd xmm6, qword [0x1400702e8]
movsxd rbx, ecx
test edx, edx
je 0x140055106
sub edx, 1
je 0x1400550ff
cmp edx, 1
jne 0x140055120
lea ecx, [rdx + 0x42]
jmp 0x14005510b
mov ecx, 0x10
jmp 0x14005510b
mov ecx, 0x11
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x140055120
movsd xmm3, qword [0x140070308]
jmp 0x140055123
movaps xmm3, xmm6
mov rcx, rbx
add rcx, rcx
cmp byte [0x1400cc551], 0
je 0x140055192
movsd xmm0, qword [0x140070348]
subsd xmm0, qword [0x1400cc590]
movsd xmm2, qword [0x140070450]
addsd xmm3, qword [0x1400cc560]
mov rax, qword [0x1400cc820]
mulsd xmm0, qword [0x140070278]
movaps xmm1, xmm3
subsd xmm2, xmm0
movsd xmm0, qword [rax + rcx*8 + 8]
call fcn.140054c20
movsd xmm1, qword [0x1400cc5a8]
divsd xmm1, qword [0x140070318]
addsd xmm0, xmm1
movaps xmm6, xmmword [rsp + 0x20]
add rsp, 0x30
pop rbx
ret
cmp byte [0x1400cc513], 0
je 0x1400551fb
movsd xmm0, qword [0x140070348]
subsd xmm0, qword [0x1400cc648]
movsd xmm2, qword [0x140070450]
addsd xmm3, qword [0x1400cc658]
mov rax, qword [0x1400cc808]
mulsd xmm0, qword [0x140070278]
movaps xmm1, xmm3
subsd xmm2, xmm0
movsd xmm0, qword [rax + rcx*8 + 8]
call fcn.140054c20
movsd xmm1, qword [0x1400cc630]
divsd xmm1, qword [0x140070318]
addsd xmm0, xmm1
movaps xmm6, xmmword [rsp + 0x20]
add rsp, 0x30
pop rbx
ret
cmp byte [0x1400cc53e], 0
je 0x140055264
movsd xmm0, qword [0x140070348]
subsd xmm0, qword [0x1400cc578]
movsd xmm2, qword [0x140070450]
addsd xmm3, qword [0x1400cc558]
mov rax, qword [0x1400cc760]
mulsd xmm0, qword [0x140070278]
movaps xmm1, xmm3
subsd xmm2, xmm0
movsd xmm0, qword [rax + rcx*8 + 8]
call fcn.140054c20
movsd xmm1, qword [0x1400cc5c0]
divsd xmm1, qword [0x140070318]
addsd xmm0, xmm1
movaps xmm6, xmmword [rsp + 0x20]
add rsp, 0x30
pop rbx
ret
cmp byte [0x1400cc539], 0
je 0x1400552cd
movsd xmm0, qword [0x140070348]
subsd xmm0, qword [0x1400cc638]
movsd xmm2, qword [0x140070450]
addsd xmm3, qword [0x1400cc5b8]
mov rax, qword [0x1400cc858]
mulsd xmm0, qword [0x140070278]
movaps xmm1, xmm3
subsd xmm2, xmm0
movsd xmm0, qword [rax + rcx*8 + 8]
call fcn.140054c20
movsd xmm1, qword [0x1400cc598]
divsd xmm1, qword [0x140070318]
addsd xmm0, xmm1
movaps xmm6, xmmword [rsp + 0x20]
add rsp, 0x30
pop rbx
ret
cmp byte [0x1400cc550], 0
je 0x140055336
movsd xmm0, qword [0x140070348]
subsd xmm0, qword [0x1400cc5b0]
movsd xmm2, qword [0x140070450]
addsd xmm3, qword [0x1400cc5e8]
mov rax, qword [0x1400cc708]
mulsd xmm0, qword [0x140070278]
movaps xmm1, xmm3
subsd xmm2, xmm0
movsd xmm0, qword [rax + rcx*8 + 8]
call fcn.140054c20
movsd xmm1, qword [0x1400cc5c8]
divsd xmm1, qword [0x140070318]
addsd xmm0, xmm1
movaps xmm6, xmmword [rsp + 0x20]
add rsp, 0x30
pop rbx
ret
cmp byte [0x1400cc53d], 0
je 0x14005539f
movsd xmm1, qword [0x140070348]
subsd xmm1, qword [0x1400cc608]
movsd xmm2, qword [0x140070450]
addsd xmm3, qword [0x1400cc600]
mov rax, qword [0x1400cc7d8]
mulsd xmm1, qword [0x140070278]
movsd xmm0, qword [rax + rcx*8 + 8]
subsd xmm2, xmm1
movaps xmm1, xmm3
call fcn.140054c20
movsd xmm1, qword [0x1400cc640]
divsd xmm1, qword [0x140070318]
addsd xmm0, xmm1
movaps xmm6, xmmword [rsp + 0x20]
add rsp, 0x30
pop rbx
ret
cmp byte [0x1400cc53c], 0
je 0x140055408
movsd xmm0, qword [0x140070348]
subsd xmm0, qword [0x1400cc5a0]
movsd xmm2, qword [0x140070450]
addsd xmm3, qword [0x1400cc580]
mov rax, qword [0x1400cc7f0]
mulsd xmm0, qword [0x140070278]
movaps xmm1, xmm3
subsd xmm2, xmm0
movsd xmm0, qword [rax + rcx*8 + 8]
call fcn.140054c20
movsd xmm1, qword [0x1400cc668]
divsd xmm1, qword [0x140070318]
addsd xmm0, xmm1
movaps xmm6, xmmword [rsp + 0x20]
add rsp, 0x30
pop rbx
ret
mov rax, qword [0x1400cc820]
movaps xmm2, xmm6
movaps xmm1, xmm3
movsd xmm0, qword [rax + rcx*8 + 8]
movaps xmm6, xmmword [rsp + 0x20]
add rsp, 0x30
pop rbx
jmp fcn.140054c20