PspSetEffectiveJobLimits

char __fastcall PspSetEffectiveJobLimits(__int64 a1, _DWORD *a2){
  __int64 v4; 
  char v5; 
  int v6; 
  int v7; 
  __int64 v8; 
  unsigned __int8 v9; 
  _DWORD *v10; 
  int v11; 
  __int64 v12; 
  int v13; 
  unsigned __int64 v14; 
  __int64 v15; 
  __int64 v16; 
  INT64 *v17; 
  __int64 v18; 
  __int64 v19; 
  unsigned __int8 v20; 
  unsigned int v21; 
  __int64 v22; 
  unsigned __int64 v23; 
  __int64 v24; 
  unsigned __int64 v25; 
  _OWORD *v26; 
  unsigned int v27; 
  unsigned __int64 v28; 
  __int64 v29; 
  INT64 result[22]; 
  memset((INT64)result, 0i64);
  v4 = *(_QWORD *)(a1 + 1072);
  v5 = PspSetEffectiveLimit(16, a2);
  v7 = v6 - 15;
  v8 = (unsigned int)(v6 + 112);
  if( v5 )
  {
    if( ((unsigned __int8)*(_DWORD *)(a1 + 256) & (unsigned __int8)v6) != 0 )
    {
      if( !v4 || (v26 = (_OWORD *)(v4 + 616), (unsigned int)KeIsEmptyAffinityEx((_WORD *)(v4 + 616))) )
      {
        v16 = a1 + 616;
        v17 = (INT64 *)(a1 + 264);
      }
      else
      {
        KeAndAffinityEx((_KAFFINITY_EX *)(v4 + 616), (_KAFFINITY_EX *)(a1 + 264), (_KAFFINITY_EX *)result);
        if( !(unsigned int)KeIsEqualAffinityEx((unsigned __int16 *)(a1 + 264), (unsigned __int16 *)result)
          || (unsigned int)KeIsEmptyAffinityEx(result) )
        {
          *(_OWORD *)(a1 + 616) = *v26;
          *(_OWORD *)(a1 + 632) = *(_OWORD *)(v4 + 632);
          *(_OWORD *)(a1 + 648) = *(_OWORD *)(v4 + 648);
          *(_OWORD *)(a1 + 664) = *(_OWORD *)(v4 + 664);
          *(_OWORD *)(a1 + 680) = *(_OWORD *)(v4 + 680);
          *(_OWORD *)(a1 + 696) = *(_OWORD *)(v4 + 696);
          *(_OWORD *)(a1 + 712) = *(_OWORD *)(v4 + 712);
          v18 = v8 + a1 + 616;
          *(_OWORD *)(v18 - 16) = *(_OWORD *)(v4 + 728);
          *(_OWORD *)v18 = *(_OWORD *)((char *)v26 + v8);
          *(_OWORD *)(v18 + 16) = *(_OWORD *)((char *)v26 + v8 + 16);
          v19 = *(_QWORD *)((char *)v26 + v8 + 32);
          goto LABEL_18;
        }
        v16 = a1 + 616;
        v17 = result;
      }
    }
    else
    {
      v16 = a1 + 616;
      if( !v4 )
      {
        *(_DWORD *)(a1 + 620) = 0;
        *(_DWORD *)v16 = 1310721;
        memset(a1 + 624, 0i64);
        goto LABEL_2;
      }
      v17 = (INT64 *)(v4 + 616);
    }
    *(_OWORD *)v16 = *(_OWORD *)v17;
    *(_OWORD *)(v16 + 16) = *((_OWORD *)v17 + 1);
    *(_OWORD *)(v16 + 32) = *((_OWORD *)v17 + 2);
    *(_OWORD *)(v16 + 48) = *((_OWORD *)v17 + 3);
    *(_OWORD *)(v16 + 64) = *((_OWORD *)v17 + 4);
    *(_OWORD *)(v16 + 80) = *((_OWORD *)v17 + 5);
    *(_OWORD *)(v16 + 96) = *((_OWORD *)v17 + 6);
    v18 = v8 + v16;
    *(_OWORD *)(v18 - 16) = *((_OWORD *)v17 + 7);
    *(_OWORD *)v18 = *(_OWORD *)((char *)v17 + v8);
    *(_OWORD *)(v18 + 16) = *(_OWORD *)((char *)v17 + v8 + 16);
    v19 = *(INT64 *)((char *)v17 + v8 + 32);
LABEL_18:
    *(_QWORD *)(v18 + 32) = v19;
  }
LABEL_2:
  if( PspSetEffectiveLimit(32, a2) )
  {
    if( v4 )
      v20 = *(_BYTE *)(v4 + 872);
    else
      v20 = 0;
    if( ((unsigned __int8)*(_DWORD *)(a1 + 256) & v9) != 0
      && *((_BYTE *)&PspPriorityClassRank + v20) >= *((_BYTE *)&PspPriorityClassRank + *(unsigned __int8 *)(a1 + 873)) )
    {
      v20 = *(_BYTE *)(a1 + 873);
    }
    *(_BYTE *)(a1 + 872) = v20;
  }
  if( PspSetEffectiveLimit(v8, a2) )
  {
    if( v4 )
      v21 = *(_DWORD *)(v4 + 852);
    else
      v21 = 10;
    if( ((unsigned __int8)*(_DWORD *)(a1 + 256) & (unsigned __int8)v8) != 0 && (v27 = *(_DWORD *)(a1 + 484), v27 < v21) )
      *(_DWORD *)(a1 + 852) = v27;
    else
      *(_DWORD *)(a1 + 852) = v21;
  }
  if( PspSetEffectiveLimit(v7, v10) )
  {
    if( v4 )
    {
      v22 = *(_QWORD *)(v4 + 792);
      v23 = *(_QWORD *)(v4 + 800);
    }
    else
    {
      v22 = 0i64;
      v23 = 0i64;
    }
    if( ((unsigned __int8)*(_DWORD *)(a1 + 256) & (unsigned __int8)v7) == 0
      || (v28 = *(_QWORD *)(a1 + 248), v28 >= v23) && v23 )
    {
      *(_QWORD *)(a1 + 800) = v23;
      *(_QWORD *)(a1 + 792) = v22;
    }
    else
    {
      *(_QWORD *)(a1 + 800) = v28;
      *(_QWORD *)(a1 + 792) = *(_QWORD *)(a1 + 240);
    }
  }
  if( PspSetEffectiveLimit(256, a2) )
  {
    if( v4 )
    {
      v14 = *(_QWORD *)(v4 + 808);
      v15 = *(_QWORD *)(v4 + 816);
    }
    else
    {
      v14 = 0i64;
      v15 = 0i64;
    }
    if( (v11 & *(_DWORD *)(a1 + 256)) == 0 || (v25 = *(_QWORD *)(a1 + 576), v25 >= v14) && v14 )
    {
      *(_QWORD *)(a1 + 808) = v14;
      *(_QWORD *)(a1 + 816) = v15;
    }
    else
    {
      *(_QWORD *)(a1 + 808) = v25;
      *(_QWORD *)(a1 + 816) = a1;
    }
  }
  LOBYTE(v12) = PspSetEffectiveLimit(2, a2);
  if( (_BYTE)v12 )
  {
    if( v4 )
    {
      v12 = *(_QWORD *)(v4 + 784);
      v24 = *(_QWORD *)(v4 + 824);
    }
    else
    {
      v12 = 0i64;
      v24 = 0i64;
    }
    if( (*(_DWORD *)(a1 + 256) & 2) == 0 || (v29 = *(_QWORD *)(a1 + 224), v29 >= v12) && v12 )
    {
      *(_QWORD *)(a1 + 784) = v12;
      *(_QWORD *)(a1 + 824) = v24;
    }
    else
    {
      *(_QWORD *)(a1 + 784) = v29;
      *(_QWORD *)(a1 + 824) = a1;
    }
  }
  v13 = *(_DWORD *)(a1 + 256);
  *(_DWORD *)(a1 + 848) = v13;
  if( v4 )
  {
    LODWORD(v12) = v13 | *(_DWORD *)(v4 + 848);
    *(_DWORD *)(a1 + 848) = v12;
  }
  return v12;
}

Referenced by:

PspEstablishJobHierarchy
PspSetJobLimitsJobPreCallback