PoFxIdleDevice

VOID __stdcall PoFxIdleDevice(DEVICE_OBJECT *Pdo){
  __int64 v1; 
  INT64 *v2; 
  KIRQL v3; 
  int v4; 
  unsigned __int64 v5; 
  signed __int32 v6; 
  signed __int32 v7; 
  signed __int32 v8; 
  signed __int32 v9; 
  __int64 v10; 
  unsigned int i; 
  if( Pdo )
    v1 = *(_QWORD *)(*((_QWORD *)Pdo + 39) + 40i64);
  else
    v1 = 0i64;
  if( v1 )
  {
    v2 = (INT64 *)(v1 + 88);
    v3 = ExAcquireSpinLockExclusive((PEX_SPIN_LOCK)(v1 + 88));
    v4 = *(_DWORD *)(v1 + 120);
    v5 = v3;
    _m_prefetchw((const void *)(v1 + 296));
    v6 = *(_DWORD *)(v1 + 296);
    do
    {
      v7 = v6;
      v6 = _InterlockedCompareExchange((volatile signed __int32 *)(v1 + 296), v6, v6);
    }
    while( v7 != v6 );
    if( (v6 & 4) == 0 || (*(_DWORD *)(*(_QWORD *)(v1 + 80) + 824i64) & 1) == 0 )
    {
      *(_DWORD *)(v1 + 120) = v4 - 1;
      _m_prefetchw((const void *)(v1 + 296));
      v8 = *(_DWORD *)(v1 + 296);
      do
      {
        v9 = v8;
        v8 = _InterlockedCompareExchange((volatile signed __int32 *)(v1 + 296), v8, v8);
      }
      while( v9 != v8 );
      if( (v8 & 4) != 0 )
      {
        v10 = *(_QWORD *)(v1 + 80);
        for( i = 0; i < *(_DWORD *)(v10 + 828); ++i )
          PoFxIdleComponent((POHANDLE *)v10, i, 2ui64);
      }
    }
    ExReleaseSpinLockExclusiveFromDpcLevel(v2);
    __writecr8(v5);
  }
}

Referenced by:

PiProcessQueryDeviceState
PiProcessResourceRequirementsChanged
PipEnumerateDevice
PipProcessDevNodeTree
PipProcessRestartPhase2
PnpCancelStopDeviceNode
PnpDeleteLockedDeviceNode
PnpDeleteLockedDeviceNodes
PnpDeviceCompletionProcessCompletedRequest
PopCompleteDirectedPowerTransitionCallback
PopFxClearDeviceConstraints
PopFxIdleDevicesFromSx
PopFxSetDeviceAccountingCsPlatformState
PopFxUpdateVetoMaskWork
PopPepInitializeVetoMasks
PopPepResetDeviceAccountingLevel
PopPlIdleDeviceIterator