HvpTruncateBins
CHAR __fastcall HvpTruncateBins(UINT64 P2){
unsigned int *v2;
int i;
unsigned int v4;
int v5;
_BYTE *CellMap;
unsigned int v7;
__int64 FreeBin;
v2 = (unsigned int *)(P2 + 272);
for( i = 0; i < 2; ++i )
{
v4 = *v2;
if( *v2 )
{
v5 = i << 31;
do
{
CellMap = (_BYTE *)HvpGetCellMap(P2, v5 + v4 - 4096);
if( !CellMap )
KeBugCheckEx(0x51u, 1ui64, P2, v7, 0x138Fui64);
FreeBin = HvpMapEntryGetFreeBin(CellMap);
if( !FreeBin )
break;
v4 = *(_DWORD *)(FreeBin + 20);
}
while( v4 );
}
if( i || v4 + 0x10000 <= *(_DWORD *)(P2 + 1784) && ExIsResourceAcquiredExclusiveLite((PERESOURCE)&CmpRegistryLock) )
HvFreeHivePartial(P2, v4, (unsigned int)i);
v2 += 158;
}
return 0;
}Referenced by:
HvStoreModifiedData