; 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 = 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] }>
%"class.tetgenmesh::arraypool" = type { i32, i32, i32, i32, i32, ptr, i64, i64 }

@_ZN10tetgenmesh10facepivot1E = external dso_local global [12 x i32], align 16
@_ZN10tetgenmesh10facepivot2E = external dso_local global [12 x [12 x i32]], align 16
@.str.389 = external hidden unnamed_addr constant [35 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

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

; 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) #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12)) unnamed_addr #2 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)) #2 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12)) unnamed_addr #2 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)) #2 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #4 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)) #3 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)) #4 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)) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh10stdissolveERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #3 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)) #3 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)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #3 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)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #3 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)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh9suninfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #3 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)) #3 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh9sstpivot1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), 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 @_ZN10tetgenmesh12sstdissolve1ERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #3 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10tetgenmesh11carvecavityEPNS_9arraypoolES1_S1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) #5 align 2 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %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 %"class.tetgenmesh::triface", align 8
  %15 = alloca %"class.tetgenmesh::triface", align 8
  %16 = alloca %"class.tetgenmesh::triface", align 8
  %17 = alloca %"class.tetgenmesh::face", align 8
  %18 = alloca ptr, align 8
  %19 = alloca %"class.tetgenmesh::face", align 8
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  %24 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #6
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %14)
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #6
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %15)
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #6
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %16)
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #6
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %17)
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  store ptr null, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #6
  call void @_ZN10tetgenmesh4faceC2Ev(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 4, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  %25 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 2
  %26 = load ptr, ptr %25, align 8, !tbaa !9
  %27 = getelementptr inbounds %class.tetgenbehavior, ptr %26, i32 0, i32 37
  %28 = load i32, ptr %27, align 4, !tbaa !16
  %29 = icmp sgt i32 %28, 2
  br i1 %29, label %30, label %35

30:                                               ; preds = %4
  %31 = load ptr, ptr %6, align 8, !tbaa !5
  %32 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %31, i32 0, i32 6
  %33 = load i64, ptr %32, align 8, !tbaa !19
  %34 = call i32 (ptr, ...) @printf(ptr noundef @.str.389, i64 noundef %33)
  br label %35

35:                                               ; preds = %30, %4
  store i32 0, ptr %22, align 4, !tbaa !21
  br label %36

36:                                               ; preds = %147, %35
  %37 = load i32, ptr %22, align 4, !tbaa !21
  %38 = sext i32 %37 to i64
  %39 = load ptr, ptr %6, align 8, !tbaa !5
  %40 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %39, i32 0, i32 6
  %41 = load i64, ptr %40, align 8, !tbaa !19
  %42 = icmp slt i64 %38, %41
  br i1 %42, label %43, label %150

43:                                               ; preds = %36
  %44 = load ptr, ptr %6, align 8, !tbaa !5
  %45 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %44, i32 0, i32 5
  %46 = load ptr, ptr %45, align 8, !tbaa !22
  %47 = load i32, ptr %22, align 4, !tbaa !21
  %48 = load ptr, ptr %6, align 8, !tbaa !5
  %49 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %48, i32 0, i32 2
  %50 = load i32, ptr %49, align 8, !tbaa !23
  %51 = ashr i32 %47, %50
  %52 = sext i32 %51 to i64
  %53 = getelementptr inbounds ptr, ptr %46, i64 %52
  %54 = load ptr, ptr %53, align 8, !tbaa !5
  %55 = load i32, ptr %22, align 4, !tbaa !21
  %56 = load ptr, ptr %6, align 8, !tbaa !5
  %57 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %56, i32 0, i32 3
  %58 = load i32, ptr %57, align 4, !tbaa !24
  %59 = and i32 %55, %58
  %60 = load ptr, ptr %6, align 8, !tbaa !5
  %61 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %60, i32 0, i32 0
  %62 = load i32, ptr %61, align 8, !tbaa !25
  %63 = mul nsw i32 %59, %62
  %64 = sext i32 %63 to i64
  %65 = getelementptr inbounds i8, ptr %54, i64 %64
  store ptr %65, ptr %12, align 8, !tbaa !5
  %66 = load ptr, ptr %12, align 8, !tbaa !5
  %67 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %66, i32 0, i32 0
  %68 = load ptr, ptr %67, align 8, !tbaa !26
  %69 = getelementptr inbounds ptr, ptr %68, i64 9
  %70 = load ptr, ptr %69, align 8, !tbaa !5
  store ptr %70, ptr %10, align 8, !tbaa !5
  %71 = icmp ne ptr %70, null
  br i1 %71, label %72, label %102

72:                                               ; preds = %43
  store i32 0, ptr %23, align 4, !tbaa !21
  br label %73

73:                                               ; preds = %98, %72
  %74 = load i32, ptr %23, align 4, !tbaa !21
  %75 = icmp slt i32 %74, 4
  br i1 %75, label %76, label %101

76:                                               ; preds = %73
  %77 = load ptr, ptr %10, align 8, !tbaa !5
  %78 = load i32, ptr %23, align 4, !tbaa !21
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds ptr, ptr %77, i64 %79
  %81 = load ptr, ptr %80, align 8, !tbaa !5
  %82 = icmp ne ptr %81, null
  br i1 %82, label %83, label %97

83:                                               ; preds = %76
  %84 = load ptr, ptr %10, align 8, !tbaa !5
  %85 = load i32, ptr %23, align 4, !tbaa !21
  %86 = sext i32 %85 to i64
  %87 = getelementptr inbounds ptr, ptr %84, i64 %86
  %88 = load ptr, ptr %87, align 8, !tbaa !5
  call void @_ZN10tetgenmesh7sdecodeEPPdRNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %88, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %89 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %17)
  br i1 %89, label %96, label %90

90:                                               ; preds = %83
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %91 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 19
  %92 = load ptr, ptr %91, align 8, !tbaa !27
  %93 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %92, ptr noundef %18)
  %94 = load ptr, ptr %18, align 8, !tbaa !5
  %95 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %94, ptr noundef nonnull align 8 dereferenceable(12) %17)
  br label %96

96:                                               ; preds = %90, %83
  br label %97

97:                                               ; preds = %96, %76
  br label %98

98:                                               ; preds = %97
  %99 = load i32, ptr %23, align 4, !tbaa !21
  %100 = add nsw i32 %99, 1
  store i32 %100, ptr %23, align 4, !tbaa !21
  br label %73, !llvm.loop !28

101:                                              ; preds = %73
  br label %102

102:                                              ; preds = %101, %43
  %103 = load ptr, ptr %12, align 8, !tbaa !5
  %104 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %103, i32 0, i32 0
  %105 = load ptr, ptr %104, align 8, !tbaa !26
  %106 = getelementptr inbounds ptr, ptr %105, i64 8
  %107 = load ptr, ptr %106, align 8, !tbaa !5
  store ptr %107, ptr %11, align 8, !tbaa !5
  %108 = icmp ne ptr %107, null
  br i1 %108, label %109, label %146

109:                                              ; preds = %102
  store i32 0, ptr %23, align 4, !tbaa !21
  br label %110

110:                                              ; preds = %142, %109
  %111 = load i32, ptr %23, align 4, !tbaa !21
  %112 = icmp slt i32 %111, 6
  br i1 %112, label %113, label %145

113:                                              ; preds = %110
  %114 = load ptr, ptr %11, align 8, !tbaa !5
  %115 = load i32, ptr %23, align 4, !tbaa !21
  %116 = sext i32 %115 to i64
  %117 = getelementptr inbounds ptr, ptr %114, i64 %116
  %118 = load ptr, ptr %117, align 8, !tbaa !5
  %119 = icmp ne ptr %118, null
  br i1 %119, label %120, label %141

120:                                              ; preds = %113
  %121 = load ptr, ptr %11, align 8, !tbaa !5
  %122 = load i32, ptr %23, align 4, !tbaa !21
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds ptr, ptr %121, i64 %123
  %125 = load ptr, ptr %124, align 8, !tbaa !5
  call void @_ZN10tetgenmesh7sdecodeEPPdRNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %125, ptr noundef nonnull align 8 dereferenceable(12) %19)
  %126 = getelementptr inbounds %"class.tetgenmesh::face", ptr %19, i32 0, i32 0
  %127 = load ptr, ptr %126, align 8, !tbaa !30
  %128 = getelementptr inbounds ptr, ptr %127, i64 3
  %129 = load ptr, ptr %128, align 8, !tbaa !5
  %130 = icmp ne ptr %129, null
  br i1 %130, label %131, label %140

131:                                              ; preds = %120
  %132 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %19)
  br i1 %132, label %139, label %133

133:                                              ; preds = %131
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %19)
  %134 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 20
  %135 = load ptr, ptr %134, align 8, !tbaa !31
  %136 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %135, ptr noundef %20)
  %137 = load ptr, ptr %20, align 8, !tbaa !5
  %138 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %137, ptr noundef nonnull align 8 dereferenceable(12) %19)
  br label %139

139:                                              ; preds = %133, %131
  br label %140

140:                                              ; preds = %139, %120
  br label %141

141:                                              ; preds = %140, %113
  br label %142

142:                                              ; preds = %141
  %143 = load i32, ptr %23, align 4, !tbaa !21
  %144 = add nsw i32 %143, 1
  store i32 %144, ptr %23, align 4, !tbaa !21
  br label %110, !llvm.loop !32

145:                                              ; preds = %110
  br label %146

146:                                              ; preds = %145, %102
  br label %147

147:                                              ; preds = %146
  %148 = load i32, ptr %22, align 4, !tbaa !21
  %149 = add nsw i32 %148, 1
  store i32 %149, ptr %22, align 4, !tbaa !21
  br label %36, !llvm.loop !33

150:                                              ; preds = %36
  store i32 0, ptr %22, align 4, !tbaa !21
  br label %151

151:                                              ; preds = %187, %150
  %152 = load i32, ptr %22, align 4, !tbaa !21
  %153 = sext i32 %152 to i64
  %154 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 19
  %155 = load ptr, ptr %154, align 8, !tbaa !27
  %156 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %155, i32 0, i32 6
  %157 = load i64, ptr %156, align 8, !tbaa !19
  %158 = icmp slt i64 %153, %157
  br i1 %158, label %159, label %190

159:                                              ; preds = %151
  %160 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 19
  %161 = load ptr, ptr %160, align 8, !tbaa !27
  %162 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %161, i32 0, i32 5
  %163 = load ptr, ptr %162, align 8, !tbaa !22
  %164 = load i32, ptr %22, align 4, !tbaa !21
  %165 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 19
  %166 = load ptr, ptr %165, align 8, !tbaa !27
  %167 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %166, i32 0, i32 2
  %168 = load i32, ptr %167, align 8, !tbaa !23
  %169 = ashr i32 %164, %168
  %170 = sext i32 %169 to i64
  %171 = getelementptr inbounds ptr, ptr %163, i64 %170
  %172 = load ptr, ptr %171, align 8, !tbaa !5
  %173 = load i32, ptr %22, align 4, !tbaa !21
  %174 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 19
  %175 = load ptr, ptr %174, align 8, !tbaa !27
  %176 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %175, i32 0, i32 3
  %177 = load i32, ptr %176, align 4, !tbaa !24
  %178 = and i32 %173, %177
  %179 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 19
  %180 = load ptr, ptr %179, align 8, !tbaa !27
  %181 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %180, i32 0, i32 0
  %182 = load i32, ptr %181, align 8, !tbaa !25
  %183 = mul nsw i32 %178, %182
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds i8, ptr %172, i64 %184
  store ptr %185, ptr %18, align 8, !tbaa !5
  %186 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9suninfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %186)
  br label %187

187:                                              ; preds = %159
  %188 = load i32, ptr %22, align 4, !tbaa !21
  %189 = add nsw i32 %188, 1
  store i32 %189, ptr %22, align 4, !tbaa !21
  br label %151, !llvm.loop !34

190:                                              ; preds = %151
  store i32 0, ptr %22, align 4, !tbaa !21
  br label %191

191:                                              ; preds = %227, %190
  %192 = load i32, ptr %22, align 4, !tbaa !21
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 20
  %195 = load ptr, ptr %194, align 8, !tbaa !31
  %196 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %195, i32 0, i32 6
  %197 = load i64, ptr %196, align 8, !tbaa !19
  %198 = icmp slt i64 %193, %197
  br i1 %198, label %199, label %230

199:                                              ; preds = %191
  %200 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 20
  %201 = load ptr, ptr %200, align 8, !tbaa !31
  %202 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %201, i32 0, i32 5
  %203 = load ptr, ptr %202, align 8, !tbaa !22
  %204 = load i32, ptr %22, align 4, !tbaa !21
  %205 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 20
  %206 = load ptr, ptr %205, align 8, !tbaa !31
  %207 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %206, i32 0, i32 2
  %208 = load i32, ptr %207, align 8, !tbaa !23
  %209 = ashr i32 %204, %208
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds ptr, ptr %203, i64 %210
  %212 = load ptr, ptr %211, align 8, !tbaa !5
  %213 = load i32, ptr %22, align 4, !tbaa !21
  %214 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 20
  %215 = load ptr, ptr %214, align 8, !tbaa !31
  %216 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %215, i32 0, i32 3
  %217 = load i32, ptr %216, align 4, !tbaa !24
  %218 = and i32 %213, %217
  %219 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 20
  %220 = load ptr, ptr %219, align 8, !tbaa !31
  %221 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %220, i32 0, i32 0
  %222 = load i32, ptr %221, align 8, !tbaa !25
  %223 = mul nsw i32 %218, %222
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds i8, ptr %212, i64 %224
  store ptr %225, ptr %20, align 8, !tbaa !5
  %226 = load ptr, ptr %20, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9suninfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %226)
  br label %227

227:                                              ; preds = %199
  %228 = load i32, ptr %22, align 4, !tbaa !21
  %229 = add nsw i32 %228, 1
  store i32 %229, ptr %22, align 4, !tbaa !21
  br label %191, !llvm.loop !35

230:                                              ; preds = %191
  store i32 0, ptr %22, align 4, !tbaa !21
  br label %231

231:                                              ; preds = %287, %230
  %232 = load i32, ptr %22, align 4, !tbaa !21
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 19
  %235 = load ptr, ptr %234, align 8, !tbaa !27
  %236 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %235, i32 0, i32 6
  %237 = load i64, ptr %236, align 8, !tbaa !19
  %238 = icmp slt i64 %233, %237
  br i1 %238, label %239, label %290

239:                                              ; preds = %231
  %240 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 19
  %241 = load ptr, ptr %240, align 8, !tbaa !27
  %242 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %241, i32 0, i32 5
  %243 = load ptr, ptr %242, align 8, !tbaa !22
  %244 = load i32, ptr %22, align 4, !tbaa !21
  %245 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 19
  %246 = load ptr, ptr %245, align 8, !tbaa !27
  %247 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %246, i32 0, i32 2
  %248 = load i32, ptr %247, align 8, !tbaa !23
  %249 = ashr i32 %244, %248
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds ptr, ptr %243, i64 %250
  %252 = load ptr, ptr %251, align 8, !tbaa !5
  %253 = load i32, ptr %22, align 4, !tbaa !21
  %254 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 19
  %255 = load ptr, ptr %254, align 8, !tbaa !27
  %256 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %255, i32 0, i32 3
  %257 = load i32, ptr %256, align 4, !tbaa !24
  %258 = and i32 %253, %257
  %259 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 19
  %260 = load ptr, ptr %259, align 8, !tbaa !27
  %261 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %260, i32 0, i32 0
  %262 = load i32, ptr %261, align 8, !tbaa !25
  %263 = mul nsw i32 %258, %262
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds i8, ptr %252, i64 %264
  store ptr %265, ptr %18, align 8, !tbaa !5
  %266 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %266, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %267 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %15)
  br i1 %267, label %268, label %281

268:                                              ; preds = %239
  %269 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %269)
  %270 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %270, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %271 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %15)
  br i1 %271, label %272, label %280

272:                                              ; preds = %268
  %273 = load ptr, ptr %18, align 8, !tbaa !5
  %274 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %17, ptr noundef nonnull align 8 dereferenceable(12) %273)
  call void @_ZN10tetgenmesh10stdissolveERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %275 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 22
  %276 = load ptr, ptr %275, align 8, !tbaa !36
  %277 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %276, ptr noundef %18)
  %278 = load ptr, ptr %18, align 8, !tbaa !5
  %279 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %278, ptr noundef nonnull align 8 dereferenceable(12) %17)
  br label %280

280:                                              ; preds = %272, %268
  br label %281

281:                                              ; preds = %280, %239
  %282 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %15)
  br i1 %282, label %286, label %283

283:                                              ; preds = %281
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %14)
  %284 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %284)
  %285 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %14, ptr noundef nonnull align 8 dereferenceable(12) %285)
  br label %286

286:                                              ; preds = %283, %281
  br label %287

287:                                              ; preds = %286
  %288 = load i32, ptr %22, align 4, !tbaa !21
  %289 = add nsw i32 %288, 1
  store i32 %289, ptr %22, align 4, !tbaa !21
  br label %231, !llvm.loop !37

290:                                              ; preds = %231
  store i32 0, ptr %22, align 4, !tbaa !21
  br label %291

291:                                              ; preds = %402, %290
  %292 = load i32, ptr %22, align 4, !tbaa !21
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 20
  %295 = load ptr, ptr %294, align 8, !tbaa !31
  %296 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %295, i32 0, i32 6
  %297 = load i64, ptr %296, align 8, !tbaa !19
  %298 = icmp slt i64 %293, %297
  br i1 %298, label %299, label %405

299:                                              ; preds = %291
  %300 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 20
  %301 = load ptr, ptr %300, align 8, !tbaa !31
  %302 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %301, i32 0, i32 5
  %303 = load ptr, ptr %302, align 8, !tbaa !22
  %304 = load i32, ptr %22, align 4, !tbaa !21
  %305 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 20
  %306 = load ptr, ptr %305, align 8, !tbaa !31
  %307 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %306, i32 0, i32 2
  %308 = load i32, ptr %307, align 8, !tbaa !23
  %309 = ashr i32 %304, %308
  %310 = sext i32 %309 to i64
  %311 = getelementptr inbounds ptr, ptr %303, i64 %310
  %312 = load ptr, ptr %311, align 8, !tbaa !5
  %313 = load i32, ptr %22, align 4, !tbaa !21
  %314 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 20
  %315 = load ptr, ptr %314, align 8, !tbaa !31
  %316 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %315, i32 0, i32 3
  %317 = load i32, ptr %316, align 4, !tbaa !24
  %318 = and i32 %313, %317
  %319 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 20
  %320 = load ptr, ptr %319, align 8, !tbaa !31
  %321 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %320, i32 0, i32 0
  %322 = load i32, ptr %321, align 8, !tbaa !25
  %323 = mul nsw i32 %318, %322
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds i8, ptr %312, i64 %324
  %326 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %19, ptr noundef nonnull align 8 dereferenceable(12) %325)
  call void @_ZN10tetgenmesh9sstpivot1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %19, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %327 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %15)
  br label %328

328:                                              ; preds = %365, %299
  br label %329

329:                                              ; preds = %328
  %330 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %16)
  br i1 %330, label %332, label %331

331:                                              ; preds = %329
  br label %366

332:                                              ; preds = %329
  %333 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %16, i32 0, i32 1
  %334 = load i32, ptr %333, align 8, !tbaa !38
  store i32 %334, ptr %21, align 4, !tbaa !21
  %335 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %16, i32 0, i32 0
  %336 = load ptr, ptr %335, align 8, !tbaa !26
  %337 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %16, i32 0, i32 1
  %338 = load i32, ptr %337, align 8, !tbaa !38
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %339
  %341 = load i32, ptr %340, align 4, !tbaa !21
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds ptr, ptr %336, i64 %342
  %344 = load ptr, ptr %343, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %344, ptr noundef nonnull align 8 dereferenceable(12) %16)
  %345 = load i32, ptr %21, align 4, !tbaa !21
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %346
  %348 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %16, i32 0, i32 1
  %349 = load i32, ptr %348, align 8, !tbaa !38
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds [12 x i32], ptr %347, i64 0, i64 %350
  %352 = load i32, ptr %351, align 4, !tbaa !21
  %353 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %16, i32 0, i32 1
  store i32 %352, ptr %353, align 8, !tbaa !38
  %354 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %16, i32 0, i32 0
  %355 = load ptr, ptr %354, align 8, !tbaa !26
  %356 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %15, i32 0, i32 0
  %357 = load ptr, ptr %356, align 8, !tbaa !26
  %358 = icmp eq ptr %355, %357
  br i1 %358, label %359, label %365

359:                                              ; preds = %332
  call void @_ZN10tetgenmesh12sstdissolve1ERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %19)
  %360 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 23
  %361 = load ptr, ptr %360, align 8, !tbaa !39
  %362 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %361, ptr noundef %20)
  %363 = load ptr, ptr %20, align 8, !tbaa !5
  %364 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %363, ptr noundef nonnull align 8 dereferenceable(12) %19)
  br label %366

365:                                              ; preds = %332
  br label %328, !llvm.loop !40

366:                                              ; preds = %359, %331
  %367 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %16)
  br i1 %367, label %401, label %368

368:                                              ; preds = %366
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %19, ptr noundef nonnull align 8 dereferenceable(12) %16)
  %369 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %16)
  br label %370

370:                                              ; preds = %399, %368
  br label %371

371:                                              ; preds = %370
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %19)
  %372 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %16, i32 0, i32 1
  %373 = load i32, ptr %372, align 8, !tbaa !38
  store i32 %373, ptr %21, align 4, !tbaa !21
  %374 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %16, i32 0, i32 0
  %375 = load ptr, ptr %374, align 8, !tbaa !26
  %376 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %16, i32 0, i32 1
  %377 = load i32, ptr %376, align 8, !tbaa !38
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %378
  %380 = load i32, ptr %379, align 4, !tbaa !21
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds ptr, ptr %375, i64 %381
  %383 = load ptr, ptr %382, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %383, ptr noundef nonnull align 8 dereferenceable(12) %16)
  %384 = load i32, ptr %21, align 4, !tbaa !21
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %385
  %387 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %16, i32 0, i32 1
  %388 = load i32, ptr %387, align 8, !tbaa !38
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds [12 x i32], ptr %386, i64 0, i64 %389
  %391 = load i32, ptr %390, align 4, !tbaa !21
  %392 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %16, i32 0, i32 1
  store i32 %391, ptr %392, align 8, !tbaa !38
  %393 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %16, i32 0, i32 0
  %394 = load ptr, ptr %393, align 8, !tbaa !26
  %395 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %15, i32 0, i32 0
  %396 = load ptr, ptr %395, align 8, !tbaa !26
  %397 = icmp eq ptr %394, %396
  br i1 %397, label %398, label %399

398:                                              ; preds = %371
  br label %400

399:                                              ; preds = %371
  br label %370, !llvm.loop !41

400:                                              ; preds = %398
  br label %401

401:                                              ; preds = %400, %366
  br label %402

402:                                              ; preds = %401
  %403 = load i32, ptr %22, align 4, !tbaa !21
  %404 = add nsw i32 %403, 1
  store i32 %404, ptr %22, align 4, !tbaa !21
  br label %291, !llvm.loop !42

405:                                              ; preds = %291
  %406 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 19
  %407 = load ptr, ptr %406, align 8, !tbaa !27
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %407)
  %408 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 20
  %409 = load ptr, ptr %408, align 8, !tbaa !31
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %409)
  store i32 0, ptr %22, align 4, !tbaa !21
  br label %410

410:                                              ; preds = %450, %405
  %411 = load i32, ptr %22, align 4, !tbaa !21
  %412 = sext i32 %411 to i64
  %413 = load ptr, ptr %6, align 8, !tbaa !5
  %414 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %413, i32 0, i32 6
  %415 = load i64, ptr %414, align 8, !tbaa !19
  %416 = icmp slt i64 %412, %415
  br i1 %416, label %417, label %453

417:                                              ; preds = %410
  %418 = load ptr, ptr %6, align 8, !tbaa !5
  %419 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %418, i32 0, i32 5
  %420 = load ptr, ptr %419, align 8, !tbaa !22
  %421 = load i32, ptr %22, align 4, !tbaa !21
  %422 = load ptr, ptr %6, align 8, !tbaa !5
  %423 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %422, i32 0, i32 2
  %424 = load i32, ptr %423, align 8, !tbaa !23
  %425 = ashr i32 %421, %424
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds ptr, ptr %420, i64 %426
  %428 = load ptr, ptr %427, align 8, !tbaa !5
  %429 = load i32, ptr %22, align 4, !tbaa !21
  %430 = load ptr, ptr %6, align 8, !tbaa !5
  %431 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %430, i32 0, i32 3
  %432 = load i32, ptr %431, align 4, !tbaa !24
  %433 = and i32 %429, %432
  %434 = load ptr, ptr %6, align 8, !tbaa !5
  %435 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %434, i32 0, i32 0
  %436 = load i32, ptr %435, align 8, !tbaa !25
  %437 = mul nsw i32 %433, %436
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds i8, ptr %428, i64 %438
  store ptr %439, ptr %12, align 8, !tbaa !5
  %440 = load ptr, ptr %12, align 8, !tbaa !5
  %441 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %440)
  br i1 %441, label %442, label %446

442:                                              ; preds = %417
  %443 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 76
  %444 = load i64, ptr %443, align 8, !tbaa !43
  %445 = add nsw i64 %444, -1
  store i64 %445, ptr %443, align 8, !tbaa !43
  br label %446

446:                                              ; preds = %442, %417
  %447 = load ptr, ptr %12, align 8, !tbaa !5
  %448 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %447, i32 0, i32 0
  %449 = load ptr, ptr %448, align 8, !tbaa !26
  call void @_ZN10tetgenmesh18tetrahedrondeallocEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %449)
  br label %450

450:                                              ; preds = %446
  %451 = load i32, ptr %22, align 4, !tbaa !21
  %452 = add nsw i32 %451, 1
  store i32 %452, ptr %22, align 4, !tbaa !21
  br label %410, !llvm.loop !44

453:                                              ; preds = %410
  %454 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %454)
  store i32 0, ptr %23, align 4, !tbaa !21
  br label %455

455:                                              ; preds = %514, %453
  %456 = load i32, ptr %23, align 4, !tbaa !21
  %457 = icmp slt i32 %456, 2
  br i1 %457, label %458, label %517

458:                                              ; preds = %455
  %459 = load i32, ptr %23, align 4, !tbaa !21
  %460 = icmp eq i32 %459, 0
  br i1 %460, label %461, label %463

461:                                              ; preds = %458
  %462 = load ptr, ptr %7, align 8, !tbaa !5
  br label %465

463:                                              ; preds = %458
  %464 = load ptr, ptr %8, align 8, !tbaa !5
  br label %465

465:                                              ; preds = %463, %461
  %466 = phi ptr [ %462, %461 ], [ %464, %463 ]
  store ptr %466, ptr %9, align 8, !tbaa !5
  %467 = load ptr, ptr %9, align 8, !tbaa !5
  %468 = icmp ne ptr %467, null
  br i1 %468, label %469, label %513

469:                                              ; preds = %465
  store i32 0, ptr %22, align 4, !tbaa !21
  br label %470

470:                                              ; preds = %509, %469
  %471 = load i32, ptr %22, align 4, !tbaa !21
  %472 = sext i32 %471 to i64
  %473 = load ptr, ptr %9, align 8, !tbaa !5
  %474 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %473, i32 0, i32 6
  %475 = load i64, ptr %474, align 8, !tbaa !19
  %476 = icmp slt i64 %472, %475
  br i1 %476, label %477, label %512

477:                                              ; preds = %470
  %478 = load ptr, ptr %9, align 8, !tbaa !5
  %479 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %478, i32 0, i32 5
  %480 = load ptr, ptr %479, align 8, !tbaa !22
  %481 = load i32, ptr %22, align 4, !tbaa !21
  %482 = load ptr, ptr %9, align 8, !tbaa !5
  %483 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %482, i32 0, i32 2
  %484 = load i32, ptr %483, align 8, !tbaa !23
  %485 = ashr i32 %481, %484
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds ptr, ptr %480, i64 %486
  %488 = load ptr, ptr %487, align 8, !tbaa !5
  %489 = load i32, ptr %22, align 4, !tbaa !21
  %490 = load ptr, ptr %9, align 8, !tbaa !5
  %491 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %490, i32 0, i32 3
  %492 = load i32, ptr %491, align 4, !tbaa !24
  %493 = and i32 %489, %492
  %494 = load ptr, ptr %9, align 8, !tbaa !5
  %495 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %494, i32 0, i32 0
  %496 = load i32, ptr %495, align 8, !tbaa !25
  %497 = mul nsw i32 %493, %496
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds i8, ptr %488, i64 %498
  store ptr %499, ptr %12, align 8, !tbaa !5
  %500 = load ptr, ptr %12, align 8, !tbaa !5
  %501 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %500)
  br i1 %501, label %502, label %508

502:                                              ; preds = %477
  %503 = load ptr, ptr %6, align 8, !tbaa !5
  %504 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %503, ptr noundef %13)
  %505 = load ptr, ptr %12, align 8, !tbaa !5
  %506 = load ptr, ptr %13, align 8, !tbaa !5
  %507 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %506, ptr noundef nonnull align 8 dereferenceable(12) %505)
  br label %508

508:                                              ; preds = %502, %477
  br label %509

509:                                              ; preds = %508
  %510 = load i32, ptr %22, align 4, !tbaa !21
  %511 = add nsw i32 %510, 1
  store i32 %511, ptr %22, align 4, !tbaa !21
  br label %470, !llvm.loop !45

512:                                              ; preds = %470
  br label %513

513:                                              ; preds = %512, %465
  br label %514

514:                                              ; preds = %513
  %515 = load i32, ptr %23, align 4, !tbaa !21
  %516 = add nsw i32 %515, 1
  store i32 %516, ptr %23, align 4, !tbaa !21
  br label %455, !llvm.loop !46

517:                                              ; preds = %455
  store i32 0, ptr %22, align 4, !tbaa !21
  br label %518

518:                                              ; preds = %573, %517
  %519 = load i32, ptr %22, align 4, !tbaa !21
  %520 = sext i32 %519 to i64
  %521 = load ptr, ptr %6, align 8, !tbaa !5
  %522 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %521, i32 0, i32 6
  %523 = load i64, ptr %522, align 8, !tbaa !19
  %524 = icmp slt i64 %520, %523
  br i1 %524, label %525, label %576

525:                                              ; preds = %518
  %526 = load ptr, ptr %6, align 8, !tbaa !5
  %527 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %526, i32 0, i32 5
  %528 = load ptr, ptr %527, align 8, !tbaa !22
  %529 = load i32, ptr %22, align 4, !tbaa !21
  %530 = load ptr, ptr %6, align 8, !tbaa !5
  %531 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %530, i32 0, i32 2
  %532 = load i32, ptr %531, align 8, !tbaa !23
  %533 = ashr i32 %529, %532
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds ptr, ptr %528, i64 %534
  %536 = load ptr, ptr %535, align 8, !tbaa !5
  %537 = load i32, ptr %22, align 4, !tbaa !21
  %538 = load ptr, ptr %6, align 8, !tbaa !5
  %539 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %538, i32 0, i32 3
  %540 = load i32, ptr %539, align 4, !tbaa !24
  %541 = and i32 %537, %540
  %542 = load ptr, ptr %6, align 8, !tbaa !5
  %543 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %542, i32 0, i32 0
  %544 = load i32, ptr %543, align 8, !tbaa !25
  %545 = mul nsw i32 %541, %544
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds i8, ptr %536, i64 %546
  store ptr %547, ptr %12, align 8, !tbaa !5
  store i32 0, ptr %23, align 4, !tbaa !21
  br label %548

548:                                              ; preds = %569, %525
  %549 = load i32, ptr %23, align 4, !tbaa !21
  %550 = icmp slt i32 %549, 4
  br i1 %550, label %551, label %572

551:                                              ; preds = %548
  %552 = load ptr, ptr %12, align 8, !tbaa !5
  %553 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %552, i32 0, i32 0
  %554 = load ptr, ptr %553, align 8, !tbaa !26
  %555 = load i32, ptr %23, align 4, !tbaa !21
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds ptr, ptr %554, i64 %556
  %558 = load ptr, ptr %557, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %558, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %559 = call noundef zeroext i1 @_ZN10tetgenmesh10marktestedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %15)
  br i1 %559, label %560, label %568

560:                                              ; preds = %551
  %561 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %15)
  br i1 %561, label %567, label %562

562:                                              ; preds = %560
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %563 = load ptr, ptr %6, align 8, !tbaa !5
  %564 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %563, ptr noundef %13)
  %565 = load ptr, ptr %13, align 8, !tbaa !5
  %566 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %565, ptr noundef nonnull align 8 dereferenceable(12) %15)
  br label %567

567:                                              ; preds = %562, %560
  br label %568

568:                                              ; preds = %567, %551
  br label %569

569:                                              ; preds = %568
  %570 = load i32, ptr %23, align 4, !tbaa !21
  %571 = add nsw i32 %570, 1
  store i32 %571, ptr %23, align 4, !tbaa !21
  br label %548, !llvm.loop !47

572:                                              ; preds = %548
  br label %573

573:                                              ; preds = %572
  %574 = load i32, ptr %22, align 4, !tbaa !21
  %575 = add nsw i32 %574, 1
  store i32 %575, ptr %22, align 4, !tbaa !21
  br label %518, !llvm.loop !48

576:                                              ; preds = %518
  %577 = load ptr, ptr %6, align 8, !tbaa !5
  %578 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %577, i32 0, i32 5
  %579 = load ptr, ptr %578, align 8, !tbaa !22
  %580 = load ptr, ptr %6, align 8, !tbaa !5
  %581 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %580, i32 0, i32 2
  %582 = load i32, ptr %581, align 8, !tbaa !23
  %583 = ashr i32 0, %582
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds ptr, ptr %579, i64 %584
  %586 = load ptr, ptr %585, align 8, !tbaa !5
  %587 = load ptr, ptr %6, align 8, !tbaa !5
  %588 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %587, i32 0, i32 3
  %589 = load i32, ptr %588, align 4, !tbaa !24
  %590 = and i32 0, %589
  %591 = load ptr, ptr %6, align 8, !tbaa !5
  %592 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %591, i32 0, i32 0
  %593 = load i32, ptr %592, align 8, !tbaa !25
  %594 = mul nsw i32 %590, %593
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds i8, ptr %586, i64 %595
  store ptr %596, ptr %12, align 8, !tbaa !5
  %597 = load ptr, ptr %12, align 8, !tbaa !5
  %598 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 36
  %599 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %598, ptr noundef nonnull align 8 dereferenceable(12) %597)
  store i32 0, ptr %23, align 4, !tbaa !21
  br label %600

600:                                              ; preds = %667, %576
  %601 = load i32, ptr %23, align 4, !tbaa !21
  %602 = icmp slt i32 %601, 2
  br i1 %602, label %603, label %670

603:                                              ; preds = %600
  %604 = load i32, ptr %23, align 4, !tbaa !21
  %605 = icmp eq i32 %604, 0
  br i1 %605, label %606, label %608

606:                                              ; preds = %603
  %607 = load ptr, ptr %7, align 8, !tbaa !5
  br label %610

608:                                              ; preds = %603
  %609 = load ptr, ptr %8, align 8, !tbaa !5
  br label %610

610:                                              ; preds = %608, %606
  %611 = phi ptr [ %607, %606 ], [ %609, %608 ]
  store ptr %611, ptr %9, align 8, !tbaa !5
  %612 = load ptr, ptr %9, align 8, !tbaa !5
  %613 = icmp ne ptr %612, null
  br i1 %613, label %614, label %666

614:                                              ; preds = %610
  store i32 0, ptr %22, align 4, !tbaa !21
  br label %615

615:                                              ; preds = %662, %614
  %616 = load i32, ptr %22, align 4, !tbaa !21
  %617 = sext i32 %616 to i64
  %618 = load ptr, ptr %9, align 8, !tbaa !5
  %619 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %618, i32 0, i32 6
  %620 = load i64, ptr %619, align 8, !tbaa !19
  %621 = icmp slt i64 %617, %620
  br i1 %621, label %622, label %665

622:                                              ; preds = %615
  %623 = load ptr, ptr %9, align 8, !tbaa !5
  %624 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %623, i32 0, i32 5
  %625 = load ptr, ptr %624, align 8, !tbaa !22
  %626 = load i32, ptr %22, align 4, !tbaa !21
  %627 = load ptr, ptr %9, align 8, !tbaa !5
  %628 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %627, i32 0, i32 2
  %629 = load i32, ptr %628, align 8, !tbaa !23
  %630 = ashr i32 %626, %629
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds ptr, ptr %625, i64 %631
  %633 = load ptr, ptr %632, align 8, !tbaa !5
  %634 = load i32, ptr %22, align 4, !tbaa !21
  %635 = load ptr, ptr %9, align 8, !tbaa !5
  %636 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %635, i32 0, i32 3
  %637 = load i32, ptr %636, align 4, !tbaa !24
  %638 = and i32 %634, %637
  %639 = load ptr, ptr %9, align 8, !tbaa !5
  %640 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %639, i32 0, i32 0
  %641 = load i32, ptr %640, align 8, !tbaa !25
  %642 = mul nsw i32 %638, %641
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds i8, ptr %633, i64 %643
  store ptr %644, ptr %12, align 8, !tbaa !5
  %645 = load ptr, ptr %12, align 8, !tbaa !5
  %646 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %645)
  br i1 %646, label %647, label %657

647:                                              ; preds = %622
  %648 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN10tetgenmesh8uninfectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %648)
  %649 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN10tetgenmesh10unmarktestERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %649)
  %650 = load ptr, ptr %12, align 8, !tbaa !5
  %651 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %650)
  br i1 %651, label %652, label %656

652:                                              ; preds = %647
  %653 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 76
  %654 = load i64, ptr %653, align 8, !tbaa !43
  %655 = add nsw i64 %654, 1
  store i64 %655, ptr %653, align 8, !tbaa !43
  br label %656

656:                                              ; preds = %652, %647
  br label %661

657:                                              ; preds = %622
  %658 = load ptr, ptr %12, align 8, !tbaa !5
  %659 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %658, i32 0, i32 0
  %660 = load ptr, ptr %659, align 8, !tbaa !26
  call void @_ZN10tetgenmesh18tetrahedrondeallocEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %660)
  br label %661

661:                                              ; preds = %657, %656
  br label %662

662:                                              ; preds = %661
  %663 = load i32, ptr %22, align 4, !tbaa !21
  %664 = add nsw i32 %663, 1
  store i32 %664, ptr %22, align 4, !tbaa !21
  br label %615, !llvm.loop !49

665:                                              ; preds = %615
  br label %666

666:                                              ; preds = %665, %610
  br label %667

667:                                              ; preds = %666
  %668 = load i32, ptr %23, align 4, !tbaa !21
  %669 = add nsw i32 %668, 1
  store i32 %669, ptr %23, align 4, !tbaa !21
  br label %600, !llvm.loop !50

670:                                              ; preds = %600
  %671 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %671)
  %672 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %672)
  %673 = load ptr, ptr %8, align 8, !tbaa !5
  %674 = icmp ne ptr %673, null
  br i1 %674, label %675, label %677

675:                                              ; preds = %670
  %676 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %676)
  br label %677

677:                                              ; preds = %675, %670
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, 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 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  ret void
}

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


; 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] }>

@_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.389 = external hidden unnamed_addr constant [35 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: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #1

; 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 #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12)) unnamed_addr #2 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 #2 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12)) unnamed_addr #2 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 #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh8tssbond1ERNS_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 #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh8sstbond1ERNS_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 #4 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 #3 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 #4 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 #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh10stdissolveERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #3 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 #3 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 #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #3 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 #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #3 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 #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh9suninfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #3 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 #3 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh9sstpivot1ERNS_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 #3 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10tetgenmesh11carvecavityEPNS_9arraypoolES1_S1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) local_unnamed_addr #5 align 2 {
  %5 = alloca ptr, align 8
  %6 = alloca %"class.tetgenmesh::triface", align 8
  %7 = alloca %"class.tetgenmesh::triface", align 8
  %8 = alloca %"class.tetgenmesh::triface", align 8
  %9 = alloca %"class.tetgenmesh::face", align 8
  %10 = alloca ptr, align 8
  %11 = alloca %"class.tetgenmesh::face", align 8
  %12 = alloca ptr, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #6
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #6
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #6
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #6
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  store ptr null, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #6
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %11)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  %13 = getelementptr inbounds i8, ptr %0, i64 16
  %14 = load ptr, ptr %13, align 8, !tbaa !9
  %15 = getelementptr inbounds i8, ptr %14, i64 148
  %16 = load i32, ptr %15, align 4, !tbaa !16
  %17 = icmp sgt i32 %16, 2
  br i1 %17, label %18, label %22

18:                                               ; preds = %4
  %19 = getelementptr inbounds i8, ptr %1, i64 32
  %20 = load i64, ptr %19, align 8, !tbaa !19
  %21 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.389, i64 noundef %20)
  br label %22

22:                                               ; preds = %18, %4
  %23 = getelementptr inbounds i8, ptr %1, i64 32
  %24 = load i64, ptr %23, align 8, !tbaa !19
  %25 = icmp sgt i64 %24, 0
  br i1 %25, label %.lr.ph, label %.preheader142

.lr.ph:                                           ; preds = %22
  %26 = getelementptr inbounds i8, ptr %1, i64 24
  %27 = getelementptr inbounds i8, ptr %1, i64 8
  %28 = getelementptr inbounds i8, ptr %1, i64 12
  %29 = getelementptr inbounds i8, ptr %0, i64 152
  %30 = getelementptr inbounds i8, ptr %0, i64 160
  br label %36

.preheader142:                                    ; preds = %.loopexit144, %22
  %31 = getelementptr inbounds i8, ptr %0, i64 152
  %32 = load ptr, ptr %31, align 8, !tbaa !21
  %33 = getelementptr inbounds i8, ptr %32, i64 32
  %34 = load i64, ptr %33, align 8, !tbaa !19
  %35 = icmp sgt i64 %34, 0
  br i1 %35, label %.lr.ph153, label %.preheader141

36:                                               ; preds = %.lr.ph, %.loopexit144
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %.loopexit144 ]
  %37 = load ptr, ptr %26, align 8, !tbaa !22
  %38 = load i32, ptr %27, align 8, !tbaa !23
  %39 = trunc nuw nsw i64 %indvars.iv to i32
  %40 = lshr i32 %39, %38
  %41 = zext nneg i32 %40 to i64
  %42 = getelementptr inbounds ptr, ptr %37, i64 %41
  %43 = load ptr, ptr %42, align 8, !tbaa !5
  %44 = load i32, ptr %28, align 4, !tbaa !24
  %45 = and i32 %44, %39
  %46 = load i32, ptr %1, align 8, !tbaa !25
  %47 = mul nsw i32 %45, %46
  %48 = sext i32 %47 to i64
  %49 = getelementptr inbounds i8, ptr %43, i64 %48
  %50 = load ptr, ptr %49, align 8, !tbaa !26
  %51 = getelementptr inbounds i8, ptr %50, i64 72
  %52 = load ptr, ptr %51, align 8, !tbaa !5
  %.not129 = icmp eq ptr %52, null
  br i1 %.not129, label %.loopexit146, label %.preheader145.preheader

.preheader145.preheader:                          ; preds = %36
  %53 = load ptr, ptr %52, align 8, !tbaa !5
  %.not133 = icmp eq ptr %53, null
  br i1 %.not133, label %.preheader145.1, label %54

54:                                               ; preds = %.preheader145.preheader
  call void @_ZN10tetgenmesh7sdecodeEPPdRNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %53, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %55 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br i1 %55, label %.preheader145.1, label %56

56:                                               ; preds = %54
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %57 = load ptr, ptr %29, align 8, !tbaa !21
  %58 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %57, ptr noundef nonnull %10)
  %59 = load ptr, ptr %10, align 8, !tbaa !5
  %60 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %59, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %.preheader145.1

.preheader145.1:                                  ; preds = %.preheader145.preheader, %56, %54
  %61 = getelementptr inbounds i8, ptr %52, i64 8
  %62 = load ptr, ptr %61, align 8, !tbaa !5
  %.not133.1 = icmp eq ptr %62, null
  br i1 %.not133.1, label %.preheader145.2, label %63

63:                                               ; preds = %.preheader145.1
  call void @_ZN10tetgenmesh7sdecodeEPPdRNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %62, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %64 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br i1 %64, label %.preheader145.2, label %65

65:                                               ; preds = %63
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %66 = load ptr, ptr %29, align 8, !tbaa !21
  %67 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %66, ptr noundef nonnull %10)
  %68 = load ptr, ptr %10, align 8, !tbaa !5
  %69 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %68, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %.preheader145.2

.preheader145.2:                                  ; preds = %65, %63, %.preheader145.1
  %70 = getelementptr inbounds i8, ptr %52, i64 16
  %71 = load ptr, ptr %70, align 8, !tbaa !5
  %.not133.2 = icmp eq ptr %71, null
  br i1 %.not133.2, label %.preheader145.3, label %72

72:                                               ; preds = %.preheader145.2
  call void @_ZN10tetgenmesh7sdecodeEPPdRNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %71, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %73 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br i1 %73, label %.preheader145.3, label %74

74:                                               ; preds = %72
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %75 = load ptr, ptr %29, align 8, !tbaa !21
  %76 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %75, ptr noundef nonnull %10)
  %77 = load ptr, ptr %10, align 8, !tbaa !5
  %78 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %77, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %.preheader145.3

.preheader145.3:                                  ; preds = %74, %72, %.preheader145.2
  %79 = getelementptr inbounds i8, ptr %52, i64 24
  %80 = load ptr, ptr %79, align 8, !tbaa !5
  %.not133.3 = icmp eq ptr %80, null
  br i1 %.not133.3, label %.loopexit146.loopexit, label %81

81:                                               ; preds = %.preheader145.3
  call void @_ZN10tetgenmesh7sdecodeEPPdRNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %80, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %82 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br i1 %82, label %.loopexit146.loopexit, label %83

83:                                               ; preds = %81
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %84 = load ptr, ptr %29, align 8, !tbaa !21
  %85 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %84, ptr noundef nonnull %10)
  %86 = load ptr, ptr %10, align 8, !tbaa !5
  %87 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %86, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %.loopexit146.loopexit

.loopexit146.loopexit:                            ; preds = %83, %81, %.preheader145.3
  %.pre = load ptr, ptr %49, align 8, !tbaa !26
  br label %.loopexit146

.loopexit146:                                     ; preds = %.loopexit146.loopexit, %36
  %88 = phi ptr [ %.pre, %.loopexit146.loopexit ], [ %50, %36 ]
  %89 = getelementptr inbounds i8, ptr %88, i64 64
  %90 = load ptr, ptr %89, align 8, !tbaa !5
  %.not130 = icmp eq ptr %90, null
  br i1 %.not130, label %.loopexit144, label %.preheader143.preheader

.preheader143.preheader:                          ; preds = %.loopexit146
  %91 = load ptr, ptr %90, align 8, !tbaa !5
  %.not131 = icmp eq ptr %91, null
  br i1 %.not131, label %.preheader143.1, label %92

92:                                               ; preds = %.preheader143.preheader
  call void @_ZN10tetgenmesh7sdecodeEPPdRNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %91, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %93 = load ptr, ptr %11, align 8, !tbaa !27
  %94 = getelementptr inbounds i8, ptr %93, i64 24
  %95 = load ptr, ptr %94, align 8, !tbaa !5
  %.not132 = icmp eq ptr %95, null
  br i1 %.not132, label %.preheader143.1, label %96

96:                                               ; preds = %92
  %97 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11)
  br i1 %97, label %.preheader143.1, label %98

98:                                               ; preds = %96
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %99 = load ptr, ptr %30, align 8, !tbaa !28
  %100 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %99, ptr noundef nonnull %12)
  %101 = load ptr, ptr %12, align 8, !tbaa !5
  %102 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %101, ptr noundef nonnull align 8 dereferenceable(12) %11)
  br label %.preheader143.1

.preheader143.1:                                  ; preds = %.preheader143.preheader, %96, %98, %92
  %103 = getelementptr inbounds i8, ptr %90, i64 8
  %104 = load ptr, ptr %103, align 8, !tbaa !5
  %.not131.1 = icmp eq ptr %104, null
  br i1 %.not131.1, label %.preheader143.2, label %105

105:                                              ; preds = %.preheader143.1
  call void @_ZN10tetgenmesh7sdecodeEPPdRNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %104, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %106 = load ptr, ptr %11, align 8, !tbaa !27
  %107 = getelementptr inbounds i8, ptr %106, i64 24
  %108 = load ptr, ptr %107, align 8, !tbaa !5
  %.not132.1 = icmp eq ptr %108, null
  br i1 %.not132.1, label %.preheader143.2, label %109

109:                                              ; preds = %105
  %110 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11)
  br i1 %110, label %.preheader143.2, label %111

111:                                              ; preds = %109
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %112 = load ptr, ptr %30, align 8, !tbaa !28
  %113 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %112, ptr noundef nonnull %12)
  %114 = load ptr, ptr %12, align 8, !tbaa !5
  %115 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %114, ptr noundef nonnull align 8 dereferenceable(12) %11)
  br label %.preheader143.2

.preheader143.2:                                  ; preds = %111, %109, %105, %.preheader143.1
  %116 = getelementptr inbounds i8, ptr %90, i64 16
  %117 = load ptr, ptr %116, align 8, !tbaa !5
  %.not131.2 = icmp eq ptr %117, null
  br i1 %.not131.2, label %.preheader143.3, label %118

118:                                              ; preds = %.preheader143.2
  call void @_ZN10tetgenmesh7sdecodeEPPdRNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %117, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %119 = load ptr, ptr %11, align 8, !tbaa !27
  %120 = getelementptr inbounds i8, ptr %119, i64 24
  %121 = load ptr, ptr %120, align 8, !tbaa !5
  %.not132.2 = icmp eq ptr %121, null
  br i1 %.not132.2, label %.preheader143.3, label %122

122:                                              ; preds = %118
  %123 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11)
  br i1 %123, label %.preheader143.3, label %124

124:                                              ; preds = %122
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %125 = load ptr, ptr %30, align 8, !tbaa !28
  %126 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %125, ptr noundef nonnull %12)
  %127 = load ptr, ptr %12, align 8, !tbaa !5
  %128 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %127, ptr noundef nonnull align 8 dereferenceable(12) %11)
  br label %.preheader143.3

.preheader143.3:                                  ; preds = %124, %122, %118, %.preheader143.2
  %129 = getelementptr inbounds i8, ptr %90, i64 24
  %130 = load ptr, ptr %129, align 8, !tbaa !5
  %.not131.3 = icmp eq ptr %130, null
  br i1 %.not131.3, label %.preheader143.4, label %131

131:                                              ; preds = %.preheader143.3
  call void @_ZN10tetgenmesh7sdecodeEPPdRNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %130, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %132 = load ptr, ptr %11, align 8, !tbaa !27
  %133 = getelementptr inbounds i8, ptr %132, i64 24
  %134 = load ptr, ptr %133, align 8, !tbaa !5
  %.not132.3 = icmp eq ptr %134, null
  br i1 %.not132.3, label %.preheader143.4, label %135

135:                                              ; preds = %131
  %136 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11)
  br i1 %136, label %.preheader143.4, label %137

137:                                              ; preds = %135
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %138 = load ptr, ptr %30, align 8, !tbaa !28
  %139 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %138, ptr noundef nonnull %12)
  %140 = load ptr, ptr %12, align 8, !tbaa !5
  %141 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %140, ptr noundef nonnull align 8 dereferenceable(12) %11)
  br label %.preheader143.4

.preheader143.4:                                  ; preds = %137, %135, %131, %.preheader143.3
  %142 = getelementptr inbounds i8, ptr %90, i64 32
  %143 = load ptr, ptr %142, align 8, !tbaa !5
  %.not131.4 = icmp eq ptr %143, null
  br i1 %.not131.4, label %.preheader143.5, label %144

144:                                              ; preds = %.preheader143.4
  call void @_ZN10tetgenmesh7sdecodeEPPdRNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %143, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %145 = load ptr, ptr %11, align 8, !tbaa !27
  %146 = getelementptr inbounds i8, ptr %145, i64 24
  %147 = load ptr, ptr %146, align 8, !tbaa !5
  %.not132.4 = icmp eq ptr %147, null
  br i1 %.not132.4, label %.preheader143.5, label %148

148:                                              ; preds = %144
  %149 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11)
  br i1 %149, label %.preheader143.5, label %150

150:                                              ; preds = %148
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %151 = load ptr, ptr %30, align 8, !tbaa !28
  %152 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %151, ptr noundef nonnull %12)
  %153 = load ptr, ptr %12, align 8, !tbaa !5
  %154 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %153, ptr noundef nonnull align 8 dereferenceable(12) %11)
  br label %.preheader143.5

.preheader143.5:                                  ; preds = %150, %148, %144, %.preheader143.4
  %155 = getelementptr inbounds i8, ptr %90, i64 40
  %156 = load ptr, ptr %155, align 8, !tbaa !5
  %.not131.5 = icmp eq ptr %156, null
  br i1 %.not131.5, label %.loopexit144, label %157

157:                                              ; preds = %.preheader143.5
  call void @_ZN10tetgenmesh7sdecodeEPPdRNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %156, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %158 = load ptr, ptr %11, align 8, !tbaa !27
  %159 = getelementptr inbounds i8, ptr %158, i64 24
  %160 = load ptr, ptr %159, align 8, !tbaa !5
  %.not132.5 = icmp eq ptr %160, null
  br i1 %.not132.5, label %.loopexit144, label %161

161:                                              ; preds = %157
  %162 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11)
  br i1 %162, label %.loopexit144, label %163

163:                                              ; preds = %161
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %164 = load ptr, ptr %30, align 8, !tbaa !28
  %165 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %164, ptr noundef nonnull %12)
  %166 = load ptr, ptr %12, align 8, !tbaa !5
  %167 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %166, ptr noundef nonnull align 8 dereferenceable(12) %11)
  br label %.loopexit144

.loopexit144:                                     ; preds = %.preheader143.5, %157, %161, %163, %.loopexit146
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %168 = load i64, ptr %23, align 8, !tbaa !19
  %169 = icmp sgt i64 %168, %indvars.iv.next
  br i1 %169, label %36, label %.preheader142, !llvm.loop !29

.preheader141:                                    ; preds = %.lr.ph153, %.preheader142
  %170 = phi ptr [ %32, %.preheader142 ], [ %193, %.lr.ph153 ]
  %171 = getelementptr inbounds i8, ptr %0, i64 160
  %172 = load ptr, ptr %171, align 8, !tbaa !28
  %173 = getelementptr inbounds i8, ptr %172, i64 32
  %174 = load i64, ptr %173, align 8, !tbaa !19
  %175 = icmp sgt i64 %174, 0
  br i1 %175, label %.lr.ph155, label %.preheader140

.lr.ph153:                                        ; preds = %.preheader142, %.lr.ph153
  %indvars.iv177 = phi i64 [ %indvars.iv.next178, %.lr.ph153 ], [ 0, %.preheader142 ]
  %176 = phi ptr [ %193, %.lr.ph153 ], [ %32, %.preheader142 ]
  %177 = getelementptr inbounds i8, ptr %176, i64 24
  %178 = load ptr, ptr %177, align 8, !tbaa !22
  %179 = getelementptr inbounds i8, ptr %176, i64 8
  %180 = load i32, ptr %179, align 8, !tbaa !23
  %181 = trunc nuw nsw i64 %indvars.iv177 to i32
  %182 = lshr i32 %181, %180
  %183 = zext nneg i32 %182 to i64
  %184 = getelementptr inbounds ptr, ptr %178, i64 %183
  %185 = load ptr, ptr %184, align 8, !tbaa !5
  %186 = getelementptr inbounds i8, ptr %176, i64 12
  %187 = load i32, ptr %186, align 4, !tbaa !24
  %188 = and i32 %187, %181
  %189 = load i32, ptr %176, align 8, !tbaa !25
  %190 = mul nsw i32 %188, %189
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds i8, ptr %185, i64 %191
  store ptr %192, ptr %10, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9suninfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %192)
  %indvars.iv.next178 = add nuw nsw i64 %indvars.iv177, 1
  %193 = load ptr, ptr %31, align 8, !tbaa !21
  %194 = getelementptr inbounds i8, ptr %193, i64 32
  %195 = load i64, ptr %194, align 8, !tbaa !19
  %196 = icmp sgt i64 %195, %indvars.iv.next178
  br i1 %196, label %.lr.ph153, label %.preheader141, !llvm.loop !31

.preheader140.loopexit:                           ; preds = %.lr.ph155
  %.pre204 = load ptr, ptr %31, align 8, !tbaa !21
  br label %.preheader140

.preheader140:                                    ; preds = %.preheader140.loopexit, %.preheader141
  %197 = phi ptr [ %220, %.preheader140.loopexit ], [ %172, %.preheader141 ]
  %198 = phi ptr [ %.pre204, %.preheader140.loopexit ], [ %170, %.preheader141 ]
  %199 = getelementptr inbounds i8, ptr %198, i64 32
  %200 = load i64, ptr %199, align 8, !tbaa !19
  %201 = icmp sgt i64 %200, 0
  br i1 %201, label %.lr.ph157, label %.preheader139

.lr.ph157:                                        ; preds = %.preheader140
  %202 = getelementptr inbounds i8, ptr %0, i64 176
  br label %231

.lr.ph155:                                        ; preds = %.preheader141, %.lr.ph155
  %indvars.iv180 = phi i64 [ %indvars.iv.next181, %.lr.ph155 ], [ 0, %.preheader141 ]
  %203 = phi ptr [ %220, %.lr.ph155 ], [ %172, %.preheader141 ]
  %204 = getelementptr inbounds i8, ptr %203, i64 24
  %205 = load ptr, ptr %204, align 8, !tbaa !22
  %206 = getelementptr inbounds i8, ptr %203, i64 8
  %207 = load i32, ptr %206, align 8, !tbaa !23
  %208 = trunc nuw nsw i64 %indvars.iv180 to i32
  %209 = lshr i32 %208, %207
  %210 = zext nneg i32 %209 to i64
  %211 = getelementptr inbounds ptr, ptr %205, i64 %210
  %212 = load ptr, ptr %211, align 8, !tbaa !5
  %213 = getelementptr inbounds i8, ptr %203, i64 12
  %214 = load i32, ptr %213, align 4, !tbaa !24
  %215 = and i32 %214, %208
  %216 = load i32, ptr %203, align 8, !tbaa !25
  %217 = mul nsw i32 %215, %216
  %218 = sext i32 %217 to i64
  %219 = getelementptr inbounds i8, ptr %212, i64 %218
  store ptr %219, ptr %12, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9suninfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %219)
  %indvars.iv.next181 = add nuw nsw i64 %indvars.iv180, 1
  %220 = load ptr, ptr %171, align 8, !tbaa !28
  %221 = getelementptr inbounds i8, ptr %220, i64 32
  %222 = load i64, ptr %221, align 8, !tbaa !19
  %223 = icmp sgt i64 %222, %indvars.iv.next181
  br i1 %223, label %.lr.ph155, label %.preheader140.loopexit, !llvm.loop !32

.preheader139.loopexit:                           ; preds = %266
  %.pre205 = load ptr, ptr %171, align 8, !tbaa !28
  br label %.preheader139

.preheader139:                                    ; preds = %.preheader139.loopexit, %.preheader140
  %224 = phi ptr [ %267, %.preheader139.loopexit ], [ %198, %.preheader140 ]
  %225 = phi ptr [ %.pre205, %.preheader139.loopexit ], [ %197, %.preheader140 ]
  %226 = getelementptr inbounds i8, ptr %225, i64 32
  %227 = load i64, ptr %226, align 8, !tbaa !19
  %228 = icmp sgt i64 %227, 0
  br i1 %228, label %.lr.ph159, label %._crit_edge

.lr.ph159:                                        ; preds = %.preheader139
  %229 = getelementptr inbounds i8, ptr %8, i64 8
  %230 = getelementptr inbounds i8, ptr %0, i64 184
  br label %271

231:                                              ; preds = %.lr.ph157, %266
  %indvars.iv183 = phi i64 [ 0, %.lr.ph157 ], [ %indvars.iv.next184, %266 ]
  %232 = phi ptr [ %198, %.lr.ph157 ], [ %267, %266 ]
  %233 = getelementptr inbounds i8, ptr %232, i64 24
  %234 = load ptr, ptr %233, align 8, !tbaa !22
  %235 = getelementptr inbounds i8, ptr %232, i64 8
  %236 = load i32, ptr %235, align 8, !tbaa !23
  %237 = trunc nuw nsw i64 %indvars.iv183 to i32
  %238 = lshr i32 %237, %236
  %239 = zext nneg i32 %238 to i64
  %240 = getelementptr inbounds ptr, ptr %234, i64 %239
  %241 = load ptr, ptr %240, align 8, !tbaa !5
  %242 = getelementptr inbounds i8, ptr %232, i64 12
  %243 = load i32, ptr %242, align 4, !tbaa !24
  %244 = and i32 %243, %237
  %245 = load i32, ptr %232, align 8, !tbaa !25
  %246 = mul nsw i32 %244, %245
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds i8, ptr %241, i64 %247
  store ptr %248, ptr %10, align 8, !tbaa !5
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %248, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %249 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br i1 %249, label %250, label %261

250:                                              ; preds = %231
  %251 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %251)
  %252 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %252, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %253 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br i1 %253, label %254, label %261

254:                                              ; preds = %250
  %255 = load ptr, ptr %10, align 8, !tbaa !5
  %256 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %255)
  call void @_ZN10tetgenmesh10stdissolveERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %257 = load ptr, ptr %202, align 8, !tbaa !33
  %258 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %257, ptr noundef nonnull %10)
  %259 = load ptr, ptr %10, align 8, !tbaa !5
  %260 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %259, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %261

261:                                              ; preds = %250, %254, %231
  %262 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br i1 %262, label %266, label %263

263:                                              ; preds = %261
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %264 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %264)
  %265 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %265)
  br label %266

266:                                              ; preds = %261, %263
  %indvars.iv.next184 = add nuw nsw i64 %indvars.iv183, 1
  %267 = load ptr, ptr %31, align 8, !tbaa !21
  %268 = getelementptr inbounds i8, ptr %267, i64 32
  %269 = load i64, ptr %268, align 8, !tbaa !19
  %270 = icmp sgt i64 %269, %indvars.iv.next184
  br i1 %270, label %231, label %.preheader139.loopexit, !llvm.loop !34

271:                                              ; preds = %.lr.ph159, %.loopexit137
  %indvars.iv186 = phi i64 [ 0, %.lr.ph159 ], [ %indvars.iv.next187, %.loopexit137 ]
  %272 = phi ptr [ %225, %.lr.ph159 ], [ %333, %.loopexit137 ]
  %273 = getelementptr inbounds i8, ptr %272, i64 24
  %274 = load ptr, ptr %273, align 8, !tbaa !22
  %275 = getelementptr inbounds i8, ptr %272, i64 8
  %276 = load i32, ptr %275, align 8, !tbaa !23
  %277 = trunc nuw nsw i64 %indvars.iv186 to i32
  %278 = lshr i32 %277, %276
  %279 = zext nneg i32 %278 to i64
  %280 = getelementptr inbounds ptr, ptr %274, i64 %279
  %281 = load ptr, ptr %280, align 8, !tbaa !5
  %282 = getelementptr inbounds i8, ptr %272, i64 12
  %283 = load i32, ptr %282, align 4, !tbaa !24
  %284 = and i32 %283, %277
  %285 = load i32, ptr %272, align 8, !tbaa !25
  %286 = mul nsw i32 %284, %285
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds i8, ptr %281, i64 %287
  %289 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %11, ptr noundef nonnull align 8 dereferenceable(12) %288)
  call void @_ZN10tetgenmesh9sstpivot1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %290 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %8, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br label %291

291:                                              ; preds = %293, %271
  %292 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br i1 %292, label %293, label %.loopexit138

293:                                              ; preds = %291
  %294 = load i32, ptr %229, align 8, !tbaa !35
  %295 = load ptr, ptr %8, align 8, !tbaa !26
  %296 = sext i32 %294 to i64
  %297 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %296
  %298 = load i32, ptr %297, align 4, !tbaa !36
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds ptr, ptr %295, i64 %299
  %301 = load ptr, ptr %300, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %301, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %302 = load i32, ptr %229, align 8, !tbaa !35
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %296, i64 %303
  %305 = load i32, ptr %304, align 4, !tbaa !36
  store i32 %305, ptr %229, align 8, !tbaa !35
  %306 = load ptr, ptr %8, align 8, !tbaa !26
  %307 = load ptr, ptr %7, align 8, !tbaa !26
  %308 = icmp eq ptr %306, %307
  br i1 %308, label %309, label %291, !llvm.loop !37

309:                                              ; preds = %293
  call void @_ZN10tetgenmesh12sstdissolve1ERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %310 = load ptr, ptr %230, align 8, !tbaa !38
  %311 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %310, ptr noundef nonnull %12)
  %312 = load ptr, ptr %12, align 8, !tbaa !5
  %313 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %312, ptr noundef nonnull align 8 dereferenceable(12) %11)
  br label %.loopexit138

.loopexit138:                                     ; preds = %291, %309
  %314 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br i1 %314, label %.loopexit137, label %315

315:                                              ; preds = %.loopexit138
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %316 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %317

317:                                              ; preds = %317, %315
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %318 = load i32, ptr %229, align 8, !tbaa !35
  %319 = load ptr, ptr %8, align 8, !tbaa !26
  %320 = sext i32 %318 to i64
  %321 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %320
  %322 = load i32, ptr %321, align 4, !tbaa !36
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds ptr, ptr %319, i64 %323
  %325 = load ptr, ptr %324, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %325, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %326 = load i32, ptr %229, align 8, !tbaa !35
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %320, i64 %327
  %329 = load i32, ptr %328, align 4, !tbaa !36
  store i32 %329, ptr %229, align 8, !tbaa !35
  %330 = load ptr, ptr %8, align 8, !tbaa !26
  %331 = load ptr, ptr %7, align 8, !tbaa !26
  %332 = icmp eq ptr %330, %331
  br i1 %332, label %.loopexit137, label %317, !llvm.loop !39

.loopexit137:                                     ; preds = %317, %.loopexit138
  %indvars.iv.next187 = add nuw nsw i64 %indvars.iv186, 1
  %333 = load ptr, ptr %171, align 8, !tbaa !28
  %334 = getelementptr inbounds i8, ptr %333, i64 32
  %335 = load i64, ptr %334, align 8, !tbaa !19
  %336 = icmp sgt i64 %335, %indvars.iv.next187
  br i1 %336, label %271, label %._crit_edge.loopexit, !llvm.loop !40

._crit_edge.loopexit:                             ; preds = %.loopexit137
  %.pre206 = load ptr, ptr %31, align 8, !tbaa !21
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader139
  %337 = phi ptr [ %.pre206, %._crit_edge.loopexit ], [ %224, %.preheader139 ]
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %337)
  %338 = load ptr, ptr %171, align 8, !tbaa !28
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %338)
  %339 = load i64, ptr %23, align 8, !tbaa !19
  %340 = icmp sgt i64 %339, 0
  br i1 %340, label %.lr.ph162, label %._crit_edge163

.lr.ph162:                                        ; preds = %._crit_edge
  %341 = getelementptr inbounds i8, ptr %1, i64 24
  %342 = getelementptr inbounds i8, ptr %1, i64 8
  %343 = getelementptr inbounds i8, ptr %1, i64 12
  %344 = getelementptr inbounds i8, ptr %0, i64 552
  br label %345

345:                                              ; preds = %.lr.ph162, %363
  %indvars.iv189 = phi i64 [ 0, %.lr.ph162 ], [ %indvars.iv.next190, %363 ]
  %346 = load ptr, ptr %341, align 8, !tbaa !22
  %347 = load i32, ptr %342, align 8, !tbaa !23
  %348 = trunc nuw nsw i64 %indvars.iv189 to i32
  %349 = lshr i32 %348, %347
  %350 = zext nneg i32 %349 to i64
  %351 = getelementptr inbounds ptr, ptr %346, i64 %350
  %352 = load ptr, ptr %351, align 8, !tbaa !5
  %353 = load i32, ptr %343, align 4, !tbaa !24
  %354 = and i32 %353, %348
  %355 = load i32, ptr %1, align 8, !tbaa !25
  %356 = mul nsw i32 %354, %355
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds i8, ptr %352, i64 %357
  %359 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %358)
  br i1 %359, label %360, label %363

360:                                              ; preds = %345
  %361 = load i64, ptr %344, align 8, !tbaa !41
  %362 = add nsw i64 %361, -1
  store i64 %362, ptr %344, align 8, !tbaa !41
  br label %363

363:                                              ; preds = %360, %345
  %364 = load ptr, ptr %358, align 8, !tbaa !26
  call void @_ZN10tetgenmesh18tetrahedrondeallocEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %364)
  %indvars.iv.next190 = add nuw nsw i64 %indvars.iv189, 1
  %365 = load i64, ptr %23, align 8, !tbaa !19
  %366 = icmp sgt i64 %365, %indvars.iv.next190
  br i1 %366, label %345, label %._crit_edge163, !llvm.loop !42

._crit_edge163:                                   ; preds = %363, %._crit_edge
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1)
  %.not128 = icmp eq ptr %2, null
  br i1 %.not128, label %.loopexit136, label %.preheader135

.lr.ph169:                                        ; preds = %.loopexit136.1
  %367 = getelementptr inbounds i8, ptr %1, i64 24
  %368 = getelementptr inbounds i8, ptr %1, i64 8
  %369 = getelementptr inbounds i8, ptr %1, i64 12
  br label %428

.preheader135:                                    ; preds = %._crit_edge163
  %370 = getelementptr inbounds i8, ptr %2, i64 32
  %371 = load i64, ptr %370, align 8, !tbaa !19
  %372 = icmp sgt i64 %371, 0
  br i1 %372, label %.lr.ph165, label %.loopexit136

.lr.ph165:                                        ; preds = %.preheader135
  %373 = getelementptr inbounds i8, ptr %2, i64 24
  %374 = getelementptr inbounds i8, ptr %2, i64 8
  %375 = getelementptr inbounds i8, ptr %2, i64 12
  br label %376

376:                                              ; preds = %.lr.ph165, %395
  %indvars.iv192 = phi i64 [ 0, %.lr.ph165 ], [ %indvars.iv.next193, %395 ]
  %377 = load ptr, ptr %373, align 8, !tbaa !22
  %378 = load i32, ptr %374, align 8, !tbaa !23
  %379 = trunc nuw nsw i64 %indvars.iv192 to i32
  %380 = lshr i32 %379, %378
  %381 = zext nneg i32 %380 to i64
  %382 = getelementptr inbounds ptr, ptr %377, i64 %381
  %383 = load ptr, ptr %382, align 8, !tbaa !5
  %384 = load i32, ptr %375, align 4, !tbaa !24
  %385 = and i32 %384, %379
  %386 = load i32, ptr %2, align 8, !tbaa !25
  %387 = mul nsw i32 %385, %386
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds i8, ptr %383, i64 %388
  %390 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %389)
  br i1 %390, label %391, label %395

391:                                              ; preds = %376
  %392 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull %5)
  %393 = load ptr, ptr %5, align 8, !tbaa !5
  %394 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %393, ptr noundef nonnull align 8 dereferenceable(12) %389)
  br label %395

395:                                              ; preds = %376, %391
  %indvars.iv.next193 = add nuw nsw i64 %indvars.iv192, 1
  %396 = load i64, ptr %370, align 8, !tbaa !19
  %397 = icmp sgt i64 %396, %indvars.iv.next193
  br i1 %397, label %376, label %.loopexit136, !llvm.loop !43

.loopexit136:                                     ; preds = %395, %.preheader135, %._crit_edge163
  %.not128.1 = icmp eq ptr %3, null
  br i1 %.not128.1, label %.loopexit136.1, label %.preheader135.1

.preheader135.1:                                  ; preds = %.loopexit136
  %398 = getelementptr inbounds i8, ptr %3, i64 32
  %399 = load i64, ptr %398, align 8, !tbaa !19
  %400 = icmp sgt i64 %399, 0
  br i1 %400, label %.lr.ph165.1, label %.loopexit136.1

.lr.ph165.1:                                      ; preds = %.preheader135.1
  %401 = getelementptr inbounds i8, ptr %3, i64 24
  %402 = getelementptr inbounds i8, ptr %3, i64 8
  %403 = getelementptr inbounds i8, ptr %3, i64 12
  br label %404

404:                                              ; preds = %423, %.lr.ph165.1
  %indvars.iv192.1 = phi i64 [ 0, %.lr.ph165.1 ], [ %indvars.iv.next193.1, %423 ]
  %405 = load ptr, ptr %401, align 8, !tbaa !22
  %406 = load i32, ptr %402, align 8, !tbaa !23
  %407 = trunc nuw nsw i64 %indvars.iv192.1 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 !5
  %412 = load i32, ptr %403, align 4, !tbaa !24
  %413 = and i32 %412, %407
  %414 = load i32, ptr %3, align 8, !tbaa !25
  %415 = mul nsw i32 %413, %414
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds i8, ptr %411, i64 %416
  %418 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %417)
  br i1 %418, label %419, label %423

419:                                              ; preds = %404
  %420 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull %5)
  %421 = load ptr, ptr %5, align 8, !tbaa !5
  %422 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %421, ptr noundef nonnull align 8 dereferenceable(12) %417)
  br label %423

423:                                              ; preds = %419, %404
  %indvars.iv.next193.1 = add nuw nsw i64 %indvars.iv192.1, 1
  %424 = load i64, ptr %398, align 8, !tbaa !19
  %425 = icmp sgt i64 %424, %indvars.iv.next193.1
  br i1 %425, label %404, label %.loopexit136.1, !llvm.loop !43

.loopexit136.1:                                   ; preds = %423, %.preheader135.1, %.loopexit136
  %426 = load i64, ptr %23, align 8, !tbaa !19
  %427 = icmp sgt i64 %426, 0
  br i1 %427, label %.lr.ph169, label %._crit_edge170

428:                                              ; preds = %.lr.ph169, %484
  %indvars.iv198 = phi i64 [ 0, %.lr.ph169 ], [ %indvars.iv.next199, %484 ]
  %429 = load ptr, ptr %367, align 8, !tbaa !22
  %430 = load i32, ptr %368, align 8, !tbaa !23
  %431 = trunc nuw nsw i64 %indvars.iv198 to i32
  %432 = lshr i32 %431, %430
  %433 = zext nneg i32 %432 to i64
  %434 = getelementptr inbounds ptr, ptr %429, i64 %433
  %435 = load ptr, ptr %434, align 8, !tbaa !5
  %436 = load i32, ptr %369, align 4, !tbaa !24
  %437 = and i32 %436, %431
  %438 = load i32, ptr %1, align 8, !tbaa !25
  %439 = mul nsw i32 %437, %438
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds i8, ptr %435, i64 %440
  %442 = load ptr, ptr %441, align 8, !tbaa !26
  %443 = load ptr, ptr %442, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %443, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %444 = call noundef zeroext i1 @_ZN10tetgenmesh10marktestedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br i1 %444, label %445, label %451

445:                                              ; preds = %428
  %446 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br i1 %446, label %451, label %447

447:                                              ; preds = %445
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %448 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull %5)
  %449 = load ptr, ptr %5, align 8, !tbaa !5
  %450 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %449, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br label %451

451:                                              ; preds = %428, %447, %445
  %452 = load ptr, ptr %441, align 8, !tbaa !26
  %453 = getelementptr inbounds i8, ptr %452, i64 8
  %454 = load ptr, ptr %453, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %454, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %455 = call noundef zeroext i1 @_ZN10tetgenmesh10marktestedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br i1 %455, label %456, label %462

456:                                              ; preds = %451
  %457 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br i1 %457, label %462, label %458

458:                                              ; preds = %456
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %459 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull %5)
  %460 = load ptr, ptr %5, align 8, !tbaa !5
  %461 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %460, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br label %462

462:                                              ; preds = %458, %456, %451
  %463 = load ptr, ptr %441, align 8, !tbaa !26
  %464 = getelementptr inbounds i8, ptr %463, i64 16
  %465 = load ptr, ptr %464, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %465, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %466 = call noundef zeroext i1 @_ZN10tetgenmesh10marktestedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br i1 %466, label %467, label %473

467:                                              ; preds = %462
  %468 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br i1 %468, label %473, label %469

469:                                              ; preds = %467
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %470 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull %5)
  %471 = load ptr, ptr %5, align 8, !tbaa !5
  %472 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %471, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br label %473

473:                                              ; preds = %469, %467, %462
  %474 = load ptr, ptr %441, align 8, !tbaa !26
  %475 = getelementptr inbounds i8, ptr %474, i64 24
  %476 = load ptr, ptr %475, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %476, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %477 = call noundef zeroext i1 @_ZN10tetgenmesh10marktestedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br i1 %477, label %478, label %484

478:                                              ; preds = %473
  %479 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br i1 %479, label %484, label %480

480:                                              ; preds = %478
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %481 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull %5)
  %482 = load ptr, ptr %5, align 8, !tbaa !5
  %483 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %482, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br label %484

484:                                              ; preds = %480, %478, %473
  %indvars.iv.next199 = add nuw nsw i64 %indvars.iv198, 1
  %485 = load i64, ptr %23, align 8, !tbaa !19
  %486 = icmp sgt i64 %485, %indvars.iv.next199
  br i1 %486, label %428, label %._crit_edge170, !llvm.loop !44

._crit_edge170:                                   ; preds = %484, %.loopexit136.1
  %487 = getelementptr inbounds i8, ptr %1, i64 24
  %488 = load ptr, ptr %487, align 8, !tbaa !22
  %489 = load ptr, ptr %488, align 8, !tbaa !5
  %490 = getelementptr inbounds i8, ptr %0, i64 288
  %491 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %490, ptr noundef nonnull align 8 dereferenceable(12) %489)
  %492 = getelementptr inbounds i8, ptr %0, i64 552
  br i1 %.not128, label %.loopexit, label %.preheader

.preheader:                                       ; preds = %._crit_edge170
  %493 = getelementptr inbounds i8, ptr %2, i64 32
  %494 = load i64, ptr %493, align 8, !tbaa !19
  %495 = icmp sgt i64 %494, 0
  br i1 %495, label %.lr.ph172, label %.loopexit

.lr.ph172:                                        ; preds = %.preheader
  %496 = getelementptr inbounds i8, ptr %2, i64 24
  %497 = getelementptr inbounds i8, ptr %2, i64 8
  %498 = getelementptr inbounds i8, ptr %2, i64 12
  br label %499

499:                                              ; preds = %.lr.ph172, %521
  %indvars.iv201 = phi i64 [ 0, %.lr.ph172 ], [ %indvars.iv.next202, %521 ]
  %500 = load ptr, ptr %496, align 8, !tbaa !22
  %501 = load i32, ptr %497, align 8, !tbaa !23
  %502 = trunc nuw nsw i64 %indvars.iv201 to i32
  %503 = lshr i32 %502, %501
  %504 = zext nneg i32 %503 to i64
  %505 = getelementptr inbounds ptr, ptr %500, i64 %504
  %506 = load ptr, ptr %505, align 8, !tbaa !5
  %507 = load i32, ptr %498, align 4, !tbaa !24
  %508 = and i32 %507, %502
  %509 = load i32, ptr %2, align 8, !tbaa !25
  %510 = mul nsw i32 %508, %509
  %511 = sext i32 %510 to i64
  %512 = getelementptr inbounds i8, ptr %506, i64 %511
  %513 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %512)
  br i1 %513, label %514, label %519

514:                                              ; preds = %499
  call void @_ZN10tetgenmesh8uninfectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %512)
  call void @_ZN10tetgenmesh10unmarktestERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %512)
  %515 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %512)
  br i1 %515, label %516, label %521

516:                                              ; preds = %514
  %517 = load i64, ptr %492, align 8, !tbaa !41
  %518 = add nsw i64 %517, 1
  store i64 %518, ptr %492, align 8, !tbaa !41
  br label %521

519:                                              ; preds = %499
  %520 = load ptr, ptr %512, align 8, !tbaa !26
  call void @_ZN10tetgenmesh18tetrahedrondeallocEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %520)
  br label %521

521:                                              ; preds = %519, %516, %514
  %indvars.iv.next202 = add nuw nsw i64 %indvars.iv201, 1
  %522 = load i64, ptr %493, align 8, !tbaa !19
  %523 = icmp sgt i64 %522, %indvars.iv.next202
  br i1 %523, label %499, label %.loopexit, !llvm.loop !45

.loopexit:                                        ; preds = %521, %.preheader, %._crit_edge170
  br i1 %.not128.1, label %.critedge, label %.preheader.1

.preheader.1:                                     ; preds = %.loopexit
  %524 = getelementptr inbounds i8, ptr %3, i64 32
  %525 = load i64, ptr %524, align 8, !tbaa !19
  %526 = icmp sgt i64 %525, 0
  br i1 %526, label %.lr.ph172.1, label %.loopexit.1

.lr.ph172.1:                                      ; preds = %.preheader.1
  %527 = getelementptr inbounds i8, ptr %3, i64 24
  %528 = getelementptr inbounds i8, ptr %3, i64 8
  %529 = getelementptr inbounds i8, ptr %3, i64 12
  br label %530

530:                                              ; preds = %552, %.lr.ph172.1
  %indvars.iv201.1 = phi i64 [ 0, %.lr.ph172.1 ], [ %indvars.iv.next202.1, %552 ]
  %531 = load ptr, ptr %527, align 8, !tbaa !22
  %532 = load i32, ptr %528, align 8, !tbaa !23
  %533 = trunc nuw nsw i64 %indvars.iv201.1 to i32
  %534 = lshr i32 %533, %532
  %535 = zext nneg i32 %534 to i64
  %536 = getelementptr inbounds ptr, ptr %531, i64 %535
  %537 = load ptr, ptr %536, align 8, !tbaa !5
  %538 = load i32, ptr %529, align 4, !tbaa !24
  %539 = and i32 %538, %533
  %540 = load i32, ptr %3, align 8, !tbaa !25
  %541 = mul nsw i32 %539, %540
  %542 = sext i32 %541 to i64
  %543 = getelementptr inbounds i8, ptr %537, i64 %542
  %544 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %543)
  br i1 %544, label %547, label %545

545:                                              ; preds = %530
  %546 = load ptr, ptr %543, align 8, !tbaa !26
  call void @_ZN10tetgenmesh18tetrahedrondeallocEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %546)
  br label %552

547:                                              ; preds = %530
  call void @_ZN10tetgenmesh8uninfectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %543)
  call void @_ZN10tetgenmesh10unmarktestERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %543)
  %548 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %543)
  br i1 %548, label %549, label %552

549:                                              ; preds = %547
  %550 = load i64, ptr %492, align 8, !tbaa !41
  %551 = add nsw i64 %550, 1
  store i64 %551, ptr %492, align 8, !tbaa !41
  br label %552

552:                                              ; preds = %549, %547, %545
  %indvars.iv.next202.1 = add nuw nsw i64 %indvars.iv201.1, 1
  %553 = load i64, ptr %524, align 8, !tbaa !19
  %554 = icmp sgt i64 %553, %indvars.iv.next202.1
  br i1 %554, label %530, label %.loopexit.1, !llvm.loop !45

.loopexit.1:                                      ; preds = %552, %.preheader.1
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1)
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %2)
  br i1 %.not128.1, label %555, label %.sink.split

.critedge:                                        ; preds = %.loopexit
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1)
  br label %.sink.split

.sink.split:                                      ; preds = %.loopexit.1, %.critedge
  %.sink = phi ptr [ %2, %.critedge ], [ %3, %.loopexit.1 ]
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %.sink)
  br label %555

555:                                              ; preds = %.sink.split, %.loopexit.1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #6
  ret void
}

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { 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 #4 = { 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 #5 = { 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 #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, !6, i64 16}
!10 = !{!"_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, !11, i64 288, !13, i64 304, !6, i64 320, !12, i64 328, !12, i64 332, !12, i64 336, !12, i64 340, !12, i64 344, !12, i64 348, !12, i64 352, !12, i64 356, !12, i64 360, !12, i64 364, !12, i64 368, !12, i64 372, !12, i64 376, !12, i64 380, !12, i64 384, !12, i64 388, !12, i64 392, !12, i64 396, !12, i64 400, !14, i64 408, !14, i64 416, !15, i64 424, !15, i64 432, !15, i64 440, !15, i64 448, !15, i64 456, !15, i64 464, !15, i64 472, !15, i64 480, !15, i64 488, !15, i64 496, !15, i64 504, !15, i64 512, !15, i64 520, !15, i64 528, !15, i64 536, !14, i64 544, !14, i64 552, !14, i64 560, !14, i64 568, !14, i64 576, !14, i64 584, !14, i64 592, !14, i64 600, !14, i64 608, !14, i64 616, !14, i64 624, !14, i64 632, !14, i64 640, !14, i64 648, !14, i64 656, !14, i64 664, !14, i64 672, !14, i64 680, !14, i64 688, !14, i64 696, !14, i64 704, !14, i64 712, !14, i64 720, !14, i64 728, !7, i64 736, !7, i64 1504}
!11 = !{!"_ZTSN10tetgenmesh7trifaceE", !6, i64 0, !12, i64 8}
!12 = !{!"int", !7, i64 0}
!13 = !{!"_ZTSN10tetgenmesh4faceE", !6, i64 0, !12, i64 8}
!14 = !{!"long", !7, i64 0}
!15 = !{!"double", !7, i64 0}
!16 = !{!17, !12, i64 148}
!17 = !{!"_ZTS14tetgenbehavior", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !12, i64 60, !12, i64 64, !12, i64 68, !12, i64 72, !12, i64 76, !12, i64 80, !12, i64 84, !12, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !12, i64 128, !12, i64 132, !12, i64 136, !12, i64 140, !12, i64 144, !12, i64 148, !12, i64 152, !12, i64 156, !12, i64 160, !12, i64 164, !12, i64 168, !12, i64 172, !12, i64 176, !12, i64 180, !12, i64 184, !12, i64 188, !12, i64 192, !12, i64 196, !12, i64 200, !12, i64 204, !12, i64 208, !12, i64 212, !12, i64 216, !12, i64 220, !12, i64 224, !12, i64 228, !12, i64 232, !12, i64 236, !15, i64 240, !15, i64 248, !15, i64 256, !15, i64 264, !15, i64 272, !15, i64 280, !15, i64 288, !15, i64 296, !15, i64 304, !15, i64 312, !15, i64 320, !15, i64 328, !7, i64 336, !7, i64 1360, !7, i64 2384, !7, i64 3408, !7, i64 4432, !18, i64 5456}
!18 = !{!"_ZTSN14tetgenbehavior10objecttypeE", !7, i64 0}
!19 = !{!20, !14, i64 32}
!20 = !{!"_ZTSN10tetgenmesh9arraypoolE", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !6, i64 24, !14, i64 32, !14, i64 40}
!21 = !{!10, !6, i64 152}
!22 = !{!20, !6, i64 24}
!23 = !{!20, !12, i64 8}
!24 = !{!20, !12, i64 12}
!25 = !{!20, !12, i64 0}
!26 = !{!11, !6, i64 0}
!27 = !{!13, !6, i64 0}
!28 = !{!10, !6, i64 160}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = distinct !{!31, !30}
!32 = distinct !{!32, !30}
!33 = !{!10, !6, i64 176}
!34 = distinct !{!34, !30}
!35 = !{!11, !12, i64 8}
!36 = !{!12, !12, i64 0}
!37 = distinct !{!37, !30}
!38 = !{!10, !6, i64 184}
!39 = distinct !{!39, !30}
!40 = distinct !{!40, !30}
!41 = !{!10, !14, i64 552}
!42 = distinct !{!42, !30}
!43 = distinct !{!43, !30}
!44 = distinct !{!44, !30}
!45 = distinct !{!45, !30}


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