Function at 0x1400afc00
Capabilities:
Log keystrokes via polling

Disassembly:
push rbx
sub rsp, 0x30
mov rax, qword [0x14014ce70]
xor rax, rsp
mov qword [rsp + 0x28], rax
mov eax, dword [0x14014cf80]
test eax, eax
jne 0x1400afe3e
movsd xmm1, qword [0x14010e240]
movsd xmm0, qword [0x140333cc0]
ucomisd xmm0, xmm1
jp 0x1400afc3b
je 0x1400afc43
movsd qword [0x140333cc0], xmm1
movsd xmm1, qword [0x14010e260]
movsd xmm0, qword [0x140333cb8]
ucomisd xmm0, xmm1
jp 0x1400afc5b
je 0x1400afc63
movsd qword [0x140333cb8], xmm1
mov ecx, 2
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1400afdf0
cmp byte [0x140334bf8], 0
jne 0x1400afcca
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 0x1400afc9e
imul rax, rax, 0x64
jmp 0x1400afcbc
cqo
idiv rbx
mov rcx, rax
imul rax, rdx, 0x3b9aca00
imul rcx, rcx, 0x3b9aca00
cqo
idiv rbx
add rax, rcx
mov qword [0x140333cc8], rax
mov byte [0x140334bf8], 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 0x1400afce8
imul rcx, rax, 0x64
jmp 0x1400afd09
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 [0x140333cc8]
movabs rax, 0x431bde82d7b634db
movsd xmm0, qword [0x140333cc0]
xorps xmm3, xmm3
imul rcx
sar rdx, 0x12
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cvtsi2sd xmm3, rdx
comisd xmm3, xmm0
jbe 0x1400afe2b
movss xmm1, dword [0x14014cf70]
subsd xmm3, xmm0
movsd xmm4, qword [0x140333cb8]
movaps xmm0, xmm1
addss xmm0, dword [0x14010e2b0]
cvttsd2si r8d, xmm4
cvttsd2si edx, xmm3
cvttss2si ecx, xmm0
cvttss2si eax, xmm1
test edx, edx
jle 0x1400afdb5
cmp edx, r8d
jl 0x1400afd82
mov eax, ecx
jmp 0x1400afdb5
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 [0x14032f220]
cvtdq2ps xmm1, xmm1
movss dword [rax + 4], xmm1
cmp byte [0x14014cf7d], 0
je 0x1400afe2b
divsd xmm3, xmm4
movaps xmm0, xmm3
call fcn.1400af990
mov rcx, qword [rsp + 0x28]
xor rcx, rsp
call fcn.1400e7bc0
add rsp, 0x30
pop rbx
ret
mov eax, dword [0x140333c60]
cdq
sub eax, edx
sar eax, 1
movd xmm1, eax
mov eax, dword [0x140333c5c]
cdq
sub eax, edx
sar eax, 1
cvtdq2ps xmm1, xmm1
movd xmm0, eax
mov rax, qword [0x14032f220]
cvtdq2ps xmm0, xmm0
movss dword [rax], xmm1
movss dword [rax + 4], xmm0
mov byte [0x140334bf8], 0
mov rcx, qword [rsp + 0x28]
xor rcx, rsp
call fcn.1400e7bc0
add rsp, 0x30
pop rbx
ret
cmp eax, 1
jne 0x1400aff55
lea ecx, [rax + 1]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1400aff1c
cmp byte [0x140334bf8], 0
jne 0x1400afeac
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 0x1400afe80
imul rax, rax, 0x64
jmp 0x1400afe9e
cqo
idiv rbx
mov rcx, rax
imul rax, rdx, 0x3b9aca00
imul rcx, rcx, 0x3b9aca00
cqo
idiv rbx
add rax, rcx
mov qword [0x140333cc8], rax
mov byte [0x140334bf8], 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 0x1400afeca
imul rax, rax, 0x64
jmp 0x1400afee8
cqo
idiv rbx
mov rcx, rax
imul rax, rdx, 0x3b9aca00
imul rcx, rcx, 0x3b9aca00
cqo
idiv rbx
add rax, rcx
sub rax, qword [0x140333cc8]
cmp rax, 0x17e6c640
jl 0x1400afe2b
mov rax, qword [0x14032f220]
mov dword [rax + 4], 0x461c3c00
mov rcx, qword [rsp + 0x28]
xor rcx, rsp
call fcn.1400e7bc0
add rsp, 0x30
pop rbx
ret
mov eax, dword [0x140333c60]
cdq
sub eax, edx
sar eax, 1
add eax, 3
movd xmm0, eax
mov rax, qword [0x14032f220]
cvtdq2ps xmm0, xmm0
movss dword [rax], xmm0
mov rax, qword [0x14032f220]
movss xmm1, dword [0x14014cf70]
movss dword [rax + 4], xmm1
jmp 0x1400afe24
cmp eax, 2
jne 0x1400b0189
mov ecx, eax
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1400b009b
cmp byte [0x140334bf8], 0
jne 0x1400affc2
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 0x1400aff96
imul rax, rax, 0x64
jmp 0x1400affb4
cqo
idiv rbx
mov rcx, rax
imul rax, rdx, 0x3b9aca00
imul rcx, rcx, 0x3b9aca00
cqo
idiv rbx
add rax, rcx
mov qword [0x140333cc8], rax
mov byte [0x140334bf8], 1
mov r9, qword [0x14032f228]
mov rcx, qword [0x14032f220]
mov rax, r9
sub rax, rcx
sar rax, 3
cmp rax, 2
jae 0x1400b0042
mov eax, dword [0x140333c60]
cdq
sub eax, edx
sar eax, 1
movd xmm0, eax
mov eax, dword [0x140333c5c]
cvtdq2ps xmm0, xmm0
cdq
sub eax, edx
sar eax, 1
cmp r9, qword [0x14032f230]
movss dword [rsp + 0x20], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [rsp + 0x24], xmm0
je 0x1400b002e
movsd xmm0, qword [rsp + 0x20]
movsd qword [r9], xmm0
add qword [0x14032f228], 8
jmp 0x1400b003b
lea r8, [rsp + 0x20]
mov rdx, r9
call fcn.1400b02f0
mov rcx, qword [0x14032f220]
movss xmm1, dword [0x14014cf6c]
subss xmm1, dword [rcx]
movss xmm0, dword [0x14010e290]
comiss xmm0, xmm1
jbe 0x1400afe2b
movss xmm0, dword [rcx]
subss xmm0, dword [0x14010e1b4]
movss dword [rcx], xmm0
mov rax, qword [0x14032f220]
movss xmm0, dword [rax + 8]
addss xmm0, dword [0x14010e1b4]
movss dword [rax + 8], xmm0
mov rcx, qword [rsp + 0x28]
xor rcx, rsp
call fcn.1400e7bc0
add rsp, 0x30
pop rbx
ret
mov rcx, qword [0x14032f220]
xorps xmm0, xmm0
movss xmm2, dword [0x14014cf6c]
movaps xmm1, xmm2
mov byte [0x140334bf8], 0
subss xmm1, dword [rcx]
comiss xmm1, xmm0
jbe 0x1400b00fc
movss xmm0, dword [rcx]
addss xmm0, dword [0x14010e1b4]
movss dword [rcx], xmm0
mov rax, qword [0x14032f220]
movss xmm0, dword [rax + 8]
subss xmm0, dword [0x14010e1b4]
movss dword [rax + 8], xmm0
mov rcx, qword [rsp + 0x28]
xor rcx, rsp
call fcn.1400e7bc0
add rsp, 0x30
pop rbx
ret
mov r8, qword [0x14032f228]
mov ebx, 1
mov rax, r8
sub rax, rcx
sar rax, 3
cmp rax, rbx
jbe 0x1400b0165
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 [0x14032f228]
inc ebx
mov rcx, qword [0x14032f220]
add r8, 0xfffffffffffffff8
mov rax, r8
movsxd rdx, ebx
sub rax, rcx
mov qword [0x14032f228], r8
sar rax, 3
cmp rdx, rax
jb 0x1400b0120
movss xmm2, dword [0x14014cf6c]
movss xmm0, dword [0x14014cf70]
movss dword [rcx + 4], xmm0
movss dword [rcx], xmm2
mov rcx, qword [rsp + 0x28]
xor rcx, rsp
call fcn.1400e7bc0
add rsp, 0x30
pop rbx
ret
cmp eax, 3
jne 0x1400afe2b
movsd xmm1, qword [0x14010e238]
movsd xmm0, qword [0x140333cc0]
ucomisd xmm0, xmm1
jp 0x1400b01aa
je 0x1400b01b2
movsd qword [0x140333cc0], xmm1
movsd xmm1, qword [0x14010e258]
movsd xmm0, qword [0x140333cb8]
ucomisd xmm0, xmm1
jp 0x1400b01ca
je 0x1400b01d2
movsd qword [0x140333cb8], xmm1
mov ecx, 2
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1400afe24
cmp byte [0x140334bf8], 0
jne 0x1400b0239
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 0x1400b020d
imul rax, rax, 0x64
jmp 0x1400b022b
cqo
idiv rbx
mov rcx, rax
imul rax, rdx, 0x3b9aca00
imul rcx, rcx, 0x3b9aca00
cqo
idiv rbx
add rax, rcx
mov qword [0x140333cc8], rax
mov byte [0x140334bf8], 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 0x1400b0257
imul rcx, rax, 0x64
jmp 0x1400b0278
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 [0x14014cf7d], 0
je 0x1400afe2b
sub rcx, qword [0x140333cc8]
movabs rax, 0x431bde82d7b634db
movsd xmm1, qword [0x140333cc0]
xorps xmm0, xmm0
imul rcx
sar rdx, 0x12
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cvtsi2sd xmm0, rdx
comisd xmm0, xmm1
jbe 0x1400afe2b
subsd xmm0, xmm1
divsd xmm0, qword [0x140333cb8]
call fcn.1400af990
mov rcx, qword [rsp + 0x28]
xor rcx, rsp
call fcn.1400e7bc0
add rsp, 0x30
pop rbx
ret