PopDirectedDripsClearDisengageReason
INT64 __fastcall PopDirectedDripsClearDisengageReason(CHAR a1){
int v1;
signed __int32 v2;
INT64 result;
INT64 v4;
int v5;
v1 = 1 << a1;
_m_prefetchw(&dword_140C24A64);
v2 = _InterlockedAnd(&dword_140C24A64, ~(1 << a1));
_m_prefetchw(&PopDirectedDripsState);
LODWORD(result) = PopDirectedDripsState;
do
{
v4 = (unsigned int)result;
v5 = result;
result = (unsigned int)_InterlockedCompareExchange(
(volatile signed __int32 *)&PopDirectedDripsState,
result,
result);
}
while( v5 != (_DWORD)result );
if( (result & 1) != 0 && (v2 & v1) != 0 )
return PopQueueDirectedDripsWork(v4, 2ui64);
return result;
}Referenced by:
PnpRemoveDeviceActionRequestFromQueue
PnpRemoveDeviceActionRequests
PopDirectedDripsDisengageTimerCallback
PopDirectedDripsNotify
PopDirectedDripsNotifyPnpActionQueueEvent
PopDripsWatchdogCallbackWorker
PopDripsWatchdogNotifySessionStart