HvpDelistFreeCell

VOID __stdcall HvpDelistFreeCell(ULONG_PTR Hive, ULONG_PTR Cell, _HSTORAGE_TYPE Type, _HSTORAGE_TYPE a4){
  __int64 v6; 
  __int64 v7; 
  _DWORD *v8; 
  UINT64 v9; 
  unsigned int v10; 
  int v11; 
  int v12; 

  v11 = -1;
  v12 = 0;
  v6 = *(_QWORD *)&Hive;
  v7 = (*(__int64(__fastcall **)(ULONG_PTR, ULONG_PTR, int *, _HSTORAGE_TYPE))(*(_QWORD *)&Hive + 8i64))(
         Hive,
         Cell,
         &v11,
         a4);
  if( v7 )
  {
    v8 = (_DWORD *)(v7 - 4);
    if( v8 )
    {
      v9 = (unsigned int)((*v8 >> 3) - 1);
      if( (unsigned int)v9 >= 0x10 )
      {
        v10 = (unsigned int)v9 >> 4;
        if( v10 > 0xFF )
        {
          v9 = 23i64;
        }
        else
        {
          _BitScanReverse(&v10, v10);
          v9 = v10 + 16;
        }
      }
      HvpRemoveFreeCellHint((_HHIVE *)v6, Cell, v9, Type);
      (*(void(__fastcall **)(__int64, int *))(v6 + 16))(v6, &v11);
    }
  }
}

Referenced by:

HvpDoAllocateCell
HvpIsFreeNeighbor