HvpDelistFreeCell

VOID __fastcall HvpDelistFreeCell(_HHIVE *Hive, INT64 Cell, HSTORAGE_TYPE Type){
  unsigned int v4; 
  _CELL_DATA *v6; 
  wchar_t *Name; 
  INT64 v8; 
  unsigned int v9; 
  INT64 v10; 
  int v11; 
  int v12; 
  v11 = -1;
  v12 = 0;
  v4 = Cell;
  v6 = Hive->GetCellRoutine(Hive, Cell, &v11);
  if( v6 )
  {
    Name = v6[-1].u.KeyNode.Name;
    if( Name )
    {
      v8 = (unsigned int)((*(_DWORD *)Name >> 3) - 1);
      if( (unsigned int)v8 >= 0x10 )
      {
        v9 = (unsigned int)v8 >> 4;
        if( v9 > 0xFF )
        {
          v8 = 23i64;
        }
        else
        {
          _BitScanReverse(&v9, v9);
          v8 = v9 + 16;
        }
      }
      LODWORD(v10) = 0;
      HvpRemoveFreeCellHint((UINT64)Hive, v4, v8, (unsigned int)Type, v10);
      Hive->ReleaseCellRoutine(Hive, (_HV_GET_CELL_CONTEXT *)&v11);
    }
  }
}

Referenced by:

HvpDoAllocateCell
HvpIsFreeNeighbor