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