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

Disassembly:
mov qword [rsp + 0x10], rdx
push rbx
push rdi
push r12
sub rsp, 0xc0
mov rax, qword [rcx]
movzx ebx, r8b
mov rdi, rcx
call qword [rax + 0x28]
mov r8, qword [rsp + 0xe8]
movzx r9d, bl
mov r10, qword [rax]
mov rdx, rdi
mov rcx, rax
mov r12, rax
call qword [r10 + 0x788]
test al, al
jne 0x14012d101
mov rdx, qword [r12]
mov rcx, r12
call qword [rdx + 0x598]
test al, al
jne 0x14012d101
mov rdx, qword [rsp + 0xe8]
movzx r8d, bl
mov rcx, rdi
call fcn.14012bbe0
mov r11, qword [r12 + 0xf0]
test r11, r11
je 0x14012c978
cmp dword [r11 + 0xc4], 0
jne 0x14012d101
mov dword [rdi + 0x1a0], 0xffffffff
mov dword [rdi + 0x19c], 0xffffffff
test bl, bl
jne 0x14012c9aa
mov rax, qword [rdi]
mov dl, 1
mov rcx, rdi
call qword [rax + 0x2a8]
add rsp, 0xc0
pop r12
pop rdi
pop rbx
ret
mov rcx, rdi
mov qword [rsp + 0xb0], r13
call fcn.14011f700
mov r13d, eax
test eax, eax
jne 0x14012c9d4
mov rax, qword [rdi]
mov dl, 1
mov rcx, rdi
call qword [rax + 0x2a8]
jmp 0x14012d0f9
mov rax, qword [rdi]
mov qword [rsp + 0xf0], rbp
mov rcx, rdi
mov qword [rsp + 0xb8], rsi
mov qword [rsp + 0xa8], r14
call qword [rax + 0x368]
mov esi, 3
lea rbx, [rdi + 0x14c]
mov ebp, eax
mov r14d, eax
nop dword [rax]
mov ecx, dword [rbx]
cmp dword [rbx + 8], ecx
jle 0x14012ca3f
mov ecx, dword [rbx + 4]
cmp dword [rbx + 0xc], ecx
jle 0x14012ca3f
mov rdx, qword [rsp + 0xe8]
movsxd rax, esi
add rax, rax
lea rcx, [rdi + rax*8 + 0x11c]
call qword [sym.imp.USER32.dll_PtInRect]
test eax, eax
jne 0x14012ca4c
inc esi
add rbx, 0x10
cmp esi, 7
jle 0x14012ca10
jmp 0x14012ca52
mov dword [rdi + 0x19c], esi
mov rax, qword [rdi]
mov dl, 1
mov rcx, rdi
call qword [rax + 0x2a8]
cmp dword [rdi + 0x19c], 0xffffffff
je 0x14012d0e1
mov rcx, r12
mov qword [rsp + 0xa0], r15
call fcn.140061c40
mov rcx, rdi
test al, al
mov rax, qword [rdi]
sete bl
call qword [rax + 0x80]
mov r15d, dword [rdi + 0x19c]
movzx ecx, bl
test al, al
mov ebx, 1
cmovne ecx, ebx
lea rdx, [rsp + 0x38]
mov r8d, r15d
mov dword [rsp + 0xf8], ecx
mov rcx, rdi
call fcn.140120150
mov rcx, qword [rdi + 0x60]
test rcx, rcx
jne 0x14012cac7
xor r12d, r12d
jmp 0x14012cacb
mov r12, qword [rcx + 0x40]
mov rax, qword [rsp + 0xe8]
xor esi, esi
mov ecx, r15d
sub ecx, 3
mov qword [rsp + 0x30], rax
mov byte [rsp + 0xe0], sil
je 0x14012cb1f
sub ecx, ebx
je 0x14012cb26
sub ecx, ebx
je 0x14012cb14
sub ecx, ebx
je 0x14012cb1b
cmp ecx, ebx
jne 0x14012cb40
mov rax, qword [rdi]
xor edx, edx
mov rcx, rdi
mov dword [rdi + 0x1a0], 7
call qword [rax + 0x2a8]
jmp 0x14012cb40
mov byte [rsp + 0xe0], bl
mov esi, ebx
jmp 0x14012cb39
mov byte [rsp + 0xe0], bl
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x378]
mov esi, eax
test eax, eax
cmove esi, ebx
cmp esi, r13d
cmova esi, r13d
mov rcx, r12
call qword [sym.imp.USER32.dll_SetCapture]
test esi, esi
je 0x14012cb62
xor r9d, r9d
mov edx, 0x191
mov rcx, r12
lea r8d, [r9 + 0x32]
call qword [sym.imp.USER32.dll_SetTimer]
mov rcx, r12
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x14012d087
lea rcx, [rsp + 0x68]
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov dword [rsp + 0x20], 0
call qword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
jne 0x14012cbae
mov rcx, r12
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x14012d087
call qword [sym.imp.USER32.dll_WaitMessage]
jmp 0x14012d060
mov eax, dword [rsp + 0x70]
xor bl, bl
cmp eax, 0x113
ja 0x14012cc4b
cmp eax, 0x113
je 0x14012cd15
cmp eax, 0x1c
je 0x14012d087
cmp eax, 0x1f
je 0x14012d087
cmp eax, 0xff
jbe 0x14012cbee
cmp eax, 0x101
jbe 0x14012d087
mov ecx, 1
call qword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x14012d087
mov ecx, 4
call qword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
jne 0x14012d087
mov ecx, 2
call qword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
jne 0x14012d087
call fcn.1400794f0
test eax, eax
jne 0x14012d087
jmp 0x14012cee9
cmp eax, 0x200
je 0x14012cc7b
cmp eax, 0x201
jbe 0x14012cbee
cmp eax, 0x209
jbe 0x14012d087
cmp eax, 0x215
jne 0x14012cbee
cmp qword [rsp + 0x78], r12
jne 0x14012d087
jmp 0x14012cee9
cmp r15d, 7
jne 0x14012cd0d
lea ecx, [r15 - 6]
call qword [sym.imp.USER32.dll_GetKeyState]
mov ebx, 0x8000
test bx, ax
je 0x14012d087
lea ecx, [r15 - 3]
call qword [sym.imp.USER32.dll_GetKeyState]
test bx, ax
jne 0x14012d087
lea ecx, [r15 - 5]
call qword [sym.imp.USER32.dll_GetKeyState]
test bx, ax
jne 0x14012d087
call fcn.1400794f0
test eax, eax
jne 0x14012d087
mov r8d, dword [rsp + 0x70]
lea rcx, [rsp + 0x68]
xor edx, edx
mov r9d, r8d
mov dword [rsp + 0x20], 1
call qword [sym.imp.USER32.dll_PeekMessageW]
lea rcx, [rsp + 0x30]
mov bl, 1
call qword [sym.imp.USER32.dll_GetCursorPos]
lea rdx, [rsp + 0x30]
mov rcx, r12
call qword [sym.imp.USER32.dll_ScreenToClient]
jmp 0x14012cee9
test esi, esi
je 0x14012cee9
mov ecx, 1
call qword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x14012d087
mov ecx, 4
call qword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
jne 0x14012d087
mov ecx, 2
call qword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
jne 0x14012d087
call fcn.1400794f0
test eax, eax
jne 0x14012d087
mov r8d, dword [rsp + 0x70]
cmp r8d, 0x113
jne 0x14012cd8a
cmp qword [rsp + 0x78], 0x191
jne 0x14012cee9
lea rcx, [rsp + 0x68]
mov r9d, r8d
xor edx, edx
mov dword [rsp + 0x20], 1
call qword [sym.imp.USER32.dll_PeekMessageW]
lea rcx, [rsp + 0x30]
call qword [sym.imp.USER32.dll_GetCursorPos]
lea rdx, [rsp + 0x30]
mov rcx, r12
call qword [sym.imp.USER32.dll_ScreenToClient]
mov rdx, qword [rsp + 0x30]
lea rcx, [rsp + 0x38]
call qword [sym.imp.USER32.dll_PtInRect]
test eax, eax
jne 0x14012cdf9
cmp dword [rdi + 0x1a0], 0xffffffff
je 0x14012d060
mov rax, qword [rdi]
mov dl, 1
mov rcx, rdi
mov dword [rdi + 0x1a0], 0xffffffff
call qword [rax + 0x2a8]
jmp 0x14012d060
cmp byte [rsp + 0xe0], 0
je 0x14012ce31
test ebp, ebp
jne 0x14012ce25
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x368]
mov rcx, rdi
mov ebp, eax
call fcn.14011f700
mov r13d, eax
jmp 0x14012cee9
cmp ebp, esi
jae 0x14012ce2d
xor ebp, ebp
jmp 0x14012ce64
sub ebp, esi
jmp 0x14012ce64
cmp ebp, r13d
jb 0x14012ce54
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x368]
mov rcx, rdi
mov ebp, eax
call fcn.14011f700
mov r13d, eax
jmp 0x14012cee9
mov eax, r13d
sub eax, ebp
cmp esi, eax
jbe 0x14012ce62
mov ebp, r13d
jmp 0x14012ce64
add ebp, esi
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x368]
cmp eax, ebp
je 0x14012ceb7
mov rax, qword [rdi]
mov edx, ebp
mov rcx, rdi
call qword [rax + 0x370]
mov r11, qword [rdi]
mov rcx, rdi
call qword [r11 + 0x368]
mov rcx, rdi
mov ebp, eax
call fcn.14011f700
mov rcx, rdi
mov r13d, eax
mov rax, qword [rdi]
call qword [rax + 0x3c8]
mov r11, qword [rdi]
mov dl, 1
mov rcx, rdi
call qword [r11 + 0x2a8]
lea rdx, [rsp + 0x48]
mov r8d, r15d
mov rcx, rdi
call fcn.140120150
lea rdx, [rsp + 0x38]
mov ecx, dword [rax]
mov dword [rdx], ecx
mov ecx, dword [rax + 4]
mov dword [rdx + 4], ecx
mov ecx, dword [rax + 8]
mov dword [rdx + 8], ecx
mov eax, dword [rax + 0xc]
mov dword [rdi + 0x1a0], r15d
mov dword [rdx + 0xc], eax
test r13d, r13d
je 0x14012d087
test bl, bl
je 0x14012d04b
cmp byte [rsp + 0xf8], 0
je 0x14012cf2d
mov r8d, dword [rdi + 0x144]
mov ebx, dword [rsp + 0x30]
sub r8d, dword [rdi + 0x194]
sub ebx, dword [rsp + 0xe8]
sub r8d, dword [rdi + 0x13c]
add r8d, dword [rdi + 0x18c]
jmp 0x14012cf54
mov r8d, dword [rdi + 0x190]
mov ebx, dword [rsp + 0x34]
sub r8d, dword [rdi + 0x198]
sub ebx, dword [rsp + 0xec]
sub r8d, dword [rdi + 0x140]
add r8d, dword [rdi + 0x148]
test r8d, r8d
jle 0x14012d087
mov eax, ebx
cdq
xor eax, edx
sub eax, edx
cmp eax, r8d
jle 0x14012cf77
test ebx, ebx
jns 0x14012cf74
mov ebx, r8d
neg ebx
jmp 0x14012cf77
mov ebx, r8d
test ebx, ebx
je 0x14012cfa4
mov eax, ebx
mov ecx, r13d
cdq
xor eax, edx
sub eax, edx
mov edx, eax
call qword [sym.imp.KERNEL32.dll_MulDiv]
mov r11d, eax
test ebx, ebx
jns 0x14012cfa7
cmp eax, r14d
jb 0x14012cf9d
xor ebp, ebp
jmp 0x14012cfc4
mov ebp, r14d
sub ebp, eax
jmp 0x14012cfc4
xor r11d, r11d
cmp r14d, r13d
ja 0x14012d073
mov eax, r13d
sub eax, r14d
cmp r11d, eax
jbe 0x14012cfc0
mov ebp, r13d
jmp 0x14012cfc4
lea ebp, [r11 + r14]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x368]
cmp eax, ebp
je 0x14012d017
mov rax, qword [rdi]
mov edx, ebp
mov rcx, rdi
call qword [rax + 0x370]
mov r11, qword [rdi]
mov rcx, rdi
call qword [r11 + 0x368]
mov rcx, rdi
mov ebp, eax
call fcn.14011f700
mov rcx, rdi
mov r13d, eax
mov rax, qword [rdi]
call qword [rax + 0x3c8]
mov r11, qword [rdi]
mov dl, 1
mov rcx, rdi
call qword [r11 + 0x2a8]
lea rdx, [rsp + 0x58]
mov r8d, r15d
mov rcx, rdi
call fcn.140120150
lea rdx, [rsp + 0x38]
mov ecx, dword [rax]
mov dword [rdx], ecx
mov ecx, dword [rax + 4]
mov dword [rdx + 4], ecx
mov ecx, dword [rax + 8]
mov dword [rdx + 8], ecx
mov eax, dword [rax + 0xc]
mov dword [rdi + 0x1a0], r15d
mov dword [rdx + 0xc], eax
jmp 0x14012d060
call fcn.14000d854
mov rcx, rax
mov rdx, qword [rax]
call qword [rdx + 0xb8]
test eax, eax
je 0x14012d087
mov rcx, r12
call qword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x14012cb73
jmp 0x14012d087
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x368]
mov rcx, rdi
call fcn.14011f700
mov rcx, r12
call qword [sym.imp.USER32.dll_IsWindow]
mov r15, qword [rsp + 0xa0]
test eax, eax
je 0x14012d0e1
test esi, esi
je 0x14012d0ae
mov edx, 0x191
mov rcx, r12
call qword [sym.imp.USER32.dll_KillTimer]
mov rax, qword [rdi]
mov dl, 1
mov rcx, rdi
mov dword [rdi + 0x1a0], 0xffffffff
mov dword [rdi + 0x19c], 0xffffffff
call qword [rax + 0x2a8]
call qword [sym.imp.USER32.dll_GetCapture]
cmp rax, r12
jne 0x14012d0e1
call qword [sym.imp.USER32.dll_ReleaseCapture]
mov rbp, qword [rsp + 0xf0]
mov rsi, qword [rsp + 0xb8]
mov r14, qword [rsp + 0xa8]
mov r13, qword [rsp + 0xb0]
add rsp, 0xc0
pop r12
pop rdi
pop rbx
ret