CmpSortedValueEnumStackEntryStart
__int64 __fastcall CmpSortedValueEnumStackEntryStart(__int64 a1, __int64 a2, __int64 a3, _LOOKASIDE_LIST_EX *a4){
UINT64 v6;
unsigned int v7;
_PRIVILEGE_SET *v8;
_QWORD *v9;
__int64 v10;
_QWORD *v11;
signed __int64 v12;
UINT64 v13;
_QWORD *v14;
unsigned int *v15;
__int64 v16;
UINT64 v17;
INT64 *v19;
UINT64 v20;
UINT64 v21;
__int64 v23;
_PRIVILEGE_SET *TransientPoolWithTag;
v23 = 0xFFFFFFFFi64;
*(_QWORD *)a1 = a2;
v6 = *(unsigned int *)(a3 + 36);
WORD2(v23) = 0;
if( (_DWORD)v6 )
{
TransientPoolWithTag = (_PRIVILEGE_SET *)CmpAllocateTransientPoolWithTag(1ui64, 8 * v6);
v8 = TransientPoolWithTag;
if( TransientPoolWithTag )
{
v9 = CmpAllocateTransientPoolWithTag(1ui64, 8 * v6);
if( v9 )
{
v10 = (*(__int64(__fastcall **)(__int64, _QWORD, __int64 *))(a2 + 8))(a2, *(unsigned int *)(a3 + 40), &v23);
v11 = v9;
v12 = (char *)v8 - (char *)v9;
v13 = v6;
v14 = v9;
v15 = (unsigned int *)v10;
do
{
*v11 = 0i64;
*(_DWORD *)v11 = -1;
v16 = (*(__int64(__fastcall **)(__int64, _QWORD, _QWORD *))(a2 + 8))(a2, *v15, v14++);
*(_QWORD *)((char *)v11 + v12) = v16;
++v15;
++v11;
--v13;
}
while( v13 );
v17 = (UINT64)TransientPoolWithTag;
(*(void(__fastcall **)(__int64, __int64 *))(a2 + 16))(a2, &v23);
qsort(v17, v6, 8ui64, (INT64)CmpSortedValueEnumStackValueCompareFunction, v19, v20, v21);
*(_QWORD *)(a1 + 8) = v17;
v8 = 0i64;
v7 = 0;
*(_QWORD *)(a1 + 16) = v9;
*(_DWORD *)(a1 + 24) = v6;
}
else
{
v7 = -1073741670;
}
if( v8 )
CmSiFreeMemory(v8);
}
else
{
return(unsigned int)-1073741670;
}
}
else
{
return 0;
}
return v7;
}Referenced by:
CmpSortedValueEnumStackStartFromKeyNodeStack