B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeMergeNodes
__int64 __fastcall B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeMergeNodes(
__int64 a1,
__int64 a2,
unsigned __int64 a3){
unsigned __int64 v4;
unsigned __int64 *v6;
_DWORD *v7;
unsigned __int64 v8;
__int64 v9;
unsigned __int64 v10;
_DWORD *v11;
bool v12;
__int64 v13;
UINT8 *v14;
UINT64 v15;
void **v16;
_DWORD **v17;
__int64 result;
__int64 v19;
v4 = a3;
v6 = (unsigned __int64 *)(*(_QWORD *)a2 + 16i64 * (unsigned int)(*(_DWORD *)(a2 + 24) - 1));
v7 = (_DWORD *)*(v6 - 1);
if( (a3 & 1) != 0 )
v4 = *v6;
v8 = a3 & 0xFFFFFFFFFFFFFFFEui64;
if( (a3 & 1) == 0 )
v8 = *v6;
v9 = (unsigned __int16)*(_DWORD *)v8;
v10 = a3 & 0xFFFFFFFFFFFFFFFEui64;
if( (a3 & 1) == 0 )
v10 = a3;
if( v8 == v10 )
{
v7 -= 4;
*(v6 - 1) = (unsigned __int64)v7;
}
if( *(_BYTE *)(v8 + 3) )
{
v11 = *(_DWORD **)((a1 + 16) & -(__int64)(a1 != 0));
v12 = *v11 == -1;
if( *v11 == -1 )
v13 = *(_QWORD *)(v4 + 8);
else
v13 = 3358i64;
if( v12 )
*(_QWORD *)(v8 + 8) = v13;
v14 = (UINT8 *)(v8 + 16 + 8 * v9);
v15 = 8i64 * (unsigned __int16)*(_DWORD *)v4;
}
else
{
v19 = 2 * v9;
LODWORD(v9) = v9 + 1;
*(_DWORD *)(v8 + 8 * v19 + 16) = *v7;
*(_QWORD *)(v8 + 8 * v19 + 24) = *(_QWORD *)(v4 + 8);
v15 = 16i64 * (unsigned __int16)*(_DWORD *)v4;
v14 = (UINT8 *)(v8 + 16 * ((unsigned int)v9 + 1i64));
}
memmove(v14, (UINT8 *)(v4 + 16), v15);
v12 = *(_BYTE *)(v8 + 3) == 0;
*(_WORD *)v8 = v9 + *(_WORD *)v4;
if( !v12 )
{
v16 = (void **)(v7 + 2);
v17 = (_DWORD **)((a1 + 16) & -(__int64)(a1 != 0));
if( **v17 != -1 )
{
NP_CONTEXT::NpLeafDerefInternal((struct NP_CONTEXT::NP_CTX *)((a1 + 16) & -(__int64)(a1 != 0)), v16);
if( **v17 != -1 )
NP_CONTEXT::NpLeafRemoveInternal((struct NP_CONTEXT::NP_CTX *)((a1 + 16) & -(__int64)(a1 != 0)), v16);
}
}
B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeDeleteNode(
a1,
(unsigned __int8 *)v4);
--*(_DWORD *)(a2 + 24);
result = B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeDeleteEx(
a1,
a2);
++*(_DWORD *)(a2 + 24);
return result;
}
Referenced by:
No references.