PopDirectedDripsIdleResiliencyCallback
INT64 __fastcall PopDirectedDripsIdleResiliencyCallback(INT64 a1, CHAR a2){
int v3;
signed __int32 v4;
signed __int32 v5;
unsigned int v6;
INT64 v7;
v3 = a1;
_m_prefetchw(&PopDirectedDripsState);
v4 = PopDirectedDripsState;
do
{
v5 = v4;
v4 = _InterlockedCompareExchange((volatile signed __int32 *)&PopDirectedDripsState, v4, v4);
}
while( v5 != v4 );
if( (v4 & 1) != 0 )
{
PopDeepSleepSetDisengageReason(8i64);
ExAcquirePushLockExclusiveEx((UINT64)&qword_140C24A68, 0i64);
byte_140C24A71 = a2;
dword_140C24A74 = v3;
byte_140C24A78 = 0;
PopQueueDirectedDripsWork(v7, 0x400ui64);
if( (_InterlockedExchangeAdd64((volatile signed __int64 *)&qword_140C24A68, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock((volatile INT64 *)&qword_140C24A68);
KeAbPostRelease(&qword_140C24A68);
v6 = 259;
if( a2 )
PopDirectedDripsUmMarkTestDevices();
}
else
{
return 0;
}
return v6;
}Referenced by:
PopPdcIdleResiliencyCallback