B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeWalkPostOrderInternal
__int64 __fastcall B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeWalkPostOrderInternal(
__int64 a1,
const void *a2,
_QWORD **a3,
__int64 (__fastcall *a4)(_QWORD *, __int64, __int64),
__int64 a5,
__int64 a6){
_QWORD *v6;
UINT8 *v10;
_BYTE *v11;
int v12;
char *v13;
unsigned __int64 v14;
char *v15;
__int64 v16;
const void **v17;
const void **v18;
v6 = *a3;
if( *a3 )
{
v10 = (UINT8 *)*a3;
*a3 = (_QWORD *)*v6;
v11 = v6;
memmove(v10, (UINT8 *)a2, 0x1000ui64);
}
else
{
v11 = a2;
}
if( v11[3] )
{
v12 = a4(v11, a5, a6);
goto LABEL_22;
}
v13 = v11 + 16;
v14 = (unsigned __int64)&v11[16 * (unsigned __int16)*(_DWORD *)v11 + 16];
v15 = v11 + 16;
if( **(_DWORD **)((a1 + 16) & -(__int64)(a1 != 0)) != -1 && v11[2] == 2 )
{
for( ; (unsigned __int64)v15 <= v14; v15 += 16 )
{
v16 = (__int64)(v15 - 8);
if( v15 <= v13 )
v16 = (__int64)(v11 + 8);
v12 = a4(0i64, a5, v16);
if( v12 < 0 )
goto LABEL_22;
}
LABEL_20:
v12 = a4(v11, a5, a6);
if( v12 >= 0 )
v12 = 0;
goto LABEL_22;
}
if( (unsigned __int64)v15 > v14 )
goto LABEL_20;
v17 = (const void **)(v11 + 8);
while( 1 )
{
v18 = (const void **)(v15 - 8);
if( v15 <= v13 )
v18 = v17;
v12 = B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeWalkPostOrderInternal(
a1,
*v18,
a3,
a4,
a5,
(__int64)v18);
if( v12 < 0 )
break;
v15 += 16;
v17 = (const void **)(v11 + 8);
if( (unsigned __int64)v15 > v14 )
goto LABEL_20;
}
LABEL_22:
if( v6 )
{
*v6 = *a3;
*a3 = v6;
}
return(unsigned int)v12;
}
Referenced by:
No references.