Function at 0x5016f164
Capabilities:
Check for unmoving mouse cursor

Disassembly:
push ebx
push esi
add esp, 0xfffffff8
mov ecx, edx
mov esi, eax
mov eax, dword [ecx]
sub eax, 0x11
je 0x5016f185
sub eax, 5
je 0x5016f191
sub eax, 0x3eb
je 0x5016f1ac
jmp 0x5016f465
mov dword [ecx + 0xc], 1
jmp case.default.0x5016f1cb
cmp dword [ecx + 4], 0
je case.default.0x5016f1cb
mov edx, 2
mov eax, esi
call sym.vcl120.bpl__Extctrls_TCustomTrayIcon_Refresh_qqri
jmp case.default.0x5016f1cb
mov eax, dword [ecx + 8]
cdq
cmp eax, 0x206
jg 0x5016f1ea
je case.0x5016f1cb.515
add eax, 0xfffffe00
cmp eax, 5
ja case.default.0x5016f1cb
jmp dword [eax*4 + 0x5016f1d2]
cmp eax, 0x209
jg 0x5016f20e
je case.0x5016f1cb.515
sub eax, 0x207
je 0x5016f3d3
dec eax
je 0x5016f411
jmp case.default.0x5016f1cb
add eax, 0xfffffbfd
sub eax, 2
jb 0x5016f44b
je 0x5016f454
jmp case.default.0x5016f1cb
cmp word [esi + 0x8a], 0
je case.default.0x5016f1cb
call fcn.5016f124
mov ebx, eax
push esp
call sub.user32.dll_GetCursorPos
mov eax, dword [esp]
push eax
mov eax, dword [esp + 8]
push eax
mov ecx, ebx
mov edx, esi
mov eax, dword [esi + 0x8c]
call dword [esi + 0x88]
jmp case.default.0x5016f1cb
cmp word [esi + 0x82], 0
je 0x5016f298
call fcn.5016f124
mov ebx, eax
or bl, byte [0x5016f484]
push esp
call sub.user32.dll_GetCursorPos
push ebx
mov eax, dword [esp + 4]
push eax
mov eax, dword [esp + 0xc]
push eax
xor ecx, ecx
mov edx, esi
mov eax, dword [esi + 0x84]
call dword [esi + 0x80]
mov byte [esi + 0x3d], 1
jmp case.default.0x5016f1cb
call fcn.5016f124
mov ebx, eax
or bl, byte [0x5016f484]
push esp
call sub.user32.dll_GetCursorPos
cmp byte [esi + 0x3d], 0
je 0x5016f2cd
cmp word [esi + 0x72], 0
je 0x5016f2cd
mov edx, esi
mov eax, dword [esi + 0x74]
call dword [esi + 0x70]
mov byte [esi + 0x3d], 0
cmp word [esi + 0x92], 0
je case.default.0x5016f1cb
push ebx
mov eax, dword [esp + 4]
push eax
mov eax, dword [esp + 0xc]
push eax
xor ecx, ecx
mov edx, esi
mov eax, dword [esi + 0x94]
call dword [esi + 0x90]
jmp case.default.0x5016f1cb
cmp word [esi + 0x82], 0
je case.default.0x5016f1cb
call fcn.5016f124
mov ebx, eax
or bl, byte [0x5016f488]
push esp
call sub.user32.dll_GetCursorPos
push ebx
mov eax, dword [esp + 4]
push eax
mov eax, dword [esp + 0xc]
push eax
mov cl, 1
mov edx, esi
mov eax, dword [esi + 0x84]
call dword [esi + 0x80]
jmp case.default.0x5016f1cb
call fcn.5016f124
mov ebx, eax
or bl, byte [0x5016f488]
push esp
call sub.user32.dll_GetCursorPos
cmp word [esi + 0x92], 0
je 0x5016f374
push ebx
mov eax, dword [esp + 4]
push eax
mov eax, dword [esp + 0xc]
push eax
mov cl, 1
mov edx, esi
mov eax, dword [esi + 0x94]
call dword [esi + 0x90]
cmp dword [esi + 0x50], 0
je case.default.0x5016f1cb
mov eax, dword [sym.vcl120.bpl__Forms_Application]
mov eax, dword [eax]
mov eax, dword [eax + 0x170]
push eax
call sub.user32.dll_SetForegroundWindow
mov eax, dword [sym.vcl120.bpl__Forms_Application]
mov eax, dword [eax]
call sym.vcl120.bpl__Forms_TApplication_ProcessMessages_qqrv
mov eax, dword [esi + 0x50]
mov byte [eax + 0x61], 0
mov edx, dword [esi + 4]
mov dword [eax + 0x64], edx
mov ecx, dword [esp + 4]
mov edx, dword [esp]
mov ebx, dword [eax]
call dword [ebx + 0x40]
jmp case.default.0x5016f1cb
cmp word [esi + 0x7a], 0
je case.default.0x5016f1cb
mov edx, esi
mov eax, dword [esi + 0x7c]
call dword [esi + 0x78]
jmp case.default.0x5016f1cb
cmp word [esi + 0x82], 0
je case.default.0x5016f1cb
call fcn.5016f124
mov ebx, eax
or bl, byte [0x5016f48c]
push esp
call sub.user32.dll_GetCursorPos
push ebx
mov eax, dword [esp + 4]
push eax
mov eax, dword [esp + 0xc]
push eax
mov cl, 2
mov edx, esi
mov eax, dword [esi + 0x84]
call dword [esi + 0x80]
jmp case.default.0x5016f1cb
cmp word [esi + 0x92], 0
je case.default.0x5016f1cb
call fcn.5016f124
mov ebx, eax
or bl, byte [0x5016f48c]
push esp
call sub.user32.dll_GetCursorPos
push ebx
mov eax, dword [esp + 4]
push eax
mov eax, dword [esp + 0xc]
push eax
mov cl, 2
mov edx, esi
mov eax, dword [esi + 0x94]
call dword [esi + 0x90]
jmp case.default.0x5016f1cb
mov eax, dword [esi + 0x44]
and dword [eax + 0xc], 0xffffffef
jmp case.default.0x5016f1cb
cmp word [esi + 0x6a], 0
je case.default.0x5016f1cb
mov edx, esi
mov eax, dword [esi + 0x6c]
call dword [esi + 0x68]
jmp case.default.0x5016f1cb
mov eax, dword [ecx]
cmp eax, dword [sym.vcl120.bpl__Extctrls_TCustomTrayIcon_RM_TaskbarCreated]
jne case.default.0x5016f1cb
cmp byte [esi + 0x60], 0
je case.default.0x5016f1cb
xor edx, edx
mov eax, esi
call sym.vcl120.bpl__Extctrls_TCustomTrayIcon_Refresh_qqri
pop ecx
pop edx
pop esi
pop ebx
ret