EtwpEnableDisableSpecialGuids

INT64 __fastcall EtwpEnableDisableSpecialGuids(
        _ETW_SILODRIVERSTATE *SiloState,
        const _GUID *Guid,
        UINT16 LoggerId,
        UINT64 ControlCode,
        UINT64 Flags,
        _EVENT_FILTER_DESCRIPTOR *FilterDescriptor,
        UINT8 *Found){
  char v7; 
  int v8; 
  unsigned int v9; 
  _EVENT_FILTER_DESCRIPTOR *v10; 
  unsigned int v13; 
  UINT64 v14; 
  UINT8 v15; 
  char v16; 
  unsigned int v17; 
  INT64(__fastcall *v18)(INT64, __m128i *, UINT64, _QWORD *); 
  __int64 v19; 
  __int64 v20; 
  unsigned __int64 v21; 
  __int64 v23; 
  unsigned int v24; 
  _BYTE *v26; 
  v7 = 1;
  v8 = ControlCode;
  v9 = LoggerId;
  v10 = (_EVENT_FILTER_DESCRIPTOR *)(unsigned int)Flags;
  v13 = -1073741275;
  v14 = 2i64;
  *v26 = 1;
  if( v8 != 2 )
  {
    v15 = 0;
    if( v8 == 1 )
    {
      v16 = 1;
    }
    else
    {
      if( v8 )
        goto LABEL_12;
      v16 = 0;
    }
    v17 = 0;
    v18 = EtwpUmglProviders;
    do
    {
      v19 = *(_QWORD *)&Guid->Data1;
      v20 = **(_QWORD **)v18 - *(_QWORD *)&Guid->Data1;
      if( !v20 )
        v20 = *(_QWORD *)(*(_QWORD *)v18 + 8i64) - *(_QWORD *)Guid->Data4;
      if( !v20 )
      {
        LOBYTE(v14) = v16;
        return EtwpEnableDisableUMGL((UINT8)SiloState, v14, v9, (unsigned int)Flags);
      }
      ++v17;
      v18 = (INT64(__fastcall *)(INT64, __m128i *, UINT64, _QWORD *))((char *)v18 + 16);
    }
    while( v17 < 0xA );
    v21 = KernelRundownGuid - v19;
    if( KernelRundownGuid == v19 )
      v21 = 0xCDF584518E9C7793ui64 - *(_QWORD *)Guid->Data4;
    if( v21 )
      goto LABEL_12;
    if( v16 == 1 )
    {
      switch( (_DWORD)Flags )
      {
        case 1:
          v14 = SiloState->SystemLoggerSettings.EtwpSystemLogger[0].LoggerId;
          break;
        case 2:
          v14 = SiloState->SystemLoggerSettings.EtwpSystemLogger[0].LoggerId;
          return(unsigned int)EtwpCheckLoggerAccessAndDoRundown(SiloState, v14, v9, v15);
        case 4:
          break;
        default:
          if( (_DWORD)Flags != 8 && (_DWORD)Flags == 16 )
            return(unsigned int)EtwpLogFileNameRundown((UINT64)SiloState);
          return(unsigned int)EtwpCheckLoggerAccessAndDoRundown(SiloState, v14, v9, v15);
      }
      v15 = 1;
      return(unsigned int)EtwpCheckLoggerAccessAndDoRundown(SiloState, v14, v9, v15);
    }
    return 0;
  }
  v23 = *(_QWORD *)&SystemTraceControlGuid.Data1 - *(_QWORD *)&Guid->Data1;
  if( *(_QWORD *)&SystemTraceControlGuid.Data1 == *(_QWORD *)&Guid->Data1 )
    v23 = *(_QWORD *)SystemTraceControlGuid.Data4 - *(_QWORD *)Guid->Data4;
  v24 = 0;
  if( v23 || SiloState != (_ETW_SILODRIVERSTATE *)EtwpHostSiloState )
  {
LABEL_12:
    *v26 = 0;
    return v13;
  }
  if( (_DWORD)Flags == 1 )
    goto LABEL_23;
  if( (_DWORD)Flags == 2 )
  {
    v7 = 0;
LABEL_23:
    LOBYTE(v10) = v7;
    return(unsigned int)EtwpCheckGuidAccessAndDoRundown(SiloState, (const _GUID *)2, v9, v10, (UINT8)FilterDescriptor);
  }
  return v24;
}

Referenced by:

EtwpEnableGuid