; LLVM IR from Ubpa/USTC_CG :: Homeworks/6_MassSpring/documents/tetgen/src/TetGene (tetgen)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.tetgenmesh::triface" = type <{ ptr, i32, [4 x i8] }>
%"class.tetgenmesh::face" = type <{ ptr, i32, [4 x i8] }>
%"class.tetgenmesh::arraypool" = type { i32, i32, i32, i32, i32, ptr, i64, i64 }
%class.tetgenmesh = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.tetgenmesh::triface", %"class.tetgenmesh::face", ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i64, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, [8 x [3 x [8 x i32]]], [8 x i32] }
%class.tetgenbehavior = type <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, double, double, [1024 x i8], [1024 x i8], [1024 x i8], [1024 x i8], [1024 x i8], i32, [4 x i8] }>

@_ZN10tetgenmesh7fsymtblE = external dso_local global [12 x [12 x i32]], align 16
@_ZN10tetgenmesh10facepivot1E = external dso_local global [12 x i32], align 16
@_ZN10tetgenmesh10facepivot2E = external dso_local global [12 x [12 x i32]], align 16
@.str.388 = external hidden unnamed_addr constant [34 x i8], align 1

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z15terminatetetgenP10tetgenmeshi(ptr noundef, i32 noundef) #1

declare i32 @printf(ptr noundef, ...) #2

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh16shellfacedeallocEPNS_10memorypoolEPPPd(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef, ptr noundef) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh13makeshellfaceEPNS_10memorypoolEPNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef, ptr noundef) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh12setareaboundERNS_4faceEd(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), double noundef) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh12setshellmarkERNS_4faceEi(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), i32 noundef) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh13setfacetindexERNS_4faceEi(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), i32 noundef) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef, ptr noundef) #5 align 2

declare noundef double @_Z8orient3dPdS_S_S_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN10tetgenmesh13tri_edge_testEPdS0_S0_S0_S0_S0_iPiS1_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10tetgenmesh9shellmarkERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh9tsspivot1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12)) unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh13eprevesymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef, ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN10tetgenmesh10marktestedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN10tetgenmesh12randomnationEj(ptr noundef nonnull align 8 dereferenceable(1536), i32 noundef) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh10tsdissolveERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN10tetgenmesh10facemarkedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh8markfaceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh10unmarkfaceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh7setsorgERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh8setsdestERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh8setsapexERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh6sbond1ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh6ssbondERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh10ssdissolveERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN10tetgenmesh9areaboundERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10tetgenmesh13getfacetindexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh5sbondERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN10tetgenmesh11pmarktestedEPd(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh12tssdissolve1ERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN10tetgenmesh10fillcavityEPNS_9arraypoolES1_S1_S1_S1_S1_PNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7) #4 align 2 {
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca %"class.tetgenmesh::triface", align 8
  %19 = alloca %"class.tetgenmesh::triface", align 8
  %20 = alloca ptr, align 8
  %21 = alloca %"class.tetgenmesh::triface", align 8
  %22 = alloca %"class.tetgenmesh::triface", align 8
  %23 = alloca ptr, align 8
  %24 = alloca %"class.tetgenmesh::face", align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca i8, align 1
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca %"class.tetgenmesh::triface", align 8
  %33 = alloca %"class.tetgenmesh::triface", align 8
  %34 = alloca %"class.tetgenmesh::triface", align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca double, align 8
  %39 = alloca [2 x i32], align 4
  %40 = alloca [4 x i32], align 16
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca %"class.tetgenmesh::face", align 8
  %44 = alloca %"class.tetgenmesh::face", align 8
  %45 = alloca %"class.tetgenmesh::face", align 8
  %46 = alloca %"class.tetgenmesh::face", align 8
  %47 = alloca %"class.tetgenmesh::face", align 8
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !5
  store ptr %5, ptr %14, align 8, !tbaa !5
  store ptr %6, ptr %15, align 8, !tbaa !5
  store ptr %7, ptr %16, align 8, !tbaa !5
  %48 = load ptr, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #6
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %18)
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #6
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %19)
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #6
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %21)
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #6
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %22)
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #6
  store ptr null, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #6
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %24)
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %49

49:                                               ; preds = %117, %8
  %50 = load i32, ptr %31, align 4, !tbaa !9
  %51 = icmp slt i32 %50, 2
  br i1 %51, label %52, label %120

52:                                               ; preds = %49
  %53 = load i32, ptr %31, align 4, !tbaa !9
  %54 = icmp eq i32 %53, 0
  br i1 %54, label %55, label %57

55:                                               ; preds = %52
  %56 = load ptr, ptr %10, align 8, !tbaa !5
  br label %59

57:                                               ; preds = %52
  %58 = load ptr, ptr %11, align 8, !tbaa !5
  br label %59

59:                                               ; preds = %57, %55
  %60 = phi ptr [ %56, %55 ], [ %58, %57 ]
  store ptr %60, ptr %17, align 8, !tbaa !5
  %61 = load ptr, ptr %17, align 8, !tbaa !5
  %62 = icmp ne ptr %61, null
  br i1 %62, label %63, label %116

63:                                               ; preds = %59
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %64

64:                                               ; preds = %112, %63
  %65 = load i32, ptr %30, align 4, !tbaa !9
  %66 = sext i32 %65 to i64
  %67 = load ptr, ptr %17, align 8, !tbaa !5
  %68 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %67, i32 0, i32 6
  %69 = load i64, ptr %68, align 8, !tbaa !11
  %70 = icmp slt i64 %66, %69
  br i1 %70, label %71, label %115

71:                                               ; preds = %64
  %72 = load ptr, ptr %17, align 8, !tbaa !5
  %73 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %72, i32 0, i32 5
  %74 = load ptr, ptr %73, align 8, !tbaa !14
  %75 = load i32, ptr %30, align 4, !tbaa !9
  %76 = load ptr, ptr %17, align 8, !tbaa !5
  %77 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %76, i32 0, i32 2
  %78 = load i32, ptr %77, align 8, !tbaa !15
  %79 = ashr i32 %75, %78
  %80 = sext i32 %79 to i64
  %81 = getelementptr inbounds ptr, ptr %74, i64 %80
  %82 = load ptr, ptr %81, align 8, !tbaa !5
  %83 = load i32, ptr %30, align 4, !tbaa !9
  %84 = load ptr, ptr %17, align 8, !tbaa !5
  %85 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %84, i32 0, i32 3
  %86 = load i32, ptr %85, align 4, !tbaa !16
  %87 = and i32 %83, %86
  %88 = load ptr, ptr %17, align 8, !tbaa !5
  %89 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %88, i32 0, i32 0
  %90 = load i32, ptr %89, align 8, !tbaa !17
  %91 = mul nsw i32 %87, %90
  %92 = sext i32 %91 to i64
  %93 = getelementptr inbounds i8, ptr %82, i64 %92
  store ptr %93, ptr %23, align 8, !tbaa !5
  %94 = load ptr, ptr %23, align 8, !tbaa !5
  %95 = getelementptr inbounds %"class.tetgenmesh::face", ptr %94, i32 0, i32 0
  %96 = load ptr, ptr %95, align 8, !tbaa !18
  %97 = getelementptr inbounds ptr, ptr %96, i64 0
  %98 = load ptr, ptr %97, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %98, ptr noundef nonnull align 8 dereferenceable(12) %18)
  %99 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %18)
  store ptr %99, ptr %25, align 8, !tbaa !5
  %100 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %18)
  store ptr %100, ptr %26, align 8, !tbaa !5
  %101 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %18)
  store ptr %101, ptr %27, align 8, !tbaa !5
  %102 = load ptr, ptr %23, align 8, !tbaa !5
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %102, ptr noundef nonnull align 8 dereferenceable(12) %19)
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %19)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %18, ptr noundef nonnull align 8 dereferenceable(12) %19)
  call void @_ZN10tetgenmesh10tsdissolveERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %19)
  %103 = load ptr, ptr %25, align 8, !tbaa !5
  %104 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %19, i32 0, i32 0
  %105 = load ptr, ptr %104, align 8, !tbaa !20
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %103, ptr noundef %105)
  %106 = load ptr, ptr %26, align 8, !tbaa !5
  %107 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %19, i32 0, i32 0
  %108 = load ptr, ptr %107, align 8, !tbaa !20
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %106, ptr noundef %108)
  %109 = load ptr, ptr %27, align 8, !tbaa !5
  %110 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %19, i32 0, i32 0
  %111 = load ptr, ptr %110, align 8, !tbaa !20
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %109, ptr noundef %111)
  br label %112

112:                                              ; preds = %71
  %113 = load i32, ptr %30, align 4, !tbaa !9
  %114 = add nsw i32 %113, 1
  store i32 %114, ptr %30, align 4, !tbaa !9
  br label %64, !llvm.loop !22

115:                                              ; preds = %64
  br label %116

116:                                              ; preds = %115, %59
  br label %117

117:                                              ; preds = %116
  %118 = load i32, ptr %31, align 4, !tbaa !9
  %119 = add nsw i32 %118, 1
  store i32 %119, ptr %31, align 4, !tbaa !9
  br label %49, !llvm.loop !24

120:                                              ; preds = %49
  %121 = load ptr, ptr %16, align 8, !tbaa !5
  %122 = icmp ne ptr %121, null
  br i1 %122, label %123, label %969

123:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #6
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %32)
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #6
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %33)
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #6
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %34)
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  store i8 0, ptr %28, align 1, !tbaa !25
  %124 = load ptr, ptr %16, align 8, !tbaa !5
  %125 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %124)
  store ptr %125, ptr %36, align 8, !tbaa !5
  %126 = load ptr, ptr %16, align 8, !tbaa !5
  %127 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %126)
  store ptr %127, ptr %37, align 8, !tbaa !5
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %128

128:                                              ; preds = %344, %123
  %129 = load i32, ptr %30, align 4, !tbaa !9
  %130 = sext i32 %129 to i64
  %131 = load ptr, ptr %14, align 8, !tbaa !5
  %132 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %131, i32 0, i32 6
  %133 = load i64, ptr %132, align 8, !tbaa !11
  %134 = icmp slt i64 %130, %133
  br i1 %134, label %135, label %139

135:                                              ; preds = %128
  %136 = load i8, ptr %28, align 1, !tbaa !25, !range !27, !noundef !28
  %137 = trunc i8 %136 to i1
  %138 = xor i1 %137, true
  br label %139

139:                                              ; preds = %135, %128
  %140 = phi i1 [ false, %128 ], [ %138, %135 ]
  br i1 %140, label %141, label %347

141:                                              ; preds = %139
  %142 = load ptr, ptr %14, align 8, !tbaa !5
  %143 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %142, i32 0, i32 5
  %144 = load ptr, ptr %143, align 8, !tbaa !14
  %145 = load i32, ptr %30, align 4, !tbaa !9
  %146 = load ptr, ptr %14, align 8, !tbaa !5
  %147 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %146, i32 0, i32 2
  %148 = load i32, ptr %147, align 8, !tbaa !15
  %149 = ashr i32 %145, %148
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds ptr, ptr %144, i64 %150
  %152 = load ptr, ptr %151, align 8, !tbaa !5
  %153 = load i32, ptr %30, align 4, !tbaa !9
  %154 = load ptr, ptr %14, align 8, !tbaa !5
  %155 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %154, i32 0, i32 3
  %156 = load i32, ptr %155, align 4, !tbaa !16
  %157 = and i32 %153, %156
  %158 = load ptr, ptr %14, align 8, !tbaa !5
  %159 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %158, i32 0, i32 0
  %160 = load i32, ptr %159, align 8, !tbaa !17
  %161 = mul nsw i32 %157, %160
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds i8, ptr %152, i64 %162
  %164 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %21, ptr noundef nonnull align 8 dereferenceable(12) %163)
  %165 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %21, i32 0, i32 1
  store i32 0, ptr %165, align 8, !tbaa !29
  br label %166

166:                                              ; preds = %339, %141
  %167 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %21, i32 0, i32 1
  %168 = load i32, ptr %167, align 8, !tbaa !29
  %169 = icmp slt i32 %168, 4
  br i1 %169, label %170, label %174

170:                                              ; preds = %166
  %171 = load i8, ptr %28, align 1, !tbaa !25, !range !27, !noundef !28
  %172 = trunc i8 %171 to i1
  %173 = xor i1 %172, true
  br label %174

174:                                              ; preds = %170, %166
  %175 = phi i1 [ false, %166 ], [ %173, %170 ]
  br i1 %175, label %176, label %343

176:                                              ; preds = %174
  %177 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %21)
  store ptr %177, ptr %25, align 8, !tbaa !5
  %178 = load ptr, ptr %25, align 8, !tbaa !5
  %179 = call noundef zeroext i1 @_ZN10tetgenmesh11pmarktestedEPd(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %178)
  br i1 %179, label %180, label %338

180:                                              ; preds = %176
  %181 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %21)
  store ptr %181, ptr %26, align 8, !tbaa !5
  %182 = load ptr, ptr %26, align 8, !tbaa !5
  %183 = call noundef zeroext i1 @_ZN10tetgenmesh11pmarktestedEPd(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %182)
  br i1 %183, label %184, label %337

184:                                              ; preds = %180
  %185 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %21)
  store ptr %185, ptr %27, align 8, !tbaa !5
  %186 = load ptr, ptr %27, align 8, !tbaa !5
  %187 = call noundef zeroext i1 @_ZN10tetgenmesh11pmarktestedEPd(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %186)
  br i1 %187, label %188, label %336

188:                                              ; preds = %184
  %189 = load ptr, ptr %25, align 8, !tbaa !5
  %190 = load ptr, ptr %26, align 8, !tbaa !5
  %191 = load ptr, ptr %27, align 8, !tbaa !5
  %192 = load ptr, ptr %36, align 8, !tbaa !5
  %193 = load ptr, ptr %37, align 8, !tbaa !5
  %194 = getelementptr inbounds [2 x i32], ptr %39, i64 0, i64 0
  %195 = getelementptr inbounds [4 x i32], ptr %40, i64 0, i64 0
  %196 = call noundef i32 @_ZN10tetgenmesh13tri_edge_testEPdS0_S0_S0_S0_S0_iPiS1_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %189, ptr noundef %190, ptr noundef %191, ptr noundef %192, ptr noundef %193, ptr noundef null, i32 noundef 1, ptr noundef %194, ptr noundef %195)
  store i32 %196, ptr %41, align 4, !tbaa !9
  %197 = load i32, ptr %41, align 4, !tbaa !9
  %198 = icmp eq i32 %197, 2
  br i1 %198, label %199, label %335

199:                                              ; preds = %188
  %200 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %32, ptr noundef nonnull align 8 dereferenceable(12) %21)
  %201 = load ptr, ptr %25, align 8, !tbaa !5
  %202 = load ptr, ptr %26, align 8, !tbaa !5
  %203 = load ptr, ptr %27, align 8, !tbaa !5
  %204 = load ptr, ptr %36, align 8, !tbaa !5
  %205 = call noundef double @_Z8orient3dPdS_S_S_(ptr noundef %201, ptr noundef %202, ptr noundef %203, ptr noundef %204)
  store double %205, ptr %38, align 8, !tbaa !30
  %206 = load double, ptr %38, align 8, !tbaa !30
  %207 = fcmp olt double %206, 0.000000e+00
  br i1 %207, label %208, label %230

208:                                              ; preds = %199
  %209 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %32, i32 0, i32 1
  %210 = load i32, ptr %209, align 8, !tbaa !29
  store i32 %210, ptr %29, align 4, !tbaa !9
  %211 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %32, i32 0, i32 0
  %212 = load ptr, ptr %211, align 8, !tbaa !20
  %213 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %32, i32 0, i32 1
  %214 = load i32, ptr %213, align 8, !tbaa !29
  %215 = and i32 %214, 3
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds ptr, ptr %212, i64 %216
  %218 = load ptr, ptr %217, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %218, ptr noundef nonnull align 8 dereferenceable(12) %32)
  %219 = load i32, ptr %29, align 4, !tbaa !9
  %220 = sext i32 %219 to i64
  %221 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %220
  %222 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %32, i32 0, i32 1
  %223 = load i32, ptr %222, align 8, !tbaa !29
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds [12 x i32], ptr %221, i64 0, i64 %224
  %226 = load i32, ptr %225, align 4, !tbaa !9
  %227 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %32, i32 0, i32 1
  store i32 %226, ptr %227, align 8, !tbaa !29
  %228 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %32)
  store ptr %228, ptr %25, align 8, !tbaa !5
  %229 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %32)
  store ptr %229, ptr %26, align 8, !tbaa !5
  br label %235

230:                                              ; preds = %199
  %231 = load double, ptr %38, align 8, !tbaa !30
  %232 = fcmp oeq double %231, 0.000000e+00
  br i1 %232, label %233, label %234

233:                                              ; preds = %230
  call void @_Z15terminatetetgenP10tetgenmeshi(ptr noundef %48, i32 noundef 2)
  br label %234

234:                                              ; preds = %233, %230
  br label %235

235:                                              ; preds = %234, %208
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %236

236:                                              ; preds = %331, %235
  %237 = load i32, ptr %31, align 4, !tbaa !9
  %238 = sext i32 %237 to i64
  %239 = load ptr, ptr %15, align 8, !tbaa !5
  %240 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %239, i32 0, i32 6
  %241 = load i64, ptr %240, align 8, !tbaa !11
  %242 = icmp slt i64 %238, %241
  br i1 %242, label %243, label %334

243:                                              ; preds = %236
  %244 = load ptr, ptr %15, align 8, !tbaa !5
  %245 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %244, i32 0, i32 5
  %246 = load ptr, ptr %245, align 8, !tbaa !14
  %247 = load i32, ptr %31, align 4, !tbaa !9
  %248 = load ptr, ptr %15, align 8, !tbaa !5
  %249 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %248, i32 0, i32 2
  %250 = load i32, ptr %249, align 8, !tbaa !15
  %251 = ashr i32 %247, %250
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds ptr, ptr %246, i64 %252
  %254 = load ptr, ptr %253, align 8, !tbaa !5
  %255 = load i32, ptr %31, align 4, !tbaa !9
  %256 = load ptr, ptr %15, align 8, !tbaa !5
  %257 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %256, i32 0, i32 3
  %258 = load i32, ptr %257, align 4, !tbaa !16
  %259 = and i32 %255, %258
  %260 = load ptr, ptr %15, align 8, !tbaa !5
  %261 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %260, i32 0, i32 0
  %262 = load i32, ptr %261, align 8, !tbaa !17
  %263 = mul nsw i32 %259, %262
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds i8, ptr %254, i64 %264
  %266 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %19, ptr noundef nonnull align 8 dereferenceable(12) %265)
  %267 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %19, i32 0, i32 0
  %268 = load ptr, ptr %267, align 8, !tbaa !20
  %269 = getelementptr inbounds ptr, ptr %268, i64 4
  %270 = load ptr, ptr %269, align 8, !tbaa !5
  %271 = load ptr, ptr %26, align 8, !tbaa !5
  %272 = icmp eq ptr %270, %271
  br i1 %272, label %273, label %275

273:                                              ; preds = %243
  %274 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %19, i32 0, i32 1
  store i32 11, ptr %274, align 8, !tbaa !29
  br label %306

275:                                              ; preds = %243
  %276 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %19, i32 0, i32 0
  %277 = load ptr, ptr %276, align 8, !tbaa !20
  %278 = getelementptr inbounds ptr, ptr %277, i64 5
  %279 = load ptr, ptr %278, align 8, !tbaa !5
  %280 = load ptr, ptr %26, align 8, !tbaa !5
  %281 = icmp eq ptr %279, %280
  br i1 %281, label %282, label %284

282:                                              ; preds = %275
  %283 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %19, i32 0, i32 1
  store i32 3, ptr %283, align 8, !tbaa !29
  br label %305

284:                                              ; preds = %275
  %285 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %19, i32 0, i32 0
  %286 = load ptr, ptr %285, align 8, !tbaa !20
  %287 = getelementptr inbounds ptr, ptr %286, i64 6
  %288 = load ptr, ptr %287, align 8, !tbaa !5
  %289 = load ptr, ptr %26, align 8, !tbaa !5
  %290 = icmp eq ptr %288, %289
  br i1 %290, label %291, label %293

291:                                              ; preds = %284
  %292 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %19, i32 0, i32 1
  store i32 7, ptr %292, align 8, !tbaa !29
  br label %304

293:                                              ; preds = %284
  %294 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %19, i32 0, i32 0
  %295 = load ptr, ptr %294, align 8, !tbaa !20
  %296 = getelementptr inbounds ptr, ptr %295, i64 7
  %297 = load ptr, ptr %296, align 8, !tbaa !5
  %298 = load ptr, ptr %26, align 8, !tbaa !5
  %299 = icmp eq ptr %297, %298
  br i1 %299, label %300, label %302

300:                                              ; preds = %293
  %301 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %19, i32 0, i32 1
  store i32 0, ptr %301, align 8, !tbaa !29
  br label %303

302:                                              ; preds = %293
  br label %331

303:                                              ; preds = %300
  br label %304

304:                                              ; preds = %303, %291
  br label %305

305:                                              ; preds = %304, %282
  br label %306

306:                                              ; preds = %305, %273
  %307 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %19)
  %308 = load ptr, ptr %25, align 8, !tbaa !5
  %309 = icmp eq ptr %307, %308
  br i1 %309, label %310, label %311

310:                                              ; preds = %306
  br label %324

311:                                              ; preds = %306
  %312 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %19)
  %313 = load ptr, ptr %25, align 8, !tbaa !5
  %314 = icmp eq ptr %312, %313
  br i1 %314, label %315, label %316

315:                                              ; preds = %311
  call void @_ZN10tetgenmesh13eprevesymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %19)
  br label %323

316:                                              ; preds = %311
  %317 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %19)
  %318 = load ptr, ptr %25, align 8, !tbaa !5
  %319 = icmp eq ptr %317, %318
  br i1 %319, label %320, label %321

320:                                              ; preds = %316
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %19)
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %19)
  br label %322

321:                                              ; preds = %316
  br label %331

322:                                              ; preds = %320
  br label %323

323:                                              ; preds = %322, %315
  br label %324

324:                                              ; preds = %323, %310
  %325 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %19)
  %326 = load ptr, ptr %27, align 8, !tbaa !5
  %327 = icmp eq ptr %325, %326
  br i1 %327, label %328, label %330

328:                                              ; preds = %324
  %329 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %33, ptr noundef nonnull align 8 dereferenceable(12) %19)
  store i8 1, ptr %28, align 1, !tbaa !25
  br label %334

330:                                              ; preds = %324
  br label %331

331:                                              ; preds = %330, %321, %302
  %332 = load i32, ptr %31, align 4, !tbaa !9
  %333 = add nsw i32 %332, 1
  store i32 %333, ptr %31, align 4, !tbaa !9
  br label %236, !llvm.loop !32

334:                                              ; preds = %328, %236
  br label %335

335:                                              ; preds = %334, %188
  br label %336

336:                                              ; preds = %335, %184
  br label %337

337:                                              ; preds = %336, %180
  br label %338

338:                                              ; preds = %337, %176
  br label %339

339:                                              ; preds = %338
  %340 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %21, i32 0, i32 1
  %341 = load i32, ptr %340, align 8, !tbaa !29
  %342 = add nsw i32 %341, 1
  store i32 %342, ptr %340, align 8, !tbaa !29
  br label %166, !llvm.loop !33

343:                                              ; preds = %174
  br label %344

344:                                              ; preds = %343
  %345 = load i32, ptr %30, align 4, !tbaa !9
  %346 = add nsw i32 %345, 1
  store i32 %346, ptr %30, align 4, !tbaa !9
  br label %128, !llvm.loop !34

347:                                              ; preds = %139
  %348 = load i8, ptr %28, align 1, !tbaa !25, !range !27, !noundef !28
  %349 = trunc i8 %348 to i1
  br i1 %349, label %350, label %355

350:                                              ; preds = %347
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %32, ptr noundef nonnull align 8 dereferenceable(12) %33)
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %32)
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %33)
  call void @_ZN10tetgenmesh8markfaceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %32)
  %351 = load ptr, ptr %12, align 8, !tbaa !5
  %352 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %351, ptr noundef %20)
  %353 = load ptr, ptr %20, align 8, !tbaa !5
  %354 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %353, ptr noundef nonnull align 8 dereferenceable(12) %32)
  br label %388

355:                                              ; preds = %347
  %356 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %32, i32 0, i32 0
  store ptr null, ptr %356, align 8, !tbaa !20
  %357 = load ptr, ptr %13, align 8, !tbaa !5
  %358 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %357, i32 0, i32 6
  %359 = load i64, ptr %358, align 8, !tbaa !11
  %360 = sub nsw i64 %359, 1
  %361 = trunc i64 %360 to i32
  %362 = call noundef i64 @_ZN10tetgenmesh12randomnationEj(ptr noundef nonnull align 8 dereferenceable(1536) %48, i32 noundef %361)
  %363 = trunc i64 %362 to i32
  store i32 %363, ptr %30, align 4, !tbaa !9
  %364 = load ptr, ptr %13, align 8, !tbaa !5
  %365 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %364, i32 0, i32 5
  %366 = load ptr, ptr %365, align 8, !tbaa !14
  %367 = load i32, ptr %30, align 4, !tbaa !9
  %368 = load ptr, ptr %13, align 8, !tbaa !5
  %369 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %368, i32 0, i32 2
  %370 = load i32, ptr %369, align 8, !tbaa !15
  %371 = ashr i32 %367, %370
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds ptr, ptr %366, i64 %372
  %374 = load ptr, ptr %373, align 8, !tbaa !5
  %375 = load i32, ptr %30, align 4, !tbaa !9
  %376 = load ptr, ptr %13, align 8, !tbaa !5
  %377 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %376, i32 0, i32 3
  %378 = load i32, ptr %377, align 4, !tbaa !16
  %379 = and i32 %375, %378
  %380 = load ptr, ptr %13, align 8, !tbaa !5
  %381 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %380, i32 0, i32 0
  %382 = load i32, ptr %381, align 8, !tbaa !17
  %383 = mul nsw i32 %379, %382
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds i8, ptr %374, i64 %384
  %386 = getelementptr inbounds %class.tetgenmesh, ptr %48, i32 0, i32 37
  %387 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %386, ptr noundef nonnull align 8 dereferenceable(12) %385)
  br label %388

388:                                              ; preds = %355, %350
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %389

389:                                              ; preds = %577, %388
  %390 = load i32, ptr %30, align 4, !tbaa !9
  %391 = sext i32 %390 to i64
  %392 = load ptr, ptr %12, align 8, !tbaa !5
  %393 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %392, i32 0, i32 6
  %394 = load i64, ptr %393, align 8, !tbaa !11
  %395 = icmp slt i64 %391, %394
  br i1 %395, label %396, label %399

396:                                              ; preds = %389
  %397 = load i8, ptr %28, align 1, !tbaa !25, !range !27, !noundef !28
  %398 = trunc i8 %397 to i1
  br label %399

399:                                              ; preds = %396, %389
  %400 = phi i1 [ false, %389 ], [ %398, %396 ]
  br i1 %400, label %401, label %580

401:                                              ; preds = %399
  %402 = load ptr, ptr %12, align 8, !tbaa !5
  %403 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %402, i32 0, i32 5
  %404 = load ptr, ptr %403, align 8, !tbaa !14
  %405 = load i32, ptr %30, align 4, !tbaa !9
  %406 = load ptr, ptr %12, align 8, !tbaa !5
  %407 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %406, i32 0, i32 2
  %408 = load i32, ptr %407, align 8, !tbaa !15
  %409 = ashr i32 %405, %408
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds ptr, ptr %404, i64 %410
  %412 = load ptr, ptr %411, align 8, !tbaa !5
  %413 = load i32, ptr %30, align 4, !tbaa !9
  %414 = load ptr, ptr %12, align 8, !tbaa !5
  %415 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %414, i32 0, i32 3
  %416 = load i32, ptr %415, align 4, !tbaa !16
  %417 = and i32 %413, %416
  %418 = load ptr, ptr %12, align 8, !tbaa !5
  %419 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %418, i32 0, i32 0
  %420 = load i32, ptr %419, align 8, !tbaa !17
  %421 = mul nsw i32 %417, %420
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds i8, ptr %412, i64 %422
  store ptr %423, ptr %35, align 8, !tbaa !5
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %424

424:                                              ; preds = %573, %401
  %425 = load i32, ptr %31, align 4, !tbaa !9
  %426 = icmp slt i32 %425, 3
  br i1 %426, label %427, label %430

427:                                              ; preds = %424
  %428 = load i8, ptr %28, align 1, !tbaa !25, !range !27, !noundef !28
  %429 = trunc i8 %428 to i1
  br label %430

430:                                              ; preds = %427, %424
  %431 = phi i1 [ false, %424 ], [ %429, %427 ]
  br i1 %431, label %432, label %576

432:                                              ; preds = %430
  %433 = load ptr, ptr %35, align 8, !tbaa !5
  %434 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %32, ptr noundef nonnull align 8 dereferenceable(12) %433)
  store i32 0, ptr %42, align 4, !tbaa !9
  br label %435

435:                                              ; preds = %469, %432
  br label %436

436:                                              ; preds = %435
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %32)
  %437 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %32)
  store ptr %437, ptr %27, align 8, !tbaa !5
  %438 = load ptr, ptr %27, align 8, !tbaa !5
  %439 = call noundef zeroext i1 @_ZN10tetgenmesh11pmarktestedEPd(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %438)
  br i1 %439, label %440, label %441

440:                                              ; preds = %436
  br label %470

441:                                              ; preds = %436
  %442 = load ptr, ptr %27, align 8, !tbaa !5
  %443 = getelementptr inbounds %class.tetgenmesh, ptr %48, i32 0, i32 35
  %444 = load ptr, ptr %443, align 8, !tbaa !35
  %445 = icmp eq ptr %442, %444
  br i1 %445, label %446, label %447

446:                                              ; preds = %441
  call void @_Z15terminatetetgenP10tetgenmeshi(ptr noundef %48, i32 noundef 2)
  br label %470

447:                                              ; preds = %441
  %448 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %32, i32 0, i32 1
  %449 = load i32, ptr %448, align 8, !tbaa !29
  store i32 %449, ptr %29, align 4, !tbaa !9
  %450 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %32, i32 0, i32 0
  %451 = load ptr, ptr %450, align 8, !tbaa !20
  %452 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %32, i32 0, i32 1
  %453 = load i32, ptr %452, align 8, !tbaa !29
  %454 = and i32 %453, 3
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds ptr, ptr %451, i64 %455
  %457 = load ptr, ptr %456, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %457, ptr noundef nonnull align 8 dereferenceable(12) %32)
  %458 = load i32, ptr %29, align 4, !tbaa !9
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %459
  %461 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %32, i32 0, i32 1
  %462 = load i32, ptr %461, align 8, !tbaa !29
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds [12 x i32], ptr %460, i64 0, i64 %463
  %465 = load i32, ptr %464, align 4, !tbaa !9
  %466 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %32, i32 0, i32 1
  store i32 %465, ptr %466, align 8, !tbaa !29
  %467 = call noundef zeroext i1 @_ZN10tetgenmesh10marktestedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %32)
  br i1 %467, label %469, label %468

468:                                              ; preds = %447
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %470

469:                                              ; preds = %447
  br label %435, !llvm.loop !37

470:                                              ; preds = %468, %446, %440
  %471 = load i32, ptr %42, align 4, !tbaa !9
  %472 = icmp ne i32 %471, 0
  br i1 %472, label %571, label %473

473:                                              ; preds = %470
  %474 = call noundef zeroext i1 @_ZN10tetgenmesh10facemarkedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %32)
  br i1 %474, label %570, label %475

475:                                              ; preds = %473
  %476 = load ptr, ptr %35, align 8, !tbaa !5
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %476, ptr noundef nonnull align 8 dereferenceable(12) %33)
  %477 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %34, ptr noundef nonnull align 8 dereferenceable(12) %33)
  br label %478

478:                                              ; preds = %511, %475
  br label %479

479:                                              ; preds = %478
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %33)
  %480 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %33)
  store ptr %480, ptr %36, align 8, !tbaa !5
  %481 = load ptr, ptr %36, align 8, !tbaa !5
  %482 = load ptr, ptr %27, align 8, !tbaa !5
  %483 = icmp eq ptr %481, %482
  br i1 %483, label %484, label %485

484:                                              ; preds = %479
  br label %512

485:                                              ; preds = %479
  %486 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %33, i32 0, i32 1
  %487 = load i32, ptr %486, align 8, !tbaa !29
  store i32 %487, ptr %29, align 4, !tbaa !9
  %488 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %33, i32 0, i32 0
  %489 = load ptr, ptr %488, align 8, !tbaa !20
  %490 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %33, i32 0, i32 1
  %491 = load i32, ptr %490, align 8, !tbaa !29
  %492 = and i32 %491, 3
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds ptr, ptr %489, i64 %493
  %495 = load ptr, ptr %494, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %495, ptr noundef nonnull align 8 dereferenceable(12) %33)
  %496 = load i32, ptr %29, align 4, !tbaa !9
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %497
  %499 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %33, i32 0, i32 1
  %500 = load i32, ptr %499, align 8, !tbaa !29
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds [12 x i32], ptr %498, i64 0, i64 %501
  %503 = load i32, ptr %502, align 4, !tbaa !9
  %504 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %33, i32 0, i32 1
  store i32 %503, ptr %504, align 8, !tbaa !29
  %505 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %33, i32 0, i32 0
  %506 = load ptr, ptr %505, align 8, !tbaa !20
  %507 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %34, i32 0, i32 0
  %508 = load ptr, ptr %507, align 8, !tbaa !20
  %509 = icmp eq ptr %506, %508
  br i1 %509, label %510, label %511

510:                                              ; preds = %485
  store i8 0, ptr %28, align 1, !tbaa !25
  br label %512

511:                                              ; preds = %485
  br label %478, !llvm.loop !38

512:                                              ; preds = %510, %484
  %513 = load i8, ptr %28, align 1, !tbaa !25, !range !27, !noundef !28
  %514 = trunc i8 %513 to i1
  br i1 %514, label %515, label %524

515:                                              ; preds = %512
  %516 = call noundef zeroext i1 @_ZN10tetgenmesh10marktestedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %33)
  br i1 %516, label %517, label %522

517:                                              ; preds = %515
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %32, ptr noundef nonnull align 8 dereferenceable(12) %33)
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %32)
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %33)
  call void @_ZN10tetgenmesh8markfaceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %32)
  %518 = load ptr, ptr %12, align 8, !tbaa !5
  %519 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %518, ptr noundef %20)
  %520 = load ptr, ptr %20, align 8, !tbaa !5
  %521 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %520, ptr noundef nonnull align 8 dereferenceable(12) %32)
  br label %523

522:                                              ; preds = %515
  call void @_Z15terminatetetgenP10tetgenmeshi(ptr noundef %48, i32 noundef 2)
  br label %523

523:                                              ; preds = %522, %517
  br label %569

524:                                              ; preds = %512
  %525 = load ptr, ptr %35, align 8, !tbaa !5
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %525, ptr noundef nonnull align 8 dereferenceable(12) %33)
  %526 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %34, ptr noundef nonnull align 8 dereferenceable(12) %33)
  br label %527

527:                                              ; preds = %548, %524
  br label %528

528:                                              ; preds = %527
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %33)
  %529 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %33)
  store ptr %529, ptr %36, align 8, !tbaa !5
  %530 = load ptr, ptr %36, align 8, !tbaa !5
  %531 = call noundef zeroext i1 @_ZN10tetgenmesh11pmarktestedEPd(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %530)
  br i1 %531, label %532, label %548

532:                                              ; preds = %528
  %533 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %32)
  %534 = load ptr, ptr %27, align 8, !tbaa !5
  %535 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %32)
  %536 = load ptr, ptr %36, align 8, !tbaa !5
  %537 = call noundef double @_Z8orient3dPdS_S_S_(ptr noundef %533, ptr noundef %534, ptr noundef %535, ptr noundef %536)
  store double %537, ptr %38, align 8, !tbaa !30
  %538 = load double, ptr %38, align 8, !tbaa !30
  %539 = fcmp olt double %538, 0.000000e+00
  br i1 %539, label %540, label %541

540:                                              ; preds = %532
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %32)
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %33)
  br label %547

541:                                              ; preds = %532
  %542 = load double, ptr %38, align 8, !tbaa !30
  %543 = fcmp ogt double %542, 0.000000e+00
  br i1 %543, label %544, label %545

544:                                              ; preds = %541
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %32)
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %33)
  br label %546

545:                                              ; preds = %541
  call void @_Z15terminatetetgenP10tetgenmeshi(ptr noundef %48, i32 noundef 2)
  br label %546

546:                                              ; preds = %545, %544
  br label %547

547:                                              ; preds = %546, %540
  br label %568

548:                                              ; preds = %528
  %549 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %33, i32 0, i32 1
  %550 = load i32, ptr %549, align 8, !tbaa !29
  store i32 %550, ptr %29, align 4, !tbaa !9
  %551 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %33, i32 0, i32 0
  %552 = load ptr, ptr %551, align 8, !tbaa !20
  %553 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %33, i32 0, i32 1
  %554 = load i32, ptr %553, align 8, !tbaa !29
  %555 = and i32 %554, 3
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds ptr, ptr %552, i64 %556
  %558 = load ptr, ptr %557, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %558, ptr noundef nonnull align 8 dereferenceable(12) %33)
  %559 = load i32, ptr %29, align 4, !tbaa !9
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %560
  %562 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %33, i32 0, i32 1
  %563 = load i32, ptr %562, align 8, !tbaa !29
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds [12 x i32], ptr %561, i64 0, i64 %564
  %566 = load i32, ptr %565, align 4, !tbaa !9
  %567 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %33, i32 0, i32 1
  store i32 %566, ptr %567, align 8, !tbaa !29
  br label %527, !llvm.loop !39

568:                                              ; preds = %547
  br label %569

569:                                              ; preds = %568, %523
  br label %570

570:                                              ; preds = %569, %473
  br label %571

571:                                              ; preds = %570, %470
  %572 = load ptr, ptr %35, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %572)
  br label %573

573:                                              ; preds = %571
  %574 = load i32, ptr %31, align 4, !tbaa !9
  %575 = add nsw i32 %574, 1
  store i32 %575, ptr %31, align 4, !tbaa !9
  br label %424, !llvm.loop !40

576:                                              ; preds = %430
  br label %577

577:                                              ; preds = %576
  %578 = load i32, ptr %30, align 4, !tbaa !9
  %579 = add nsw i32 %578, 1
  store i32 %579, ptr %30, align 4, !tbaa !9
  br label %389, !llvm.loop !41

580:                                              ; preds = %399
  %581 = load i8, ptr %28, align 1, !tbaa !25, !range !27, !noundef !28
  %582 = trunc i8 %581 to i1
  br i1 %582, label %583, label %869

583:                                              ; preds = %580
  %584 = getelementptr inbounds %class.tetgenmesh, ptr %48, i32 0, i32 2
  %585 = load ptr, ptr %584, align 8, !tbaa !42
  %586 = getelementptr inbounds %class.tetgenbehavior, ptr %585, i32 0, i32 37
  %587 = load i32, ptr %586, align 4, !tbaa !43
  %588 = icmp sgt i32 %587, 2
  br i1 %588, label %589, label %594

589:                                              ; preds = %583
  %590 = load ptr, ptr %12, align 8, !tbaa !5
  %591 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %590, i32 0, i32 6
  %592 = load i64, ptr %591, align 8, !tbaa !11
  %593 = call i32 (ptr, ...) @printf(ptr noundef @.str.388, i64 noundef %592)
  br label %594

594:                                              ; preds = %589, %583
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #6
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %43)
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #6
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %44)
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #6
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %45)
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #6
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %46)
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #6
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %47)
  %595 = load ptr, ptr %13, align 8, !tbaa !5
  %596 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %595, i32 0, i32 5
  %597 = load ptr, ptr %596, align 8, !tbaa !14
  %598 = load ptr, ptr %13, align 8, !tbaa !5
  %599 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %598, i32 0, i32 2
  %600 = load i32, ptr %599, align 8, !tbaa !15
  %601 = ashr i32 0, %600
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds ptr, ptr %597, i64 %602
  %604 = load ptr, ptr %603, align 8, !tbaa !5
  %605 = load ptr, ptr %13, align 8, !tbaa !5
  %606 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %605, i32 0, i32 3
  %607 = load i32, ptr %606, align 4, !tbaa !16
  %608 = and i32 0, %607
  %609 = load ptr, ptr %13, align 8, !tbaa !5
  %610 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %609, i32 0, i32 0
  %611 = load i32, ptr %610, align 8, !tbaa !17
  %612 = mul nsw i32 %608, %611
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds i8, ptr %604, i64 %613
  %615 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %43, ptr noundef nonnull align 8 dereferenceable(12) %614)
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %616

616:                                              ; preds = %670, %594
  %617 = load i32, ptr %30, align 4, !tbaa !9
  %618 = sext i32 %617 to i64
  %619 = load ptr, ptr %12, align 8, !tbaa !5
  %620 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %619, i32 0, i32 6
  %621 = load i64, ptr %620, align 8, !tbaa !11
  %622 = icmp slt i64 %618, %621
  br i1 %622, label %623, label %673

623:                                              ; preds = %616
  %624 = load ptr, ptr %12, align 8, !tbaa !5
  %625 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %624, i32 0, i32 5
  %626 = load ptr, ptr %625, align 8, !tbaa !14
  %627 = load i32, ptr %30, align 4, !tbaa !9
  %628 = load ptr, ptr %12, align 8, !tbaa !5
  %629 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %628, i32 0, i32 2
  %630 = load i32, ptr %629, align 8, !tbaa !15
  %631 = ashr i32 %627, %630
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds ptr, ptr %626, i64 %632
  %634 = load ptr, ptr %633, align 8, !tbaa !5
  %635 = load i32, ptr %30, align 4, !tbaa !9
  %636 = load ptr, ptr %12, align 8, !tbaa !5
  %637 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %636, i32 0, i32 3
  %638 = load i32, ptr %637, align 4, !tbaa !16
  %639 = and i32 %635, %638
  %640 = load ptr, ptr %12, align 8, !tbaa !5
  %641 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %640, i32 0, i32 0
  %642 = load i32, ptr %641, align 8, !tbaa !17
  %643 = mul nsw i32 %639, %642
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds i8, ptr %634, i64 %644
  store ptr %645, ptr %35, align 8, !tbaa !5
  %646 = load ptr, ptr %35, align 8, !tbaa !5
  call void @_ZN10tetgenmesh10unmarkfaceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %646)
  %647 = getelementptr inbounds %class.tetgenmesh, ptr %48, i32 0, i32 5
  %648 = load ptr, ptr %647, align 8, !tbaa !46
  call void @_ZN10tetgenmesh13makeshellfaceEPNS_10memorypoolEPNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %648, ptr noundef %44)
  %649 = load ptr, ptr %35, align 8, !tbaa !5
  %650 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %649)
  call void @_ZN10tetgenmesh7setsorgERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %44, ptr noundef %650)
  %651 = load ptr, ptr %35, align 8, !tbaa !5
  %652 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %651)
  call void @_ZN10tetgenmesh8setsdestERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %44, ptr noundef %652)
  %653 = load ptr, ptr %35, align 8, !tbaa !5
  %654 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %653)
  call void @_ZN10tetgenmesh8setsapexERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %44, ptr noundef %654)
  %655 = call noundef i32 @_ZN10tetgenmesh9shellmarkERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %43)
  call void @_ZN10tetgenmesh12setshellmarkERNS_4faceEi(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %44, i32 noundef %655)
  %656 = getelementptr inbounds %class.tetgenmesh, ptr %48, i32 0, i32 54
  %657 = load i32, ptr %656, align 4, !tbaa !47
  %658 = icmp ne i32 %657, 0
  br i1 %658, label %659, label %661

659:                                              ; preds = %623
  %660 = call noundef double @_ZN10tetgenmesh9areaboundERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %43)
  call void @_ZN10tetgenmesh12setareaboundERNS_4faceEd(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %44, double noundef %660)
  br label %661

661:                                              ; preds = %659, %623
  %662 = getelementptr inbounds %class.tetgenmesh, ptr %48, i32 0, i32 57
  %663 = load i32, ptr %662, align 8, !tbaa !48
  %664 = icmp ne i32 %663, 0
  br i1 %664, label %665, label %667

665:                                              ; preds = %661
  %666 = call noundef i32 @_ZN10tetgenmesh13getfacetindexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %43)
  call void @_ZN10tetgenmesh13setfacetindexERNS_4faceEi(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %44, i32 noundef %666)
  br label %667

667:                                              ; preds = %665, %661
  %668 = load ptr, ptr %35, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %668, ptr noundef nonnull align 8 dereferenceable(12) %44)
  %669 = load ptr, ptr %35, align 8, !tbaa !5
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %669, ptr noundef nonnull align 8 dereferenceable(12) %19)
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %44)
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %19, ptr noundef nonnull align 8 dereferenceable(12) %44)
  br label %670

670:                                              ; preds = %667
  %671 = load i32, ptr %30, align 4, !tbaa !9
  %672 = add nsw i32 %671, 1
  store i32 %672, ptr %30, align 4, !tbaa !9
  br label %616, !llvm.loop !49

673:                                              ; preds = %616
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %674

674:                                              ; preds = %826, %673
  %675 = load i32, ptr %30, align 4, !tbaa !9
  %676 = sext i32 %675 to i64
  %677 = load ptr, ptr %12, align 8, !tbaa !5
  %678 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %677, i32 0, i32 6
  %679 = load i64, ptr %678, align 8, !tbaa !11
  %680 = icmp slt i64 %676, %679
  br i1 %680, label %681, label %829

681:                                              ; preds = %674
  %682 = load ptr, ptr %12, align 8, !tbaa !5
  %683 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %682, i32 0, i32 5
  %684 = load ptr, ptr %683, align 8, !tbaa !14
  %685 = load i32, ptr %30, align 4, !tbaa !9
  %686 = load ptr, ptr %12, align 8, !tbaa !5
  %687 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %686, i32 0, i32 2
  %688 = load i32, ptr %687, align 8, !tbaa !15
  %689 = ashr i32 %685, %688
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds ptr, ptr %684, i64 %690
  %692 = load ptr, ptr %691, align 8, !tbaa !5
  %693 = load i32, ptr %30, align 4, !tbaa !9
  %694 = load ptr, ptr %12, align 8, !tbaa !5
  %695 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %694, i32 0, i32 3
  %696 = load i32, ptr %695, align 4, !tbaa !16
  %697 = and i32 %693, %696
  %698 = load ptr, ptr %12, align 8, !tbaa !5
  %699 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %698, i32 0, i32 0
  %700 = load i32, ptr %699, align 8, !tbaa !17
  %701 = mul nsw i32 %697, %700
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds i8, ptr %692, i64 %702
  store ptr %703, ptr %35, align 8, !tbaa !5
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %704

704:                                              ; preds = %822, %681
  %705 = load i32, ptr %31, align 4, !tbaa !9
  %706 = icmp slt i32 %705, 3
  br i1 %706, label %707, label %825

707:                                              ; preds = %704
  %708 = load ptr, ptr %35, align 8, !tbaa !5
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %708, ptr noundef nonnull align 8 dereferenceable(12) %44)
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %44, ptr noundef nonnull align 8 dereferenceable(12) %45)
  %709 = getelementptr inbounds %"class.tetgenmesh::face", ptr %45, i32 0, i32 0
  %710 = load ptr, ptr %709, align 8, !tbaa !18
  %711 = icmp eq ptr %710, null
  br i1 %711, label %712, label %820

712:                                              ; preds = %707
  %713 = load ptr, ptr %35, align 8, !tbaa !5
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %713, ptr noundef nonnull align 8 dereferenceable(12) %21)
  br label %714

714:                                              ; preds = %797, %712
  br label %715

715:                                              ; preds = %714
  call void @_ZN10tetgenmesh9tsspivot1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %21, ptr noundef nonnull align 8 dereferenceable(12) %24)
  %716 = getelementptr inbounds %"class.tetgenmesh::face", ptr %24, i32 0, i32 0
  %717 = load ptr, ptr %716, align 8, !tbaa !18
  %718 = icmp ne ptr %717, null
  br i1 %718, label %719, label %792

719:                                              ; preds = %715
  %720 = getelementptr inbounds %"class.tetgenmesh::face", ptr %24, i32 0, i32 1
  store i32 0, ptr %720, align 8, !tbaa !50
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %24, ptr noundef nonnull align 8 dereferenceable(12) %43)
  %721 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %24)
  br i1 %721, label %722, label %760

722:                                              ; preds = %719
  %723 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %34, ptr noundef nonnull align 8 dereferenceable(12) %21)
  br label %724

724:                                              ; preds = %753, %722
  br label %725

725:                                              ; preds = %724
  call void @_ZN10tetgenmesh12tssdissolve1ERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %34)
  %726 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %34, i32 0, i32 1
  %727 = load i32, ptr %726, align 8, !tbaa !29
  store i32 %727, ptr %29, align 4, !tbaa !9
  %728 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %34, i32 0, i32 0
  %729 = load ptr, ptr %728, align 8, !tbaa !20
  %730 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %34, i32 0, i32 1
  %731 = load i32, ptr %730, align 8, !tbaa !29
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %732
  %734 = load i32, ptr %733, align 4, !tbaa !9
  %735 = sext i32 %734 to i64
  %736 = getelementptr inbounds ptr, ptr %729, i64 %735
  %737 = load ptr, ptr %736, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %737, ptr noundef nonnull align 8 dereferenceable(12) %34)
  %738 = load i32, ptr %29, align 4, !tbaa !9
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %739
  %741 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %34, i32 0, i32 1
  %742 = load i32, ptr %741, align 8, !tbaa !29
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds [12 x i32], ptr %740, i64 0, i64 %743
  %745 = load i32, ptr %744, align 4, !tbaa !9
  %746 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %34, i32 0, i32 1
  store i32 %745, ptr %746, align 8, !tbaa !29
  %747 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %34, i32 0, i32 0
  %748 = load ptr, ptr %747, align 8, !tbaa !20
  %749 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %21, i32 0, i32 0
  %750 = load ptr, ptr %749, align 8, !tbaa !20
  %751 = icmp eq ptr %748, %750
  br i1 %751, label %752, label %753

752:                                              ; preds = %725
  br label %754

753:                                              ; preds = %725
  br label %724, !llvm.loop !51

754:                                              ; preds = %752
  %755 = getelementptr inbounds %class.tetgenmesh, ptr %48, i32 0, i32 6
  %756 = load ptr, ptr %755, align 8, !tbaa !52
  %757 = getelementptr inbounds %"class.tetgenmesh::face", ptr %24, i32 0, i32 0
  %758 = load ptr, ptr %757, align 8, !tbaa !18
  call void @_ZN10tetgenmesh16shellfacedeallocEPNS_10memorypoolEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %756, ptr noundef %758)
  call void @_ZN10tetgenmesh10ssdissolveERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %43)
  %759 = getelementptr inbounds %"class.tetgenmesh::face", ptr %24, i32 0, i32 0
  store ptr null, ptr %759, align 8, !tbaa !18
  br label %760

760:                                              ; preds = %754, %719
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %43, ptr noundef nonnull align 8 dereferenceable(12) %45)
  %761 = getelementptr inbounds %"class.tetgenmesh::face", ptr %45, i32 0, i32 0
  %762 = load ptr, ptr %761, align 8, !tbaa !18
  %763 = icmp ne ptr %762, null
  br i1 %763, label %764, label %786

764:                                              ; preds = %760
  %765 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %46, ptr noundef nonnull align 8 dereferenceable(12) %45)
  %766 = getelementptr inbounds %"class.tetgenmesh::face", ptr %24, i32 0, i32 0
  %767 = load ptr, ptr %766, align 8, !tbaa !18
  %768 = icmp ne ptr %767, null
  br i1 %768, label %769, label %785

769:                                              ; preds = %764
  %770 = getelementptr inbounds %"class.tetgenmesh::face", ptr %24, i32 0, i32 1
  store i32 0, ptr %770, align 8, !tbaa !50
  %771 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %44)
  %772 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %24)
  %773 = icmp ne ptr %771, %772
  br i1 %773, label %774, label %775

774:                                              ; preds = %769
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %44)
  br label %775

775:                                              ; preds = %774, %769
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %46, ptr noundef nonnull align 8 dereferenceable(12) %47)
  br label %776

776:                                              ; preds = %782, %775
  %777 = getelementptr inbounds %"class.tetgenmesh::face", ptr %47, i32 0, i32 0
  %778 = load ptr, ptr %777, align 8, !tbaa !18
  %779 = getelementptr inbounds %"class.tetgenmesh::face", ptr %43, i32 0, i32 0
  %780 = load ptr, ptr %779, align 8, !tbaa !18
  %781 = icmp ne ptr %778, %780
  br i1 %781, label %782, label %784

782:                                              ; preds = %776
  %783 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %46, ptr noundef nonnull align 8 dereferenceable(12) %47)
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %46, ptr noundef nonnull align 8 dereferenceable(12) %47)
  br label %776, !llvm.loop !53

784:                                              ; preds = %776
  br label %785

785:                                              ; preds = %784, %764
  call void @_ZN10tetgenmesh6sbond1ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %44, ptr noundef nonnull align 8 dereferenceable(12) %45)
  call void @_ZN10tetgenmesh6sbond1ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %46, ptr noundef nonnull align 8 dereferenceable(12) %44)
  br label %786

786:                                              ; preds = %785, %760
  %787 = getelementptr inbounds %"class.tetgenmesh::face", ptr %24, i32 0, i32 0
  %788 = load ptr, ptr %787, align 8, !tbaa !18
  %789 = icmp ne ptr %788, null
  br i1 %789, label %790, label %791

790:                                              ; preds = %786
  call void @_ZN10tetgenmesh6ssbondERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %44, ptr noundef nonnull align 8 dereferenceable(12) %24)
  br label %791

791:                                              ; preds = %790, %786
  br label %819

792:                                              ; preds = %715
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %21, ptr noundef nonnull align 8 dereferenceable(12) %47)
  %793 = getelementptr inbounds %"class.tetgenmesh::face", ptr %47, i32 0, i32 0
  %794 = load ptr, ptr %793, align 8, !tbaa !18
  %795 = icmp ne ptr %794, null
  br i1 %795, label %796, label %797

796:                                              ; preds = %792
  call void @_ZN10tetgenmesh5sbondERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %44, ptr noundef nonnull align 8 dereferenceable(12) %47)
  br label %819

797:                                              ; preds = %792
  %798 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %21, i32 0, i32 1
  %799 = load i32, ptr %798, align 8, !tbaa !29
  store i32 %799, ptr %29, align 4, !tbaa !9
  %800 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %21, i32 0, i32 0
  %801 = load ptr, ptr %800, align 8, !tbaa !20
  %802 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %21, i32 0, i32 1
  %803 = load i32, ptr %802, align 8, !tbaa !29
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %804
  %806 = load i32, ptr %805, align 4, !tbaa !9
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds ptr, ptr %801, i64 %807
  %809 = load ptr, ptr %808, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %809, ptr noundef nonnull align 8 dereferenceable(12) %21)
  %810 = load i32, ptr %29, align 4, !tbaa !9
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %811
  %813 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %21, i32 0, i32 1
  %814 = load i32, ptr %813, align 8, !tbaa !29
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds [12 x i32], ptr %812, i64 0, i64 %815
  %817 = load i32, ptr %816, align 4, !tbaa !9
  %818 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %21, i32 0, i32 1
  store i32 %817, ptr %818, align 8, !tbaa !29
  br label %714, !llvm.loop !54

819:                                              ; preds = %796, %791
  br label %820

820:                                              ; preds = %819, %707
  %821 = load ptr, ptr %35, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %821)
  br label %822

822:                                              ; preds = %820
  %823 = load i32, ptr %31, align 4, !tbaa !9
  %824 = add nsw i32 %823, 1
  store i32 %824, ptr %31, align 4, !tbaa !9
  br label %704, !llvm.loop !55

825:                                              ; preds = %704
  br label %826

826:                                              ; preds = %825
  %827 = load i32, ptr %30, align 4, !tbaa !9
  %828 = add nsw i32 %827, 1
  store i32 %828, ptr %30, align 4, !tbaa !9
  br label %674, !llvm.loop !56

829:                                              ; preds = %674
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %830

830:                                              ; preds = %865, %829
  %831 = load i32, ptr %30, align 4, !tbaa !9
  %832 = sext i32 %831 to i64
  %833 = load ptr, ptr %13, align 8, !tbaa !5
  %834 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %833, i32 0, i32 6
  %835 = load i64, ptr %834, align 8, !tbaa !11
  %836 = icmp slt i64 %832, %835
  br i1 %836, label %837, label %868

837:                                              ; preds = %830
  %838 = load ptr, ptr %13, align 8, !tbaa !5
  %839 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %838, i32 0, i32 5
  %840 = load ptr, ptr %839, align 8, !tbaa !14
  %841 = load i32, ptr %30, align 4, !tbaa !9
  %842 = load ptr, ptr %13, align 8, !tbaa !5
  %843 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %842, i32 0, i32 2
  %844 = load i32, ptr %843, align 8, !tbaa !15
  %845 = ashr i32 %841, %844
  %846 = sext i32 %845 to i64
  %847 = getelementptr inbounds ptr, ptr %840, i64 %846
  %848 = load ptr, ptr %847, align 8, !tbaa !5
  %849 = load i32, ptr %30, align 4, !tbaa !9
  %850 = load ptr, ptr %13, align 8, !tbaa !5
  %851 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %850, i32 0, i32 3
  %852 = load i32, ptr %851, align 4, !tbaa !16
  %853 = and i32 %849, %852
  %854 = load ptr, ptr %13, align 8, !tbaa !5
  %855 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %854, i32 0, i32 0
  %856 = load i32, ptr %855, align 8, !tbaa !17
  %857 = mul nsw i32 %853, %856
  %858 = sext i32 %857 to i64
  %859 = getelementptr inbounds i8, ptr %848, i64 %858
  store ptr %859, ptr %23, align 8, !tbaa !5
  %860 = getelementptr inbounds %class.tetgenmesh, ptr %48, i32 0, i32 5
  %861 = load ptr, ptr %860, align 8, !tbaa !46
  %862 = load ptr, ptr %23, align 8, !tbaa !5
  %863 = getelementptr inbounds %"class.tetgenmesh::face", ptr %862, i32 0, i32 0
  %864 = load ptr, ptr %863, align 8, !tbaa !18
  call void @_ZN10tetgenmesh16shellfacedeallocEPNS_10memorypoolEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %861, ptr noundef %864)
  br label %865

865:                                              ; preds = %837
  %866 = load i32, ptr %30, align 4, !tbaa !9
  %867 = add nsw i32 %866, 1
  store i32 %867, ptr %30, align 4, !tbaa !9
  br label %830, !llvm.loop !57

868:                                              ; preds = %830
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #6
  br label %967

869:                                              ; preds = %580
  %870 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %32, i32 0, i32 0
  %871 = load ptr, ptr %870, align 8, !tbaa !20
  %872 = icmp ne ptr %871, null
  br i1 %872, label %873, label %966

873:                                              ; preds = %869
  %874 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %32)
  store ptr %874, ptr %25, align 8, !tbaa !5
  %875 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %32)
  store ptr %875, ptr %26, align 8, !tbaa !5
  %876 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %33)
  store ptr %876, ptr %27, align 8, !tbaa !5
  %877 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %33)
  store ptr %877, ptr %36, align 8, !tbaa !5
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %878

878:                                              ; preds = %950, %873
  %879 = load i32, ptr %30, align 4, !tbaa !9
  %880 = sext i32 %879 to i64
  %881 = load ptr, ptr %13, align 8, !tbaa !5
  %882 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %881, i32 0, i32 6
  %883 = load i64, ptr %882, align 8, !tbaa !11
  %884 = icmp slt i64 %880, %883
  br i1 %884, label %885, label %953

885:                                              ; preds = %878
  %886 = load ptr, ptr %13, align 8, !tbaa !5
  %887 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %886, i32 0, i32 5
  %888 = load ptr, ptr %887, align 8, !tbaa !14
  %889 = load i32, ptr %30, align 4, !tbaa !9
  %890 = load ptr, ptr %13, align 8, !tbaa !5
  %891 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %890, i32 0, i32 2
  %892 = load i32, ptr %891, align 8, !tbaa !15
  %893 = ashr i32 %889, %892
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds ptr, ptr %888, i64 %894
  %896 = load ptr, ptr %895, align 8, !tbaa !5
  %897 = load i32, ptr %30, align 4, !tbaa !9
  %898 = load ptr, ptr %13, align 8, !tbaa !5
  %899 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %898, i32 0, i32 3
  %900 = load i32, ptr %899, align 4, !tbaa !16
  %901 = and i32 %897, %900
  %902 = load ptr, ptr %13, align 8, !tbaa !5
  %903 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %902, i32 0, i32 0
  %904 = load i32, ptr %903, align 8, !tbaa !17
  %905 = mul nsw i32 %901, %904
  %906 = sext i32 %905 to i64
  %907 = getelementptr inbounds i8, ptr %896, i64 %906
  store ptr %907, ptr %23, align 8, !tbaa !5
  %908 = load ptr, ptr %23, align 8, !tbaa !5
  %909 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %908)
  %910 = load ptr, ptr %25, align 8, !tbaa !5
  %911 = icmp eq ptr %909, %910
  br i1 %911, label %912, label %917

912:                                              ; preds = %885
  %913 = load ptr, ptr %23, align 8, !tbaa !5
  %914 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %913)
  %915 = load ptr, ptr %26, align 8, !tbaa !5
  %916 = icmp eq ptr %914, %915
  br i1 %916, label %927, label %917

917:                                              ; preds = %912, %885
  %918 = load ptr, ptr %23, align 8, !tbaa !5
  %919 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %918)
  %920 = load ptr, ptr %26, align 8, !tbaa !5
  %921 = icmp eq ptr %919, %920
  br i1 %921, label %922, label %928

922:                                              ; preds = %917
  %923 = load ptr, ptr %23, align 8, !tbaa !5
  %924 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %923)
  %925 = load ptr, ptr %25, align 8, !tbaa !5
  %926 = icmp eq ptr %924, %925
  br i1 %926, label %927, label %928

927:                                              ; preds = %922, %912
  br label %953

928:                                              ; preds = %922, %917
  %929 = load ptr, ptr %23, align 8, !tbaa !5
  %930 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %929)
  %931 = load ptr, ptr %27, align 8, !tbaa !5
  %932 = icmp eq ptr %930, %931
  br i1 %932, label %933, label %938

933:                                              ; preds = %928
  %934 = load ptr, ptr %23, align 8, !tbaa !5
  %935 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %934)
  %936 = load ptr, ptr %36, align 8, !tbaa !5
  %937 = icmp eq ptr %935, %936
  br i1 %937, label %948, label %938

938:                                              ; preds = %933, %928
  %939 = load ptr, ptr %23, align 8, !tbaa !5
  %940 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %939)
  %941 = load ptr, ptr %36, align 8, !tbaa !5
  %942 = icmp eq ptr %940, %941
  br i1 %942, label %943, label %949

943:                                              ; preds = %938
  %944 = load ptr, ptr %23, align 8, !tbaa !5
  %945 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef nonnull align 8 dereferenceable(12) %944)
  %946 = load ptr, ptr %27, align 8, !tbaa !5
  %947 = icmp eq ptr %945, %946
  br i1 %947, label %948, label %949

948:                                              ; preds = %943, %933
  br label %953

949:                                              ; preds = %943, %938
  br label %950

950:                                              ; preds = %949
  %951 = load i32, ptr %30, align 4, !tbaa !9
  %952 = add nsw i32 %951, 1
  store i32 %952, ptr %30, align 4, !tbaa !9
  br label %878, !llvm.loop !58

953:                                              ; preds = %948, %927, %878
  %954 = load i32, ptr %30, align 4, !tbaa !9
  %955 = sext i32 %954 to i64
  %956 = load ptr, ptr %13, align 8, !tbaa !5
  %957 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %956, i32 0, i32 6
  %958 = load i64, ptr %957, align 8, !tbaa !11
  %959 = icmp slt i64 %955, %958
  br i1 %959, label %960, label %964

960:                                              ; preds = %953
  %961 = load ptr, ptr %23, align 8, !tbaa !5
  %962 = getelementptr inbounds %class.tetgenmesh, ptr %48, i32 0, i32 37
  %963 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %962, ptr noundef nonnull align 8 dereferenceable(12) %961)
  br label %965

964:                                              ; preds = %953
  call void @_Z15terminatetetgenP10tetgenmeshi(ptr noundef %48, i32 noundef 2)
  br label %965

965:                                              ; preds = %964, %960
  br label %966

966:                                              ; preds = %965, %869
  br label %967

967:                                              ; preds = %966, %868
  %968 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %968)
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #6
  br label %970

969:                                              ; preds = %120
  store i8 1, ptr %28, align 1, !tbaa !25
  br label %970

970:                                              ; preds = %969, %967
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %971

971:                                              ; preds = %1026, %970
  %972 = load i32, ptr %31, align 4, !tbaa !9
  %973 = icmp slt i32 %972, 2
  br i1 %973, label %974, label %1029

974:                                              ; preds = %971
  %975 = load i32, ptr %31, align 4, !tbaa !9
  %976 = icmp eq i32 %975, 0
  br i1 %976, label %977, label %979

977:                                              ; preds = %974
  %978 = load ptr, ptr %10, align 8, !tbaa !5
  br label %981

979:                                              ; preds = %974
  %980 = load ptr, ptr %11, align 8, !tbaa !5
  br label %981

981:                                              ; preds = %979, %977
  %982 = phi ptr [ %978, %977 ], [ %980, %979 ]
  store ptr %982, ptr %17, align 8, !tbaa !5
  %983 = load ptr, ptr %17, align 8, !tbaa !5
  %984 = icmp ne ptr %983, null
  br i1 %984, label %985, label %1025

985:                                              ; preds = %981
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %986

986:                                              ; preds = %1021, %985
  %987 = load i32, ptr %30, align 4, !tbaa !9
  %988 = sext i32 %987 to i64
  %989 = load ptr, ptr %17, align 8, !tbaa !5
  %990 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %989, i32 0, i32 6
  %991 = load i64, ptr %990, align 8, !tbaa !11
  %992 = icmp slt i64 %988, %991
  br i1 %992, label %993, label %1024

993:                                              ; preds = %986
  %994 = load ptr, ptr %17, align 8, !tbaa !5
  %995 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %994, i32 0, i32 5
  %996 = load ptr, ptr %995, align 8, !tbaa !14
  %997 = load i32, ptr %30, align 4, !tbaa !9
  %998 = load ptr, ptr %17, align 8, !tbaa !5
  %999 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %998, i32 0, i32 2
  %1000 = load i32, ptr %999, align 8, !tbaa !15
  %1001 = ashr i32 %997, %1000
  %1002 = sext i32 %1001 to i64
  %1003 = getelementptr inbounds ptr, ptr %996, i64 %1002
  %1004 = load ptr, ptr %1003, align 8, !tbaa !5
  %1005 = load i32, ptr %30, align 4, !tbaa !9
  %1006 = load ptr, ptr %17, align 8, !tbaa !5
  %1007 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1006, i32 0, i32 3
  %1008 = load i32, ptr %1007, align 4, !tbaa !16
  %1009 = and i32 %1005, %1008
  %1010 = load ptr, ptr %17, align 8, !tbaa !5
  %1011 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1010, i32 0, i32 0
  %1012 = load i32, ptr %1011, align 8, !tbaa !17
  %1013 = mul nsw i32 %1009, %1012
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds i8, ptr %1004, i64 %1014
  store ptr %1015, ptr %23, align 8, !tbaa !5
  %1016 = getelementptr inbounds %class.tetgenmesh, ptr %48, i32 0, i32 5
  %1017 = load ptr, ptr %1016, align 8, !tbaa !46
  %1018 = load ptr, ptr %23, align 8, !tbaa !5
  %1019 = getelementptr inbounds %"class.tetgenmesh::face", ptr %1018, i32 0, i32 0
  %1020 = load ptr, ptr %1019, align 8, !tbaa !18
  call void @_ZN10tetgenmesh16shellfacedeallocEPNS_10memorypoolEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %48, ptr noundef %1017, ptr noundef %1020)
  br label %1021

1021:                                             ; preds = %993
  %1022 = load i32, ptr %30, align 4, !tbaa !9
  %1023 = add nsw i32 %1022, 1
  store i32 %1023, ptr %30, align 4, !tbaa !9
  br label %986, !llvm.loop !59

1024:                                             ; preds = %986
  br label %1025

1025:                                             ; preds = %1024, %981
  br label %1026

1026:                                             ; preds = %1025
  %1027 = load i32, ptr %31, align 4, !tbaa !9
  %1028 = add nsw i32 %1027, 1
  store i32 %1028, ptr %31, align 4, !tbaa !9
  br label %971, !llvm.loop !60

1029:                                             ; preds = %971
  %1030 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1030)
  %1031 = load ptr, ptr %11, align 8, !tbaa !5
  %1032 = icmp ne ptr %1031, null
  br i1 %1032, label %1033, label %1035

1033:                                             ; preds = %1029
  %1034 = load ptr, ptr %11, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1034)
  br label %1035

1035:                                             ; preds = %1033, %1029
  %1036 = load i8, ptr %28, align 1, !tbaa !25, !range !27, !noundef !28
  %1037 = trunc i8 %1036 to i1
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  ret i1 %1037
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !13, i64 32}
!12 = !{!"_ZTSN10tetgenmesh9arraypoolE", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !6, i64 24, !13, i64 32, !13, i64 40}
!13 = !{!"long", !7, i64 0}
!14 = !{!12, !6, i64 24}
!15 = !{!12, !10, i64 8}
!16 = !{!12, !10, i64 12}
!17 = !{!12, !10, i64 0}
!18 = !{!19, !6, i64 0}
!19 = !{!"_ZTSN10tetgenmesh4faceE", !6, i64 0, !10, i64 8}
!20 = !{!21, !6, i64 0}
!21 = !{!"_ZTSN10tetgenmesh7trifaceE", !6, i64 0, !10, i64 8}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = distinct !{!24, !23}
!25 = !{!26, !26, i64 0}
!26 = !{!"bool", !7, i64 0}
!27 = !{i8 0, i8 2}
!28 = !{}
!29 = !{!21, !10, i64 8}
!30 = !{!31, !31, i64 0}
!31 = !{!"double", !7, i64 0}
!32 = distinct !{!32, !23}
!33 = distinct !{!33, !23}
!34 = distinct !{!34, !23}
!35 = !{!36, !6, i64 280}
!36 = !{!"_ZTS10tetgenmesh", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !21, i64 288, !19, i64 304, !6, i64 320, !10, i64 328, !10, i64 332, !10, i64 336, !10, i64 340, !10, i64 344, !10, i64 348, !10, i64 352, !10, i64 356, !10, i64 360, !10, i64 364, !10, i64 368, !10, i64 372, !10, i64 376, !10, i64 380, !10, i64 384, !10, i64 388, !10, i64 392, !10, i64 396, !10, i64 400, !13, i64 408, !13, i64 416, !31, i64 424, !31, i64 432, !31, i64 440, !31, i64 448, !31, i64 456, !31, i64 464, !31, i64 472, !31, i64 480, !31, i64 488, !31, i64 496, !31, i64 504, !31, i64 512, !31, i64 520, !31, i64 528, !31, i64 536, !13, i64 544, !13, i64 552, !13, i64 560, !13, i64 568, !13, i64 576, !13, i64 584, !13, i64 592, !13, i64 600, !13, i64 608, !13, i64 616, !13, i64 624, !13, i64 632, !13, i64 640, !13, i64 648, !13, i64 656, !13, i64 664, !13, i64 672, !13, i64 680, !13, i64 688, !13, i64 696, !13, i64 704, !13, i64 712, !13, i64 720, !13, i64 728, !7, i64 736, !7, i64 1504}
!37 = distinct !{!37, !23}
!38 = distinct !{!38, !23}
!39 = distinct !{!39, !23}
!40 = distinct !{!40, !23}
!41 = distinct !{!41, !23}
!42 = !{!36, !6, i64 16}
!43 = !{!44, !10, i64 148}
!44 = !{!"_ZTS14tetgenbehavior", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !31, i64 240, !31, i64 248, !31, i64 256, !31, i64 264, !31, i64 272, !31, i64 280, !31, i64 288, !31, i64 296, !31, i64 304, !31, i64 312, !31, i64 320, !31, i64 328, !7, i64 336, !7, i64 1360, !7, i64 2384, !7, i64 3408, !7, i64 4432, !45, i64 5456}
!45 = !{!"_ZTSN14tetgenbehavior10objecttypeE", !7, i64 0}
!46 = !{!36, !6, i64 40}
!47 = !{!36, !10, i64 388}
!48 = !{!36, !10, i64 400}
!49 = distinct !{!49, !23}
!50 = !{!19, !10, i64 8}
!51 = distinct !{!51, !23}
!52 = !{!36, !6, i64 48}
!53 = distinct !{!53, !23}
!54 = distinct !{!54, !23}
!55 = distinct !{!55, !23}
!56 = distinct !{!56, !23}
!57 = distinct !{!57, !23}
!58 = distinct !{!58, !23}
!59 = distinct !{!59, !23}
!60 = distinct !{!60, !23}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.tetgenmesh::triface" = type <{ ptr, i32, [4 x i8] }>
%"class.tetgenmesh::face" = type <{ ptr, i32, [4 x i8] }>

@_ZN10tetgenmesh7fsymtblE = external dso_local local_unnamed_addr global [12 x [12 x i32]], align 16
@_ZN10tetgenmesh10facepivot1E = external dso_local local_unnamed_addr global [12 x i32], align 16
@_ZN10tetgenmesh10facepivot2E = external dso_local local_unnamed_addr global [12 x [12 x i32]], align 16
@.str.388 = external hidden unnamed_addr constant [34 x i8], align 1

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z15terminatetetgenP10tetgenmeshi(ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #2

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh16shellfacedeallocEPNS_10memorypoolEPPPd(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef, ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh13makeshellfaceEPNS_10memorypoolEPNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef, ptr noundef) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh12setareaboundERNS_4faceEd(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), double noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh12setshellmarkERNS_4faceEi(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh13setfacetindexERNS_4faceEi(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef, ptr noundef) local_unnamed_addr #5 align 2

declare noundef double @_Z8orient3dPdS_S_S_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN10tetgenmesh13tri_edge_testEPdS0_S0_S0_S0_S0_iPiS1_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10tetgenmesh9shellmarkERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh9tsspivot1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12)) unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh13eprevesymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef, ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN10tetgenmesh10marktestedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZN10tetgenmesh12randomnationEj(ptr noundef nonnull align 8 dereferenceable(1536), i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh10tsdissolveERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN10tetgenmesh10facemarkedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh8markfaceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh10unmarkfaceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh7setsorgERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh8setsdestERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh8setsapexERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh6sbond1ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh6ssbondERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh10ssdissolveERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN10tetgenmesh9areaboundERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10tetgenmesh13getfacetindexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh5sbondERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN10tetgenmesh11pmarktestedEPd(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh12tssdissolve1ERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN10tetgenmesh10fillcavityEPNS_9arraypoolES1_S1_S1_S1_S1_PNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, ptr nocapture noundef readonly %6, ptr noundef %7) local_unnamed_addr #4 align 2 {
  %9 = alloca %"class.tetgenmesh::triface", align 8
  %10 = alloca %"class.tetgenmesh::triface", align 8
  %11 = alloca ptr, align 8
  %12 = alloca %"class.tetgenmesh::triface", align 8
  %13 = alloca %"class.tetgenmesh::triface", align 8
  %14 = alloca %"class.tetgenmesh::face", align 8
  %15 = alloca %"class.tetgenmesh::triface", align 8
  %16 = alloca %"class.tetgenmesh::triface", align 8
  %17 = alloca %"class.tetgenmesh::triface", align 8
  %18 = alloca [2 x i32], align 4
  %19 = alloca [4 x i32], align 16
  %20 = alloca %"class.tetgenmesh::face", align 8
  %21 = alloca %"class.tetgenmesh::face", align 8
  %22 = alloca %"class.tetgenmesh::face", align 8
  %23 = alloca %"class.tetgenmesh::face", align 8
  %24 = alloca %"class.tetgenmesh::face", align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #7
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #7
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #7
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #7
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %13)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #7
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %14)
  %.not248 = icmp eq ptr %1, null
  br i1 %.not248, label %.loopexit257, label %.preheader256

.preheader256:                                    ; preds = %8
  %25 = getelementptr inbounds i8, ptr %1, i64 32
  %26 = load i64, ptr %25, align 8, !tbaa !5
  %27 = icmp sgt i64 %26, 0
  br i1 %27, label %.lr.ph, label %.loopexit257

.lr.ph:                                           ; preds = %.preheader256
  %28 = getelementptr inbounds i8, ptr %1, i64 24
  %29 = getelementptr inbounds i8, ptr %1, i64 8
  %30 = getelementptr inbounds i8, ptr %1, i64 12
  br label %31

31:                                               ; preds = %.lr.ph, %31
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %31 ]
  %32 = load ptr, ptr %28, align 8, !tbaa !12
  %33 = load i32, ptr %29, align 8, !tbaa !13
  %34 = trunc nuw nsw i64 %indvars.iv to i32
  %35 = lshr i32 %34, %33
  %36 = zext nneg i32 %35 to i64
  %37 = getelementptr inbounds ptr, ptr %32, i64 %36
  %38 = load ptr, ptr %37, align 8, !tbaa !14
  %39 = load i32, ptr %30, align 4, !tbaa !15
  %40 = and i32 %39, %34
  %41 = load i32, ptr %1, align 8, !tbaa !16
  %42 = mul nsw i32 %40, %41
  %43 = sext i32 %42 to i64
  %44 = getelementptr inbounds i8, ptr %38, i64 %43
  %45 = load ptr, ptr %44, align 8, !tbaa !17
  %46 = load ptr, ptr %45, align 8, !tbaa !14
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %46, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %47 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %48 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %49 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %44, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh10tsdissolveERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %50 = load ptr, ptr %10, align 8, !tbaa !19
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %47, ptr noundef %50)
  %51 = load ptr, ptr %10, align 8, !tbaa !19
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %48, ptr noundef %51)
  %52 = load ptr, ptr %10, align 8, !tbaa !19
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %49, ptr noundef %52)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %53 = load i64, ptr %25, align 8, !tbaa !5
  %54 = icmp sgt i64 %53, %indvars.iv.next
  br i1 %54, label %31, label %.loopexit257, !llvm.loop !21

.loopexit257:                                     ; preds = %31, %.preheader256, %8
  %.not248.1 = icmp eq ptr %2, null
  br i1 %.not248.1, label %.loopexit257.1, label %.preheader256.1

.preheader256.1:                                  ; preds = %.loopexit257
  %55 = getelementptr inbounds i8, ptr %2, i64 32
  %56 = load i64, ptr %55, align 8, !tbaa !5
  %57 = icmp sgt i64 %56, 0
  br i1 %57, label %.lr.ph.1, label %.loopexit257.1

.lr.ph.1:                                         ; preds = %.preheader256.1
  %58 = getelementptr inbounds i8, ptr %2, i64 24
  %59 = getelementptr inbounds i8, ptr %2, i64 8
  %60 = getelementptr inbounds i8, ptr %2, i64 12
  br label %61

61:                                               ; preds = %61, %.lr.ph.1
  %indvars.iv.1 = phi i64 [ 0, %.lr.ph.1 ], [ %indvars.iv.next.1, %61 ]
  %62 = load ptr, ptr %58, align 8, !tbaa !12
  %63 = load i32, ptr %59, align 8, !tbaa !13
  %64 = trunc nuw nsw i64 %indvars.iv.1 to i32
  %65 = lshr i32 %64, %63
  %66 = zext nneg i32 %65 to i64
  %67 = getelementptr inbounds ptr, ptr %62, i64 %66
  %68 = load ptr, ptr %67, align 8, !tbaa !14
  %69 = load i32, ptr %60, align 4, !tbaa !15
  %70 = and i32 %69, %64
  %71 = load i32, ptr %2, align 8, !tbaa !16
  %72 = mul nsw i32 %70, %71
  %73 = sext i32 %72 to i64
  %74 = getelementptr inbounds i8, ptr %68, i64 %73
  %75 = load ptr, ptr %74, align 8, !tbaa !17
  %76 = load ptr, ptr %75, align 8, !tbaa !14
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %76, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %77 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %78 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %79 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %74, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh10tsdissolveERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %80 = load ptr, ptr %10, align 8, !tbaa !19
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %77, ptr noundef %80)
  %81 = load ptr, ptr %10, align 8, !tbaa !19
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %78, ptr noundef %81)
  %82 = load ptr, ptr %10, align 8, !tbaa !19
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %79, ptr noundef %82)
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv.1, 1
  %83 = load i64, ptr %55, align 8, !tbaa !5
  %84 = icmp sgt i64 %83, %indvars.iv.next.1
  br i1 %84, label %61, label %.loopexit257.1, !llvm.loop !21

.loopexit257.1:                                   ; preds = %61, %.preheader256.1, %.loopexit257
  %.not = icmp eq ptr %7, null
  br i1 %.not, label %559, label %85

85:                                               ; preds = %.loopexit257.1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #7
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %15)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #7
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %16)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #7
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %17)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #7
  %86 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %87 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %88 = getelementptr inbounds i8, ptr %5, i64 32
  %89 = load i64, ptr %88, align 8, !tbaa !5
  %90 = icmp slt i64 %89, 1
  br i1 %90, label %._crit_edge279.thread381, label %.lr.ph278

.lr.ph278:                                        ; preds = %85
  %91 = getelementptr inbounds i8, ptr %5, i64 24
  %92 = getelementptr inbounds i8, ptr %5, i64 8
  %93 = getelementptr inbounds i8, ptr %5, i64 12
  %94 = getelementptr inbounds i8, ptr %12, i64 8
  %95 = getelementptr inbounds i8, ptr %15, i64 8
  %96 = getelementptr inbounds i8, ptr %6, i64 32
  %97 = getelementptr inbounds i8, ptr %6, i64 24
  %98 = getelementptr inbounds i8, ptr %6, i64 8
  %99 = getelementptr inbounds i8, ptr %6, i64 12
  %100 = getelementptr inbounds i8, ptr %10, i64 8
  br label %101

101:                                              ; preds = %.lr.ph278, %._crit_edge
  %indvars.iv347 = phi i64 [ 0, %.lr.ph278 ], [ %indvars.iv.next348, %._crit_edge ]
  %102 = load ptr, ptr %91, align 8, !tbaa !12
  %103 = load i32, ptr %92, align 8, !tbaa !13
  %104 = trunc nuw nsw i64 %indvars.iv347 to i32
  %105 = lshr i32 %104, %103
  %106 = zext nneg i32 %105 to i64
  %107 = getelementptr inbounds ptr, ptr %102, i64 %106
  %108 = load ptr, ptr %107, align 8, !tbaa !14
  %109 = load i32, ptr %93, align 4, !tbaa !15
  %110 = and i32 %109, %104
  %111 = load i32, ptr %5, align 8, !tbaa !16
  %112 = mul nsw i32 %110, %111
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds i8, ptr %108, i64 %113
  %115 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %114)
  store i32 0, ptr %94, align 8, !tbaa !23
  br label %.lr.ph273

.lr.ph273:                                        ; preds = %101, %.loopexit255
  %116 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %117 = call noundef zeroext i1 @_ZN10tetgenmesh11pmarktestedEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %116)
  br i1 %117, label %118, label %.loopexit255

118:                                              ; preds = %.lr.ph273
  %119 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %120 = call noundef zeroext i1 @_ZN10tetgenmesh11pmarktestedEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %119)
  br i1 %120, label %121, label %.loopexit255

121:                                              ; preds = %118
  %122 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %123 = call noundef zeroext i1 @_ZN10tetgenmesh11pmarktestedEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %122)
  br i1 %123, label %124, label %.loopexit255

124:                                              ; preds = %121
  %125 = call noundef i32 @_ZN10tetgenmesh13tri_edge_testEPdS0_S0_S0_S0_S0_iPiS1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %116, ptr noundef %119, ptr noundef %122, ptr noundef %86, ptr noundef %87, ptr noundef null, i32 noundef 1, ptr noundef nonnull %18, ptr noundef nonnull %19)
  %126 = icmp eq i32 %125, 2
  br i1 %126, label %127, label %.loopexit255

127:                                              ; preds = %124
  %128 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %129 = call noundef double @_Z8orient3dPdS_S_S_(ptr noundef %116, ptr noundef %119, ptr noundef %122, ptr noundef %86)
  %130 = fcmp olt double %129, 0.000000e+00
  br i1 %130, label %131, label %145

131:                                              ; preds = %127
  %132 = load i32, ptr %95, align 8, !tbaa !23
  %133 = load ptr, ptr %15, align 8, !tbaa !19
  %134 = and i32 %132, 3
  %135 = zext nneg i32 %134 to i64
  %136 = getelementptr inbounds ptr, ptr %133, i64 %135
  %137 = load ptr, ptr %136, align 8, !tbaa !14
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %137, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %138 = sext i32 %132 to i64
  %139 = load i32, ptr %95, align 8, !tbaa !23
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %138, i64 %140
  %142 = load i32, ptr %141, align 4, !tbaa !24
  store i32 %142, ptr %95, align 8, !tbaa !23
  %143 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %144 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15)
  br label %148

145:                                              ; preds = %127
  %146 = fcmp oeq double %129, 0.000000e+00
  br i1 %146, label %147, label %148

147:                                              ; preds = %145
  call void @_Z15terminatetetgenP10tetgenmeshi(ptr noundef nonnull %0, i32 noundef 2)
  br label %148

148:                                              ; preds = %145, %147, %131
  %.0224 = phi ptr [ %143, %131 ], [ %116, %147 ], [ %116, %145 ]
  %.0223 = phi ptr [ %144, %131 ], [ %119, %147 ], [ %119, %145 ]
  %149 = load i64, ptr %96, align 8, !tbaa !5
  %150 = icmp sgt i64 %149, 0
  br i1 %150, label %.lr.ph271, label %.loopexit255

.lr.ph271:                                        ; preds = %148, %201
  %indvars.iv344 = phi i64 [ %indvars.iv.next345, %201 ], [ 0, %148 ]
  %151 = load ptr, ptr %97, align 8, !tbaa !12
  %152 = load i32, ptr %98, align 8, !tbaa !13
  %153 = trunc nuw nsw i64 %indvars.iv344 to i32
  %154 = lshr i32 %153, %152
  %155 = zext nneg i32 %154 to i64
  %156 = getelementptr inbounds ptr, ptr %151, i64 %155
  %157 = load ptr, ptr %156, align 8, !tbaa !14
  %158 = load i32, ptr %99, align 4, !tbaa !15
  %159 = and i32 %158, %153
  %160 = load i32, ptr %6, align 8, !tbaa !16
  %161 = mul nsw i32 %159, %160
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds i8, ptr %157, i64 %162
  %164 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %163)
  %165 = load ptr, ptr %10, align 8, !tbaa !19
  %166 = getelementptr inbounds i8, ptr %165, i64 32
  %167 = load ptr, ptr %166, align 8, !tbaa !14
  %168 = icmp eq ptr %167, %.0223
  br i1 %168, label %181, label %169

169:                                              ; preds = %.lr.ph271
  %170 = getelementptr inbounds i8, ptr %165, i64 40
  %171 = load ptr, ptr %170, align 8, !tbaa !14
  %172 = icmp eq ptr %171, %.0223
  br i1 %172, label %181, label %173

173:                                              ; preds = %169
  %174 = getelementptr inbounds i8, ptr %165, i64 48
  %175 = load ptr, ptr %174, align 8, !tbaa !14
  %176 = icmp eq ptr %175, %.0223
  br i1 %176, label %181, label %177

177:                                              ; preds = %173
  %178 = getelementptr inbounds i8, ptr %165, i64 56
  %179 = load ptr, ptr %178, align 8, !tbaa !14
  %180 = icmp eq ptr %179, %.0223
  br i1 %180, label %181, label %201

181:                                              ; preds = %177, %173, %169, %.lr.ph271
  %.sink = phi i32 [ 11, %.lr.ph271 ], [ 3, %169 ], [ 7, %173 ], [ 0, %177 ]
  store i32 %.sink, ptr %100, align 8, !tbaa !23
  %182 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %183 = icmp eq ptr %182, %.0224
  br i1 %183, label %192, label %184

184:                                              ; preds = %181
  %185 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %186 = icmp eq ptr %185, %.0224
  br i1 %186, label %187, label %188

187:                                              ; preds = %184
  call void @_ZN10tetgenmesh13eprevesymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  br label %192

188:                                              ; preds = %184
  %189 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %190 = icmp eq ptr %189, %.0224
  br i1 %190, label %191, label %201

191:                                              ; preds = %188
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  br label %192

192:                                              ; preds = %187, %191, %181
  %193 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %194 = icmp eq ptr %193, %122
  br i1 %194, label %.loopexit255.thread, label %201

.loopexit255.thread:                              ; preds = %192
  %195 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %196 = load i32, ptr %94, align 8, !tbaa !23
  %197 = add nsw i32 %196, 1
  store i32 %197, ptr %94, align 8, !tbaa !23
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %16)
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15)
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16)
  call void @_ZN10tetgenmesh8markfaceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %198 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %3, ptr noundef nonnull %11)
  %199 = load ptr, ptr %11, align 8, !tbaa !14
  %200 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %199, ptr noundef nonnull align 8 dereferenceable(12) %15)
  br label %231

201:                                              ; preds = %192, %188, %177
  %indvars.iv.next345 = add nuw nsw i64 %indvars.iv344, 1
  %202 = load i64, ptr %96, align 8, !tbaa !5
  %203 = icmp sgt i64 %202, %indvars.iv.next345
  br i1 %203, label %.lr.ph271, label %.loopexit255, !llvm.loop !25

.loopexit255:                                     ; preds = %201, %148, %.lr.ph273, %121, %124, %118
  %204 = load i32, ptr %94, align 8, !tbaa !23
  %205 = add nsw i32 %204, 1
  store i32 %205, ptr %94, align 8, !tbaa !23
  %206 = icmp sgt i32 %204, 2
  br i1 %206, label %._crit_edge, label %.lr.ph273, !llvm.loop !26

._crit_edge:                                      ; preds = %.loopexit255
  %indvars.iv.next348 = add nuw nsw i64 %indvars.iv347, 1
  %207 = load i64, ptr %88, align 8, !tbaa !5
  %.not404 = icmp sgt i64 %207, %indvars.iv.next348
  br i1 %.not404, label %101, label %._crit_edge279.thread381, !llvm.loop !27

._crit_edge279.thread381:                         ; preds = %._crit_edge, %85
  store ptr null, ptr %15, align 8, !tbaa !19
  %208 = getelementptr inbounds i8, ptr %4, i64 32
  %209 = load i64, ptr %208, align 8, !tbaa !5
  %210 = trunc i64 %209 to i32
  %211 = add i32 %210, -1
  %212 = call noundef i64 @_ZN10tetgenmesh12randomnationEj(ptr noundef nonnull align 8 dereferenceable(1536) %0, i32 noundef %211)
  %213 = trunc i64 %212 to i32
  %214 = getelementptr inbounds i8, ptr %4, i64 24
  %215 = load ptr, ptr %214, align 8, !tbaa !12
  %216 = getelementptr inbounds i8, ptr %4, i64 8
  %217 = load i32, ptr %216, align 8, !tbaa !13
  %218 = ashr i32 %213, %217
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds ptr, ptr %215, i64 %219
  %221 = load ptr, ptr %220, align 8, !tbaa !14
  %222 = getelementptr inbounds i8, ptr %4, i64 12
  %223 = load i32, ptr %222, align 4, !tbaa !15
  %224 = and i32 %223, %213
  %225 = load i32, ptr %4, align 8, !tbaa !16
  %226 = mul nsw i32 %224, %225
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds i8, ptr %221, i64 %227
  %229 = getelementptr inbounds i8, ptr %0, i64 304
  %230 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %229, ptr noundef nonnull align 8 dereferenceable(12) %228)
  br label %231

231:                                              ; preds = %._crit_edge279.thread381, %.loopexit255.thread
  %.0215.lcssa379 = phi i8 [ 0, %._crit_edge279.thread381 ], [ 1, %.loopexit255.thread ]
  %232 = getelementptr inbounds i8, ptr %3, i64 32
  %233 = load i64, ptr %232, align 8, !tbaa !5
  %234 = icmp sgt i64 %233, 0
  %235 = trunc nuw i8 %.0215.lcssa379 to i1
  %236 = select i1 %234, i1 %235, i1 false
  br i1 %236, label %.lr.ph294, label %._crit_edge295

.lr.ph294:                                        ; preds = %231
  %237 = getelementptr inbounds i8, ptr %3, i64 24
  %238 = getelementptr inbounds i8, ptr %3, i64 8
  %239 = getelementptr inbounds i8, ptr %3, i64 12
  %240 = getelementptr inbounds i8, ptr %0, i64 280
  %241 = getelementptr inbounds i8, ptr %15, i64 8
  %242 = getelementptr inbounds i8, ptr %16, i64 8
  br label %243

243:                                              ; preds = %.lr.ph294, %._crit_edge289
  %indvars.iv349 = phi i64 [ 0, %.lr.ph294 ], [ %indvars.iv.next350, %._crit_edge289 ]
  %.3218291 = phi i8 [ %.0215.lcssa379, %.lr.ph294 ], [ %.6221, %._crit_edge289 ]
  %244 = load ptr, ptr %237, align 8, !tbaa !12
  %245 = load i32, ptr %238, align 8, !tbaa !13
  %246 = trunc nuw nsw i64 %indvars.iv349 to i32
  %247 = lshr i32 %246, %245
  %248 = zext nneg i32 %247 to i64
  %249 = getelementptr inbounds ptr, ptr %244, i64 %248
  %250 = load ptr, ptr %249, align 8, !tbaa !14
  %251 = load i32, ptr %239, align 4, !tbaa !15
  %252 = and i32 %251, %246
  %253 = load i32, ptr %3, align 8, !tbaa !16
  %254 = mul nsw i32 %252, %253
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds i8, ptr %250, i64 %255
  %257 = trunc nuw i8 %.3218291 to i1
  br i1 %257, label %.lr.ph288, label %._crit_edge295.thread

.lr.ph288:                                        ; preds = %243, %.loopexit254
  %.2207286 = phi i32 [ %334, %.loopexit254 ], [ 0, %243 ]
  %.4219285 = phi i8 [ %.6221, %.loopexit254 ], [ %.3218291, %243 ]
  %258 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %256)
  br label %259

259:                                              ; preds = %266, %.lr.ph288
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %260 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %261 = call noundef zeroext i1 @_ZN10tetgenmesh11pmarktestedEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %260)
  br i1 %261, label %.critedge, label %262

262:                                              ; preds = %259
  %263 = load ptr, ptr %240, align 8, !tbaa !28
  %264 = icmp eq ptr %260, %263
  br i1 %264, label %265, label %266

265:                                              ; preds = %262
  call void @_Z15terminatetetgenP10tetgenmeshi(ptr noundef nonnull %0, i32 noundef 2)
  br label %.critedge

266:                                              ; preds = %262
  %267 = load i32, ptr %241, align 8, !tbaa !23
  %268 = load ptr, ptr %15, align 8, !tbaa !19
  %269 = and i32 %267, 3
  %270 = zext nneg i32 %269 to i64
  %271 = getelementptr inbounds ptr, ptr %268, i64 %270
  %272 = load ptr, ptr %271, align 8, !tbaa !14
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %272, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %273 = sext i32 %267 to i64
  %274 = load i32, ptr %241, align 8, !tbaa !23
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %273, i64 %275
  %277 = load i32, ptr %276, align 4, !tbaa !24
  store i32 %277, ptr %241, align 8, !tbaa !23
  %278 = call noundef zeroext i1 @_ZN10tetgenmesh10marktestedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15)
  br i1 %278, label %259, label %.loopexit254, !llvm.loop !31

.critedge:                                        ; preds = %259, %265
  %279 = call noundef zeroext i1 @_ZN10tetgenmesh10facemarkedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15)
  br i1 %279, label %.loopexit254, label %280

280:                                              ; preds = %.critedge
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %256, ptr noundef nonnull align 8 dereferenceable(12) %16)
  %281 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %17, ptr noundef nonnull align 8 dereferenceable(12) %16)
  br label %282

282:                                              ; preds = %285, %280
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16)
  %283 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16)
  %284 = icmp eq ptr %283, %260
  br i1 %284, label %300, label %285

285:                                              ; preds = %282
  %286 = load i32, ptr %242, align 8, !tbaa !23
  %287 = load ptr, ptr %16, align 8, !tbaa !19
  %288 = and i32 %286, 3
  %289 = zext nneg i32 %288 to i64
  %290 = getelementptr inbounds ptr, ptr %287, i64 %289
  %291 = load ptr, ptr %290, align 8, !tbaa !14
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %291, ptr noundef nonnull align 8 dereferenceable(12) %16)
  %292 = sext i32 %286 to i64
  %293 = load i32, ptr %242, align 8, !tbaa !23
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %292, i64 %294
  %296 = load i32, ptr %295, align 4, !tbaa !24
  store i32 %296, ptr %242, align 8, !tbaa !23
  %297 = load ptr, ptr %16, align 8, !tbaa !19
  %298 = load ptr, ptr %17, align 8, !tbaa !19
  %299 = icmp eq ptr %297, %298
  br i1 %299, label %.thread, label %282, !llvm.loop !32

300:                                              ; preds = %282
  %301 = trunc nuw i8 %.4219285 to i1
  br i1 %301, label %302, label %.thread

302:                                              ; preds = %300
  %303 = call noundef zeroext i1 @_ZN10tetgenmesh10marktestedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16)
  br i1 %303, label %304, label %308

304:                                              ; preds = %302
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %16)
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15)
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16)
  call void @_ZN10tetgenmesh8markfaceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %305 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %3, ptr noundef nonnull %11)
  %306 = load ptr, ptr %11, align 8, !tbaa !14
  %307 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %306, ptr noundef nonnull align 8 dereferenceable(12) %15)
  br label %.loopexit254

308:                                              ; preds = %302
  call void @_Z15terminatetetgenP10tetgenmeshi(ptr noundef nonnull %0, i32 noundef 2)
  br label %.loopexit254

.thread:                                          ; preds = %285, %300
  %.5220250 = phi i8 [ %.4219285, %300 ], [ 0, %285 ]
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %256, ptr noundef nonnull align 8 dereferenceable(12) %16)
  %309 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %17, ptr noundef nonnull align 8 dereferenceable(12) %16)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16)
  %310 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16)
  %311 = call noundef zeroext i1 @_ZN10tetgenmesh11pmarktestedEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %310)
  br i1 %311, label %._crit_edge283, label %.lr.ph282

._crit_edge283:                                   ; preds = %.lr.ph282, %.thread
  %.lcssa262 = phi ptr [ %310, %.thread ], [ %332, %.lr.ph282 ]
  %312 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %313 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %314 = call noundef double @_Z8orient3dPdS_S_S_(ptr noundef %312, ptr noundef %260, ptr noundef %313, ptr noundef %.lcssa262)
  %315 = fcmp olt double %314, 0.000000e+00
  br i1 %315, label %316, label %317

316:                                              ; preds = %._crit_edge283
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15)
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16)
  br label %.loopexit254

317:                                              ; preds = %._crit_edge283
  %318 = fcmp ogt double %314, 0.000000e+00
  br i1 %318, label %319, label %320

319:                                              ; preds = %317
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15)
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16)
  br label %.loopexit254

320:                                              ; preds = %317
  call void @_Z15terminatetetgenP10tetgenmeshi(ptr noundef nonnull %0, i32 noundef 2)
  br label %.loopexit254

.lr.ph282:                                        ; preds = %.thread, %.lr.ph282
  %321 = load i32, ptr %242, align 8, !tbaa !23
  %322 = load ptr, ptr %16, align 8, !tbaa !19
  %323 = and i32 %321, 3
  %324 = zext nneg i32 %323 to i64
  %325 = getelementptr inbounds ptr, ptr %322, i64 %324
  %326 = load ptr, ptr %325, align 8, !tbaa !14
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %326, ptr noundef nonnull align 8 dereferenceable(12) %16)
  %327 = sext i32 %321 to i64
  %328 = load i32, ptr %242, align 8, !tbaa !23
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %327, i64 %329
  %331 = load i32, ptr %330, align 4, !tbaa !24
  store i32 %331, ptr %242, align 8, !tbaa !23
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16)
  %332 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16)
  %333 = call noundef zeroext i1 @_ZN10tetgenmesh11pmarktestedEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %332)
  br i1 %333, label %._crit_edge283, label %.lr.ph282, !llvm.loop !33

.loopexit254:                                     ; preds = %266, %.critedge, %319, %320, %316, %304, %308
  %.6221 = phi i8 [ %.4219285, %.critedge ], [ %.4219285, %304 ], [ %.4219285, %308 ], [ %.5220250, %316 ], [ %.5220250, %319 ], [ %.5220250, %320 ], [ %.4219285, %266 ]
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %256)
  %334 = add nuw nsw i32 %.2207286, 1
  %335 = icmp ult i32 %.2207286, 2
  %336 = trunc nuw i8 %.6221 to i1
  %337 = select i1 %335, i1 %336, i1 false
  br i1 %337, label %.lr.ph288, label %._crit_edge289, !llvm.loop !34

._crit_edge289:                                   ; preds = %.loopexit254
  %.pre = load i64, ptr %232, align 8, !tbaa !5
  %indvars.iv.next350 = add nuw nsw i64 %indvars.iv349, 1
  %338 = icmp sgt i64 %.pre, %indvars.iv.next350
  %339 = select i1 %338, i1 %336, i1 false
  br i1 %339, label %243, label %._crit_edge295, !llvm.loop !35

._crit_edge295:                                   ; preds = %._crit_edge289, %231
  %.lcssa264 = phi i64 [ %233, %231 ], [ %.pre, %._crit_edge289 ]
  %.lcssa263 = phi i1 [ %235, %231 ], [ %336, %._crit_edge289 ]
  br i1 %.lcssa263, label %340, label %._crit_edge295.thread

340:                                              ; preds = %._crit_edge295
  %341 = getelementptr inbounds i8, ptr %0, i64 16
  %342 = load ptr, ptr %341, align 8, !tbaa !36
  %343 = getelementptr inbounds i8, ptr %342, i64 148
  %344 = load i32, ptr %343, align 4, !tbaa !37
  %345 = icmp sgt i32 %344, 2
  br i1 %345, label %346, label %348

346:                                              ; preds = %340
  %347 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.388, i64 noundef %.lcssa264)
  br label %348

348:                                              ; preds = %346, %340
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #7
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %20)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #7
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %21)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #7
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %22)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #7
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %23)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #7
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %24)
  %349 = getelementptr inbounds i8, ptr %4, i64 24
  %350 = load ptr, ptr %349, align 8, !tbaa !12
  %351 = getelementptr inbounds i8, ptr %4, i64 8
  %352 = load ptr, ptr %350, align 8, !tbaa !14
  %353 = getelementptr inbounds i8, ptr %4, i64 12
  %354 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %20, ptr noundef nonnull align 8 dereferenceable(12) %352)
  %355 = load i64, ptr %232, align 8, !tbaa !5
  %356 = icmp sgt i64 %355, 0
  br i1 %356, label %.lr.ph318, label %.preheader251

.lr.ph318:                                        ; preds = %348
  %357 = getelementptr inbounds i8, ptr %3, i64 24
  %358 = getelementptr inbounds i8, ptr %3, i64 8
  %359 = getelementptr inbounds i8, ptr %3, i64 12
  %360 = getelementptr inbounds i8, ptr %0, i64 40
  %361 = getelementptr inbounds i8, ptr %0, i64 388
  %362 = getelementptr inbounds i8, ptr %0, i64 400
  br label %371

.preheader253:                                    ; preds = %397
  %363 = icmp sgt i64 %398, 0
  br i1 %363, label %.lr.ph328, label %.preheader251

.lr.ph328:                                        ; preds = %.preheader253
  %364 = getelementptr inbounds i8, ptr %3, i64 24
  %365 = getelementptr inbounds i8, ptr %3, i64 8
  %366 = getelementptr inbounds i8, ptr %3, i64 12
  %367 = getelementptr inbounds i8, ptr %12, i64 8
  %368 = getelementptr inbounds i8, ptr %14, i64 8
  %369 = getelementptr inbounds i8, ptr %17, i64 8
  %370 = getelementptr inbounds i8, ptr %0, i64 48
  br label %404

371:                                              ; preds = %.lr.ph318, %397
  %indvars.iv354 = phi i64 [ 0, %.lr.ph318 ], [ %indvars.iv.next355, %397 ]
  %372 = load ptr, ptr %357, align 8, !tbaa !12
  %373 = load i32, ptr %358, align 8, !tbaa !13
  %374 = trunc nuw nsw i64 %indvars.iv354 to i32
  %375 = lshr i32 %374, %373
  %376 = zext nneg i32 %375 to i64
  %377 = getelementptr inbounds ptr, ptr %372, i64 %376
  %378 = load ptr, ptr %377, align 8, !tbaa !14
  %379 = load i32, ptr %359, align 4, !tbaa !15
  %380 = and i32 %379, %374
  %381 = load i32, ptr %3, align 8, !tbaa !16
  %382 = mul nsw i32 %380, %381
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds i8, ptr %378, i64 %383
  call void @_ZN10tetgenmesh10unmarkfaceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %384)
  %385 = load ptr, ptr %360, align 8, !tbaa !40
  call void @_ZN10tetgenmesh13makeshellfaceEPNS_10memorypoolEPNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %385, ptr noundef nonnull %21)
  %386 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %384)
  call void @_ZN10tetgenmesh7setsorgERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %21, ptr noundef %386)
  %387 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %384)
  call void @_ZN10tetgenmesh8setsdestERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %21, ptr noundef %387)
  %388 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %384)
  call void @_ZN10tetgenmesh8setsapexERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %21, ptr noundef %388)
  %389 = call noundef i32 @_ZN10tetgenmesh9shellmarkERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %20)
  call void @_ZN10tetgenmesh12setshellmarkERNS_4faceEi(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %21, i32 noundef %389)
  %390 = load i32, ptr %361, align 4, !tbaa !41
  %.not243 = icmp eq i32 %390, 0
  br i1 %.not243, label %393, label %391

391:                                              ; preds = %371
  %392 = call noundef double @_ZN10tetgenmesh9areaboundERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %20)
  call void @_ZN10tetgenmesh12setareaboundERNS_4faceEd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %21, double noundef %392)
  br label %393

393:                                              ; preds = %391, %371
  %394 = load i32, ptr %362, align 8, !tbaa !42
  %.not244 = icmp eq i32 %394, 0
  br i1 %.not244, label %397, label %395

395:                                              ; preds = %393
  %396 = call noundef i32 @_ZN10tetgenmesh13getfacetindexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %20)
  call void @_ZN10tetgenmesh13setfacetindexERNS_4faceEi(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %21, i32 noundef %396)
  br label %397

397:                                              ; preds = %395, %393
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %384, ptr noundef nonnull align 8 dereferenceable(12) %21)
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %384, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %21)
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %21)
  %indvars.iv.next355 = add nuw nsw i64 %indvars.iv354, 1
  %398 = load i64, ptr %232, align 8, !tbaa !5
  %399 = icmp sgt i64 %398, %indvars.iv.next355
  br i1 %399, label %371, label %.preheader253, !llvm.loop !43

.preheader251:                                    ; preds = %481, %348, %.preheader253
  %400 = getelementptr inbounds i8, ptr %4, i64 32
  %401 = load i64, ptr %400, align 8, !tbaa !5
  %402 = icmp sgt i64 %401, 0
  br i1 %402, label %.lr.ph330, label %._crit_edge331

.lr.ph330:                                        ; preds = %.preheader251
  %403 = getelementptr inbounds i8, ptr %0, i64 40
  br label %484

404:                                              ; preds = %.lr.ph328, %481
  %indvars.iv357 = phi i64 [ 0, %.lr.ph328 ], [ %indvars.iv.next358, %481 ]
  %405 = load ptr, ptr %364, align 8, !tbaa !12
  %406 = load i32, ptr %365, align 8, !tbaa !13
  %407 = trunc nuw nsw i64 %indvars.iv357 to i32
  %408 = lshr i32 %407, %406
  %409 = zext nneg i32 %408 to i64
  %410 = getelementptr inbounds ptr, ptr %405, i64 %409
  %411 = load ptr, ptr %410, align 8, !tbaa !14
  %412 = load i32, ptr %366, align 4, !tbaa !15
  %413 = and i32 %412, %407
  %414 = load i32, ptr %3, align 8, !tbaa !16
  %415 = mul nsw i32 %413, %414
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds i8, ptr %411, i64 %416
  br label %418

418:                                              ; preds = %404, %479
  %.3208326 = phi i32 [ 0, %404 ], [ %480, %479 ]
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %417, ptr noundef nonnull align 8 dereferenceable(12) %21)
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %21, ptr noundef nonnull align 8 dereferenceable(12) %22)
  %419 = load ptr, ptr %22, align 8, !tbaa !17
  %420 = icmp eq ptr %419, null
  br i1 %420, label %421, label %479

421:                                              ; preds = %418
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %417, ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @_ZN10tetgenmesh9tsspivot1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %14)
  %422 = load ptr, ptr %14, align 8, !tbaa !17
  %.not236319 = icmp eq ptr %422, null
  br i1 %.not236319, label %.lr.ph321, label %._crit_edge322

._crit_edge322:                                   ; preds = %465, %421
  store i32 0, ptr %368, align 8, !tbaa !44
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %14, ptr noundef nonnull align 8 dereferenceable(12) %20)
  %423 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %14)
  br i1 %423, label %424, label %445

424:                                              ; preds = %._crit_edge322
  %425 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %17, ptr noundef nonnull align 8 dereferenceable(12) %12)
  br label %426

426:                                              ; preds = %426, %424
  call void @_ZN10tetgenmesh12tssdissolve1ERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %427 = load i32, ptr %369, align 8, !tbaa !23
  %428 = load ptr, ptr %17, align 8, !tbaa !19
  %429 = sext i32 %427 to i64
  %430 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %429
  %431 = load i32, ptr %430, align 4, !tbaa !24
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds ptr, ptr %428, i64 %432
  %434 = load ptr, ptr %433, align 8, !tbaa !14
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %434, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %435 = load i32, ptr %369, align 8, !tbaa !23
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %429, i64 %436
  %438 = load i32, ptr %437, align 4, !tbaa !24
  store i32 %438, ptr %369, align 8, !tbaa !23
  %439 = load ptr, ptr %17, align 8, !tbaa !19
  %440 = load ptr, ptr %12, align 8, !tbaa !19
  %441 = icmp eq ptr %439, %440
  br i1 %441, label %442, label %426, !llvm.loop !45

442:                                              ; preds = %426
  %443 = load ptr, ptr %370, align 8, !tbaa !46
  %444 = load ptr, ptr %14, align 8, !tbaa !17
  call void @_ZN10tetgenmesh16shellfacedeallocEPNS_10memorypoolEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %443, ptr noundef %444)
  call void @_ZN10tetgenmesh10ssdissolveERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %20)
  store ptr null, ptr %14, align 8, !tbaa !17
  br label %445

445:                                              ; preds = %442, %._crit_edge322
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %20, ptr noundef nonnull align 8 dereferenceable(12) %22)
  %446 = load ptr, ptr %22, align 8, !tbaa !17
  %.not238 = icmp eq ptr %446, null
  br i1 %.not238, label %460, label %447

447:                                              ; preds = %445
  %448 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %23, ptr noundef nonnull align 8 dereferenceable(12) %22)
  %449 = load ptr, ptr %14, align 8, !tbaa !17
  %.not239 = icmp eq ptr %449, null
  br i1 %.not239, label %.loopexit252, label %450

450:                                              ; preds = %447
  store i32 0, ptr %368, align 8, !tbaa !44
  %451 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %21)
  %452 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %14)
  %.not240 = icmp eq ptr %451, %452
  br i1 %.not240, label %454, label %453

453:                                              ; preds = %450
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %21)
  br label %454

454:                                              ; preds = %453, %450
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %23, ptr noundef nonnull align 8 dereferenceable(12) %24)
  %455 = load ptr, ptr %24, align 8, !tbaa !17
  %456 = load ptr, ptr %20, align 8, !tbaa !17
  %.not241323 = icmp eq ptr %455, %456
  br i1 %.not241323, label %.loopexit252, label %.lr.ph325

.lr.ph325:                                        ; preds = %454, %.lr.ph325
  %457 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %23, ptr noundef nonnull align 8 dereferenceable(12) %24)
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %23, ptr noundef nonnull align 8 dereferenceable(12) %24)
  %458 = load ptr, ptr %24, align 8, !tbaa !17
  %459 = load ptr, ptr %20, align 8, !tbaa !17
  %.not241 = icmp eq ptr %458, %459
  br i1 %.not241, label %.loopexit252, label %.lr.ph325, !llvm.loop !47

.loopexit252:                                     ; preds = %.lr.ph325, %454, %447
  call void @_ZN10tetgenmesh6sbond1ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %21, ptr noundef nonnull align 8 dereferenceable(12) %22)
  call void @_ZN10tetgenmesh6sbond1ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %23, ptr noundef nonnull align 8 dereferenceable(12) %21)
  br label %460

460:                                              ; preds = %.loopexit252, %445
  %461 = load ptr, ptr %14, align 8, !tbaa !17
  %.not242 = icmp eq ptr %461, null
  br i1 %.not242, label %479, label %462

462:                                              ; preds = %460
  call void @_ZN10tetgenmesh6ssbondERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %21, ptr noundef nonnull align 8 dereferenceable(12) %14)
  br label %479

.lr.ph321:                                        ; preds = %421, %465
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %24)
  %463 = load ptr, ptr %24, align 8, !tbaa !17
  %.not237 = icmp eq ptr %463, null
  br i1 %.not237, label %465, label %464

464:                                              ; preds = %.lr.ph321
  call void @_ZN10tetgenmesh5sbondERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %21, ptr noundef nonnull align 8 dereferenceable(12) %24)
  br label %479

465:                                              ; preds = %.lr.ph321
  %466 = load i32, ptr %367, align 8, !tbaa !23
  %467 = load ptr, ptr %12, align 8, !tbaa !19
  %468 = sext i32 %466 to i64
  %469 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %468
  %470 = load i32, ptr %469, align 4, !tbaa !24
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds ptr, ptr %467, i64 %471
  %473 = load ptr, ptr %472, align 8, !tbaa !14
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %473, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %474 = load i32, ptr %367, align 8, !tbaa !23
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %468, i64 %475
  %477 = load i32, ptr %476, align 4, !tbaa !24
  store i32 %477, ptr %367, align 8, !tbaa !23
  call void @_ZN10tetgenmesh9tsspivot1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %14)
  %478 = load ptr, ptr %14, align 8, !tbaa !17
  %.not236 = icmp eq ptr %478, null
  br i1 %.not236, label %.lr.ph321, label %._crit_edge322, !llvm.loop !48

479:                                              ; preds = %464, %462, %460, %418
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %417)
  %480 = add nuw nsw i32 %.3208326, 1
  %exitcond.not = icmp eq i32 %480, 3
  br i1 %exitcond.not, label %481, label %418, !llvm.loop !49

481:                                              ; preds = %479
  %indvars.iv.next358 = add nuw nsw i64 %indvars.iv357, 1
  %482 = load i64, ptr %232, align 8, !tbaa !5
  %483 = icmp sgt i64 %482, %indvars.iv.next358
  br i1 %483, label %404, label %.preheader251, !llvm.loop !50

484:                                              ; preds = %.lr.ph330, %484
  %indvars.iv360 = phi i64 [ 0, %.lr.ph330 ], [ %indvars.iv.next361, %484 ]
  %485 = load ptr, ptr %349, align 8, !tbaa !12
  %486 = load i32, ptr %351, align 8, !tbaa !13
  %487 = trunc nuw nsw i64 %indvars.iv360 to i32
  %488 = lshr i32 %487, %486
  %489 = zext nneg i32 %488 to i64
  %490 = getelementptr inbounds ptr, ptr %485, i64 %489
  %491 = load ptr, ptr %490, align 8, !tbaa !14
  %492 = load i32, ptr %353, align 4, !tbaa !15
  %493 = and i32 %492, %487
  %494 = load i32, ptr %4, align 8, !tbaa !16
  %495 = mul nsw i32 %493, %494
  %496 = sext i32 %495 to i64
  %497 = getelementptr inbounds i8, ptr %491, i64 %496
  %498 = load ptr, ptr %403, align 8, !tbaa !40
  %499 = load ptr, ptr %497, align 8, !tbaa !17
  call void @_ZN10tetgenmesh16shellfacedeallocEPNS_10memorypoolEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %498, ptr noundef %499)
  %indvars.iv.next361 = add nuw nsw i64 %indvars.iv360, 1
  %500 = load i64, ptr %400, align 8, !tbaa !5
  %501 = icmp sgt i64 %500, %indvars.iv.next361
  br i1 %501, label %484, label %._crit_edge331, !llvm.loop !51

._crit_edge331:                                   ; preds = %484, %.preheader251
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #7
  br label %558

._crit_edge295.thread:                            ; preds = %243, %._crit_edge295
  %502 = load ptr, ptr %15, align 8, !tbaa !19
  %.not233 = icmp eq ptr %502, null
  br i1 %.not233, label %558, label %503

503:                                              ; preds = %._crit_edge295.thread
  %504 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %505 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %506 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16)
  %507 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16)
  %508 = getelementptr inbounds i8, ptr %4, i64 32
  %509 = load i64, ptr %508, align 8, !tbaa !5
  %510 = icmp sgt i64 %509, 1
  br i1 %510, label %.lr.ph300, label %._crit_edge301.thread

.lr.ph300:                                        ; preds = %503
  %511 = getelementptr inbounds i8, ptr %4, i64 24
  %512 = getelementptr inbounds i8, ptr %4, i64 8
  %513 = getelementptr inbounds i8, ptr %4, i64 12
  br label %514

514:                                              ; preds = %.lr.ph300, %551
  %indvars.iv351 = phi i64 [ 1, %.lr.ph300 ], [ %indvars.iv.next352, %551 ]
  %515 = load ptr, ptr %511, align 8, !tbaa !12
  %516 = load i32, ptr %512, align 8, !tbaa !13
  %517 = trunc nuw nsw i64 %indvars.iv351 to i32
  %518 = lshr i32 %517, %516
  %519 = zext nneg i32 %518 to i64
  %520 = getelementptr inbounds ptr, ptr %515, i64 %519
  %521 = load ptr, ptr %520, align 8, !tbaa !14
  %522 = load i32, ptr %513, align 4, !tbaa !15
  %523 = and i32 %522, %517
  %524 = load i32, ptr %4, align 8, !tbaa !16
  %525 = mul nsw i32 %523, %524
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds i8, ptr %521, i64 %526
  %528 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %527)
  %529 = icmp eq ptr %528, %504
  br i1 %529, label %530, label %533

530:                                              ; preds = %514
  %531 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %527)
  %532 = icmp eq ptr %531, %505
  br i1 %532, label %._crit_edge301, label %533

533:                                              ; preds = %530, %514
  %534 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %527)
  %535 = icmp eq ptr %534, %505
  br i1 %535, label %536, label %539

536:                                              ; preds = %533
  %537 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %527)
  %538 = icmp eq ptr %537, %504
  br i1 %538, label %._crit_edge301, label %539

539:                                              ; preds = %536, %533
  %540 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %527)
  %541 = icmp eq ptr %540, %506
  br i1 %541, label %542, label %545

542:                                              ; preds = %539
  %543 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %527)
  %544 = icmp eq ptr %543, %507
  br i1 %544, label %._crit_edge301, label %545

545:                                              ; preds = %542, %539
  %546 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %527)
  %547 = icmp eq ptr %546, %507
  br i1 %547, label %548, label %551

548:                                              ; preds = %545
  %549 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %527)
  %550 = icmp eq ptr %549, %506
  br i1 %550, label %._crit_edge301, label %551

551:                                              ; preds = %545, %548
  %indvars.iv.next352 = add nuw nsw i64 %indvars.iv351, 1
  %552 = load i64, ptr %508, align 8, !tbaa !5
  %553 = icmp sgt i64 %552, %indvars.iv.next352
  br i1 %553, label %514, label %._crit_edge301, !llvm.loop !52

._crit_edge301:                                   ; preds = %551, %536, %530, %548, %542
  %.lcssa258.ph = phi i64 [ %indvars.iv.next352, %551 ], [ %indvars.iv351, %536 ], [ %indvars.iv351, %530 ], [ %indvars.iv351, %548 ], [ %indvars.iv351, %542 ]
  %.pre366 = load i64, ptr %508, align 8, !tbaa !5
  %554 = icmp sgt i64 %.pre366, %.lcssa258.ph
  br i1 %554, label %555, label %._crit_edge301.thread

555:                                              ; preds = %._crit_edge301
  %556 = getelementptr inbounds i8, ptr %0, i64 304
  %557 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %556, ptr noundef nonnull align 8 dereferenceable(12) %527)
  br label %558

._crit_edge301.thread:                            ; preds = %503, %._crit_edge301
  call void @_Z15terminatetetgenP10tetgenmeshi(ptr noundef nonnull %0, i32 noundef 2)
  br label %558

558:                                              ; preds = %._crit_edge295.thread, %._crit_edge301.thread, %555, %._crit_edge331
  %.lcssa263391 = phi i1 [ false, %._crit_edge295.thread ], [ false, %._crit_edge301.thread ], [ false, %555 ], [ %.lcssa263, %._crit_edge331 ]
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %3)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #7
  br label %559

559:                                              ; preds = %.loopexit257.1, %558
  %.7222 = phi i1 [ %.lcssa263391, %558 ], [ true, %.loopexit257.1 ]
  %560 = getelementptr inbounds i8, ptr %0, i64 40
  br i1 %.not248, label %.loopexit, label %.preheader

.preheader:                                       ; preds = %559
  %561 = getelementptr inbounds i8, ptr %1, i64 32
  %562 = load i64, ptr %561, align 8, !tbaa !5
  %563 = icmp sgt i64 %562, 0
  br i1 %563, label %.lr.ph333, label %.loopexit

.lr.ph333:                                        ; preds = %.preheader
  %564 = getelementptr inbounds i8, ptr %1, i64 24
  %565 = getelementptr inbounds i8, ptr %1, i64 8
  %566 = getelementptr inbounds i8, ptr %1, i64 12
  br label %567

567:                                              ; preds = %.lr.ph333, %567
  %indvars.iv363 = phi i64 [ 0, %.lr.ph333 ], [ %indvars.iv.next364, %567 ]
  %568 = load ptr, ptr %564, align 8, !tbaa !12
  %569 = load i32, ptr %565, align 8, !tbaa !13
  %570 = trunc nuw nsw i64 %indvars.iv363 to i32
  %571 = lshr i32 %570, %569
  %572 = zext nneg i32 %571 to i64
  %573 = getelementptr inbounds ptr, ptr %568, i64 %572
  %574 = load ptr, ptr %573, align 8, !tbaa !14
  %575 = load i32, ptr %566, align 4, !tbaa !15
  %576 = and i32 %575, %570
  %577 = load i32, ptr %1, align 8, !tbaa !16
  %578 = mul nsw i32 %576, %577
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds i8, ptr %574, i64 %579
  %581 = load ptr, ptr %560, align 8, !tbaa !40
  %582 = load ptr, ptr %580, align 8, !tbaa !17
  call void @_ZN10tetgenmesh16shellfacedeallocEPNS_10memorypoolEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %581, ptr noundef %582)
  %indvars.iv.next364 = add nuw nsw i64 %indvars.iv363, 1
  %583 = load i64, ptr %561, align 8, !tbaa !5
  %584 = icmp sgt i64 %583, %indvars.iv.next364
  br i1 %584, label %567, label %.loopexit, !llvm.loop !53

.loopexit:                                        ; preds = %567, %.preheader, %559
  br i1 %.not248.1, label %.loopexit.1, label %.preheader.1

.preheader.1:                                     ; preds = %.loopexit
  %585 = getelementptr inbounds i8, ptr %2, i64 32
  %586 = load i64, ptr %585, align 8, !tbaa !5
  %587 = icmp sgt i64 %586, 0
  br i1 %587, label %.lr.ph333.1, label %.loopexit395

.lr.ph333.1:                                      ; preds = %.preheader.1
  %588 = getelementptr inbounds i8, ptr %2, i64 24
  %589 = getelementptr inbounds i8, ptr %2, i64 8
  %590 = getelementptr inbounds i8, ptr %2, i64 12
  br label %591

591:                                              ; preds = %591, %.lr.ph333.1
  %indvars.iv363.1 = phi i64 [ 0, %.lr.ph333.1 ], [ %indvars.iv.next364.1, %591 ]
  %592 = load ptr, ptr %588, align 8, !tbaa !12
  %593 = load i32, ptr %589, align 8, !tbaa !13
  %594 = trunc nuw nsw i64 %indvars.iv363.1 to i32
  %595 = lshr i32 %594, %593
  %596 = zext nneg i32 %595 to i64
  %597 = getelementptr inbounds ptr, ptr %592, i64 %596
  %598 = load ptr, ptr %597, align 8, !tbaa !14
  %599 = load i32, ptr %590, align 4, !tbaa !15
  %600 = and i32 %599, %594
  %601 = load i32, ptr %2, align 8, !tbaa !16
  %602 = mul nsw i32 %600, %601
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds i8, ptr %598, i64 %603
  %605 = load ptr, ptr %560, align 8, !tbaa !40
  %606 = load ptr, ptr %604, align 8, !tbaa !17
  call void @_ZN10tetgenmesh16shellfacedeallocEPNS_10memorypoolEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %605, ptr noundef %606)
  %indvars.iv.next364.1 = add nuw nsw i64 %indvars.iv363.1, 1
  %607 = load i64, ptr %585, align 8, !tbaa !5
  %608 = icmp sgt i64 %607, %indvars.iv.next364.1
  br i1 %608, label %591, label %.loopexit395, !llvm.loop !53

.loopexit395:                                     ; preds = %591, %.preheader.1
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1)
  br label %.loopexit.1

.loopexit.1:                                      ; preds = %.loopexit, %.loopexit395
  %.sink403 = phi ptr [ %2, %.loopexit395 ], [ %1, %.loopexit ]
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %.sink403)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #7
  ret i1 %.7222
}

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !11, i64 32}
!6 = !{!"_ZTSN10tetgenmesh9arraypoolE", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !10, i64 24, !11, i64 32, !11, i64 40}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!"long", !8, i64 0}
!12 = !{!6, !10, i64 24}
!13 = !{!6, !7, i64 8}
!14 = !{!10, !10, i64 0}
!15 = !{!6, !7, i64 12}
!16 = !{!6, !7, i64 0}
!17 = !{!18, !10, i64 0}
!18 = !{!"_ZTSN10tetgenmesh4faceE", !10, i64 0, !7, i64 8}
!19 = !{!20, !10, i64 0}
!20 = !{!"_ZTSN10tetgenmesh7trifaceE", !10, i64 0, !7, i64 8}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = !{!20, !7, i64 8}
!24 = !{!7, !7, i64 0}
!25 = distinct !{!25, !22}
!26 = distinct !{!26, !22}
!27 = distinct !{!27, !22}
!28 = !{!29, !10, i64 280}
!29 = !{!"_ZTS10tetgenmesh", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !10, i64 128, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !10, i64 176, !10, i64 184, !10, i64 192, !10, i64 200, !10, i64 208, !10, i64 216, !10, i64 224, !10, i64 232, !10, i64 240, !10, i64 248, !10, i64 256, !10, i64 264, !10, i64 272, !10, i64 280, !20, i64 288, !18, i64 304, !10, i64 320, !7, i64 328, !7, i64 332, !7, i64 336, !7, i64 340, !7, i64 344, !7, i64 348, !7, i64 352, !7, i64 356, !7, i64 360, !7, i64 364, !7, i64 368, !7, i64 372, !7, i64 376, !7, i64 380, !7, i64 384, !7, i64 388, !7, i64 392, !7, i64 396, !7, i64 400, !11, i64 408, !11, i64 416, !30, i64 424, !30, i64 432, !30, i64 440, !30, i64 448, !30, i64 456, !30, i64 464, !30, i64 472, !30, i64 480, !30, i64 488, !30, i64 496, !30, i64 504, !30, i64 512, !30, i64 520, !30, i64 528, !30, i64 536, !11, i64 544, !11, i64 552, !11, i64 560, !11, i64 568, !11, i64 576, !11, i64 584, !11, i64 592, !11, i64 600, !11, i64 608, !11, i64 616, !11, i64 624, !11, i64 632, !11, i64 640, !11, i64 648, !11, i64 656, !11, i64 664, !11, i64 672, !11, i64 680, !11, i64 688, !11, i64 696, !11, i64 704, !11, i64 712, !11, i64 720, !11, i64 728, !8, i64 736, !8, i64 1504}
!30 = !{!"double", !8, i64 0}
!31 = distinct !{!31, !22}
!32 = distinct !{!32, !22}
!33 = distinct !{!33, !22}
!34 = distinct !{!34, !22}
!35 = distinct !{!35, !22}
!36 = !{!29, !10, i64 16}
!37 = !{!38, !7, i64 148}
!38 = !{!"_ZTS14tetgenbehavior", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !7, i64 92, !7, i64 96, !7, i64 100, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144, !7, i64 148, !7, i64 152, !7, i64 156, !7, i64 160, !7, i64 164, !7, i64 168, !7, i64 172, !7, i64 176, !7, i64 180, !7, i64 184, !7, i64 188, !7, i64 192, !7, i64 196, !7, i64 200, !7, i64 204, !7, i64 208, !7, i64 212, !7, i64 216, !7, i64 220, !7, i64 224, !7, i64 228, !7, i64 232, !7, i64 236, !30, i64 240, !30, i64 248, !30, i64 256, !30, i64 264, !30, i64 272, !30, i64 280, !30, i64 288, !30, i64 296, !30, i64 304, !30, i64 312, !30, i64 320, !30, i64 328, !8, i64 336, !8, i64 1360, !8, i64 2384, !8, i64 3408, !8, i64 4432, !39, i64 5456}
!39 = !{!"_ZTSN14tetgenbehavior10objecttypeE", !8, i64 0}
!40 = !{!29, !10, i64 40}
!41 = !{!29, !7, i64 388}
!42 = !{!29, !7, i64 400}
!43 = distinct !{!43, !22}
!44 = !{!18, !7, i64 8}
!45 = distinct !{!45, !22}
!46 = !{!29, !10, i64 48}
!47 = distinct !{!47, !22}
!48 = distinct !{!48, !22}
!49 = distinct !{!49, !22}
!50 = distinct !{!50, !22}
!51 = distinct !{!51, !22}
!52 = distinct !{!52, !22}
!53 = distinct !{!53, !22}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass