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