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