CmpSubtreeEnumeratorStart
INT64 __fastcall CmpSubtreeEnumeratorStart(INT64 a1, INT16 a2){
_CHILD_LIST *v2;
__int64 v4;
__int64 v5;
__int64 v6;
INT64 v7;
__int16 v8;
__int64 v9;
INT64 result;
*(_WORD *)(a1 + 2) = a2;
CmpAllocateTransientPoolWithTag((_HHIVE *)1, 0x33000ui64, 0x31394D43ui64, v2);
*(_QWORD *)(a1 + 96) = v4;
if( !v4 )
return 3221225626i64;
v5 = 0i64;
v6 = 512i64;
do
{
v7 = v5 + *(_QWORD *)(a1 + 96);
memset(v7, 0i64);
*(_WORD *)(v7 + 26) = -1;
CmpKeyEnumStackInitialize();
v5 += 408i64;
--v6;
}
while( v6 );
v8 = 0;
while( 1 )
{
v9 = *(_QWORD *)(a1 + 96) + 408i64 * v8;
result = CmpStartKcbStack(v9 + 24, *(_WORD *)(a1 + 2));
if( (int)result < 0 )
break;
result = CmpKeyEnumStackStart(v9 + 56, *(_WORD *)(a1 + 2));
if( (int)result < 0 )
break;
if( ++v8 >= 512 )
return CmpStartKeyNodeStack(a1 + 16, *(_WORD *)(a1 + 2));
}
return result;
}Referenced by:
CmpSubtreeEnumeratorStartForKcbStack
CmpSubtreeEnumeratorStartForKeyNodeStack