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.