SeIsTokenAssignableToProcess

INT64 __fastcall SeIsTokenAssignableToProcess(VOID *pAccessToken, UINT8 *pbIsAssignable){
  UINT8 v2; 
  _EPROCESS *v5; 
  BOOL v6; 
  PERESOURCE *v7; 
  _ETHREAD *CurrentThread; 
  _ETHREAD *v9; 
  BOOL v10; 
  int v11; 
  int v12; 
  INT64 result; 
  UINT8 v14; 
  UINT8 IsChild; 
  UINT8 pbDominate; 
  UINT8 IsSibling; 
  v2 = 0;
  *pbIsAssignable = 0;
  IsChild = 0;
  IsSibling = 0;
  v5 = (_EPROCESS *)*((_QWORD *)KeGetCurrentThread() + 23);
  pbDominate = 0;
  v7 = (PERESOURCE *)PsReferencePrimaryToken((PEPROCESS)v5);
  if( !v7 )
    return 3221225473i64;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  LOBYTE(v6) = 1;
  ExAcquireResourceSharedLite(v7[6], v6);
  SepCopyTokenIntegrity((INT64)v7);
  ExReleaseResourceLite(v7[6]);
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  ObFastDereferenceObject((INT64 *)(*((_QWORD *)KeGetCurrentThread() + 23) + 1208i64), (struct DMA_ADAPTER *)v7);
  v9 = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)v9 + 242);
  LOBYTE(v10) = 1;
  ExAcquireResourceSharedLite(*((PERESOURCE *)pAccessToken + 6), v10);
  SepCopyTokenIntegrity((INT64)pAccessToken);
  v11 = *((_DWORD *)pAccessToken + 48);
  v12 = *((_DWORD *)pAccessToken + 49);
  ExReleaseResourceLite(*((PERESOURCE *)pAccessToken + 6));
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  if( v11 == 2 && v12 < 2 )
    return 3221225637i64;
  LODWORD(result) = RtlSidDominates(0i64, 0i64, &pbDominate);
  if( (int)result >= 0 )
  {
    if( pbDominate )
    {
      LODWORD(result) = SepIsChildTokenByPointer(pAccessToken, &IsChild);
      v14 = IsChild;
      if( !IsChild )
      {
        if( (int)result < 0 )
          return result;
        LODWORD(result) = SepIsSiblingTokenByPointer(pAccessToken, &IsSibling);
      }
    }
    else
    {
      v14 = IsChild;
    }
    if( (int)result >= 0 )
    {
      if( v14 || IsSibling )
        v2 = 1;
      *pbIsAssignable = v2;
    }
  }
  return result;
}

Referenced by:

PspAllocateProcess
PspAssignPrimaryToken