EtwStartAutoLogger

NTSTATUS __stdcall EtwStartAutoLogger(WCHAR *LoggerName, WCHAR *LoggerKeyName, UINT64 *LoggerId){
  UINT64 *v3; 
  void *v6; 
  VOID **v7; 
  INT64 v8; 
  NTSTATUS v9; 
  VOID **PoolWithTag; 
  _WORD *v11; 
  int v12; 
  _WORD *v13; 
  int v14; 
  int v15; 
  const WCHAR *v16; 
  unsigned int *v18; 
  int v19; 
  int v20; 
  unsigned int v21; 
  __int16 v22; 
  _DWORD *v23; 
  int v24; 
  _GUID v25; 
  __int64 v26; 
  _ETW_SILODRIVERSTATE *v27; 
  NTSTATUS started; 
  unsigned __int64 v29; 
  unsigned int v30; 
  _ESERVERSILO_GLOBALS *v31; 
  unsigned int v32; 
  const WCHAR *v33; 
  __int64 v34; 
  NTSTATUS KeyTreeForPath; 
  int v36; 
  _WORD *v37; 
  unsigned __int16 v38; 
  UINT16 v39; 
  __int64 v40; 
  VOID **v41; 
  unsigned int v42; 
  _GUID *v43; 
  int v44; 
  _ESERVERSILO_GLOBALS *CurrentServerSiloGlobals; 
  NTSTATUS v46; 
  VOID *ValueData; 
  VOID *ValueDataa; 
  INT64 ValueLength; 
  UINT64 ValueLengtha; 
  UINT64 *Disposition; 
  INT64 v52; 
  __int16 v53[2]; 
  _DWORD KeyLength[3]; 
  unsigned int v55; 
  int v56; 
  UINT64 v57; 
  _KEXCEPTION_FRAME *ExceptionFrame; 
  __int16 v59; 
  int v60; 
  int v61; 
  NTSTATUS v62; 
  VOID *KeyHandle; 
  _UNICODE_STRING SiloState; 
  int v65; 
  int v66; 
  int v67; 
  VOID *Src; 
  __int128 v69; 
  __int128 v70; 
  _UNICODE_STRING v71; 
  __int128 v72; 
  _UNICODE_STRING UnicodeString; 
  _UNICODE_STRING FilterString; 
  _UNICODE_STRING DestinationString; 
  _OBJECT_ATTRIBUTES ObjectAttributes; 
  PWCHAR src; 
  _KEY_BASIC_INFORMATION *KeyInformation; 
  WCHAR *LoggerRegistryKeyName; 
  _GUID Guid; 
  int v81; 
  int *v82; 
  int v83; 
  _DWORD *v84; 
  int v85; 
  __int64 v86; 
  int v87; 
  __int64 v88; 
  int v89; 
  VOID **v90; 
  int v91; 
  VOID **v92; 
  int v93; 
  __int128 *v94; 
  int v95; 
  __int128 *v96; 
  int v97; 
  VOID **v98; 
  int v99; 
  __int64 v100; 
  int v101; 
  VOID **v102; 
  int v103; 
  int *v104; 
  int v105; 
  _UNICODE_STRING *p_UnicodeString; 
  int v107; 
  VOID **v108; 
  int v109; 
  unsigned int *v110; 
  int v111; 
  _UNICODE_STRING *p_FilterString; 
  int v113; 
  __int128 *v114; 
  int v115; 
  int *v116; 
  int v117; 
  _UNICODE_STRING *v118; 
  int v119; 
  VOID **v120; 
  __int64 v121[147]; 

  KeyInformation = (_KEY_BASIC_INFORMATION *)LoggerId;
  LoggerRegistryKeyName = LoggerKeyName;
  src = LoggerName;
  v3 = LoggerId;
  *(&ObjectAttributes.Length + 1) = 0;
  *(&ObjectAttributes.Attributes + 1) = 0;
  v65 = 1;
  KeyHandle = 0i64;
  DestinationString = 0i64;
  ExceptionFrame = 0i64;
  v6 = 0i64;
  v62 = 0;
  v7 = 0i64;
  v60 = 0;
  UnicodeString = 0i64;
  v55 = 0;
  FilterString = 0i64;
  v61 = 0;
  v71 = 0i64;
  v56 = 0;
  v72 = 0i64;
  KeyLength[0] = 0;
  v70 = 0i64;
  v53[0] = 0;
  v69 = 0i64;
  v67 = 0;
  v66 = 100;
  v59 = 0;
  Guid = 0i64;
  *(_QWORD *)&SiloState.Length = PsGetCurrentServerSiloGlobals((_KSPIN_LOCK *)LoggerName)->EtwSiloState;
  RtlInitUnicodeString(&DestinationString, LoggerKeyName);
  ObjectAttributes.Length = 48;
  ObjectAttributes.ObjectName = &DestinationString;
  ObjectAttributes.RootDirectory = 0i64;
  ObjectAttributes.Attributes = 576;
  *(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
  v9 = ZwOpenKey(&KeyHandle, 0x2001Fui64, &ObjectAttributes, v8, (INT64)ValueData, ValueLength, (INT64)Disposition, v52);
  if( v9 >= 0 )
  {
    *(_QWORD *)&KeyLength[1] = ExAllocatePoolWithTag(1ui64, 0x2000ui64, 1350005829i64);
    v6 = *(void **)&KeyLength[1];
    if( *(_QWORD *)&KeyLength[1] )
    {
      PoolWithTag = ExAllocatePoolWithTag(1ui64, 0x504ui64, 1350005829i64);
      v7 = PoolWithTag;
      if( PoolWithTag )
      {
        memset(PoolWithTag, 0i64, 0x504u);
        *((_DWORD *)v7 + 11) = 0x20000;
        *((_DWORD *)v7 + 12) = 4;
        RtlInitUnicodeString((PUNICODE_STRING)v7 + 9, LoggerName);
        *((_DWORD *)v7 + 18) = 0x80000000;
        *((_WORD *)v7 + 36) = 176;
        v11 = (_WORD *)v7 + 90;
        *((_BYTE *)v7 + 74) = -1;
        *((_DWORD *)v7 + 44) = 1;
        Src = v7 + 28;
        v12 = 180;
        v13 = (_WORD *)v7 + 626;
        memset(v121, 0i64, sizeof(v121));
        v121[0] = (__int64)EtwpQueryRegistryCallback;
        v121[3] = (__int64)&v81;
        v121[7] = (__int64)EtwpQueryRegistryCallback;
        v121[2] = (__int64)L"Start";
        LODWORD(v121[4]) = 4;
        v82 = &v60;
        v81 = 4;
        v121[10] = (__int64)&v83;
        v121[9] = (__int64)L"Immutable";
        v84 = KeyLength;
        LODWORD(v121[11]) = 4;
        v83 = 4;
        LOBYTE(v14) = RtlpQueryRegistryValues((_KTRAP_FRAME *)0x40000000, (_KEXCEPTION_FRAME *)KeyHandle);
        v9 = v14;
        if( v14 < 0 )
          goto LABEL_10;
        if( !v3 )
        {
          v15 = KeyLength[0];
          goto LABEL_7;
        }
        LODWORD(v57) = 0;
        RtlInitUnicodeString(&DestinationString, (PCWSTR)v3);
        ObjectAttributes.Length = 48;
        ObjectAttributes.ObjectName = &DestinationString;
        ObjectAttributes.RootDirectory = 0i64;
        LODWORD(ValueLengtha) = 0;
        ObjectAttributes.Attributes = 576;
        *(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
        v9 = ZwCreateKey((VOID **)&ExceptionFrame, 0x2001Fui64, &ObjectAttributes, 0i64, 0i64, ValueLengtha, &v57);
        if( v9 == -1073741772 )
        {
          KeyTreeForPath = EtwpCreateKeyTreeForPath(v3);
          LODWORD(v3) = 0;
          if( KeyTreeForPath )
            goto LABEL_78;
          LODWORD(ValueLengtha) = 0;
          v9 = ZwCreateKey((VOID **)&ExceptionFrame, 0x2001Fui64, &ObjectAttributes, 0i64, 0i64, ValueLengtha, &v57);
        }
        else
        {
          LODWORD(v3) = 0;
        }
        if( !v9 )
        {
LABEL_79:
          v15 = KeyLength[0];
          if( (_DWORD)v57 == 1 )
            v15 = 1;
          KeyLength[0] = v15;
LABEL_7:
          if( !v15 )
          {
            if( ExceptionFrame )
            {
              v121[5] = (__int64)&v60;
              memset(&v121[7], 0, 56);
              LOBYTE(v36) = RtlpQueryRegistryValues((_KTRAP_FRAME *)0x40000000, ExceptionFrame);
              v9 = v36;
              if( v36 < 0 )
                v9 = (int)v3;
            }
          }
          if( v60 != (_DWORD)v3 )
          {
            LODWORD(v72) = 40;
            LODWORD(v121[4]) = 4;
            v121[0] = (__int64)EtwpQueryRegistryCallback;
            v121[3] = (__int64)&v81;
            v81 = 4;
            v121[2] = (__int64)L"FlushThreshold";
            v121[7] = (__int64)EtwpQueryRegistryCallback;
            v82 = (int *)v7 + 19;
            LODWORD(v121[11]) = 4;
            v121[10] = (__int64)&v83;
            v121[9] = (__int64)L"BufferSize";
            v121[17] = (__int64)&v85;
            v121[16] = (__int64)L"MinimumBuffers";
            v86 = (__int64)v7 + 52;
            v121[24] = (__int64)&v87;
            v121[23] = (__int64)L"FlushTimer";
            v88 = (__int64)v7 + 68;
            v121[31] = (__int64)&v89;
            v121[30] = (__int64)L"MaximumBuffers";
            v90 = v7 + 7;
            v121[38] = (__int64)&v91;
            v121[37] = (__int64)L"FileName";
            v121[40] = (__int64)v53;
            v92 = v7 + 16;
            *((_QWORD *)&v72 + 1) = v7 + 23;
            v121[45] = (__int64)&v93;
            v121[44] = (__int64)L"EnableKernelFlags";
            v94 = &v72;
            *((_QWORD *)&v69 + 1) = (char *)v7 + 228;
            v121[52] = (__int64)&v95;
            v121[51] = (__int64)L"StackWalkingFilter";
            v83 = 4;
            v84 = v7 + 6;
            v121[14] = (__int64)EtwpQueryRegistryCallback;
            LODWORD(v121[18]) = 4;
            v85 = 4;
            v121[21] = (__int64)EtwpQueryRegistryCallback;
            LODWORD(v121[25]) = 4;
            v87 = 4;
            v121[28] = (__int64)EtwpQueryRegistryCallback;
            LODWORD(v121[32]) = 4;
            v89 = 4;
            v121[35] = (__int64)EtwpQueryRegistryCallback;
            LODWORD(v121[39]) = 1;
            v91 = 1;
            v121[42] = (__int64)EtwpQueryRegistryCallback;
            LODWORD(v121[46]) = 3;
            v93 = 3;
            LODWORD(v69) = 1024;
            v121[49] = (__int64)EtwpQueryRegistryCallback;
            LODWORD(v121[53]) = 3;
            v95 = 3;
            v96 = &v69;
            v18 = (unsigned int *)(v7 + 12);
            v121[56] = (__int64)EtwpQueryRegistryCallback;
            v121[59] = (__int64)&v97;
            v121[58] = (__int64)L"ClockType";
            v121[61] = (__int64)&v65;
            v98 = v7 + 5;
            v121[66] = (__int64)&v99;
            v121[65] = (__int64)L"MaxFileSize";
            v121[68] = (__int64)&v66;
            v100 = (__int64)v7 + 60;
            v121[73] = (__int64)&v101;
            v121[72] = (__int64)L"LogFileMode";
            v121[75] = (__int64)&v67;
            v102 = v7 + 8;
            v121[80] = (__int64)&v103;
            v121[79] = (__int64)L"DisableRealtimePersistence";
            v104 = &v61;
            v121[87] = (__int64)&v105;
            v121[86] = (__int64)L"Guid";
            v121[89] = (__int64)v53;
            p_UnicodeString = &UnicodeString;
            v121[94] = (__int64)&v107;
            v121[93] = (__int64)L"FileCounter";
            v121[101] = (__int64)&v109;
            v121[100] = (__int64)L"FileMax";
            v110 = &v55;
            v121[108] = (__int64)&v111;
            LODWORD(v121[60]) = 4;
            LODWORD(v121[62]) = 4;
            v97 = 4;
            v121[63] = (__int64)EtwpQueryRegistryCallback;
            LODWORD(v121[67]) = 4;
            LODWORD(v121[69]) = 4;
            v99 = 4;
            v121[70] = (__int64)EtwpQueryRegistryCallback;
            LODWORD(v121[74]) = 4;
            LODWORD(v121[76]) = 4;
            v101 = 4;
            v121[77] = (__int64)EtwpQueryRegistryCallback;
            LODWORD(v121[81]) = 4;
            v103 = 4;
            v121[84] = (__int64)EtwpQueryRegistryCallback;
            LODWORD(v121[88]) = 1;
            v105 = 1;
            v121[91] = (__int64)EtwpQueryRegistryCallback;
            LODWORD(v121[95]) = 4;
            v107 = 4;
            v108 = v7 + 12;
            v121[98] = (__int64)EtwpQueryRegistryCallback;
            LODWORD(v121[102]) = 4;
            v109 = 4;
            v121[105] = (__int64)EtwpQueryRegistryCallback;
            v121[107] = (__int64)L"PoolTagFilter";
            LODWORD(v121[109]) = 1;
            v121[110] = (__int64)v53;
            p_FilterString = &FilterString;
            *((_QWORD *)&v70 + 1) = (char *)v7 + 1276;
            v121[115] = (__int64)&v113;
            v121[114] = (__int64)L"StackCaching";
            v114 = &v70;
            v121[122] = (__int64)&v115;
            v121[121] = (__int64)L"EnableSecurityProvider";
            v116 = &v56;
            v121[129] = (__int64)&v117;
            v121[128] = (__int64)L"DisallowList";
            v121[131] = (__int64)v53;
            v118 = &v71;
            v121[136] = (__int64)&v119;
            v121[135] = (__int64)L"V2Options";
            LODWORD(v121[137]) = 11;
            v119 = 11;
            v111 = 1;
            v121[112] = (__int64)EtwpQueryRegistryCallback;
            LODWORD(v121[116]) = 3;
            v113 = 3;
            v121[119] = (__int64)EtwpQueryRegistryCallback;
            LODWORD(v121[123]) = 4;
            v115 = 4;
            v121[126] = (__int64)EtwpQueryRegistryCallback;
            LODWORD(v121[130]) = 1;
            v117 = 1;
            v121[133] = (__int64)EtwpQueryRegistryCallback;
            v120 = v7 + 10;
            LODWORD(v70) = 8;
            LODWORD(v121[139]) = 8;
            LOBYTE(v19) = RtlpQueryRegistryValues((_KTRAP_FRAME *)0x40000000, (_KEXCEPTION_FRAME *)KeyHandle);
            v9 = v19;
            if( v19 >= 0 )
            {
              if( ExceptionFrame )
              {
                if( KeyLength[0] )
                {
                  v121[5] = (__int64)(v7 + 12);
                  v121[3] = (__int64)&v107;
                  v121[0] = (__int64)EtwpQueryRegistryCallback;
                  v121[2] = (__int64)L"FileCounter";
                  LODWORD(v121[4]) = 4;
                  v81 = 4;
                  v82 = (int *)(v7 + 12);
                  v121[7] = 0i64;
                }
                else
                {
                  v121[12] = (__int64)(v7 + 6);
                  v121[5] = (__int64)v7 + 76;
                  v121[19] = (__int64)v7 + 52;
                  v121[26] = (__int64)v7 + 68;
                  v121[33] = (__int64)(v7 + 7);
                  v121[40] = (__int64)v7[17];
                  LODWORD(v121[41]) = *((unsigned __int16 *)v7 + 64);
                  v121[47] = *((_QWORD *)&v72 + 1);
                  LODWORD(v121[48]) = v72;
                  v121[54] = *((_QWORD *)&v69 + 1);
                  LODWORD(v121[55]) = v69;
                  v121[61] = (__int64)(v7 + 5);
                  v121[68] = (__int64)v7 + 60;
                  v121[75] = (__int64)(v7 + 8);
                  v121[82] = (__int64)&v61;
                  v121[89] = (__int64)UnicodeString.Buffer;
                  LODWORD(v121[90]) = UnicodeString.Length;
                  v121[103] = (__int64)&v55;
                  v121[110] = (__int64)FilterString.Buffer;
                  LODWORD(v121[111]) = FilterString.Length;
                  v121[117] = *((_QWORD *)&v70 + 1);
                  LODWORD(v121[118]) = v70;
                  v121[124] = (__int64)&v56;
                  v121[131] = (__int64)v71.Buffer;
                  LODWORD(v121[132]) = v71.Length;
                  v121[96] = (__int64)(v7 + 12);
                }
                RtlpQueryRegistryValues((_KTRAP_FRAME *)0x40000000, ExceptionFrame);
                v9 = 0;
              }
              v20 = *((_DWORD *)v7 + 28) | 2;
              *((_DWORD *)v7 + 28) = v20;
              if( !v61 )
                *((_DWORD *)v7 + 28) = v20 | 1;
              v21 = (unsigned int)v72 >> 2;
              if( (unsigned __int16)((unsigned int)v72 >> 2) )
              {
                *((_WORD *)v7 + 91) = 1;
                *v11 = v21 + 1;
                ++*((_WORD *)v7 + 89);
                *((_WORD *)v7 + 88) += *v11;
                v12 = 4 * (unsigned __int16)*v11 + 180;
              }
              if( (_DWORD)v69 )
              {
                v37 = Src;
                v38 = ((unsigned int)v69 >> 2) + 1;
                if( (v69 & 3) == 0 )
                  v38 = (unsigned int)v69 >> 2;
                *((_WORD *)Src + 1) = 3;
                *v37 = v38 + 1;
                ++*((_WORD *)v7 + 89);
                *((_WORD *)v7 + 88) += *v37;
                v12 += 4 * (unsigned __int16)*v37;
                if( (_WORD)v21 )
                  v11 += 2 * (unsigned __int16)*v11;
                if( v11 != v37 )
                  memmove(v11, v37, 4 * v38 + 4);
              }
              if( FilterString.Buffer )
              {
                Src = (char *)v7 + 4 * *((unsigned __int16 *)v7 + 88) + 176;
                v39 = EtwpParsePoolTagFilter(&FilterString, (UINT64 *)v7 + 157);
                v22 = v39;
                if( v39 )
                {
                  *v13 = v39 + 1;
                  *((_WORD *)v7 + 627) = 4;
                  ++*((_WORD *)v7 + 89);
                  *((_WORD *)v7 + 88) += *v13;
                  v12 += 4 * (unsigned __int16)*v13;
                  if( Src != v13 )
                    memmove(Src, (char *)v7 + 1252, 4 * v39 + 4);
                }
              }
              else
              {
                v22 = v59;
              }
              if( (_DWORD)v70 == 8 )
              {
                v40 = *((unsigned __int16 *)v7 + 88);
                *((_DWORD *)v7 + 318) = 327683;
                ++*((_WORD *)v7 + 89);
                *((_WORD *)v7 + 88) += *((_WORD *)v7 + 636);
                v41 = (VOID **)((char *)v7 + 4 * v40 + 176);
                v12 += 4 * *((unsigned __int16 *)v7 + 636);
                if( v41 != v7 + 159 )
                  memmove(v41, v7 + 159, 0xCu);
              }
              if( !(_WORD)v21 && !(_DWORD)v69 && !(_DWORD)v70 && !v22 )
                *((_DWORD *)v7 + 18) = 0;
              v23 = v7 + 8;
              v24 = *((_DWORD *)v7 + 16);
              if( (v24 & 0x500) != 0 && (v24 & 0x200) == 0 || v7[17] )
              {
LABEL_41:
                if( v9 >= 0 )
                {
                  if( v56 )
                  {
                    if( (*v23 & 0x80u) == 0 || (*v23 & 0x100) == 0 || v7[17] )
                      v9 = -1073741790;
                    else
                      *((_DWORD *)v7 + 28) |= 0x8004000u;
                  }
                  if( v9 >= 0 )
                  {
                    if( v55 )
                    {
                      v32 = *v18 + 1;
                      *v18 = v32;
                      if( v32 > v55 || v32 > 0x10 )
                        *v18 = 1;
                      v33 = (const WCHAR *)ExceptionFrame;
                      if( !ExceptionFrame )
                        v33 = (const WCHAR *)KeyHandle;
                      LODWORD(ValueLengtha) = 4;
                      RtlWriteRegistryValue(0x40000000ui64, v33, L"FileCounter", 4ui64, v7 + 12, ValueLengtha);
                    }
                    if( !wcscmp(src, (PWCHAR)L"GlobalLogger") )
                      Guid = GlobalLoggerGuid;
                    else
                      v9 = UnicodeString.Buffer ? RtlGUIDFromString(&UnicodeString, &Guid) : -1073741811;
                    if( v9 >= 0 )
                    {
                      v25 = Guid;
                      v26 = *(_QWORD *)&SiloState.Length;
                      v27 = *(_ETW_SILODRIVERSTATE **)&SiloState.Length;
                      *(_DWORD *)v7 = v12;
                      *(_GUID *)(v7 + 3) = v25;
                      started = EtwpStartLogger(v27, (_WMI_LOGGER_INFORMATION *)v7);
                      v30 = *((unsigned __int16 *)v7 + 4);
                      v9 = started;
                      if( started >= 0 )
                      {
                        if( *((_WORD *)v7 + 4) && v56 )
                        {
                          v34 = 0i64;
                          v29 = v26 + 4048;
                          while( *(_WORD *)v29 )
                          {
                            v34 = (unsigned int)(v34 + 1);
                            v29 += 2i64;
                            if( (unsigned int)v34 >= 8 )
                              goto LABEL_52;
                          }
                          *(_WORD *)(v26 + 2 * v34 + 4048) = v30;
                        }
LABEL_52:
                        if( v71.Length )
                        {
                          v42 = v71.Length / 0x4Cu;
                          v29 = v71.Length % 0x4Cu;
                          if( v71.Length == 76 * v42 )
                          {
                            v29 = 76i64;
                            SiloState.Buffer = v71.Buffer;
                            *(&SiloState.MaximumLength + 2) = 0;
                            SiloState.Length = 76;
                            *(_DWORD *)&SiloState.MaximumLength = (unsigned __int16)(v71.MaximumLength - v71.Length + 76);
                            if( v42 <= 0x200 )
                            {
                              v43 = *(_GUID **)&KeyLength[1];
                              v44 = 0;
                              if( v42 )
                              {
                                while( 1 )
                                {
                                  v9 = RtlGUIDFromString(&SiloState, &v43[v44]);
                                  if( v9 )
                                    break;
                                  SiloState.Buffer += 38;
                                  if( ++v44 >= v42 )
                                    goto LABEL_110;
                                }
                              }
                              else
                              {
LABEL_110:
                                if( !v9 )
                                {
                                  CurrentServerSiloGlobals = PsGetCurrentServerSiloGlobals((_KSPIN_LOCK *)v29);
                                  EtwpUpdateDisallowList(CurrentServerSiloGlobals->EtwSiloState, v30, v42, v43);
                                }
                              }
                            }
                          }
                        }
                        v31 = PsGetCurrentServerSiloGlobals((_KSPIN_LOCK *)v29);
                        LODWORD(ValueDataa) = KeyLength[0];
                        EtwpEnableKeyProviders(
                          v31->EtwSiloState,
                          v30,
                          LoggerRegistryKeyName,
                          KeyInformation,
                          (UINT64)ValueDataa);
                      }
                    }
                  }
                }
                goto LABEL_10;
              }
              if( RtlCreateUnicodeString((INT64)(v7 + 16), (INT8 *)L"%SystemRoot%") )
              {
                v9 = 0;
                v23 = v7 + 8;
                goto LABEL_41;
              }
              v9 = -1073741801;
            }
          }
LABEL_10:
          v6 = *(void **)&KeyLength[1];
          goto LABEL_11;
        }
LABEL_78:
        v9 = 0;
        ExceptionFrame = 0i64;
        goto LABEL_79;
      }
    }
    v9 = -1073741801;
  }
LABEL_11:
  v16 = (const WCHAR *)KeyHandle;
  if( KeyHandle )
  {
    if( v9 < 0 )
    {
      v46 = RtlNtStatusToDosError((unsigned int)v9);
      v16 = (const WCHAR *)KeyHandle;
      v62 = v46;
    }
    LODWORD(ValueLengtha) = 4;
    if( ExceptionFrame )
      v16 = (const WCHAR *)ExceptionFrame;
    RtlWriteRegistryValue(0x40000000ui64, v16, L"Status", 4ui64, &v62, ValueLengtha);
    ZwClose((_HANDLE)KeyHandle);
  }
  if( ExceptionFrame )
    ZwClose((_HANDLE)ExceptionFrame);
  if( v7 )
  {
    RtlFreeAnsiString((_UNICODE_STRING *)v7 + 8);
    ExFreePoolWithTag(v7, 0);
  }
  if( v6 )
    ExFreePoolWithTag(v6, 0);
  RtlFreeAnsiString(&UnicodeString);
  RtlFreeAnsiString(&FilterString);
  RtlFreeAnsiString(&v71);
  return v9;
}

Referenced by:

EtwpEnumerateAutologgerPath
EtwpInitializeAutoLoggers
PerfDiagpStartPerfDiagLogger