RtlpHpLfhSubsegmentSizeBlock
NTSTATUS __stdcall RtlpHpLfhSubsegmentSizeBlock(INT64 a1, INT64 a2, INT64 a3, INT64 *a4){
unsigned int v6;
int v7;
__int64 v8;
unsigned int v9;
unsigned int v10;
char v11;
unsigned __int64 v12;
int v13;
v6 = DWORD2(RtlpHpHeapGlobals) ^ *(_DWORD *)(a2 + 40) ^ ((unsigned int)a2 >> 12);
v7 = (unsigned __int16)v6;
v8 = *(_QWORD *)(a1
+ 8i64
* *((unsigned __int8 *)RtlpLfhBucketIndexMap
+ ((unsigned __int64)((unsigned int)(unsigned __int16)v6 + 15) >> 4))
+ 128);
v9 = a3 - HIWORD(v6) - a2;
v10 = *(_DWORD *)(v8 + 72);
v11 = *(_BYTE *)(v8 + 76);
if( v10 )
{
v12 = (v9 * (unsigned __int64)v10) >> v11;
v13 = v9 - v12 * v7;
}
else
{
v12 = v9 >> v11;
v13 = ((1 << v11) - 1) & v9;
}
if( v13
|| ((*(_QWORD *)(a2 + 8 * ((unsigned __int64)(unsigned int)(2 * v12) >> 6) + 48) >> ((2 * v12) & 0x3F)) & 1) == 0 )
{
return -1;
}
else
{
return RtlpHpLfhSubsegmentSizeBlockInternal(a2, a3, v12, a4);
}
}Referenced by:
RtlpHpSegSizeInternal