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