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