RtlpDestroyHeapSegment

NTSTATUS __fastcall RtlpDestroyHeapSegment(__int64 a1){
  VOID *v2; 
  _QWORD *v3; 
  VOID **v4; 
  VOID *v5; 
  VOID *Param2; 
  VOID *v7; 
  UINT64 RegionSize; 
  VOID *BaseAddress; 

  if( (*(_DWORD *)(a1 + 20) & 1) != 0 )
    return 0;
  v2 = (VOID *)(a1 + 24);
  v3 = *(_QWORD **)(a1 + 24);
  v4 = *(VOID ***)(a1 + 32);
  v5 = (VOID *)v3[1];
  Param2 = *v4;
  if( *v4 == v5 && Param2 == v2 )
  {
    *v4 = v3;
    v3[1] = v4;
  }
  else
  {
    RtlpLogHeapFailure(heap_failure_freelists_corruption, 0i64, v2, v5, Param2);
  }
  v7 = *(VOID **)(a1 + 48);
  RegionSize = 0i64;
  BaseAddress = v7;
  return ZwFreeVirtualMemory((VOID *)0xFFFFFFFFFFFFFFFFi64, &BaseAddress, &RegionSize, 0x8000ui64);
}

Referenced by:

RtlDestroyHeap