PspEnforceLimitsJobPreCallback

NTSTATUS __fastcall PspEnforceLimitsJobPreCallback(_EJOB *Job, _LIST_ENTRY **a2){
  NTSTATUS v2; 
  UINT64 *v5; 
  int Type; 
  __int64 v7; 
  __int64 v8; 
  unsigned int v9; 

  v2 = 0;
  *((_DWORD *)Job + 308) = PspEnforcementSequenceNumber;
  if( (*((_DWORD *)Job + 212) & 6) != 0 || *((_DWORD *)Job + 217) || (*((_DWORD *)Job + 330) & 0x800) != 0 )
  {
    v5 = (UINT64 *)((char *)a2 + 44);
    *a2 = (_LIST_ENTRY *)*((_QWORD *)Job + 98);
    Type = 0;
    v7 = 60i64;
    a2[1] = (_LIST_ENTRY *)*((_QWORD *)Job + 103);
    a2[2] = 0i64;
    do
    {
      v8 = *((_QWORD *)Job + 123);
      if( !v8 || (v9 = *(_DWORD *)(v7 + v8)) == 0 )
        v9 = 1;
      PspQueryRateControlHistory(Job, v9, 0, v5, (_PSP_JOB_RATE_CONTROL_TYPE)Type);
      *(_DWORD *)((char *)a2 + v7 - 28) = v9;
      ++Type;
      v7 += 4i64;
      v5 = (UINT64 *)((char *)v5 + 4);
    }
    while( Type < 3 );
  }
  else
  {
    memset((char *)Job + 1120, 0i64, 0x68u);
    _InterlockedAnd((volatile signed __int32 *)Job + 330, 0xFFBFFFFF);
    return -1073741536;
  }
  return v2;
}

Referenced by:

No references.