PspSetJobRateControl

INT64 __stdcall PspSetJobRateControl(_EJOB *Job, UINT64 TypeSetFlags){
  char v2; 
  unsigned int JobFlags; 
  int v4; 
  int v5; 
  CHAR **v6; 
  int v7; 
  CHAR *RateControl; 
  unsigned int(__fastcall *v10)(__int64, __int64); 
  PVOID v11; 
  __int64 v13[2]; 
  __int128 v14; 
  __int64 v15; 
  JobFlags = Job->JobFlags;
  v15 = 0i64;
  v4 = 0;
  v5 = JobFlags & 0x4000000;
  v6 = 0i64;
  v7 = JobFlags & 0x2000000;
  *(_OWORD *)v13 = 0i64;
  v14 = 0i64;
  if( (v2 & 1) != 0 )
  {
    if( !v5 )
    {
      if( v7 )
      {
        v4 = -1073741637;
        goto LABEL_15;
      }
      RateControl = PspAllocateRateControl(0i64);
      v6 = (CHAR **)RateControl;
      if( !RateControl )
      {
        v4 = -1073741801;
        goto LABEL_15;
      }
      Job->NetRateControl = (struct _JOB_NET_RATE_CONTROL *)RateControl;
      _InterlockedOr((volatile signed __int32 *)&Job->1320, 0x4000000u);
      PspModifyAncestorBits(Job, 0x2000000ui64, 1u);
    }
    LODWORD(v15) = 0;
    *((_QWORD *)&v14 + 1) = Job;
    BYTE4(v15) = 1;
    v4 = PspEnumJobsAndProcessesInJobHierarchy(
           Job,
           (__int64(__fastcall *)(__int64, __int64))PspSetRateControlJobPreCallback,
           0i64,
           (__int64(__fastcall *)(_QWORD *, __int64))PspSetRateControlProcessCallback,
           (__int64)v13,
           5);
  }
  else
  {
    if( !v5 )
    {
      v4 = -1073741811;
      goto LABEL_15;
    }
    PspRemoveRateControl(Job);
  }
  if( v4 >= 0 )
    return(unsigned int)v4;
  if( v6 )
    PspFreeRateControl(v6, 0i64);
LABEL_15:
  Job->NetRateControl = 0i64;
  _InterlockedAnd((volatile signed __int32 *)&Job->1320, 0xFBFFFFFF);
  if( !v7 )
  {
    PspModifyAncestorBits(Job, 0x2000000ui64, 0);
    v13[0] &= (unsigned __int64)v10;
    v13[1] &= (unsigned __int64)v10;
    LODWORD(v15) = (unsigned int)v10 & v15;
    v14 = 0i64;
    BYTE4(v15) = (_BYTE)v10;
    PspEnumJobsAndProcessesInJobHierarchy(
      v11,
      (__int64(__fastcall *)(__int64, __int64))PspSetRateControlJobPreCallback,
      v10,
      (__int64(__fastcall *)(_QWORD *, __int64))PspSetRateControlProcessCallback,
      (__int64)v13,
      5);
  }
  return(unsigned int)v4;
}

Referenced by:

PspSetNetRateControl