Function at 0x14004fac0
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x18], rbx
push rsi
sub rsp, 0x60
mov ecx, dword [0x1400640f0]
movaps xmmword [rsp + 0x50], xmm6
movaps xmmword [rsp + 0x40], xmm7
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test al, 1
je 0x14004faf2
cmp byte [0x1400640e8], 0
sete byte [0x1400640e8]
mov rax, qword [0x1400649b0]
xor esi, esi
test rax, rax
je 0x14004fb09
mov rcx, qword [rax + 0x98]
jmp 0x14004fb0c
mov rcx, rsi
cmp qword [rcx + 0x18], rsi
jne 0x14004fb2d
test rax, rax
je 0x14004fb2d
mov rcx, qword [rax + 0x98]
test rcx, rcx
je 0x14004fb2d
cmp qword [rcx], rsi
je 0x14004fb2d
call fcn.14002b030
call fcn.14002ba30
call fcn.140007ae0
mov rax, qword gs:[0x58]
movd xmm0, dword [0x1400640f4]
movss xmm7, dword [0x14005abbc]
cvtdq2ps xmm0, xmm0
mov rcx, qword [rax]
mov edx, 4
movaps xmm6, xmm7
mov eax, dword [rdx + rcx]
cmp dword [0x140064b10], eax
divss xmm6, xmm0
jle 0x14004fbd1
lea rcx, [0x140064b10]
call fcn.1400525d0
cmp dword [0x140064b10], 0xffffffff
jne 0x14004fbd1
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 0x14004fba0
imul rax, rax, 0x64
jmp 0x14004fbbe
cqo
idiv rbx
mov r8, rax
imul rax, rdx, 0x3b9aca00
cqo
idiv rbx
imul rdx, r8, 0x3b9aca00
add rax, rdx
lea rcx, [0x140064b10]
mov qword [0x140064b18], rax
call fcn.140052570
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 0x14004fbef
imul rbx, rax, 0x64
jmp 0x14004fc10
cqo
idiv rbx
mov rcx, rax
imul rax, rdx, 0x3b9aca00
cqo
idiv rbx
mov rbx, rax
imul rax, rcx, 0x3b9aca00
add rbx, rax
xorps xmm0, xmm0
mov rax, rbx
sub rax, qword [0x140064b18]
cvtsi2ss xmm0, rax
divss xmm0, dword [0x14005acf0]
comiss xmm6, xmm0
jbe 0x14004fd0c
subss xmm6, xmm0
mov qword [rsp + 0x78], rdi
mulss xmm6, dword [0x14005acd4]
cvttss2si eax, xmm6
movsxd rbx, eax
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rdi, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
cmp rdi, 0x989680
jne 0x14004fc69
imul rax, rax, 0x64
jmp 0x14004fc87
cqo
idiv rdi
mov rcx, rax
imul rax, rdx, 0x3b9aca00
imul rcx, rcx, 0x3b9aca00
cqo
idiv rdi
add rax, rcx
mov rdi, qword [rsp + 0x78]
mov qword [rsp + 0x70], rax
cmp rbx, 1
jl 0x14004fcc3
imul rdx, rbx, 0xf4240
movabs r8, 0x7fffffffffffffff
mov rcx, r8
sub rcx, rdx
cmp rax, rcx
jge 0x14004fcbe
lea rcx, [rdx + rax]
mov qword [rsp + 0x70], rcx
jmp 0x14004fcc3
mov qword [rsp + 0x70], r8
lea rcx, [rsp + 0x70]
call fcn.140051ca0
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 0x14004fceb
imul rbx, rax, 0x64
jmp 0x14004fd0c
cqo
idiv rbx
mov rcx, rax
imul rax, rdx, 0x3b9aca00
cqo
idiv rbx
mov rbx, rax
imul rax, rcx, 0x3b9aca00
add rbx, rax
cmp byte [0x1400640e8], sil
movaps xmm6, xmmword [rsp + 0x50]
je 0x14004fd51
mov rax, qword [0x1400649b0]
mov ecx, 1
mov dword [rax + 0xd9c], esi
mov byte [rax + 0xda0], sil
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x14004fd4c
mov rax, qword [0x1400649b0]
mov byte [rax + 0xd9c], 1
call fcn.14004ebf0
call fcn.14004a980
call fcn.14000a140
mov rcx, qword [0x140064a38]
xor r8d, r8d
mov qword [0x140064b18], rbx
mov rax, qword [rcx]
lea edx, [r8 + 7]
call qword [rax + 0x1c8]
mov rcx, qword [0x140064a38]
xor r8d, r8d
mov rax, qword [rcx]
lea edx, [r8 + 0x1b]
call qword [rax + 0x1c8]
mov rcx, qword [0x140064a38]
xor r8d, r8d
mov edx, 0xae
mov rax, qword [rcx]
call qword [rax + 0x1c8]
mov rcx, qword [0x140064a38]
mov r9d, 1
mov dword [rsp + 0x30], esi
xor r8d, r8d
movss dword [rsp + 0x28], xmm7
xor edx, edx
mov dword [rsp + 0x20], esi
mov rax, qword [rcx]
call qword [rax + 0x158]
mov rcx, qword [0x140064a38]
mov rax, qword [rcx]
call qword [rax + 0x148]
movaps xmm7, xmmword [rsp + 0x40]
test eax, eax
js 0x14004fe20
call fcn.14000a4c0
mov rax, qword [0x1400649b0]
mov rcx, qword [rax + 0x40b0]
mov rcx, qword [rcx]
add rcx, 0x48
cmp byte [rcx], sil
cmove rcx, rsi
call fcn.14002aa80
mov rcx, qword [0x140064a38]
mov rax, qword [rcx]
call qword [rax + 0x150]
mov rcx, qword [0x140064a38]
xor r9d, r9d
xor r8d, r8d
mov qword [rsp + 0x20], rsi
xor edx, edx
mov rax, qword [rcx]
call qword [rax + 0x88]
cmp eax, 0x88760868
jne 0x14004fefe
mov rcx, qword [0x140064a38]
mov rax, qword [rcx]
call qword [rax + 0x18]
cmp eax, 0x88760869
jne 0x14004fefe
mov rbx, qword [0x1400649b0]
test rbx, rbx
je 0x14004fec5
mov rbx, qword [rbx + 0x98]
test rbx, rbx
je 0x14004fec5
cmp qword [rbx], rsi
je 0x14004fec5
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x14004fe90
mov rax, qword [rcx]
call qword [rax + 0x10]
mov qword [rbx + 8], rsi
mov rcx, qword [rbx + 0x10]
test rcx, rcx
je 0x14004fea3
mov rax, qword [rcx]
call qword [rax + 0x10]
mov qword [rbx + 0x10], rsi
mov rcx, qword [rbx + 0x18]
test rcx, rcx
je 0x14004fec5
mov rax, qword [rcx]
call qword [rax + 0x10]
mov rax, qword [0x1400649b0]
mov qword [rbx + 0x18], rsi
mov rcx, qword [rax + 0x50]
mov qword [rcx + 8], rsi
mov rcx, qword [0x140064a38]
lea rdx, [0x1400649c0]
mov rax, qword [rcx]
call qword [rax + 0x80]
mov rax, qword [0x1400649b0]
test rax, rax
je 0x14004fefe
mov rax, qword [rax + 0x98]
test rax, rax
je 0x14004fefe
cmp qword [rax], rsi
je 0x14004fefe
call fcn.14002b030
mov rbx, qword [rsp + 0x80]
add rsp, 0x60
pop rsi
ret