PspEnforceLimits

VOID __stdcall PspEnforceLimits(UINT8 ViolationDetected){
  _EJOB *i; 
  _LIST_ENTRY **NextJob; 
  _EJOB *v4; 
  _EJOB *v5; 
  VOID *v6; 
  INT64 *v7; 
  _EPROCESS *Buffer[2]; 
  INT64 JobPostCallback[8]; 

  memset(JobPostCallback, 0i64, sizeof(JobPostCallback));
  _InterlockedIncrement(&PspEnforcementSequenceNumber);
  if( !ViolationDetected && PspNoWakeChargeReferencedProcess )
  {
    LODWORD(v6) = 0;
    LODWORD(v5) = 0;
    LODWORD(Buffer[0]) = 0;
    ZwUpdateWnfStateData(&WNF_PS_WAKE_CHARGE_RESOURCE_POLICY, Buffer, 4ui64, 0i64, 0i64, (UINT64)v5, (UINT64)v6);
    ObfDereferenceObjectWithTag(PspNoWakeChargeReferencedProcess, 0x624A7350ui64);
    PspNoWakeChargeReferencedProcess = 0i64;
  }
  for( i = 0i64; ; i = v4 )
  {
    NextJob = PspGetNextJob(i);
    v4 = (_EJOB *)NextJob;
    if( !NextJob )
      break;
    if( !NextJob[134] && (!ViolationDetected || ((_DWORD)NextJob[165] & 0x100000) != 0) )
    {
      _InterlockedAnd((volatile signed __int32 *)NextJob + 330, 0xFFEFFFFF);
      memset(JobPostCallback, 0i64, sizeof(JobPostCallback));
      LODWORD(v5) = 6;
      PspEnumJobsAndProcessesInJobHierarchy(
        v4,
        (INT64 *)PspEnforceLimitsJobPreCallback,
        (_EJOB *)PspEnforceLimitsJobPostCallback,
        PspEnforceLimitsProcessCallback,
        JobPostCallback,
        v5,
        v6,
        v7,
        Buffer[0],
        Buffer[1],
        (VOID *)JobPostCallback[0],
        JobPostCallback[1]);
    }
  }
}

Referenced by:

PspJobTimeLimitsWork