EtwpDiskProvTraceDisk

void __fastcall EtwpDiskProvTraceDisk(unsigned __int16 a1, __int64 a2, __int64 a3, __int64 a4){
  ULONGLONG v4; 
  int v8; 
  const _EVENT_DESCRIPTOR *EventDescriptor; 
  VOID *Traits; 
  UINT8 v11; 
  _ETW_GUID_ENTRY *v12; 
  _ETW_GUID_ENTRY *GroupEntry; 
  UINT8 v14; 
  UINT8 v15; 
  _ETW_GUID_ENTRY *v16; 
  _ETW_GUID_ENTRY *v17; 
  UINT8 v18; 
  UINT64 UserDataCount; 
  UINT64 EventKey; 
  UINT64 LoggerMask[2]; 
  __int128 v22; 
  v4 = EtwpDiskProvRegHandle;
  EventKey = 0i64;
  *(_OWORD *)LoggerMask = 0i64;
  v22 = 0i64;
  if( EtwpDiskProvRegHandle )
  {
    v8 = a1 - 266;
    if( v8 )
    {
      if( v8 == 4 )
        EventDescriptor = (const _EVENT_DESCRIPTOR *)KDskEvt_Flush;
      else
        EventDescriptor = &KDskEvt_Write;
    }
    else
    {
      EventDescriptor = (const _EVENT_DESCRIPTOR *)KDskEvt_Read;
    }
    *(_DWORD *)(a2 + 8) -= 4;
    Traits = (VOID *)((*(_QWORD *)(v4 + 104) + 28i64) & -(__int64)(*(_QWORD *)(v4 + 104) != 0i64));
    if( *(_BYTE *)(v4 + 100)
      && EtwpLevelKeywordEnabled(*(_QWORD *)(v4 + 32) + 96i64, EventDescriptor->Level, EventDescriptor->Keyword) )
    {
      LODWORD(UserDataCount) = 1;
      EtwpEventWriteFull(
        v12,
        v11,
        0i64,
        0i64,
        EventDescriptor,
        0,
        0,
        (const _GUID *)a4,
        0i64,
        UserDataCount,
        (_EVENT_DATA_DESCRIPTOR *)a2,
        (_ETHREAD *)a3,
        LoggerMask,
        0i64,
        *(_WORD *)(v4 + 98),
        Traits,
        &EventKey);
    }
    if( *(_BYTE *)(v4 + 101)
      && EtwpLevelKeywordEnabled(*(_QWORD *)(v4 + 40) + 96i64, EventDescriptor->Level, EventDescriptor->Keyword) )
    {
      LODWORD(UserDataCount) = 1;
      EtwpEventWriteFull(
        *(_ETW_GUID_ENTRY **)(v4 + 32),
        v14,
        0i64,
        0i64,
        EventDescriptor,
        0,
        0,
        (const _GUID *)a4,
        0i64,
        UserDataCount,
        (_EVENT_DATA_DESCRIPTOR *)a2,
        (_ETHREAD *)a3,
        LoggerMask,
        GroupEntry,
        *(_WORD *)(v4 + 98),
        Traits,
        &EventKey);
    }
    if( *(_QWORD *)(*(_QWORD *)(v4 + 32) + 400i64) )
    {
      *(_OWORD *)LoggerMask = 0i64;
      v22 = 0i64;
      if( *(_BYTE *)(v4 + 102)
        && EtwpLevelKeywordEnabled(
             *(_QWORD *)(*(_QWORD *)(v4 + 32) + 400i64) + 96i64,
             EventDescriptor->Level,
             EventDescriptor->Keyword) )
      {
        LODWORD(UserDataCount) = 1;
        EtwpEventWriteFull(
          v16,
          v15,
          0i64,
          0i64,
          EventDescriptor,
          0,
          0,
          (const _GUID *)a4,
          0i64,
          UserDataCount,
          (_EVENT_DATA_DESCRIPTOR *)a2,
          (_ETHREAD *)a3,
          LoggerMask,
          0i64,
          *(_WORD *)(v4 + 98),
          Traits,
          &EventKey);
      }
      if( *(_BYTE *)(v4 + 103) )
      {
        if( EtwpLevelKeywordEnabled(
               *(_QWORD *)(*(_QWORD *)(v4 + 40) + 400i64) + 96i64,
               EventDescriptor->Level,
               EventDescriptor->Keyword) )
        {
          LODWORD(UserDataCount) = 1;
          EtwpEventWriteFull(
            *(_ETW_GUID_ENTRY **)(*(_QWORD *)(v4 + 32) + 400i64),
            v18,
            0i64,
            0i64,
            EventDescriptor,
            0,
            0,
            (const _GUID *)a4,
            0i64,
            UserDataCount,
            (_EVENT_DATA_DESCRIPTOR *)a2,
            (_ETHREAD *)a3,
            LoggerMask,
            v17,
            *(_WORD *)(v4 + 98),
            Traits,
            &EventKey);
        }
      }
    }
  }
}

Referenced by:

EtwpTraceIo