Function at 0x140002e30
Capabilities:
Check for unmoving mouse cursor
Log keystrokes via polling

Disassembly:
push rsi
push r14
sub rsp, 0x58
mov rax, qword [0x140047030]
xor rax, rsp
mov qword [rsp + 0x40], rax
test ecx, ecx
jle 0x140002e5c
test edx, edx
jle 0x140002e5c
xor edx, edx
mov eax, 0xffff0
div ecx
mov esi, eax
jmp 0x140002e61
mov esi, 0x320
xor r14d, r14d
mov qword [rsp + 0x78], rbx
mov qword [rsp + 0x50], rdi
test r8b, r8b
je 0x140003000
mov eax, 0x51eb851f
mov qword [rsp + 0x80], rbp
imul dword [0x140047c10]
lea ecx, [r14 + 1]
xor bpl, bpl
sar edx, 4
mov edi, edx
dec edx
shr edi, 0x1f
add edi, edx
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x140002ff8
lea ebx, [r14 + 1]
lea ecx, [rbx + 0x31]
call qword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, ebx
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x140002ef1
movzx ebp, bl
nop dword [rax]
cmp ebx, edi
jge 0x140002ef1
mov ecx, 0x32
call qword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, 1
inc ebx
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x140002ed0
mov ecx, 1
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x140002fe2
cmp ebx, edi
jl 0x140002fe2
test bpl, bpl
je 0x140002f23
mov ecx, dword [0x140047c10]
imul eax, edi, 0x32
sub ecx, eax
call qword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, 1
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
lea rcx, [rsp + 0x38]
movzx ebx, ax
call qword [sym.imp.USER32.dll_GetCursorPos]
test bx, bx
movzx ecx, bpl
mov edx, r14d
cmovs edx, ecx
test dl, dl
je 0x140002ff8
mov ecx, 1
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
movzx edi, ax
shr di, 0xf
mov ecx, 1
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x140002fcd
call fcn.1400196ac
mov ebx, eax
mov eax, 0x66666667
imul ebx
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
lea ecx, [rdx + rdx*4]
add ecx, ecx
sub ebx, ecx
call fcn.1400196ac
and eax, 0x80000001
jge 0x140002fa5
dec eax
or eax, 0xfffffffe
inc eax
xor r9d, r9d
mov qword [rsp + 0x20], r14
lea edx, [rbx - 5]
lea r8d, [rax + 0x64]
add edx, esi
lea ecx, [r9 + 1]
call qword [sym.imp.USER32.dll_mouse_event]
mov ecx, 1
call qword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x140002f63
test dil, dil
je 0x140002ff8
mov edx, dword [rsp + 0x3c]
mov ecx, dword [rsp + 0x38]
call qword [sym.imp.USER32.dll_SetCursorPos]
jmp 0x140002ff8
mov ecx, 1
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
lea rcx, [rsp + 0x38]
call qword [sym.imp.USER32.dll_GetCursorPos]
mov rbp, qword [rsp + 0x80]
mov ecx, 0x56
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x1400030cb
mov ecx, 0xc8
call qword [sym.imp.KERNEL32.dll_Sleep]
lea rcx, [rsp + 0x38]
call qword [sym.imp.USER32.dll_GetCursorPos]
mov ecx, 0x56
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
movzx edi, ax
mov ecx, 0x56
shr di, 0xf
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x1400030b8
nop dword [rax]
call fcn.1400196ac
mov ebx, eax
mov eax, 0x66666667
imul ebx
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
lea ecx, [rdx + rdx*4]
add ecx, ecx
sub ebx, ecx
call fcn.1400196ac
and eax, 0x80000001
jge 0x140003082
dec eax
or eax, 0xfffffffe
inc eax
xor r9d, r9d
mov qword [rsp + 0x20], r14
lea edx, [rbx - 5]
lea r8d, [rax + 0x64]
add edx, esi
lea ecx, [r9 + 1]
call qword [sym.imp.USER32.dll_mouse_event]
mov ecx, 1
call qword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, 0x56
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x140003050
test dil, dil
je 0x1400030cb
mov edx, dword [rsp + 0x3c]
mov ecx, dword [rsp + 0x38]
call qword [sym.imp.USER32.dll_SetCursorPos]
mov rdi, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x78]
mov rcx, qword [rsp + 0x40]
xor rcx, rsp
call fcn.14000f600
add rsp, 0x58
pop r14
pop rsi
ret