Function at 0x1400e4a50
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x130
mov r15, qword [0x14019e140]
lea rcx, [rsp + 0x178]
mov rax, qword [0x14019e1c8]
add r15, 8
mov edi, dword [0x14019eb5c]
mov esi, dword [0x14019eac8]
mov rbx, qword [0x14019f280]
mov qword [r15 + 0x108], rax
mov dword [r15 + 0x10], 0x3c888889
call qword [sym.imp.USER32.dll_GetCursorPos]
test eax, eax
je 0x1400e4ad2
mov ecx, dword [rsp + 0x178]
mov eax, esi
cdq
sub eax, edx
sar eax, 1
sub ecx, eax
mov eax, edi
cdq
mov dword [rbx], ecx
mov ecx, dword [rsp + 0x17c]
sub eax, edx
sar eax, 1
sub ecx, eax
mov dword [rbx + 4], ecx
mov rbx, qword [0x14019f280]
mov ecx, 1
mov esi, dword [rbx]
mov ebp, dword [rbx + 4]
call qword [sym.imp.USER32.dll_GetKeyState]
bt ax, 0xf
jae 0x1400e4af4
mov al, 1
jmp 0x1400e4af6
xor al, al
mov ecx, 1
mov byte [rbx + 8], al
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
and al, 1
mov ecx, 0x2d
mov byte [rbx + 9], al
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
movd xmm1, esi
lea rcx, [rsp + 0x30]
movd xmm0, ebp
and al, 1
mov byte [rbx + 0xa], al
cvtdq2ps xmm1, xmm1
cvtdq2ps xmm0, xmm0
subss xmm1, dword [0x14019eacc]
subss xmm0, dword [0x14019ef88]
movss dword [0x14019f400], xmm1
movss dword [0x14019f404], xmm0
movss dword [r15 + 0x118], xmm1
movss dword [r15 + 0x11c], xmm0
call qword [sym.imp.USER32.dll_GetKeyboardState]
lea r12, [rsp + 0x38]
mov edi, 8
sub r12, r15
lea r14, [r15 + 0x13c]
xor r13d, r13d
mov ebp, 0x9d
movzx eax, byte [r14]
cmp byte [r12 + r14 - 0x13c], r13b
jge 0x1400e4c6d
test al, al
jne 0x1400e4cd8
mov edx, dword [0x14019efa4]
add rdx, qword [0x14019a838]
jne 0x1400e4bae
mov ecx, r13d
jmp 0x1400e4bee
cmp byte [0x14019e189], r13b
lea r8, [rsp + 0x170]
mov rcx, qword [0x14019e1e0]
mov r9d, 4
mov qword [rsp + 0x20], r13
mov rcx, qword [rcx]
je 0x1400e4bdb
call fcn.14011f0f0
jmp 0x1400e4be1
call qword [sym.imp.KERNEL32.dll_ReadProcessMemory]
test eax, eax
mov ecx, r13d
cmovns ecx, dword [rsp + 0x170]
add ecx, 8
call fcn.1400ee7e0
test eax, eax
je 0x1400e4c03
cmp eax, 6
jne 0x1400e4cd8
movzx eax, byte [0x14019f0ca]
mov byte [r14], 1
test al, al
je 0x1400e4c2c
mov ecx, eax
mov rax, qword [0x14019e140]
cmp byte [rax + 0x128], r13b
cmove ecx, r13d
mov byte [0x14019f0ca], cl
mov rsi, qword [0x14019fa20]
mov rbx, qword [0x14019fa18]
cmp rbx, rsi
je 0x1400e4cd8
mov rcx, qword [rbx]
mov r8, rdi
mov r9, qword [0x14019f400]
mov edx, 0x100
mov rax, qword [rcx]
mov rax, qword [rax + 0x28]
call qword [case.0x14011a6f9.0]
add rbx, 8
cmp rbx, rsi
jne 0x1400e4c43
jmp 0x1400e4cd8
test al, al
je 0x1400e4cd8
movzx eax, byte [0x14019f0ca]
mov byte [r14], r13b
test al, al
je 0x1400e4c99
mov ecx, eax
mov rax, qword [0x14019e140]
cmp byte [rax + 0x128], r13b
cmove ecx, r13d
mov byte [0x14019f0ca], cl
mov rsi, qword [0x14019fa20]
mov rbx, qword [0x14019fa18]
cmp rbx, rsi
je 0x1400e4cd8
nop dword [rax]
mov rcx, qword [rbx]
mov r8, rdi
mov r9, qword [0x14019f400]
mov edx, 0x101
mov rax, qword [rcx]
mov rax, qword [rax + 0x28]
call qword [case.0x14011a6f9.0]
add rbx, 8
cmp rbx, rsi
jne 0x1400e4cb0
inc rdi
inc r14
sub rbp, 1
jne 0x1400e4b80
mov rcx, qword [0x14019f280]
cmp byte [rcx + 8], 1
sete al
mov byte [r15 + 0x120], al
cmp byte [rcx + 9], 1
sete al
mov byte [r15 + 0x410], al
mov rbx, qword [rsp + 0x180]
add rsp, 0x130
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret