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