Function at 0x4b877d
Capabilities:
Check for unmoving mouse cursor

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov esi, 0x57c2d0
mov edi, 0x57c2c0
mov ebx, dword [0x555c44]
test ebx, ebx
jne 0x4b879e
xor eax, eax
jmp 0x4b8c10
push ebx
call sub.USER32.dll_GetMenuItemCount
mov dword [0x57c2bc], eax
cmp dword [0x57c2bc], 0
jg 0x4b87b9
xor eax, eax
jmp 0x4b8c10
push dword [0x55b3c8]
call sub.USER32.dll_GetDC
mov ebx, eax
mov dword [0x57c2d8], ebx
test ebx, ebx
jne 0x4b87d7
xor eax, eax
jmp 0x4b8c10
push 0xd
call sub.GDI32.dll_GetStockObject
push eax
push ebx
call sub.GDI32.dll_SelectObject
mov dword [0x57c2cc], eax
push 0xf
call fcn.005162fc
mov dword [0x57c2c8], eax
call sub.USER32.dll_GetMenuCheckMarkDimensions
movzx edx, ax
mov dword [0x57c2c4], edx
xor ecx, ecx
mov dword [0x57c2b0], ecx
xor eax, eax
mov dword [0x57c2b4], eax
xor edx, edx
mov dword [0x57c2b8], edx
jmp 0x4b88b0
push 0x400
push 0x62
push 0x57c4a0
push dword [0x57c2b8]
push dword [0x555c44]
call sub.USER32.dll_GetMenuStringA
mov ebx, eax
mov dword [edi], ebx
test ebx, ebx
jg 0x4b8859
mov eax, dword [0x57c2c8]
sar eax, 1
jns 0x4b8851
adc eax, 0
add dword [0x57c2b4], eax
jmp 0x4b88aa
push ebx
push 0x57c4a0
push dword [0x57c2d8]
call fcn.004df9d7
add eax, dword [0x57c2c4]
mov dword [edi], eax
push dword [0x57c2b8]
push dword [0x555c44]
call sub.USER32.dll_GetSubMenu
test eax, eax
je 0x4b888f
mov edx, dword [0x57c2c4]
add dword [edi], edx
mov eax, dword [edi]
cmp eax, dword [0x57c2b0]
jle 0x4b889e
mov dword [0x57c2b0], eax
mov edx, dword [0x57c2c8]
add dword [0x57c2b4], edx
inc dword [0x57c2b8]
mov ecx, dword [0x57c2b8]
cmp ecx, dword [0x57c2bc]
jl 0x4b8820
push dword [0x57c2cc]
push dword [0x57c2d8]
call sub.GDI32.dll_SelectObject
push dword [0x57c2d8]
push dword [0x55b3c8]
call sub.USER32.dll_ReleaseDC
add dword [0x57c2b0], 0xa
cmp dword [ebp + 0x10], 0
jle 0x4b8913
movzx eax, word [ebp + 0x10]
mov dword [esi], eax
mov edx, dword [ebp + 0x10]
shr edx, 0x10
and dx, 0xffff
movzx ecx, dx
mov dword [esi + 4], ecx
push esi
push dword [ebp + 8]
call sub.USER32.dll_ClientToScreen
jmp 0x4b8959
push 0x57c2dc
push dword [ebp + 8]
call sub.USER32.dll_GetWindowRect
mov edx, dword [0x57c2e4]
mov eax, dword [0x57c2dc]
sub edx, eax
sar edx, 1
jns 0x4b8934
adc edx, 0
add edx, eax
mov dword [esi], edx
mov ecx, dword [0x57c2e8]
mov eax, dword [0x57c2e0]
sub ecx, eax
sar ecx, 1
jns 0x4b894c
adc ecx, 0
add ecx, eax
mov dword [esi + 4], ecx
xor edx, edx
mov dword [0x57c2c8], edx
cmp dword [0x57c2bc], 1
jne 0x4b8977
mov ecx, dword [0x57c2c8]
sar ecx, 1
jns 0x4b896f
adc ecx, 0
sub dword [esi + 4], ecx
jmp 0x4b8a00
cmp dword [ebp + 0xc], 4
jne 0x4b8987
mov eax, dword [0x57c2c8]
add dword [esi + 4], eax
jmp 0x4b89b7
cmp dword [ebp + 0xc], 6
jne 0x4b8998
mov edx, dword [0x57c2c8]
add dword [esi + 4], edx
jmp 0x4b89b7
cmp dword [ebp + 0xc], 7
jne 0x4b89a9
mov ecx, dword [0x57c2c8]
add dword [esi + 4], ecx
jmp 0x4b89b7
cmp dword [ebp + 0xc], 0xe
jne 0x4b89b7
mov eax, dword [0x57c2c8]
add dword [esi + 4], eax
mov edx, dword [0x57c2b4]
sar edx, 1
jns 0x4b89c4
adc edx, 0
mov ecx, dword [0x57c2c8]
sar ecx, 1
jns 0x4b89d1
adc ecx, 0
add edx, ecx
sub dword [esi + 4], edx
jmp 0x4b89df
sub dword [0x57c2bc], 2
cmp dword [0x57c2bc], 0
jg 0x4b89d8
cmp dword [0x57c2bc], 0
jne 0x4b8a00
mov eax, dword [0x57c2c8]
sar eax, 1
jns 0x4b89fd
adc eax, 0
add dword [esi + 4], eax
cmp dword [0x55b3d0], 0
jne 0x4b8a1f
push dword [0x55b3c8]
call sub.USER32.dll_SetActiveWindow
push dword [0x55b3c8]
call sub.USER32.dll_SetForegroundWindow
mov edx, dword [ebp + 0xc]
add edx, 0xfffffff6
cmp edx, 0x10
ja case.0x4b8a34.10
mov dl, byte [edx + 0x4b8a3b]
jmp dword [edx*4 + 0x4b8a4c]
push 0x57c2dc
push dword [0x55a6ec]
call sub.USER32.dll_GetWindowRect
push esi
call sub.USER32.dll_GetCursorPos
mov ecx, dword [0x57c2dc]
add ecx, dword [0x55a958]
add ecx, 0xffffffec
mov dword [esi], ecx
mov eax, dword [0x57c2e8]
add eax, 0xfffffffe
mov dword [esi + 4], eax
push 0
push 0x57c2dc
push esi
push dword [0x55a6ec]
call fcn.004c6b38
jmp 0x4b8aa1
dec dword [esi]
mov edx, dword [esi]
add edx, dword [0x57c2b0]
cmp edx, dword [0x57c2e4]
jg 0x4b8a9f
mov eax, dword [0x57c2dc]
cmp eax, dword [esi]
jle 0x4b8ac1
mov dword [esi], eax
jmp 0x4b8ac1
dec dword [esi + 4]
mov edx, dword [esi + 4]
add edx, dword [0x57c2b4]
add edx, 0xfffffffe
cmp edx, dword [0x57c2e8]
jg 0x4b8abe
mov eax, dword [0x57c2e0]
cmp eax, dword [esi + 4]
jle 0x4b8ae2
mov dword [esi + 4], eax
push 0
push dword [0x55b3c8]
push 0
push dword [esi + 4]
push dword [esi]
push 0
push dword [0x555c44]
call sub.USER32.dll_TrackPopupMenu
test eax, eax
jne 0x4b8bce
push 0
call fcn.0041c2be
jmp 0x4b8bce
push esi
call sub.USER32.dll_GetCursorPos
push 0
push dword [0x55b3c8]
push 0
push dword [esi + 4]
push dword [esi]
push 0
push dword [0x555c44]
call sub.USER32.dll_TrackPopupMenu
test eax, eax
jne 0x4b8bce
push 0
call fcn.0041c2be
jmp 0x4b8bce
push 0
push 0x57c2dc
push esi
push dword [ebp + 8]
call fcn.004c6b38
jmp 0x4b8b5c
dec dword [esi]
mov edx, dword [0x57c2b0]
sar edx, 1
jns 0x4b8b69
adc edx, 0
add edx, dword [esi]
add edx, 8
cmp edx, dword [0x57c2e4]
jg 0x4b8b5a
mov eax, dword [0x57c2dc]
cmp eax, dword [esi]
jle 0x4b8b86
mov dword [esi], eax
jmp 0x4b8b86
dec dword [esi + 4]
mov edx, dword [esi + 4]
add edx, dword [0x57c2b4]
add edx, 0xfffffffe
cmp edx, dword [0x57c2e8]
jg 0x4b8b83
mov eax, dword [0x57c2e0]
cmp eax, dword [esi + 4]
jle 0x4b8ba7
mov dword [esi + 4], eax
push 0
push dword [0x55b3c8]
push 0
push dword [esi + 4]
push dword [esi]
push 4
push dword [0x555c44]
call sub.USER32.dll_TrackPopupMenu
test eax, eax
jne 0x4b8bce
push 0
call fcn.0041c2be
push dword [ebp + 8]
call fcn.00516145
mov dword [0x57c2ac], eax
mov eax, dword [0x57c2ac]
test eax, eax
je 0x4b8c02
cmp dword [eax + 0x758], 0
je 0x4b8c02
mov edx, dword [eax]
cmp edx, dword [0x55b3d4]
jne 0x4b8c02
push dword [eax + 0x758]
call sub.USER32.dll_SetFocus
mov ecx, dword [ebp + 0xc]
mov dword [0x555ce0], ecx
mov eax, 1
pop edi
pop esi
pop ebx
pop ebp
ret 0xc