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

Disassembly:
sub esp, 0x30
mov eax, dword [0x4773ec]
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x44]
push 2
push eax
push edi
call dword [sym.imp.USER32.dll_SetWindowLongA]
mov ebx, dword [sym.imp.USER32.dll_SendMessageA]
mov esi, dword [esp + 0x50]
mov ecx, esi
mov edx, esi
shr ecx, 0x10
shl ecx, 0x10
and edx, 0xffff
or ecx, edx
push ecx
push 0
push 0x1a9
push edi
call ebx
mov ebp, eax
push 0
push 0
and ebp, 0xffff
push 0x18b
push edi
mov dword [esp + 0x54], ebp
call ebx
cmp ebp, eax
jle 0x402c93
push esi
jmp 0x402dc9
cmp dword [esp + 0x48], 0x201
jne 0x402ccf
push 0
push ebp
push 0x187
push edi
call ebx
test eax, eax
jne 0x402ccf
mov eax, dword [esp + 0x4c]
mov ecx, dword [0x477388]
push esi
push eax
push 0x201
push edi
push ecx
call dword [sym.imp.USER32.dll_CallWindowProcA]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x30
ret 0x10
push 0
push ebp
push 0x199
push edi
call ebx
and eax, 0x1f0000
cmp eax, 0x1e0000
jne 0x402cec
push esi
jmp 0x402e16
push 0x17
call dword [sym.imp.USER32.dll_GetSystemMetrics]
mov esi, eax
push 0xfffffffffffffff4
neg esi
sbb esi, esi
push edi
neg esi
inc esi
mov dword [esp + 0x30], edi
call dword [sym.imp.USER32.dll_GetWindowLongA]
push 0
push 0
push 0x190
push edi
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], ebp
call ebx
lea edx, [esp + 0x10]
push edx
mov dword [esp + 0x3c], eax
call dword [sym.imp.USER32.dll_GetCursorPos]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push eax
push ecx
call dword [sym.imp.USER32.dll_WindowFromPoint]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x14]
lea edx, [eax + 4]
add eax, 0xfffffffc
push edx
lea edx, [ecx + 4]
push edx
push eax
add ecx, 0xfffffffc
lea eax, [esp + 0x24]
push ecx
push eax
call dword [sym.imp.USER32.dll_SetRect]
mov ebp, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push esi
call ebp
and eax, 0x8000
cmp eax, 0x8000
jne 0x402db4
lea ecx, [esp + 0x10]
push ecx
call dword [sym.imp.USER32.dll_GetCursorPos]
lea ecx, [esp + 0x18]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push edx
push eax
push ecx
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x402deb
push esi
call ebp
and eax, 0x8000
cmp eax, 0x8000
je 0x402d81
push esi
call ebp
test ah, 0x80
jne 0x402e38
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x402e38
mov edx, dword [esp + 0x50]
push edx
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
mov edx, dword [0x477388]
push eax
push ecx
push edi
push edx
call dword [sym.imp.USER32.dll_CallWindowProcA]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x30
ret 0x10
mov eax, dword [esp + 0x2c]
lea edx, [esp + 0x28]
push edx
push eax
push 0x4e
push edi
mov dword [esp + 0x40], 0x2711
call dword [sym.imp.USER32.dll_GetParent]
push eax
call ebx
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x402db4
mov ecx, dword [esp + 0x50]
push ecx
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0x4c]
mov ecx, dword [0x477388]
push edx
push eax
push edi
push ecx
call dword [sym.imp.USER32.dll_CallWindowProcA]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x30
ret 0x10
push esi
mov dword [esp + 0x34], 0x2712
call ebp
and eax, 0x8000
cmp eax, 0x8000
jne 0x402ee2
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push ecx
push edx
call dword [sym.imp.USER32.dll_WindowFromPoint]
push 0x1b
mov dword [esp + 0x40], eax
call ebp
test al, 1
jne 0x402ea1
mov ecx, dword [esp + 0x2c]
lea eax, [esp + 0x28]
push eax
push ecx
push 0x4e
push edi
call dword [sym.imp.USER32.dll_GetParent]
push eax
call ebx
push esi
call ebp
and eax, 0x8000
cmp eax, 0x8000
je 0x402e53
jmp 0x402ee2
push 0x7f00
push 0
call dword [sym.imp.USER32.dll_LoadCursorA]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
push 0xfffffffffffffff4
mov dword [esp + 0x3c], 0
mov eax, dword [esp + 0x2c]
push eax
mov dword [esp + 0x44], eax
call dword [sym.imp.USER32.dll_GetWindowLongA]
mov edx, dword [0x4773ec]
push 3
push edx
push edi
mov dword [esp + 0x38], eax
call dword [sym.imp.USER32.dll_SetWindowLongA]
mov ecx, dword [esp + 0x2c]
lea eax, [esp + 0x28]
push eax
push ecx
push 0x4e
push edi
mov dword [esp + 0x40], 0x2713
call dword [sym.imp.USER32.dll_GetParent]
push eax
call ebx
lea edx, [esp + 0x10]
push edx
call dword [sym.imp.USER32.dll_GetCursorPos]
lea eax, [esp + 0x10]
push eax
push edi
call dword [sym.imp.USER32.dll_ScreenToClient]
lea ecx, [esp + 0x18]
mov edx, dword [esp + 0x44]
push ecx
push edx
push 0x198
push edi
call ebx
lea edx, [esp + 0x18]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push eax
push ecx
push edx
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
jne 0x402f4c
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x30
ret 0x10
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x48]
push eax
mov eax, dword [0x477388]
push ecx
push edx
push edi
push eax
call dword [sym.imp.USER32.dll_CallWindowProcA]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x30
ret 0x10