HalpQueryProfileSourceList

__int64 __fastcall HalpQueryProfileSourceList(
        _QWORD *a1,
        __int64 a2,
        int a3,
        unsigned int a4,
        __int64 a5,
        unsigned int *a6){
  unsigned int v6; 
  _DWORD *v10; 
  __int64 *v11; 
  __int64 v12; 
  UINT64 v13; 
  unsigned int v14; 
  __int64 v15; 
  v6 = a4;
  v10 = 0i64;
  *a6 = 0;
  v11 = (__int64 *)*a1;
  if( (_QWORD *)*a1 != a1 )
  {
    do
    {
      if( !a3 )
        break;
      if( !(unsigned int)KeIsEmptyAffinityEx((_WORD *)v11 + 12) )
      {
        v12 = -1i64;
        do
          ++v12;
        while( *(_WORD *)(v11[24] + 2 * v12) );
        v13 = (unsigned int)(v12 + 1);
        v14 = (2 * v13 + 31) & 0xFFFFFFF8;
        if( v14 <= v6 )
        {
          *(_DWORD *)a5 = v14;
          *(_DWORD *)(a5 + 4) = *((_DWORD *)v11 - 2);
          v15 = *((unsigned __int8 *)v11 + 20);
          *(_DWORD *)(a5 + 8) = *(_DWORD *)(a2 + 8 * v15 + 4);
          *(_DWORD *)(a5 + 12) = *(_DWORD *)(a2 + 8 * v15);
          *(_QWORD *)(a5 + 16) = 0i64;
          wcscpy_s((PWCHAR)(a5 + 24), v13, (PWCHAR)v11[24]);
          v10 = (_DWORD *)a5;
          a5 += v14;
          v6 -= v14;
        }
        *a6 += v14;
        --a3;
      }
      v11 = (__int64 *)*v11;
    }
    while( v11 != a1 );
    v6 = a4;
    if( v10 )
      *v10 = 0;
  }
  return v6 < *a6 ? 0xC0000004 : 0;
}

Referenced by:

Amd64QueryInformation
DefaultQueryInformation
EmonQueryInformation