PspCheckJobAccessState

__int64 __fastcall PspCheckJobAccessState(__int64 a1, _DWORD *a2){
  unsigned int v2; 
  int v3; 
  _KPROCESSOR_MODE AccessMode; 
  PVOID SecurityDescriptor; 
  UINT8 MemoryAllocated; 
  int AccessStatus; 
  unsigned int GrantedAccess; 

  GrantedAccess = 0;
  v2 = 0;
  SecurityDescriptor = 0i64;
  v3 = a2[280];
  MemoryAllocated = 0;
  AccessStatus = 0;
  if( (v3 & 1) == 0 )
  {
    if( (*(_DWORD *)a1 & 1) != 0 )
      return 0i64;
    AccessStatus = ObpGetObjectSecurity(a2, &SecurityDescriptor, &MemoryAllocated, 0);
    v2 = AccessStatus;
    if( AccessStatus >= 0 )
    {
      LOBYTE(AccessMode) = 1;
      SeAccessCheck(
        SecurityDescriptor,
        (PSECURITY_SUBJECT_CONTEXT)(a1 + 8),
        0,
        512,
        0,
        0i64,
        (PGENERIC_MAPPING)((char *)PsProcessType + 76),
        AccessMode,
        &GrantedAccess,
        &AccessStatus);
      ObReleaseObjectSecurity(SecurityDescriptor, MemoryAllocated);
      return(unsigned int)AccessStatus;
    }
  }
  return v2;
}

Referenced by:

PspSetAffinityLimitCallback
PspValidateJobAffinityState
PspValidateJobAssignmentProcessLimits