Function at 0x14006f4f0
Capabilities:
Log keystrokes via polling

Disassembly:
push rbx
sub rsp, 0x40
cmp byte [rcx + 0x1a7], 0
mov rbx, rcx
mov byte [rcx + 0x1cc], 0
je 0x14006f88e
mov qword [rsp + 0x58], rbp
mov qword [rsp + 0x60], rsi
mov qword [rsp + 0x68], rdi
call qword [sym.imp.MSVCP140.dll__Xtime_get_ticks]
cmp byte [rbx + 0x1d5], 0
mov rsi, rax
mov qword [rsp + 0x50], rax
je 0x14006f58b
cmp dword [0x1401914e8], 0
je 0x14006f58b
mov ecx, dword [rbx + 0x7c]
cmp ecx, 0xffffffff
jne 0x14006f549
xor dil, dil
jmp 0x14006f552
call qword [sym.imp.USER32.dll_GetKeyState]
movzx edi, ax
and dil, 1
cmp dil, byte [rbx + 0x1f0]
je 0x14006f584
lea rcx, [rbx + 0x1d8]
mov rdx, qword [rcx + 8]
cmp rdx, qword [rcx + 0x10]
je 0x14006f57a
mov qword [rdx], rsi
add qword [rcx + 8], 8
jmp 0x14006f584
lea r8, [rsp + 0x50]
call fcn.14009eef0
mov byte [rbx + 0x1f0], dil
lea rcx, [rbx + 8]
call fcn.140068090
movzx ecx, byte [0x14016ec88]
movzx edi, al
mov eax, 0x989680
cdq
idiv dword [rbx + 0x1ac]
movsxd rbp, eax
test cl, cl
je 0x14006f5bf
mov rax, rbp
cqo
sub rax, rdx
sar rax, 1
mov rbp, rax
mov rax, qword [rbx + 0x1b8]
test dil, dil
je 0x14006f7f6
cmp rax, rsi
jge 0x14006f805
movaps xmmword [rsp + 0x30], xmm6
movsd xmm6, qword [0x1400ba730]
movaps xmmword [rsp + 0x20], xmm7
movss xmm7, dword [0x1400ba8b4]
test cl, cl
je 0x14006f6a2
cmp byte [rbx], 0
je 0x14006f689
cmp byte [rbx + 0x1cd], 0
je 0x14006f631
call fcn.14005a7b0
test al, al
jne 0x14006f631
cmp byte [rbx + 0x1d4], al
je 0x14006f623
cmp dil, byte [rbx + 0x70]
je 0x14006f631
mov eax, dword [rbx + 0x1d0]
dec eax
mov dword [0x1401912b8], eax
mov rcx, rbx
call fcn.14006f420
test al, al
je 0x14006f698
mov ecx, dword [rbx + 0x7c]
cmp ecx, 0xffffffff
je 0x14006f64c
mov dl, 1
call fcn.14005e8d0
lea rcx, [rbx + 0x1d8]
mov rdx, qword [rcx + 8]
cmp rdx, qword [rcx + 0x10]
je 0x14006f672
mov qword [rdx], rsi
add qword [rcx + 8], 8
cmp byte [rbx], 0
sete al
mov byte [rbx], al
jmp 0x14006f71f
lea r8, [rsp + 0x50]
call fcn.14009eef0
cmp byte [rbx], 0
sete al
mov byte [rbx], al
jmp 0x14006f71f
mov ecx, dword [rbx + 0x7c]
cmp ecx, 0xffffffff
je 0x14006f698
xor edx, edx
call fcn.14005e8d0
cmp byte [rbx], 0
sete al
mov byte [rbx], al
jmp 0x14006f71f
cmp byte [rbx + 0x1cd], 0
je 0x14006f6d0
call fcn.14005a7b0
test al, al
jne 0x14006f6d0
cmp byte [rbx + 0x1d4], al
je 0x14006f6c2
cmp dil, byte [rbx + 0x70]
je 0x14006f6d0
mov eax, dword [rbx + 0x1d0]
dec eax
mov dword [0x1401912b8], eax
mov rcx, rbx
call fcn.14006f420
test al, al
je 0x14006f71f
mov ecx, dword [rbx + 0x7c]
cmp ecx, 0xffffffff
je 0x14006f6eb
mov dl, 1
call fcn.14005e8d0
lea rcx, [rbx + 0x1d8]
mov rdx, qword [rcx + 8]
cmp rdx, qword [rcx + 0x10]
je 0x14006f706
mov qword [rdx], rsi
add qword [rcx + 8], 8
jmp 0x14006f710
lea r8, [rsp + 0x50]
call fcn.14009eef0
mov ecx, dword [rbx + 0x7c]
cmp ecx, 0xffffffff
je 0x14006f71f
xor edx, edx
call fcn.14005e8d0
cmp byte [rbx + 0x1b0], 0
je 0x14006f7c1
call qword [sym.imp.api_ms_win_crt_utility_l1_1_0.dll_rand]
movss xmm1, dword [rbx + 0x1c8]
xorps xmm2, xmm2
xorps xmm3, xmm3
cvtsi2sd xmm3, qword [rbx + 0x1b8]
movd xmm0, eax
movzx eax, byte [rbx + 0x1c0]
cvtdq2ps xmm0, xmm0
cvtsi2sd xmm2, rbp
divss xmm0, xmm7
cvtps2pd xmm4, xmm0
test al, al
je 0x14006f783
cvtpd2ps xmm0, xmm4
movss dword [rbx + 0x1c4], xmm0
mulss xmm0, xmm1
movaps xmm1, xmm6
cvtps2pd xmm0, xmm0
subsd xmm1, xmm0
jmp 0x14006f792
mulss xmm1, dword [rbx + 0x1c4]
cvtps2pd xmm1, xmm1
addsd xmm1, xmm6
mulsd xmm1, xmm2
addsd xmm1, xmm3
cvttsd2si rcx, xmm1
mov qword [rbx + 0x1b8], rcx
cmp byte [0x14016ec88], 0
je 0x14006f7b4
cmp byte [rbx], 0
je 0x14006f7d2
test al, al
sete al
mov byte [rbx + 0x1c0], al
jmp 0x14006f7d2
mov rcx, qword [rbx + 0x1b8]
add rcx, rbp
mov qword [rbx + 0x1b8], rcx
mov byte [rbx + 0x1cc], 1
cmp rcx, rsi
jge 0x14006f7ea
movzx ecx, byte [0x14016ec88]
jmp 0x14006f5f2
movaps xmm7, xmmword [rsp + 0x20]
movaps xmm6, xmmword [rsp + 0x30]
jmp 0x14006f805
cmp rax, rsi
jge 0x14006f802
mov qword [rbx + 0x1b8], rsi
mov byte [rbx], 1
mov rbp, qword [rsp + 0x58]
cmp dil, byte [rbx + 0x70]
je 0x14006f880
test dil, dil
jne 0x14006f880
mov ecx, dword [rbx + 0x7c]
cmp ecx, 0xffffffff
jne 0x14006f821
xor eax, eax
jmp 0x14006f828
call qword [sym.imp.USER32.dll_GetKeyState]
cwde
shr eax, 0xf
test al, 1
je 0x14006f871
mov rcx, rbx
call fcn.14006f420
test al, al
je 0x14006f880
mov ecx, dword [rbx + 0x7c]
cmp ecx, 0xffffffff
je 0x14006f84a
mov dl, 1
call fcn.14005e8d0
lea rcx, [rbx + 0x1d8]
mov rdx, qword [rcx + 8]
cmp rdx, qword [rcx + 0x10]
je 0x14006f865
mov qword [rdx], rsi
add qword [rcx + 8], 8
jmp 0x14006f880
lea r8, [rsp + 0x50]
call fcn.14009eef0
jmp 0x14006f880
mov ecx, dword [rbx + 0x7c]
cmp ecx, 0xffffffff
je 0x14006f880
xor edx, edx
call fcn.14005e8d0
mov rsi, qword [rsp + 0x60]
mov byte [rbx + 0x70], dil
mov rdi, qword [rsp + 0x68]
add rsp, 0x40
pop rbx
ret