PopFxActivateDevicesForSx

VOID __stdcall PopFxActivateDevicesForSx(UINT64 MaxLevel){
  _ETHREAD *CurrentThread; 
  unsigned int v2; 
  ULONG_PTR i; 
  __int64 v4; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v2 = MaxLevel;
  --*((_WORD *)CurrentThread + 242);
  ExAcquirePushLockSharedEx((UINT64)&PopFxDeviceListLock, 0i64);
  for( i = PopFxDeviceList; (ULONG_PTR *)i != &PopFxDeviceList; i = *(_QWORD *)i )
  {
    v4 = *(_QWORD *)(i + 48);
    if( v4 && *(unsigned __int8 *)(v4 + 216) < v2 && (*(_DWORD *)(i + 824) & 1) == 0 )
    {
      PopFxActivateDevice(*(DEVICE_OBJECT **)(v4 + 32), 0);
      _InterlockedOr((volatile signed __int32 *)(v4 + 296), 0x1000u);
    }
  }
  if( _InterlockedCompareExchange64((volatile signed __int64 *)&PopFxDeviceListLock, 0i64, 17i64) != 17 )
    ExfReleasePushLockShared((INT64 *)&PopFxDeviceListLock);
  KeAbPostRelease(&PopFxDeviceListLock);
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
}

Referenced by:

PoBroadcastSystemState
PopFxPrepareDevicesForShutdown