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