EtwWriteString
VOID __stdcall EtwWriteString(UINT8 ActivityId, GUID *a2){
unsigned __int64 v2;
const _GUID *v3;
const _GUID *v4;
INT64 v5;
UINT8 v6;
unsigned __int64 v7;
__int64 v8;
VOID *Traits;
__int64 v10;
char v11;
UINT64 v12;
UINT8 v13;
_ETW_GUID_ENTRY *v14;
UINT8 v15;
_ETW_GUID_ENTRY *GroupEntry;
__int64 v17;
char v18;
UINT8 v19;
_ETW_GUID_ENTRY *v20;
_ETW_GUID_ENTRY *v21;
UINT64 UserDataCount;
UINT64 EventKey;
_EVENT_DATA_DESCRIPTOR UserData;
_EVENT_DESCRIPTOR EventDescriptor;
UINT64 LoggerMask[2];
__int128 v27;
PCWSTR String;
EventKey = 0i64;
v4 = v3;
v5 = v2;
v6 = (unsigned __int8)a2;
*(_OWORD *)LoggerMask = 0i64;
v27 = 0i64;
v7 = ActivityId & (unsigned __int64)-(__int64)(ActivityId != 0i64);
if( v7 )
{
v8 = *(_QWORD *)((ActivityId & (unsigned __int64)-(__int64)(ActivityId != 0i64)) + 0x68);
*(_QWORD *)&EventDescriptor.Id = 0i64;
EventDescriptor.Level = (unsigned __int8)a2;
EventDescriptor.Keyword = v2;
Traits = (VOID *)((v8 + 28) & -(__int64)(v8 != 0));
UserData.Ptr = (unsigned __int64)String;
v10 = -1i64;
do
++v10;
while( String[v10] );
v11 = *(_BYTE *)((ActivityId & (unsigned __int64)-(__int64)(ActivityId != 0i64)) + 0x64);
UserData.Size = 2 * v10 + 2;
UserData.Reserved = 0;
if( v11
&& EtwpLevelKeywordEnabled(
*(_QWORD *)((ActivityId & (unsigned __int64)-(__int64)(ActivityId != 0i64)) + 0x20) + 96i64,
(UINT8)a2,
v2) )
{
LODWORD(UserDataCount) = 1;
EtwpEventWriteFull(
v14,
v13,
0i64,
v12,
&EventDescriptor,
4u,
0,
v4,
0i64,
UserDataCount,
&UserData,
0i64,
LoggerMask,
0i64,
*(_WORD *)(v7 + 98),
Traits,
&EventKey);
}
if( *(_BYTE *)(v7 + 101) && EtwpLevelKeywordEnabled(*(_QWORD *)(v7 + 40) + 96i64, v6, v5) )
{
LODWORD(UserDataCount) = 1;
EtwpEventWriteFull(
*(_ETW_GUID_ENTRY **)(v7 + 32),
v15,
0i64,
0i64,
&EventDescriptor,
4u,
0,
v4,
0i64,
UserDataCount,
&UserData,
0i64,
LoggerMask,
GroupEntry,
*(_WORD *)(v7 + 98),
Traits,
&EventKey);
}
v17 = *(_QWORD *)(v7 + 32);
if( *(_QWORD *)(v17 + 400) )
{
v18 = *(_BYTE *)(v7 + 102);
*(_OWORD *)LoggerMask = 0i64;
v27 = 0i64;
if( v18 && EtwpLevelKeywordEnabled(*(_QWORD *)(v17 + 400) + 96i64, v6, v5) )
{
LODWORD(UserDataCount) = 1;
EtwpEventWriteFull(
v20,
v19,
0i64,
0i64,
&EventDescriptor,
4u,
0,
v4,
0i64,
UserDataCount,
&UserData,
0i64,
LoggerMask,
0i64,
*(_WORD *)(v7 + 98),
Traits,
&EventKey);
}
if( *(_BYTE *)(v7 + 103) )
{
if( EtwpLevelKeywordEnabled(*(_QWORD *)(*(_QWORD *)(v7 + 40) + 400i64) + 96i64, v6, v5) )
{
LODWORD(UserDataCount) = 1;
EtwpEventWriteFull(
*(_ETW_GUID_ENTRY **)(*(_QWORD *)(v7 + 32) + 400i64),
*(_BYTE *)(v7 + 101),
0i64,
0i64,
&EventDescriptor,
4u,
0,
v4,
0i64,
UserDataCount,
&UserData,
0i64,
LoggerMask,
v21,
*(_WORD *)(v7 + 98),
Traits,
&EventKey);
}
}
}
}
}Referenced by:
No references.