RtlpHpLfhSubsegmentSizeBlockInternal
NTSTATUS __stdcall RtlpHpLfhSubsegmentSizeBlockInternal(INT64 a1, INT64 a2, INT64 a3, INT64 *a4){
int v4;
unsigned __int64 v5;
unsigned int v6;
__int16 v7;
int v8;
void *retaddr;
v4 = WORD4(RtlpHpHeapGlobals) ^ (unsigned __int16)(*(_WORD *)(a1 + 40) ^ ((unsigned int)a1 >> 12));
if( ((*(_QWORD *)(a1 + 8 * ((unsigned __int64)(unsigned int)(2 * a3) >> 6) + 48) >> ((2 * a3) & 0x3F)) & 2) != 0 )
{
v5 = WORD4(RtlpHpHeapGlobals) ^ (unsigned __int64)(unsigned __int16)(*(_WORD *)(a1 + 40) ^ ((unsigned int)a1 >> 12));
v6 = *(unsigned __int16 *)(v5 + a2 - 2);
v7 = *(_WORD *)(v5 + a2 - 2);
if( (v6 & 0x4000) != 0 )
{
_InterlockedOr((volatile signed __int32 *)&retaddr, 0);
v7 = *(_WORD *)(v5 + a2 - 2);
}
v8 = (v6 >> 14) & 1;
if( v7 >= 0 )
v4 -= v7 & 0x3FFF;
else
--v4;
}
else
{
v8 = 0;
}
if( a4 )
*(_DWORD *)a4 = v8;
return v4;
}Referenced by:
RtlpHpLfhSubsegmentSizeBlock