SepGetAnonymousToken

INT64 __fastcall SepGetAnonymousToken(INT64 a1, PADAPTER_OBJECT *a2){
  int v4; 
  _AUTHZBASEP_SECURITY_ATTRIBUTES_INFORMATION *v5; 
  struct _DMA_ADAPTER *v6; 
  _OBJECT_ATTRIBUTES ObjectAttributes; 
  PADAPTER_OBJECT DmaAdapter; 
  DmaAdapter = 0i64;
  memset(&ObjectAttributes.Length + 1, 0, 44);
  ObjectAttributes.Length = 48;
  v4 = SepDuplicateToken(
         (_TOKEN *)SeAnonymousLogonTokenNoEveryone,
         &ObjectAttributes,
         1u,
         TokenImpersonation,
         SecurityImpersonation,
         0,
         1u,
         (_TOKEN **)&DmaAdapter);
  if( v4 >= 0 )
  {
    if( a1 )
    {
      v4 = SepSetTokenPackage((INT64)DmaAdapter, *(UINT8 **)(a1 + 784));
      if( v4 < 0
        || (v4 = SepSetTokenCapabilities(
                   (_TOKEN *)DmaAdapter,
                   *(VOID **)(a1 + 784),
                   *(_SID_AND_ATTRIBUTES **)(a1 + 792),
                   *(unsigned int *)(a1 + 800)),
            v4 < 0)
        || (SepSetTokenSessionById((INT64)DmaAdapter, *(unsigned int *)(a1 + 120), 0, 0i64, 0i64),
            LODWORD(DmaAdapter[7].DmaOperations) = *(_DWORD *)(a1 + 120),
            v4 = SepSetTokenLowboxNumber((_TOKEN *)DmaAdapter, *(VOID **)(a1 + 784)),
            v4 < 0)
        || (v5 = *(_AUTHZBASEP_SECURITY_ATTRIBUTES_INFORMATION **)(a1 + 776)) != 0i64
        && v5->SecurityAttributeCount
        && (v4 = AuthzBasepDuplicateSecurityAttributes(
                   v5,
                   (_AUTHZBASEP_SECURITY_ATTRIBUTES_INFORMATION *)DmaAdapter[48].DmaOperations,
                   0i64),
            v4 < 0) )
      {
        v6 = DmaAdapter;
        goto LABEL_11;
      }
      DmaAdapter[4].DmaOperations = (_DMA_OPERATIONS *)((unsigned __int64)DmaAdapter[4].DmaOperations & 0x200800000i64);
      *(_QWORD *)&DmaAdapter[5].Version &= 0x200800000ui64;
      *(_QWORD *)&DmaAdapter[4].Version &= 0x200800000ui64;
      LODWORD(DmaAdapter[12].DmaOperations) &= ~0x2000u;
      LODWORD(DmaAdapter[12].DmaOperations) |= 0x4000u;
      LODWORD(DmaAdapter[12].DmaOperations) |= *(_DWORD *)(a1 + 200) & 0x380000;
    }
    v6 = DmaAdapter;
    *a2 = DmaAdapter;
    if( v4 < 0 )
LABEL_11:
      HalPutDmaAdapter(v6);
  }
  return(unsigned int)v4;
}

Referenced by:

NtImpersonateAnonymousToken
SepCopyAnonymousTokenAndSetSilo
SepCreateClientSecurityEx