B_TREE<_SM_PAGE_KEY,SMKM_STORE_MGR::SMKM_FRONTEND_ENTRY,4096,B_TREE_DUMMY_NODE_POOL,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeSearchKey
__int64 __fastcall B_TREE<_SM_PAGE_KEY,SMKM_STORE_MGR::SMKM_FRONTEND_ENTRY,4096,B_TREE_DUMMY_NODE_POOL,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeSearchKey(
__int64 a1,
__int64 a2,
__int64 a3){
unsigned int v3;
unsigned int v5;
__int64 *v6;
int v7;
__int64 v8;
UINT64 *v9;
_QWORD *v10;
__int64 v11;
unsigned int Key;
_DWORD *v13;
__int64 *v15;
v3 = 0;
v5 = a2;
v6 = (__int64 *)a1;
if( *(_DWORD *)(a3 + 24) == -1 )
{
v10 = (_QWORD *)(a3 + 8);
v7 = 0;
*(_QWORD *)(a3 + 8) = 0i64;
}
else
{
*(_DWORD *)(a3 + 24) = 0;
v7 = 1;
v8 = *(_QWORD *)a1;
a1 = 0i64;
if( v8 )
a1 = *(unsigned __int8 *)(v8 + 2);
v9 = (UINT64 *)(a3 + 28);
if( *(_DWORD *)v9 < (unsigned int)a1 && !(unsigned int)SmArrayGrow(a1, a2, v9, (PVOID *)a3) )
return(unsigned int)-1073741670;
v10 = *(_QWORD **)a3;
}
v11 = *v6;
if( !v11 )
{
if( !v7 )
{
*v10 = 0i64;
v10[1] = 0i64;
}
return(unsigned int)-1073741275;
}
while( 1 )
{
Key = B_TREE<_SM_PAGE_KEY,SMKM_STORE_MGR::SMKM_FRONTEND_ENTRY,4096,B_TREE_DUMMY_NODE_POOL,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeNodeFindKey(
a1,
(_DWORD *)v11,
v5);
if( *(_BYTE *)(v11 + 3) )
break;
if( v7 )
{
*v10 = v11;
a1 = v11 + 16 * (Key + 1i64);
v10[1] = a1;
v10 += 2;
}
if( Key )
{
a1 = 16i64 * (Key - 1);
v15 = (__int64 *)(a1 + v11 + 24);
}
else
{
v15 = (__int64 *)(v11 + 8);
}
v11 = *v15;
}
*v10 = v11;
v13 = (_DWORD *)(v11 + 8 * (Key + 2i64));
v10[1] = v13;
if( v7 )
*(_DWORD *)(a3 + 24) = (((__int64)v10 - *(_QWORD *)a3) >> 4) + 1;
if( Key >= (unsigned __int16)*(_DWORD *)v11 || *v13 != v5 )
return(unsigned int)-1073741275;
return v3;
}
Referenced by:
No references.