Function at 0x1800a0f40
Capabilities:
Log keystrokes via polling

Disassembly:
push rbx
push rsi
sub rsp, 0x28
mov rax, qword [rcx + 0x78]
mov rsi, rdx
mov rbx, rcx
cmp byte [rax], 0
jne 0x1800a0f70
lea rcx, [rsp + 0x40]
mov qword [rsp + 0x40], 0xfa
call fcn.18008ef60
add rsp, 0x28
pop rsi
pop rbx
ret
mov rax, qword gs:[0x58]
mov ecx, dword [0x180152b34]
mov qword [rsp + 0x48], rbp
mov qword [rsp + 0x50], rdi
mov ebp, 4
mov rdi, qword [rax + rcx*8]
mov qword [rsp + 0x58], r14
mov eax, dword [rdi + rbp]
cmp dword [0x180155d68], eax
jle 0x1800a0fcf
lea rcx, [0x180155d68]
call fcn.1800d2898
cmp dword [0x180155d68], 0xffffffff
jne 0x1800a0fcf
lea rcx, [0x1800dd540]
call fcn.1800d2f5c
lea rcx, [0x180155d68]
call fcn.1800d2838
cmp byte [0x180153140], 0
mov r14d, 1
je 0x1800a1293
cmp byte [0x180153248], 0
mov qword [rsp + 0x20], r15
movabs r15, 0x431bde82d7b634db
je 0x1800a11f9
mov eax, dword [rdi + rbp]
cmp dword [0x180155d6c], eax
jle 0x1800a1041
lea rcx, [0x180155d6c]
call fcn.1800d2898
cmp dword [0x180155d6c], 0xffffffff
jne 0x1800a1041
lea rcx, [0x180155d70]
mov qword [0x180155d70], 0
call fcn.18008dc70
lea rcx, [0x180155d6c]
call fcn.1800d2838
mov rax, qword [0x180153230]
mov rdx, qword [0x180153238]
cmp rax, rdx
je 0x1800a1178
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 0x1800a1076
imul rcx, rax, 0x64
jmp 0x1800a1097
cqo
idiv rdi
mov r8, rax
imul rax, rdx, 0x3b9aca00
cqo
idiv rdi
mov rcx, rax
imul rax, r8, 0x3b9aca00
add rcx, rax
sub rcx, qword [0x180155d70]
mov rax, r15
imul rcx
xorps xmm0, xmm0
sar rdx, 0x12
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cvtsi2ss xmm0, rdx
comiss xmm0, dword [0x1801377b4]
jb 0x1800a1165
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 0x1800a10e5
imul rdx, rax, 0x64
jmp 0x1800a1106
cqo
idiv rdi
mov rcx, rax
imul rax, rdx, 0x3b9aca00
cqo
idiv rdi
mov rdx, rax
imul rax, rcx, 0x3b9aca00
add rdx, rax
movss xmm1, dword [0x180137ca0]
movss xmm2, dword [0x1801375c8]
mov qword [0x180155d70], rdx
mov rdx, qword [0x180153238]
mov r8, qword [rsi]
add r8, 0x24
movss xmm0, dword [rdx - 0xc]
subss xmm0, dword [r8]
andps xmm0, xmm1
comiss xmm2, xmm0
jbe 0x1800a117f
movss xmm0, dword [rdx - 8]
subss xmm0, dword [r8 + 4]
andps xmm0, xmm1
comiss xmm2, xmm0
jbe 0x1800a117f
movss xmm0, dword [rdx - 4]
subss xmm0, dword [r8 + 8]
andps xmm0, xmm1
comiss xmm2, xmm0
ja 0x1800a11a7
jmp 0x1800a117f
mov rdx, qword [0x180153238]
mov rax, qword [0x180153230]
cmp rax, rdx
jne 0x1800a11a7
mov r8, qword [rsi]
add r8, 0x24
cmp rdx, qword [0x180153240]
je 0x1800a11a2
movsd xmm0, qword [r8]
movsd qword [rdx], xmm0
mov eax, dword [r8 + 8]
mov dword [rdx + 8], eax
add qword [0x180153238], 0xc
jmp 0x1800a11a7
call fcn.1800a1960
movzx eax, byte [rbx + 0x198]
test al, al
je 0x1800a11f9
lea rcx, [rbx + 0x1a0]
lea rax, [0x180153230]
cmp rcx, rax
je 0x1800a11f9
mov r8, qword [0x180153238]
movabs rax, 0x2aaaaaaaaaaaaaab
sub r8, qword [0x180153230]
imul r8
sar rdx, 1
mov r8, rdx
shr r8, 0x3f
add r8, rdx
mov rdx, qword [0x180153230]
call fcn.1800a1730
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 0x1800a1217
imul rcx, rax, 0x64
jmp 0x1800a1235
cqo
idiv rdi
mov r8, rax
imul rax, rdx, 0x3b9aca00
imul rcx, r8, 0x3b9aca00
cqo
idiv rdi
add rcx, rax
movss xmm0, dword [0x1801502d4]
lea rdi, [rbx + 0x190]
sub rcx, qword [rdi]
mov rax, r15
mulss xmm0, dword [0x1801377e0]
xorps xmm1, xmm1
mov r15, qword [rsp + 0x20]
imul rcx
sar rdx, 0x12
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cvtsi2ss xmm1, rdx
comiss xmm1, xmm0
jb 0x1800a1313
mov byte [0x180153140], 0
mov byte [0x180153130], 0
mov byte [rbx + 0x199], 0
jmp 0x1800a1313
movzx eax, byte [rbx + 0x198]
test al, al
jne 0x1800a12c5
movzx eax, byte [rbx + 0x198]
test al, al
jne 0x1800a12c5
mov qword [rsp + 0x40], r14
nop
lea rcx, [rsp + 0x40]
call fcn.18008ef60
movzx eax, byte [rbx + 0x198]
test al, al
je 0x1800a12b0
mov rax, qword [rbx + 0x1a0]
cmp rax, qword [rbx + 0x1a8]
je 0x1800a12dc
mov qword [rbx + 0x1a8], rax
mov rcx, qword [0x180153238]
cmp qword [0x180153230], rcx
mov qword [rsp + 0x40], 0xa
cmovne rcx, qword [0x180153230]
mov qword [0x180153238], rcx
lea rcx, [rsp + 0x40]
call fcn.18008ef60
lea rdi, [rbx + 0x190]
movzx eax, byte [0x1801530b5]
mov rbp, qword [rsp + 0x48]
test al, al
jne 0x1800a13a8
mov ecx, dword [0x18015324c]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1800a1371
cmp byte [rbx + 0x199], 0
je 0x1800a1371
movzx eax, byte [0x180153130]
mov rcx, rdi
cmp byte [0x180153249], 0
mov byte [0x180153140], r14b
cmovne eax, r14d
mov byte [0x180153130], al
call fcn.18008dc70
mov byte [rbx + 0x199], 0
jmp 0x1800a13a8
mov ecx, dword [0x18015324c]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x1800a13a8
lea rcx, [rsp + 0x40]
mov byte [0x180153140], al
mov byte [0x180153130], al
mov byte [rbx + 0x199], r14b
mov qword [rsp + 0x40], 0xa
call fcn.18008ef60
lea rcx, [rsp + 0x40]
mov qword [rsp + 0x40], r14
call fcn.18008ef60
mov r14, qword [rsp + 0x58]
mov rdi, qword [rsp + 0x50]
add rsp, 0x28
pop rsi
pop rbx
ret