EtwpGetTraceGuidList
__int64 __fastcall EtwpGetTraceGuidList(__int64 a1, _OWORD *a2, _DWORD *a3){
int v3;
unsigned int v4;
unsigned int v5;
volatile INT64 *v8;
__int64 i;
volatile INT64 *NextGuidEntry;
unsigned int v11;
INT64(__fastcall *v12)(INT64, __m128i *, UINT64, _QWORD *);
v3 = 0;
v4 = *a3 >> 4;
v5 = 0;
v8 = 0i64;
for( i = a1; ; a1 = i )
{
NextGuidEntry = EtwpGetNextGuidEntry(a1, v8, 0i64);
if( !NextGuidEntry )
break;
if( *(_OWORD *)(NextGuidEntry + 5) != PrivateLoggerNotificationGuid )
{
if( ++v5 > 0xFFFFFFF )
goto LABEL_14;
if( v5 <= v4 )
*a2++ = *(_OWORD *)(NextGuidEntry + 5);
}
v8 = NextGuidEntry;
}
v11 = 0;
v12 = EtwpUmglProviders;
while( ++v5 <= 0xFFFFFFF )
{
if( v5 <= v4 )
*a2++ = *(_OWORD *)*(_QWORD *)v12;
++v11;
v12 = (INT64(__fastcall *)(INT64, __m128i *, UINT64, _QWORD *))((char *)v12 + 16);
if( v11 >= 0xA )
goto LABEL_15;
}
LABEL_14:
v3 = -2147483643;
LABEL_15:
*a3 = 16 * v5;
if( v3 >= 0 && v5 > v4 )
return(unsigned int)-1073741789;
return(unsigned int)v3;
}Referenced by:
NtTraceControl