B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeFindLeafSiblingEx
struct B_TREE_NODE_HDR *__fastcall B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeFindLeafSiblingEx(
__int64 a1,
__int64 a2){
struct B_TREE_NODE_HDR *v4;
__int64 v5;
void **v6;
__int64 *v7;
unsigned __int64 v8;
__int64 v9;
void **v10;
unsigned __int64 v11;
void **v12;
struct NP_CONTEXT::NP_CTX *v13;
struct B_TREE_NODE_HDR **v14;
__int64 v16[3];
v4 = 0i64;
*(_OWORD *)v16 = 0i64;
if( (unsigned int)B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeFindSeperatorIndexEntry(
a2,
1,
v16) )
{
v6 = (void **)B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeDescendToSibling(
v16,
v5,
0i64);
if( **(_DWORD **)((a1 + 16) & -(__int64)(a1 != 0)) == -1 )
v4 = (struct B_TREE_NODE_HDR *)*v6;
else
v4 = NP_CONTEXT::NpLeafRefInternal(
(struct NP_CONTEXT::NP_CTX *)((a1 + 16) & -(__int64)(a1 != 0)),
v6,
2 * (*(_BYTE *)(a2 + 32) & 1u));
if( v4 )
{
v7 = (__int64 *)(*(_QWORD *)a2 + 16i64 * (unsigned int)(*(_DWORD *)(a2 + 24) - 2));
v8 = v7[1];
v9 = *v7;
v10 = (void **)(v8 - 8);
v11 = v9 + 16;
v12 = (void **)(v9 + 8);
if( v8 <= v11 )
v10 = v12;
v13 = (struct NP_CONTEXT::NP_CTX *)((a1 + 16) & -(__int64)(a1 != 0));
if( **(_DWORD **)v13 != -1 )
NP_CONTEXT::NpLeafDerefInternal(v13, v10);
B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeDescendToSibling(
v16,
(__int64)v10,
a2);
v14 = (struct B_TREE_NODE_HDR **)(*(_QWORD *)a2 + 16i64 * (unsigned int)(*(_DWORD *)(a2 + 24) - 1));
*v14 = v4;
v14[1] = (struct B_TREE_NODE_HDR *)((char *)v4 + 16);
}
else
{
return(struct B_TREE_NODE_HDR *)-1i64;
}
}
return v4;
}
Referenced by:
No references.