PopFxIncrementDeviceSleepCount

VOID __stdcall PopFxIncrementDeviceSleepCount(_DEVICE_OBJECT *Pdo){
  INT64 *DeviceNode; 
  unsigned __int8 v2; 
  int v3; 
  unsigned __int64 v4; 
  signed __int32 v5; 
  signed __int32 v6; 

  if( Pdo )
    DeviceNode = (INT64 *)Pdo->DeviceObjectExtension->DeviceNode;
  else
    DeviceNode = 0i64;
  if( DeviceNode )
  {
    v2 = ExAcquireSpinLockExclusive(DeviceNode + 11);
    v3 = *((_DWORD *)DeviceNode + 31);
    v4 = v2;
    _m_prefetchw(DeviceNode + 37);
    v5 = *((_DWORD *)DeviceNode + 74);
    do
    {
      v6 = v5;
      v5 = _InterlockedCompareExchange((volatile signed __int32 *)DeviceNode + 74, v5, v5);
    }
    while( v6 != v5 );
    if( (v5 & 4) == 0 || (*(_DWORD *)(DeviceNode[10] + 824) & 1) == 0 )
      *((_DWORD *)DeviceNode + 31) = v3 + 1;
    ExReleaseSpinLockExclusiveFromDpcLevel(DeviceNode + 11);
    __writecr8(v4);
  }
}

Referenced by:

PoFxStartDevicePowerManagement
PopSystemIrpCompletion