Function at 0x1400015e0
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 8], rbx
push rbp
push rsi
push rdi
sub rsp, 0x30
mov rbx, rcx
xor dil, dil
mov ecx, 0x41
mov byte [rsp + 0x58], dil
xor sil, sil
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ebp, 0x8001
test bp, ax
je 0x14000161b
mov dil, 0x41
mov byte [rsp + 0x58], dil
movzx esi, dil
mov ecx, 0x44
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test bp, ax
je 0x140001639
mov dil, 0x44
mov byte [rsp + 0x58], dil
movzx esi, dil
jmp 0x140001642
test sil, sil
je 0x14000180b
mov rax, qword [rbx + 8]
cmp qword [rbx], rax
je 0x140001725
cmp byte [rax - 0xf], 0
je 0x140001725
cmp byte [rax - 0x10], sil
jne 0x140001725
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rdi, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
mov r9, rax
cmp rdi, 0x989680
jne 0x14000168f
mov rcx, qword [rbx + 8]
imul rax, r9, 0x64
mov qword [rcx - 8], rax
jmp 0x1400018ec
cmp rdi, 0x16e3600
jne 0x1400016fa
movabs r10, 0xb2f4fc0794908cf3
mov rax, r10
imul r9
mov rax, r10
lea r8, [r9 + rdx]
sar r8, 0x18
mov rcx, r8
shr rcx, 0x3f
add r8, rcx
imul rcx, r8, 0x16e3600
sub r9, rcx
imul rcx, r9, 0x3b9aca00
imul rcx
lea rax, [rcx + rdx]
sar rax, 0x18
mov rcx, rax
shr rcx, 0x3f
add rax, rcx
imul rcx, r8, 0x3b9aca00
add rax, rcx
mov rcx, qword [rbx + 8]
mov qword [rcx - 8], rax
jmp 0x1400018ec
cqo
idiv rdi
mov rcx, rax
imul rax, rdx, 0x3b9aca00
imul rcx, rcx, 0x3b9aca00
cqo
idiv rdi
add rax, rcx
mov rcx, qword [rbx + 8]
mov qword [rcx - 8], rax
jmp 0x1400018ec
mov byte [rsp + 0x60], 1
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rsi, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
mov rcx, rax
cmp rsi, 0x989680
jne 0x14000174b
imul rax, rcx, 0x64
jmp 0x1400017c6
cmp rsi, 0x16e3600
jne 0x1400017a8
movabs r10, 0xb2f4fc0794908cf3
mov rax, r10
imul rcx
lea r8, [rcx + rdx]
sar r8, 0x18
mov rax, r8
shr rax, 0x3f
add r8, rax
imul rax, r8, 0x16e3600
sub rcx, rax
mov rax, r10
imul rcx, rcx, 0x3b9aca00
imul rcx
lea rax, [rcx + rdx]
sar rax, 0x18
mov rcx, rax
shr rcx, 0x3f
add rax, rcx
imul rcx, r8, 0x3b9aca00
jmp 0x1400017c3
cqo
idiv rsi
mov rcx, rax
imul rax, rdx, 0x3b9aca00
cqo
idiv rsi
imul rcx, rcx, 0x3b9aca00
add rax, rcx
mov rdx, qword [rbx + 8]
mov qword [rsp + 0x68], rax
cmp rdx, qword [rbx + 0x10]
je 0x1400017ea
mov byte [rdx], dil
mov byte [rdx + 1], 1
mov qword [rdx + 8], rax
add qword [rbx + 8], 0x10
jmp 0x1400018ec
lea rax, [rsp + 0x68]
mov rcx, rbx
lea r9, [rsp + 0x60]
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0x58]
call fcn.140003ac0
jmp 0x1400018ec
mov byte [rsp + 0x58], 0
mov byte [rsp + 0x60], 0
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rdi, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
mov rcx, rax
cmp rdi, 0x989680
jne 0x140001836
imul rax, rcx, 0x64
jmp 0x1400018b1
cmp rdi, 0x16e3600
jne 0x140001893
movabs r10, 0xb2f4fc0794908cf3
mov rax, r10
imul rcx
lea r8, [rcx + rdx]
sar r8, 0x18
mov rax, r8
shr rax, 0x3f
add r8, rax
imul rax, r8, 0x16e3600
sub rcx, rax
mov rax, r10
imul rcx, rcx, 0x3b9aca00
imul rcx
lea rax, [rcx + rdx]
sar rax, 0x18
mov rcx, rax
shr rcx, 0x3f
add rax, rcx
imul rcx, r8, 0x3b9aca00
jmp 0x1400018ae
cqo
idiv rdi
mov rcx, rax
imul rax, rdx, 0x3b9aca00
cqo
idiv rdi
imul rcx, rcx, 0x3b9aca00
add rax, rcx
mov rdx, qword [rbx + 8]
mov qword [rsp + 0x68], rax
cmp rdx, qword [rbx + 0x10]
je 0x1400018d0
mov word [rdx], 0
mov qword [rdx + 8], rax
add qword [rbx + 8], 0x10
jmp 0x1400018ec
lea rax, [rsp + 0x68]
mov rcx, rbx
lea r9, [rsp + 0x58]
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0x60]
call fcn.140003c70
mov ecx, 0x1b
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov rbx, qword [rsp + 0x50]
test bp, ax
sete al
add rsp, 0x30
pop rdi
pop rsi
pop rbp
ret