EtwpGetSidExtendedHeaderItem

INT64 __fastcall EtwpGetSidExtendedHeaderItem(INT64 a1){
  _ETHREAD *CurrentThread; 
  struct _DMA_ADAPTER *v3; 
  _TOKEN_TYPE v4; 
  struct _DMA_ADAPTER *v5; 
  int v6; 
  UINT64 v7; 
  unsigned int v8; 
  UINT8 EffectiveOnly[4]; 
  _TOKEN_TYPE TokenType; 
  _SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; 
  int Size[21]; 
  EffectiveOnly[0] = 0;
  ImpersonationLevel = SecurityAnonymous;
  Size[0] = 0;
  TokenType = 0;
  memset((INT64)&Size[1], 0i64);
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v3 = (struct _DMA_ADAPTER *)PsReferenceEffectiveToken(
                                CurrentThread,
                                &TokenType,
                                EffectiveOnly,
                                &ImpersonationLevel,
                                0i64);
  v4 = TokenType;
  v5 = v3;
  if( TokenType == TokenImpersonation && ImpersonationLevel < SecurityImpersonation )
  {
    if( v3 )
      HalPutDmaAdapter(v3);
    v5 = (struct _DMA_ADAPTER *)PsReferencePrimaryToken(*((PEPROCESS *)CurrentThread + 68));
    v4 = TokenPrimary;
  }
  SeQueryUserSidToken(v5, &Size[1], 0x44ui64, (UINT64 *)Size);
  if( v4 == TokenPrimary )
  {
    ObFastDereferenceObject((INT64 *)(*((_QWORD *)CurrentThread + 68) + 1208i64), v5);
  }
  else if( v5 )
  {
    HalPutDmaAdapter(v5);
  }
  v6 = Size[0];
  v7 = (unsigned int)Size[0];
  *(_DWORD *)(a1 + 2) = 2;
  *(_WORD *)(a1 + 6) = v6;
  v8 = v6 + 8;
  *(_WORD *)a1 = (v6 + 15) & 0xFFF8;
  memmove((UINT8 *)(a1 + 8), (UINT8 *)&Size[1], v7);
  return memset(a1 + v8, 0i64);
}

Referenced by:

EtwpEventWriteFull
EtwpWriteUserEvent