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