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

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0x10
cmp eax, 0x58
push ebx
push esi
push edi
mov esi, ecx
jne 0x584f57
mov eax, dword [esi + 0x80]
mov ecx, 4
test eax, eax
jg 0x584ea9
test byte [esi + 0x7c], cl
je 0x584eb3
cmp eax, 0x64
jl 0x584ec3
test byte [esi + 0x7c], cl
je 0x584ec3
mov ecx, esi
call fcn.005840f0
pop edi
pop esi
pop ebx
add esp, 0x10
ret 4
mov dl, byte [esi + 0x7c]
and dl, cl
neg dl
sbb edx, edx
and edx, 0x32
add edx, 0xffffffe7
add edx, eax
mov dword [esi + 0x80], edx
mov al, byte [0x6c69e5]
test cl, al
je 0x5850fc
mov eax, dword [0x6c6aec]
test eax, eax
je 0x5850fc
call fcn.005309c0
cmp eax, 8
jle 0x5850fc
test esi, esi
jne 0x584f0a
xor edi, edi
jmp 0x584f0d
mov edi, dword [esi + 0x1c]
mov eax, dword [esi + 0x80]
push 2
mov ecx, eax
shl ecx, 8
sub ecx, eax
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
push edx
push 0
push edi
call dword [0x6c6aec]
test esi, esi
je 0x584f3e
mov esi, dword [esi + 0x1c]
push 0x101
push 0
push 0
push esi
call dword [sym.imp.USER32.dll_RedrawWindow]
pop edi
pop esi
pop ebx
add esp, 0x10
ret 4
cmp eax, 0x4d
mov ecx, esi
jne 0x5850f7
call fcn.005dcc64
test eax, 0x10000000
je 0x5850fc
mov eax, dword [esi + 0x4c]
xor ebx, ebx
cmp eax, ebx
je 0x585017
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x585017
push 1
push ebx
push 0x6c6d10
call fcn.00584210
add esp, 0xc
call fcn.00578c90
mov esi, eax
cmp esi, ebx
je 0x5850fc
lea ecx, [esp + 0xc]
mov dword [esp + 0xc], ebx
push ecx
mov dword [esp + 0x14], ebx
call dword [sym.imp.USER32.dll_GetCursorPos]
mov eax, dword [esi + 0x1c]
lea edx, [esp + 0xc]
push edx
push eax
call dword [sym.imp.USER32.dll_ScreenToClient]
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
and ecx, 0xffff
and edx, 0xffff
shr eax, 0xf
shl ecx, 0x10
and eax, 1
or ecx, edx
neg eax
sbb eax, eax
push ecx
and eax, 0x11
push eax
mov eax, dword [esi + 0x1c]
push 0x200
push eax
call dword [sym.imp.USER32.dll_PostMessageA]
pop edi
pop esi
pop ebx
add esp, 0x10
ret 4
lea ecx, [esp + 0x14]
mov edi, 2
push ecx
mov dword [esp + 0x24], edi
call dword [sym.imp.USER32.dll_GetCursorPos]
test eax, eax
je 0x585050
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
push edx
push eax
call dword [sym.imp.USER32.dll_WindowFromPoint]
cmp dword [esi + 0x1c], eax
jne 0x585050
mov dword [esp + 0x20], 1
mov edi, dword [esp + 0x20]
cmp dword [esi + 0x78], edi
je 0x5850fc
cmp edi, 1
mov dword [esi + 0x78], edi
je 0x585069
push ebx
mov ecx, esi
call fcn.00583be0
mov al, byte [esi + 0x3c]
mov ebx, dword [sym.imp.USER32.dll_UpdateWindow]
push ebp
mov ebp, dword [sym.imp.USER32.dll_InvalidateRect]
test al, al
jne 0x5850dd
mov eax, dword [esi + 0x40]
mov ecx, 4
cmp eax, ecx
je 0x5850dd
push 0
push ecx
mov ecx, dword [esi + 0x4c]
push ecx
call fcn.005843f0
mov edi, eax
add esp, 0xc
test edi, edi
je 0x5850dd
mov eax, dword [edi + 0x1c]
test eax, eax
je 0x5850dd
cmp dword [esp + 0x24], 1
jne 0x5850bf
mov edx, dword [esi + 0x1c]
push 1
push 0
push eax
mov dword [edi + 0x44], edx
call ebp
mov eax, dword [edi + 0x1c]
push eax
jmp 0x5850db
mov ecx, dword [edi + 0x44]
mov edx, dword [esi + 0x1c]
cmp ecx, edx
jne 0x5850dd
push 1
push 0
push eax
mov dword [edi + 0x44], 0
call ebp
mov edx, dword [edi + 0x1c]
push edx
call ebx
mov eax, dword [esi + 0x1c]
push 1
push 0
push eax
call ebp
mov ecx, dword [esi + 0x1c]
push ecx
call ebx
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x10
ret 4
call fcn.005d9c0a
pop edi
pop esi
pop ebx
add esp, 0x10
ret 4