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