Function at 0x477428
Capabilities:
Check for unmoving mouse cursor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffec
push ebx
push esi
push edi
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x477737
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 8]
cmp dword [eax], 0xb054
jne 0x477707
mov eax, dword [ebp - 4]
cmp byte [eax + 0x37], 0
je 0x477707
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
add eax, 0xfffffe00
cmp eax, 9
ja case.default.0x477475
jmp dword [eax*4 + 0x47747c]
mov eax, dword [ebp - 4]
mov si, 0xffef
call fcn.00428b2c
lea eax, [ebp - 0x10]
push eax
call sub.USER32.DLL_GetCursorPos
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
push ebp
call fcn.004773e0
pop ecx
mov ecx, eax
or cl, byte [0x477758]
xor edx, edx
mov eax, dword [ebp - 4]
mov si, 0xffed
call fcn.00428b2c
jmp case.default.0x477475
lea eax, [ebp - 0x10]
push eax
call sub.USER32.DLL_GetCursorPos
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
push ebp
call fcn.004773e0
pop ecx
mov ecx, eax
or cl, byte [0x477758]
mov dl, 1
mov eax, dword [ebp - 4]
mov si, 0xffed
call fcn.00428b2c
jmp case.default.0x477475
lea eax, [ebp - 0x10]
push eax
call sub.USER32.DLL_GetCursorPos
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
push ebp
call fcn.004773e0
pop ecx
mov ecx, eax
or cl, byte [0x477758]
mov dl, 2
mov eax, dword [ebp - 4]
mov si, 0xffed
call fcn.00428b2c
jmp case.default.0x477475
lea eax, [ebp - 0x10]
push eax
call sub.USER32.DLL_GetCursorPos
mov eax, dword [ebp - 0xc]
push eax
push ebp
call fcn.004773e0
pop ecx
mov edx, eax
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
mov si, 0xffec
call fcn.00428b2c
jmp case.default.0x477475
lea eax, [ebp - 0x10]
push eax
call sub.USER32.DLL_GetCursorPos
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
push ebp
call fcn.004773e0
pop ecx
mov ecx, eax
or cl, byte [0x47775c]
xor edx, edx
mov eax, dword [ebp - 4]
mov si, 0xffed
call fcn.00428b2c
mov eax, dword [ebp - 4]
or byte [eax + 0x38], 1
jmp case.default.0x477475
push ebp
call fcn.004773e0
pop ecx
or al, byte [0x47775c]
mov byte [ebp - 0x11], al
lea eax, [ebp - 0x10]
push eax
call sub.USER32.DLL_GetCursorPos
mov eax, dword [ebp - 4]
test byte [eax + 0x38], 1
je 0x4775ef
mov eax, dword [ebp - 4]
and byte [eax + 0x38], 0xfe
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
mov cl, byte [ebp - 0x11]
xor edx, edx
mov eax, dword [ebp - 4]
mov si, 0xffee
call fcn.00428b2c
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
mov cl, byte [ebp - 0x11]
xor edx, edx
mov eax, dword [ebp - 4]
mov si, 0xffeb
call fcn.00428b2c
jmp case.default.0x477475
lea eax, [ebp - 0x10]
push eax
call sub.USER32.DLL_GetCursorPos
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
push ebp
call fcn.004773e0
pop ecx
mov ecx, eax
or cl, byte [0x477760]
mov dl, 1
mov eax, dword [ebp - 4]
mov si, 0xffed
call fcn.00428b2c
mov eax, dword [ebp - 4]
or byte [eax + 0x38], 2
jmp case.default.0x477475
push ebp
call fcn.004773e0
pop ecx
or al, byte [0x477760]
mov byte [ebp - 0x11], al
lea eax, [ebp - 0x10]
push eax
call sub.USER32.DLL_GetCursorPos
mov eax, dword [ebp - 4]
test byte [eax + 0x38], 2
je 0x477689
mov eax, dword [ebp - 4]
and byte [eax + 0x38], 0xfd
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
mov cl, byte [ebp - 0x11]
mov dl, 1
mov eax, dword [ebp - 4]
mov si, 0xffee
call fcn.00428b2c
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
mov cl, byte [ebp - 0x11]
mov dl, 1
mov eax, dword [ebp - 4]
mov si, 0xffeb
call fcn.00428b2c
jmp case.default.0x477475
lea eax, [ebp - 0x10]
push eax
call sub.USER32.DLL_GetCursorPos
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
push ebp
call fcn.004773e0
pop ecx
mov ecx, eax
or cl, byte [0x477764]
mov dl, 2
mov eax, dword [ebp - 4]
mov si, 0xffed
call fcn.00428b2c
jmp case.default.0x477475
lea eax, [ebp - 0x10]
push eax
call sub.USER32.DLL_GetCursorPos
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
push ebp
call fcn.004773e0
pop ecx
mov ecx, eax
or cl, byte [0x477764]
mov dl, 2
mov eax, dword [ebp - 4]
mov si, 0xffeb
call fcn.00428b2c
jmp case.default.0x477475
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 4]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x30]
push eax
call sub.USER32.DLL_DefWindowProcA
mov edx, dword [ebp - 8]
mov dword [edx + 0xc], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x477750
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret