EtwpSendBufferToDebugger

VOID __fastcall EtwpSendBufferToDebugger(_WMI_BUFFER_HEADER *Buffer){
  unsigned int Offset; 
  __int128 v3; 
  unsigned int v4; 
  __int128 v5; 
  unsigned int v6; 
  __int128 v7; 
  __int128 v8; 
  int v9; 
  int NextEventOffsetType; 
  INT64 v11; 
  unsigned int v12; 
  __int64 v13; 
  int v14; 
  __int128 v15[3]; 
  __int128 v16; 
  _LARGE_INTEGER StartPerfClock; 
  unsigned int v18; 
  v18 = 0;
  Offset = Buffer->Offset;
  if( Offset > KdTransportMaxPacketSize - 64 )
  {
    v3 = *(_OWORD *)&Buffer->BufferSize;
    v4 = 72;
    v5 = *(_OWORD *)&Buffer->TimeStamp.LowPart;
    v6 = KdTransportMaxPacketSize - 136;
    v11 = (INT64)v15;
    v15[0] = v3;
    v7 = *(_OWORD *)&Buffer->0;
    v12 = 72;
    v15[1] = v5;
    v8 = *(_OWORD *)&Buffer->Offset;
    v15[2] = v7;
    StartPerfClock = Buffer->ReferenceTime.StartPerfClock;
    v16 = v8;
    do
    {
      v13 = (__int64)Buffer + v4;
      NextEventOffsetType = EtwpGetNextEventOffsetType(&Buffer->BufferSize, v4, &v18);
      if( !NextEventOffsetType )
        break;
      while( v9 + v18 <= v6 )
      {
        v4 += v18;
        NextEventOffsetType = EtwpGetNextEventOffsetType(&Buffer->BufferSize, v4, &v18);
        if( !NextEventOffsetType )
          goto LABEL_10;
      }
      if( v18 > v6 )
        v4 += v18;
LABEL_10:
      if( v9 )
      {
        v14 = v9;
        LODWORD(v16) = v9 + 72;
        LODWORD(v15[0]) = v9 + 72;
        KdSendTraceData((INT64)&v11, 2ui64);
      }
    }
    while( NextEventOffsetType );
  }
  else
  {
    v12 = Offset;
    v11 = (INT64)Buffer;
    KdSendTraceData((INT64)&v11, 1ui64);
  }
}

Referenced by:

EtwpSendDbgId