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

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #3

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10tetgenmesh10formcavityEPNS_7trifaceEPNS_9arraypoolES3_S3_S3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #7 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN10tetgenmesh10fillcavityEPNS_9arraypoolES1_S1_S1_S1_S1_PNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #7 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10tetgenmesh17constrainedfacetsEv(ptr noundef nonnull align 8 dereferenceable(1536) %0) #7 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca %"class.tetgenmesh::triface", align 8
  %18 = alloca %"class.tetgenmesh::triface", align 8
  %19 = alloca %"class.tetgenmesh::triface", align 8
  %20 = alloca %"class.tetgenmesh::face", align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca ptr, align 8
  %32 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %33 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #8
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %17)
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #8
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %18)
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #8
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %19)
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #8
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %20)
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #8
  %34 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %34, i32 noundef 16, i32 noundef 10)
          to label %35 unwind label %118

35:                                               ; preds = %1
  store ptr %34, ptr %3, align 8, !tbaa !5
  %36 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %36, i32 noundef 16, i32 noundef 10)
          to label %37 unwind label %122

37:                                               ; preds = %35
  store ptr %36, ptr %4, align 8, !tbaa !5
  %38 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %38, i32 noundef 16, i32 noundef 10)
          to label %39 unwind label %126

39:                                               ; preds = %37
  store ptr %38, ptr %5, align 8, !tbaa !5
  %40 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %40, i32 noundef 16, i32 noundef 10)
          to label %41 unwind label %130

41:                                               ; preds = %39
  store ptr %40, ptr %6, align 8, !tbaa !5
  %42 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %42, i32 noundef 16, i32 noundef 10)
          to label %43 unwind label %134

43:                                               ; preds = %41
  store ptr %42, ptr %7, align 8, !tbaa !5
  %44 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %44, i32 noundef 16, i32 noundef 10)
          to label %45 unwind label %138

45:                                               ; preds = %43
  store ptr %44, ptr %8, align 8, !tbaa !5
  %46 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %46, i32 noundef 8, i32 noundef 8)
          to label %47 unwind label %142

47:                                               ; preds = %45
  store ptr %46, ptr %12, align 8, !tbaa !5
  %48 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %48, i32 noundef 8, i32 noundef 8)
          to label %49 unwind label %146

49:                                               ; preds = %47
  store ptr %48, ptr %13, align 8, !tbaa !5
  %50 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %50, i32 noundef 16, i32 noundef 10)
          to label %51 unwind label %150

51:                                               ; preds = %49
  store ptr %50, ptr %11, align 8, !tbaa !5
  %52 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %52, i32 noundef 16, i32 noundef 10)
          to label %53 unwind label %154

53:                                               ; preds = %51
  store ptr %52, ptr %9, align 8, !tbaa !5
  %54 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %54, i32 noundef 16, i32 noundef 10)
          to label %55 unwind label %158

55:                                               ; preds = %53
  store ptr %54, ptr %10, align 8, !tbaa !5
  %56 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %56, i32 noundef 16, i32 noundef 10)
          to label %57 unwind label %162

57:                                               ; preds = %55
  store ptr %56, ptr %14, align 8, !tbaa !5
  %58 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %58, i32 noundef 16, i32 noundef 10)
          to label %59 unwind label %166

59:                                               ; preds = %57
  store ptr %58, ptr %15, align 8, !tbaa !5
  %60 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %60, i32 noundef 8, i32 noundef 8)
          to label %61 unwind label %170

61:                                               ; preds = %59
  store ptr %60, ptr %16, align 8, !tbaa !5
  %62 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %62, i32 noundef 16, i32 noundef 4)
          to label %63 unwind label %174

63:                                               ; preds = %61
  %64 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 30
  store ptr %62, ptr %64, align 8, !tbaa !9
  store i32 0, ptr %26, align 4, !tbaa !16
  br label %65

65:                                               ; preds = %723, %189, %117, %63
  %66 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 28
  %67 = load ptr, ptr %66, align 8, !tbaa !17
  %68 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %67, i32 0, i32 6
  %69 = load i64, ptr %68, align 8, !tbaa !18
  %70 = icmp sgt i64 %69, 0
  br i1 %70, label %71, label %724

71:                                               ; preds = %65
  %72 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 28
  %73 = load ptr, ptr %72, align 8, !tbaa !17
  %74 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %73, i32 0, i32 6
  %75 = load i64, ptr %74, align 8, !tbaa !18
  %76 = add nsw i64 %75, -1
  store i64 %76, ptr %74, align 8, !tbaa !18
  %77 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 28
  %78 = load ptr, ptr %77, align 8, !tbaa !17
  %79 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %78, i32 0, i32 5
  %80 = load ptr, ptr %79, align 8, !tbaa !20
  %81 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 28
  %82 = load ptr, ptr %81, align 8, !tbaa !17
  %83 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %82, i32 0, i32 6
  %84 = load i64, ptr %83, align 8, !tbaa !18
  %85 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 28
  %86 = load ptr, ptr %85, align 8, !tbaa !17
  %87 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %86, i32 0, i32 2
  %88 = load i32, ptr %87, align 8, !tbaa !21
  %89 = zext i32 %88 to i64
  %90 = ashr i64 %84, %89
  %91 = getelementptr inbounds ptr, ptr %80, i64 %90
  %92 = load ptr, ptr %91, align 8, !tbaa !5
  %93 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 28
  %94 = load ptr, ptr %93, align 8, !tbaa !17
  %95 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %94, i32 0, i32 6
  %96 = load i64, ptr %95, align 8, !tbaa !18
  %97 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 28
  %98 = load ptr, ptr %97, align 8, !tbaa !17
  %99 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %98, i32 0, i32 3
  %100 = load i32, ptr %99, align 4, !tbaa !22
  %101 = sext i32 %100 to i64
  %102 = and i64 %96, %101
  %103 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 28
  %104 = load ptr, ptr %103, align 8, !tbaa !17
  %105 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %104, i32 0, i32 0
  %106 = load i32, ptr %105, align 8, !tbaa !23
  %107 = sext i32 %106 to i64
  %108 = mul nsw i64 %102, %107
  %109 = getelementptr inbounds i8, ptr %92, i64 %108
  store ptr %109, ptr %21, align 8, !tbaa !5
  %110 = load ptr, ptr %21, align 8, !tbaa !5
  %111 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %20, ptr noundef nonnull align 8 dereferenceable(12) %110)
  %112 = getelementptr inbounds %"class.tetgenmesh::face", ptr %20, i32 0, i32 0
  %113 = load ptr, ptr %112, align 8, !tbaa !24
  %114 = getelementptr inbounds ptr, ptr %113, i64 3
  %115 = load ptr, ptr %114, align 8, !tbaa !5
  %116 = icmp eq ptr %115, null
  br i1 %116, label %117, label %178

117:                                              ; preds = %71
  br label %65, !llvm.loop !25

118:                                              ; preds = %1
  %119 = landingpad { ptr, i32 }
          cleanup
  %120 = extractvalue { ptr, i32 } %119, 0
  store ptr %120, ptr %31, align 8
  %121 = extractvalue { ptr, i32 } %119, 1
  store i32 %121, ptr %32, align 4
  call void @_ZdlPvm(ptr noundef %34, i64 noundef 48) #10
  br label %850

122:                                              ; preds = %35
  %123 = landingpad { ptr, i32 }
          cleanup
  %124 = extractvalue { ptr, i32 } %123, 0
  store ptr %124, ptr %31, align 8
  %125 = extractvalue { ptr, i32 } %123, 1
  store i32 %125, ptr %32, align 4
  call void @_ZdlPvm(ptr noundef %36, i64 noundef 48) #10
  br label %850

126:                                              ; preds = %37
  %127 = landingpad { ptr, i32 }
          cleanup
  %128 = extractvalue { ptr, i32 } %127, 0
  store ptr %128, ptr %31, align 8
  %129 = extractvalue { ptr, i32 } %127, 1
  store i32 %129, ptr %32, align 4
  call void @_ZdlPvm(ptr noundef %38, i64 noundef 48) #10
  br label %850

130:                                              ; preds = %39
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %31, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %32, align 4
  call void @_ZdlPvm(ptr noundef %40, i64 noundef 48) #10
  br label %850

134:                                              ; preds = %41
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %31, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %32, align 4
  call void @_ZdlPvm(ptr noundef %42, i64 noundef 48) #10
  br label %850

138:                                              ; preds = %43
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %31, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %32, align 4
  call void @_ZdlPvm(ptr noundef %44, i64 noundef 48) #10
  br label %850

142:                                              ; preds = %45
  %143 = landingpad { ptr, i32 }
          cleanup
  %144 = extractvalue { ptr, i32 } %143, 0
  store ptr %144, ptr %31, align 8
  %145 = extractvalue { ptr, i32 } %143, 1
  store i32 %145, ptr %32, align 4
  call void @_ZdlPvm(ptr noundef %46, i64 noundef 48) #10
  br label %850

146:                                              ; preds = %47
  %147 = landingpad { ptr, i32 }
          cleanup
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %31, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %32, align 4
  call void @_ZdlPvm(ptr noundef %48, i64 noundef 48) #10
  br label %850

150:                                              ; preds = %49
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %31, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %32, align 4
  call void @_ZdlPvm(ptr noundef %50, i64 noundef 48) #10
  br label %850

154:                                              ; preds = %51
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %31, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %32, align 4
  call void @_ZdlPvm(ptr noundef %52, i64 noundef 48) #10
  br label %850

158:                                              ; preds = %53
  %159 = landingpad { ptr, i32 }
          cleanup
  %160 = extractvalue { ptr, i32 } %159, 0
  store ptr %160, ptr %31, align 8
  %161 = extractvalue { ptr, i32 } %159, 1
  store i32 %161, ptr %32, align 4
  call void @_ZdlPvm(ptr noundef %54, i64 noundef 48) #10
  br label %850

162:                                              ; preds = %55
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %31, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %32, align 4
  call void @_ZdlPvm(ptr noundef %56, i64 noundef 48) #10
  br label %850

166:                                              ; preds = %57
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  store ptr %168, ptr %31, align 8
  %169 = extractvalue { ptr, i32 } %167, 1
  store i32 %169, ptr %32, align 4
  call void @_ZdlPvm(ptr noundef %58, i64 noundef 48) #10
  br label %850

170:                                              ; preds = %59
  %171 = landingpad { ptr, i32 }
          cleanup
  %172 = extractvalue { ptr, i32 } %171, 0
  store ptr %172, ptr %31, align 8
  %173 = extractvalue { ptr, i32 } %171, 1
  store i32 %173, ptr %32, align 4
  call void @_ZdlPvm(ptr noundef %60, i64 noundef 48) #10
  br label %850

174:                                              ; preds = %61
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %31, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %32, align 4
  call void @_ZdlPvm(ptr noundef %62, i64 noundef 48) #10
  br label %850

178:                                              ; preds = %71
  %179 = getelementptr inbounds %"class.tetgenmesh::face", ptr %20, i32 0, i32 0
  %180 = load ptr, ptr %179, align 8, !tbaa !24
  %181 = getelementptr inbounds %"class.tetgenmesh::face", ptr %20, i32 0, i32 1
  %182 = load i32, ptr %181, align 8, !tbaa !27
  %183 = and i32 %182, 1
  %184 = add nsw i32 9, %183
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds ptr, ptr %180, i64 %185
  %187 = load ptr, ptr %186, align 8, !tbaa !5
  %188 = icmp ne ptr %187, null
  br i1 %188, label %189, label %190

189:                                              ; preds = %178
  br label %65, !llvm.loop !25

190:                                              ; preds = %178
  call void @_ZN10tetgenmesh9smarktestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef nonnull align 8 dereferenceable(12) %20)
  %191 = load ptr, ptr %11, align 8, !tbaa !5
  %192 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %191, ptr noundef %21)
  %193 = load ptr, ptr %21, align 8, !tbaa !5
  %194 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %193, ptr noundef nonnull align 8 dereferenceable(12) %20)
  store i32 0, ptr %29, align 4, !tbaa !16
  br label %195

195:                                              ; preds = %268, %190
  %196 = load i32, ptr %29, align 4, !tbaa !16
  %197 = sext i32 %196 to i64
  %198 = load ptr, ptr %11, align 8, !tbaa !5
  %199 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %198, i32 0, i32 6
  %200 = load i64, ptr %199, align 8, !tbaa !18
  %201 = icmp slt i64 %197, %200
  br i1 %201, label %202, label %271

202:                                              ; preds = %195
  %203 = load ptr, ptr %11, align 8, !tbaa !5
  %204 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %203, i32 0, i32 5
  %205 = load ptr, ptr %204, align 8, !tbaa !20
  %206 = load i32, ptr %29, align 4, !tbaa !16
  %207 = load ptr, ptr %11, align 8, !tbaa !5
  %208 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %207, i32 0, i32 2
  %209 = load i32, ptr %208, align 8, !tbaa !21
  %210 = ashr i32 %206, %209
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds ptr, ptr %205, i64 %211
  %213 = load ptr, ptr %212, align 8, !tbaa !5
  %214 = load i32, ptr %29, align 4, !tbaa !16
  %215 = load ptr, ptr %11, align 8, !tbaa !5
  %216 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %215, i32 0, i32 3
  %217 = load i32, ptr %216, align 4, !tbaa !22
  %218 = and i32 %214, %217
  %219 = load ptr, ptr %11, align 8, !tbaa !5
  %220 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %219, i32 0, i32 0
  %221 = load i32, ptr %220, align 8, !tbaa !23
  %222 = mul nsw i32 %218, %221
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds i8, ptr %213, i64 %223
  store ptr %224, ptr %21, align 8, !tbaa !5
  store i32 0, ptr %30, align 4, !tbaa !16
  br label %225

225:                                              ; preds = %264, %202
  %226 = load i32, ptr %30, align 4, !tbaa !16
  %227 = icmp slt i32 %226, 3
  br i1 %227, label %228, label %267

228:                                              ; preds = %225
  %229 = load ptr, ptr %21, align 8, !tbaa !5
  %230 = getelementptr inbounds %"class.tetgenmesh::face", ptr %229, i32 0, i32 0
  %231 = load ptr, ptr %230, align 8, !tbaa !24
  %232 = load ptr, ptr %21, align 8, !tbaa !5
  %233 = getelementptr inbounds %"class.tetgenmesh::face", ptr %232, i32 0, i32 1
  %234 = load i32, ptr %233, align 8, !tbaa !27
  %235 = ashr i32 %234, 1
  %236 = add nsw i32 6, %235
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds ptr, ptr %231, i64 %237
  %239 = load ptr, ptr %238, align 8, !tbaa !5
  %240 = icmp ne ptr %239, null
  br i1 %240, label %262, label %241

241:                                              ; preds = %228
  %242 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef nonnull align 8 dereferenceable(12) %242, ptr noundef nonnull align 8 dereferenceable(12) %20)
  %243 = call noundef zeroext i1 @_ZN10tetgenmesh11smarktestedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef nonnull align 8 dereferenceable(12) %20)
  br i1 %243, label %261, label %244

244:                                              ; preds = %241
  %245 = getelementptr inbounds %"class.tetgenmesh::face", ptr %20, i32 0, i32 0
  %246 = load ptr, ptr %245, align 8, !tbaa !24
  %247 = getelementptr inbounds %"class.tetgenmesh::face", ptr %20, i32 0, i32 1
  %248 = load i32, ptr %247, align 8, !tbaa !27
  %249 = and i32 %248, 1
  %250 = add nsw i32 9, %249
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds ptr, ptr %246, i64 %251
  %253 = load ptr, ptr %252, align 8, !tbaa !5
  %254 = icmp ne ptr %253, null
  br i1 %254, label %260, label %255

255:                                              ; preds = %244
  call void @_ZN10tetgenmesh9smarktestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef nonnull align 8 dereferenceable(12) %20)
  %256 = load ptr, ptr %11, align 8, !tbaa !5
  %257 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %256, ptr noundef %22)
  %258 = load ptr, ptr %22, align 8, !tbaa !5
  %259 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %258, ptr noundef nonnull align 8 dereferenceable(12) %20)
  br label %260

260:                                              ; preds = %255, %244
  br label %261

261:                                              ; preds = %260, %241
  br label %262

262:                                              ; preds = %261, %228
  %263 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef nonnull align 8 dereferenceable(12) %263)
  br label %264

264:                                              ; preds = %262
  %265 = load i32, ptr %30, align 4, !tbaa !16
  %266 = add nsw i32 %265, 1
  store i32 %266, ptr %30, align 4, !tbaa !16
  br label %225, !llvm.loop !28

267:                                              ; preds = %225
  br label %268

268:                                              ; preds = %267
  %269 = load i32, ptr %29, align 4, !tbaa !16
  %270 = add nsw i32 %269, 1
  store i32 %270, ptr %29, align 4, !tbaa !16
  br label %195, !llvm.loop !29

271:                                              ; preds = %195
  store i32 0, ptr %29, align 4, !tbaa !16
  br label %272

272:                                              ; preds = %303, %271
  %273 = load i32, ptr %29, align 4, !tbaa !16
  %274 = sext i32 %273 to i64
  %275 = load ptr, ptr %11, align 8, !tbaa !5
  %276 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %275, i32 0, i32 6
  %277 = load i64, ptr %276, align 8, !tbaa !18
  %278 = icmp slt i64 %274, %277
  br i1 %278, label %279, label %306

279:                                              ; preds = %272
  %280 = load ptr, ptr %11, align 8, !tbaa !5
  %281 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %280, i32 0, i32 5
  %282 = load ptr, ptr %281, align 8, !tbaa !20
  %283 = load i32, ptr %29, align 4, !tbaa !16
  %284 = load ptr, ptr %11, align 8, !tbaa !5
  %285 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %284, i32 0, i32 2
  %286 = load i32, ptr %285, align 8, !tbaa !21
  %287 = ashr i32 %283, %286
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds ptr, ptr %282, i64 %288
  %290 = load ptr, ptr %289, align 8, !tbaa !5
  %291 = load i32, ptr %29, align 4, !tbaa !16
  %292 = load ptr, ptr %11, align 8, !tbaa !5
  %293 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %292, i32 0, i32 3
  %294 = load i32, ptr %293, align 4, !tbaa !22
  %295 = and i32 %291, %294
  %296 = load ptr, ptr %11, align 8, !tbaa !5
  %297 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %296, i32 0, i32 0
  %298 = load i32, ptr %297, align 8, !tbaa !23
  %299 = mul nsw i32 %295, %298
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds i8, ptr %290, i64 %300
  store ptr %301, ptr %21, align 8, !tbaa !5
  %302 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN10tetgenmesh11sunmarktestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef nonnull align 8 dereferenceable(12) %302)
  br label %303

303:                                              ; preds = %279
  %304 = load i32, ptr %29, align 4, !tbaa !16
  %305 = add nsw i32 %304, 1
  store i32 %305, ptr %29, align 4, !tbaa !16
  br label %272, !llvm.loop !30

306:                                              ; preds = %272
  %307 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 2
  %308 = load ptr, ptr %307, align 8, !tbaa !31
  %309 = getelementptr inbounds %class.tetgenbehavior, ptr %308, i32 0, i32 37
  %310 = load i32, ptr %309, align 4, !tbaa !32
  %311 = icmp sgt i32 %310, 1
  br i1 %311, label %312, label %319

312:                                              ; preds = %306
  %313 = load i32, ptr %26, align 4, !tbaa !16
  %314 = add nsw i32 %313, 1
  %315 = load ptr, ptr %11, align 8, !tbaa !5
  %316 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %315, i32 0, i32 6
  %317 = load i64, ptr %316, align 8, !tbaa !18
  %318 = call i32 (ptr, ...) @printf(ptr noundef @.str.400, i32 noundef %314, i64 noundef %317)
  br label %319

319:                                              ; preds = %312, %306
  %320 = load i32, ptr %26, align 4, !tbaa !16
  %321 = add nsw i32 %320, 1
  store i32 %321, ptr %26, align 4, !tbaa !16
  br label %322

322:                                              ; preds = %722, %383, %378, %366, %319
  %323 = load ptr, ptr %11, align 8, !tbaa !5
  %324 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %323, i32 0, i32 6
  %325 = load i64, ptr %324, align 8, !tbaa !18
  %326 = icmp sgt i64 %325, 0
  br i1 %326, label %327, label %723

327:                                              ; preds = %322
  %328 = load ptr, ptr %11, align 8, !tbaa !5
  %329 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %328, i32 0, i32 6
  %330 = load i64, ptr %329, align 8, !tbaa !18
  %331 = add nsw i64 %330, -1
  store i64 %331, ptr %329, align 8, !tbaa !18
  %332 = load ptr, ptr %11, align 8, !tbaa !5
  %333 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %332, i32 0, i32 5
  %334 = load ptr, ptr %333, align 8, !tbaa !20
  %335 = load ptr, ptr %11, align 8, !tbaa !5
  %336 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %335, i32 0, i32 6
  %337 = load i64, ptr %336, align 8, !tbaa !18
  %338 = load ptr, ptr %11, align 8, !tbaa !5
  %339 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %338, i32 0, i32 2
  %340 = load i32, ptr %339, align 8, !tbaa !21
  %341 = zext i32 %340 to i64
  %342 = ashr i64 %337, %341
  %343 = getelementptr inbounds ptr, ptr %334, i64 %342
  %344 = load ptr, ptr %343, align 8, !tbaa !5
  %345 = load ptr, ptr %11, align 8, !tbaa !5
  %346 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %345, i32 0, i32 6
  %347 = load i64, ptr %346, align 8, !tbaa !18
  %348 = load ptr, ptr %11, align 8, !tbaa !5
  %349 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %348, i32 0, i32 3
  %350 = load i32, ptr %349, align 4, !tbaa !22
  %351 = sext i32 %350 to i64
  %352 = and i64 %347, %351
  %353 = load ptr, ptr %11, align 8, !tbaa !5
  %354 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %353, i32 0, i32 0
  %355 = load i32, ptr %354, align 8, !tbaa !23
  %356 = sext i32 %355 to i64
  %357 = mul nsw i64 %352, %356
  %358 = getelementptr inbounds i8, ptr %344, i64 %357
  store ptr %358, ptr %21, align 8, !tbaa !5
  %359 = load ptr, ptr %21, align 8, !tbaa !5
  %360 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %20, ptr noundef nonnull align 8 dereferenceable(12) %359)
  %361 = getelementptr inbounds %"class.tetgenmesh::face", ptr %20, i32 0, i32 0
  %362 = load ptr, ptr %361, align 8, !tbaa !24
  %363 = getelementptr inbounds ptr, ptr %362, i64 3
  %364 = load ptr, ptr %363, align 8, !tbaa !5
  %365 = icmp eq ptr %364, null
  br i1 %365, label %366, label %367

366:                                              ; preds = %327
  br label %322, !llvm.loop !35

367:                                              ; preds = %327
  %368 = getelementptr inbounds %"class.tetgenmesh::face", ptr %20, i32 0, i32 0
  %369 = load ptr, ptr %368, align 8, !tbaa !24
  %370 = getelementptr inbounds %"class.tetgenmesh::face", ptr %20, i32 0, i32 1
  %371 = load i32, ptr %370, align 8, !tbaa !27
  %372 = and i32 %371, 1
  %373 = add nsw i32 9, %372
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds ptr, ptr %369, i64 %374
  %376 = load ptr, ptr %375, align 8, !tbaa !5
  %377 = icmp ne ptr %376, null
  br i1 %377, label %378, label %379

378:                                              ; preds = %367
  br label %322, !llvm.loop !35

379:                                              ; preds = %367
  %380 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %17, i32 0, i32 0
  store ptr null, ptr %380, align 8, !tbaa !36
  %381 = call noundef i32 @_ZN10tetgenmesh12scoutsubfaceEPNS_4faceEPNS_7trifaceEi(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef %20, ptr noundef %17, i32 noundef 1)
  %382 = icmp ne i32 %381, 0
  br i1 %382, label %383, label %384

383:                                              ; preds = %379
  br label %322, !llvm.loop !35

384:                                              ; preds = %379
  %385 = load ptr, ptr %14, align 8, !tbaa !5
  %386 = load ptr, ptr %15, align 8, !tbaa !5
  %387 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN10tetgenmesh10formregionEPNS_4faceEPNS_9arraypoolES3_S3_(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef %20, ptr noundef %385, ptr noundef %386, ptr noundef %387)
  %388 = load ptr, ptr %15, align 8, !tbaa !5
  %389 = load ptr, ptr %14, align 8, !tbaa !5
  %390 = call noundef i32 @_ZN10tetgenmesh14scoutcrossedgeERNS_7trifaceEPNS_9arraypoolES3_(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef nonnull align 8 dereferenceable(12) %17, ptr noundef %388, ptr noundef %389)
  %391 = icmp ne i32 %390, 0
  br i1 %391, label %392, label %632

392:                                              ; preds = %384
  %393 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %19, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %394 = load ptr, ptr %14, align 8, !tbaa !5
  %395 = load ptr, ptr %3, align 8, !tbaa !5
  %396 = load ptr, ptr %6, align 8, !tbaa !5
  %397 = load ptr, ptr %7, align 8, !tbaa !5
  %398 = load ptr, ptr %12, align 8, !tbaa !5
  %399 = load ptr, ptr %13, align 8, !tbaa !5
  %400 = call noundef zeroext i1 @_ZN10tetgenmesh10formcavityEPNS_7trifaceEPNS_9arraypoolES3_S3_S3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef %17, ptr noundef %394, ptr noundef %395, ptr noundef %396, ptr noundef %397, ptr noundef %398, ptr noundef %399)
  %401 = zext i1 %400 to i32
  store i32 %401, ptr %27, align 4, !tbaa !16
  %402 = load i32, ptr %27, align 4, !tbaa !16
  %403 = icmp ne i32 %402, 0
  br i1 %403, label %404, label %631

404:                                              ; preds = %392
  %405 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 2
  %406 = load ptr, ptr %405, align 8, !tbaa !31
  %407 = getelementptr inbounds %class.tetgenbehavior, ptr %406, i32 0, i32 9
  %408 = load i32, ptr %407, align 4, !tbaa !37
  %409 = icmp ne i32 %408, 0
  br i1 %409, label %443, label %410

410:                                              ; preds = %404
  %411 = load ptr, ptr %12, align 8, !tbaa !5
  %412 = load ptr, ptr %6, align 8, !tbaa !5
  %413 = load ptr, ptr %9, align 8, !tbaa !5
  %414 = load ptr, ptr %4, align 8, !tbaa !5
  %415 = load ptr, ptr %3, align 8, !tbaa !5
  %416 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN10tetgenmesh15delaunizecavityEPNS_9arraypoolES1_S1_S1_S1_S1_(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef %411, ptr noundef %412, ptr noundef %413, ptr noundef %414, ptr noundef %415, ptr noundef %416)
  %417 = load ptr, ptr %13, align 8, !tbaa !5
  %418 = load ptr, ptr %7, align 8, !tbaa !5
  %419 = load ptr, ptr %10, align 8, !tbaa !5
  %420 = load ptr, ptr %5, align 8, !tbaa !5
  %421 = load ptr, ptr %3, align 8, !tbaa !5
  %422 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN10tetgenmesh15delaunizecavityEPNS_9arraypoolES1_S1_S1_S1_S1_(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef %417, ptr noundef %418, ptr noundef %419, ptr noundef %420, ptr noundef %421, ptr noundef %422)
  %423 = load ptr, ptr %9, align 8, !tbaa !5
  %424 = load ptr, ptr %10, align 8, !tbaa !5
  %425 = load ptr, ptr %8, align 8, !tbaa !5
  %426 = load ptr, ptr %14, align 8, !tbaa !5
  %427 = load ptr, ptr %4, align 8, !tbaa !5
  %428 = load ptr, ptr %5, align 8, !tbaa !5
  %429 = call noundef zeroext i1 @_ZN10tetgenmesh10fillcavityEPNS_9arraypoolES1_S1_S1_S1_S1_PNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef %423, ptr noundef %424, ptr noundef %425, ptr noundef %426, ptr noundef %427, ptr noundef %428, ptr noundef %19)
  %430 = zext i1 %429 to i32
  store i32 %430, ptr %27, align 4, !tbaa !16
  %431 = load i32, ptr %27, align 4, !tbaa !16
  %432 = icmp ne i32 %431, 0
  br i1 %432, label %433, label %437

433:                                              ; preds = %410
  %434 = load ptr, ptr %3, align 8, !tbaa !5
  %435 = load ptr, ptr %4, align 8, !tbaa !5
  %436 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN10tetgenmesh11carvecavityEPNS_9arraypoolES1_S1_(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef %434, ptr noundef %435, ptr noundef %436)
  br label %442

437:                                              ; preds = %410
  %438 = load ptr, ptr %3, align 8, !tbaa !5
  %439 = load ptr, ptr %4, align 8, !tbaa !5
  %440 = load ptr, ptr %5, align 8, !tbaa !5
  %441 = load ptr, ptr %15, align 8, !tbaa !5
  call void @_ZN10tetgenmesh13restorecavityEPNS_9arraypoolES1_S1_S1_(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef %438, ptr noundef %439, ptr noundef %440, ptr noundef %441)
  br label %442

442:                                              ; preds = %437, %433
  br label %492

443:                                              ; preds = %404
  %444 = load ptr, ptr %3, align 8, !tbaa !5
  %445 = load ptr, ptr %12, align 8, !tbaa !5
  %446 = load ptr, ptr %13, align 8, !tbaa !5
  %447 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN10tetgenmesh15flipinsertfacetEPNS_9arraypoolES1_S1_S1_(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef %444, ptr noundef %445, ptr noundef %446, ptr noundef %447)
  store i32 0, ptr %29, align 4, !tbaa !16
  br label %448

448:                                              ; preds = %483, %443
  %449 = load i32, ptr %29, align 4, !tbaa !16
  %450 = sext i32 %449 to i64
  %451 = load ptr, ptr %14, align 8, !tbaa !5
  %452 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %451, i32 0, i32 6
  %453 = load i64, ptr %452, align 8, !tbaa !18
  %454 = icmp slt i64 %450, %453
  br i1 %454, label %455, label %486

455:                                              ; preds = %448
  %456 = load ptr, ptr %14, align 8, !tbaa !5
  %457 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %456, i32 0, i32 5
  %458 = load ptr, ptr %457, align 8, !tbaa !20
  %459 = load i32, ptr %29, align 4, !tbaa !16
  %460 = load ptr, ptr %14, align 8, !tbaa !5
  %461 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %460, i32 0, i32 2
  %462 = load i32, ptr %461, align 8, !tbaa !21
  %463 = ashr i32 %459, %462
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds ptr, ptr %458, i64 %464
  %466 = load ptr, ptr %465, align 8, !tbaa !5
  %467 = load i32, ptr %29, align 4, !tbaa !16
  %468 = load ptr, ptr %14, align 8, !tbaa !5
  %469 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %468, i32 0, i32 3
  %470 = load i32, ptr %469, align 4, !tbaa !22
  %471 = and i32 %467, %470
  %472 = load ptr, ptr %14, align 8, !tbaa !5
  %473 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %472, i32 0, i32 0
  %474 = load i32, ptr %473, align 8, !tbaa !23
  %475 = mul nsw i32 %471, %474
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds i8, ptr %466, i64 %476
  store ptr %477, ptr %21, align 8, !tbaa !5
  %478 = load ptr, ptr %11, align 8, !tbaa !5
  %479 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %478, ptr noundef %22)
  %480 = load ptr, ptr %21, align 8, !tbaa !5
  %481 = load ptr, ptr %22, align 8, !tbaa !5
  %482 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %481, ptr noundef nonnull align 8 dereferenceable(12) %480)
  br label %483

483:                                              ; preds = %455
  %484 = load i32, ptr %29, align 4, !tbaa !16
  %485 = add nsw i32 %484, 1
  store i32 %485, ptr %29, align 4, !tbaa !16
  br label %448, !llvm.loop !38

486:                                              ; preds = %448
  store i32 1, ptr %27, align 4, !tbaa !16
  %487 = load ptr, ptr %3, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %487)
  %488 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %488)
  %489 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %489)
  %490 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %490)
  %491 = load ptr, ptr %13, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %491)
  br label %492

492:                                              ; preds = %486, %442
  %493 = load i32, ptr %27, align 4, !tbaa !16
  %494 = icmp ne i32 %493, 0
  br i1 %494, label %495, label %630

495:                                              ; preds = %492
  store i32 0, ptr %29, align 4, !tbaa !16
  br label %496

496:                                              ; preds = %541, %495
  %497 = load i32, ptr %29, align 4, !tbaa !16
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 22
  %500 = load ptr, ptr %499, align 8, !tbaa !39
  %501 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %500, i32 0, i32 6
  %502 = load i64, ptr %501, align 8, !tbaa !18
  %503 = icmp slt i64 %498, %502
  br i1 %503, label %504, label %544

504:                                              ; preds = %496
  %505 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 22
  %506 = load ptr, ptr %505, align 8, !tbaa !39
  %507 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %506, i32 0, i32 5
  %508 = load ptr, ptr %507, align 8, !tbaa !20
  %509 = load i32, ptr %29, align 4, !tbaa !16
  %510 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 22
  %511 = load ptr, ptr %510, align 8, !tbaa !39
  %512 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %511, i32 0, i32 2
  %513 = load i32, ptr %512, align 8, !tbaa !21
  %514 = ashr i32 %509, %513
  %515 = sext i32 %514 to i64
  %516 = getelementptr inbounds ptr, ptr %508, i64 %515
  %517 = load ptr, ptr %516, align 8, !tbaa !5
  %518 = load i32, ptr %29, align 4, !tbaa !16
  %519 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 22
  %520 = load ptr, ptr %519, align 8, !tbaa !39
  %521 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %520, i32 0, i32 3
  %522 = load i32, ptr %521, align 4, !tbaa !22
  %523 = and i32 %518, %522
  %524 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 22
  %525 = load ptr, ptr %524, align 8, !tbaa !39
  %526 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %525, i32 0, i32 0
  %527 = load i32, ptr %526, align 8, !tbaa !23
  %528 = mul nsw i32 %523, %527
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds i8, ptr %517, i64 %529
  store ptr %530, ptr %21, align 8, !tbaa !5
  %531 = load ptr, ptr %21, align 8, !tbaa !5
  %532 = call noundef i32 @_ZN10tetgenmesh12scoutsubfaceEPNS_4faceEPNS_7trifaceEi(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef %531, ptr noundef %17, i32 noundef 1)
  %533 = icmp ne i32 %532, 0
  br i1 %533, label %540, label %534

534:                                              ; preds = %504
  %535 = load ptr, ptr %11, align 8, !tbaa !5
  %536 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %535, ptr noundef %22)
  %537 = load ptr, ptr %21, align 8, !tbaa !5
  %538 = load ptr, ptr %22, align 8, !tbaa !5
  %539 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %538, ptr noundef nonnull align 8 dereferenceable(12) %537)
  br label %540

540:                                              ; preds = %534, %504
  br label %541

541:                                              ; preds = %540
  %542 = load i32, ptr %29, align 4, !tbaa !16
  %543 = add nsw i32 %542, 1
  store i32 %543, ptr %29, align 4, !tbaa !16
  br label %496, !llvm.loop !40

544:                                              ; preds = %496
  %545 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 22
  %546 = load ptr, ptr %545, align 8, !tbaa !39
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %546)
  store i32 0, ptr %29, align 4, !tbaa !16
  br label %547

547:                                              ; preds = %624, %544
  %548 = load i32, ptr %29, align 4, !tbaa !16
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 23
  %551 = load ptr, ptr %550, align 8, !tbaa !41
  %552 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %551, i32 0, i32 6
  %553 = load i64, ptr %552, align 8, !tbaa !18
  %554 = icmp slt i64 %549, %553
  br i1 %554, label %555, label %627

555:                                              ; preds = %547
  %556 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 23
  %557 = load ptr, ptr %556, align 8, !tbaa !41
  %558 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %557, i32 0, i32 5
  %559 = load ptr, ptr %558, align 8, !tbaa !20
  %560 = load i32, ptr %29, align 4, !tbaa !16
  %561 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 23
  %562 = load ptr, ptr %561, align 8, !tbaa !41
  %563 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %562, i32 0, i32 2
  %564 = load i32, ptr %563, align 8, !tbaa !21
  %565 = ashr i32 %560, %564
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds ptr, ptr %559, i64 %566
  %568 = load ptr, ptr %567, align 8, !tbaa !5
  %569 = load i32, ptr %29, align 4, !tbaa !16
  %570 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 23
  %571 = load ptr, ptr %570, align 8, !tbaa !41
  %572 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %571, i32 0, i32 3
  %573 = load i32, ptr %572, align 4, !tbaa !22
  %574 = and i32 %569, %573
  %575 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 23
  %576 = load ptr, ptr %575, align 8, !tbaa !41
  %577 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %576, i32 0, i32 0
  %578 = load i32, ptr %577, align 8, !tbaa !23
  %579 = mul nsw i32 %574, %578
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds i8, ptr %568, i64 %580
  store ptr %581, ptr %23, align 8, !tbaa !5
  %582 = load ptr, ptr %23, align 8, !tbaa !5
  %583 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef nonnull align 8 dereferenceable(12) %582)
  %584 = load ptr, ptr %23, align 8, !tbaa !5
  %585 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef nonnull align 8 dereferenceable(12) %584)
  %586 = load ptr, ptr %23, align 8, !tbaa !5
  %587 = call noundef i32 @_ZN10tetgenmesh12scoutsegmentEPdS0_PNS_4faceEPNS_7trifaceEPS0_PNS_9arraypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef %583, ptr noundef %585, ptr noundef %586, ptr noundef %17, ptr noundef null, ptr noundef null)
  store i32 %587, ptr %25, align 4, !tbaa !42
  %588 = load i32, ptr %25, align 4, !tbaa !42
  %589 = icmp ne i32 %588, 3
  br i1 %589, label %590, label %591

590:                                              ; preds = %555
  call void @_Z15terminatetetgenP10tetgenmeshi(ptr noundef %33, i32 noundef 2)
  br label %591

591:                                              ; preds = %590, %555
  %592 = load ptr, ptr %23, align 8, !tbaa !5
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef nonnull align 8 dereferenceable(12) %592, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %593 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %18, ptr noundef nonnull align 8 dereferenceable(12) %17)
  br label %594

594:                                              ; preds = %617, %591
  %595 = load ptr, ptr %23, align 8, !tbaa !5
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef nonnull align 8 dereferenceable(12) %18, ptr noundef nonnull align 8 dereferenceable(12) %595)
  %596 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %18, i32 0, i32 1
  %597 = load i32, ptr %596, align 8, !tbaa !44
  store i32 %597, ptr %28, align 4, !tbaa !16
  %598 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %18, i32 0, i32 0
  %599 = load ptr, ptr %598, align 8, !tbaa !36
  %600 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %18, i32 0, i32 1
  %601 = load i32, ptr %600, align 8, !tbaa !44
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %602
  %604 = load i32, ptr %603, align 4, !tbaa !16
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds ptr, ptr %599, i64 %605
  %607 = load ptr, ptr %606, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef %607, ptr noundef nonnull align 8 dereferenceable(12) %18)
  %608 = load i32, ptr %28, align 4, !tbaa !16
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %609
  %611 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %18, i32 0, i32 1
  %612 = load i32, ptr %611, align 8, !tbaa !44
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds [12 x i32], ptr %610, i64 0, i64 %613
  %615 = load i32, ptr %614, align 4, !tbaa !16
  %616 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %18, i32 0, i32 1
  store i32 %615, ptr %616, align 8, !tbaa !44
  br label %617

617:                                              ; preds = %594
  %618 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %18, i32 0, i32 0
  %619 = load ptr, ptr %618, align 8, !tbaa !36
  %620 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %17, i32 0, i32 0
  %621 = load ptr, ptr %620, align 8, !tbaa !36
  %622 = icmp ne ptr %619, %621
  br i1 %622, label %594, label %623, !llvm.loop !45

623:                                              ; preds = %617
  br label %624

624:                                              ; preds = %623
  %625 = load i32, ptr %29, align 4, !tbaa !16
  %626 = add nsw i32 %625, 1
  store i32 %626, ptr %29, align 4, !tbaa !16
  br label %547, !llvm.loop !46

627:                                              ; preds = %547
  %628 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 23
  %629 = load ptr, ptr %628, align 8, !tbaa !41
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %629)
  br label %630

630:                                              ; preds = %627, %492
  br label %631

631:                                              ; preds = %630, %392
  br label %672

632:                                              ; preds = %384
  store i32 0, ptr %29, align 4, !tbaa !16
  br label %633

633:                                              ; preds = %668, %632
  %634 = load i32, ptr %29, align 4, !tbaa !16
  %635 = sext i32 %634 to i64
  %636 = load ptr, ptr %14, align 8, !tbaa !5
  %637 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %636, i32 0, i32 6
  %638 = load i64, ptr %637, align 8, !tbaa !18
  %639 = icmp slt i64 %635, %638
  br i1 %639, label %640, label %671

640:                                              ; preds = %633
  %641 = load ptr, ptr %14, align 8, !tbaa !5
  %642 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %641, i32 0, i32 5
  %643 = load ptr, ptr %642, align 8, !tbaa !20
  %644 = load i32, ptr %29, align 4, !tbaa !16
  %645 = load ptr, ptr %14, align 8, !tbaa !5
  %646 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %645, i32 0, i32 2
  %647 = load i32, ptr %646, align 8, !tbaa !21
  %648 = ashr i32 %644, %647
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds ptr, ptr %643, i64 %649
  %651 = load ptr, ptr %650, align 8, !tbaa !5
  %652 = load i32, ptr %29, align 4, !tbaa !16
  %653 = load ptr, ptr %14, align 8, !tbaa !5
  %654 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %653, i32 0, i32 3
  %655 = load i32, ptr %654, align 4, !tbaa !22
  %656 = and i32 %652, %655
  %657 = load ptr, ptr %14, align 8, !tbaa !5
  %658 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %657, i32 0, i32 0
  %659 = load i32, ptr %658, align 8, !tbaa !23
  %660 = mul nsw i32 %656, %659
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds i8, ptr %651, i64 %661
  store ptr %662, ptr %21, align 8, !tbaa !5
  %663 = load ptr, ptr %11, align 8, !tbaa !5
  %664 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %663, ptr noundef %22)
  %665 = load ptr, ptr %21, align 8, !tbaa !5
  %666 = load ptr, ptr %22, align 8, !tbaa !5
  %667 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %666, ptr noundef nonnull align 8 dereferenceable(12) %665)
  br label %668

668:                                              ; preds = %640
  %669 = load i32, ptr %29, align 4, !tbaa !16
  %670 = add nsw i32 %669, 1
  store i32 %670, ptr %29, align 4, !tbaa !16
  br label %633, !llvm.loop !47

671:                                              ; preds = %633
  store i32 1, ptr %27, align 4, !tbaa !16
  br label %672

672:                                              ; preds = %671, %631
  store i32 0, ptr %29, align 4, !tbaa !16
  br label %673

673:                                              ; preds = %705, %672
  %674 = load i32, ptr %29, align 4, !tbaa !16
  %675 = sext i32 %674 to i64
  %676 = load ptr, ptr %16, align 8, !tbaa !5
  %677 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %676, i32 0, i32 6
  %678 = load i64, ptr %677, align 8, !tbaa !18
  %679 = icmp slt i64 %675, %678
  br i1 %679, label %680, label %708

680:                                              ; preds = %673
  %681 = load ptr, ptr %16, align 8, !tbaa !5
  %682 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %681, i32 0, i32 5
  %683 = load ptr, ptr %682, align 8, !tbaa !20
  %684 = load i32, ptr %29, align 4, !tbaa !16
  %685 = load ptr, ptr %16, align 8, !tbaa !5
  %686 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %685, i32 0, i32 2
  %687 = load i32, ptr %686, align 8, !tbaa !21
  %688 = ashr i32 %684, %687
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds ptr, ptr %683, i64 %689
  %691 = load ptr, ptr %690, align 8, !tbaa !5
  %692 = load i32, ptr %29, align 4, !tbaa !16
  %693 = load ptr, ptr %16, align 8, !tbaa !5
  %694 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %693, i32 0, i32 3
  %695 = load i32, ptr %694, align 4, !tbaa !22
  %696 = and i32 %692, %695
  %697 = load ptr, ptr %16, align 8, !tbaa !5
  %698 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %697, i32 0, i32 0
  %699 = load i32, ptr %698, align 8, !tbaa !23
  %700 = mul nsw i32 %696, %699
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds i8, ptr %691, i64 %701
  store ptr %702, ptr %24, align 8, !tbaa !5
  %703 = load ptr, ptr %24, align 8, !tbaa !5
  %704 = load ptr, ptr %703, align 8, !tbaa !5
  call void @_ZN10tetgenmesh11punmarktestEPd(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef %704)
  br label %705

705:                                              ; preds = %680
  %706 = load i32, ptr %29, align 4, !tbaa !16
  %707 = add nsw i32 %706, 1
  store i32 %707, ptr %29, align 4, !tbaa !16
  br label %673, !llvm.loop !48

708:                                              ; preds = %673
  %709 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %709)
  %710 = load ptr, ptr %15, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %710)
  %711 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %711)
  %712 = load i32, ptr %27, align 4, !tbaa !16
  %713 = icmp ne i32 %712, 0
  br i1 %713, label %722, label %714

714:                                              ; preds = %708
  %715 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 37
  %716 = load ptr, ptr %12, align 8, !tbaa !5
  %717 = load ptr, ptr %6, align 8, !tbaa !5
  %718 = load ptr, ptr %9, align 8, !tbaa !5
  %719 = load ptr, ptr %4, align 8, !tbaa !5
  %720 = load ptr, ptr %3, align 8, !tbaa !5
  %721 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN10tetgenmesh12refineregionERNS_4faceEPNS_9arraypoolES3_S3_S3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(1536) %33, ptr noundef nonnull align 8 dereferenceable(12) %715, ptr noundef %716, ptr noundef %717, ptr noundef %718, ptr noundef %719, ptr noundef %720, ptr noundef %721)
  br label %722

722:                                              ; preds = %714, %708
  br label %322, !llvm.loop !35

723:                                              ; preds = %322
  br label %65, !llvm.loop !25

724:                                              ; preds = %65
  %725 = load ptr, ptr %3, align 8, !tbaa !5
  %726 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %725, i32 0, i32 7
  %727 = load i64, ptr %726, align 8, !tbaa !49
  %728 = load ptr, ptr %4, align 8, !tbaa !5
  %729 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %728, i32 0, i32 7
  %730 = load i64, ptr %729, align 8, !tbaa !49
  %731 = add i64 %727, %730
  %732 = load ptr, ptr %5, align 8, !tbaa !5
  %733 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %732, i32 0, i32 7
  %734 = load i64, ptr %733, align 8, !tbaa !49
  %735 = add i64 %731, %734
  %736 = load ptr, ptr %6, align 8, !tbaa !5
  %737 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %736, i32 0, i32 7
  %738 = load i64, ptr %737, align 8, !tbaa !49
  %739 = add i64 %735, %738
  %740 = load ptr, ptr %7, align 8, !tbaa !5
  %741 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %740, i32 0, i32 7
  %742 = load i64, ptr %741, align 8, !tbaa !49
  %743 = add i64 %739, %742
  %744 = load ptr, ptr %8, align 8, !tbaa !5
  %745 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %744, i32 0, i32 7
  %746 = load i64, ptr %745, align 8, !tbaa !49
  %747 = add i64 %743, %746
  %748 = load ptr, ptr %12, align 8, !tbaa !5
  %749 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %748, i32 0, i32 7
  %750 = load i64, ptr %749, align 8, !tbaa !49
  %751 = add i64 %747, %750
  %752 = load ptr, ptr %13, align 8, !tbaa !5
  %753 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %752, i32 0, i32 7
  %754 = load i64, ptr %753, align 8, !tbaa !49
  %755 = add i64 %751, %754
  %756 = load ptr, ptr %11, align 8, !tbaa !5
  %757 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %756, i32 0, i32 7
  %758 = load i64, ptr %757, align 8, !tbaa !49
  %759 = add i64 %755, %758
  %760 = load ptr, ptr %9, align 8, !tbaa !5
  %761 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %760, i32 0, i32 7
  %762 = load i64, ptr %761, align 8, !tbaa !49
  %763 = add i64 %759, %762
  %764 = load ptr, ptr %10, align 8, !tbaa !5
  %765 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %764, i32 0, i32 7
  %766 = load i64, ptr %765, align 8, !tbaa !49
  %767 = add i64 %763, %766
  %768 = load ptr, ptr %14, align 8, !tbaa !5
  %769 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %768, i32 0, i32 7
  %770 = load i64, ptr %769, align 8, !tbaa !49
  %771 = add i64 %767, %770
  %772 = load ptr, ptr %15, align 8, !tbaa !5
  %773 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %772, i32 0, i32 7
  %774 = load i64, ptr %773, align 8, !tbaa !49
  %775 = add i64 %771, %774
  %776 = load ptr, ptr %16, align 8, !tbaa !5
  %777 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %776, i32 0, i32 7
  %778 = load i64, ptr %777, align 8, !tbaa !49
  %779 = add i64 %775, %778
  %780 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 30
  %781 = load ptr, ptr %780, align 8, !tbaa !9
  %782 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %781, i32 0, i32 7
  %783 = load i64, ptr %782, align 8, !tbaa !49
  %784 = add i64 %779, %783
  %785 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 98
  %786 = load i64, ptr %785, align 8, !tbaa !50
  %787 = add i64 %786, %784
  store i64 %787, ptr %785, align 8, !tbaa !50
  %788 = load ptr, ptr %3, align 8, !tbaa !5
  %789 = icmp eq ptr %788, null
  br i1 %789, label %791, label %790

790:                                              ; preds = %724
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %788) #8
  call void @_ZdlPvm(ptr noundef %788, i64 noundef 48) #10
  br label %791

791:                                              ; preds = %790, %724
  %792 = load ptr, ptr %4, align 8, !tbaa !5
  %793 = icmp eq ptr %792, null
  br i1 %793, label %795, label %794

794:                                              ; preds = %791
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %792) #8
  call void @_ZdlPvm(ptr noundef %792, i64 noundef 48) #10
  br label %795

795:                                              ; preds = %794, %791
  %796 = load ptr, ptr %5, align 8, !tbaa !5
  %797 = icmp eq ptr %796, null
  br i1 %797, label %799, label %798

798:                                              ; preds = %795
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %796) #8
  call void @_ZdlPvm(ptr noundef %796, i64 noundef 48) #10
  br label %799

799:                                              ; preds = %798, %795
  %800 = load ptr, ptr %6, align 8, !tbaa !5
  %801 = icmp eq ptr %800, null
  br i1 %801, label %803, label %802

802:                                              ; preds = %799
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %800) #8
  call void @_ZdlPvm(ptr noundef %800, i64 noundef 48) #10
  br label %803

803:                                              ; preds = %802, %799
  %804 = load ptr, ptr %7, align 8, !tbaa !5
  %805 = icmp eq ptr %804, null
  br i1 %805, label %807, label %806

806:                                              ; preds = %803
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %804) #8
  call void @_ZdlPvm(ptr noundef %804, i64 noundef 48) #10
  br label %807

807:                                              ; preds = %806, %803
  %808 = load ptr, ptr %8, align 8, !tbaa !5
  %809 = icmp eq ptr %808, null
  br i1 %809, label %811, label %810

810:                                              ; preds = %807
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %808) #8
  call void @_ZdlPvm(ptr noundef %808, i64 noundef 48) #10
  br label %811

811:                                              ; preds = %810, %807
  %812 = load ptr, ptr %12, align 8, !tbaa !5
  %813 = icmp eq ptr %812, null
  br i1 %813, label %815, label %814

814:                                              ; preds = %811
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %812) #8
  call void @_ZdlPvm(ptr noundef %812, i64 noundef 48) #10
  br label %815

815:                                              ; preds = %814, %811
  %816 = load ptr, ptr %13, align 8, !tbaa !5
  %817 = icmp eq ptr %816, null
  br i1 %817, label %819, label %818

818:                                              ; preds = %815
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %816) #8
  call void @_ZdlPvm(ptr noundef %816, i64 noundef 48) #10
  br label %819

819:                                              ; preds = %818, %815
  %820 = load ptr, ptr %11, align 8, !tbaa !5
  %821 = icmp eq ptr %820, null
  br i1 %821, label %823, label %822

822:                                              ; preds = %819
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %820) #8
  call void @_ZdlPvm(ptr noundef %820, i64 noundef 48) #10
  br label %823

823:                                              ; preds = %822, %819
  %824 = load ptr, ptr %9, align 8, !tbaa !5
  %825 = icmp eq ptr %824, null
  br i1 %825, label %827, label %826

826:                                              ; preds = %823
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %824) #8
  call void @_ZdlPvm(ptr noundef %824, i64 noundef 48) #10
  br label %827

827:                                              ; preds = %826, %823
  %828 = load ptr, ptr %10, align 8, !tbaa !5
  %829 = icmp eq ptr %828, null
  br i1 %829, label %831, label %830

830:                                              ; preds = %827
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %828) #8
  call void @_ZdlPvm(ptr noundef %828, i64 noundef 48) #10
  br label %831

831:                                              ; preds = %830, %827
  %832 = load ptr, ptr %14, align 8, !tbaa !5
  %833 = icmp eq ptr %832, null
  br i1 %833, label %835, label %834

834:                                              ; preds = %831
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %832) #8
  call void @_ZdlPvm(ptr noundef %832, i64 noundef 48) #10
  br label %835

835:                                              ; preds = %834, %831
  %836 = load ptr, ptr %15, align 8, !tbaa !5
  %837 = icmp eq ptr %836, null
  br i1 %837, label %839, label %838

838:                                              ; preds = %835
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %836) #8
  call void @_ZdlPvm(ptr noundef %836, i64 noundef 48) #10
  br label %839

839:                                              ; preds = %838, %835
  %840 = load ptr, ptr %16, align 8, !tbaa !5
  %841 = icmp eq ptr %840, null
  br i1 %841, label %843, label %842

842:                                              ; preds = %839
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %840) #8
  call void @_ZdlPvm(ptr noundef %840, i64 noundef 48) #10
  br label %843

843:                                              ; preds = %842, %839
  %844 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 30
  %845 = load ptr, ptr %844, align 8, !tbaa !9
  %846 = icmp eq ptr %845, null
  br i1 %846, label %848, label %847

847:                                              ; preds = %843
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %845) #8
  call void @_ZdlPvm(ptr noundef %845, i64 noundef 48) #10
  br label %848

848:                                              ; preds = %847, %843
  %849 = getelementptr inbounds %class.tetgenmesh, ptr %33, i32 0, i32 30
  store ptr null, ptr %849, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #8
  ret void

850:                                              ; preds = %174, %170, %166, %162, %158, %154, %150, %146, %142, %138, %134, %130, %126, %122, %118
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #8
  br label %851

851:                                              ; preds = %850
  %852 = load ptr, ptr %31, align 8
  %853 = load i32, ptr %32, align 4
  %854 = insertvalue { ptr, i32 } poison, ptr %852, 0
  %855 = insertvalue { ptr, i32 } %854, i32 %853, 1
  resume { ptr, i32 } %855
}

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

declare void @_ZN10tetgenmesh9arraypoolC1Eii(ptr, i32, i32)

declare void @_ZN10tetgenmesh9arraypoolD1Ev(ptr)

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

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

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


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

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

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #3

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #4

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 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 #6 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 #6 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10tetgenmesh17constrainedfacetsEv(ptr noundef nonnull align 8 dereferenceable(1536) %0) local_unnamed_addr #7 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.tetgenmesh::triface", align 8
  %3 = alloca %"class.tetgenmesh::triface", align 8
  %4 = alloca %"class.tetgenmesh::triface", align 8
  %5 = alloca %"class.tetgenmesh::face", align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #8
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %2)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #8
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %3)
  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 @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %5)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  %8 = call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %8, i32 noundef 16, i32 noundef 10)
          to label %9 unwind label %99

9:                                                ; preds = %1
  %10 = call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %10, i32 noundef 16, i32 noundef 10)
          to label %11 unwind label %101

11:                                               ; preds = %9
  %12 = call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %12, i32 noundef 16, i32 noundef 10)
          to label %13 unwind label %103

13:                                               ; preds = %11
  %14 = call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %14, i32 noundef 16, i32 noundef 10)
          to label %15 unwind label %105

15:                                               ; preds = %13
  %16 = call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %16, i32 noundef 16, i32 noundef 10)
          to label %17 unwind label %107

17:                                               ; preds = %15
  %18 = call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %18, i32 noundef 16, i32 noundef 10)
          to label %19 unwind label %109

19:                                               ; preds = %17
  %20 = call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %20, i32 noundef 8, i32 noundef 8)
          to label %21 unwind label %111

21:                                               ; preds = %19
  %22 = call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %22, i32 noundef 8, i32 noundef 8)
          to label %23 unwind label %113

23:                                               ; preds = %21
  %24 = call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %24, i32 noundef 16, i32 noundef 10)
          to label %25 unwind label %115

25:                                               ; preds = %23
  %26 = call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %26, i32 noundef 16, i32 noundef 10)
          to label %27 unwind label %117

27:                                               ; preds = %25
  %28 = call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %28, i32 noundef 16, i32 noundef 10)
          to label %29 unwind label %119

29:                                               ; preds = %27
  %30 = call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %30, i32 noundef 16, i32 noundef 10)
          to label %31 unwind label %121

31:                                               ; preds = %29
  %32 = call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %32, i32 noundef 16, i32 noundef 10)
          to label %33 unwind label %123

33:                                               ; preds = %31
  %34 = call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %34, i32 noundef 8, i32 noundef 8)
          to label %35 unwind label %125

35:                                               ; preds = %33
  %36 = call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #9
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %36, i32 noundef 16, i32 noundef 4)
          to label %37 unwind label %127

37:                                               ; preds = %35
  %38 = getelementptr inbounds i8, ptr %0, i64 240
  store ptr %36, ptr %38, align 8, !tbaa !5
  %39 = getelementptr inbounds i8, ptr %0, i64 224
  %40 = load ptr, ptr %39, align 8, !tbaa !15
  %41 = getelementptr inbounds i8, ptr %40, i64 32
  %42 = load i64, ptr %41, align 8, !tbaa !16
  %43 = icmp sgt i64 %42, 0
  br i1 %43, label %.lr.ph.lr.ph, label %.outer._crit_edge

.lr.ph.lr.ph:                                     ; preds = %37
  %44 = getelementptr inbounds i8, ptr %5, i64 8
  %45 = getelementptr inbounds i8, ptr %24, i64 32
  %46 = getelementptr inbounds i8, ptr %24, i64 24
  %47 = getelementptr inbounds i8, ptr %24, i64 8
  %48 = getelementptr inbounds i8, ptr %24, i64 12
  %49 = getelementptr inbounds i8, ptr %0, i64 16
  %50 = getelementptr inbounds i8, ptr %30, i64 32
  %51 = getelementptr inbounds i8, ptr %30, i64 24
  %52 = getelementptr inbounds i8, ptr %30, i64 8
  %53 = getelementptr inbounds i8, ptr %30, i64 12
  %54 = getelementptr inbounds i8, ptr %0, i64 176
  %55 = getelementptr inbounds i8, ptr %0, i64 184
  %56 = getelementptr inbounds i8, ptr %3, i64 8
  %57 = getelementptr inbounds i8, ptr %34, i64 32
  %58 = getelementptr inbounds i8, ptr %34, i64 24
  %59 = getelementptr inbounds i8, ptr %34, i64 8
  %60 = getelementptr inbounds i8, ptr %34, i64 12
  %61 = getelementptr inbounds i8, ptr %0, i64 304
  br label %.lr.ph

.loopexit188:                                     ; preds = %.backedge, %._crit_edge201._crit_edge
  %62 = load ptr, ptr %39, align 8, !tbaa !15
  %63 = getelementptr inbounds i8, ptr %62, i64 32
  %64 = load i64, ptr %63, align 8, !tbaa !16
  %65 = icmp sgt i64 %64, 0
  br i1 %65, label %.lr.ph, label %.outer._crit_edge

.lr.ph:                                           ; preds = %.lr.ph.lr.ph, %.loopexit188
  %66 = phi i64 [ %42, %.lr.ph.lr.ph ], [ %64, %.loopexit188 ]
  %67 = phi ptr [ %41, %.lr.ph.lr.ph ], [ %63, %.loopexit188 ]
  %68 = phi ptr [ %40, %.lr.ph.lr.ph ], [ %62, %.loopexit188 ]
  %.0170.ph223 = phi i32 [ 0, %.lr.ph.lr.ph ], [ %251, %.loopexit188 ]
  br label %69

69:                                               ; preds = %.lr.ph, %.backedge190
  %70 = phi i64 [ %66, %.lr.ph ], [ %97, %.backedge190 ]
  %71 = phi ptr [ %67, %.lr.ph ], [ %96, %.backedge190 ]
  %72 = phi ptr [ %68, %.lr.ph ], [ %95, %.backedge190 ]
  %73 = add nsw i64 %70, -1
  store i64 %73, ptr %71, align 8, !tbaa !16
  %74 = getelementptr inbounds i8, ptr %72, i64 24
  %75 = load ptr, ptr %74, align 8, !tbaa !18
  %76 = getelementptr inbounds i8, ptr %72, i64 8
  %77 = load i32, ptr %76, align 8, !tbaa !19
  %78 = zext nneg i32 %77 to i64
  %79 = lshr i64 %73, %78
  %80 = getelementptr inbounds ptr, ptr %75, i64 %79
  %81 = load ptr, ptr %80, align 8, !tbaa !20
  %82 = getelementptr inbounds i8, ptr %72, i64 12
  %83 = load i32, ptr %82, align 4, !tbaa !21
  %84 = sext i32 %83 to i64
  %85 = and i64 %73, %84
  %86 = load i32, ptr %72, align 8, !tbaa !22
  %87 = sext i32 %86 to i64
  %88 = mul nsw i64 %85, %87
  %89 = getelementptr inbounds i8, ptr %81, i64 %88
  store ptr %89, ptr %6, align 8, !tbaa !20
  %90 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %89)
  %91 = load ptr, ptr %5, align 8, !tbaa !23
  %92 = getelementptr inbounds i8, ptr %91, i64 24
  %93 = load ptr, ptr %92, align 8, !tbaa !20
  %94 = icmp eq ptr %93, null
  br i1 %94, label %.backedge190, label %129

.backedge190:                                     ; preds = %69, %129
  %95 = load ptr, ptr %39, align 8, !tbaa !15
  %96 = getelementptr inbounds i8, ptr %95, i64 32
  %97 = load i64, ptr %96, align 8, !tbaa !16
  %98 = icmp sgt i64 %97, 0
  br i1 %98, label %69, label %.outer._crit_edge, !llvm.loop !24

99:                                               ; preds = %1
  %100 = landingpad { ptr, i32 }
          cleanup
  br label %493

101:                                              ; preds = %9
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %493

103:                                              ; preds = %11
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %493

105:                                              ; preds = %13
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %493

107:                                              ; preds = %15
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %493

109:                                              ; preds = %17
  %110 = landingpad { ptr, i32 }
          cleanup
  br label %493

111:                                              ; preds = %19
  %112 = landingpad { ptr, i32 }
          cleanup
  br label %493

113:                                              ; preds = %21
  %114 = landingpad { ptr, i32 }
          cleanup
  br label %493

115:                                              ; preds = %23
  %116 = landingpad { ptr, i32 }
          cleanup
  br label %493

117:                                              ; preds = %25
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %493

119:                                              ; preds = %27
  %120 = landingpad { ptr, i32 }
          cleanup
  br label %493

121:                                              ; preds = %29
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %493

123:                                              ; preds = %31
  %124 = landingpad { ptr, i32 }
          cleanup
  br label %493

125:                                              ; preds = %33
  %126 = landingpad { ptr, i32 }
          cleanup
  br label %493

127:                                              ; preds = %35
  %128 = landingpad { ptr, i32 }
          cleanup
  br label %493

129:                                              ; preds = %69
  %130 = load i32, ptr %44, align 8, !tbaa !26
  %131 = and i32 %130, 1
  %132 = zext nneg i32 %131 to i64
  %133 = getelementptr inbounds ptr, ptr %91, i64 %132
  %134 = getelementptr inbounds i8, ptr %133, i64 72
  %135 = load ptr, ptr %134, align 8, !tbaa !20
  %.not = icmp eq ptr %135, null
  br i1 %.not, label %136, label %.backedge190

136:                                              ; preds = %129
  call void @_ZN10tetgenmesh9smarktestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %137 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %24, ptr noundef nonnull %6)
  %138 = load ptr, ptr %6, align 8, !tbaa !20
  %139 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %138, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %140 = load i64, ptr %45, align 8, !tbaa !16
  %141 = icmp sgt i64 %140, 0
  br i1 %141, label %.lr.ph198, label %._crit_edge201

.preheader189:                                    ; preds = %228
  %142 = icmp sgt i64 %230, 0
  br i1 %142, label %.lr.ph200, label %._crit_edge201

.lr.ph198:                                        ; preds = %136, %228
  %indvars.iv = phi i64 [ %indvars.iv.next, %228 ], [ 0, %136 ]
  %143 = load ptr, ptr %46, align 8, !tbaa !18
  %144 = load i32, ptr %47, align 8, !tbaa !19
  %145 = trunc nuw nsw i64 %indvars.iv to i32
  %146 = lshr i32 %145, %144
  %147 = zext nneg i32 %146 to i64
  %148 = getelementptr inbounds ptr, ptr %143, i64 %147
  %149 = load ptr, ptr %148, align 8, !tbaa !20
  %150 = load i32, ptr %48, align 4, !tbaa !21
  %151 = and i32 %150, %145
  %152 = load i32, ptr %24, align 8, !tbaa !22
  %153 = mul nsw i32 %151, %152
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds i8, ptr %149, i64 %154
  store ptr %155, ptr %6, align 8, !tbaa !20
  %156 = load ptr, ptr %155, align 8, !tbaa !23
  %157 = getelementptr inbounds i8, ptr %155, i64 8
  %158 = load i32, ptr %157, align 8, !tbaa !26
  %159 = ashr i32 %158, 1
  %160 = sext i32 %159 to i64
  %161 = getelementptr ptr, ptr %156, i64 %160
  %162 = getelementptr i8, ptr %161, i64 48
  %163 = load ptr, ptr %162, align 8, !tbaa !20
  %.not186 = icmp eq ptr %163, null
  br i1 %.not186, label %164, label %178

164:                                              ; preds = %.lr.ph198
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %155, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %165 = call noundef zeroext i1 @_ZN10tetgenmesh11smarktestedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br i1 %165, label %178, label %166

166:                                              ; preds = %164
  %167 = load ptr, ptr %5, align 8, !tbaa !23
  %168 = load i32, ptr %44, align 8, !tbaa !26
  %169 = and i32 %168, 1
  %170 = zext nneg i32 %169 to i64
  %171 = getelementptr inbounds ptr, ptr %167, i64 %170
  %172 = getelementptr inbounds i8, ptr %171, i64 72
  %173 = load ptr, ptr %172, align 8, !tbaa !20
  %.not187 = icmp eq ptr %173, null
  br i1 %.not187, label %174, label %178

174:                                              ; preds = %166
  call void @_ZN10tetgenmesh9smarktestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %175 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %24, ptr noundef nonnull %7)
  %176 = load ptr, ptr %7, align 8, !tbaa !20
  %177 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %176, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br label %178

178:                                              ; preds = %164, %174, %166, %.lr.ph198
  %179 = load ptr, ptr %6, align 8, !tbaa !20
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %179)
  %180 = load ptr, ptr %6, align 8, !tbaa !20
  %181 = load ptr, ptr %180, align 8, !tbaa !23
  %182 = getelementptr inbounds i8, ptr %180, i64 8
  %183 = load i32, ptr %182, align 8, !tbaa !26
  %184 = ashr i32 %183, 1
  %185 = sext i32 %184 to i64
  %186 = getelementptr ptr, ptr %181, i64 %185
  %187 = getelementptr i8, ptr %186, i64 48
  %188 = load ptr, ptr %187, align 8, !tbaa !20
  %.not186.1 = icmp eq ptr %188, null
  br i1 %.not186.1, label %189, label %203

189:                                              ; preds = %178
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %180, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %190 = call noundef zeroext i1 @_ZN10tetgenmesh11smarktestedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br i1 %190, label %203, label %191

191:                                              ; preds = %189
  %192 = load ptr, ptr %5, align 8, !tbaa !23
  %193 = load i32, ptr %44, align 8, !tbaa !26
  %194 = and i32 %193, 1
  %195 = zext nneg i32 %194 to i64
  %196 = getelementptr inbounds ptr, ptr %192, i64 %195
  %197 = getelementptr inbounds i8, ptr %196, i64 72
  %198 = load ptr, ptr %197, align 8, !tbaa !20
  %.not187.1 = icmp eq ptr %198, null
  br i1 %.not187.1, label %199, label %203

199:                                              ; preds = %191
  call void @_ZN10tetgenmesh9smarktestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %200 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %24, ptr noundef nonnull %7)
  %201 = load ptr, ptr %7, align 8, !tbaa !20
  %202 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %201, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br label %203

203:                                              ; preds = %199, %191, %189, %178
  %204 = load ptr, ptr %6, align 8, !tbaa !20
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %204)
  %205 = load ptr, ptr %6, align 8, !tbaa !20
  %206 = load ptr, ptr %205, align 8, !tbaa !23
  %207 = getelementptr inbounds i8, ptr %205, i64 8
  %208 = load i32, ptr %207, align 8, !tbaa !26
  %209 = ashr i32 %208, 1
  %210 = sext i32 %209 to i64
  %211 = getelementptr ptr, ptr %206, i64 %210
  %212 = getelementptr i8, ptr %211, i64 48
  %213 = load ptr, ptr %212, align 8, !tbaa !20
  %.not186.2 = icmp eq ptr %213, null
  br i1 %.not186.2, label %214, label %228

214:                                              ; preds = %203
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %205, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %215 = call noundef zeroext i1 @_ZN10tetgenmesh11smarktestedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br i1 %215, label %228, label %216

216:                                              ; preds = %214
  %217 = load ptr, ptr %5, align 8, !tbaa !23
  %218 = load i32, ptr %44, align 8, !tbaa !26
  %219 = and i32 %218, 1
  %220 = zext nneg i32 %219 to i64
  %221 = getelementptr inbounds ptr, ptr %217, i64 %220
  %222 = getelementptr inbounds i8, ptr %221, i64 72
  %223 = load ptr, ptr %222, align 8, !tbaa !20
  %.not187.2 = icmp eq ptr %223, null
  br i1 %.not187.2, label %224, label %228

224:                                              ; preds = %216
  call void @_ZN10tetgenmesh9smarktestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %225 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %24, ptr noundef nonnull %7)
  %226 = load ptr, ptr %7, align 8, !tbaa !20
  %227 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %226, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br label %228

228:                                              ; preds = %224, %216, %214, %203
  %229 = load ptr, ptr %6, align 8, !tbaa !20
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %229)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %230 = load i64, ptr %45, align 8, !tbaa !16
  %231 = icmp sgt i64 %230, %indvars.iv.next
  br i1 %231, label %.lr.ph198, label %.preheader189, !llvm.loop !27

.lr.ph200:                                        ; preds = %.preheader189, %.lr.ph200
  %indvars.iv228 = phi i64 [ %indvars.iv.next229, %.lr.ph200 ], [ 0, %.preheader189 ]
  %232 = load ptr, ptr %46, align 8, !tbaa !18
  %233 = load i32, ptr %47, align 8, !tbaa !19
  %234 = trunc nuw nsw i64 %indvars.iv228 to i32
  %235 = lshr i32 %234, %233
  %236 = zext nneg i32 %235 to i64
  %237 = getelementptr inbounds ptr, ptr %232, i64 %236
  %238 = load ptr, ptr %237, align 8, !tbaa !20
  %239 = load i32, ptr %48, align 4, !tbaa !21
  %240 = and i32 %239, %234
  %241 = load i32, ptr %24, align 8, !tbaa !22
  %242 = mul nsw i32 %240, %241
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds i8, ptr %238, i64 %243
  store ptr %244, ptr %6, align 8, !tbaa !20
  call void @_ZN10tetgenmesh11sunmarktestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %244)
  %indvars.iv.next229 = add nuw nsw i64 %indvars.iv228, 1
  %245 = load i64, ptr %45, align 8, !tbaa !16
  %246 = icmp sgt i64 %245, %indvars.iv.next229
  br i1 %246, label %.lr.ph200, label %._crit_edge201, !llvm.loop !28

._crit_edge201:                                   ; preds = %.lr.ph200, %136, %.preheader189
  %.lcssa192 = phi i64 [ %230, %.preheader189 ], [ %140, %136 ], [ %245, %.lr.ph200 ]
  %247 = load ptr, ptr %49, align 8, !tbaa !29
  %248 = getelementptr inbounds i8, ptr %247, i64 148
  %249 = load i32, ptr %248, align 4, !tbaa !30
  %250 = icmp sgt i32 %249, 1
  %251 = add nuw nsw i32 %.0170.ph223, 1
  br i1 %250, label %252, label %._crit_edge201._crit_edge

252:                                              ; preds = %._crit_edge201
  %253 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.400, i32 noundef %251, i64 noundef %.lcssa192)
  %.pre = load i64, ptr %45, align 8, !tbaa !16
  br label %._crit_edge201._crit_edge

._crit_edge201._crit_edge:                        ; preds = %._crit_edge201, %252
  %254 = phi i64 [ %.pre, %252 ], [ %.lcssa192, %._crit_edge201 ]
  %255 = icmp sgt i64 %254, 0
  br i1 %255, label %.lr.ph222, label %.loopexit188, !llvm.loop !24

.lr.ph222:                                        ; preds = %._crit_edge201._crit_edge, %.backedge
  %256 = phi i64 [ %439, %.backedge ], [ %254, %._crit_edge201._crit_edge ]
  %257 = add nsw i64 %256, -1
  store i64 %257, ptr %45, align 8, !tbaa !16
  %258 = load ptr, ptr %46, align 8, !tbaa !18
  %259 = load i32, ptr %47, align 8, !tbaa !19
  %260 = zext nneg i32 %259 to i64
  %261 = lshr i64 %257, %260
  %262 = getelementptr inbounds ptr, ptr %258, i64 %261
  %263 = load ptr, ptr %262, align 8, !tbaa !20
  %264 = load i32, ptr %48, align 4, !tbaa !21
  %265 = sext i32 %264 to i64
  %266 = and i64 %257, %265
  %267 = load i32, ptr %24, align 8, !tbaa !22
  %268 = sext i32 %267 to i64
  %269 = mul nsw i64 %266, %268
  %270 = getelementptr inbounds i8, ptr %263, i64 %269
  store ptr %270, ptr %6, align 8, !tbaa !20
  %271 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %270)
  %272 = load ptr, ptr %5, align 8, !tbaa !23
  %273 = getelementptr inbounds i8, ptr %272, i64 24
  %274 = load ptr, ptr %273, align 8, !tbaa !20
  %275 = icmp eq ptr %274, null
  br i1 %275, label %.backedge, label %276

276:                                              ; preds = %.lr.ph222
  %277 = load i32, ptr %44, align 8, !tbaa !26
  %278 = and i32 %277, 1
  %279 = zext nneg i32 %278 to i64
  %280 = getelementptr inbounds ptr, ptr %272, i64 %279
  %281 = getelementptr inbounds i8, ptr %280, i64 72
  %282 = load ptr, ptr %281, align 8, !tbaa !20
  %.not178 = icmp eq ptr %282, null
  br i1 %.not178, label %283, label %.backedge

283:                                              ; preds = %276
  store ptr null, ptr %2, align 8, !tbaa !33
  %284 = call noundef i32 @_ZN10tetgenmesh12scoutsubfaceEPNS_4faceEPNS_7trifaceEi(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %5, ptr noundef nonnull %2, i32 noundef 1)
  %.not179 = icmp eq i32 %284, 0
  br i1 %.not179, label %285, label %.backedge

285:                                              ; preds = %283
  call void @_ZN10tetgenmesh10formregionEPNS_4faceEPNS_9arraypoolES3_S3_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %5, ptr noundef nonnull %30, ptr noundef nonnull %32, ptr noundef nonnull %34)
  %286 = call noundef i32 @_ZN10tetgenmesh14scoutcrossedgeERNS_7trifaceEPNS_9arraypoolES3_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2, ptr noundef nonnull %32, ptr noundef nonnull %30)
  %.not180 = icmp eq i32 %286, 0
  br i1 %.not180, label %.preheader, label %289

.preheader:                                       ; preds = %285
  %287 = load i64, ptr %50, align 8, !tbaa !16
  %288 = icmp sgt i64 %287, 0
  br i1 %288, label %.lr.ph216, label %.loopexit

289:                                              ; preds = %285
  %290 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %4, ptr noundef nonnull align 8 dereferenceable(12) %2)
  %291 = call noundef zeroext i1 @_ZN10tetgenmesh10formcavityEPNS_7trifaceEPNS_9arraypoolES3_S3_S3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %2, ptr noundef nonnull %30, ptr noundef nonnull %8, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef nonnull %20, ptr noundef nonnull %22)
  br i1 %291, label %292, label %.loopexit

292:                                              ; preds = %289
  %293 = load ptr, ptr %49, align 8, !tbaa !29
  %294 = getelementptr inbounds i8, ptr %293, i64 36
  %295 = load i32, ptr %294, align 4, !tbaa !34
  %.not181 = icmp eq i32 %295, 0
  br i1 %.not181, label %296, label %298

296:                                              ; preds = %292
  call void @_ZN10tetgenmesh15delaunizecavityEPNS_9arraypoolES1_S1_S1_S1_S1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %20, ptr noundef nonnull %14, ptr noundef nonnull %26, ptr noundef nonnull %10, ptr noundef nonnull %8, ptr noundef nonnull %18)
  call void @_ZN10tetgenmesh15delaunizecavityEPNS_9arraypoolES1_S1_S1_S1_S1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %22, ptr noundef nonnull %16, ptr noundef nonnull %28, ptr noundef nonnull %12, ptr noundef nonnull %8, ptr noundef nonnull %18)
  %297 = call noundef zeroext i1 @_ZN10tetgenmesh10fillcavityEPNS_9arraypoolES1_S1_S1_S1_S1_PNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %26, ptr noundef nonnull %28, ptr noundef nonnull %18, ptr noundef nonnull %30, ptr noundef nonnull %10, ptr noundef nonnull %12, ptr noundef nonnull %4)
  br i1 %297, label %.thread, label %320

.thread:                                          ; preds = %296
  call void @_ZN10tetgenmesh11carvecavityEPNS_9arraypoolES1_S1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %8, ptr noundef nonnull %10, ptr noundef nonnull %12)
  br label %321

298:                                              ; preds = %292
  call void @_ZN10tetgenmesh15flipinsertfacetEPNS_9arraypoolES1_S1_S1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %8, ptr noundef nonnull %20, ptr noundef nonnull %22, ptr noundef nonnull %34)
  %299 = load i64, ptr %50, align 8, !tbaa !16
  %300 = icmp sgt i64 %299, 0
  br i1 %300, label %.lr.ph204, label %.critedge

.lr.ph204:                                        ; preds = %298, %.lr.ph204
  %indvars.iv231 = phi i64 [ %indvars.iv.next232, %.lr.ph204 ], [ 0, %298 ]
  %301 = load ptr, ptr %51, align 8, !tbaa !18
  %302 = load i32, ptr %52, align 8, !tbaa !19
  %303 = trunc nuw nsw i64 %indvars.iv231 to i32
  %304 = lshr i32 %303, %302
  %305 = zext nneg i32 %304 to i64
  %306 = getelementptr inbounds ptr, ptr %301, i64 %305
  %307 = load ptr, ptr %306, align 8, !tbaa !20
  %308 = load i32, ptr %53, align 4, !tbaa !21
  %309 = and i32 %308, %303
  %310 = load i32, ptr %30, align 8, !tbaa !22
  %311 = mul nsw i32 %309, %310
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds i8, ptr %307, i64 %312
  store ptr %313, ptr %6, align 8, !tbaa !20
  %314 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %24, ptr noundef nonnull %7)
  %315 = load ptr, ptr %6, align 8, !tbaa !20
  %316 = load ptr, ptr %7, align 8, !tbaa !20
  %317 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %316, ptr noundef nonnull align 8 dereferenceable(12) %315)
  %indvars.iv.next232 = add nuw nsw i64 %indvars.iv231, 1
  %318 = load i64, ptr %50, align 8, !tbaa !16
  %319 = icmp sgt i64 %318, %indvars.iv.next232
  br i1 %319, label %.lr.ph204, label %.critedge, !llvm.loop !35

.critedge:                                        ; preds = %.lr.ph204, %298
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %8)
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %14)
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %16)
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %20)
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %22)
  br label %321

320:                                              ; preds = %296
  call void @_ZN10tetgenmesh13restorecavityEPNS_9arraypoolES1_S1_S1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %8, ptr noundef nonnull %10, ptr noundef nonnull %12, ptr noundef nonnull %32)
  br label %.loopexit

321:                                              ; preds = %.thread, %.critedge
  %322 = load ptr, ptr %54, align 8, !tbaa !36
  %323 = getelementptr inbounds i8, ptr %322, i64 32
  %324 = load i64, ptr %323, align 8, !tbaa !16
  %325 = icmp sgt i64 %324, 0
  br i1 %325, label %.lr.ph207, label %._crit_edge208

.lr.ph207:                                        ; preds = %321, %349
  %indvars.iv234 = phi i64 [ %indvars.iv.next235, %349 ], [ 0, %321 ]
  %326 = phi ptr [ %350, %349 ], [ %322, %321 ]
  %327 = getelementptr inbounds i8, ptr %326, i64 24
  %328 = load ptr, ptr %327, align 8, !tbaa !18
  %329 = getelementptr inbounds i8, ptr %326, i64 8
  %330 = load i32, ptr %329, align 8, !tbaa !19
  %331 = trunc nuw nsw i64 %indvars.iv234 to i32
  %332 = lshr i32 %331, %330
  %333 = zext nneg i32 %332 to i64
  %334 = getelementptr inbounds ptr, ptr %328, i64 %333
  %335 = load ptr, ptr %334, align 8, !tbaa !20
  %336 = getelementptr inbounds i8, ptr %326, i64 12
  %337 = load i32, ptr %336, align 4, !tbaa !21
  %338 = and i32 %337, %331
  %339 = load i32, ptr %326, align 8, !tbaa !22
  %340 = mul nsw i32 %338, %339
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds i8, ptr %335, i64 %341
  store ptr %342, ptr %6, align 8, !tbaa !20
  %343 = call noundef i32 @_ZN10tetgenmesh12scoutsubfaceEPNS_4faceEPNS_7trifaceEi(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %342, ptr noundef nonnull %2, i32 noundef 1)
  %.not185 = icmp eq i32 %343, 0
  br i1 %.not185, label %344, label %349

344:                                              ; preds = %.lr.ph207
  %345 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %24, ptr noundef nonnull %7)
  %346 = load ptr, ptr %6, align 8, !tbaa !20
  %347 = load ptr, ptr %7, align 8, !tbaa !20
  %348 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %347, ptr noundef nonnull align 8 dereferenceable(12) %346)
  br label %349

349:                                              ; preds = %.lr.ph207, %344
  %indvars.iv.next235 = add nuw nsw i64 %indvars.iv234, 1
  %350 = load ptr, ptr %54, align 8, !tbaa !36
  %351 = getelementptr inbounds i8, ptr %350, i64 32
  %352 = load i64, ptr %351, align 8, !tbaa !16
  %353 = icmp sgt i64 %352, %indvars.iv.next235
  br i1 %353, label %.lr.ph207, label %._crit_edge208, !llvm.loop !37

._crit_edge208:                                   ; preds = %349, %321
  %.lcssa193 = phi ptr [ %322, %321 ], [ %350, %349 ]
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %.lcssa193)
  %354 = load ptr, ptr %55, align 8, !tbaa !38
  %355 = getelementptr inbounds i8, ptr %354, i64 32
  %356 = load i64, ptr %355, align 8, !tbaa !16
  %357 = icmp sgt i64 %356, 0
  br i1 %357, label %.lr.ph212, label %._crit_edge213

.lr.ph212:                                        ; preds = %._crit_edge208, %396
  %indvars.iv237 = phi i64 [ %indvars.iv.next238, %396 ], [ 0, %._crit_edge208 ]
  %358 = phi ptr [ %397, %396 ], [ %354, %._crit_edge208 ]
  %359 = getelementptr inbounds i8, ptr %358, i64 24
  %360 = load ptr, ptr %359, align 8, !tbaa !18
  %361 = getelementptr inbounds i8, ptr %358, i64 8
  %362 = load i32, ptr %361, align 8, !tbaa !19
  %363 = trunc nuw nsw i64 %indvars.iv237 to i32
  %364 = lshr i32 %363, %362
  %365 = zext nneg i32 %364 to i64
  %366 = getelementptr inbounds ptr, ptr %360, i64 %365
  %367 = load ptr, ptr %366, align 8, !tbaa !20
  %368 = getelementptr inbounds i8, ptr %358, i64 12
  %369 = load i32, ptr %368, align 4, !tbaa !21
  %370 = and i32 %369, %363
  %371 = load i32, ptr %358, align 8, !tbaa !22
  %372 = mul nsw i32 %370, %371
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds i8, ptr %367, i64 %373
  %375 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %374)
  %376 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %374)
  %377 = call noundef i32 @_ZN10tetgenmesh12scoutsegmentEPdS0_PNS_4faceEPNS_7trifaceEPS0_PNS_9arraypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %375, ptr noundef %376, ptr noundef nonnull %374, ptr noundef nonnull %2, ptr noundef null, ptr noundef null)
  %.not183 = icmp eq i32 %377, 3
  br i1 %.not183, label %379, label %378

378:                                              ; preds = %.lr.ph212
  call void @_Z15terminatetetgenP10tetgenmeshi(ptr noundef nonnull %0, i32 noundef 2)
  br label %379

379:                                              ; preds = %378, %.lr.ph212
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %374, ptr noundef nonnull align 8 dereferenceable(12) %2)
  %380 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %2)
  br label %381

381:                                              ; preds = %381, %379
  call void @_ZN10tetgenmesh8tssbond1ERNS_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) %374)
  %382 = load i32, ptr %56, align 8, !tbaa !39
  %383 = load ptr, ptr %3, align 8, !tbaa !33
  %384 = sext i32 %382 to i64
  %385 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %384
  %386 = load i32, ptr %385, align 4, !tbaa !40
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds ptr, ptr %383, i64 %387
  %389 = load ptr, ptr %388, align 8, !tbaa !20
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %389, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %390 = load i32, ptr %56, align 8, !tbaa !39
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %384, i64 %391
  %393 = load i32, ptr %392, align 4, !tbaa !40
  store i32 %393, ptr %56, align 8, !tbaa !39
  %394 = load ptr, ptr %3, align 8, !tbaa !33
  %395 = load ptr, ptr %2, align 8, !tbaa !33
  %.not184 = icmp eq ptr %394, %395
  br i1 %.not184, label %396, label %381, !llvm.loop !41

396:                                              ; preds = %381
  %indvars.iv.next238 = add nuw nsw i64 %indvars.iv237, 1
  %397 = load ptr, ptr %55, align 8, !tbaa !38
  %398 = getelementptr inbounds i8, ptr %397, i64 32
  %399 = load i64, ptr %398, align 8, !tbaa !16
  %400 = icmp sgt i64 %399, %indvars.iv.next238
  br i1 %400, label %.lr.ph212, label %._crit_edge213, !llvm.loop !42

._crit_edge213:                                   ; preds = %396, %._crit_edge208
  %.lcssa194 = phi ptr [ %354, %._crit_edge208 ], [ %397, %396 ]
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %.lcssa194)
  br label %.loopexit

.lr.ph216:                                        ; preds = %.preheader, %.lr.ph216
  %indvars.iv240 = phi i64 [ %indvars.iv.next241, %.lr.ph216 ], [ 0, %.preheader ]
  %401 = load ptr, ptr %51, align 8, !tbaa !18
  %402 = load i32, ptr %52, align 8, !tbaa !19
  %403 = trunc nuw nsw i64 %indvars.iv240 to i32
  %404 = lshr i32 %403, %402
  %405 = zext nneg i32 %404 to i64
  %406 = getelementptr inbounds ptr, ptr %401, i64 %405
  %407 = load ptr, ptr %406, align 8, !tbaa !20
  %408 = load i32, ptr %53, align 4, !tbaa !21
  %409 = and i32 %408, %403
  %410 = load i32, ptr %30, align 8, !tbaa !22
  %411 = mul nsw i32 %409, %410
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds i8, ptr %407, i64 %412
  store ptr %413, ptr %6, align 8, !tbaa !20
  %414 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %24, ptr noundef nonnull %7)
  %415 = load ptr, ptr %6, align 8, !tbaa !20
  %416 = load ptr, ptr %7, align 8, !tbaa !20
  %417 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %416, ptr noundef nonnull align 8 dereferenceable(12) %415)
  %indvars.iv.next241 = add nuw nsw i64 %indvars.iv240, 1
  %418 = load i64, ptr %50, align 8, !tbaa !16
  %419 = icmp sgt i64 %418, %indvars.iv.next241
  br i1 %419, label %.lr.ph216, label %.loopexit, !llvm.loop !43

.loopexit:                                        ; preds = %.lr.ph216, %.preheader, %320, %289, %._crit_edge213
  %.not182 = phi i1 [ false, %._crit_edge213 ], [ true, %320 ], [ true, %289 ], [ false, %.preheader ], [ false, %.lr.ph216 ]
  %420 = load i64, ptr %57, align 8, !tbaa !16
  %421 = icmp sgt i64 %420, 0
  br i1 %421, label %.lr.ph219, label %._crit_edge220

.lr.ph219:                                        ; preds = %.loopexit, %.lr.ph219
  %indvars.iv243 = phi i64 [ %indvars.iv.next244, %.lr.ph219 ], [ 0, %.loopexit ]
  %422 = load ptr, ptr %58, align 8, !tbaa !18
  %423 = load i32, ptr %59, align 8, !tbaa !19
  %424 = trunc nuw nsw i64 %indvars.iv243 to i32
  %425 = lshr i32 %424, %423
  %426 = zext nneg i32 %425 to i64
  %427 = getelementptr inbounds ptr, ptr %422, i64 %426
  %428 = load ptr, ptr %427, align 8, !tbaa !20
  %429 = load i32, ptr %60, align 4, !tbaa !21
  %430 = and i32 %429, %424
  %431 = load i32, ptr %34, align 8, !tbaa !22
  %432 = mul nsw i32 %430, %431
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds i8, ptr %428, i64 %433
  %435 = load ptr, ptr %434, align 8, !tbaa !20
  call void @_ZN10tetgenmesh11punmarktestEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %435)
  %indvars.iv.next244 = add nuw nsw i64 %indvars.iv243, 1
  %436 = load i64, ptr %57, align 8, !tbaa !16
  %437 = icmp sgt i64 %436, %indvars.iv.next244
  br i1 %437, label %.lr.ph219, label %._crit_edge220, !llvm.loop !44

._crit_edge220:                                   ; preds = %.lr.ph219, %.loopexit
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %34)
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %32)
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %30)
  br i1 %.not182, label %438, label %.backedge

438:                                              ; preds = %._crit_edge220
  call void @_ZN10tetgenmesh12refineregionERNS_4faceEPNS_9arraypoolES3_S3_S3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %61, ptr noundef nonnull %20, ptr noundef nonnull %14, ptr noundef nonnull %26, ptr noundef nonnull %10, ptr noundef nonnull %8, ptr noundef nonnull %18)
  br label %.backedge

.backedge:                                        ; preds = %._crit_edge220, %438, %.lr.ph222, %276, %283
  %439 = load i64, ptr %45, align 8, !tbaa !16
  %440 = icmp sgt i64 %439, 0
  br i1 %440, label %.lr.ph222, label %.loopexit188, !llvm.loop !45

.outer._crit_edge:                                ; preds = %.loopexit188, %.backedge190, %37
  %441 = getelementptr inbounds i8, ptr %8, i64 40
  %442 = load i64, ptr %441, align 8, !tbaa !46
  %443 = getelementptr inbounds i8, ptr %10, i64 40
  %444 = load i64, ptr %443, align 8, !tbaa !46
  %445 = add i64 %444, %442
  %446 = getelementptr inbounds i8, ptr %12, i64 40
  %447 = load i64, ptr %446, align 8, !tbaa !46
  %448 = add i64 %445, %447
  %449 = getelementptr inbounds i8, ptr %14, i64 40
  %450 = load i64, ptr %449, align 8, !tbaa !46
  %451 = add i64 %448, %450
  %452 = getelementptr inbounds i8, ptr %16, i64 40
  %453 = load i64, ptr %452, align 8, !tbaa !46
  %454 = add i64 %451, %453
  %455 = getelementptr inbounds i8, ptr %18, i64 40
  %456 = load i64, ptr %455, align 8, !tbaa !46
  %457 = add i64 %454, %456
  %458 = getelementptr inbounds i8, ptr %20, i64 40
  %459 = load i64, ptr %458, align 8, !tbaa !46
  %460 = add i64 %457, %459
  %461 = getelementptr inbounds i8, ptr %22, i64 40
  %462 = load i64, ptr %461, align 8, !tbaa !46
  %463 = add i64 %460, %462
  %464 = getelementptr inbounds i8, ptr %24, i64 40
  %465 = load i64, ptr %464, align 8, !tbaa !46
  %466 = add i64 %463, %465
  %467 = getelementptr inbounds i8, ptr %26, i64 40
  %468 = load i64, ptr %467, align 8, !tbaa !46
  %469 = add i64 %466, %468
  %470 = getelementptr inbounds i8, ptr %28, i64 40
  %471 = load i64, ptr %470, align 8, !tbaa !46
  %472 = add i64 %469, %471
  %473 = getelementptr inbounds i8, ptr %30, i64 40
  %474 = load i64, ptr %473, align 8, !tbaa !46
  %475 = add i64 %472, %474
  %476 = getelementptr inbounds i8, ptr %32, i64 40
  %477 = load i64, ptr %476, align 8, !tbaa !46
  %478 = add i64 %475, %477
  %479 = getelementptr inbounds i8, ptr %34, i64 40
  %480 = load i64, ptr %479, align 8, !tbaa !46
  %481 = add i64 %478, %480
  %482 = load ptr, ptr %38, align 8, !tbaa !5
  %483 = getelementptr inbounds i8, ptr %482, i64 40
  %484 = load i64, ptr %483, align 8, !tbaa !46
  %485 = add i64 %481, %484
  %486 = getelementptr inbounds i8, ptr %0, i64 728
  %487 = load i64, ptr %486, align 8, !tbaa !47
  %488 = add i64 %485, %487
  store i64 %488, ptr %486, align 8, !tbaa !47
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %8) #8
  call void @_ZdlPvm(ptr noundef nonnull %8, i64 noundef 48) #10
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %10) #8
  call void @_ZdlPvm(ptr noundef nonnull %10, i64 noundef 48) #10
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #8
  call void @_ZdlPvm(ptr noundef nonnull %12, i64 noundef 48) #10
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #8
  call void @_ZdlPvm(ptr noundef nonnull %14, i64 noundef 48) #10
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #8
  call void @_ZdlPvm(ptr noundef nonnull %16, i64 noundef 48) #10
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %18) #8
  call void @_ZdlPvm(ptr noundef nonnull %18, i64 noundef 48) #10
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %20) #8
  call void @_ZdlPvm(ptr noundef nonnull %20, i64 noundef 48) #10
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %22) #8
  call void @_ZdlPvm(ptr noundef nonnull %22, i64 noundef 48) #10
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %24) #8
  call void @_ZdlPvm(ptr noundef nonnull %24, i64 noundef 48) #10
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %26) #8
  call void @_ZdlPvm(ptr noundef nonnull %26, i64 noundef 48) #10
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %28) #8
  call void @_ZdlPvm(ptr noundef nonnull %28, i64 noundef 48) #10
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %30) #8
  call void @_ZdlPvm(ptr noundef nonnull %30, i64 noundef 48) #10
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %32) #8
  call void @_ZdlPvm(ptr noundef nonnull %32, i64 noundef 48) #10
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %34) #8
  call void @_ZdlPvm(ptr noundef nonnull %34, i64 noundef 48) #10
  %489 = load ptr, ptr %38, align 8, !tbaa !5
  %490 = icmp eq ptr %489, null
  br i1 %490, label %492, label %491

491:                                              ; preds = %.outer._crit_edge
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %489) #8
  call void @_ZdlPvm(ptr noundef nonnull %489, i64 noundef 48) #10
  br label %492

492:                                              ; preds = %491, %.outer._crit_edge
  store ptr null, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 8, 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 16, ptr nonnull %3) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #8
  ret void

493:                                              ; preds = %127, %125, %123, %121, %119, %117, %115, %113, %111, %109, %107, %105, %103, %101, %99
  %.sink = phi ptr [ %36, %127 ], [ %34, %125 ], [ %32, %123 ], [ %30, %121 ], [ %28, %119 ], [ %26, %117 ], [ %24, %115 ], [ %22, %113 ], [ %20, %111 ], [ %18, %109 ], [ %16, %107 ], [ %14, %105 ], [ %12, %103 ], [ %10, %101 ], [ %8, %99 ]
  %.pn = phi { ptr, i32 } [ %128, %127 ], [ %126, %125 ], [ %124, %123 ], [ %122, %121 ], [ %120, %119 ], [ %118, %117 ], [ %116, %115 ], [ %114, %113 ], [ %112, %111 ], [ %110, %109 ], [ %108, %107 ], [ %106, %105 ], [ %104, %103 ], [ %102, %101 ], [ %100, %99 ]
  call void @_ZdlPvm(ptr noundef nonnull %.sink, i64 noundef 48) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 8, 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 16, ptr nonnull %3) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #8
  resume { ptr, i32 } %.pn
}

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

declare void @_ZN10tetgenmesh9arraypoolC1Eii(ptr, i32, i32) local_unnamed_addr

declare void @_ZN10tetgenmesh9arraypoolD1Ev(ptr) local_unnamed_addr

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nobuiltin allocsize(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 = { nobuiltin 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 #5 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #7 = { 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 }
attributes #9 = { builtin allocsize(0) }
attributes #10 = { builtin 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 240}
!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 = !{!6, !7, i64 224}
!16 = !{!17, !13, i64 32}
!17 = !{!"_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}
!18 = !{!17, !7, i64 24}
!19 = !{!17, !11, i64 8}
!20 = !{!7, !7, i64 0}
!21 = !{!17, !11, i64 12}
!22 = !{!17, !11, i64 0}
!23 = !{!12, !7, i64 0}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!12, !11, i64 8}
!27 = distinct !{!27, !25}
!28 = distinct !{!28, !25}
!29 = !{!6, !7, i64 16}
!30 = !{!31, !11, i64 148}
!31 = !{!"_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, !32, i64 5456}
!32 = !{!"_ZTSN14tetgenbehavior10objecttypeE", !8, i64 0}
!33 = !{!10, !7, i64 0}
!34 = !{!31, !11, i64 36}
!35 = distinct !{!35, !25}
!36 = !{!6, !7, i64 176}
!37 = distinct !{!37, !25}
!38 = !{!6, !7, i64 184}
!39 = !{!10, !11, i64 8}
!40 = !{!11, !11, i64 0}
!41 = distinct !{!41, !25}
!42 = distinct !{!42, !25}
!43 = distinct !{!43, !25}
!44 = distinct !{!44, !25}
!45 = distinct !{!45, !25}
!46 = !{!17, !13, i64 40}
!47 = !{!6, !13, i64 728}


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