Function at 0x180019b10
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
push rbp
push rdi
push r14
mov rbp, rsp
sub rsp, 0x60
movaps xmmword [rsp + 0x50], xmm7
movaps xmmword [rsp + 0x40], xmm8
mov rbx, rcx
mov rcx, qword [0x180187dd8]
mov rax, qword [rcx]
mov rdx, qword [rax + 0xe8]
call rdx
mov r14, rax
test rax, rax
je 0x18001a091
xorps xmm0, xmm0
movups xmmword [rbp - 0x40], xmm0
xorps xmm1, xmm1
movdqu xmmword [rbp - 0x30], xmm1
mov r8d, 0x1c
lea rdx, str.keyboard_type_0_key.forward:
lea rcx, [rbp - 0x40]
call fcn.180001540
nop
lea rcx, [rbp - 0x40]
call fcn.180072de0
mov ecx, eax
call fcn.180072b90
mov edi, eax
movsx esi, byte [rbx + 0xb4]
mov rdx, qword [rbp - 0x28]
cmp rdx, 0xf
jbe 0x180019bcc
inc rdx
mov rcx, qword [rbp - 0x40]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180019bc7
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180019f32
call fcn.18007c3b0
xorps xmm0, xmm0
xorps xmm1, xmm1
lea rcx, [rbp - 0x40]
movups xmmword [rbp - 0x40], xmm0
movdqu xmmword [rbp - 0x30], xmm1
cmp esi, edi
je 0x180019cf7
mov r8d, 0x1c
lea rdx, str.keyboard_type_0_key.forward:
call fcn.180001540
nop
lea rcx, [rbp - 0x40]
call fcn.180072de0
mov ecx, eax
call fcn.180072b90
mov byte [rbx + 0xb4], al
mov rdx, qword [rbp - 0x28]
cmp rdx, 0xf
jbe 0x180019c4b
inc rdx
mov rcx, qword [rbp - 0x40]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180019c46
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180019f32
call fcn.18007c3b0
mov rsi, qword [r14 + 0x290]
mov rax, qword [r14 + 0x2a0]
movss xmm8, dword [rax + 4]
xor eax, eax
mov qword [rsi + 0x18], rax
mov dword [rsi + 0x20], eax
movsx ecx, byte [rbx + 0xb8]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x180019c8c
movss xmm0, dword [rbx + 0xb0]
addss xmm0, dword [rsi + 0x1c]
movss dword [rsi + 0x1c], xmm0
movsx ecx, byte [rbx + 0xb9]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x180019cb0
movss xmm0, dword [rsi + 0x1c]
subss xmm0, dword [rbx + 0xb0]
movss dword [rsi + 0x1c], xmm0
movsx ecx, byte [rbx + 0xb6]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
movss xmm7, dword [0x180107fd0]
test ax, ax
je 0x180019f54
addss xmm8, dword [0x180107f4c]
movsx ecx, byte [rbx + 0xb4]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x180019f39
addss xmm8, xmm7
jmp 0x180019f54
mov r8d, 0x19
lea rdx, str.keyboard_type_0_key.back:
call fcn.180001540
nop
lea rcx, [rbp - 0x40]
call fcn.180072de0
mov ecx, eax
call fcn.180072b90
mov edi, eax
movsx esi, byte [rbx + 0xb5]
mov rdx, qword [rbp - 0x28]
cmp rdx, 0xf
jbe 0x180019d5e
inc rdx
mov rcx, qword [rbp - 0x40]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180019d59
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180019f32
call fcn.18007c3b0
xorps xmm0, xmm0
xorps xmm1, xmm1
mov r8d, 0x19
lea rcx, [rbp - 0x40]
movups xmmword [rbp - 0x40], xmm0
movdqu xmmword [rbp - 0x30], xmm1
cmp esi, edi
je 0x180019da3
lea rdx, str.keyboard_type_0_key.back:
call fcn.180001540
nop
lea rcx, [rbp - 0x40]
call fcn.180072de0
mov ecx, eax
call fcn.180072b90
mov byte [rbx + 0xb5], al
jmp 0x180019c10
lea rdx, str.keyboard_type_0_key.left:
call fcn.180001540
nop
lea rcx, [rbp - 0x40]
call fcn.180072de0
mov ecx, eax
call fcn.180072b90
mov edi, eax
movsx esi, byte [rbx + 0xb7]
mov rdx, qword [rbp - 0x28]
cmp rdx, 0xf
jbe 0x180019e04
inc rdx
mov rcx, qword [rbp - 0x40]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180019dff
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180019f32
call fcn.18007c3b0
xorps xmm0, xmm0
xorps xmm1, xmm1
lea rcx, [rbp - 0x40]
movups xmmword [rbp - 0x40], xmm0
movdqu xmmword [rbp - 0x30], xmm1
cmp esi, edi
je 0x180019e49
mov r8d, 0x19
lea rdx, str.keyboard_type_0_key.left:
call fcn.180001540
nop
lea rcx, [rbp - 0x40]
call fcn.180072de0
mov ecx, eax
call fcn.180072b90
mov byte [rbx + 0xb7], al
jmp 0x180019c10
mov r8d, 0x1a
lea rdx, str.keyboard_type_0_key.right:
call fcn.180001540
nop
lea rcx, [rbp - 0x40]
call fcn.180072de0
mov ecx, eax
call fcn.180072b90
mov edi, eax
movsx esi, byte [rbx + 0xb6]
mov rdx, qword [rbp - 0x28]
cmp rdx, 0xf
jbe 0x180019eb0
inc rdx
mov rcx, qword [rbp - 0x40]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180019eab
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180019f32
call fcn.18007c3b0
cmp esi, edi
je 0x180019c4b
xorps xmm0, xmm0
movups xmmword [rbp - 0x40], xmm0
xorps xmm1, xmm1
movdqu xmmword [rbp - 0x30], xmm1
mov r8d, 0x1a
lea rdx, str.keyboard_type_0_key.right:
lea rcx, [rbp - 0x40]
call fcn.180001540
nop
lea rcx, [rbp - 0x40]
call fcn.180072de0
mov ecx, eax
call fcn.180072b90
mov byte [rbx + 0xb6], al
mov rdx, qword [rbp - 0x28]
cmp rdx, 0xf
jbe 0x180019c4b
inc rdx
mov rcx, qword [rbp - 0x40]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180019c46
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x180019c46
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
movsx ecx, byte [rbx + 0xb5]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x180019f54
addss xmm8, dword [0x180107f1c]
movsx ecx, byte [rbx + 0xb7]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x180019fa3
addss xmm8, dword [0x180107fd8]
movsx ecx, byte [rbx + 0xb4]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x180019f8c
addss xmm8, dword [0x180107f1c]
jmp 0x180019fa3
movsx ecx, byte [rbx + 0xb5]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x180019fa3
addss xmm8, xmm7
movsx ecx, byte [rbx + 0xb5]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x180019fe2
movsx ecx, byte [rbx + 0xb7]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x180019fe2
movsx ecx, byte [rbx + 0xb6]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x180019fe2
addss xmm8, dword [0x180107f5c]
movsx ecx, byte [rbx + 0xb4]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x18001a02a
movsx ecx, byte [rbx + 0xb5]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x18001a02a
movsx ecx, byte [rbx + 0xb7]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x18001a02a
movsx ecx, byte [rbx + 0xb6]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x18001a091
addss xmm8, dword [0x180107f4c]
mulss xmm8, dword [0x180107db0]
movaps xmm0, xmm8
call sub.api_ms_win_crt_math_l1_1_0.dll_cosf
movaps xmm7, xmm0
mulss xmm7, dword [rbx + 0xb0]
movss dword [rbx + 0xbc], xmm7
mov eax, dword [rsi + 0x1c]
mov dword [rbx + 0xc0], eax
movaps xmm0, xmm8
call sub.api_ms_win_crt_math_l1_1_0.dll_sinf
mulss xmm0, dword [rbx + 0xb0]
movss dword [rbx + 0xc4], xmm0
movss dword [rsi + 0x18], xmm7
mov eax, dword [rbx + 0xc0]
mov dword [rsi + 0x1c], eax
mov eax, dword [rbx + 0xc4]
mov dword [rsi + 0x20], eax
lea r11, [rsp + 0x60]
mov rbx, qword [r11 + 0x28]
mov rsi, qword [r11 + 0x30]
movaps xmm7, xmmword [rsp + 0x50]
movaps xmm8, xmmword [r11 - 0x20]
mov rsp, r11
pop r14
pop rdi
pop rbp
ret