Function at 0x1400b1d00
Capabilities:
Log keystrokes via polling

Disassembly:
push rbx
sub rsp, 0x30
mov rax, qword [0x140154e70]
xor rax, rsp
mov qword [rsp + 0x28], rax
mov eax, dword [0x140154f80]
test eax, eax
jne 0x1400b1f3e
movsd xmm1, qword [0x1401155c8]
movsd xmm0, qword [0x14033c6a8]
ucomisd xmm0, xmm1
jp 0x1400b1d3b
je 0x1400b1d43
movsd qword [0x14033c6a8], xmm1
movsd xmm1, qword [0x1401155e8]
movsd xmm0, qword [0x14033c6a0]
ucomisd xmm0, xmm1
jp 0x1400b1d5b
je 0x1400b1d63
movsd qword [0x14033c6a0], xmm1
mov ecx, 2
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1400b1ef0
cmp byte [0x14033d6c0], 0
jne 0x1400b1dca
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rbx, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
cmp rbx, 0x989680
jne 0x1400b1d9e
imul rax, rax, 0x64
jmp 0x1400b1dbc
cqo
idiv rbx
mov rcx, rax
imul rax, rdx, 0x3b9aca00
imul rcx, rcx, 0x3b9aca00
cqo
idiv rbx
add rax, rcx
mov qword [0x14033c6b0], rax
mov byte [0x14033d6c0], 1
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rbx, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
cmp rbx, 0x989680
jne 0x1400b1de8
imul rcx, rax, 0x64
jmp 0x1400b1e09
cqo
idiv rbx
mov r8, rax
imul rax, rdx, 0x3b9aca00
cqo
idiv rbx
mov rcx, rax
imul rax, r8, 0x3b9aca00
add rcx, rax
sub rcx, qword [0x14033c6b0]
movabs rax, 0x431bde82d7b634db
movsd xmm0, qword [0x14033c6a8]
xorps xmm3, xmm3
imul rcx
sar rdx, 0x12
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cvtsi2sd xmm3, rdx
comisd xmm3, xmm0
jbe 0x1400b1f2b
movss xmm1, dword [0x140154f70]
subsd xmm3, xmm0
movsd xmm4, qword [0x14033c6a0]
movaps xmm0, xmm1
addss xmm0, dword [0x14011563c]
cvttsd2si r8d, xmm4
cvttsd2si edx, xmm3
cvttss2si ecx, xmm0
cvttss2si eax, xmm1
test edx, edx
jle 0x1400b1eb5
cmp edx, r8d
jl 0x1400b1e82
mov eax, ecx
jmp 0x1400b1eb5
movd xmm2, edx
sub ecx, eax
cvtdq2pd xmm2, xmm2
movd xmm0, r8d
cvtdq2pd xmm0, xmm0
movd xmm1, eax
divsd xmm2, xmm0
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
cvtdq2pd xmm1, xmm1
mulsd xmm2, xmm0
addsd xmm2, xmm1
cvttsd2si eax, xmm2
movd xmm1, eax
mov rax, qword [0x140337bc0]
cvtdq2ps xmm1, xmm1
movss dword [rax + 4], xmm1
cmp byte [0x140154f7d], 0
je 0x1400b1f2b
divsd xmm3, xmm4
movaps xmm0, xmm3
call fcn.1400b1a90
mov rcx, qword [rsp + 0x28]
xor rcx, rsp
call fcn.1400ee850
add rsp, 0x30
pop rbx
ret
mov eax, dword [0x14033c630]
cdq
sub eax, edx
sar eax, 1
movd xmm1, eax
mov eax, dword [0x14033c62c]
cdq
sub eax, edx
sar eax, 1
cvtdq2ps xmm1, xmm1
movd xmm0, eax
mov rax, qword [0x140337bc0]
cvtdq2ps xmm0, xmm0
movss dword [rax], xmm1
movss dword [rax + 4], xmm0
mov byte [0x14033d6c0], 0
mov rcx, qword [rsp + 0x28]
xor rcx, rsp
call fcn.1400ee850
add rsp, 0x30
pop rbx
ret
cmp eax, 1
jne 0x1400b2055
lea ecx, [rax + 1]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1400b201c
cmp byte [0x14033d6c0], 0
jne 0x1400b1fac
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rbx, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
cmp rbx, 0x989680
jne 0x1400b1f80
imul rax, rax, 0x64
jmp 0x1400b1f9e
cqo
idiv rbx
mov rcx, rax
imul rax, rdx, 0x3b9aca00
imul rcx, rcx, 0x3b9aca00
cqo
idiv rbx
add rax, rcx
mov qword [0x14033c6b0], rax
mov byte [0x14033d6c0], 1
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rbx, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
cmp rbx, 0x989680
jne 0x1400b1fca
imul rax, rax, 0x64
jmp 0x1400b1fe8
cqo
idiv rbx
mov rcx, rax
imul rax, rdx, 0x3b9aca00
imul rcx, rcx, 0x3b9aca00
cqo
idiv rbx
add rax, rcx
sub rax, qword [0x14033c6b0]
cmp rax, 0x17e6c640
jl 0x1400b1f2b
mov rax, qword [0x140337bc0]
mov dword [rax + 4], 0x461c3c00
mov rcx, qword [rsp + 0x28]
xor rcx, rsp
call fcn.1400ee850
add rsp, 0x30
pop rbx
ret
mov eax, dword [0x14033c630]
cdq
sub eax, edx
sar eax, 1
add eax, 3
movd xmm0, eax
mov rax, qword [0x140337bc0]
cvtdq2ps xmm0, xmm0
movss dword [rax], xmm0
mov rax, qword [0x140337bc0]
movss xmm1, dword [0x140154f70]
movss dword [rax + 4], xmm1
jmp 0x1400b1f24
cmp eax, 2
jne 0x1400b2289
mov ecx, eax
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1400b219b
cmp byte [0x14033d6c0], 0
jne 0x1400b20c2
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rbx, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
cmp rbx, 0x989680
jne 0x1400b2096
imul rax, rax, 0x64
jmp 0x1400b20b4
cqo
idiv rbx
mov rcx, rax
imul rax, rdx, 0x3b9aca00
imul rcx, rcx, 0x3b9aca00
cqo
idiv rbx
add rax, rcx
mov qword [0x14033c6b0], rax
mov byte [0x14033d6c0], 1
mov r9, qword [0x140337bc8]
mov rcx, qword [0x140337bc0]
mov rax, r9
sub rax, rcx
sar rax, 3
cmp rax, 2
jae 0x1400b2142
mov eax, dword [0x14033c630]
cdq
sub eax, edx
sar eax, 1
movd xmm0, eax
mov eax, dword [0x14033c62c]
cvtdq2ps xmm0, xmm0
cdq
sub eax, edx
sar eax, 1
cmp r9, qword [0x140337bd0]
movss dword [rsp + 0x20], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [rsp + 0x24], xmm0
je 0x1400b212e
movsd xmm0, qword [rsp + 0x20]
movsd qword [r9], xmm0
add qword [0x140337bc8], 8
jmp 0x1400b213b
lea r8, [rsp + 0x20]
mov rdx, r9
call fcn.1400b23f0
mov rcx, qword [0x140337bc0]
movss xmm1, dword [0x140154f6c]
subss xmm1, dword [rcx]
movss xmm0, dword [0x140115618]
comiss xmm0, xmm1
jbe 0x1400b1f2b
movss xmm0, dword [rcx]
subss xmm0, dword [0x14011553c]
movss dword [rcx], xmm0
mov rax, qword [0x140337bc0]
movss xmm0, dword [rax + 8]
addss xmm0, dword [0x14011553c]
movss dword [rax + 8], xmm0
mov rcx, qword [rsp + 0x28]
xor rcx, rsp
call fcn.1400ee850
add rsp, 0x30
pop rbx
ret
mov rcx, qword [0x140337bc0]
xorps xmm0, xmm0
movss xmm2, dword [0x140154f6c]
movaps xmm1, xmm2
mov byte [0x14033d6c0], 0
subss xmm1, dword [rcx]
comiss xmm1, xmm0
jbe 0x1400b21fc
movss xmm0, dword [rcx]
addss xmm0, dword [0x14011553c]
movss dword [rcx], xmm0
mov rax, qword [0x140337bc0]
movss xmm0, dword [rax + 8]
subss xmm0, dword [0x14011553c]
movss dword [rax + 8], xmm0
mov rcx, qword [rsp + 0x28]
xor rcx, rsp
call fcn.1400ee850
add rsp, 0x30
pop rbx
ret
mov r8, qword [0x140337bc8]
mov ebx, 1
mov rax, r8
sub rax, rcx
sar rax, 3
cmp rax, rbx
jbe 0x1400b2265
mov edx, ebx
nop dword [rax]
lea rcx, [rcx + rdx*8]
lea rdx, [rcx + 8]
sub r8, rdx
call sub.VCRUNTIME140.dll_memmove
mov r8, qword [0x140337bc8]
inc ebx
mov rcx, qword [0x140337bc0]
add r8, 0xfffffffffffffff8
mov rax, r8
movsxd rdx, ebx
sub rax, rcx
mov qword [0x140337bc8], r8
sar rax, 3
cmp rdx, rax
jb 0x1400b2220
movss xmm2, dword [0x140154f6c]
movss xmm0, dword [0x140154f70]
movss dword [rcx + 4], xmm0
movss dword [rcx], xmm2
mov rcx, qword [rsp + 0x28]
xor rcx, rsp
call fcn.1400ee850
add rsp, 0x30
pop rbx
ret
cmp eax, 3
jne 0x1400b1f2b
movsd xmm1, qword [0x1401155c0]
movsd xmm0, qword [0x14033c6a8]
ucomisd xmm0, xmm1
jp 0x1400b22aa
je 0x1400b22b2
movsd qword [0x14033c6a8], xmm1
movsd xmm1, qword [0x1401155e0]
movsd xmm0, qword [0x14033c6a0]
ucomisd xmm0, xmm1
jp 0x1400b22ca
je 0x1400b22d2
movsd qword [0x14033c6a0], xmm1
mov ecx, 2
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1400b1f24
cmp byte [0x14033d6c0], 0
jne 0x1400b2339
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rbx, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
cmp rbx, 0x989680
jne 0x1400b230d
imul rax, rax, 0x64
jmp 0x1400b232b
cqo
idiv rbx
mov rcx, rax
imul rax, rdx, 0x3b9aca00
imul rcx, rcx, 0x3b9aca00
cqo
idiv rbx
add rax, rcx
mov qword [0x14033c6b0], rax
mov byte [0x14033d6c0], 1
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rbx, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
cmp rbx, 0x989680
jne 0x1400b2357
imul rcx, rax, 0x64
jmp 0x1400b2378
cqo
idiv rbx
mov r8, rax
imul rax, rdx, 0x3b9aca00
cqo
idiv rbx
mov rcx, rax
imul rax, r8, 0x3b9aca00
add rcx, rax
cmp byte [0x140154f7d], 0
je 0x1400b1f2b
sub rcx, qword [0x14033c6b0]
movabs rax, 0x431bde82d7b634db
movsd xmm1, qword [0x14033c6a8]
xorps xmm0, xmm0
imul rcx
sar rdx, 0x12
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cvtsi2sd xmm0, rdx
comisd xmm0, xmm1
jbe 0x1400b1f2b
subsd xmm0, xmm1
divsd xmm0, qword [0x14033c6a0]
call fcn.1400b1a90
mov rcx, qword [rsp + 0x28]
xor rcx, rsp
call fcn.1400ee850
add rsp, 0x30
pop rbx
ret