SmHpChunkFree
VOID __stdcall SmHpChunkFree(_SMHP_CHUNK_HEAP *Heap, VOID *Chunk){
__int64 v3;
__int64 v4;
_WORD *v5;
int v6;
v3 = *(unsigned int *)(((unsigned __int64)Chunk & 0xFFFFFFFFFFFFF000ui64) + 0x10);
_BitScanReverse((unsigned int *)&v4, v3);
v5 = (_WORD *)(*(_QWORD *)&Heap[2 * v4] + 16 * (v3 ^ (unsigned int)(1 << v4)));
*(_WORD *)Chunk = v5[4];
v5[4] = (_WORD)Chunk - *v5;
SmHpBufferUpdateFullness(Heap, v5, 1i64);
v6 = (unsigned __int16)v5[5];
if( v6 == Heap[137] && Heap[140] - v6 >= (unsigned int)Heap[139] )
SmHpBufferCleanup((__int64)Heap, v5);
--Heap[141];
}Referenced by:
ST_STORE::StDmCleanup
ST_STORE::StDmCombinePageEntry
ST_STORE::StDmPageRemove
ST_STORE::StDmpSinglePageAdd