PspValidateJobAssignmentMemoryPartition

BOOL __fastcall PspValidateJobAssignmentMemoryPartition(INT64 a1, INT64 a2, INT64 a3, INT64 a4){
  __int64 v5; 
  __int64 v6; 
  if( (_DWORD)a4 == 4 )
  {
    if( *(_QWORD *)(a1 + 1056) == a1 + 1056 && !*(_QWORD *)(a1 + 1560) )
    {
      if( *(_QWORD *)(a3 + 1296) )
      {
        if( *(_QWORD *)(*(_QWORD *)(a3 + 1296) + 1560i64) )
        {
          if( *(_QWORD *)(*(_QWORD *)(a3 + 1296) + 1560i64) != -1i64 )
          {
            v6 = *(_QWORD *)(a3 + 1296);
            if( *(_QWORD *)(v6 + 1560) != *(_QWORD *)(a3 + 2520) )
              goto LABEL_20;
          }
        }
      }
    }
  }
  else if( (unsigned int)(a4 - 6) <= 1 )
  {
    goto LABEL_4;
  }
  v5 = *(_QWORD *)(a1 + 1560);
  LODWORD(v6) = v5 - 1;
  if( (unsigned __int64)(v5 - 1) <= 0xFFFFFFFFFFFFFFFDui64
    && *(_QWORD *)(a3 + 2520) != v5
    && a3 != *(_QWORD *)(v5 + 104) )
  {
    goto LABEL_20;
  }
LABEL_4:
  LODWORD(v6) = a4 - 4;
  if( (((_DWORD)a4 - 4) & 0xFFFFFFFC) == 0 && (_DWORD)a4 != 6 && *(_QWORD *)(a1 + 1560) && *(_QWORD *)(a2 + 1560) )
  {
LABEL_20:
    LOBYTE(v6) = 0;
    return v6;
  }
  LOBYTE(v6) = 1;
  return v6;
}

Referenced by:

PspAssignProcessToJob
PspImplicitAssignProcessToJob