RtlpHpVsChunkSize
INT64 __fastcall RtlpHpVsChunkSize(INT64 a1, INT64 a2, INT64 a3, INT64 *a4){
INT64 v5;
int v6;
INT64 v7;
unsigned int v8;
__int16 v9;
int v10;
void *retaddr;
v5 = a2 - 16;
v6 = *(_DWORD *)(a1 + 176) & 1;
if( v6 && (a2 & 0xFFF) == 0 )
v5 -= 16i64;
if( ((HIDWORD(v5) ^ DWORD1(RtlpHpHeapGlobals) ^ HIDWORD(*(_QWORD *)v5)) & 0xFF0000) == 0 )
return -1i64;
v7 = 16 * (WORD1(RtlpHpHeapGlobals) ^ WORD1(v5) ^ *(unsigned __int16 *)(v5 + 2)) - 16;
if( v6 && ((v5 + 32) & 0xFFF) == 0 )
v7 -= 16i64;
if( (*(_DWORD *)(v5 + 8) & 0x100) != 0 )
{
v8 = *(unsigned __int16 *)((unsigned int)v7 + a2 - 2);
v9 = *(_WORD *)((unsigned int)v7 + a2 - 2);
if( (v8 & 0x4000) != 0 )
{
_InterlockedOr((volatile signed __int32 *)&retaddr, 0);
v9 = *(_WORD *)((unsigned int)v7 + a2 - 2);
}
v10 = (v8 >> 14) & 1;
if( v9 >= 0 )
v7 -= v9 & 0x1FFF;
else
--v7;
}
else
{
v10 = 0;
}
if( a4 )
*(_DWORD *)a4 = v10;
return v7;
}Referenced by:
RtlpHpSegSizeInternal
RtlpSizeHeapInternal