long,ST_STORE::_ST_REGION_ENTRY,4096,NP_CONTEXT,ST_STORE::ST_REGION_ENTRY_COMPARATOR>::BTreeDeleteEx
__int64 __fastcall B_TREE::_ST_REGION_ENTRY,4096,NP_CONTEXT,ST_STORE::ST_REGION_ENTRY_COMPARATOR>::BTreeDeleteEx(
__int64 a1,
__int64 a2){
unsigned int v2;
unsigned __int64 *v4;
_DWORD *v6;
__int64 v7;
char *v8;
const VOID *v9;
unsigned int v10;
__int64 v11;
__int64 v12;
char *v13;
unsigned __int64 v14;
_DWORD *v15;
_DWORD **v17;
unsigned __int64 v18;
unsigned int v19;
__int64 v20;
unsigned __int64 v21;
__int64 v22;
void **v23;
unsigned __int64 v24;
void **v25;
bool v26;
struct NP_CONTEXT::NP_CTX *v27;
unsigned __int64 v28;
__int64 v29;
unsigned __int64 v30;
unsigned __int64 v31;
__int64 v32;
__int64 v33;
__int128 v34;
v2 = 0;
v4 = (unsigned __int64 *)(*(_QWORD *)a2 + 16i64 * (unsigned int)(*(_DWORD *)(a2 + 24) - 1));
v34 = 0i64;
v6 = (_DWORD *)*v4;
v7 = (unsigned __int16)*(_DWORD *)*v4;
v8 = (char *)v4[1];
if( *(_BYTE *)(*v4 + 3) )
{
v9 = v8 + 4;
v10 = 510;
v11 = 4 * v7 + 12;
}
else
{
v9 = v8 + 16;
v11 = 16 * v7;
v10 = 127;
}
v12 = v11 - (_QWORD)v8;
v13 = (char *)v6 + v12;
if( (_DWORD *)((char *)v6 + v12) )
memmove(v8, v9, (_DWORD)v6 + v12);
--*(_WORD *)v6;
if( *((_BYTE *)v6 + 3) )
--*(_QWORD *)(a1 + 8);
if( *(_DWORD **)a1 == v6 )
{
if( !(unsigned __int16)*v6 && !*((_BYTE *)v6 + 3) )
{
memmove(v4, v4 + 2, 16 * (*(_DWORD *)(a2 + 28) - 1));
v17 = (_DWORD **)(a1 + 16);
--*(_DWORD *)(a2 + 24);
if( **(_DWORD **)(a1 + 16) == -1 || *((_BYTE *)v6 + 2) != 2 )
{
*(_QWORD *)a1 = *((_QWORD *)v6 + 1);
}
else
{
*(_QWORD *)a1 = NP_CONTEXT::NpLeafRefInternal((struct NP_CONTEXT::NP_CTX *)(a1 + 16), (void **)v6 + 1, 1);
if( **v17 != -1 )
{
NP_CONTEXT::NpLeafDerefInternal((struct NP_CONTEXT::NP_CTX *)(a1 + 16), (void **)v6 + 1);
if( **v17 != -1 )
{
NP_CONTEXT::NpLeafDerefInternal((struct NP_CONTEXT::NP_CTX *)(a1 + 16), (void **)v6 + 1);
if( **v17 != -1 )
NP_CONTEXT::NpLeafRemoveInternal((struct NP_CONTEXT::NP_CTX *)(a1 + 16), (void **)v6 + 1);
}
}
}
B_TREE<_SM_PAGE_KEY,ST_STORE::_ST_PAGE_ENTRY,4096,NP_CONTEXT,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeDeleteNode(
a1,
(unsigned __int8 *)v6);
}
}
else
{
if( (unsigned __int16)*v6 < v10 )
{
v18 = B_TREE::_ST_REGION_ENTRY,4096,NP_CONTEXT,ST_STORE::ST_REGION_ENTRY_COMPARATOR>::BTreeRedistribute(
a1,
a2);
if( !v18 )
return(unsigned int)-1073741818;
v19 = (unsigned __int16)*v6;
if( v19 < v10 )
{
B_TREE::_ST_REGION_ENTRY,4096,NP_CONTEXT,ST_STORE::ST_REGION_ENTRY_COMPARATOR>::BTreeMergeNodes(
a1,
a2,
v18);
v4 = (unsigned __int64 *)(*(_QWORD *)a2 + 16i64 * (unsigned int)(*(_DWORD *)(a2 + 24) - 1));
if( (v18 & 1) != 0 )
{
v31 = v18 & 0xFFFFFFFFFFFFFFFEui64;
*v4 = v31;
v32 = (unsigned __int16)*(_DWORD *)v31;
if( *(_BYTE *)(v31 + 3) )
v33 = 4 * v32 + 16;
else
v33 = 16 * (v32 + 1);
v4[1] = v31 + v33 - (_QWORD)v13;
}
}
else
{
if( (v18 & 1) != 0 )
{
v28 = v4[1];
v29 = v19 - v10 + 1;
if( *((_BYTE *)v6 + 3) )
v30 = v28 + 4 * v29;
else
v30 = v28 + 16 * v29;
v4[1] = v30;
}
if( *((_BYTE *)v6 + 3) )
{
v20 = *(v4 - 1);
v21 = v20 + 16;
if( (v18 & 1) != 0 )
v21 = v20 - 16;
v22 = *(v4 - 2);
v23 = (void **)(v21 - 8);
v24 = v22 + 16;
v25 = (void **)(v22 + 8);
v26 = v21 <= v24;
v27 = (struct NP_CONTEXT::NP_CTX *)(a1 + 16);
if( v26 )
v23 = v25;
if( **(_DWORD **)v27 != -1 )
NP_CONTEXT::NpLeafDerefInternal(v27, v23);
}
}
}
v14 = *v4;
v15 = (_DWORD *)v4[1];
if( v15 == (_DWORD *)(v14 + 16)
&& *(_BYTE *)(v14 + 3)
&& (unsigned int)B_TREE::_ST_REGION_ENTRY,4096,NP_CONTEXT,ST_STORE::ST_REGION_ENTRY_COMPARATOR>::BTreeFindSeperatorIndexEntry(
a2,
0,
(__int64)&v34) )
{
**((_DWORD **)&v34 + 1) = *v15;
}
}
return v2;
}
Referenced by:
No references.