EtwpEnableGuid

NTSTATUS __stdcall EtwpEnableGuid(
        _ETW_SILODRIVERSTATE *SiloState,
        _ETW_ENABLE_NOTIFICATION_PACKET *EnableNotificationPacket,
        CHAR RequestorMode){
  _ETWP_NOTIFICATION_HEADER *v3; 
  unsigned int v4; 
  _ETW_GUID_ENTRY *v8; 
  _ETWP_NOTIFICATION_HEADER *v9; 
  int updated; 
  __int64 FilterCount; 
  unsigned int IsEnabled; 
  _ETHREAD *CurrentThread; 
  unsigned int CurrentThreadProcessId; 
  unsigned __int8 PrivateSession; 
  const _GUID *v16; 
  bool v17; 
  _ETW_GUID_ENTRY *GuidEntryByGuid; 
  _WMI_LOGGER_CONTEXT *v19; 
  _ETHREAD *v20; 
  char v21; 
  int v22; 
  unsigned __int8 v23; 
  unsigned __int16 v24; 
  unsigned __int64 MatchAnyKeyword; 
  UINT64 NotificationSize; 
  NTSTATUS v28; 
  int v29; 
  _TRACE_ENABLE_INFO *EnableInfo; 
  _ETWP_NOTIFICATION_HEADER *v31; 
  unsigned __int8 v32; 
  _ETWP_NOTIFICATION_HEADER *v33; 
  _ETW_GUID_ENTRY *Flink; 
  __int64 v35; 
  __int64 *v36; 
  __int64 *v37; 
  UINT8 IsRegEntryAllowed; 
  UINT64 v39; 
  int v40; 
  UINT8 v41; 
  int v42; 
  UINT8 v43; 
  __int16 v44; 
  _ETWP_NOTIFICATION_HEADER *v45; 
  NTSTATUS v46; 
  _EX_PUSH_LOCK *v47; 
  int v48; 
  int v49; 
  const _EVENT_DESCRIPTOR *v50; 
  __int64 v51; 
  unsigned __int16 LoggerId; 
  __int64 v53; 
  INT64 v54; 
  INT64 v55; 
  _EJOB *v56; 
  _EJOB *v57; 
  _ETWP_NOTIFICATION_HEADER *v58; 
  __int64 v59; 
  __int64 v60; 
  signed __int64 v61; 
  _DWORD *v62; 
  char *v63; 
  int v64; 
  _ADAPTER_OBJECT *v65; 
  signed __int32 bf_0; 
  signed __int32 v67; 
  _ETHREAD *v68; 
  _ADAPTER_OBJECT *SessionById; 
  unsigned int ProcessId; 
  __int16 v71; 
  _ETHREAD *v72; 
  __int64 v73; 
  _BYTE *v74; 
  _WMI_LOGGER_CONTEXT **LoggerContextPtr; 
  _ETW_FILTER_INFO *FilterInfo; 
  _ETWP_NOTIFICATION_HEADER **NotificationBlockPtr; 
  UINT8 ControlCode; 
  UINT8 ControlCode_1; 
  char ControlCode_2; 
  __int16 ControlCode_3; 
  char ControlCode_5; 
  int v83; 
  _ETWP_NOTIFICATION_HEADER *OutDataBlock; 
  _WMI_LOGGER_CONTEXT *LoggerContext; 
  _ETWP_NOTIFICATION_HEADER *NotificationPacket; 
  __int16 v87[2]; 
  _DWORD v88[3]; 
  _ETWP_NOTIFICATION_HEADER *DataBlock; 
  UINT8 GuidEnableMask[4]; 
  int v91; 
  __int64 *v92; 
  _EX_PUSH_LOCK *p_Lock; 
  _ETW_GUID_ENTRY *v94; 
  _ETW_REG_ENTRY *RegEntryPtr; 
  PVOID Handle; 
  _ETW_SESSION_INFO SessionInfo; 
  _ETWP_NOTIFICATION_HEADER *v98; 
  _ETWP_NOTIFICATION_HEADER *v99; 
  unsigned int *p_NotificationSize; 
  __int64 *v101; 
  _ETW_FILTER_INFO v102[24]; 
  _KAPC_STATE v103; 
  _KAPC_STATE ApcState; 
  INT64 a6; 
  int v106; 

  v3 = 0i64;
  v4 = EnableNotificationPacket->EnableInfo.EnableProperty & 0x20;
  Handle = 0i64;
  v83 = v4;
  RegEntryPtr = 0i64;
  v91 = 0;
  ControlCode_2 = 0;
  ControlCode = v4 != 0 ? 2 : 0;
  GuidEnableMask[0] = 0;
  ControlCode_3 = 0;
  ControlCode_5 = 0;
  v8 = 0i64;
  LoggerContext = 0i64;
  v87[0] = 0;
  memset(v102, 0i64, 0x58u);
  OutDataBlock = 0i64;
  NotificationPacket = 0i64;
  v9 = 0i64;
  memset(&SessionInfo, 0, sizeof(SessionInfo));
  updated = EtwpValidateEnableNotification(
              SiloState,
              EnableNotificationPacket,
              RequestorMode,
              &SessionInfo,
              &LoggerContext,
              v102);
  if( updated < 0 )
    goto LABEL_14;
  FilterCount = EnableNotificationPacket->FilterCount;
  IsEnabled = EnableNotificationPacket->EnableInfo.IsEnabled;
  v88[0] = IsEnabled;
  if( (unsigned int)(FilterCount - 1) <= 1 )
  {
    v60 = FilterCount;
    v61 = (char *)&a6 - (char *)&EnableNotificationPacket[1];
    v62 = &EnableNotificationPacket[1].gap0[8];
    do
    {
      v63 = &EnableNotificationPacket->gap0[*((_QWORD *)v62 - 1)];
      *(_DWORD *)((char *)v62 + (char *)&a6 + 4 - (char *)&EnableNotificationPacket[1]) = v62[1];
      v64 = *v62;
      *(_QWORD *)((char *)v62 + v61 - 8) = v63;
      *(_DWORD *)((char *)v62 + v61) = v64;
      v62 += 4;
      --v60;
    }
    while( v60 );
  }
  else
  {
    LODWORD(FilterCount) = 0;
    v106 = 0;
  }
  if( !v83 )
  {
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    --CurrentThread->Tcb.KernelApcDisable;
    LODWORD(NotificationBlockPtr) = FilterCount;
    LODWORD(LoggerContextPtr) = EnableNotificationPacket->EnableInfo.MatchAnyKeyword;
    updated = EtwpEnableDisableSpecialGuids(
                SiloState,
                (INT64 *)&EnableNotificationPacket->gap0[40],
                EnableNotificationPacket->EnableInfo.LoggerId,
                IsEnabled,
                (UINT64)LoggerContextPtr,
                (INT64)&a6,
                (INT64)NotificationBlockPtr,
                (INT64)&ControlCode_5);
    KeLeaveCriticalRegion();
    if( ControlCode_5 )
    {
LABEL_14:
      v19 = LoggerContext;
      goto LABEL_34;
    }
    v9 = OutDataBlock;
    v3 = NotificationPacket;
  }
  if( (EnableNotificationPacket->EnableInfo.LoggerId & 0xFFFD) == 0 )
  {
    v19 = LoggerContext;
    updated = -1073741790;
    goto LABEL_86;
  }
  CurrentThreadProcessId = (unsigned int)PsGetCurrentThreadProcessId();
  PrivateSession = SessionInfo.PrivateSession;
  v16 = (const _GUID *)&PrivateLoggerNotificationGuid;
  v17 = SessionInfo.PrivateSession == 0;
  *(_DWORD *)&EnableNotificationPacket->gap0[36] = CurrentThreadProcessId;
  if( v17 )
    v16 = (const _GUID *)&EnableNotificationPacket->gap0[40];
  GuidEntryByGuid = EtwpFindGuidEntryByGuid(SiloState, v16, (_ETW_GUID_TYPE)ControlCode);
  v8 = GuidEntryByGuid;
  if( GuidEntryByGuid )
  {
    if( IsEnabled == 1 )
    {
      LoggerId = GuidEntryByGuid->LastEnable.LoggerId;
      if( LoggerId )
      {
        if( !v83 && EnableNotificationPacket->EnableInfo.LoggerId != LoggerId )
        {
          v53 = 0x4719A4EB910C653Di64 - *(_QWORD *)&v8->Guid.Data1;
          if( *(_QWORD *)&v8->Guid.Data1 == 0x4719A4EB910C653Di64 )
            v53 = 0x91ECBAE3884509B9ui64 - *(_QWORD *)v8->Guid.Data4;
          if( !v53 )
          {
            updated = -1073741053;
            goto LABEL_14;
          }
        }
      }
    }
  }
  else
  {
    if( PrivateSession || IsEnabled != 1 )
    {
      updated = -1073741163;
      v8 = 0i64;
      goto LABEL_14;
    }
    v8 = EtwpAddGuidEntry(SiloState, (_GUID *)&EnableNotificationPacket->gap0[40], (_ETW_GUID_TYPE)ControlCode);
    if( !v8 )
    {
      updated = -1073741801;
      goto LABEL_14;
    }
  }
  v20 = (_ETHREAD *)KeGetCurrentThread();
  --v20->Tcb.KernelApcDisable;
  ExAcquirePushLockExclusiveEx(&v8->Lock, 0i64);
  v19 = LoggerContext;
  v21 = 1;
  v8->LockOwner = (_ETHREAD *)KeGetCurrentThread();
  HIBYTE(ControlCode_3) = 1;
  if( v19 && (v19->Flags & 0x40) != 0 )
  {
    updated = -1073741162;
    goto LABEL_33;
  }
  v22 = v83;
  if( v83 )
  {
    updated = EtwpAcquireTokenAccessInformation(v19);
    if( updated )
      goto LABEL_33;
  }
  v23 = SessionInfo.PrivateSession;
  EnableNotificationPacket->LegacyProviderEnabled = IsEnabled;
  v24 = EnableNotificationPacket->EnableInfo.LoggerId;
  EnableNotificationPacket->LegacyEnableContext.LoggerId = v24;
  EnableNotificationPacket->LegacyEnableContext.Level = EnableNotificationPacket->EnableInfo.Level;
  EnableNotificationPacket->LegacyEnableContext.EnableFlags = EnableNotificationPacket->EnableInfo.MatchAnyKeyword;
  MatchAnyKeyword = EnableNotificationPacket->EnableInfo.MatchAnyKeyword;
  if( v23 )
  {
    EnableNotificationPacket->LegacyEnableContext.InternalFlag = 1;
    EnableNotificationPacket->LegacyEnableContext.LoggerId = v24 & 0x7FFF;
  }
  if( !MatchAnyKeyword )
    EnableNotificationPacket->EnableInfo.MatchAnyKeyword = -1i64;
  if( !EnableNotificationPacket->EnableInfo.Level )
    EnableNotificationPacket->EnableInfo.Level = -1;
  if( IsEnabled != 2 && !v23 )
  {
    updated = EtwpUpdateGuidEnableInfo(v8, EnableNotificationPacket, MatchAnyKeyword, v102, (UINT8 *)&ControlCode_3);
    if( updated < 0 )
    {
LABEL_33:
      v8->LockOwner = 0i64;
      ExReleasePushLockEx((_DWORD)v8 + 408, 0);
      KeLeaveCriticalRegion();
      goto LABEL_34;
    }
    *(_OWORD *)&EnableNotificationPacket->EnableInfo.IsEnabled = *(_OWORD *)&v8->ProviderEnableInfo.IsEnabled;
    *(_OWORD *)&EnableNotificationPacket->EnableInfo.MatchAnyKeyword = *(_OWORD *)&v8->ProviderEnableInfo.MatchAnyKeyword;
    if( (EnableNotificationPacket->EnableInfo.EnableProperty & 4) != 0 )
    {
      _m_prefetchw(&v19->832);
      bf_0 = v19->$B4A554AA980A5EA7570A49F99BAE17BC::_bf_0;
      do
      {
        v67 = bf_0;
        bf_0 = _InterlockedCompareExchange((volatile signed __int32 *)&v19->832, bf_0 | 0x2000, bf_0);
      }
      while( v67 != bf_0 );
      if( (bf_0 & 0x2000) == 0 )
        EtwpReferenceStackLookasideList();
      v19 = LoggerContext;
    }
  }
  if( v8->RegListHead.Flink == &v8->RegListHead && (v8->HostEntry || v8->SiloGuidList.Flink == &v8->SiloGuidList) )
  {
    updated = 0;
    goto LABEL_33;
  }
  if( EnableNotificationPacket->gap0[12] )
  {
    updated = EtwpCreateUmReplyObject(v8, &Handle, &RegEntryPtr);
    if( updated < 0 )
      goto LABEL_33;
    *(_QWORD *)&EnableNotificationPacket->gap0[24] = RegEntryPtr;
  }
  if( EtwpBuildNotificationPacket(v8, EnableNotificationPacket, 0xFFu, &NotificationPacket) < 0 )
  {
    v3 = NotificationPacket;
    updated = -1073741801;
  }
  else
  {
    NotificationSize = NotificationPacket->NotificationSize;
    p_NotificationSize = &NotificationPacket->NotificationSize;
    v28 = EtwpAllocDataBlock(NotificationSize, NotificationPacket, &OutDataBlock);
    v9 = OutDataBlock;
    if( v28 < 0 )
      goto LABEL_127;
    v29 = *(_DWORD *)GuidEnableMask;
    EnableInfo = v8->EnableInfo;
    v31 = OutDataBlock;
    v32 = 0;
    *(_QWORD *)&v88[1] = OutDataBlock;
    do
    {
      if( EnableInfo->IsEnabled )
        v29 = (unsigned __int8)v29 | (1 << v32);
      ++v32;
      ++EnableInfo;
    }
    while( v32 < 8u );
    *(_DWORD *)GuidEnableMask = v29;
    v33 = NotificationPacket;
    ControlCode_1 = 0;
    p_Lock = 0i64;
    if( !v8->HostEntry )
    {
      Flink = (_ETW_GUID_ENTRY *)v8->SiloGuidList.Flink;
      if( Flink != (_ETW_GUID_ENTRY *)&v8->SiloGuidList )
        p_Lock = &Flink[-1].Lock;
    }
    v35 = (__int64)v8;
    v94 = v8;
    while( 1 )
    {
      v36 = *(__int64 **)(v35 + 56);
      v101 = (__int64 *)(v35 + 56);
      v92 = v36;
      if( v36 != (__int64 *)(v35 + 56) )
      {
        while( 1 )
        {
          v99 = v31;
          v98 = v31;
          if( v22 )
          {
            v37 = v36 - 2;
            v68 = (_ETHREAD *)KeGetCurrentThread();
            --v68->Tcb.KernelApcDisable;
            ExAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)(v37[4] + 408), 0i64);
            v19 = LoggerContext;
            v9 = OutDataBlock;
            v33 = NotificationPacket;
            *(_QWORD *)(v37[4] + 416) = KeGetCurrentThread();
            v36 = v92;
            ControlCode_2 = 1;
          }
          else
          {
            v37 = v36;
          }
          v92 = (__int64 *)*v36;
          IsRegEntryAllowed = EtwpIsRegEntryAllowed(
                                (_ETW_REG_ENTRY *)v37,
                                v19,
                                &SessionInfo,
                                EnableNotificationPacket,
                                (_ETW_FILTER_STRING_TOKEN **)v102,
                                ControlCode_1);
          v39 = 0i64;
          if( IsRegEntryAllowed )
          {
            DataBlock = v33;
            if( !SessionInfo.PrivateSession )
            {
              v40 = v88[0];
              if( v88[0] != 2 )
              {
                if( ControlCode_1 )
                {
                  if( v83 )
                    v41 = *((_BYTE *)v37 + 103);
                  else
                    v41 = *((_BYTE *)v37 + 102);
                }
                else if( v83 )
                {
                  v41 = *((_BYTE *)v37 + 101);
                }
                else
                {
                  v41 = *((_BYTE *)v37 + 100);
                }
                v42 = v88[0];
                LOBYTE(v39) = ControlCode;
                LODWORD(FilterInfo) = v88[0];
                EtwpUpdateRegEntryEnableMask((_ETW_REG_ENTRY *)v37, (UINT8)v19, ControlCode_3, v39);
                LODWORD(NotificationBlockPtr) = v42;
                LOBYTE(FilterInfo) = ControlCode_1;
                v43 = EtwpCalculateUpdateNotification(
                        (_ETW_REG_ENTRY *)v37,
                        ControlCode_3,
                        v41,
                        GuidEnableMask[0],
                        ControlCode,
                        (UINT64)FilterInfo,
                        NotificationBlockPtr);
                v9 = OutDataBlock;
                if( !v43 )
                {
                  v31 = *(_ETWP_NOTIFICATION_HEADER **)&v88[1];
                  if( !OutDataBlock )
                  {
                    v9 = *(_ETWP_NOTIFICATION_HEADER **)&v88[1];
                    OutDataBlock = *(_ETWP_NOTIFICATION_HEADER **)&v88[1];
                  }
                  goto LABEL_73;
                }
                if( OutDataBlock )
                {
                  v58 = OutDataBlock;
                  DataBlock = OutDataBlock;
                  if( OutDataBlock != *(_ETWP_NOTIFICATION_HEADER **)&v88[1] )
                  {
                    EtwpUnreferenceDataBlock(*(_ETWP_NOTIFICATION_HEADER **)&v88[1]);
                    v58 = v9;
                  }
                  v59 = (__int64)v58;
                  if( v58 == v98 )
                    v59 = (__int64)v99;
                  *(_QWORD *)&v88[1] = v59;
                }
                else
                {
                  v9 = *(_ETWP_NOTIFICATION_HEADER **)&v88[1];
                  OutDataBlock = *(_ETWP_NOTIFICATION_HEADER **)&v88[1];
                }
                v40 = v88[0];
              }
              if( (unsigned int)(v40 - 1) > 1 )
                goto LABEL_69;
              v44 = *((_WORD *)v37 + 49);
              if( (v44 & 8) == 0 && (v44 & 0x20) == 0 && (v19->Flags & 0x2000000) == 0 )
                goto LABEL_69;
              if( (v44 & 1) == 0 )
              {
                if( ExAcquireRundownProtection((_EX_RUNDOWN_REF *)(v37[10] + 1112)) )
                {
                  v54 = v37[10];
                  memset(&ApcState, 0, sizeof(ApcState));
                  LODWORD(v55) = PsGetProcessServerSilo(v54);
                  LODWORD(v56) = PsAttachSiloToCurrentThread(v55);
                  v57 = v56;
                  KeStackAttachProcess((PRKPROCESS)v37[10], &ApcState);
                  EtwpProviderArrivalCallback(v19, 1, (_ETW_REG_ENTRY *)v37);
                  KeUnstackDetachProcess(&ApcState);
                  PsDetachSiloFromCurrentThread(v57);
                  ExReleaseRundownProtection((_EX_RUNDOWN_REF *)(v37[10] + 1112));
                }
                goto LABEL_69;
              }
              v65 = 0i64;
              memset(&v103, 0, sizeof(v103));
              if( (v44 & 0x10) != 0 )
              {
                SessionById = (_ADAPTER_OBJECT *)MmGetSessionById(*((unsigned int *)v37 + 14));
                v65 = SessionById;
                if( SessionById )
                {
                  if( MmAttachSession(SessionById, &v103) >= 0 )
                    goto LABEL_115;
LABEL_137:
                  MmQuitNextSession(v65);
                }
              }
              else
              {
LABEL_115:
                EtwpProviderArrivalCallback(v19, 0, (_ETW_REG_ENTRY *)v37);
                if( v65 )
                {
                  MmDetachSession(v65, &v103);
                  goto LABEL_137;
                }
              }
LABEL_69:
              v45 = DataBlock;
LABEL_70:
              v46 = EtwpSendDataBlock((_ETW_REG_ENTRY *)v37, v45);
              v31 = *(_ETWP_NOTIFICATION_HEADER **)&v88[1];
              if( v46 >= 0 && (*((_BYTE *)v37 + 98) & 2) != 0 )
                ++v91;
              goto LABEL_73;
            }
            ProcessId = (unsigned int)PsGetProcessId((_EPROCESS *)v37[10]);
            if( !EtwpDemuxPrivateTraceHandle(
                    (PLEARNING_MODE_DATA *)ProcessId,
                    EnableNotificationPacket->EnableInfo.LoggerId & 0x7FFF,
                    (UINT16 *)v87) )
            {
              v71 = v87[0];
              if( v87[0] != v9->SourceGuid[1].Data3 )
              {
                if( EtwpAllocDataBlock(*p_NotificationSize, v33, &OutDataBlock) < 0 )
                {
                  v9 = *(_ETWP_NOTIFICATION_HEADER **)&v88[1];
                  if( ControlCode_2 )
                  {
                    *(_QWORD *)(v37[4] + 416) = 0i64;
                    ExReleasePushLockEx(v37[4] + 408, 0);
                    KeLeaveCriticalRegion();
                  }
LABEL_127:
                  updated = -1073741801;
LABEL_85:
                  v3 = NotificationPacket;
                  goto LABEL_86;
                }
                EtwpUnreferenceDataBlock(*(_ETWP_NOTIFICATION_HEADER **)&v88[1]);
                v9 = OutDataBlock;
                *(_QWORD *)&v88[1] = OutDataBlock;
                OutDataBlock->SourceGuid[1].Data3 = v71 | 0x8000;
                LOWORD(v9->SourceGuid[3].Data1) = v71;
              }
              v45 = v9;
              goto LABEL_70;
            }
          }
LABEL_73:
          if( ControlCode_2 )
          {
            *(_QWORD *)(v37[4] + 416) = 0i64;
            ExReleasePushLockEx(v37[4] + 408, 0);
            KeLeaveCriticalRegion();
            ControlCode_2 = 0;
          }
          v36 = v92;
          v22 = v83;
          if( v92 == v101 )
          {
            v35 = (__int64)v94;
            break;
          }
        }
      }
      if( (_ETW_GUID_ENTRY *)v35 != v8 )
      {
        *(_QWORD *)(v35 + 416) = 0i64;
        ExReleasePushLockEx(v35 + 408, 0);
        KeLeaveCriticalRegion();
      }
      v47 = p_Lock;
      if( !p_Lock )
        break;
      v72 = (_ETHREAD *)KeGetCurrentThread();
      ControlCode_1 = 1;
      v94 = (_ETW_GUID_ENTRY *)p_Lock;
      --v72->Tcb.KernelApcDisable;
      ExAcquirePushLockExclusiveEx(v47 + 51, 0i64);
      v19 = LoggerContext;
      v73 = 0i64;
      v9 = OutDataBlock;
      v33 = NotificationPacket;
      v47[52]._bf_0 = (__int64)KeGetCurrentThread();
      if( (_ETW_GUID_ENTRY *)(v47[2]._bf_0 - 16) != v8 )
        v73 = v47[2]._bf_0 - 16;
      p_Lock = (_EX_PUSH_LOCK *)v73;
      v35 = (__int64)v47;
      v22 = v83;
    }
    updated = 0;
    v48 = v91;
    *(_QWORD *)&EnableNotificationPacket->gap0[24] = Handle;
    *(_DWORD *)&EnableNotificationPacket->gap0[20] = v48;
    if( !v19 )
      goto LABEL_85;
    v49 = v88[0];
    if( v88[0] > 1u )
      goto LABEL_85;
    v50 = (const _EVENT_DESCRIPTOR *)ETW_EVENT_PROVIDER_ENABLED;
    if( v88[0] != 1 )
      v50 = &ETW_EVENT_PROVIDER_DISABLED;
    if( !EtwEventEnabled(*(&ExBootDevicesRemovedEvent + 241), v50) )
      goto LABEL_85;
    v74 = &EnableNotificationPacket->gap0[40];
    if( v49 == 1 )
      EtwpEventWriteProviderEnabled(
        (__int64)v74,
        v50,
        v51,
        &v19->LoggerName.Length,
        (unsigned __int64)&EnableNotificationPacket->gap0[40],
        EnableNotificationPacket->EnableInfo.MatchAnyKeyword,
        EnableNotificationPacket->EnableInfo.MatchAllKeyword,
        EnableNotificationPacket->EnableInfo.EnableProperty,
        EnableNotificationPacket->EnableInfo.Level);
    else
      EtwpEventWriteTemplateSessAndProv(
        (__int64)v74,
        v50,
        v51,
        2,
        &v19->LoggerName.Length,
        (unsigned __int64)&EnableNotificationPacket->gap0[40]);
    v3 = NotificationPacket;
LABEL_86:
    if( v9 )
      EtwpUnreferenceDataBlock(v9);
    v21 = HIBYTE(ControlCode_3);
  }
  if( v3 )
    EtwpUnreferenceDataBlock(v3);
  if( v21 == 1 )
    goto LABEL_33;
LABEL_34:
  if( v19 )
    EtwpReleaseLoggerContext(v19, 0);
  if( RegEntryPtr )
    HalPutDmaAdapter((PADAPTER_OBJECT)RegEntryPtr);
  if( v8 )
    EtwpUnreferenceGuidEntry(v8);
  EtwpFreeFilterInfo(v102);
  return updated;
}

Referenced by:

EtwpEnableTrace
NtTraceControl