RtlpDestroyHeapSegment

NTSTATUS __fastcall RtlpDestroyHeapSegment(INT64 a1){
  UINT64 v2; 
  INT64 v3; 
  INT64 *v4; 
  INT64 v5; 
  INT64 v6; 
  void *v7; 
  ULONG_PTR RegionSize; 
  PVOID BaseAddress; 
  if( (*(_DWORD *)(a1 + 20) & 1) != 0 )
    return 0;
  v2 = a1 + 24;
  v3 = *(_QWORD *)(a1 + 24);
  v4 = *(INT64 **)(a1 + 32);
  v5 = *(_QWORD *)(v3 + 8);
  v6 = *v4;
  if( *v4 == v5 && v6 == v2 )
  {
    *v4 = v3;
    *(_QWORD *)(v3 + 8) = v4;
  }
  else
  {
    RtlpLogHeapFailure(13i64, 0i64, v2, v5, v6, 0i64);
  }
  v7 = *(void **)(a1 + 48);
  RegionSize = 0i64;
  BaseAddress = v7;
  return ZwFreeVirtualMemory((PVOID)0xFFFFFFFFFFFFFFFFi64, &BaseAddress, &RegionSize, 0x8000ui64);
}

Referenced by:

RtlDestroyHeap