SmHpChunkAlloc
_WORD *__fastcall SmHpChunkAlloc(UINT64 *a1){
CHAR v1;
unsigned int v2;
_WORD *v4;
unsigned int v6;
UINT64 v7;
__int64 v8;
__int64 v9;
UINT64 v10;
__int64 v12;
v2 = *((_DWORD *)a1 + 71);
v4 = 0i64;
while( !_BitScanForward(&v6, v2) )
{
SmHpBufferAlloc(a1, v1);
if( !v12 )
return v4;
v2 = *((_DWORD *)a1 + 71);
}
v7 = a1[2 * v6 + 36];
v8 = *(unsigned int *)(v7 + 16);
_BitScanReverse((unsigned int *)&v9, v8);
v10 = a1[v9] + 16 * (v8 ^ (unsigned int)(1 << v9));
v4 = (_WORD *)(v7 + *(unsigned __int16 *)(v10 + 8));
*(_WORD *)(v10 + 8) = *v4;
SmHpBufferUpdateFullness(a1, v10, 0xFFFFFFFFi64);
++*((_DWORD *)a1 + 141);
return v4;
}Referenced by:
ST_STORE::StDmpDummyPageRecordAllocate
ST_STORE::StDmpSinglePageAdd