Function at 0x180031a30
Capabilities:
Log keystrokes via polling

Disassembly:
push rbx
push rsi
sub rsp, 0x28
movzx eax, byte [0x18011f080]
mov rsi, rdx
mov byte [rcx + 0x31], al
mov rbx, rcx
test al, al
jne 0x180031a65
lea rcx, [rsp + 0x40]
mov qword [rsp + 0x40], 0xfa
call fcn.1800048d0
add rsp, 0x28
pop rsi
pop rbx
ret
mov rax, qword gs:[0x58]
mov ecx, dword [0x18011eec8]
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 [0x180120bc8], eax
jle 0x180031ac4
lea rcx, [0x180120bc8]
call fcn.1800a7210
cmp dword [0x180120bc8], 0xffffffff
jne 0x180031ac4
lea rcx, [0x1800ae6f0]
call fcn.1800a6ff8
lea rcx, [0x180120bc8]
call fcn.1800a71b0
cmp byte [0x18011f0d9], 0
mov r14d, 1
je 0x180031d7a
cmp byte [0x18011f07a], 0
mov qword [rsp + 0x20], r15
movabs r15, 0x431bde82d7b634db
je 0x180031ce8
mov eax, dword [rdi + rbp]
cmp dword [0x180120bcc], eax
jle 0x180031b36
lea rcx, [0x180120bcc]
call fcn.1800a7210
cmp dword [0x180120bcc], 0xffffffff
jne 0x180031b36
lea rcx, [0x180120bd0]
mov qword [0x180120bd0], 0
call fcn.18000a9b0
lea rcx, [0x180120bcc]
call fcn.1800a71b0
mov rax, qword [0x18011f0c0]
mov rdx, qword [0x18011f0c8]
cmp rax, rdx
je 0x180031c6d
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 0x180031b6b
imul rcx, rax, 0x64
jmp 0x180031b8c
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 [0x180120bd0]
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 [0x180106284]
jb 0x180031c5a
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 0x180031bda
imul rdx, rax, 0x64
jmp 0x180031bfb
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 [0x180106730]
movss xmm2, dword [0x18010609c]
mov qword [0x180120bd0], rdx
mov rdx, qword [0x18011f0c8]
mov r8, qword [rsi]
add r8, 0x24
movss xmm0, dword [rdx - 0xc]
subss xmm0, dword [r8]
andps xmm0, xmm1
comiss xmm2, xmm0
jbe 0x180031c74
movss xmm0, dword [rdx - 8]
subss xmm0, dword [r8 + 4]
andps xmm0, xmm1
comiss xmm2, xmm0
jbe 0x180031c74
movss xmm0, dword [rdx - 4]
subss xmm0, dword [r8 + 8]
andps xmm0, xmm1
comiss xmm2, xmm0
ja 0x180031c9c
jmp 0x180031c74
mov rdx, qword [0x18011f0c8]
mov rax, qword [0x18011f0c0]
cmp rax, rdx
jne 0x180031c9c
mov r8, qword [rsi]
add r8, 0x24
cmp rdx, qword [0x18011f0d0]
je 0x180031c97
movsd xmm0, qword [r8]
movsd qword [rdx], xmm0
mov eax, dword [r8 + 8]
mov dword [rdx + 8], eax
add qword [0x18011f0c8], 0xc
jmp 0x180031c9c
call fcn.180032410
movzx eax, byte [rbx + 0x58]
test al, al
je 0x180031ce8
lea rcx, [rbx + 0x60]
lea rax, [0x18011f0c0]
cmp rcx, rax
je 0x180031ce8
mov r8, qword [0x18011f0c8]
movabs rax, 0x2aaaaaaaaaaaaaab
sub r8, qword [0x18011f0c0]
imul r8
sar rdx, 1
mov r8, rdx
shr r8, 0x3f
add r8, rdx
mov rdx, qword [0x18011f0c0]
call fcn.1800321e0
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 0x180031d06
imul rcx, rax, 0x64
jmp 0x180031d24
cqo
idiv rdi
mov r8, rax
imul rax, rdx, 0x3b9aca00
imul rcx, r8, 0x3b9aca00
cqo
idiv rdi
add rcx, rax
sub rcx, qword [rbx + 0x50]
lea rdi, [rbx + 0x50]
movss xmm0, dword [0x18011c2d8]
mov rax, r15
mulss xmm0, dword [0x1801062b8]
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 0x180031de4
mov byte [0x18011f0d9], 0
mov byte [0x18011f0d8], 0
mov byte [rbx + 0x59], 0
jmp 0x180031de4
movzx eax, byte [rbx + 0x58]
test al, al
jne 0x180031da2
movzx eax, byte [rbx + 0x58]
test al, al
jne 0x180031da2
mov qword [rsp + 0x40], r14
nop
lea rcx, [rsp + 0x40]
call fcn.1800048d0
movzx eax, byte [rbx + 0x58]
test al, al
je 0x180031d90
mov rax, qword [rbx + 0x60]
cmp rax, qword [rbx + 0x68]
je 0x180031db0
mov qword [rbx + 0x68], rax
mov rcx, qword [0x18011f0c8]
cmp qword [0x18011f0c0], rcx
mov qword [rsp + 0x40], 0xa
cmovne rcx, qword [0x18011f0c0]
mov qword [0x18011f0c8], rcx
lea rcx, [rsp + 0x40]
call fcn.1800048d0
lea rdi, [rbx + 0x50]
movzx eax, byte [0x18011f0b8]
mov rbp, qword [rsp + 0x48]
test al, al
jne 0x180031e6c
mov ecx, dword [0x18011f07c]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x180031e38
cmp byte [rbx + 0x59], 0
je 0x180031e38
movzx eax, byte [0x18011f0d8]
mov rcx, rdi
cmp byte [0x18011f07b], 0
mov byte [0x18011f0d9], r14b
cmovne eax, r14d
mov byte [0x18011f0d8], al
call fcn.18000a9b0
mov byte [rbx + 0x59], 0
jmp 0x180031e6c
mov ecx, dword [0x18011f07c]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x180031e6c
lea rcx, [rsp + 0x40]
mov byte [0x18011f0d9], al
mov byte [0x18011f0d8], al
mov byte [rbx + 0x59], r14b
mov qword [rsp + 0x40], 0xa
call fcn.1800048d0
lea rcx, [rsp + 0x40]
mov qword [rsp + 0x40], r14
call fcn.1800048d0
mov r14, qword [rsp + 0x58]
mov rdi, qword [rsp + 0x50]
add rsp, 0x28
pop rsi
pop rbx
ret