PopFxIncrementDeviceSleepCount

VOID __stdcall PopFxIncrementDeviceSleepCount(DEVICE_OBJECT *Pdo){
  __int64 v1; 
  KIRQL v2; 
  int v3; 
  unsigned __int64 v4; 
  signed __int32 v5; 
  signed __int32 v6; 
  if( Pdo )
    v1 = *(_QWORD *)(*((_QWORD *)Pdo + 39) + 40i64);
  else
    v1 = 0i64;
  if( v1 )
  {
    v2 = ExAcquireSpinLockExclusive((PEX_SPIN_LOCK)(v1 + 88));
    v3 = *(_DWORD *)(v1 + 124);
    v4 = v2;
    _m_prefetchw((const void *)(v1 + 296));
    v5 = *(_DWORD *)(v1 + 296);
    do
    {
      v6 = v5;
      v5 = _InterlockedCompareExchange((volatile signed __int32 *)(v1 + 296), v5, v5);
    }
    while( v6 != v5 );
    if( (v5 & 4) == 0 || (*(_DWORD *)(*(_QWORD *)(v1 + 80) + 824i64) & 1) == 0 )
      *(_DWORD *)(v1 + 124) = v3 + 1;
    ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)(v1 + 88));
    __writecr8(v4);
  }
}

Referenced by:

PoFxStartDevicePowerManagement
PopSystemIrpCompletion