EtwpUpdateGuidEnableInfo
__int64 __fastcall EtwpUpdateGuidEnableInfo(
ULONG_PTR BugCheckParameter2,
__int64 a2,
__int64 a3,
__int64 a4,
__int64 a5){
int v5;
unsigned int v9;
__int64 v10;
unsigned int v11;
unsigned __int8 v12;
ULONG_PTR v13;
__int64 v14;
__int64 v15;
__int64 v16;
int v17;
unsigned __int8 v19;
unsigned __int8 v20;
ULONG_PTR v21;
__int64 v22;
__int64 v23;
__int64 v24;
int v25;
unsigned __int8 v26;
__int128 v27;
__int128 v28;
__int128 v29;
__int128 v30;
v5 = *(_DWORD *)(a2 + 72);
if( v5 == 1 )
{
*(_BYTE *)(BugCheckParameter2 + 91) ^= (*(_BYTE *)(BugCheckParameter2 + 91) ^ *(_BYTE *)(a2 + 112)) & 1;
*(_BYTE *)(BugCheckParameter2 + 91) = *(_BYTE *)(BugCheckParameter2 + 91) & 1 | (2 * *(_BYTE *)(a2 + 107));
*(_WORD *)(BugCheckParameter2 + 88) = *(_WORD *)(a2 + 104);
*(_BYTE *)(BugCheckParameter2 + 90) = *(_BYTE *)(a2 + 106);
*(_QWORD *)(BugCheckParameter2 + 80) = a3;
}
else if( !v5 && *(_WORD *)(BugCheckParameter2 + 88) == *(_WORD *)(a2 + 104) )
{
*(_BYTE *)(BugCheckParameter2 + 91) &= ~1u;
}
v9 = 0;
v10 = 8i64;
do
{
if( *(_DWORD *)(32 * (v9 + 4i64) + BugCheckParameter2)
&& *(_WORD *)(32i64 * v9 + BugCheckParameter2 + 134) == *(_WORD *)(a2 + 78) )
{
*(_QWORD *)&v28 = 0i64;
v20 = 0;
v21 = BugCheckParameter2 + 132;
v22 = 32 * (v9 + 4i64);
v23 = 0i64;
v24 = -1i64;
HIDWORD(v28) = 0;
v25 = 0;
*((_QWORD *)&v30 + 1) = -1i64;
*(_OWORD *)(v22 + BugCheckParameter2) = *(_OWORD *)(a2 + 72);
*(_OWORD *)(v22 + BugCheckParameter2 + 16) = *(_OWORD *)(a2 + 88);
do
{
if( *(_DWORD *)(v21 - 4) )
{
v26 = v20;
LODWORD(v28) = 1;
if( v20 <= *(_BYTE *)v21 )
v26 = *(_BYTE *)v21;
v24 &= *(_QWORD *)(v21 + 20);
v23 |= *(_QWORD *)(v21 + 12);
v20 = v26;
v25 |= *(_DWORD *)(v21 + 4);
*((_QWORD *)&v30 + 1) = v24;
}
v21 += 32i64;
--v10;
}
while( v10 );
BYTE4(v28) = v20;
DWORD2(v28) = v25;
*(_BYTE *)a5 = 1 << v9;
*(_QWORD *)&v30 = v23;
*(_OWORD *)(BugCheckParameter2 + 96) = v28;
*(_OWORD *)(BugCheckParameter2 + 112) = v30;
EtwpUpdateFilterData(BugCheckParameter2, v9, a2, *(_DWORD *)(a2 + 72) == 0, a4);
if( !*(_DWORD *)(a2 + 72) )
EtwpUnreferenceGuidEntry((PVOID)BugCheckParameter2);
return 0i64;
}
++v9;
}
while( v9 < 8 );
if( *(_DWORD *)(a2 + 72) )
{
v11 = 0;
while( *(_DWORD *)(32 * (v11 + 4i64) + BugCheckParameter2) )
{
if( ++v11 >= 8 )
return 3221225626i64;
}
*(_QWORD *)&v27 = 0i64;
v12 = 0;
v13 = BugCheckParameter2 + 132;
v14 = 32 * (v11 + 4i64);
v15 = 0i64;
v16 = -1i64;
HIDWORD(v27) = 0;
v17 = 0;
*((_QWORD *)&v29 + 1) = -1i64;
*(_OWORD *)(v14 + BugCheckParameter2) = *(_OWORD *)(a2 + 72);
*(_OWORD *)(v14 + BugCheckParameter2 + 16) = *(_OWORD *)(a2 + 88);
do
{
if( *(_DWORD *)(v13 - 4) )
{
v19 = v12;
LODWORD(v27) = 1;
if( v12 <= *(_BYTE *)v13 )
v19 = *(_BYTE *)v13;
v16 &= *(_QWORD *)(v13 + 20);
v15 |= *(_QWORD *)(v13 + 12);
v12 = v19;
v17 |= *(_DWORD *)(v13 + 4);
*((_QWORD *)&v29 + 1) = v16;
}
v13 += 32i64;
--v10;
}
while( v10 );
BYTE4(v27) = v12;
DWORD2(v27) = v17;
*(_BYTE *)a5 = 1 << v11;
*(_QWORD *)&v29 = v15;
*(_OWORD *)(BugCheckParameter2 + 96) = v27;
*(_OWORD *)(BugCheckParameter2 + 112) = v29;
EtwpUpdateFilterData(BugCheckParameter2, v11, a2, *(_DWORD *)(a2 + 72) == 0, a4);
EtwpReferenceGuidEntry((_ETW_GUID_ENTRY *)BugCheckParameter2);
return 0i64;
}
return 3221226021i64;
}Referenced by:
EtwpEnableGuid