Function at 0x4887da
Capabilities:
Check for unmoving mouse cursor

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4f46f0
push eax
mov dword fs:[0], esp
sub esp, 0x70
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov eax, dword [esi + 0x100]
test eax, eax
jne 0x488c16
mov eax, dword [esi + 0x84]
mov ebp, dword [sym.imp.USER32.dll_SendMessageW]
push 0
push 9
push 0x110a
push eax
call ebp
mov ecx, dword [esi + 0x84]
push 0
push 8
push 0x110a
push ecx
mov ebx, eax
call ebp
test eax, eax
je 0x488822
cmp ebx, eax
je 0x488822
mov ebx, eax
test ebx, ebx
je 0x488c16
mov edx, dword [esi + 0x84]
push ebx
push 9
push 0x110b
push edx
call ebp
cmp dword [0x525820], 1
jne 0x488c16
mov eax, dword [esi + 0x84]
push 0
push 0
push 0x110a
push eax
call ebp
mov ecx, dword [esi + 0x84]
push ebx
push 3
push 0x110a
push ecx
mov edi, eax
call ebp
cmp edi, eax
jne 0x488bcf
mov ecx, 9
xor eax, eax
lea edi, [esp + 0x5c]
lea edx, [esp + 0x58]
rep stosd dword es:[edi], eax
mov eax, dword [esi + 0x84]
mov dword [esp + 0x5c], ebx
xor ebx, ebx
push edx
push ebx
push 0x113e
push eax
mov dword [esp + 0x68], 4
call ebp
mov ecx, dword [esp + 0x7c]
neg eax
sbb eax, eax
and eax, ecx
mov edi, eax
je 0x488c16
lea ecx, [esp + 0x34]
call fcn.00427790
lea ecx, [esp + 0x2c]
mov dword [esp + 0x88], ebx
call fcn.00427790
mov edi, dword [edi + 0x10]
mov byte [esp + 0x88], 1
cmp dword [edi - 0xc], ebx
jl 0x4888ef
mov dword [esp + 0x10], edi
add edi, 0xfffffff4
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
jmp 0x488903
mov ecx, dword [0x50d0e0]
push edi
mov dword [esp + 0x14], ecx
lea ecx, [esp + 0x14]
call fcn.00406e00
mov edi, dword [esi + 0x9c]
lea ecx, [esp + 0x14]
call fcn.00427790
push str.QvodMediaCenter
lea ecx, [esp + 0x3c]
mov word [esp + 0x3c], 0
call fcn.00406940
lea edx, [esp + 0x14]
lea eax, [esp + 0x38]
push edx
push eax
push str.selectSingleNode
lea ecx, [edi + 4]
mov byte [esp + 0x94], 4
call fcn.004080f0
mov ebp, dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea ecx, [esp + 0x38]
push ecx
mov dword [edi + 8], eax
mov byte [esp + 0x8c], 3
call ebp
mov eax, dword [edi + 8]
test eax, eax
jl 0x48897c
mov eax, dword [esp + 0x14]
test eax, eax
je 0x48897c
push eax
lea ecx, [esp + 0x38]
call fcn.004080d0
mov ebx, 1
lea ecx, [esp + 0x14]
mov byte [esp + 0x88], 2
call fcn.0042ca10
xor edi, edi
cmp ebx, edi
jne 0x4889b8
mov eax, dword [esp + 0x10]
mov ecx, dword [0x50d0e4]
lea edx, [eax - 0xc]
cmp edx, ecx
je 0x488a2f
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x488a2f
jmp 0x488a1f
push edi
push ecx
lea edx, [esp + 0x18]
mov ecx, esp
mov dword [esp + 0x1c], esp
push edx
call fcn.0040bd90
push ecx
mov byte [esp + 0x94], 5
mov ecx, esp
mov dword [esp + 0x30], esp
push 0x50e548
call fcn.00406b50
lea eax, [esp + 0x34]
lea ecx, [esp + 0x3c]
push eax
push ecx
mov ecx, esi
mov byte [esp + 0x9c], 2
call fcn.00483c30
cmp eax, edi
jne 0x488a6a
mov eax, dword [esp + 0x10]
mov ecx, dword [0x50d0e4]
lea edx, [eax - 0xc]
cmp edx, ecx
je 0x488a2f
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x488a2f
mov eax, dword [esp + 0x10]
add eax, 0xfffffff4
push eax
call fcn.004de3a6
add esp, 4
lea ecx, [esp + 0x2c]
mov byte [esp + 0x88], 0
call fcn.0042ca10
lea ecx, [esp + 0x34]
mov dword [esp + 0x88], 0xffffffff
call fcn.0042ca10
mov ecx, dword [esp + 0x80]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x7c
ret
lea ecx, [esp + 0x20]
push str.default
push ecx
lea ecx, [esp + 0x30]
call fcn.004086e0
lea edx, [esp + 0x1c]
push 0x50e548
push edx
lea ecx, [esp + 0x30]
mov byte [esp + 0x90], 6
call fcn.004086e0
mov eax, dword [0x525780]
push eax
mov eax, dword [esp + 0x20]
push eax
call fcn.004dec69
add esp, 8
test eax, eax
je 0x488b56
push str.true
lea ecx, [esp + 0x4c]
mov word [esp + 0x4c], di
call fcn.00406940
push str.default
lea ecx, [esp + 0x3c]
mov word [esp + 0x3c], di
call fcn.00406940
lea ecx, [esp + 0x48]
push edi
lea edx, [esp + 0x3c]
push ecx
push edx
push str.setAttribute
lea ecx, [esp + 0x3c]
mov byte [esp + 0x98], 9
call fcn.00406a10
mov dword [esp + 0x28], eax
lea eax, [esp + 0x38]
push eax
call ebp
lea ecx, [esp + 0x48]
mov byte [esp + 0x88], 7
push ecx
call ebp
lea edx, [esp + 0x14]
push edx
call dword [sym.imp.USER32.dll_GetCursorPos]
mov ecx, dword [esi + 0xfc]
lea eax, [esp + 0x24]
push edi
push eax
add ecx, 4
call fcn.00473440
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x18]
mov eax, dword [eax]
push edi
push ecx
mov ecx, dword [esp + 0x1c]
add edx, 5
push edi
add ecx, 5
push edx
push ecx
push 0x40
push eax
call dword [sym.imp.USER32.dll_TrackPopupMenu]
jmp 0x488baf
push str.false
lea ecx, [esp + 0x3c]
mov word [esp + 0x3c], di
call fcn.00406940
push str.default
lea ecx, [esp + 0x4c]
mov word [esp + 0x4c], di
call fcn.00406940
lea edx, [esp + 0x38]
push edi
lea eax, [esp + 0x4c]
push edx
push eax
push str.setAttribute
lea ecx, [esp + 0x3c]
mov byte [esp + 0x98], 0xb
call fcn.00406a10
lea ecx, [esp + 0x48]
mov dword [esp + 0x28], eax
push ecx
call ebp
lea edx, [esp + 0x38]
push edx
call ebp
lea ecx, [esp + 0x1c]
call fcn.00402160
lea ecx, [esp + 0x20]
call fcn.00402160
lea ecx, [esp + 0x10]
call fcn.00402160
jmp 0x488a2f
cmp ebx, edi
jne 0x488c16
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
lea ecx, [esp + 0x24]
push 2
push ecx
mov ecx, dword [esi + 0xfc]
add ecx, 4
call fcn.00473440
mov edx, dword [esi + 4]
mov ecx, dword [esp + 0x18]
mov eax, dword [eax]
push 0
push edx
mov edx, dword [esp + 0x1c]
add ecx, 5
push 0
add edx, 5
push ecx
push edx
push 0x40
push eax
call dword [sym.imp.USER32.dll_TrackPopupMenu]
mov ecx, dword [esp + 0x80]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x7c
ret