PopDirectedDripsSetDisengageReason
unsigned int __fastcall PopDirectedDripsSetDisengageReason(char a1){
int v1;
signed __int32 v2;
unsigned int result;
__int64 v4;
unsigned int v5;
v1 = 1 << a1;
_m_prefetchw((char *)&stru_140C23628 + 5180);
v2 = _InterlockedOr((_DWORD *)&stru_140C23628 + 1295, 1 << a1);
_m_prefetchw((char *)&stru_140C23628 + 5048);
result = *(&stru_140C23628 + 1262);
do
{
v4 = result;
v5 = result;
result = _InterlockedCompareExchange((_DWORD *)&stru_140C23628 + 1262, result, result);
}
while( v5 != result );
if( (result & 1) != 0 && (v2 & v1) == 0 )
return PopQueueDirectedDripsWork(v4, 2ui64);
return result;
}Referenced by:
PnpRequestDeviceAction
PopDirectedDripsNotify
PopDirectedDripsNotifyPnpActionQueueEvent
PopDirectedDripsStartDisengageTimer
PopDripsWatchdogCallbackWorker