PopDirectedDripsIdleResiliencyCallback
NTSTATUS __stdcall PopDirectedDripsIdleResiliencyCallback(INT64 a1, CHAR a2){
int v3;
signed __int32 v4;
signed __int32 v5;
NTSTATUS v6;
__int64 v7;
v3 = a1;
_m_prefetchw((char *)&stru_140C23628 + 5048);
v4 = *(&stru_140C23628 + 1262);
do
{
v5 = v4;
v4 = _InterlockedCompareExchange((_DWORD *)&stru_140C23628 + 1262, v4, v4);
}
while( v5 != v4 );
if( (v4 & 1) == 0 )
return 0;
PopDeepSleepSetDisengageReason(PopDeepSleepDisengageReasonDirectedDripsTransition);
ExAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)&stru_140C23628 + 648, 0i64);
*(&stru_140C23628 + 5193) = a2;
*(&stru_140C23628 + 1299) = v3;
*(&stru_140C23628 + 5200) = 0;
PopQueueDirectedDripsWork(v7, 0x400ui64);
if( (_InterlockedExchangeAdd64((_QWORD *)&stru_140C23628 + 648, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock((_EX_PUSH_LOCK *)&stru_140C23628 + 648);
KeAbPostRelease((char *)&stru_140C23628 + 5184);
v6 = 259;
if( a2 )
PopDirectedDripsUmMarkTestDevices();
return v6;
}Referenced by:
PopPdcIdleResiliencyCallback