RtlpHpFreeVA
__int64 __fastcall RtlpHpFreeVA(UINT64 *a1, UINT64 *a2, INT64 a3, __int128 *a4){
__int128 v4;
unsigned int v5;
int v6;
UINT64 v10;
UINT64 v11;
unsigned __int64 v12;
UINT64 v13;
_RTL_RUN_ONCE *HeapManager;
UINT64 *v15;
UINT64 *v16;
__int128 v17;
v4 = *a4;
v5 = 0;
v6 = a3 & 0x1000000;
LODWORD(a3) = a3 & 0xFEFFFFFF;
v17 = *a4;
if( (_DWORD)a3 != 0x8000 || v6 )
{
if( BYTE1(v17) < 2u )
return(unsigned int)RtlpHpEnvFreeVA(a1, a2, a3);
}
else
{
v10 = *a1;
v11 = v10 + *a2;
v12 = (v10 + 0xFFFFF) & 0xFFFFFFFFFFF00000ui64;
v13 = v11 - v12;
*a1 = v12;
*a2 = v13;
if( v13 )
{
v17 = v4;
HeapManager = RtlpHpEnvGetHeapManager(&v17);
RtlpHpVaMgrCtxFree((__int64)&HeapManager[11], v16, v15);
}
}
return v5;
}Referenced by:
RtlpHpHeapAllocate
RtlpHpHeapDestroy
RtlpHpLargeAlloc
RtlpHpLargeAllocationDestroy
RtlpHpLargeFree
RtlpHpSegMgrCommit
RtlpHpSegMgrRelease
RtlpHpSegMgrReserve