; 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::memorypool" = type { ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i64, i64, i32, i32 }
%"class.tetgenmesh::badface" = type { %"class.tetgenmesh::triface", %"class.tetgenmesh::face", double, [6 x double], ptr, ptr, ptr, ptr, ptr, ptr }
%"class.tetgenmesh::flipconstraints" = type { i32, i32, i32, i32, i32, i32, double, double, i32, double, double, i32, [2 x ptr], [3 x ptr], ptr }
%"class.tetgenmesh::arraypool" = type { i32, i32, i32, i32, i32, ptr, i64, i64 }

@_ZN10tetgenmesh7fsymtblE = external dso_local global [12 x [12 x i32]], align 16
@_ZN10tetgenmesh8ver2edgeE = external dso_local global [12 x i32], align 16
@.str.338 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.500 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.501 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.502 = external hidden unnamed_addr constant [39 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 @_ZN10tetgenmesh10memorypool7deallocEPv(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) #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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef) #3 align 2

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fabs.f64(double) #5

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10tetgenmesh6flip23EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef, i32 noundef, ptr noundef) #4 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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #3 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 nounwind uwtable
declare dso_local void @_ZN10tetgenmesh9enextselfERNS_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 @_ZN10tetgenmesh9eprevselfERNS_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 ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(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 @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #6 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i64 @_ZN10tetgenmesh12lawsonflip3dEPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1) #4 align 2 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca [5 x %"class.tetgenmesh::triface"], align 16
  %6 = alloca %"class.tetgenmesh::triface", align 8
  %7 = alloca %"class.tetgenmesh::triface", align 8
  %8 = alloca %"class.tetgenmesh::face", align 8
  %9 = alloca %"class.tetgenmesh::face", align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %24 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 80, ptr %5) #7
  %25 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i32 0, i32 0
  %26 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %25, i64 5
  br label %27

27:                                               ; preds = %27, %2
  %28 = phi ptr [ %25, %2 ], [ %29, %27 ]
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %28)
  %29 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %28, i64 1
  %30 = icmp eq ptr %29, %26
  br i1 %30, label %31, label %27

31:                                               ; preds = %27
  call void @llvm.lifetime.start.p0(i64 16, ptr %6) #7
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @llvm.lifetime.start.p0(i64 16, ptr %7) #7
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @llvm.lifetime.start.p0(i64 16, ptr %8) #7
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #7
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  store i64 0, ptr %20, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  store i64 0, ptr %21, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  br label %32

32:                                               ; preds = %660, %31
  br label %33

33:                                               ; preds = %32
  %34 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 2
  %35 = load ptr, ptr %34, align 8, !tbaa !11
  %36 = getelementptr inbounds %class.tetgenbehavior, ptr %35, i32 0, i32 37
  %37 = load i32, ptr %36, align 4, !tbaa !17
  %38 = icmp sgt i32 %37, 2
  br i1 %38, label %39, label %45

39:                                               ; preds = %33
  %40 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 13
  %41 = load ptr, ptr %40, align 8, !tbaa !20
  %42 = getelementptr inbounds %"class.tetgenmesh::memorypool", ptr %41, i32 0, i32 10
  %43 = load i64, ptr %42, align 8, !tbaa !21
  %44 = call i32 (ptr, ...) @printf(ptr noundef @.str.500, i64 noundef %43)
  br label %45

45:                                               ; preds = %39, %33
  store i64 0, ptr %19, align 8, !tbaa !9
  br label %46

46:                                               ; preds = %561, %537, %471, %427, %399, %253, %227, %76, %71, %67, %45
  %47 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 15
  %48 = load ptr, ptr %47, align 8, !tbaa !23
  %49 = icmp ne ptr %48, null
  br i1 %49, label %50, label %562

50:                                               ; preds = %46
  %51 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 15
  %52 = load ptr, ptr %51, align 8, !tbaa !23
  store ptr %52, ptr %10, align 8, !tbaa !5
  %53 = load ptr, ptr %10, align 8, !tbaa !5
  %54 = getelementptr inbounds %"class.tetgenmesh::badface", ptr %53, i32 0, i32 0
  %55 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %56 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %55, ptr noundef nonnull align 8 dereferenceable(12) %54)
  %57 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 15
  %58 = load ptr, ptr %57, align 8, !tbaa !23
  %59 = getelementptr inbounds %"class.tetgenmesh::badface", ptr %58, i32 0, i32 9
  %60 = load ptr, ptr %59, align 8, !tbaa !24
  %61 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 15
  store ptr %60, ptr %61, align 8, !tbaa !23
  %62 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 13
  %63 = load ptr, ptr %62, align 8, !tbaa !20
  %64 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN10tetgenmesh10memorypool7deallocEPv(ptr noundef nonnull align 8 dereferenceable(88) %63, ptr noundef %64)
  %65 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %66 = call noundef zeroext i1 @_ZN10tetgenmesh9isdeadtetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %65)
  br i1 %66, label %67, label %68

67:                                               ; preds = %50
  br label %46, !llvm.loop !26

68:                                               ; preds = %50
  %69 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %70 = call noundef zeroext i1 @_ZN10tetgenmesh10facemarkedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %69)
  br i1 %70, label %72, label %71

71:                                               ; preds = %68
  br label %46, !llvm.loop !26

72:                                               ; preds = %68
  %73 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  call void @_ZN10tetgenmesh10unmarkfaceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %73)
  %74 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %75 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %74)
  br i1 %75, label %76, label %77

76:                                               ; preds = %72
  br label %46, !llvm.loop !26

77:                                               ; preds = %72
  %78 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %79 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 1
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %78, ptr noundef nonnull align 8 dereferenceable(12) %79)
  %80 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 1
  %81 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %80)
  br i1 %81, label %82, label %228

82:                                               ; preds = %77
  %83 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 55
  %84 = load i32, ptr %83, align 8, !tbaa !28
  %85 = icmp ne i32 %84, 0
  br i1 %85, label %86, label %227

86:                                               ; preds = %82
  %87 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %87, ptr noundef nonnull align 8 dereferenceable(12) %8)
  store i32 0, ptr %23, align 4, !tbaa !29
  br label %88

88:                                               ; preds = %223, %86
  %89 = load i32, ptr %23, align 4, !tbaa !29
  %90 = icmp slt i32 %89, 3
  br i1 %90, label %91, label %226

91:                                               ; preds = %88
  %92 = getelementptr inbounds %"class.tetgenmesh::face", ptr %8, i32 0, i32 0
  %93 = load ptr, ptr %92, align 8, !tbaa !30
  %94 = getelementptr inbounds %"class.tetgenmesh::face", ptr %8, i32 0, i32 1
  %95 = load i32, ptr %94, align 8, !tbaa !31
  %96 = ashr i32 %95, 1
  %97 = add nsw i32 6, %96
  %98 = sext i32 %97 to i64
  %99 = getelementptr inbounds ptr, ptr %93, i64 %98
  %100 = load ptr, ptr %99, align 8, !tbaa !5
  %101 = icmp ne ptr %100, null
  br i1 %101, label %222, label %102

102:                                              ; preds = %91
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %8, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %103 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %104 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %105 = icmp ne ptr %103, %104
  br i1 %105, label %106, label %107

106:                                              ; preds = %102
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %107

107:                                              ; preds = %106, %102
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %108 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %109 = load ptr, ptr %108, align 8, !tbaa !32
  %110 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %111 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %110, i32 0, i32 0
  %112 = load ptr, ptr %111, align 16, !tbaa !32
  %113 = icmp eq ptr %109, %112
  br i1 %113, label %114, label %221

114:                                              ; preds = %107
  call void @_ZN10tetgenmesh9edestoppoERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %115 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %7, i32 0, i32 1
  %116 = load i32, ptr %115, align 8, !tbaa !33
  store i32 %116, ptr %22, align 4, !tbaa !29
  %117 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %7, i32 0, i32 0
  %118 = load ptr, ptr %117, align 8, !tbaa !32
  %119 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %7, i32 0, i32 1
  %120 = load i32, ptr %119, align 8, !tbaa !33
  %121 = and i32 %120, 3
  %122 = sext i32 %121 to i64
  %123 = getelementptr inbounds ptr, ptr %118, i64 %122
  %124 = load ptr, ptr %123, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %124, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %125 = load i32, ptr %22, align 4, !tbaa !29
  %126 = sext i32 %125 to i64
  %127 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %126
  %128 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %7, i32 0, i32 1
  %129 = load i32, ptr %128, align 8, !tbaa !33
  %130 = sext i32 %129 to i64
  %131 = getelementptr inbounds [12 x i32], ptr %127, i64 0, i64 %130
  %132 = load i32, ptr %131, align 4, !tbaa !29
  %133 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %7, i32 0, i32 1
  store i32 %132, ptr %133, align 8, !tbaa !33
  %134 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %135 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 35
  %136 = load ptr, ptr %135, align 8, !tbaa !34
  %137 = icmp eq ptr %134, %136
  br i1 %137, label %138, label %151

138:                                              ; preds = %114
  %139 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %6)
  store ptr %139, ptr %13, align 8, !tbaa !5
  %140 = load ptr, ptr %13, align 8, !tbaa !5
  %141 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %140)
  %142 = icmp eq i32 %141, 7
  br i1 %142, label %147, label %143

143:                                              ; preds = %138
  %144 = load ptr, ptr %13, align 8, !tbaa !5
  %145 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %144)
  %146 = icmp eq i32 %145, 6
  br i1 %146, label %147, label %150

147:                                              ; preds = %143, %138
  %148 = load ptr, ptr %13, align 8, !tbaa !5
  %149 = call noundef i32 @_ZN10tetgenmesh19removevertexbyflipsEPd(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %148)
  br label %150

150:                                              ; preds = %147, %143
  br label %220

151:                                              ; preds = %114
  call void @_ZN10tetgenmesh8eorgoppoERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %152 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %7, i32 0, i32 1
  %153 = load i32, ptr %152, align 8, !tbaa !33
  store i32 %153, ptr %22, align 4, !tbaa !29
  %154 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %7, i32 0, i32 0
  %155 = load ptr, ptr %154, align 8, !tbaa !32
  %156 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %7, i32 0, i32 1
  %157 = load i32, ptr %156, align 8, !tbaa !33
  %158 = and i32 %157, 3
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds ptr, ptr %155, i64 %159
  %161 = load ptr, ptr %160, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %161, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %162 = load i32, ptr %22, align 4, !tbaa !29
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %163
  %165 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %7, i32 0, i32 1
  %166 = load i32, ptr %165, align 8, !tbaa !33
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds [12 x i32], ptr %164, i64 0, i64 %167
  %169 = load i32, ptr %168, align 4, !tbaa !29
  %170 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %7, i32 0, i32 1
  store i32 %169, ptr %170, align 8, !tbaa !33
  %171 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %172 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 35
  %173 = load ptr, ptr %172, align 8, !tbaa !34
  %174 = icmp eq ptr %171, %173
  br i1 %174, label %175, label %188

175:                                              ; preds = %151
  %176 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %6)
  store ptr %176, ptr %12, align 8, !tbaa !5
  %177 = load ptr, ptr %12, align 8, !tbaa !5
  %178 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %177)
  %179 = icmp eq i32 %178, 7
  br i1 %179, label %184, label %180

180:                                              ; preds = %175
  %181 = load ptr, ptr %12, align 8, !tbaa !5
  %182 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %181)
  %183 = icmp eq i32 %182, 6
  br i1 %183, label %184, label %187

184:                                              ; preds = %180, %175
  %185 = load ptr, ptr %12, align 8, !tbaa !5
  %186 = call noundef i32 @_ZN10tetgenmesh19removevertexbyflipsEPd(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %185)
  br label %187

187:                                              ; preds = %184, %180
  br label %219

188:                                              ; preds = %151
  %189 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %190 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %189, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %191 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %192 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 1
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %191, ptr noundef nonnull align 8 dereferenceable(12) %192)
  %193 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 1
  %194 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 2
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %193, ptr noundef nonnull align 8 dereferenceable(12) %194)
  %195 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %196 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6flip32EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %195, i32 noundef 1, ptr noundef %196)
  %197 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 93
  %198 = load i64, ptr %197, align 8, !tbaa !35
  %199 = add nsw i64 %198, -1
  store i64 %199, ptr %197, align 8, !tbaa !35
  %200 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 97
  %201 = load i64, ptr %200, align 8, !tbaa !36
  %202 = add nsw i64 %201, -1
  store i64 %202, ptr %200, align 8, !tbaa !36
  %203 = load i64, ptr %21, align 8, !tbaa !9
  %204 = add nsw i64 %203, 1
  store i64 %204, ptr %21, align 8, !tbaa !9
  %205 = load ptr, ptr %4, align 8, !tbaa !5
  %206 = getelementptr inbounds %"class.tetgenmesh::flipconstraints", ptr %205, i32 0, i32 5
  %207 = load i32, ptr %206, align 4, !tbaa !37
  %208 = icmp ne i32 %207, 0
  br i1 %208, label %209, label %218

209:                                              ; preds = %188
  %210 = load ptr, ptr %4, align 8, !tbaa !5
  %211 = getelementptr inbounds %"class.tetgenmesh::flipconstraints", ptr %210, i32 0, i32 7
  %212 = load double, ptr %211, align 8, !tbaa !39
  %213 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 66
  %214 = load double, ptr %213, align 8, !tbaa !40
  %215 = fadd double %214, %212
  store double %215, ptr %213, align 8, !tbaa !40
  %216 = load ptr, ptr %4, align 8, !tbaa !5
  %217 = getelementptr inbounds %"class.tetgenmesh::flipconstraints", ptr %216, i32 0, i32 7
  store double 0.000000e+00, ptr %217, align 8, !tbaa !39
  br label %218

218:                                              ; preds = %209, %188
  br label %219

219:                                              ; preds = %218, %187
  br label %220

220:                                              ; preds = %219, %150
  br label %226

221:                                              ; preds = %107
  br label %222

222:                                              ; preds = %221, %91
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %223

223:                                              ; preds = %222
  %224 = load i32, ptr %23, align 4, !tbaa !29
  %225 = add nsw i32 %224, 1
  store i32 %225, ptr %23, align 4, !tbaa !29
  br label %88, !llvm.loop !41

226:                                              ; preds = %220, %88
  br label %227

227:                                              ; preds = %226, %82
  br label %46, !llvm.loop !26

228:                                              ; preds = %77
  %229 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 53
  %230 = load i32, ptr %229, align 8, !tbaa !42
  %231 = icmp ne i32 %230, 0
  br i1 %231, label %232, label %255

232:                                              ; preds = %228
  %233 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %234 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %233, i32 0, i32 0
  %235 = load ptr, ptr %234, align 16, !tbaa !32
  %236 = getelementptr inbounds ptr, ptr %235, i64 9
  %237 = load ptr, ptr %236, align 8, !tbaa !5
  %238 = icmp ne ptr %237, null
  br i1 %238, label %239, label %254

239:                                              ; preds = %232
  %240 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %241 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %240, i32 0, i32 0
  %242 = load ptr, ptr %241, align 16, !tbaa !32
  %243 = getelementptr inbounds ptr, ptr %242, i64 9
  %244 = load ptr, ptr %243, align 8, !tbaa !5
  %245 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %246 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %245, i32 0, i32 1
  %247 = load i32, ptr %246, align 8, !tbaa !33
  %248 = and i32 %247, 3
  %249 = sext i32 %248 to i64
  %250 = getelementptr inbounds ptr, ptr %244, i64 %249
  %251 = load ptr, ptr %250, align 8, !tbaa !5
  %252 = icmp ne ptr %251, null
  br i1 %252, label %253, label %254

253:                                              ; preds = %239
  br label %46, !llvm.loop !26

254:                                              ; preds = %239, %232
  br label %255

255:                                              ; preds = %254, %228
  %256 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 1
  %257 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %256, i32 0, i32 0
  %258 = load ptr, ptr %257, align 16, !tbaa !32
  store ptr %258, ptr %14, align 8, !tbaa !5
  %259 = load ptr, ptr %14, align 8, !tbaa !5
  %260 = getelementptr inbounds ptr, ptr %259, i64 4
  %261 = load ptr, ptr %260, align 8, !tbaa !5
  %262 = load ptr, ptr %14, align 8, !tbaa !5
  %263 = getelementptr inbounds ptr, ptr %262, i64 5
  %264 = load ptr, ptr %263, align 8, !tbaa !5
  %265 = load ptr, ptr %14, align 8, !tbaa !5
  %266 = getelementptr inbounds ptr, ptr %265, i64 6
  %267 = load ptr, ptr %266, align 8, !tbaa !5
  %268 = load ptr, ptr %14, align 8, !tbaa !5
  %269 = getelementptr inbounds ptr, ptr %268, i64 7
  %270 = load ptr, ptr %269, align 8, !tbaa !5
  %271 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %272 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %271)
  %273 = call noundef double @_ZN10tetgenmesh10insphere_sEPdS0_S0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %261, ptr noundef %264, ptr noundef %267, ptr noundef %270, ptr noundef %272)
  store double %273, ptr %15, align 8, !tbaa !43
  %274 = load double, ptr %15, align 8, !tbaa !43
  %275 = fcmp olt double %274, 0.000000e+00
  br i1 %275, label %276, label %561

276:                                              ; preds = %255
  %277 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %278 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %277)
  store ptr %278, ptr %12, align 8, !tbaa !5
  %279 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 1
  %280 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %279)
  store ptr %280, ptr %13, align 8, !tbaa !5
  %281 = load ptr, ptr %12, align 8, !tbaa !5
  %282 = load ptr, ptr %13, align 8, !tbaa !5
  %283 = call noundef double @_ZN10tetgenmesh8distanceEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %281, ptr noundef %282)
  store double %283, ptr %18, align 8, !tbaa !43
  %284 = load double, ptr %18, align 8, !tbaa !43
  %285 = load double, ptr %18, align 8, !tbaa !43
  %286 = fmul double %284, %285
  %287 = load double, ptr %18, align 8, !tbaa !43
  %288 = fmul double %286, %287
  store double %288, ptr %18, align 8, !tbaa !43
  store i32 0, ptr %23, align 4, !tbaa !29
  br label %289

289:                                              ; preds = %375, %276
  %290 = load i32, ptr %23, align 4, !tbaa !29
  %291 = icmp slt i32 %290, 3
  br i1 %291, label %292, label %378

292:                                              ; preds = %289
  %293 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %294 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %293)
  %295 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %296 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %295)
  %297 = load ptr, ptr %12, align 8, !tbaa !5
  %298 = load ptr, ptr %13, align 8, !tbaa !5
  %299 = call noundef double @_Z8orient3dPdS_S_S_(ptr noundef %294, ptr noundef %296, ptr noundef %297, ptr noundef %298)
  store double %299, ptr %16, align 8, !tbaa !43
  %300 = load double, ptr %16, align 8, !tbaa !43
  %301 = fcmp ogt double %300, 0.000000e+00
  br i1 %301, label %302, label %368

302:                                              ; preds = %292
  %303 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %304 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 2
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %303, ptr noundef nonnull align 8 dereferenceable(12) %304)
  %305 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 1
  %306 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 3
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %305, ptr noundef nonnull align 8 dereferenceable(12) %306)
  %307 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 2
  %308 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %307, i32 0, i32 0
  %309 = load ptr, ptr %308, align 16, !tbaa !32
  %310 = getelementptr inbounds ptr, ptr %309, i64 9
  %311 = load ptr, ptr %310, align 8, !tbaa !5
  %312 = icmp ne ptr %311, null
  br i1 %312, label %313, label %327

313:                                              ; preds = %302
  %314 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 2
  %315 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %314, i32 0, i32 0
  %316 = load ptr, ptr %315, align 16, !tbaa !32
  %317 = getelementptr inbounds ptr, ptr %316, i64 9
  %318 = load ptr, ptr %317, align 8, !tbaa !5
  %319 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 2
  %320 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %319, i32 0, i32 1
  %321 = load i32, ptr %320, align 8, !tbaa !33
  %322 = and i32 %321, 3
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds ptr, ptr %318, i64 %323
  %325 = load ptr, ptr %324, align 8, !tbaa !5
  %326 = icmp ne ptr %325, null
  br i1 %326, label %348, label %327

327:                                              ; preds = %313, %302
  %328 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 3
  %329 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %328, i32 0, i32 0
  %330 = load ptr, ptr %329, align 16, !tbaa !32
  %331 = getelementptr inbounds ptr, ptr %330, i64 9
  %332 = load ptr, ptr %331, align 8, !tbaa !5
  %333 = icmp ne ptr %332, null
  br i1 %333, label %334, label %367

334:                                              ; preds = %327
  %335 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 3
  %336 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %335, i32 0, i32 0
  %337 = load ptr, ptr %336, align 16, !tbaa !32
  %338 = getelementptr inbounds ptr, ptr %337, i64 9
  %339 = load ptr, ptr %338, align 8, !tbaa !5
  %340 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 3
  %341 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %340, i32 0, i32 1
  %342 = load i32, ptr %341, align 8, !tbaa !33
  %343 = and i32 %342, 3
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds ptr, ptr %339, i64 %344
  %346 = load ptr, ptr %345, align 8, !tbaa !5
  %347 = icmp ne ptr %346, null
  br i1 %347, label %348, label %367

348:                                              ; preds = %334, %313
  %349 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %350 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %349)
  %351 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %352 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %351)
  %353 = load ptr, ptr %12, align 8, !tbaa !5
  %354 = load ptr, ptr %13, align 8, !tbaa !5
  %355 = call noundef double @_ZN10tetgenmesh12orient3dfastEPdS0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %350, ptr noundef %352, ptr noundef %353, ptr noundef %354)
  store double %355, ptr %17, align 8, !tbaa !43
  %356 = load double, ptr %17, align 8, !tbaa !43
  %357 = call double @llvm.fabs.f64(double %356)
  %358 = load double, ptr %18, align 8, !tbaa !43
  %359 = fdiv double %357, %358
  %360 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 2
  %361 = load ptr, ptr %360, align 8, !tbaa !11
  %362 = getelementptr inbounds %class.tetgenbehavior, ptr %361, i32 0, i32 70
  %363 = load double, ptr %362, align 8, !tbaa !44
  %364 = fcmp olt double %359, %363
  br i1 %364, label %365, label %366

365:                                              ; preds = %348
  store double 0.000000e+00, ptr %16, align 8, !tbaa !43
  br label %366

366:                                              ; preds = %365, %348
  br label %367

367:                                              ; preds = %366, %334, %327
  br label %368

368:                                              ; preds = %367, %292
  %369 = load double, ptr %16, align 8, !tbaa !43
  %370 = fcmp ole double %369, 0.000000e+00
  br i1 %370, label %371, label %372

371:                                              ; preds = %368
  br label %378

372:                                              ; preds = %368
  %373 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %373)
  %374 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 1
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %374)
  br label %375

375:                                              ; preds = %372
  %376 = load i32, ptr %23, align 4, !tbaa !29
  %377 = add nsw i32 %376, 1
  store i32 %377, ptr %23, align 4, !tbaa !29
  br label %289, !llvm.loop !45

378:                                              ; preds = %371, %289
  %379 = load double, ptr %16, align 8, !tbaa !43
  %380 = fcmp ogt double %379, 0.000000e+00
  br i1 %380, label %381, label %400

381:                                              ; preds = %378
  %382 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %383 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6flip23EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %382, i32 noundef 0, ptr noundef %383)
  %384 = load i64, ptr %19, align 8, !tbaa !9
  %385 = add nsw i64 %384, 1
  store i64 %385, ptr %19, align 8, !tbaa !9
  %386 = load ptr, ptr %4, align 8, !tbaa !5
  %387 = getelementptr inbounds %"class.tetgenmesh::flipconstraints", ptr %386, i32 0, i32 5
  %388 = load i32, ptr %387, align 4, !tbaa !37
  %389 = icmp ne i32 %388, 0
  br i1 %389, label %390, label %399

390:                                              ; preds = %381
  %391 = load ptr, ptr %4, align 8, !tbaa !5
  %392 = getelementptr inbounds %"class.tetgenmesh::flipconstraints", ptr %391, i32 0, i32 7
  %393 = load double, ptr %392, align 8, !tbaa !39
  %394 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 66
  %395 = load double, ptr %394, align 8, !tbaa !40
  %396 = fadd double %395, %393
  store double %396, ptr %394, align 8, !tbaa !40
  %397 = load ptr, ptr %4, align 8, !tbaa !5
  %398 = getelementptr inbounds %"class.tetgenmesh::flipconstraints", ptr %397, i32 0, i32 7
  store double 0.000000e+00, ptr %398, align 8, !tbaa !39
  br label %399

399:                                              ; preds = %390, %381
  br label %46, !llvm.loop !26

400:                                              ; preds = %378
  %401 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 52
  %402 = load i32, ptr %401, align 4, !tbaa !46
  %403 = icmp ne i32 %402, 0
  br i1 %403, label %404, label %429

404:                                              ; preds = %400
  %405 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %406 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %405, i32 0, i32 0
  %407 = load ptr, ptr %406, align 16, !tbaa !32
  %408 = getelementptr inbounds ptr, ptr %407, i64 8
  %409 = load ptr, ptr %408, align 8, !tbaa !5
  %410 = icmp ne ptr %409, null
  br i1 %410, label %411, label %428

411:                                              ; preds = %404
  %412 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %413 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %412, i32 0, i32 0
  %414 = load ptr, ptr %413, align 16, !tbaa !32
  %415 = getelementptr inbounds ptr, ptr %414, i64 8
  %416 = load ptr, ptr %415, align 8, !tbaa !5
  %417 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %418 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %417, i32 0, i32 1
  %419 = load i32, ptr %418, align 8, !tbaa !33
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh8ver2edgeE, i64 0, i64 %420
  %422 = load i32, ptr %421, align 4, !tbaa !29
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds ptr, ptr %416, i64 %423
  %425 = load ptr, ptr %424, align 8, !tbaa !5
  %426 = icmp ne ptr %425, null
  br i1 %426, label %427, label %428

427:                                              ; preds = %411
  br label %46, !llvm.loop !26

428:                                              ; preds = %411, %404
  br label %429

429:                                              ; preds = %428, %400
  %430 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %430)
  store i32 0, ptr %23, align 4, !tbaa !29
  br label %431

431:                                              ; preds = %442, %429
  %432 = load i32, ptr %23, align 4, !tbaa !29
  %433 = icmp slt i32 %432, 3
  br i1 %433, label %434, label %445

434:                                              ; preds = %431
  %435 = load i32, ptr %23, align 4, !tbaa !29
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 %436
  %438 = load i32, ptr %23, align 4, !tbaa !29
  %439 = add nsw i32 %438, 1
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 %440
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %437, ptr noundef nonnull align 8 dereferenceable(12) %441)
  br label %442

442:                                              ; preds = %434
  %443 = load i32, ptr %23, align 4, !tbaa !29
  %444 = add nsw i32 %443, 1
  store i32 %444, ptr %23, align 4, !tbaa !29
  br label %431, !llvm.loop !47

445:                                              ; preds = %431
  %446 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 3
  %447 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %446, i32 0, i32 0
  %448 = load ptr, ptr %447, align 16, !tbaa !32
  %449 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %450 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %449, i32 0, i32 0
  %451 = load ptr, ptr %450, align 16, !tbaa !32
  %452 = icmp eq ptr %448, %451
  br i1 %452, label %453, label %472

453:                                              ; preds = %445
  %454 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %455 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6flip32EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %454, i32 noundef 0, ptr noundef %455)
  %456 = load i64, ptr %19, align 8, !tbaa !9
  %457 = add nsw i64 %456, 1
  store i64 %457, ptr %19, align 8, !tbaa !9
  %458 = load ptr, ptr %4, align 8, !tbaa !5
  %459 = getelementptr inbounds %"class.tetgenmesh::flipconstraints", ptr %458, i32 0, i32 5
  %460 = load i32, ptr %459, align 4, !tbaa !37
  %461 = icmp ne i32 %460, 0
  br i1 %461, label %462, label %471

462:                                              ; preds = %453
  %463 = load ptr, ptr %4, align 8, !tbaa !5
  %464 = getelementptr inbounds %"class.tetgenmesh::flipconstraints", ptr %463, i32 0, i32 7
  %465 = load double, ptr %464, align 8, !tbaa !39
  %466 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 66
  %467 = load double, ptr %466, align 8, !tbaa !40
  %468 = fadd double %467, %465
  store double %468, ptr %466, align 8, !tbaa !40
  %469 = load ptr, ptr %4, align 8, !tbaa !5
  %470 = getelementptr inbounds %"class.tetgenmesh::flipconstraints", ptr %469, i32 0, i32 7
  store double 0.000000e+00, ptr %470, align 8, !tbaa !39
  br label %471

471:                                              ; preds = %462, %453
  br label %46, !llvm.loop !26

472:                                              ; preds = %445
  %473 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 3
  %474 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 4
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %473, ptr noundef nonnull align 8 dereferenceable(12) %474)
  %475 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 4
  %476 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %475, i32 0, i32 0
  %477 = load ptr, ptr %476, align 16, !tbaa !32
  %478 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %479 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %478, i32 0, i32 0
  %480 = load ptr, ptr %479, align 16, !tbaa !32
  %481 = icmp eq ptr %477, %480
  br i1 %481, label %482, label %539

482:                                              ; preds = %472
  %483 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 55
  %484 = load i32, ptr %483, align 8, !tbaa !28
  %485 = icmp ne i32 %484, 0
  br i1 %485, label %486, label %494

486:                                              ; preds = %482
  %487 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 3
  %488 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %487)
  %489 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 35
  %490 = load ptr, ptr %489, align 8, !tbaa !34
  %491 = icmp eq ptr %488, %490
  br i1 %491, label %492, label %493

492:                                              ; preds = %486
  store double 0.000000e+00, ptr %16, align 8, !tbaa !43
  br label %493

493:                                              ; preds = %492, %486
  br label %494

494:                                              ; preds = %493, %482
  %495 = load double, ptr %16, align 8, !tbaa !43
  %496 = fcmp oeq double %495, 0.000000e+00
  br i1 %496, label %497, label %538

497:                                              ; preds = %494
  %498 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %498)
  %499 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %500 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6flip23EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %499, i32 noundef 0, ptr noundef %500)
  %501 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 3
  %502 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 1
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %501, ptr noundef nonnull align 8 dereferenceable(12) %502)
  %503 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 1
  %504 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 2
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %503, ptr noundef nonnull align 8 dereferenceable(12) %504)
  %505 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 1
  %506 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 3
  %507 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %506)
  %508 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 35
  %509 = load ptr, ptr %508, align 8, !tbaa !34
  %510 = icmp eq ptr %507, %509
  %511 = zext i1 %510 to i32
  %512 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6flip32EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef %505, i32 noundef %511, ptr noundef %512)
  %513 = load i64, ptr %19, align 8, !tbaa !9
  %514 = add nsw i64 %513, 1
  store i64 %514, ptr %19, align 8, !tbaa !9
  %515 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 92
  %516 = load i64, ptr %515, align 8, !tbaa !48
  %517 = add nsw i64 %516, -1
  store i64 %517, ptr %515, align 8, !tbaa !48
  %518 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 93
  %519 = load i64, ptr %518, align 8, !tbaa !35
  %520 = add nsw i64 %519, -1
  store i64 %520, ptr %518, align 8, !tbaa !35
  %521 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 94
  %522 = load i64, ptr %521, align 8, !tbaa !49
  %523 = add nsw i64 %522, 1
  store i64 %523, ptr %521, align 8, !tbaa !49
  %524 = load ptr, ptr %4, align 8, !tbaa !5
  %525 = getelementptr inbounds %"class.tetgenmesh::flipconstraints", ptr %524, i32 0, i32 5
  %526 = load i32, ptr %525, align 4, !tbaa !37
  %527 = icmp ne i32 %526, 0
  br i1 %527, label %528, label %537

528:                                              ; preds = %497
  %529 = load ptr, ptr %4, align 8, !tbaa !5
  %530 = getelementptr inbounds %"class.tetgenmesh::flipconstraints", ptr %529, i32 0, i32 7
  %531 = load double, ptr %530, align 8, !tbaa !39
  %532 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 66
  %533 = load double, ptr %532, align 8, !tbaa !40
  %534 = fadd double %533, %531
  store double %534, ptr %532, align 8, !tbaa !40
  %535 = load ptr, ptr %4, align 8, !tbaa !5
  %536 = getelementptr inbounds %"class.tetgenmesh::flipconstraints", ptr %535, i32 0, i32 7
  store double 0.000000e+00, ptr %536, align 8, !tbaa !39
  br label %537

537:                                              ; preds = %528, %497
  br label %46, !llvm.loop !26

538:                                              ; preds = %494
  br label %539

539:                                              ; preds = %538, %472
  br label %540

540:                                              ; preds = %539
  br label %541

541:                                              ; preds = %540
  %542 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 14
  %543 = load ptr, ptr %542, align 8, !tbaa !50
  %544 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %543, ptr noundef %11)
  %545 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %546 = load ptr, ptr %11, align 8, !tbaa !5
  %547 = getelementptr inbounds %"class.tetgenmesh::badface", ptr %546, i32 0, i32 0
  %548 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %547, ptr noundef nonnull align 8 dereferenceable(12) %545)
  %549 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %550 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %549)
  %551 = load ptr, ptr %11, align 8, !tbaa !5
  %552 = getelementptr inbounds %"class.tetgenmesh::badface", ptr %551, i32 0, i32 4
  store ptr %550, ptr %552, align 8, !tbaa !51
  %553 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %554 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %553)
  %555 = load ptr, ptr %11, align 8, !tbaa !5
  %556 = getelementptr inbounds %"class.tetgenmesh::badface", ptr %555, i32 0, i32 5
  store ptr %554, ptr %556, align 8, !tbaa !52
  %557 = getelementptr inbounds [5 x %"class.tetgenmesh::triface"], ptr %5, i64 0, i64 0
  %558 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %557)
  %559 = load ptr, ptr %11, align 8, !tbaa !5
  %560 = getelementptr inbounds %"class.tetgenmesh::badface", ptr %559, i32 0, i32 6
  store ptr %558, ptr %560, align 8, !tbaa !53
  br label %561

561:                                              ; preds = %541, %255
  br label %46, !llvm.loop !26

562:                                              ; preds = %46
  %563 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 2
  %564 = load ptr, ptr %563, align 8, !tbaa !11
  %565 = getelementptr inbounds %class.tetgenbehavior, ptr %564, i32 0, i32 37
  %566 = load i32, ptr %565, align 4, !tbaa !17
  %567 = icmp sgt i32 %566, 2
  br i1 %567, label %568, label %575

568:                                              ; preds = %562
  %569 = load i64, ptr %19, align 8, !tbaa !9
  %570 = icmp sgt i64 %569, 0
  br i1 %570, label %571, label %574

571:                                              ; preds = %568
  %572 = load i64, ptr %19, align 8, !tbaa !9
  %573 = call i32 (ptr, ...) @printf(ptr noundef @.str.338, i64 noundef %572)
  br label %574

574:                                              ; preds = %571, %568
  br label %575

575:                                              ; preds = %574, %562
  %576 = load i64, ptr %19, align 8, !tbaa !9
  %577 = load i64, ptr %20, align 8, !tbaa !9
  %578 = add nsw i64 %577, %576
  store i64 %578, ptr %20, align 8, !tbaa !9
  %579 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 14
  %580 = load ptr, ptr %579, align 8, !tbaa !50
  %581 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %580, i32 0, i32 6
  %582 = load i64, ptr %581, align 8, !tbaa !54
  %583 = icmp eq i64 %582, 0
  br i1 %583, label %584, label %585

584:                                              ; preds = %575
  br label %663

585:                                              ; preds = %575
  %586 = load i64, ptr %19, align 8, !tbaa !9
  %587 = icmp eq i64 %586, 0
  br i1 %587, label %588, label %589

588:                                              ; preds = %585
  br label %663

589:                                              ; preds = %585
  store i32 0, ptr %23, align 4, !tbaa !29
  br label %590

590:                                              ; preds = %657, %589
  %591 = load i32, ptr %23, align 4, !tbaa !29
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 14
  %594 = load ptr, ptr %593, align 8, !tbaa !50
  %595 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %594, i32 0, i32 6
  %596 = load i64, ptr %595, align 8, !tbaa !54
  %597 = icmp slt i64 %592, %596
  br i1 %597, label %598, label %660

598:                                              ; preds = %590
  %599 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 14
  %600 = load ptr, ptr %599, align 8, !tbaa !50
  %601 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %600, i32 0, i32 5
  %602 = load ptr, ptr %601, align 8, !tbaa !56
  %603 = load i32, ptr %23, align 4, !tbaa !29
  %604 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 14
  %605 = load ptr, ptr %604, align 8, !tbaa !50
  %606 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %605, i32 0, i32 2
  %607 = load i32, ptr %606, align 8, !tbaa !57
  %608 = ashr i32 %603, %607
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds ptr, ptr %602, i64 %609
  %611 = load ptr, ptr %610, align 8, !tbaa !5
  %612 = load i32, ptr %23, align 4, !tbaa !29
  %613 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 14
  %614 = load ptr, ptr %613, align 8, !tbaa !50
  %615 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %614, i32 0, i32 3
  %616 = load i32, ptr %615, align 4, !tbaa !58
  %617 = and i32 %612, %616
  %618 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 14
  %619 = load ptr, ptr %618, align 8, !tbaa !50
  %620 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %619, i32 0, i32 0
  %621 = load i32, ptr %620, align 8, !tbaa !59
  %622 = mul nsw i32 %617, %621
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds i8, ptr %611, i64 %623
  store ptr %624, ptr %11, align 8, !tbaa !5
  %625 = load ptr, ptr %11, align 8, !tbaa !5
  %626 = getelementptr inbounds %"class.tetgenmesh::badface", ptr %625, i32 0, i32 0
  %627 = call noundef zeroext i1 @_ZN10tetgenmesh9isdeadtetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %626)
  br i1 %627, label %656, label %628

628:                                              ; preds = %598
  %629 = load ptr, ptr %11, align 8, !tbaa !5
  %630 = getelementptr inbounds %"class.tetgenmesh::badface", ptr %629, i32 0, i32 0
  %631 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %630)
  %632 = load ptr, ptr %11, align 8, !tbaa !5
  %633 = getelementptr inbounds %"class.tetgenmesh::badface", ptr %632, i32 0, i32 4
  %634 = load ptr, ptr %633, align 8, !tbaa !51
  %635 = icmp eq ptr %631, %634
  br i1 %635, label %636, label %656

636:                                              ; preds = %628
  %637 = load ptr, ptr %11, align 8, !tbaa !5
  %638 = getelementptr inbounds %"class.tetgenmesh::badface", ptr %637, i32 0, i32 0
  %639 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %638)
  %640 = load ptr, ptr %11, align 8, !tbaa !5
  %641 = getelementptr inbounds %"class.tetgenmesh::badface", ptr %640, i32 0, i32 5
  %642 = load ptr, ptr %641, align 8, !tbaa !52
  %643 = icmp eq ptr %639, %642
  br i1 %643, label %644, label %656

644:                                              ; preds = %636
  %645 = load ptr, ptr %11, align 8, !tbaa !5
  %646 = getelementptr inbounds %"class.tetgenmesh::badface", ptr %645, i32 0, i32 0
  %647 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(12) %646)
  %648 = load ptr, ptr %11, align 8, !tbaa !5
  %649 = getelementptr inbounds %"class.tetgenmesh::badface", ptr %648, i32 0, i32 6
  %650 = load ptr, ptr %649, align 8, !tbaa !53
  %651 = icmp eq ptr %647, %650
  br i1 %651, label %652, label %656

652:                                              ; preds = %644
  %653 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 15
  %654 = load ptr, ptr %11, align 8, !tbaa !5
  %655 = getelementptr inbounds %"class.tetgenmesh::badface", ptr %654, i32 0, i32 0
  call void @_ZN10tetgenmesh8flippushERPNS_7badfaceEPNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %24, ptr noundef nonnull align 8 dereferenceable(8) %653, ptr noundef %655)
  br label %656

656:                                              ; preds = %652, %644, %636, %628, %598
  br label %657

657:                                              ; preds = %656
  %658 = load i32, ptr %23, align 4, !tbaa !29
  %659 = add nsw i32 %658, 1
  store i32 %659, ptr %23, align 4, !tbaa !29
  br label %590, !llvm.loop !60

660:                                              ; preds = %590
  %661 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 14
  %662 = load ptr, ptr %661, align 8, !tbaa !50
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %662)
  br label %32, !llvm.loop !61

663:                                              ; preds = %588, %584
  %664 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 2
  %665 = load ptr, ptr %664, align 8, !tbaa !11
  %666 = getelementptr inbounds %class.tetgenbehavior, ptr %665, i32 0, i32 37
  %667 = load i32, ptr %666, align 4, !tbaa !17
  %668 = icmp sgt i32 %667, 2
  br i1 %668, label %669, label %694

669:                                              ; preds = %663
  %670 = load i64, ptr %20, align 8, !tbaa !9
  %671 = icmp sgt i64 %670, 0
  br i1 %671, label %672, label %675

672:                                              ; preds = %669
  %673 = load i64, ptr %20, align 8, !tbaa !9
  %674 = call i32 (ptr, ...) @printf(ptr noundef @.str.338, i64 noundef %673)
  br label %675

675:                                              ; preds = %672, %669
  %676 = load i64, ptr %21, align 8, !tbaa !9
  %677 = icmp sgt i64 %676, 0
  br i1 %677, label %678, label %681

678:                                              ; preds = %675
  %679 = load i64, ptr %21, align 8, !tbaa !9
  %680 = call i32 (ptr, ...) @printf(ptr noundef @.str.501, i64 noundef %679)
  br label %681

681:                                              ; preds = %678, %675
  %682 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 14
  %683 = load ptr, ptr %682, align 8, !tbaa !50
  %684 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %683, i32 0, i32 6
  %685 = load i64, ptr %684, align 8, !tbaa !54
  %686 = icmp sgt i64 %685, 0
  br i1 %686, label %687, label %693

687:                                              ; preds = %681
  %688 = getelementptr inbounds %class.tetgenmesh, ptr %24, i32 0, i32 14
  %689 = load ptr, ptr %688, align 8, !tbaa !50
  %690 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %689, i32 0, i32 6
  %691 = load i64, ptr %690, align 8, !tbaa !54
  %692 = call i32 (ptr, ...) @printf(ptr noundef @.str.502, i64 noundef %691)
  br label %693

693:                                              ; preds = %687, %681
  br label %694

694:                                              ; preds = %693, %663
  %695 = load i64, ptr %20, align 8, !tbaa !9
  %696 = load i64, ptr %21, align 8, !tbaa !9
  %697 = add nsw i64 %695, %696
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr %5) #7
  ret i64 %697
}

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 = { 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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 #7 = { nounwind }

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

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


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

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

@_ZN10tetgenmesh7fsymtblE = external dso_local local_unnamed_addr global [12 x [12 x i32]], align 16
@_ZN10tetgenmesh8ver2edgeE = external dso_local local_unnamed_addr global [12 x i32], align 16
@.str.338 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.500 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.501 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.502 = external hidden unnamed_addr constant [39 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 @_ZN10tetgenmesh10memorypool7deallocEPv(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) 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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fabs.f64(double) #6

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i64 @_ZN10tetgenmesh12lawsonflip3dEPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1) local_unnamed_addr #4 align 2 {
  %3 = alloca [5 x %"class.tetgenmesh::triface"], align 16
  %4 = alloca %"class.tetgenmesh::triface", align 8
  %5 = alloca %"class.tetgenmesh::triface", align 8
  %6 = alloca %"class.tetgenmesh::face", align 8
  %7 = alloca %"class.tetgenmesh::face", align 8
  %8 = alloca ptr, align 8
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %3) #8
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %3)
  %.ptr.1 = getelementptr inbounds i8, ptr %3, i64 16
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  %.ptr.2 = getelementptr inbounds i8, ptr %3, i64 32
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  %.ptr.3 = getelementptr inbounds i8, ptr %3, i64 48
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %.ptr.3)
  %.ptr.4 = getelementptr inbounds i8, ptr %3, i64 64
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %.ptr.4)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #8
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %4)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #8
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %5)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #8
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #8
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  %9 = getelementptr inbounds i8, ptr %0, i64 16
  %10 = getelementptr inbounds i8, ptr %0, i64 104
  %11 = getelementptr inbounds i8, ptr %0, i64 120
  %12 = getelementptr inbounds i8, ptr %0, i64 384
  %13 = getelementptr inbounds i8, ptr %3, i64 8
  %14 = getelementptr inbounds i8, ptr %3, i64 40
  %15 = getelementptr inbounds i8, ptr %3, i64 56
  %16 = getelementptr inbounds i8, ptr %0, i64 380
  %17 = getelementptr inbounds i8, ptr %0, i64 392
  %18 = getelementptr inbounds i8, ptr %0, i64 280
  %19 = getelementptr inbounds i8, ptr %0, i64 112
  %20 = getelementptr inbounds i8, ptr %0, i64 680
  %21 = getelementptr inbounds i8, ptr %0, i64 688
  %22 = getelementptr inbounds i8, ptr %0, i64 696
  %23 = getelementptr inbounds i8, ptr %1, i64 20
  %24 = getelementptr inbounds i8, ptr %1, i64 32
  %25 = getelementptr inbounds i8, ptr %0, i64 472
  %26 = getelementptr inbounds i8, ptr %6, i64 8
  %27 = getelementptr inbounds i8, ptr %5, i64 8
  %28 = getelementptr inbounds i8, ptr %0, i64 720
  br label %29

29:                                               ; preds = %._crit_edge137, %2
  %.080 = phi i64 [ 0, %2 ], [ %388, %._crit_edge137 ]
  %.077 = phi i64 [ 0, %2 ], [ %.178.be, %._crit_edge137 ]
  %30 = load ptr, ptr %9, align 8, !tbaa !5
  %31 = getelementptr inbounds i8, ptr %30, i64 148
  %32 = load i32, ptr %31, align 4, !tbaa !15
  %33 = icmp sgt i32 %32, 2
  br i1 %33, label %34, label %39

34:                                               ; preds = %29
  %35 = load ptr, ptr %10, align 8, !tbaa !18
  %36 = getelementptr inbounds i8, ptr %35, i64 64
  %37 = load i64, ptr %36, align 8, !tbaa !19
  %38 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.500, i64 noundef %37)
  br label %39

39:                                               ; preds = %34, %29
  %40 = load ptr, ptr %11, align 8, !tbaa !21
  %.not128 = icmp eq ptr %40, null
  br i1 %.not128, label %.thread, label %.lr.ph

.lr.ph:                                           ; preds = %39, %.backedge
  %41 = phi ptr [ %164, %.backedge ], [ %40, %39 ]
  %.178131 = phi i64 [ %.178.be, %.backedge ], [ %.077, %39 ]
  %.081130 = phi i64 [ %.081.be, %.backedge ], [ 0, %39 ]
  %42 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %41)
  %43 = load ptr, ptr %11, align 8, !tbaa !21
  %44 = getelementptr inbounds i8, ptr %43, i64 128
  %45 = load ptr, ptr %44, align 8, !tbaa !22
  store ptr %45, ptr %11, align 8, !tbaa !21
  %46 = load ptr, ptr %10, align 8, !tbaa !18
  call void @_ZN10tetgenmesh10memorypool7deallocEPv(ptr noundef nonnull align 8 dereferenceable(88) %46, ptr noundef nonnull %41)
  %47 = call noundef zeroext i1 @_ZN10tetgenmesh9isdeadtetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %47, label %.backedge, label %48

48:                                               ; preds = %.lr.ph
  %49 = call noundef zeroext i1 @_ZN10tetgenmesh10facemarkedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %49, label %50, label %.backedge

50:                                               ; preds = %48
  call void @_ZN10tetgenmesh10unmarkfaceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %51 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %51, label %.backedge, label %52

52:                                               ; preds = %50
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  %53 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  br i1 %53, label %54, label %165

54:                                               ; preds = %52
  %55 = load i32, ptr %17, align 8, !tbaa !24
  %.not110 = icmp eq i32 %55, 0
  br i1 %.not110, label %.backedge, label %56

56:                                               ; preds = %54
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %57 = load ptr, ptr %6, align 8, !tbaa !25
  %58 = load i32, ptr %26, align 8, !tbaa !26
  %59 = ashr i32 %58, 1
  %60 = sext i32 %59 to i64
  %61 = getelementptr ptr, ptr %57, i64 %60
  %62 = getelementptr i8, ptr %61, i64 48
  %63 = load ptr, ptr %62, align 8, !tbaa !27
  %.not111 = icmp eq ptr %63, null
  br i1 %.not111, label %64, label %132

64:                                               ; preds = %56
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %65 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %66 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %.not112 = icmp eq ptr %65, %66
  br i1 %.not112, label %68, label %67

67:                                               ; preds = %64
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br label %68

68:                                               ; preds = %67, %64
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %69 = load ptr, ptr %4, align 8, !tbaa !28
  %70 = load ptr, ptr %3, align 16, !tbaa !28
  %71 = icmp eq ptr %69, %70
  br i1 %71, label %72, label %132

72:                                               ; preds = %160, %144, %68
  call void @_ZN10tetgenmesh9edestoppoERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %73 = load i32, ptr %27, align 8, !tbaa !29
  %74 = load ptr, ptr %5, align 8, !tbaa !28
  %75 = and i32 %73, 3
  %76 = zext nneg i32 %75 to i64
  %77 = getelementptr inbounds ptr, ptr %74, i64 %76
  %78 = load ptr, ptr %77, align 8, !tbaa !27
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %78, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %79 = sext i32 %73 to i64
  %80 = load i32, ptr %27, align 8, !tbaa !29
  %81 = sext i32 %80 to i64
  %82 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %79, i64 %81
  %83 = load i32, ptr %82, align 4, !tbaa !30
  store i32 %83, ptr %27, align 8, !tbaa !29
  %84 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %85 = load ptr, ptr %18, align 8, !tbaa !31
  %86 = icmp eq ptr %84, %85
  br i1 %86, label %87, label %96

87:                                               ; preds = %72
  %88 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %89 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %88)
  %90 = icmp eq i32 %89, 7
  br i1 %90, label %94, label %91

91:                                               ; preds = %87
  %92 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %88)
  %93 = icmp eq i32 %92, 6
  br i1 %93, label %94, label %.backedge

94:                                               ; preds = %91, %87
  %95 = call noundef i32 @_ZN10tetgenmesh19removevertexbyflipsEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %88)
  br label %.backedge

96:                                               ; preds = %72
  call void @_ZN10tetgenmesh8eorgoppoERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %97 = load i32, ptr %27, align 8, !tbaa !29
  %98 = load ptr, ptr %5, align 8, !tbaa !28
  %99 = and i32 %97, 3
  %100 = zext nneg i32 %99 to i64
  %101 = getelementptr inbounds ptr, ptr %98, i64 %100
  %102 = load ptr, ptr %101, align 8, !tbaa !27
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %102, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %103 = sext i32 %97 to i64
  %104 = load i32, ptr %27, align 8, !tbaa !29
  %105 = sext i32 %104 to i64
  %106 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %103, i64 %105
  %107 = load i32, ptr %106, align 4, !tbaa !30
  store i32 %107, ptr %27, align 8, !tbaa !29
  %108 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %109 = load ptr, ptr %18, align 8, !tbaa !31
  %110 = icmp eq ptr %108, %109
  br i1 %110, label %111, label %120

111:                                              ; preds = %96
  %112 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %113 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %112)
  %114 = icmp eq i32 %113, 7
  br i1 %114, label %118, label %115

115:                                              ; preds = %111
  %116 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %112)
  %117 = icmp eq i32 %116, 6
  br i1 %117, label %118, label %.backedge

118:                                              ; preds = %115, %111
  %119 = call noundef i32 @_ZN10tetgenmesh19removevertexbyflipsEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %112)
  br label %.backedge

120:                                              ; preds = %96
  %121 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %4)
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  call void @_ZN10tetgenmesh6flip32EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %3, i32 noundef 1, ptr noundef %1)
  %122 = load i64, ptr %21, align 8, !tbaa !32
  %123 = add nsw i64 %122, -1
  store i64 %123, ptr %21, align 8, !tbaa !32
  %124 = load i64, ptr %28, align 8, !tbaa !33
  %125 = add nsw i64 %124, -1
  store i64 %125, ptr %28, align 8, !tbaa !33
  %126 = add nsw i64 %.178131, 1
  %127 = load i32, ptr %23, align 4, !tbaa !34
  %.not113 = icmp eq i32 %127, 0
  br i1 %.not113, label %.backedge, label %128

128:                                              ; preds = %120
  %129 = load double, ptr %24, align 8, !tbaa !36
  %130 = load double, ptr %25, align 8, !tbaa !37
  %131 = fadd double %129, %130
  store double %131, ptr %25, align 8, !tbaa !37
  store double 0.000000e+00, ptr %24, align 8, !tbaa !36
  br label %.backedge

132:                                              ; preds = %68, %56
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %133 = load ptr, ptr %6, align 8, !tbaa !25
  %134 = load i32, ptr %26, align 8, !tbaa !26
  %135 = ashr i32 %134, 1
  %136 = sext i32 %135 to i64
  %137 = getelementptr ptr, ptr %133, i64 %136
  %138 = getelementptr i8, ptr %137, i64 48
  %139 = load ptr, ptr %138, align 8, !tbaa !27
  %.not111.1 = icmp eq ptr %139, null
  br i1 %.not111.1, label %140, label %148

140:                                              ; preds = %132
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %141 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %142 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %.not112.1 = icmp eq ptr %141, %142
  br i1 %.not112.1, label %144, label %143

143:                                              ; preds = %140
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br label %144

144:                                              ; preds = %143, %140
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %145 = load ptr, ptr %4, align 8, !tbaa !28
  %146 = load ptr, ptr %3, align 16, !tbaa !28
  %147 = icmp eq ptr %145, %146
  br i1 %147, label %72, label %148

148:                                              ; preds = %144, %132
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %149 = load ptr, ptr %6, align 8, !tbaa !25
  %150 = load i32, ptr %26, align 8, !tbaa !26
  %151 = ashr i32 %150, 1
  %152 = sext i32 %151 to i64
  %153 = getelementptr ptr, ptr %149, i64 %152
  %154 = getelementptr i8, ptr %153, i64 48
  %155 = load ptr, ptr %154, align 8, !tbaa !27
  %.not111.2 = icmp eq ptr %155, null
  br i1 %.not111.2, label %156, label %.backedge.loopexit

156:                                              ; preds = %148
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %157 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %158 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %.not112.2 = icmp eq ptr %157, %158
  br i1 %.not112.2, label %160, label %159

159:                                              ; preds = %156
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br label %160

160:                                              ; preds = %159, %156
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %161 = load ptr, ptr %4, align 8, !tbaa !28
  %162 = load ptr, ptr %3, align 16, !tbaa !28
  %163 = icmp eq ptr %161, %162
  br i1 %163, label %72, label %.backedge.loopexit

.backedge.loopexit:                               ; preds = %160, %148
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %.backedge

.backedge:                                        ; preds = %.backedge.loopexit, %177, %366, %.thread118, %362, %333, %336, %309, %312, %54, %94, %91, %120, %128, %115, %118, %.lr.ph, %48, %50, %171, %321
  %.081.be = phi i64 [ %.081130, %.lr.ph ], [ %.081130, %50 ], [ %.081130, %171 ], [ %.081130, %321 ], [ %.081130, %48 ], [ %.081130, %118 ], [ %.081130, %115 ], [ %.081130, %128 ], [ %.081130, %120 ], [ %.081130, %91 ], [ %.081130, %94 ], [ %.081130, %54 ], [ %310, %312 ], [ %310, %309 ], [ %334, %336 ], [ %334, %333 ], [ %356, %362 ], [ %356, %.thread118 ], [ %.081130, %366 ], [ %.081130, %177 ], [ %.081130, %.backedge.loopexit ]
  %.178.be = phi i64 [ %.178131, %.lr.ph ], [ %.178131, %50 ], [ %.178131, %171 ], [ %.178131, %321 ], [ %.178131, %48 ], [ %.178131, %118 ], [ %.178131, %115 ], [ %126, %128 ], [ %126, %120 ], [ %.178131, %91 ], [ %.178131, %94 ], [ %.178131, %54 ], [ %.178131, %312 ], [ %.178131, %309 ], [ %.178131, %336 ], [ %.178131, %333 ], [ %.178131, %362 ], [ %.178131, %.thread118 ], [ %.178131, %366 ], [ %.178131, %177 ], [ %.178131, %.backedge.loopexit ]
  %164 = load ptr, ptr %11, align 8, !tbaa !21
  %.not = icmp eq ptr %164, null
  br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !38

165:                                              ; preds = %52
  %166 = load i32, ptr %12, align 8, !tbaa !40
  %.not96 = icmp eq i32 %166, 0
  br i1 %.not96, label %177, label %167

167:                                              ; preds = %165
  %168 = load ptr, ptr %3, align 16, !tbaa !28
  %169 = getelementptr inbounds i8, ptr %168, i64 72
  %170 = load ptr, ptr %169, align 8, !tbaa !27
  %.not97 = icmp eq ptr %170, null
  br i1 %.not97, label %177, label %171

171:                                              ; preds = %167
  %172 = load i32, ptr %13, align 8, !tbaa !29
  %173 = and i32 %172, 3
  %174 = zext nneg i32 %173 to i64
  %175 = getelementptr inbounds ptr, ptr %170, i64 %174
  %176 = load ptr, ptr %175, align 8, !tbaa !27
  %.not98 = icmp eq ptr %176, null
  br i1 %.not98, label %177, label %.backedge

177:                                              ; preds = %167, %171, %165
  %178 = load ptr, ptr %.ptr.1, align 16, !tbaa !28
  %179 = getelementptr inbounds i8, ptr %178, i64 32
  %180 = load ptr, ptr %179, align 8, !tbaa !27
  %181 = getelementptr inbounds i8, ptr %178, i64 40
  %182 = load ptr, ptr %181, align 8, !tbaa !27
  %183 = getelementptr inbounds i8, ptr %178, i64 48
  %184 = load ptr, ptr %183, align 8, !tbaa !27
  %185 = getelementptr inbounds i8, ptr %178, i64 56
  %186 = load ptr, ptr %185, align 8, !tbaa !27
  %187 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %188 = call noundef double @_ZN10tetgenmesh10insphere_sEPdS0_S0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %180, ptr noundef %182, ptr noundef %184, ptr noundef %186, ptr noundef %187)
  %189 = fcmp olt double %188, 0.000000e+00
  br i1 %189, label %190, label %.backedge

190:                                              ; preds = %177
  %191 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %192 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  %193 = call noundef double @_ZN10tetgenmesh8distanceEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %191, ptr noundef %192)
  %194 = fmul double %193, %193
  %195 = fmul double %193, %194
  %196 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %197 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %198 = call noundef double @_Z8orient3dPdS_S_S_(ptr noundef %196, ptr noundef %197, ptr noundef %191, ptr noundef %192)
  %199 = fcmp ogt double %198, 0.000000e+00
  br i1 %199, label %200, label %230

200:                                              ; preds = %190
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.3)
  %201 = load ptr, ptr %.ptr.2, align 16, !tbaa !28
  %202 = getelementptr inbounds i8, ptr %201, i64 72
  %203 = load ptr, ptr %202, align 8, !tbaa !27
  %.not99 = icmp eq ptr %203, null
  br i1 %.not99, label %210, label %204

204:                                              ; preds = %200
  %205 = load i32, ptr %14, align 8, !tbaa !29
  %206 = and i32 %205, 3
  %207 = zext nneg i32 %206 to i64
  %208 = getelementptr inbounds ptr, ptr %203, i64 %207
  %209 = load ptr, ptr %208, align 8, !tbaa !27
  %.not100 = icmp eq ptr %209, null
  br i1 %.not100, label %210, label %220

210:                                              ; preds = %204, %200
  %211 = load ptr, ptr %.ptr.3, align 16, !tbaa !28
  %212 = getelementptr inbounds i8, ptr %211, i64 72
  %213 = load ptr, ptr %212, align 8, !tbaa !27
  %.not101 = icmp eq ptr %213, null
  br i1 %.not101, label %230, label %214

214:                                              ; preds = %210
  %215 = load i32, ptr %15, align 8, !tbaa !29
  %216 = and i32 %215, 3
  %217 = zext nneg i32 %216 to i64
  %218 = getelementptr inbounds ptr, ptr %213, i64 %217
  %219 = load ptr, ptr %218, align 8, !tbaa !27
  %.not102 = icmp eq ptr %219, null
  br i1 %.not102, label %230, label %220

220:                                              ; preds = %214, %204
  %221 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %222 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %223 = call noundef double @_ZN10tetgenmesh12orient3dfastEPdS0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %221, ptr noundef %222, ptr noundef %191, ptr noundef %192)
  %224 = call double @llvm.fabs.f64(double %223)
  %225 = fdiv double %224, %195
  %226 = load ptr, ptr %9, align 8, !tbaa !5
  %227 = getelementptr inbounds i8, ptr %226, i64 320
  %228 = load double, ptr %227, align 8, !tbaa !41
  %229 = fcmp olt double %225, %228
  br i1 %229, label %.thread115, label %230

230:                                              ; preds = %210, %214, %220, %190
  %231 = fcmp ugt double %198, 0.000000e+00
  br i1 %231, label %232, label %307

232:                                              ; preds = %230
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  %233 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %234 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %235 = call noundef double @_Z8orient3dPdS_S_S_(ptr noundef %233, ptr noundef %234, ptr noundef %191, ptr noundef %192)
  %236 = fcmp ogt double %235, 0.000000e+00
  br i1 %236, label %237, label %267

237:                                              ; preds = %232
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.3)
  %238 = load ptr, ptr %.ptr.2, align 16, !tbaa !28
  %239 = getelementptr inbounds i8, ptr %238, i64 72
  %240 = load ptr, ptr %239, align 8, !tbaa !27
  %.not99.1 = icmp eq ptr %240, null
  br i1 %.not99.1, label %247, label %241

241:                                              ; preds = %237
  %242 = load i32, ptr %14, align 8, !tbaa !29
  %243 = and i32 %242, 3
  %244 = zext nneg i32 %243 to i64
  %245 = getelementptr inbounds ptr, ptr %240, i64 %244
  %246 = load ptr, ptr %245, align 8, !tbaa !27
  %.not100.1 = icmp eq ptr %246, null
  br i1 %.not100.1, label %247, label %257

247:                                              ; preds = %241, %237
  %248 = load ptr, ptr %.ptr.3, align 16, !tbaa !28
  %249 = getelementptr inbounds i8, ptr %248, i64 72
  %250 = load ptr, ptr %249, align 8, !tbaa !27
  %.not101.1 = icmp eq ptr %250, null
  br i1 %.not101.1, label %267, label %251

251:                                              ; preds = %247
  %252 = load i32, ptr %15, align 8, !tbaa !29
  %253 = and i32 %252, 3
  %254 = zext nneg i32 %253 to i64
  %255 = getelementptr inbounds ptr, ptr %250, i64 %254
  %256 = load ptr, ptr %255, align 8, !tbaa !27
  %.not102.1 = icmp eq ptr %256, null
  br i1 %.not102.1, label %267, label %257

257:                                              ; preds = %251, %241
  %258 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %259 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %260 = call noundef double @_ZN10tetgenmesh12orient3dfastEPdS0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %258, ptr noundef %259, ptr noundef %191, ptr noundef %192)
  %261 = call double @llvm.fabs.f64(double %260)
  %262 = fdiv double %261, %195
  %263 = load ptr, ptr %9, align 8, !tbaa !5
  %264 = getelementptr inbounds i8, ptr %263, i64 320
  %265 = load double, ptr %264, align 8, !tbaa !41
  %266 = fcmp olt double %262, %265
  br i1 %266, label %.thread115, label %267

267:                                              ; preds = %257, %251, %247, %232
  %268 = fcmp ugt double %235, 0.000000e+00
  br i1 %268, label %269, label %307

269:                                              ; preds = %267
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  %270 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %271 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %272 = call noundef double @_Z8orient3dPdS_S_S_(ptr noundef %270, ptr noundef %271, ptr noundef %191, ptr noundef %192)
  %273 = fcmp ogt double %272, 0.000000e+00
  br i1 %273, label %274, label %304

274:                                              ; preds = %269
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.3)
  %275 = load ptr, ptr %.ptr.2, align 16, !tbaa !28
  %276 = getelementptr inbounds i8, ptr %275, i64 72
  %277 = load ptr, ptr %276, align 8, !tbaa !27
  %.not99.2 = icmp eq ptr %277, null
  br i1 %.not99.2, label %284, label %278

278:                                              ; preds = %274
  %279 = load i32, ptr %14, align 8, !tbaa !29
  %280 = and i32 %279, 3
  %281 = zext nneg i32 %280 to i64
  %282 = getelementptr inbounds ptr, ptr %277, i64 %281
  %283 = load ptr, ptr %282, align 8, !tbaa !27
  %.not100.2 = icmp eq ptr %283, null
  br i1 %.not100.2, label %284, label %294

284:                                              ; preds = %278, %274
  %285 = load ptr, ptr %.ptr.3, align 16, !tbaa !28
  %286 = getelementptr inbounds i8, ptr %285, i64 72
  %287 = load ptr, ptr %286, align 8, !tbaa !27
  %.not101.2 = icmp eq ptr %287, null
  br i1 %.not101.2, label %304, label %288

288:                                              ; preds = %284
  %289 = load i32, ptr %15, align 8, !tbaa !29
  %290 = and i32 %289, 3
  %291 = zext nneg i32 %290 to i64
  %292 = getelementptr inbounds ptr, ptr %287, i64 %291
  %293 = load ptr, ptr %292, align 8, !tbaa !27
  %.not102.2 = icmp eq ptr %293, null
  br i1 %.not102.2, label %304, label %294

294:                                              ; preds = %288, %278
  %295 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %296 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %297 = call noundef double @_ZN10tetgenmesh12orient3dfastEPdS0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %295, ptr noundef %296, ptr noundef %191, ptr noundef %192)
  %298 = call double @llvm.fabs.f64(double %297)
  %299 = fdiv double %298, %195
  %300 = load ptr, ptr %9, align 8, !tbaa !5
  %301 = getelementptr inbounds i8, ptr %300, i64 320
  %302 = load double, ptr %301, align 8, !tbaa !41
  %303 = fcmp olt double %299, %302
  br i1 %303, label %.thread115, label %304

304:                                              ; preds = %294, %288, %284, %269
  %305 = fcmp ugt double %272, 0.000000e+00
  br i1 %305, label %306, label %307

306:                                              ; preds = %304
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  br label %307

307:                                              ; preds = %306, %304, %267, %230
  %.lcssa139 = phi double [ %198, %230 ], [ %235, %267 ], [ %272, %304 ], [ %272, %306 ]
  %308 = fcmp ogt double %.lcssa139, 0.000000e+00
  br i1 %308, label %309, label %.thread115

309:                                              ; preds = %307
  call void @_ZN10tetgenmesh6flip23EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %3, i32 noundef 0, ptr noundef %1)
  %310 = add nsw i64 %.081130, 1
  %311 = load i32, ptr %23, align 4, !tbaa !34
  %.not109 = icmp eq i32 %311, 0
  br i1 %.not109, label %.backedge, label %312

312:                                              ; preds = %309
  %313 = load double, ptr %24, align 8, !tbaa !36
  %314 = load double, ptr %25, align 8, !tbaa !37
  %315 = fadd double %313, %314
  store double %315, ptr %25, align 8, !tbaa !37
  store double 0.000000e+00, ptr %24, align 8, !tbaa !36
  br label %.backedge

.thread115:                                       ; preds = %220, %257, %294, %307
  %.4117 = phi double [ %.lcssa139, %307 ], [ 0.000000e+00, %294 ], [ 0.000000e+00, %257 ], [ 0.000000e+00, %220 ]
  %316 = load i32, ptr %16, align 4, !tbaa !42
  %.not103 = icmp eq i32 %316, 0
  br i1 %.not103, label %329, label %317

317:                                              ; preds = %.thread115
  %318 = load ptr, ptr %3, align 16, !tbaa !28
  %319 = getelementptr inbounds i8, ptr %318, i64 64
  %320 = load ptr, ptr %319, align 8, !tbaa !27
  %.not104 = icmp eq ptr %320, null
  br i1 %.not104, label %329, label %321

321:                                              ; preds = %317
  %322 = load i32, ptr %13, align 8, !tbaa !29
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh8ver2edgeE, i64 0, i64 %323
  %325 = load i32, ptr %324, align 4, !tbaa !30
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds ptr, ptr %320, i64 %326
  %328 = load ptr, ptr %327, align 8, !tbaa !27
  %.not105 = icmp eq ptr %328, null
  br i1 %.not105, label %329, label %.backedge

329:                                              ; preds = %317, %321, %.thread115
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.3)
  %330 = load ptr, ptr %.ptr.3, align 16, !tbaa !28
  %331 = load ptr, ptr %3, align 16, !tbaa !28
  %332 = icmp eq ptr %330, %331
  br i1 %332, label %333, label %340

333:                                              ; preds = %329
  call void @_ZN10tetgenmesh6flip32EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %3, i32 noundef 0, ptr noundef %1)
  %334 = add nsw i64 %.081130, 1
  %335 = load i32, ptr %23, align 4, !tbaa !34
  %.not108 = icmp eq i32 %335, 0
  br i1 %.not108, label %.backedge, label %336

336:                                              ; preds = %333
  %337 = load double, ptr %24, align 8, !tbaa !36
  %338 = load double, ptr %25, align 8, !tbaa !37
  %339 = fadd double %337, %338
  store double %339, ptr %25, align 8, !tbaa !37
  store double 0.000000e+00, ptr %24, align 8, !tbaa !36
  br label %.backedge

340:                                              ; preds = %329
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.3, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.4)
  %341 = load ptr, ptr %.ptr.4, align 16, !tbaa !28
  %342 = load ptr, ptr %3, align 16, !tbaa !28
  %343 = icmp eq ptr %341, %342
  br i1 %343, label %344, label %366

344:                                              ; preds = %340
  %345 = load i32, ptr %17, align 8, !tbaa !24
  %.not106 = icmp eq i32 %345, 0
  br i1 %.not106, label %351, label %346

346:                                              ; preds = %344
  %347 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.3)
  %348 = load ptr, ptr %18, align 8, !tbaa !31
  %349 = icmp eq ptr %347, %348
  %350 = fcmp oeq double %.4117, 0.000000e+00
  %or.cond153 = or i1 %349, %350
  br i1 %or.cond153, label %.thread118, label %366

351:                                              ; preds = %344
  %.old = fcmp oeq double %.4117, 0.000000e+00
  br i1 %.old, label %.thread118, label %366

.thread118:                                       ; preds = %346, %351
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh6flip23EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %3, i32 noundef 0, ptr noundef %1)
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.3, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  %352 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.3)
  %353 = load ptr, ptr %18, align 8, !tbaa !31
  %354 = icmp eq ptr %352, %353
  %355 = zext i1 %354 to i32
  call void @_ZN10tetgenmesh6flip32EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.ptr.1, i32 noundef %355, ptr noundef %1)
  %356 = add nsw i64 %.081130, 1
  %357 = load <2 x i64>, ptr %20, align 8, !tbaa !43
  %358 = add nsw <2 x i64> %357, <i64 -1, i64 -1>
  store <2 x i64> %358, ptr %20, align 8, !tbaa !43
  %359 = load i64, ptr %22, align 8, !tbaa !44
  %360 = add nsw i64 %359, 1
  store i64 %360, ptr %22, align 8, !tbaa !44
  %361 = load i32, ptr %23, align 4, !tbaa !34
  %.not107 = icmp eq i32 %361, 0
  br i1 %.not107, label %.backedge, label %362

362:                                              ; preds = %.thread118
  %363 = load double, ptr %24, align 8, !tbaa !36
  %364 = load double, ptr %25, align 8, !tbaa !37
  %365 = fadd double %363, %364
  store double %365, ptr %25, align 8, !tbaa !37
  store double 0.000000e+00, ptr %24, align 8, !tbaa !36
  br label %.backedge

366:                                              ; preds = %346, %351, %340
  %367 = load ptr, ptr %19, align 8, !tbaa !45
  %368 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %367, ptr noundef nonnull %8)
  %369 = load ptr, ptr %8, align 8, !tbaa !27
  %370 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %369, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %371 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %372 = load ptr, ptr %8, align 8, !tbaa !27
  %373 = getelementptr inbounds i8, ptr %372, i64 88
  store ptr %371, ptr %373, align 8, !tbaa !46
  %374 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %375 = load ptr, ptr %8, align 8, !tbaa !27
  %376 = getelementptr inbounds i8, ptr %375, i64 96
  store ptr %374, ptr %376, align 8, !tbaa !47
  %377 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %378 = load ptr, ptr %8, align 8, !tbaa !27
  %379 = getelementptr inbounds i8, ptr %378, i64 104
  store ptr %377, ptr %379, align 8, !tbaa !48
  br label %.backedge

._crit_edge:                                      ; preds = %.backedge
  %380 = load ptr, ptr %9, align 8, !tbaa !5
  %381 = getelementptr inbounds i8, ptr %380, i64 148
  %382 = load i32, ptr %381, align 4, !tbaa !15
  %383 = icmp sgt i32 %382, 2
  %384 = icmp sgt i64 %.081.be, 0
  %or.cond = select i1 %383, i1 %384, i1 false
  br i1 %or.cond, label %385, label %387

385:                                              ; preds = %._crit_edge
  %386 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.338, i64 noundef %.081.be)
  br label %387

387:                                              ; preds = %385, %._crit_edge
  %388 = add nsw i64 %.081.be, %.080
  %389 = load ptr, ptr %19, align 8, !tbaa !45
  %390 = getelementptr inbounds i8, ptr %389, i64 32
  %391 = load i64, ptr %390, align 8, !tbaa !49
  %392 = icmp eq i64 %391, 0
  %393 = icmp eq i64 %.081.be, 0
  %or.cond3 = select i1 %392, i1 true, i1 %393
  br i1 %or.cond3, label %.thread, label %.preheader

.preheader:                                       ; preds = %387
  %394 = icmp sgt i64 %391, 0
  br i1 %394, label %.lr.ph136, label %._crit_edge137

.lr.ph136:                                        ; preds = %.preheader, %433
  %indvars.iv = phi i64 [ %indvars.iv.next, %433 ], [ 0, %.preheader ]
  %395 = phi ptr [ %434, %433 ], [ %389, %.preheader ]
  %396 = getelementptr inbounds i8, ptr %395, i64 24
  %397 = load ptr, ptr %396, align 8, !tbaa !51
  %398 = getelementptr inbounds i8, ptr %395, i64 8
  %399 = load i32, ptr %398, align 8, !tbaa !52
  %400 = trunc nuw nsw i64 %indvars.iv to i32
  %401 = lshr i32 %400, %399
  %402 = zext nneg i32 %401 to i64
  %403 = getelementptr inbounds ptr, ptr %397, i64 %402
  %404 = load ptr, ptr %403, align 8, !tbaa !27
  %405 = getelementptr inbounds i8, ptr %395, i64 12
  %406 = load i32, ptr %405, align 4, !tbaa !53
  %407 = and i32 %406, %400
  %408 = load i32, ptr %395, align 8, !tbaa !54
  %409 = mul nsw i32 %407, %408
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds i8, ptr %404, i64 %410
  store ptr %411, ptr %8, align 8, !tbaa !27
  %412 = call noundef zeroext i1 @_ZN10tetgenmesh9isdeadtetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %411)
  br i1 %412, label %433, label %413

413:                                              ; preds = %.lr.ph136
  %414 = load ptr, ptr %8, align 8, !tbaa !27
  %415 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %414)
  %416 = load ptr, ptr %8, align 8, !tbaa !27
  %417 = getelementptr inbounds i8, ptr %416, i64 88
  %418 = load ptr, ptr %417, align 8, !tbaa !46
  %419 = icmp eq ptr %415, %418
  br i1 %419, label %420, label %433

420:                                              ; preds = %413
  %421 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %416)
  %422 = load ptr, ptr %8, align 8, !tbaa !27
  %423 = getelementptr inbounds i8, ptr %422, i64 96
  %424 = load ptr, ptr %423, align 8, !tbaa !47
  %425 = icmp eq ptr %421, %424
  br i1 %425, label %426, label %433

426:                                              ; preds = %420
  %427 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %422)
  %428 = load ptr, ptr %8, align 8, !tbaa !27
  %429 = getelementptr inbounds i8, ptr %428, i64 104
  %430 = load ptr, ptr %429, align 8, !tbaa !48
  %431 = icmp eq ptr %427, %430
  br i1 %431, label %432, label %433

432:                                              ; preds = %426
  call void @_ZN10tetgenmesh8flippushERPNS_7badfaceEPNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull %428)
  br label %433

433:                                              ; preds = %.lr.ph136, %413, %420, %426, %432
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %434 = load ptr, ptr %19, align 8, !tbaa !45
  %435 = getelementptr inbounds i8, ptr %434, i64 32
  %436 = load i64, ptr %435, align 8, !tbaa !49
  %437 = icmp sgt i64 %436, %indvars.iv.next
  br i1 %437, label %.lr.ph136, label %._crit_edge137, !llvm.loop !55

._crit_edge137:                                   ; preds = %433, %.preheader
  %.lcssa121 = phi ptr [ %389, %.preheader ], [ %434, %433 ]
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %.lcssa121)
  br label %29, !llvm.loop !56

.thread:                                          ; preds = %39, %387
  %438 = phi i64 [ %388, %387 ], [ %.080, %39 ]
  %.178.lcssa147152 = phi i64 [ %.178.be, %387 ], [ %.077, %39 ]
  %439 = load ptr, ptr %9, align 8, !tbaa !5
  %440 = getelementptr inbounds i8, ptr %439, i64 148
  %441 = load i32, ptr %440, align 4, !tbaa !15
  %442 = icmp sgt i32 %441, 2
  br i1 %442, label %443, label %458

443:                                              ; preds = %.thread
  %444 = icmp sgt i64 %438, 0
  br i1 %444, label %445, label %447

445:                                              ; preds = %443
  %446 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.338, i64 noundef %438)
  br label %447

447:                                              ; preds = %445, %443
  %448 = icmp sgt i64 %.178.lcssa147152, 0
  br i1 %448, label %449, label %451

449:                                              ; preds = %447
  %450 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.501, i64 noundef %.178.lcssa147152)
  br label %451

451:                                              ; preds = %449, %447
  %452 = load ptr, ptr %19, align 8, !tbaa !45
  %453 = getelementptr inbounds i8, ptr %452, i64 32
  %454 = load i64, ptr %453, align 8, !tbaa !49
  %455 = icmp sgt i64 %454, 0
  br i1 %455, label %456, label %458

456:                                              ; preds = %451
  %457 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.502, i64 noundef %454)
  br label %458

458:                                              ; preds = %451, %456, %.thread
  %459 = add nsw i64 %438, %.178.lcssa147152
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %3) #8
  ret i64 %459
}

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


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