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

__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>>::BTreeRedistribute(
        _DWORD *a1,
        __int64 a2){
  __int64 v2; 
  __int64 v3; 
  _DWORD *v4; 
  _DWORD *v5; 
  unsigned int v6; 
  __int64 *v7; 
  bool v8; 
  __int64 *v9; 
  __int64 *v10; 
  __int64 v11; 
  __int64 v12; 
  _DWORD *v13; 
  _DWORD *v14; 
  unsigned int v15; 
  unsigned int v16; 
  unsigned int v17; 
  unsigned int v18; 
  __int64 v19; 
  unsigned int v20; 
  _DWORD *v21; 
  char v22; 
  __int64 v23; 
  unsigned int v24; 
  unsigned __int64 v25; 
  unsigned int v26; 
  UINT8 *v27; 
  unsigned int v28; 
  UINT8 *v29; 
  UINT64 v30; 
  int v32; 
  unsigned int v33; 
  __int64 v34; 
  __int64 v35; 
  __int64 v36; 
  __int64 v37; 
  __int64 v38; 
  _DWORD *v39; 
  _DWORD *v40; 
  __int64 v41; 
  v38 = (__int64)a1;
  v2 = 1i64;
  v3 = *(_QWORD *)a2 + 16i64 * (unsigned int)(*(_DWORD *)(a2 + 24) - 1);
  v4 = *(_DWORD **)(v3 - 16);
  v5 = *(_DWORD **)(v3 - 8);
  v6 = (unsigned __int8)-(*(_BYTE *)(*(_QWORD *)v3 + 3i64) != 0) + 255;
  if( v5 == &v4[4 * (unsigned __int16)*v4 + 4] )
  {
    v38 = *(_QWORD *)v3;
    v5 -= 4;
    v7 = (__int64 *)(v4 + 2);
    v8 = v5 <= v4 + 4;
    v9 = (__int64 *)&v39;
    v10 = (__int64 *)(v5 - 2);
    if( v8 )
      v10 = v7;
  }
  else
  {
    v39 = *(_DWORD **)v3;
    v10 = (__int64 *)(v5 + 2);
    v9 = &v38;
    v2 = 0i64;
  }
  v11 = *v10;
  *v9 = *v10;
  v12 = v11 | v2;
  v13 = (_DWORD *)v38;
  v14 = v39;
  v15 = (unsigned __int16)*(_DWORD *)v38;
  v16 = (unsigned __int16)*v39;
  v17 = v16 + v15;
  if( v16 + v15 >= v6 && v17 < 2 * v6 - 1 )
  {
    v18 = v17 >> 1;
    if( v16 > v15 )
    {
      v19 = (__int64)v39;
      v20 = v16 - v18;
      v21 = v39;
      v14 = (_DWORD *)v38;
    }
    else
    {
      v19 = v38;
      v20 = v18 - v16;
      v21 = v39;
    }
    v22 = *(_BYTE *)(v19 + 3);
    v40 = v21;
    v23 = v15 < v16 ? v18 : 0;
    v24 = 0;
    v41 = v23;
    if( v16 <= v15 )
      v24 = v16;
    v37 = v24;
    v25 = (-(__int64)(v22 != 0) & 0xFFFFFFFFFFFFFFF8ui64) + 16;
    v26 = v22 != 0 ? 8 : 16;
    v27 = (UINT8 *)v14 + v25 * v24 + 16;
    LODWORD(v39) = v26;
    v28 = v20 * v26;
    v29 = (UINT8 *)(v19 + v25 * v23 + 16);
    LODWORD(v38) = v20 * v26;
    if( (_DWORD *)v19 == v21 )
    {
      memmove(&v27[v28], v27, v26 * (unsigned __int16)*v14);
      v22 = *(_BYTE *)(v19 + 3);
      v28 = v38;
      v26 = (unsigned int)v39;
      v21 = v40;
      v23 = v41;
    }
    else
    {
      LODWORD(v38) = v20 * v26;
    }
    if( v22 )
    {
      v30 = v28;
    }
    else
    {
      v32 = *v5;
      v33 = v20 - 1;
      if( (_DWORD *)v19 == v21 )
      {
        v34 = 2i64 * v33;
        v14[4 * v33 + 4] = v32;
        v35 = *((_QWORD *)v14 + 1);
      }
      else
      {
        v34 = 2 * v37;
        v27 += v26;
        v14[4 * v37 + 4] = v32;
        v35 = *(_QWORD *)(v19 + 8);
      }
      *(_QWORD *)&v14[2 * v34 + 6] = v35;
      if( (_DWORD *)v19 == v21 )
      {
        v36 = 2 * v23;
        v29 += v26;
        *v5 = *(_DWORD *)(v19 + 8 * v36 + 16);
        *((_QWORD *)v14 + 1) = *(_QWORD *)(v19 + 8 * v36 + 24);
      }
      else
      {
        v33 = v20 - 1;
        *v5 = *(_DWORD *)(v19 + 16i64 * (v20 - 1) + 16);
        *(_QWORD *)(v19 + 8) = *(_QWORD *)(v19 + 16i64 * (v20 - 1) + 24);
      }
      v30 = v26 * v33;
    }
    memmove(v27, v29, v30);
    *(_WORD *)v14 += v20;
    *(_WORD *)v19 -= v20;
    if( (_DWORD *)v19 == v13 )
      memmove(v29, &v29[(unsigned int)v38], (unsigned int)v39 * (unsigned __int16)*(_DWORD *)v19);
    if( *((_BYTE *)v13 + 3) )
      *v5 = v13[4];
  }
  return v12;
}

Referenced by:

No references.