Function at 0x180089e50
Capabilities:
Log keystrokes
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rbp
push rsi
push rdi
push r14
sub rsp, 0x80
movaps xmmword [rsp + 0x70], xmm6
mov rax, qword [0x180314040]
xor rax, rsp
mov qword [rsp + 0x68], rax
mov rbx, qword [0x1803151a0]
mov ebp, edx
mov rdi, rcx
mov dword [rsp + 0x48], 5
lea rdx, [rsp + 0x48]
mov rsi, r8
movups xmm0, xmmword [rbx + 0x3b30]
lea rcx, [rbx + 0x4c28]
movups xmmword [rsp + 0x4c], xmm0
call fcn.180033220
xor r14d, r14d
cmp dword [rbx + 0x4c24], 5
je 0x180089ec7
mov qword [rbx + 0x3b30], r14
mov qword [rbx + 0x3b38], r14
mov rbx, qword [0x1803151a0]
lea rdx, [rsp + 0x48]
mov dword [rsp + 0x48], 0x15
movups xmm0, xmmword [rbx + 0x3c30]
lea rcx, [rbx + 0x4c28]
movups xmmword [rsp + 0x4c], xmm0
call fcn.180033220
cmp dword [rbx + 0x4c24], 0x15
je 0x180089f0a
mov qword [rbx + 0x3c30], r14
mov qword [rbx + 0x3c38], r14
mov rbx, qword [0x1803151a0]
lea rdx, [rsp + 0x48]
mov dword [rsp + 0x48], 0x1a
movups xmm0, xmmword [rbx + 0x3c80]
lea rcx, [rbx + 0x4c28]
movups xmmword [rsp + 0x4c], xmm0
call fcn.180033220
cmp dword [rbx + 0x4c24], 0x1a
je 0x180089f4d
mov qword [rbx + 0x3c80], r14
mov qword [rbx + 0x3c88], r14
mov rbx, qword [0x1803151a0]
lea rdx, [rsp + 0x48]
mov dword [rsp + 0x48], 0x1b
movups xmm0, xmmword [rbx + 0x3c90]
lea rcx, [rbx + 0x4c28]
movups xmmword [rsp + 0x4c], xmm0
call fcn.180033220
cmp dword [rbx + 0x4c24], 0x1b
je 0x180089f90
mov qword [rbx + 0x3c90], r14
mov qword [rbx + 0x3c98], r14
mov rcx, qword [0x1803151a0]
lea rbx, str.Key_Bind:
movss xmm6, dword [0x180303c50]
lea rdx, [rsp + 0x40]
movss xmm3, dword [0x180303c2c]
mov qword [rsp + 0x38], r14
movss xmm2, dword [rcx + 0x3eb8]
mov rcx, qword [rcx + 0x3eb0]
mov qword [rsp + 0x30], r14
mov qword [rsp + 0x28], rbx
movss dword [rsp + 0x20], xmm6
call fcn.1800441d0
movss xmm0, dword [rsp + 0x40]
lea rdx, [rsp + 0x40]
addss xmm0, dword [0x180303a3c]
mov rcx, rbx
mov dword [rsp + 0x44], 0x420c0000
cvttss2si eax, xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [rsp + 0x40], xmm0
call fcn.18004da40
mov r8, qword [0x1803151a0]
mov r9d, 4
mov eax, dword [r8 + 0x4c28]
cmp eax, r9d
jge 0x18008a030
mov r9d, eax
test eax, eax
jle 0x18008a06b
mov rcx, qword [r8 + 0x4c30]
dec r9d
cdqe
lea rdx, [rax + rax*4]
movsxd rax, dword [rcx + rdx*4 - 0x14]
movups xmm0, xmmword [rcx + rdx*4 - 0x10]
add rax, 0x3ae
add rax, rax
movups xmmword [r8 + rax*8], xmm0
dec dword [r8 + 0x4c28]
mov eax, dword [r8 + 0x4c28]
test r9d, r9d
jg 0x18008a030
movaps xmm1, xmm6
xorps xmm0, xmm0
call fcn.18001e520
cmp byte [rdi + 0x14], r14b
jne 0x18008a0c0
xorps xmm0, xmm0
xor edx, edx
mov ecx, ebp
movups xmmword [rsp + 0x48], xmm0
movups xmmword [rsp + 0x58], xmm0
call qword [sym.imp.USER32.dll_MapVirtualKeyA]
shl eax, 0x10
mov r8d, 0x20
mov ecx, eax
lea rdx, [rsp + 0x48]
call qword [sym.imp.USER32.dll_GetKeyNameTextA]
mov rdx, rsi
lea rcx, [rsp + 0x48]
call fcn.18004da40
test al, al
je 0x18008a0e1
mov byte [rdi + 0x14], 1
jmp 0x18008a0e1
mov rdx, rsi
lea rcx, str.Press_a_key...
call fcn.18004da40
mov eax, dword [rdi + 8]
test eax, eax
je 0x18008a0e1
mov dword [rdi + 0x10], eax
mov dword [rdi + 8], r14d
mov byte [rdi + 0x14], r14b
mov rcx, qword [rsp + 0x68]
xor rcx, rsp
call fcn.18009f6b0
lea r11, [rsp + 0x80]
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x38]
movaps xmm6, xmmword [rsp + 0x70]
mov rsp, r11
pop r14
pop rdi
pop rsi
ret