PspGetEffectiveNoWakeCharge

VOID __stdcall PspGetEffectiveNoWakeCharge(_EJOB *Job, UINT64 *NoWakeCharge, UINT64 *SystemNoWakeCharge){
  unsigned int JobFlags; 
  unsigned int v5; 
  unsigned __int64 NoWakeCounter; 
  _EJOB *ParentJob; 
  _EJOB *v8; 
  JobFlags = Job->JobFlags;
  *NoWakeCharge = 0i64;
  *SystemNoWakeCharge = 0i64;
  v5 = JobFlags;
  if( (JobFlags & 0x800) != 0 )
  {
    if( Job->EffectiveFreezeCount )
    {
      NoWakeCounter = Job->WakeInfo.NoWakeCounter;
      *NoWakeCharge = NoWakeCounter;
      if( (JobFlags & 0x400000) == 0 )
      {
        ParentJob = Job->ParentJob;
        if( !ParentJob || (ParentJob->JobFlags & 0x1000) == 0 || !ParentJob->EffectiveFreezeCount )
        {
          *SystemNoWakeCharge = NoWakeCounter;
          v5 = JobFlags;
          if( ParentJob )
          {
            _InterlockedOr((volatile signed __int32 *)&ParentJob->1320, 0x400000u);
            v5 = Job->JobFlags;
          }
        }
      }
    }
  }
  if( (v5 & 0x400000) != 0 )
  {
    v8 = Job->ParentJob;
    if( v8 )
      _InterlockedOr((volatile signed __int32 *)&v8->1320, 0x400000u);
    _InterlockedAnd((volatile signed __int32 *)&Job->1320, 0xFFBFFFFF);
  }
}

Referenced by:

PspEnforceLimitsJobPostCallback