SmHpChunkAlloc
VOID *__stdcall SmHpChunkAlloc(_SMHP_CHUNK_HEAP *Heap){
unsigned int v1;
_WORD *v3;
int v5;
__int64 v6;
__int64 v7;
__int64 v8;
__int64 v9;
v1 = Heap[71];
v3 = 0i64;
while( !_BitScanForward((unsigned int *)&v5, v1) )
{
if( !SmHpBufferAlloc(Heap) )
return v3;
v1 = Heap[71];
}
v6 = *(_QWORD *)&Heap[4 * v5 + 72];
v7 = *(unsigned int *)(v6 + 16);
_BitScanReverse((unsigned int *)&v8, v7);
v9 = *(_QWORD *)&Heap[2 * v8] + 16 * (v7 ^ (unsigned int)(1 << v8));
v3 = (_WORD *)(v6 + *(unsigned __int16 *)(v9 + 8));
*(_WORD *)(v9 + 8) = *v3;
SmHpBufferUpdateFullness(Heap, v9, 0xFFFFFFFFi64);
++Heap[141];
return v3;
}Referenced by:
ST_STORE::StDmpDummyPageRecordAllocate
ST_STORE::StDmpSinglePageAdd