PopFxActivateDevicesForSx

VOID __stdcall PopFxActivateDevicesForSx(UINT64 MaxLevel){
  _ETHREAD *CurrentThread; 
  unsigned int v2; 
  __int64 **i; 
  __int64 *v4; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v2 = MaxLevel;
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquirePushLockSharedEx((_EX_PUSH_LOCK *)&stru_140C23628 + 489, 0i64);
  for( i = (__int64 **)*(&stru_140C23628 + 485); i != (__int64 **)((char *)&stru_140C23628 + 3880); i = (__int64 **)*i )
  {
    v4 = i[6];
    if( v4 && *((unsigned __int8 *)v4 + 216) < v2 && ((_DWORD)i[103] & 1) == 0 )
    {
      PopFxActivateDevice((_DEVICE_OBJECT *)v4[4], 0);
      _InterlockedOr((volatile signed __int32 *)v4 + 74, 0x1000u);
    }
  }
  if( _InterlockedCompareExchange64((_QWORD *)&stru_140C23628 + 489, 0i64, 17i64) != 17 )
    ExfReleasePushLockShared((_EX_PUSH_LOCK *)&stru_140C23628 + 489);
  KeAbPostRelease((char *)&stru_140C23628 + 3912);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
}

Referenced by:

PoBroadcastSystemState
PopFxPrepareDevicesForShutdown