B_TREE<_SM_PAGE_KEY,SMKM_STORE_MGR::SMKM_FRONTEND_ENTRY,4096,B_TREE_DUMMY_NODE_POOL,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeMergeNodes

__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>>::BTreeMergeNodes(
        __int64 a1,
        __int64 a2,
        unsigned __int64 a3){
  unsigned __int64 v3; 
  void **v4; 
  _DWORD *v7; 
  unsigned __int64 v8; 
  __int64 v9; 
  unsigned __int64 v10; 
  UINT64 v11; 
  UINT8 *v12; 
  __int64 result; 
  __int64 v14; 
  v3 = a3;
  v4 = (void **)(*(_QWORD *)a2 + 16i64 * (unsigned int)(*(_DWORD *)(a2 + 24) - 1));
  v7 = *(v4 - 1);
  if( (a3 & 1) != 0 )
    v3 = (unsigned __int64)*v4;
  v8 = a3 & 0xFFFFFFFFFFFFFFFEui64;
  if( (a3 & 1) == 0 )
    v8 = (unsigned __int64)*v4;
  v9 = (unsigned __int16)*(_DWORD *)v8;
  v10 = a3 & 0xFFFFFFFFFFFFFFFEui64;
  if( (a3 & 1) == 0 )
    v10 = a3;
  if( v8 == v10 )
  {
    v7 -= 4;
    *(v4 - 1) = v7;
  }
  if( *(_BYTE *)(v8 + 3) )
  {
    *(_QWORD *)(v8 + 8) = *(_QWORD *)(v3 + 8);
    v11 = 8i64 * (unsigned __int16)*(_DWORD *)v3;
    v12 = (UINT8 *)(v8 + 8 * (v9 + 2));
  }
  else
  {
    v14 = 2 * v9;
    LODWORD(v9) = v9 + 1;
    *(_DWORD *)(v8 + 8 * v14 + 16) = *v7;
    *(_QWORD *)(v8 + 8 * v14 + 24) = *(_QWORD *)(v3 + 8);
    v11 = 16i64 * (unsigned __int16)*(_DWORD *)v3;
    v12 = (UINT8 *)(v8 + 16 * ((unsigned int)v9 + 1i64));
  }
  memmove(v12, (UINT8 *)(v3 + 16), v11);
  *(_WORD *)v8 = v9 + *(_WORD *)v3;
  ExFreePoolWithTag((PVOID)v3, 0);
  --*(_DWORD *)(a2 + 24);
  result = B_TREE<_SM_PAGE_KEY,SMKM_STORE_MGR::SMKM_FRONTEND_ENTRY,4096,B_TREE_DUMMY_NODE_POOL,B_TREE_KEY_COMPARATOR<_SM_PAGE_KEY>>::BTreeDeleteEx(
             (_QWORD *)a1,
             a2);
  ++*(_DWORD *)(a2 + 24);
  return result;
}

Referenced by:

No references.