SepTrustLevelCheck

INT64 __fastcall SepTrustLevelCheck(
        INT64 a1,
        VOID *a2,
        SECURITY_SUBJECT_CONTEXT *a3,
        INT64 a4,
        VOID *Sid1,
        CHAR a6,
        INT64 *a7){
  char v9; 
  _SYSTEM_PROCESS_TRUST_LABEL_ACE *TrustLabelAce; 
  BOOL v11; 
  INT64 result; 
  ACCESS_MASK Mask; 
  ULONG *p_SidStart; 
  _ETHREAD *CurrentThread; 
  void *v16; 
  NTSTATUS v17; 
  char v18[40]; 
  INT64 pbDominate; 
  pbDominate = a1;
  v18[0] = 0;
  LOBYTE(pbDominate) = 0;
  v9 = 0;
  TrustLabelAce = SeGetTrustLabelAce(a2);
  if( !TrustLabelAce
    || (Mask = TrustLabelAce->Mask,
        p_SidStart = &TrustLabelAce->SidStart,
        TrustLabelAce == (_SYSTEM_PROCESS_TRUST_LABEL_ACE *)-8i64) )
  {
    result = 0i64;
    *(_DWORD *)a7 = -1;
    return result;
  }
  if( a6 )
  {
    if( a4 )
    {
      CurrentThread = (_ETHREAD *)KeGetCurrentThread();
      --*((_WORD *)CurrentThread + 242);
      LOBYTE(v11) = 1;
      ExAcquireResourceSharedLite(*(PERESOURCE *)(a4 + 48), v11);
    }
    else
    {
      SeLockSubjectContext(a3);
    }
    v9 = 1;
  }
  if( a4 )
  {
    v16 = Sid1;
    goto LABEL_15;
  }
  if( !a3->ClientToken )
  {
LABEL_14:
    v16 = (void *)*((_QWORD *)a3->PrimaryToken + 138);
LABEL_15:
    v17 = RtlSidDominatesForTrust(v16, p_SidStart, (UINT8 *)v18);
    if( v17 >= 0 )
    {
      if( v18[0] )
        *(_DWORD *)a7 = -1;
      else
        *(_DWORD *)a7 = Mask | 0x1000000;
    }
    goto LABEL_19;
  }
  v17 = RtlSidDominatesForTrust(
          *((PVOID *)a3->PrimaryToken + 138),
          *((PVOID *)a3->ClientToken + 138),
          (UINT8 *)&pbDominate);
  if( v17 >= 0 )
  {
    if( (_BYTE)pbDominate )
      goto LABEL_15;
    goto LABEL_14;
  }
LABEL_19:
  if( v9 )
  {
    if( a4 )
    {
      ExReleaseResourceLite(*(PERESOURCE *)(a4 + 48));
      KeLeaveCriticalRegion();
    }
    else
    {
      SeUnlockSubjectContext(a3);
    }
  }
  return(unsigned int)v17;
}

Referenced by:

SeAccessCheckByTypeWithAdminlessChecks
SepAccessCheckAndAuditAlarmWithAdminlessChecks
SepCommonAccessCheckExWithAdminlessChecks