Function at 0x180031810
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r14
sub rsp, 0xa0
mov edi, dword [0x1801db820]
mov rsi, rdx
mov ebp, dword [0x1801db828]
inc edi
mov dword [0x1801db820], edi
mov rbx, rcx
cmp ebp, edi
jne 0x180031875
lea r8, [rcx + 0x20]
lea rcx, [0x1801db8e0]
cmp rcx, r8
je 0x180031875
cmp qword [r8 + 0x18], 0x10
mov rdx, r8
jb 0x180031860
mov rdx, qword [r8]
mov r8, qword [r8 + 0x10]
call fcn.1800232e0
mov ebp, dword [0x1801db828]
mov edi, dword [0x1801db820]
call fcn.180032d90
test al, al
je 0x180031a0b
mov eax, dword [0x1801db82c]
lea rdx, [rsp + 0x80]
inc eax
lea rcx, str.italic_s
mov dword [0x1801db82c], eax
cmp ebp, edi
jne 0x180031936
mov dword [0x1801db7e0], eax
movups xmm0, xmmword [rbx]
movups xmm1, xmmword [rbx + 0x10]
movaps xmmword [rsp + 0x80], xmm0
movaps xmmword [rsp + 0x90], xmm1
call fcn.1800ab2d0
movdqa xmm0, xmmword [0x180136670]
or r8, 0xffffffffffffffff
movdqu xmmword [rsp + 0x70], xmm0
mov byte [rsp + 0x60], 0
inc r8
cmp byte [rax + r8], 0
jne 0x1800318e0
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.1800232e0
mov eax, dword [0x1801db82c]
inc eax
mov byte [rsp + 0x58], 0
mov byte [rsp + 0x50], 1
movd xmm3, eax
mov eax, dword [0x18015b09c]
mov dword [rsp + 0x48], eax
mov eax, dword [0x18015b098]
mov dword [rsp + 0x40], eax
mov eax, dword [0x18015b094]
mov dword [rsp + 0x38], eax
mov eax, dword [0x18015b090]
jmp 0x1800319c1
movups xmm0, xmmword [rbx]
movups xmm1, xmmword [rbx + 0x10]
movaps xmmword [rsp + 0x80], xmm0
movaps xmmword [rsp + 0x90], xmm1
call fcn.1800ab2d0
movdqa xmm0, xmmword [0x180136670]
or r8, 0xffffffffffffffff
movdqu xmmword [rsp + 0x70], xmm0
mov byte [rsp + 0x60], 0
nop dword [rax]
inc r8
cmp byte [rax + r8], 0
jne 0x180031970
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.1800232e0
mov eax, dword [0x1801db82c]
inc eax
mov byte [rsp + 0x58], 0
mov byte [rsp + 0x50], 1
movd xmm3, eax
mov eax, dword [0x18015b05c]
mov dword [rsp + 0x48], eax
mov eax, dword [0x18015b058]
mov dword [rsp + 0x40], eax
mov eax, dword [0x18015b054]
mov dword [rsp + 0x38], eax
mov eax, dword [0x18015b050]
movss xmm0, dword [0x180135e84]
lea rcx, [rsp + 0x60]
movss xmm2, dword [0x1801db7c8]
mov edx, 1
addss xmm2, dword [0x1801db7c4]
cvtdq2ps xmm3, xmm3
mov dword [rsp + 0x30], eax
movss dword [rsp + 0x28], xmm0
mulss xmm3, dword [0x180135d94]
movss dword [rsp + 0x20], xmm0
addss xmm3, dword [0x180135dd8]
call fcn.180094b70
movabs r14, 0x9148803485dedf45
mov rcx, r14
call fcn.1800b83e0
xor edi, edi
mov qword [rsp + 0xc0], rdi
mov dword [rsp + 0xc0], edi
mov rcx, qword [rsp + 0xc0]
call fcn.1800b8400
mov qword [rsp + 0xc0], rdi
mov dword [rsp + 0xc0], 0xbc
mov rcx, qword [rsp + 0xc0]
call fcn.1800b8400
call fcn.1800b8390
cmp dword [rax], edi
jne 0x180031ae8
lea ecx, [rdi + 0x68]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ebp, 0x8001
cmp ax, bp
je 0x180031ae8
mov rcx, r14
call fcn.1800b83e0
mov qword [rsp + 0xc0], rdi
mov dword [rsp + 0xc0], edi
mov rcx, qword [rsp + 0xc0]
call fcn.1800b8400
mov qword [rsp + 0xc0], rdi
mov dword [rsp + 0xc0], 0xbb
mov rcx, qword [rsp + 0xc0]
call fcn.1800b8400
call fcn.1800b8390
cmp dword [rax], edi
jne 0x180031ad6
lea ecx, [rdi + 0x62]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
cmp ax, bp
jne 0x180031b06
mov eax, dword [0x1801db828]
cmp eax, dword [0x1801db820]
jne 0x180031b06
inc eax
jmp 0x180031b00
mov eax, dword [0x1801db828]
mov ecx, dword [0x1801db820]
cmp eax, ecx
jne 0x180031b06
dec eax
cmp eax, 1
cmovl eax, ecx
mov dword [0x1801db828], eax
mov rdx, rbx
mov rcx, rsi
call fcn.180018390
lea rdx, [rbx + 0x20]
lea rcx, [rsi + 0x20]
call fcn.180018390
movzx eax, byte [rbx + 0x40]
lea rdx, [rbx + 0x48]
lea rcx, [rsi + 0x48]
mov byte [rsi + 0x40], al
call fcn.180018390
lea rdx, [rbx + 0x68]
lea rcx, [rsi + 0x68]
call fcn.180018390
lea r11, [rsp + 0xa0]
mov rax, rsi
mov rbx, qword [r11 + 0x28]
mov rbp, qword [r11 + 0x30]
mov rsp, r11
pop r14
pop rdi
pop rsi
ret