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

Disassembly:
push ebx
push esi
push edi
push 0x52f5c8
xor ebx, ebx
xor esi, esi
call dword [sym.imp.USER32.dll_GetClipCursor]
mov eax, dword [0x537c7c]
mov ecx, dword [0x52f5f0]
lea edx, [eax + 0xa]
lea edi, [ebx + 1]
cmp ecx, edx
jae 0x4014ff
cmp dword [0x52f5e8], eax
jb 0x401501
mov esi, edi
mov eax, dword [esp + 0x10]
cmp dword [0x52f5d8], eax
jne 0x401629
mov edx, dword [0x52f5dc]
cmp edx, dword [esp + 0x14]
je 0x40153f
mov edx, dword [0x52f5c8]
inc edx
cmp eax, edx
jle 0x40153f
mov edx, dword [0x52f5d0]
dec edx
cmp eax, edx
jge 0x40153f
add dword [0x52f5f4], edi
mov dword [0x52f5f8], ebx
cmp dword [0x52f5f4], 0xdc
ja 0x401557
cmp dword [0x52f5f8], 0xaa
jbe 0x401587
cmp dword [0x537c80], ebx
jne 0x401587
push ecx
push 0x50d0d8
mov dword [0x52f5f4], ebx
mov dword [0x52f5f8], ebx
call fcn.00404690
add esp, 4
push eax
push 0x527e20
call fcn.00401350
add esp, 0xc
mov eax, dword [esp + 0x10]
sub eax, dword [0x52f5d8]
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x64
jle 0x40173b
call dword [0x5385fc]
sub eax, dword [0x52f604]
cmp eax, 0x7d0
jbe 0x40173b
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
push 0xa
mov dword [0x52f5d8], eax
mov dword [0x52f5dc], ecx
call dword [sym.imp.KERNEL32.dll_Sleep]
lea edx, [esp + 0x10]
push edx
call dword [sym.imp.USER32.dll_GetCursorPos]
call dword [0x5385fc]
sub eax, dword [0x52f600]
cmp eax, 0x1f4
jae 0x4016ba
mov eax, dword [0x538384]
sub eax, dword [0x52f5fc]
add dword [0x52f5ec], edi
cmp eax, 0x14
jae 0x40167c
cmp byte [0x52f61a], bl
je 0x401668
push edi
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x401668
push 0x50d0c4
call fcn.00404690
jmp 0x401690
mov eax, dword [esp + 0x14]
cmp dword [0x52f5dc], eax
jne 0x40153f
mov edx, dword [0x52f5cc]
inc edx
cmp eax, edx
jle 0x40153f
mov edx, dword [0x52f5d4]
dec edx
cmp eax, edx
jge 0x40153f
add dword [0x52f5f8], edi
mov dword [0x52f5f4], ebx
jmp 0x40154b
mov eax, dword [0x52f5e8]
add eax, edi
push eax
mov dword [0x52f5e8], eax
push 0x50d0b0
jmp 0x401688
push ebx
mov dword [0x52f5e8], ebx
push 0x50d09c
call fcn.00404690
add esp, 4
push eax
push 0x527e20
call fcn.00401350
mov ecx, dword [0x538384]
add esp, 0xc
mov dword [0x52f5fc], ecx
call dword [0x5385fc]
mov dword [0x52f604], eax
jmp 0x4018e8
call dword [0x5385fc]
mov dword [0x52f600], eax
mov eax, dword [esp + 0x10]
sub eax, dword [0x52f5d8]
cdq
xor eax, edx
sub eax, edx
push eax
push 0x50d090
call fcn.00404690
add esp, 4
push eax
push 0x527e20
call fcn.00401350
mov eax, dword [esp + 0x1c]
sub eax, dword [0x52f5d8]
add esp, 0xc
cdq
xor eax, edx
sub eax, edx
cmp eax, 5
jge 0x4018e8
cmp byte [0x52f619], bl
je 0x401729
push 2
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x401729
cmp dword [0x52f5e8], ebx
ja 0x401894
mov eax, dword [0x52f5e8]
add eax, edi
push eax
push 0x50d07c
jmp 0x4018c7
mov eax, dword [esp + 0x14]
sub eax, dword [0x52f5dc]
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x64
jle 0x4018e8
call dword [0x5385fc]
sub eax, dword [0x52f604]
cmp eax, 0x7d0
jbe 0x4018e8
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
push 0xa
mov dword [0x52f5d8], edx
mov dword [0x52f5dc], eax
call dword [sym.imp.KERNEL32.dll_Sleep]
lea ecx, [esp + 0x10]
push ecx
call dword [sym.imp.USER32.dll_GetCursorPos]
call dword [0x5385fc]
sub eax, dword [0x52f600]
cmp eax, 0x1f4
jae 0x40182e
mov edx, dword [0x538384]
sub edx, dword [0x52f5fc]
add dword [0x52f5ec], edi
cmp edx, 0x14
jae 0x4017f2
cmp byte [0x52f61a], bl
je 0x4017de
push edi
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x4017de
push 0x50d0c4
call fcn.00404690
jmp 0x401806
mov eax, dword [0x52f5e8]
add eax, edi
push eax
mov dword [0x52f5e8], eax
push 0x50d068
jmp 0x4017fe
push ebx
mov dword [0x52f5e8], ebx
push 0x50d054
call fcn.00404690
add esp, 4
push eax
push 0x527e20
call fcn.00401350
mov eax, dword [0x538384]
add esp, 0xc
mov dword [0x52f5fc], eax
call dword [0x5385fc]
mov dword [0x52f604], eax
jmp 0x4018e8
call dword [0x5385fc]
mov dword [0x52f600], eax
mov eax, dword [esp + 0x14]
sub eax, dword [0x52f5dc]
cdq
xor eax, edx
sub eax, edx
push eax
push 0x50d048
call fcn.00404690
add esp, 4
push eax
push 0x527e20
call fcn.00401350
mov eax, dword [esp + 0x20]
sub eax, dword [0x52f5dc]
add esp, 0xc
cdq
xor eax, edx
sub eax, edx
cmp eax, 5
jge 0x4018e8
cmp byte [0x52f619], bl
je 0x4018ba
push edi
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x4018ba
cmp dword [0x52f5e8], ebx
jbe 0x4018ba
push 0x50d0c4
call fcn.00404690
push eax
push 0x527e20
call fcn.00401350
sub dword [0x52f5e8], edi
add esp, 0xc
sub dword [0x52f5ec], edi
jmp 0x4018e8
mov eax, dword [0x52f5e8]
add eax, edi
push eax
push 0x50d034
add dword [0x52f5ec], edi
mov dword [0x52f5e8], eax
call fcn.00404690
add esp, 4
push eax
push 0x527e20
call fcn.00401350
add esp, 0xc
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
pop edi
mov eax, esi
pop esi
mov dword [0x52f5d8], ecx
mov dword [0x52f5dc], edx
pop ebx
ret