; 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::flipconstraints" = type { i32, i32, i32, i32, i32, i32, double, double, i32, double, double, i32, [2 x ptr], [3 x ptr], ptr }
%class.tetgenmesh = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.tetgenmesh::triface", %"class.tetgenmesh::face", ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i64, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, [8 x [3 x [8 x i32]]], [8 x i32] }
%class.tetgenbehavior = type <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, double, double, [1024 x i8], [1024 x i8], [1024 x i8], [1024 x i8], [1024 x i8], i32, [4 x i8] }>
%class.tetgenio = type { i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, ptr, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.tetgenmesh::arraypool" = type { i32, i32, i32, i32, i32, ptr, i64, i64 }

@_ZN10tetgenmesh7fsymtblE = external dso_local global [12 x [12 x i32]], align 16
@_ZN10tetgenmesh10facepivot1E = external dso_local global [12 x i32], align 16
@_ZN10tetgenmesh10facepivot2E = external dso_local global [12 x [12 x i32]], align 16
@_ZN10tetgenmesh8orgpivotE = external dso_local global [12 x i32], align 16
@_ZN10tetgenmesh9destpivotE = external dso_local global [12 x i32], align 16
@_ZN10tetgenmesh9apexpivotE = external dso_local global [12 x i32], align 16
@_ZN10tetgenmesh9oppopivotE = external dso_local global [12 x i32], align 16
@_ZN10tetgenmesh8ver2edgeE = external dso_local global [12 x i32], align 16
@.str.446 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.447 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.448 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.449 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.450 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.451 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.452 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.453 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.454 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.455 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.456 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.457 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.458 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.459 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.460 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.461 = external hidden unnamed_addr constant [29 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: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #1

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

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) #4

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

; 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 @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88)) #5 align 2

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

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

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

; 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: mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh18tetrahedrondeallocEPPPd(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef) #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

48:                                               ; preds = %1
  %49 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %50 = load ptr, ptr %49, align 8, !tbaa !9
  %51 = getelementptr inbounds %class.tetgenbehavior, ptr %50, i32 0, i32 17
  %52 = load i32, ptr %51, align 4, !tbaa !19
  %53 = icmp ne i32 %52, 0
  br i1 %53, label %54, label %56

54:                                               ; preds = %48
  %55 = call i32 (ptr, ...) @printf(ptr noundef @.str.446)
  br label %58

56:                                               ; preds = %48
  %57 = call i32 (ptr, ...) @printf(ptr noundef @.str.447)
  br label %58

58:                                               ; preds = %56, %54
  br label %59

59:                                               ; preds = %58, %1
  %60 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #10
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %60, i32 noundef 16, i32 noundef 10)
          to label %61 unwind label %108

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

63:                                               ; preds = %61
  store ptr %62, ptr %4, align 8, !tbaa !5
  %64 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 4
  %65 = load ptr, ptr %64, align 8, !tbaa !20
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %65)
  %66 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  store i32 11, ptr %66, align 8, !tbaa !21
  %67 = call noundef ptr @_ZN10tetgenmesh22alltetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %42)
  %68 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  store ptr %67, ptr %68, align 8, !tbaa !22
  br label %69

69:                                               ; preds = %118, %63
  %70 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %71 = load ptr, ptr %70, align 8, !tbaa !22
  %72 = icmp ne ptr %71, null
  br i1 %72, label %73, label %121

73:                                               ; preds = %69
  %74 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br i1 %74, label %75, label %118

75:                                               ; preds = %73
  %76 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %77 = load ptr, ptr %76, align 8, !tbaa !22
  %78 = getelementptr inbounds ptr, ptr %77, i64 9
  %79 = load ptr, ptr %78, align 8, !tbaa !5
  %80 = icmp ne ptr %79, null
  br i1 %80, label %81, label %93

81:                                               ; preds = %75
  %82 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %83 = load ptr, ptr %82, align 8, !tbaa !22
  %84 = getelementptr inbounds ptr, ptr %83, i64 9
  %85 = load ptr, ptr %84, align 8, !tbaa !5
  %86 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %87 = load i32, ptr %86, align 8, !tbaa !21
  %88 = and i32 %87, 3
  %89 = sext i32 %88 to i64
  %90 = getelementptr inbounds ptr, ptr %85, i64 %89
  %91 = load ptr, ptr %90, align 8, !tbaa !5
  %92 = icmp ne ptr %91, null
  br i1 %92, label %117, label %93

93:                                               ; preds = %81, %75
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %94 = load ptr, ptr %4, align 8, !tbaa !5
  %95 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %94, ptr noundef %7)
  %96 = load ptr, ptr %7, align 8, !tbaa !5
  %97 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %96, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %98 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %99 = load ptr, ptr %98, align 8, !tbaa !22
  %100 = getelementptr inbounds ptr, ptr %99, i64 3
  %101 = load ptr, ptr %100, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %101, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %102 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br i1 %102, label %116, label %103

103:                                              ; preds = %93
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %104 = load ptr, ptr %3, align 8, !tbaa !5
  %105 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %104, ptr noundef %7)
  %106 = load ptr, ptr %7, align 8, !tbaa !5
  %107 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %106, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %116

108:                                              ; preds = %59
  %109 = landingpad { ptr, i32 }
          cleanup
  %110 = extractvalue { ptr, i32 } %109, 0
  store ptr %110, ptr %19, align 8
  %111 = extractvalue { ptr, i32 } %109, 1
  store i32 %111, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %60, i64 noundef 48) #11
  br label %1897

112:                                              ; preds = %61
  %113 = landingpad { ptr, i32 }
          cleanup
  %114 = extractvalue { ptr, i32 } %113, 0
  store ptr %114, ptr %19, align 8
  %115 = extractvalue { ptr, i32 } %113, 1
  store i32 %115, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %62, i64 noundef 48) #11
  br label %1897

116:                                              ; preds = %103, %93
  br label %117

117:                                              ; preds = %116, %81
  br label %118

118:                                              ; preds = %117, %73
  %119 = call noundef ptr @_ZN10tetgenmesh22alltetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %42)
  %120 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  store ptr %119, ptr %120, align 8, !tbaa !22
  br label %69, !llvm.loop !23

121:                                              ; preds = %69
  %122 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 0
  %123 = load ptr, ptr %122, align 8, !tbaa !25
  %124 = getelementptr inbounds %class.tetgenio, ptr %123, i32 0, i32 25
  %125 = load i32, ptr %124, align 8, !tbaa !26
  %126 = icmp sgt i32 %125, 0
  br i1 %126, label %127, label %247

127:                                              ; preds = %121
  store i32 0, ptr %16, align 4, !tbaa !28
  br label %128

128:                                              ; preds = %243, %127
  %129 = load i32, ptr %16, align 4, !tbaa !28
  %130 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 0
  %131 = load ptr, ptr %130, align 8, !tbaa !25
  %132 = getelementptr inbounds %class.tetgenio, ptr %131, i32 0, i32 25
  %133 = load i32, ptr %132, align 8, !tbaa !26
  %134 = mul nsw i32 3, %133
  %135 = icmp slt i32 %129, %134
  br i1 %135, label %136, label %246

136:                                              ; preds = %128
  %137 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  store ptr null, ptr %137, align 8, !tbaa !22
  %138 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 0
  %139 = load ptr, ptr %138, align 8, !tbaa !25
  %140 = getelementptr inbounds %class.tetgenio, ptr %139, i32 0, i32 24
  %141 = load ptr, ptr %140, align 8, !tbaa !29
  %142 = load i32, ptr %16, align 4, !tbaa !28
  %143 = sext i32 %142 to i64
  %144 = getelementptr inbounds double, ptr %141, i64 %143
  call void @_ZN10tetgenmesh12randomsampleEPdPNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %144, ptr noundef %6)
  %145 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 0
  %146 = load ptr, ptr %145, align 8, !tbaa !25
  %147 = getelementptr inbounds %class.tetgenio, ptr %146, i32 0, i32 24
  %148 = load ptr, ptr %147, align 8, !tbaa !29
  %149 = load i32, ptr %16, align 4, !tbaa !28
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds double, ptr %148, i64 %150
  %152 = call noundef i32 @_ZN10tetgenmesh6locateEPdPNS_7trifaceEi(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %151, ptr noundef %6, i32 noundef 0)
  %153 = icmp ne i32 %152, 1
  br i1 %153, label %154, label %229

154:                                              ; preds = %136
  %155 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br i1 %155, label %228, label %156

156:                                              ; preds = %154
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %157 = load ptr, ptr %3, align 8, !tbaa !5
  %158 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %157, ptr noundef %7)
  %159 = load ptr, ptr %7, align 8, !tbaa !5
  %160 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %159, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %161 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %162 = load ptr, ptr %161, align 8, !tbaa !22
  %163 = getelementptr inbounds ptr, ptr %162, i64 9
  %164 = load ptr, ptr %163, align 8, !tbaa !5
  %165 = icmp ne ptr %164, null
  br i1 %165, label %166, label %178

166:                                              ; preds = %156
  %167 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %168 = load ptr, ptr %167, align 8, !tbaa !22
  %169 = getelementptr inbounds ptr, ptr %168, i64 9
  %170 = load ptr, ptr %169, align 8, !tbaa !5
  %171 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 1
  %172 = load i32, ptr %171, align 8, !tbaa !21
  %173 = and i32 %172, 3
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds ptr, ptr %170, i64 %174
  %176 = load ptr, ptr %175, align 8, !tbaa !5
  %177 = icmp ne ptr %176, null
  br i1 %177, label %200, label %178

178:                                              ; preds = %166, %156
  %179 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %180 = load ptr, ptr %179, align 8, !tbaa !22
  %181 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 1
  %182 = load i32, ptr %181, align 8, !tbaa !21
  %183 = and i32 %182, 3
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds ptr, ptr %180, i64 %184
  %186 = load ptr, ptr %185, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %186, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %187 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br i1 %187, label %199, label %188

188:                                              ; preds = %178
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %189 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br i1 %189, label %190, label %193

190:                                              ; preds = %188
  %191 = load ptr, ptr %4, align 8, !tbaa !5
  %192 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %191, ptr noundef %7)
  br label %196

193:                                              ; preds = %188
  %194 = load ptr, ptr %3, align 8, !tbaa !5
  %195 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %194, ptr noundef %7)
  br label %196

196:                                              ; preds = %193, %190
  %197 = load ptr, ptr %7, align 8, !tbaa !5
  %198 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %197, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br label %199

199:                                              ; preds = %196, %178
  br label %227

200:                                              ; preds = %166
  %201 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %202 = load ptr, ptr %201, align 8, !tbaa !22
  %203 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 1
  %204 = load i32, ptr %203, align 8, !tbaa !21
  %205 = and i32 %204, 3
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds ptr, ptr %202, i64 %206
  %208 = load ptr, ptr %207, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %208, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %209 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br i1 %209, label %210, label %218

210:                                              ; preds = %200
  %211 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br i1 %211, label %217, label %212

212:                                              ; preds = %210
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %213 = load ptr, ptr %4, align 8, !tbaa !5
  %214 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %213, ptr noundef %7)
  %215 = load ptr, ptr %7, align 8, !tbaa !5
  %216 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %215, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br label %217

217:                                              ; preds = %212, %210
  br label %218

218:                                              ; preds = %217, %200
  %219 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br i1 %219, label %220, label %226

220:                                              ; preds = %218
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %221 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 28
  %222 = load ptr, ptr %221, align 8, !tbaa !30
  %223 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %222, ptr noundef %11)
  %224 = load ptr, ptr %11, align 8, !tbaa !5
  %225 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %224, ptr noundef nonnull align 8 dereferenceable(12) %10)
  br label %226

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

227:                                              ; preds = %226, %199
  br label %228

228:                                              ; preds = %227, %154
  br label %242

229:                                              ; preds = %136
  %230 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %231 = load ptr, ptr %230, align 8, !tbaa !9
  %232 = getelementptr inbounds %class.tetgenbehavior, ptr %231, i32 0, i32 36
  %233 = load i32, ptr %232, align 8, !tbaa !16
  %234 = icmp ne i32 %233, 0
  br i1 %234, label %241, label %235

235:                                              ; preds = %229
  %236 = load i32, ptr %16, align 4, !tbaa !28
  %237 = sdiv i32 %236, 3
  %238 = add nsw i32 %237, 1
  %239 = call i32 (ptr, ...) @printf(ptr noundef @.str.448, i32 noundef %238)
  %240 = call i32 (ptr, ...) @printf(ptr noundef @.str.449)
  br label %241

241:                                              ; preds = %235, %229
  br label %242

242:                                              ; preds = %241, %228
  br label %243

243:                                              ; preds = %242
  %244 = load i32, ptr %16, align 4, !tbaa !28
  %245 = add nsw i32 %244, 3
  store i32 %245, ptr %16, align 4, !tbaa !28
  br label %128, !llvm.loop !31

246:                                              ; preds = %128
  br label %247

247:                                              ; preds = %246, %121
  %248 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %249 = load ptr, ptr %248, align 8, !tbaa !9
  %250 = getelementptr inbounds %class.tetgenbehavior, ptr %249, i32 0, i32 13
  %251 = load i32, ptr %250, align 4, !tbaa !32
  %252 = icmp ne i32 %251, 0
  br i1 %252, label %253, label %340

253:                                              ; preds = %247
  %254 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 0
  %255 = load ptr, ptr %254, align 8, !tbaa !25
  %256 = getelementptr inbounds %class.tetgenio, ptr %255, i32 0, i32 27
  %257 = load i32, ptr %256, align 8, !tbaa !33
  %258 = icmp sgt i32 %257, 0
  br i1 %258, label %259, label %340

259:                                              ; preds = %253
  %260 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 0
  %261 = load ptr, ptr %260, align 8, !tbaa !25
  %262 = getelementptr inbounds %class.tetgenio, ptr %261, i32 0, i32 27
  %263 = load i32, ptr %262, align 8, !tbaa !33
  %264 = sext i32 %263 to i64
  %265 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %264, i64 16)
  %266 = extractvalue { i64, i1 } %265, 1
  %267 = extractvalue { i64, i1 } %265, 0
  %268 = select i1 %266, i64 -1, i64 %267
  %269 = call noalias noundef nonnull ptr @_Znam(i64 noundef %268) #10
  %270 = icmp eq i64 %264, 0
  br i1 %270, label %278, label %271

271:                                              ; preds = %259
  %272 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %269, i64 %264
  br label %273

273:                                              ; preds = %275, %271
  %274 = phi ptr [ %269, %271 ], [ %276, %275 ]
  invoke void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %274)
          to label %275 unwind label %312

275:                                              ; preds = %273
  %276 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %274, i64 1
  %277 = icmp eq ptr %276, %272
  br i1 %277, label %278, label %273

278:                                              ; preds = %275, %259
  store ptr %269, ptr %9, align 8, !tbaa !5
  store i32 0, ptr %16, align 4, !tbaa !28
  br label %279

279:                                              ; preds = %336, %278
  %280 = load i32, ptr %16, align 4, !tbaa !28
  %281 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 0
  %282 = load ptr, ptr %281, align 8, !tbaa !25
  %283 = getelementptr inbounds %class.tetgenio, ptr %282, i32 0, i32 27
  %284 = load i32, ptr %283, align 8, !tbaa !33
  %285 = mul nsw i32 5, %284
  %286 = icmp slt i32 %280, %285
  br i1 %286, label %287, label %339

287:                                              ; preds = %279
  %288 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  store ptr null, ptr %288, align 8, !tbaa !22
  %289 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 0
  %290 = load ptr, ptr %289, align 8, !tbaa !25
  %291 = getelementptr inbounds %class.tetgenio, ptr %290, i32 0, i32 26
  %292 = load ptr, ptr %291, align 8, !tbaa !34
  %293 = load i32, ptr %16, align 4, !tbaa !28
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds double, ptr %292, i64 %294
  call void @_ZN10tetgenmesh12randomsampleEPdPNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %295, ptr noundef %6)
  %296 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 0
  %297 = load ptr, ptr %296, align 8, !tbaa !25
  %298 = getelementptr inbounds %class.tetgenio, ptr %297, i32 0, i32 26
  %299 = load ptr, ptr %298, align 8, !tbaa !34
  %300 = load i32, ptr %16, align 4, !tbaa !28
  %301 = sext i32 %300 to i64
  %302 = getelementptr inbounds double, ptr %299, i64 %301
  %303 = call noundef i32 @_ZN10tetgenmesh6locateEPdPNS_7trifaceEi(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %302, ptr noundef %6, i32 noundef 0)
  %304 = icmp ne i32 %303, 1
  br i1 %304, label %305, label %316

305:                                              ; preds = %287
  %306 = load ptr, ptr %9, align 8, !tbaa !5
  %307 = load i32, ptr %16, align 4, !tbaa !28
  %308 = sdiv i32 %307, 5
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %306, i64 %309
  %311 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %310, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %335

312:                                              ; preds = %273
  %313 = landingpad { ptr, i32 }
          cleanup
  %314 = extractvalue { ptr, i32 } %313, 0
  store ptr %314, ptr %19, align 8
  %315 = extractvalue { ptr, i32 } %313, 1
  store i32 %315, ptr %20, align 4
  call void @_ZdaPvm(ptr noundef %269, i64 noundef %268) #11
  br label %1897

316:                                              ; preds = %287
  %317 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %318 = load ptr, ptr %317, align 8, !tbaa !9
  %319 = getelementptr inbounds %class.tetgenbehavior, ptr %318, i32 0, i32 36
  %320 = load i32, ptr %319, align 8, !tbaa !16
  %321 = icmp ne i32 %320, 0
  br i1 %321, label %328, label %322

322:                                              ; preds = %316
  %323 = load i32, ptr %16, align 4, !tbaa !28
  %324 = sdiv i32 %323, 5
  %325 = add nsw i32 %324, 1
  %326 = call i32 (ptr, ...) @printf(ptr noundef @.str.450, i32 noundef %325)
  %327 = call i32 (ptr, ...) @printf(ptr noundef @.str.449)
  br label %328

328:                                              ; preds = %322, %316
  %329 = load ptr, ptr %9, align 8, !tbaa !5
  %330 = load i32, ptr %16, align 4, !tbaa !28
  %331 = sdiv i32 %330, 5
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %329, i64 %332
  %334 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %333, i32 0, i32 0
  store ptr null, ptr %334, align 8, !tbaa !22
  br label %335

335:                                              ; preds = %328, %305
  br label %336

336:                                              ; preds = %335
  %337 = load i32, ptr %16, align 4, !tbaa !28
  %338 = add nsw i32 %337, 5
  store i32 %338, ptr %16, align 4, !tbaa !28
  br label %279, !llvm.loop !35

339:                                              ; preds = %279
  br label %340

340:                                              ; preds = %339, %253, %247
  store i32 0, ptr %16, align 4, !tbaa !28
  br label %341

341:                                              ; preds = %460, %340
  %342 = load i32, ptr %16, align 4, !tbaa !28
  %343 = sext i32 %342 to i64
  %344 = load ptr, ptr %3, align 8, !tbaa !5
  %345 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %344, i32 0, i32 6
  %346 = load i64, ptr %345, align 8, !tbaa !36
  %347 = icmp slt i64 %343, %346
  br i1 %347, label %348, label %463

348:                                              ; preds = %341
  %349 = load ptr, ptr %3, align 8, !tbaa !5
  %350 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %349, i32 0, i32 5
  %351 = load ptr, ptr %350, align 8, !tbaa !38
  %352 = load i32, ptr %16, align 4, !tbaa !28
  %353 = load ptr, ptr %3, align 8, !tbaa !5
  %354 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %353, i32 0, i32 2
  %355 = load i32, ptr %354, align 8, !tbaa !39
  %356 = ashr i32 %352, %355
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds ptr, ptr %351, i64 %357
  %359 = load ptr, ptr %358, align 8, !tbaa !5
  %360 = load i32, ptr %16, align 4, !tbaa !28
  %361 = load ptr, ptr %3, align 8, !tbaa !5
  %362 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %361, i32 0, i32 3
  %363 = load i32, ptr %362, align 4, !tbaa !40
  %364 = and i32 %360, %363
  %365 = load ptr, ptr %3, align 8, !tbaa !5
  %366 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %365, i32 0, i32 0
  %367 = load i32, ptr %366, align 8, !tbaa !41
  %368 = mul nsw i32 %364, %367
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds i8, ptr %359, i64 %369
  store ptr %370, ptr %7, align 8, !tbaa !5
  %371 = load ptr, ptr %7, align 8, !tbaa !5
  %372 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %371, i32 0, i32 1
  %373 = load i32, ptr %372, align 8, !tbaa !21
  %374 = and i32 %373, 3
  store i32 %374, ptr %17, align 4, !tbaa !28
  store i32 1, ptr %18, align 4, !tbaa !28
  br label %375

375:                                              ; preds = %456, %348
  %376 = load i32, ptr %18, align 4, !tbaa !28
  %377 = icmp slt i32 %376, 4
  br i1 %377, label %378, label %459

378:                                              ; preds = %375
  %379 = load ptr, ptr %7, align 8, !tbaa !5
  %380 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %379, i32 0, i32 0
  %381 = load ptr, ptr %380, align 8, !tbaa !22
  %382 = load i32, ptr %17, align 4, !tbaa !28
  %383 = load i32, ptr %18, align 4, !tbaa !28
  %384 = add nsw i32 %382, %383
  %385 = srem i32 %384, 4
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds ptr, ptr %381, i64 %386
  %388 = load ptr, ptr %387, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %388, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %389 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br i1 %389, label %427, label %390

390:                                              ; preds = %378
  %391 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %392 = load ptr, ptr %391, align 8, !tbaa !22
  %393 = getelementptr inbounds ptr, ptr %392, i64 9
  %394 = load ptr, ptr %393, align 8, !tbaa !5
  %395 = icmp ne ptr %394, null
  br i1 %395, label %396, label %408

396:                                              ; preds = %390
  %397 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %398 = load ptr, ptr %397, align 8, !tbaa !22
  %399 = getelementptr inbounds ptr, ptr %398, i64 9
  %400 = load ptr, ptr %399, align 8, !tbaa !5
  %401 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 1
  %402 = load i32, ptr %401, align 8, !tbaa !21
  %403 = and i32 %402, 3
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds ptr, ptr %400, i64 %404
  %406 = load ptr, ptr %405, align 8, !tbaa !5
  %407 = icmp ne ptr %406, null
  br i1 %407, label %413, label %408

408:                                              ; preds = %396, %390
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %409 = load ptr, ptr %3, align 8, !tbaa !5
  %410 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %409, ptr noundef %8)
  %411 = load ptr, ptr %8, align 8, !tbaa !5
  %412 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %411, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %426

413:                                              ; preds = %396
  %414 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br i1 %414, label %415, label %425

415:                                              ; preds = %413
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %416 = load ptr, ptr %4, align 8, !tbaa !5
  %417 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %416, ptr noundef %8)
  %418 = load ptr, ptr %8, align 8, !tbaa !5
  %419 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %418, ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %420 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 28
  %421 = load ptr, ptr %420, align 8, !tbaa !30
  %422 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %421, ptr noundef %11)
  %423 = load ptr, ptr %11, align 8, !tbaa !5
  %424 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %423, ptr noundef nonnull align 8 dereferenceable(12) %10)
  br label %425

425:                                              ; preds = %415, %413
  br label %426

426:                                              ; preds = %425, %408
  br label %455

427:                                              ; preds = %378
  %428 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %429 = load ptr, ptr %428, align 8, !tbaa !22
  %430 = getelementptr inbounds ptr, ptr %429, i64 9
  %431 = load ptr, ptr %430, align 8, !tbaa !5
  %432 = icmp ne ptr %431, null
  br i1 %432, label %433, label %454

433:                                              ; preds = %427
  %434 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %435 = load ptr, ptr %434, align 8, !tbaa !22
  %436 = getelementptr inbounds ptr, ptr %435, i64 9
  %437 = load ptr, ptr %436, align 8, !tbaa !5
  %438 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 1
  %439 = load i32, ptr %438, align 8, !tbaa !21
  %440 = and i32 %439, 3
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds ptr, ptr %437, i64 %441
  %443 = load ptr, ptr %442, align 8, !tbaa !5
  %444 = icmp ne ptr %443, null
  br i1 %444, label %445, label %454

445:                                              ; preds = %433
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %446 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %10)
  br i1 %446, label %453, label %447

447:                                              ; preds = %445
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %448 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 28
  %449 = load ptr, ptr %448, align 8, !tbaa !30
  %450 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %449, ptr noundef %11)
  %451 = load ptr, ptr %11, align 8, !tbaa !5
  %452 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %451, ptr noundef nonnull align 8 dereferenceable(12) %10)
  br label %453

453:                                              ; preds = %447, %445
  br label %454

454:                                              ; preds = %453, %433, %427
  br label %455

455:                                              ; preds = %454, %426
  br label %456

456:                                              ; preds = %455
  %457 = load i32, ptr %18, align 4, !tbaa !28
  %458 = add nsw i32 %457, 1
  store i32 %458, ptr %18, align 4, !tbaa !28
  br label %375, !llvm.loop !42

459:                                              ; preds = %375
  br label %460

460:                                              ; preds = %459
  %461 = load i32, ptr %16, align 4, !tbaa !28
  %462 = add nsw i32 %461, 1
  store i32 %462, ptr %16, align 4, !tbaa !28
  br label %341, !llvm.loop !43

463:                                              ; preds = %341
  %464 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %465 = load ptr, ptr %464, align 8, !tbaa !9
  %466 = getelementptr inbounds %class.tetgenbehavior, ptr %465, i32 0, i32 13
  %467 = load i32, ptr %466, align 4, !tbaa !32
  %468 = icmp ne i32 %467, 0
  br i1 %468, label %469, label %511

469:                                              ; preds = %463
  %470 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 0
  %471 = load ptr, ptr %470, align 8, !tbaa !25
  %472 = getelementptr inbounds %class.tetgenio, ptr %471, i32 0, i32 27
  %473 = load i32, ptr %472, align 8, !tbaa !33
  %474 = icmp sgt i32 %473, 0
  br i1 %474, label %475, label %511

475:                                              ; preds = %469
  store i32 0, ptr %16, align 4, !tbaa !28
  br label %476

476:                                              ; preds = %507, %475
  %477 = load i32, ptr %16, align 4, !tbaa !28
  %478 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 0
  %479 = load ptr, ptr %478, align 8, !tbaa !25
  %480 = getelementptr inbounds %class.tetgenio, ptr %479, i32 0, i32 27
  %481 = load i32, ptr %480, align 8, !tbaa !33
  %482 = icmp slt i32 %477, %481
  br i1 %482, label %483, label %510

483:                                              ; preds = %476
  %484 = load ptr, ptr %9, align 8, !tbaa !5
  %485 = load i32, ptr %16, align 4, !tbaa !28
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %484, i64 %486
  %488 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %487)
  br i1 %488, label %489, label %506

489:                                              ; preds = %483
  %490 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %491 = load ptr, ptr %490, align 8, !tbaa !9
  %492 = getelementptr inbounds %class.tetgenbehavior, ptr %491, i32 0, i32 37
  %493 = load i32, ptr %492, align 4, !tbaa !44
  %494 = icmp ne i32 %493, 0
  br i1 %494, label %495, label %500

495:                                              ; preds = %489
  %496 = load i32, ptr %16, align 4, !tbaa !28
  %497 = add nsw i32 %496, 1
  %498 = call i32 (ptr, ...) @printf(ptr noundef @.str.450, i32 noundef %497)
  %499 = call i32 (ptr, ...) @printf(ptr noundef @.str.451)
  br label %500

500:                                              ; preds = %495, %489
  %501 = load ptr, ptr %9, align 8, !tbaa !5
  %502 = load i32, ptr %16, align 4, !tbaa !28
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %501, i64 %503
  %505 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %504, i32 0, i32 0
  store ptr null, ptr %505, align 8, !tbaa !22
  br label %506

506:                                              ; preds = %500, %483
  br label %507

507:                                              ; preds = %506
  %508 = load i32, ptr %16, align 4, !tbaa !28
  %509 = add nsw i32 %508, 1
  store i32 %509, ptr %16, align 4, !tbaa !28
  br label %476, !llvm.loop !45

510:                                              ; preds = %476
  br label %511

511:                                              ; preds = %510, %469, %463
  %512 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 7
  %513 = load ptr, ptr %512, align 8, !tbaa !46
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %513)
  %514 = call noundef ptr @_ZN10tetgenmesh13pointtraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %42)
  store ptr %514, ptr %13, align 8, !tbaa !5
  br label %515

515:                                              ; preds = %572, %511
  %516 = load ptr, ptr %13, align 8, !tbaa !5
  %517 = icmp ne ptr %516, null
  br i1 %517, label %518, label %574

518:                                              ; preds = %515
  %519 = load ptr, ptr %13, align 8, !tbaa !5
  %520 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %519)
  %521 = icmp ne i32 %520, 0
  br i1 %521, label %522, label %572

522:                                              ; preds = %518
  %523 = load ptr, ptr %13, align 8, !tbaa !5
  %524 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %523)
  %525 = icmp ne i32 %524, 1
  br i1 %525, label %526, label %572

526:                                              ; preds = %522
  %527 = load ptr, ptr %13, align 8, !tbaa !5
  %528 = call noundef ptr @_ZN10tetgenmesh9point2tetEPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %527)
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %528, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %529 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br i1 %529, label %530, label %536

530:                                              ; preds = %526
  %531 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 21
  %532 = load ptr, ptr %531, align 8, !tbaa !47
  %533 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %532, ptr noundef %14)
  %534 = load ptr, ptr %13, align 8, !tbaa !5
  %535 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %534, ptr %535, align 8, !tbaa !5
  br label %536

536:                                              ; preds = %530, %526
  %537 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %538 = load ptr, ptr %537, align 8, !tbaa !9
  %539 = getelementptr inbounds %class.tetgenbehavior, ptr %538, i32 0, i32 4
  %540 = load i32, ptr %539, align 8, !tbaa !48
  %541 = icmp ne i32 %540, 0
  br i1 %541, label %542, label %571

542:                                              ; preds = %536
  %543 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %544 = load ptr, ptr %543, align 8, !tbaa !9
  %545 = getelementptr inbounds %class.tetgenbehavior, ptr %544, i32 0, i32 42
  %546 = load i32, ptr %545, align 8, !tbaa !49
  %547 = icmp sgt i32 %546, 0
  br i1 %547, label %548, label %571

548:                                              ; preds = %542
  %549 = load ptr, ptr %13, align 8, !tbaa !5
  %550 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %549)
  %551 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 0
  %552 = load ptr, ptr %551, align 8, !tbaa !25
  %553 = getelementptr inbounds %class.tetgenio, ptr %552, i32 0, i32 9
  %554 = load i32, ptr %553, align 8, !tbaa !50
  %555 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 0
  %556 = load ptr, ptr %555, align 8, !tbaa !25
  %557 = getelementptr inbounds %class.tetgenio, ptr %556, i32 0, i32 0
  %558 = load i32, ptr %557, align 8, !tbaa !51
  %559 = icmp ne i32 %558, 0
  %560 = zext i1 %559 to i64
  %561 = select i1 %559, i32 0, i32 1
  %562 = sub nsw i32 %554, %561
  %563 = icmp sgt i32 %550, %562
  br i1 %563, label %564, label %570

564:                                              ; preds = %548
  %565 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 29
  %566 = load ptr, ptr %565, align 8, !tbaa !52
  %567 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %566, ptr noundef %14)
  %568 = load ptr, ptr %13, align 8, !tbaa !5
  %569 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %568, ptr %569, align 8, !tbaa !5
  br label %570

570:                                              ; preds = %564, %548
  br label %571

571:                                              ; preds = %570, %542, %536
  br label %572

572:                                              ; preds = %571, %522, %518
  %573 = call noundef ptr @_ZN10tetgenmesh13pointtraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %42)
  store ptr %573, ptr %13, align 8, !tbaa !5
  br label %515, !llvm.loop !53

574:                                              ; preds = %515
  %575 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %576 = load ptr, ptr %575, align 8, !tbaa !9
  %577 = getelementptr inbounds %class.tetgenbehavior, ptr %576, i32 0, i32 17
  %578 = load i32, ptr %577, align 4, !tbaa !19
  %579 = icmp ne i32 %578, 0
  br i1 %579, label %1368, label %580

580:                                              ; preds = %574
  %581 = load ptr, ptr %3, align 8, !tbaa !5
  %582 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %581, i32 0, i32 6
  %583 = load i64, ptr %582, align 8, !tbaa !36
  %584 = icmp sgt i64 %583, 0
  br i1 %584, label %585, label %1368

585:                                              ; preds = %580
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #9
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %22)
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #9
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %23)
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #9
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %24)
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  store i64 0, ptr %29, align 8, !tbaa !54
  %586 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 6
  %587 = load ptr, ptr %586, align 8, !tbaa !55
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %587)
  %588 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 6
  %589 = load ptr, ptr %588, align 8, !tbaa !55
  %590 = call noundef ptr @_ZN10tetgenmesh17shellfacetraverseEPNS_10memorypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %589)
  %591 = getelementptr inbounds %"class.tetgenmesh::face", ptr %24, i32 0, i32 0
  store ptr %590, ptr %591, align 8, !tbaa !56
  br label %592

592:                                              ; preds = %604, %585
  %593 = getelementptr inbounds %"class.tetgenmesh::face", ptr %24, i32 0, i32 0
  %594 = load ptr, ptr %593, align 8, !tbaa !56
  %595 = icmp ne ptr %594, null
  br i1 %595, label %596, label %609

596:                                              ; preds = %592
  call void @_ZN10tetgenmesh9sstpivot1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %24, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %597 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br i1 %597, label %598, label %604

598:                                              ; preds = %596
  %599 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 27
  %600 = load ptr, ptr %599, align 8, !tbaa !57
  %601 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %600, ptr noundef %25)
  %602 = load ptr, ptr %25, align 8, !tbaa !5
  %603 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %602, ptr noundef nonnull align 8 dereferenceable(12) %24)
  br label %604

604:                                              ; preds = %598, %596
  %605 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 6
  %606 = load ptr, ptr %605, align 8, !tbaa !55
  %607 = call noundef ptr @_ZN10tetgenmesh17shellfacetraverseEPNS_10memorypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %606)
  %608 = getelementptr inbounds %"class.tetgenmesh::face", ptr %24, i32 0, i32 0
  store ptr %607, ptr %608, align 8, !tbaa !56
  br label %592, !llvm.loop !58

609:                                              ; preds = %592
  %610 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #10
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %610, i32 noundef 16, i32 noundef 10)
          to label %611 unwind label %723

611:                                              ; preds = %609
  store ptr %610, ptr %21, align 8, !tbaa !5
  store i32 0, ptr %16, align 4, !tbaa !28
  br label %612

612:                                              ; preds = %756, %611
  %613 = load i32, ptr %16, align 4, !tbaa !28
  %614 = sext i32 %613 to i64
  %615 = load ptr, ptr %3, align 8, !tbaa !5
  %616 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %615, i32 0, i32 6
  %617 = load i64, ptr %616, align 8, !tbaa !36
  %618 = icmp slt i64 %614, %617
  br i1 %618, label %619, label %759

619:                                              ; preds = %612
  %620 = load ptr, ptr %3, align 8, !tbaa !5
  %621 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %620, i32 0, i32 5
  %622 = load ptr, ptr %621, align 8, !tbaa !38
  %623 = load i32, ptr %16, align 4, !tbaa !28
  %624 = load ptr, ptr %3, align 8, !tbaa !5
  %625 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %624, i32 0, i32 2
  %626 = load i32, ptr %625, align 8, !tbaa !39
  %627 = ashr i32 %623, %626
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds ptr, ptr %622, i64 %628
  %630 = load ptr, ptr %629, align 8, !tbaa !5
  %631 = load i32, ptr %16, align 4, !tbaa !28
  %632 = load ptr, ptr %3, align 8, !tbaa !5
  %633 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %632, i32 0, i32 3
  %634 = load i32, ptr %633, align 4, !tbaa !40
  %635 = and i32 %631, %634
  %636 = load ptr, ptr %3, align 8, !tbaa !5
  %637 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %636, i32 0, i32 0
  %638 = load i32, ptr %637, align 8, !tbaa !41
  %639 = mul nsw i32 %635, %638
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds i8, ptr %630, i64 %640
  store ptr %641, ptr %7, align 8, !tbaa !5
  store i32 0, ptr %17, align 4, !tbaa !28
  br label %642

642:                                              ; preds = %752, %619
  %643 = load i32, ptr %17, align 4, !tbaa !28
  %644 = icmp slt i32 %643, 4
  br i1 %644, label %645, label %755

645:                                              ; preds = %642
  %646 = load ptr, ptr %7, align 8, !tbaa !5
  %647 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %646, i32 0, i32 0
  %648 = load ptr, ptr %647, align 8, !tbaa !22
  %649 = load i32, ptr %17, align 4, !tbaa !28
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds ptr, ptr %648, i64 %650
  %652 = load ptr, ptr %651, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %652, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %653 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br i1 %653, label %751, label %654

654:                                              ; preds = %645
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh15maketetrahedronEPNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %22)
  %655 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5)
  store ptr %655, ptr %26, align 8, !tbaa !5
  %656 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5)
  store ptr %656, ptr %27, align 8, !tbaa !5
  %657 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5)
  store ptr %657, ptr %28, align 8, !tbaa !5
  %658 = load ptr, ptr %27, align 8, !tbaa !5
  %659 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %22, i32 0, i32 0
  %660 = load ptr, ptr %659, align 8, !tbaa !22
  %661 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %22, i32 0, i32 1
  %662 = load i32, ptr %661, align 8, !tbaa !21
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh8orgpivotE, i64 0, i64 %663
  %665 = load i32, ptr %664, align 4, !tbaa !28
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds ptr, ptr %660, i64 %666
  store ptr %658, ptr %667, align 8, !tbaa !5
  %668 = load ptr, ptr %26, align 8, !tbaa !5
  %669 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %22, i32 0, i32 0
  %670 = load ptr, ptr %669, align 8, !tbaa !22
  %671 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %22, i32 0, i32 1
  %672 = load i32, ptr %671, align 8, !tbaa !21
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9destpivotE, i64 0, i64 %673
  %675 = load i32, ptr %674, align 4, !tbaa !28
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds ptr, ptr %670, i64 %676
  store ptr %668, ptr %677, align 8, !tbaa !5
  %678 = load ptr, ptr %28, align 8, !tbaa !5
  %679 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %22, i32 0, i32 0
  %680 = load ptr, ptr %679, align 8, !tbaa !22
  %681 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %22, i32 0, i32 1
  %682 = load i32, ptr %681, align 8, !tbaa !21
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9apexpivotE, i64 0, i64 %683
  %685 = load i32, ptr %684, align 4, !tbaa !28
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds ptr, ptr %680, i64 %686
  store ptr %678, ptr %687, align 8, !tbaa !5
  %688 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 35
  %689 = load ptr, ptr %688, align 8, !tbaa !59
  %690 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %22, i32 0, i32 0
  %691 = load ptr, ptr %690, align 8, !tbaa !22
  %692 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %22, i32 0, i32 1
  %693 = load i32, ptr %692, align 8, !tbaa !21
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9oppopivotE, i64 0, i64 %694
  %696 = load i32, ptr %695, align 4, !tbaa !28
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds ptr, ptr %691, i64 %697
  store ptr %689, ptr %698, align 8, !tbaa !5
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %22)
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %22, ptr noundef nonnull align 8 dereferenceable(12) %10)
  store i32 0, ptr %18, align 4, !tbaa !28
  br label %699

699:                                              ; preds = %728, %654
  %700 = load i32, ptr %18, align 4, !tbaa !28
  %701 = icmp slt i32 %700, 3
  br i1 %701, label %702, label %731

702:                                              ; preds = %699
  %703 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %704 = load ptr, ptr %703, align 8, !tbaa !22
  %705 = getelementptr inbounds ptr, ptr %704, i64 8
  %706 = load ptr, ptr %705, align 8, !tbaa !5
  %707 = icmp ne ptr %706, null
  br i1 %707, label %708, label %727

708:                                              ; preds = %702
  %709 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %710 = load ptr, ptr %709, align 8, !tbaa !22
  %711 = getelementptr inbounds ptr, ptr %710, i64 8
  %712 = load ptr, ptr %711, align 8, !tbaa !5
  %713 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %714 = load i32, ptr %713, align 8, !tbaa !21
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh8ver2edgeE, i64 0, i64 %715
  %717 = load i32, ptr %716, align 4, !tbaa !28
  %718 = sext i32 %717 to i64
  %719 = getelementptr inbounds ptr, ptr %712, i64 %718
  %720 = load ptr, ptr %719, align 8, !tbaa !5
  %721 = icmp ne ptr %720, null
  br i1 %721, label %722, label %727

722:                                              ; preds = %708
  call void @_ZN10tetgenmesh9tsspivot1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %22, ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %22)
  br label %727

723:                                              ; preds = %609
  %724 = landingpad { ptr, i32 }
          cleanup
  %725 = extractvalue { ptr, i32 } %724, 0
  store ptr %725, ptr %19, align 8
  %726 = extractvalue { ptr, i32 } %724, 1
  store i32 %726, ptr %20, align 4
  call void @_ZdlPvm(ptr noundef %610, i64 noundef 48) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  br label %1897

727:                                              ; preds = %722, %708, %702
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5)
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %22)
  br label %728

728:                                              ; preds = %727
  %729 = load i32, ptr %18, align 4, !tbaa !28
  %730 = add nsw i32 %729, 1
  store i32 %730, ptr %18, align 4, !tbaa !28
  br label %699, !llvm.loop !60

731:                                              ; preds = %699
  %732 = load ptr, ptr %26, align 8, !tbaa !5
  %733 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %734 = load ptr, ptr %733, align 8, !tbaa !22
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %732, ptr noundef %734)
  %735 = load ptr, ptr %27, align 8, !tbaa !5
  %736 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %737 = load ptr, ptr %736, align 8, !tbaa !22
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %735, ptr noundef %737)
  %738 = load ptr, ptr %28, align 8, !tbaa !5
  %739 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %740 = load ptr, ptr %739, align 8, !tbaa !22
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %738, ptr noundef %740)
  %741 = load ptr, ptr %21, align 8, !tbaa !5
  %742 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %741, ptr noundef %8)
  %743 = load ptr, ptr %7, align 8, !tbaa !5
  %744 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %743, i32 0, i32 0
  %745 = load ptr, ptr %744, align 8, !tbaa !22
  %746 = load ptr, ptr %8, align 8, !tbaa !5
  %747 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %746, i32 0, i32 0
  store ptr %745, ptr %747, align 8, !tbaa !22
  %748 = load i32, ptr %17, align 4, !tbaa !28
  %749 = load ptr, ptr %8, align 8, !tbaa !5
  %750 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %749, i32 0, i32 1
  store i32 %748, ptr %750, align 8, !tbaa !21
  br label %751

751:                                              ; preds = %731, %645
  br label %752

752:                                              ; preds = %751
  %753 = load i32, ptr %17, align 4, !tbaa !28
  %754 = add nsw i32 %753, 1
  store i32 %754, ptr %17, align 4, !tbaa !28
  br label %642, !llvm.loop !61

755:                                              ; preds = %642
  br label %756

756:                                              ; preds = %755
  %757 = load i32, ptr %16, align 4, !tbaa !28
  %758 = add nsw i32 %757, 1
  store i32 %758, ptr %16, align 4, !tbaa !28
  br label %612, !llvm.loop !62

759:                                              ; preds = %612
  store i32 0, ptr %16, align 4, !tbaa !28
  br label %760

760:                                              ; preds = %862, %759
  %761 = load i32, ptr %16, align 4, !tbaa !28
  %762 = sext i32 %761 to i64
  %763 = load ptr, ptr %21, align 8, !tbaa !5
  %764 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %763, i32 0, i32 6
  %765 = load i64, ptr %764, align 8, !tbaa !36
  %766 = icmp slt i64 %762, %765
  br i1 %766, label %767, label %865

767:                                              ; preds = %760
  %768 = load ptr, ptr %21, align 8, !tbaa !5
  %769 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %768, i32 0, i32 5
  %770 = load ptr, ptr %769, align 8, !tbaa !38
  %771 = load i32, ptr %16, align 4, !tbaa !28
  %772 = load ptr, ptr %21, align 8, !tbaa !5
  %773 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %772, i32 0, i32 2
  %774 = load i32, ptr %773, align 8, !tbaa !39
  %775 = ashr i32 %771, %774
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds ptr, ptr %770, i64 %776
  %778 = load ptr, ptr %777, align 8, !tbaa !5
  %779 = load i32, ptr %16, align 4, !tbaa !28
  %780 = load ptr, ptr %21, align 8, !tbaa !5
  %781 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %780, i32 0, i32 3
  %782 = load i32, ptr %781, align 4, !tbaa !40
  %783 = and i32 %779, %782
  %784 = load ptr, ptr %21, align 8, !tbaa !5
  %785 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %784, i32 0, i32 0
  %786 = load i32, ptr %785, align 8, !tbaa !41
  %787 = mul nsw i32 %783, %786
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds i8, ptr %778, i64 %788
  store ptr %789, ptr %7, align 8, !tbaa !5
  %790 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %790, ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %22)
  store i32 0, ptr %17, align 4, !tbaa !28
  br label %791

791:                                              ; preds = %858, %767
  %792 = load i32, ptr %17, align 4, !tbaa !28
  %793 = icmp slt i32 %792, 3
  br i1 %793, label %794, label %861

794:                                              ; preds = %791
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %22, ptr noundef nonnull align 8 dereferenceable(12) %23)
  %795 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %23, i32 0, i32 0
  %796 = load ptr, ptr %795, align 8, !tbaa !22
  %797 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %23, i32 0, i32 1
  %798 = load i32, ptr %797, align 8, !tbaa !21
  %799 = and i32 %798, 3
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds ptr, ptr %796, i64 %800
  %802 = load ptr, ptr %801, align 8, !tbaa !5
  %803 = icmp eq ptr %802, null
  br i1 %803, label %804, label %856

804:                                              ; preds = %794
  %805 = load ptr, ptr %7, align 8, !tbaa !5
  %806 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %805)
  br label %807

807:                                              ; preds = %832, %804
  br label %808

808:                                              ; preds = %807
  %809 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 1
  %810 = load i32, ptr %809, align 8, !tbaa !21
  store i32 %810, ptr %15, align 4, !tbaa !28
  %811 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %812 = load ptr, ptr %811, align 8, !tbaa !22
  %813 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 1
  %814 = load i32, ptr %813, align 8, !tbaa !21
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %815
  %817 = load i32, ptr %816, align 4, !tbaa !28
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds ptr, ptr %812, i64 %818
  %820 = load ptr, ptr %819, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %820, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %821 = load i32, ptr %15, align 4, !tbaa !28
  %822 = sext i32 %821 to i64
  %823 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %822
  %824 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 1
  %825 = load i32, ptr %824, align 8, !tbaa !21
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds [12 x i32], ptr %823, i64 0, i64 %826
  %828 = load i32, ptr %827, align 4, !tbaa !28
  %829 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 1
  store i32 %828, ptr %829, align 8, !tbaa !21
  %830 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br i1 %830, label %832, label %831

831:                                              ; preds = %808
  br label %833

832:                                              ; preds = %808
  br label %807, !llvm.loop !63

833:                                              ; preds = %831
  %834 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br i1 %834, label %855, label %835

835:                                              ; preds = %833
  %836 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 1
  %837 = load i32, ptr %836, align 8, !tbaa !21
  store i32 %837, ptr %15, align 4, !tbaa !28
  %838 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %839 = load ptr, ptr %838, align 8, !tbaa !22
  %840 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 1
  %841 = load i32, ptr %840, align 8, !tbaa !21
  %842 = and i32 %841, 3
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds ptr, ptr %839, i64 %843
  %845 = load ptr, ptr %844, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %845, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %846 = load i32, ptr %15, align 4, !tbaa !28
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %847
  %849 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 1
  %850 = load i32, ptr %849, align 8, !tbaa !21
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds [12 x i32], ptr %848, i64 0, i64 %851
  %853 = load i32, ptr %852, align 4, !tbaa !28
  %854 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 1
  store i32 %853, ptr %854, align 8, !tbaa !21
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %855

855:                                              ; preds = %835, %833
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %23, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %856

856:                                              ; preds = %855, %794
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %22)
  %857 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %857)
  br label %858

858:                                              ; preds = %856
  %859 = load i32, ptr %17, align 4, !tbaa !28
  %860 = add nsw i32 %859, 1
  store i32 %860, ptr %17, align 4, !tbaa !28
  br label %791, !llvm.loop !64

861:                                              ; preds = %791
  br label %862

862:                                              ; preds = %861
  %863 = load i32, ptr %16, align 4, !tbaa !28
  %864 = add nsw i32 %863, 1
  store i32 %864, ptr %16, align 4, !tbaa !28
  br label %760, !llvm.loop !65

865:                                              ; preds = %760
  %866 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 28
  %867 = load ptr, ptr %866, align 8, !tbaa !30
  %868 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %867, i32 0, i32 6
  %869 = load i64, ptr %868, align 8, !tbaa !36
  %870 = icmp sgt i64 %869, 0
  br i1 %870, label %871, label %1024

871:                                              ; preds = %865
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #9
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %30)
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #9
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %31)
  store i32 0, ptr %16, align 4, !tbaa !28
  br label %872

872:                                              ; preds = %1006, %871
  %873 = load i32, ptr %16, align 4, !tbaa !28
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 28
  %876 = load ptr, ptr %875, align 8, !tbaa !30
  %877 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %876, i32 0, i32 6
  %878 = load i64, ptr %877, align 8, !tbaa !36
  %879 = icmp slt i64 %874, %878
  br i1 %879, label %880, label %1009

880:                                              ; preds = %872
  %881 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 28
  %882 = load ptr, ptr %881, align 8, !tbaa !30
  %883 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %882, i32 0, i32 5
  %884 = load ptr, ptr %883, align 8, !tbaa !38
  %885 = load i32, ptr %16, align 4, !tbaa !28
  %886 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 28
  %887 = load ptr, ptr %886, align 8, !tbaa !30
  %888 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %887, i32 0, i32 2
  %889 = load i32, ptr %888, align 8, !tbaa !39
  %890 = ashr i32 %885, %889
  %891 = sext i32 %890 to i64
  %892 = getelementptr inbounds ptr, ptr %884, i64 %891
  %893 = load ptr, ptr %892, align 8, !tbaa !5
  %894 = load i32, ptr %16, align 4, !tbaa !28
  %895 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 28
  %896 = load ptr, ptr %895, align 8, !tbaa !30
  %897 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %896, i32 0, i32 3
  %898 = load i32, ptr %897, align 4, !tbaa !40
  %899 = and i32 %894, %898
  %900 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 28
  %901 = load ptr, ptr %900, align 8, !tbaa !30
  %902 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %901, i32 0, i32 0
  %903 = load i32, ptr %902, align 8, !tbaa !41
  %904 = mul nsw i32 %899, %903
  %905 = sext i32 %904 to i64
  %906 = getelementptr inbounds i8, ptr %893, i64 %905
  store ptr %906, ptr %11, align 8, !tbaa !5
  %907 = load i32, ptr %16, align 4, !tbaa !28
  %908 = icmp eq i32 %907, 0
  br i1 %908, label %909, label %929

909:                                              ; preds = %880
  %910 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %911 = load ptr, ptr %910, align 8, !tbaa !9
  %912 = getelementptr inbounds %class.tetgenbehavior, ptr %911, i32 0, i32 37
  %913 = load i32, ptr %912, align 4, !tbaa !44
  %914 = icmp ne i32 %913, 0
  br i1 %914, label %915, label %928

915:                                              ; preds = %909
  %916 = load ptr, ptr %11, align 8, !tbaa !5
  %917 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %916)
  %918 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %917)
  %919 = load ptr, ptr %11, align 8, !tbaa !5
  %920 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %919)
  %921 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %920)
  %922 = load ptr, ptr %11, align 8, !tbaa !5
  %923 = call noundef ptr @_ZN10tetgenmesh5sapexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %922)
  %924 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %923)
  %925 = load ptr, ptr %11, align 8, !tbaa !5
  %926 = call noundef i32 @_ZN10tetgenmesh9shellmarkERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %925)
  %927 = call i32 (ptr, ...) @printf(ptr noundef @.str.452, i32 noundef %918, i32 noundef %921, i32 noundef %924, i32 noundef %926)
  br label %928

928:                                              ; preds = %915, %909
  br label %929

929:                                              ; preds = %928, %880
  store i32 0, ptr %17, align 4, !tbaa !28
  br label %930

930:                                              ; preds = %997, %929
  %931 = load i32, ptr %17, align 4, !tbaa !28
  %932 = icmp slt i32 %931, 3
  br i1 %932, label %933, label %1000

933:                                              ; preds = %930
  %934 = load ptr, ptr %11, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %934, ptr noundef nonnull align 8 dereferenceable(12) %30)
  %935 = load ptr, ptr %11, align 8, !tbaa !5
  call void @_ZN10tetgenmesh7sspivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %935, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %936 = getelementptr inbounds %"class.tetgenmesh::face", ptr %30, i32 0, i32 0
  %937 = load ptr, ptr %936, align 8, !tbaa !56
  %938 = icmp ne ptr %937, null
  br i1 %938, label %939, label %966

939:                                              ; preds = %933
  %940 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %31, ptr noundef nonnull align 8 dereferenceable(12) %30)
  br label %941

941:                                              ; preds = %950, %939
  br label %942

942:                                              ; preds = %941
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %31, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %943 = getelementptr inbounds %"class.tetgenmesh::face", ptr %10, i32 0, i32 0
  %944 = load ptr, ptr %943, align 8, !tbaa !56
  %945 = load ptr, ptr %11, align 8, !tbaa !5
  %946 = getelementptr inbounds %"class.tetgenmesh::face", ptr %945, i32 0, i32 0
  %947 = load ptr, ptr %946, align 8, !tbaa !56
  %948 = icmp eq ptr %944, %947
  br i1 %948, label %949, label %950

949:                                              ; preds = %942
  br label %952

950:                                              ; preds = %942
  %951 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %31, ptr noundef nonnull align 8 dereferenceable(12) %10)
  br label %941, !llvm.loop !66

952:                                              ; preds = %949
  %953 = getelementptr inbounds %"class.tetgenmesh::face", ptr %31, i32 0, i32 0
  %954 = load ptr, ptr %953, align 8, !tbaa !56
  %955 = getelementptr inbounds %"class.tetgenmesh::face", ptr %30, i32 0, i32 0
  %956 = load ptr, ptr %955, align 8, !tbaa !56
  %957 = icmp ne ptr %954, %956
  br i1 %957, label %958, label %959

958:                                              ; preds = %952
  call void @_ZN10tetgenmesh6sbond1ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %31, ptr noundef nonnull align 8 dereferenceable(12) %30)
  br label %960

959:                                              ; preds = %952
  call void @_ZN10tetgenmesh9sdissolveERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %30)
  br label %960

960:                                              ; preds = %959, %958
  %961 = getelementptr inbounds %"class.tetgenmesh::face", ptr %12, i32 0, i32 0
  %962 = load ptr, ptr %961, align 8, !tbaa !56
  %963 = icmp ne ptr %962, null
  br i1 %963, label %964, label %965

964:                                              ; preds = %960
  call void @_ZN10tetgenmesh6ssbondERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %30, ptr noundef nonnull align 8 dereferenceable(12) %12)
  br label %965

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

966:                                              ; preds = %933
  %967 = getelementptr inbounds %"class.tetgenmesh::face", ptr %12, i32 0, i32 0
  %968 = load ptr, ptr %967, align 8, !tbaa !56
  %969 = icmp ne ptr %968, null
  br i1 %969, label %970, label %994

970:                                              ; preds = %966
  %971 = load i64, ptr %29, align 8, !tbaa !54
  %972 = icmp eq i64 %971, 0
  br i1 %972, label %973, label %987

973:                                              ; preds = %970
  %974 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %975 = load ptr, ptr %974, align 8, !tbaa !9
  %976 = getelementptr inbounds %class.tetgenbehavior, ptr %975, i32 0, i32 37
  %977 = load i32, ptr %976, align 4, !tbaa !44
  %978 = icmp ne i32 %977, 0
  br i1 %978, label %979, label %986

979:                                              ; preds = %973
  %980 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %981 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %980)
  %982 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %983 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %982)
  %984 = call noundef i32 @_ZN10tetgenmesh9shellmarkERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %985 = call i32 (ptr, ...) @printf(ptr noundef @.str.453, i32 noundef %981, i32 noundef %983, i32 noundef %984)
  br label %986

986:                                              ; preds = %979, %973
  br label %987

987:                                              ; preds = %986, %970
  %988 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 6
  %989 = load ptr, ptr %988, align 8, !tbaa !55
  %990 = getelementptr inbounds %"class.tetgenmesh::face", ptr %12, i32 0, i32 0
  %991 = load ptr, ptr %990, align 8, !tbaa !56
  call void @_ZN10tetgenmesh16shellfacedeallocEPNS_10memorypoolEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %989, ptr noundef %991)
  %992 = load i64, ptr %29, align 8, !tbaa !54
  %993 = add nsw i64 %992, 1
  store i64 %993, ptr %29, align 8, !tbaa !54
  br label %994

994:                                              ; preds = %987, %966
  br label %995

995:                                              ; preds = %994, %965
  %996 = load ptr, ptr %11, align 8, !tbaa !5
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %996)
  br label %997

997:                                              ; preds = %995
  %998 = load i32, ptr %17, align 4, !tbaa !28
  %999 = add nsw i32 %998, 1
  store i32 %999, ptr %17, align 4, !tbaa !28
  br label %930, !llvm.loop !67

1000:                                             ; preds = %930
  %1001 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 5
  %1002 = load ptr, ptr %1001, align 8, !tbaa !68
  %1003 = load ptr, ptr %11, align 8, !tbaa !5
  %1004 = getelementptr inbounds %"class.tetgenmesh::face", ptr %1003, i32 0, i32 0
  %1005 = load ptr, ptr %1004, align 8, !tbaa !56
  call void @_ZN10tetgenmesh16shellfacedeallocEPNS_10memorypoolEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %1002, ptr noundef %1005)
  br label %1006

1006:                                             ; preds = %1000
  %1007 = load i32, ptr %16, align 4, !tbaa !28
  %1008 = add nsw i32 %1007, 1
  store i32 %1008, ptr %16, align 4, !tbaa !28
  br label %872, !llvm.loop !69

1009:                                             ; preds = %872
  %1010 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %1011 = load ptr, ptr %1010, align 8, !tbaa !9
  %1012 = getelementptr inbounds %class.tetgenbehavior, ptr %1011, i32 0, i32 37
  %1013 = load i32, ptr %1012, align 4, !tbaa !44
  %1014 = icmp ne i32 %1013, 0
  br i1 %1014, label %1015, label %1021

1015:                                             ; preds = %1009
  %1016 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 28
  %1017 = load ptr, ptr %1016, align 8, !tbaa !30
  %1018 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1017, i32 0, i32 6
  %1019 = load i64, ptr %1018, align 8, !tbaa !36
  %1020 = call i32 (ptr, ...) @printf(ptr noundef @.str.454, i64 noundef %1019)
  br label %1021

1021:                                             ; preds = %1015, %1009
  %1022 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 28
  %1023 = load ptr, ptr %1022, align 8, !tbaa !30
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1023)
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #9
  br label %1024

1024:                                             ; preds = %1021, %865
  %1025 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 27
  %1026 = load ptr, ptr %1025, align 8, !tbaa !57
  %1027 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1026, i32 0, i32 6
  %1028 = load i64, ptr %1027, align 8, !tbaa !36
  %1029 = icmp sgt i64 %1028, 0
  br i1 %1029, label %1030, label %1112

1030:                                             ; preds = %1024
  store i32 0, ptr %16, align 4, !tbaa !28
  br label %1031

1031:                                             ; preds = %1106, %1030
  %1032 = load i32, ptr %16, align 4, !tbaa !28
  %1033 = sext i32 %1032 to i64
  %1034 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 27
  %1035 = load ptr, ptr %1034, align 8, !tbaa !57
  %1036 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1035, i32 0, i32 6
  %1037 = load i64, ptr %1036, align 8, !tbaa !36
  %1038 = icmp slt i64 %1033, %1037
  br i1 %1038, label %1039, label %1109

1039:                                             ; preds = %1031
  %1040 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 27
  %1041 = load ptr, ptr %1040, align 8, !tbaa !57
  %1042 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1041, i32 0, i32 5
  %1043 = load ptr, ptr %1042, align 8, !tbaa !38
  %1044 = load i32, ptr %16, align 4, !tbaa !28
  %1045 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 27
  %1046 = load ptr, ptr %1045, align 8, !tbaa !57
  %1047 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1046, i32 0, i32 2
  %1048 = load i32, ptr %1047, align 8, !tbaa !39
  %1049 = ashr i32 %1044, %1048
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds ptr, ptr %1043, i64 %1050
  %1052 = load ptr, ptr %1051, align 8, !tbaa !5
  %1053 = load i32, ptr %16, align 4, !tbaa !28
  %1054 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 27
  %1055 = load ptr, ptr %1054, align 8, !tbaa !57
  %1056 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1055, i32 0, i32 3
  %1057 = load i32, ptr %1056, align 4, !tbaa !40
  %1058 = and i32 %1053, %1057
  %1059 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 27
  %1060 = load ptr, ptr %1059, align 8, !tbaa !57
  %1061 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1060, i32 0, i32 0
  %1062 = load i32, ptr %1061, align 8, !tbaa !41
  %1063 = mul nsw i32 %1058, %1062
  %1064 = sext i32 %1063 to i64
  %1065 = getelementptr inbounds i8, ptr %1052, i64 %1064
  store ptr %1065, ptr %25, align 8, !tbaa !5
  %1066 = load ptr, ptr %25, align 8, !tbaa !5
  %1067 = getelementptr inbounds %"class.tetgenmesh::face", ptr %1066, i32 0, i32 0
  %1068 = load ptr, ptr %1067, align 8, !tbaa !56
  %1069 = icmp ne ptr %1068, null
  br i1 %1069, label %1070, label %1105

1070:                                             ; preds = %1039
  %1071 = load ptr, ptr %25, align 8, !tbaa !5
  %1072 = getelementptr inbounds %"class.tetgenmesh::face", ptr %1071, i32 0, i32 0
  %1073 = load ptr, ptr %1072, align 8, !tbaa !56
  %1074 = getelementptr inbounds ptr, ptr %1073, i64 3
  %1075 = load ptr, ptr %1074, align 8, !tbaa !5
  %1076 = icmp ne ptr %1075, null
  br i1 %1076, label %1077, label %1105

1077:                                             ; preds = %1070
  %1078 = load ptr, ptr %25, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9sstpivot1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %1078, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %1079 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br i1 %1079, label %1080, label %1104

1080:                                             ; preds = %1077
  %1081 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %1082 = load ptr, ptr %1081, align 8, !tbaa !9
  %1083 = getelementptr inbounds %class.tetgenbehavior, ptr %1082, i32 0, i32 37
  %1084 = load i32, ptr %1083, align 4, !tbaa !44
  %1085 = icmp ne i32 %1084, 0
  br i1 %1085, label %1086, label %1096

1086:                                             ; preds = %1080
  %1087 = load ptr, ptr %25, align 8, !tbaa !5
  %1088 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %1087)
  %1089 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %1088)
  %1090 = load ptr, ptr %25, align 8, !tbaa !5
  %1091 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %1090)
  %1092 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %1091)
  %1093 = load ptr, ptr %25, align 8, !tbaa !5
  %1094 = call noundef i32 @_ZN10tetgenmesh9shellmarkERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %1093)
  %1095 = call i32 (ptr, ...) @printf(ptr noundef @.str.453, i32 noundef %1089, i32 noundef %1092, i32 noundef %1094)
  br label %1096

1096:                                             ; preds = %1086, %1080
  %1097 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 6
  %1098 = load ptr, ptr %1097, align 8, !tbaa !55
  %1099 = load ptr, ptr %25, align 8, !tbaa !5
  %1100 = getelementptr inbounds %"class.tetgenmesh::face", ptr %1099, i32 0, i32 0
  %1101 = load ptr, ptr %1100, align 8, !tbaa !56
  call void @_ZN10tetgenmesh16shellfacedeallocEPNS_10memorypoolEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %1098, ptr noundef %1101)
  %1102 = load i64, ptr %29, align 8, !tbaa !54
  %1103 = add nsw i64 %1102, 1
  store i64 %1103, ptr %29, align 8, !tbaa !54
  br label %1104

1104:                                             ; preds = %1096, %1077
  br label %1105

1105:                                             ; preds = %1104, %1070, %1039
  br label %1106

1106:                                             ; preds = %1105
  %1107 = load i32, ptr %16, align 4, !tbaa !28
  %1108 = add nsw i32 %1107, 1
  store i32 %1108, ptr %16, align 4, !tbaa !28
  br label %1031, !llvm.loop !70

1109:                                             ; preds = %1031
  %1110 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 27
  %1111 = load ptr, ptr %1110, align 8, !tbaa !57
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1111)
  br label %1112

1112:                                             ; preds = %1109, %1024
  %1113 = load i64, ptr %29, align 8, !tbaa !54
  %1114 = icmp sgt i64 %1113, 0
  br i1 %1114, label %1115, label %1125

1115:                                             ; preds = %1112
  %1116 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %1117 = load ptr, ptr %1116, align 8, !tbaa !9
  %1118 = getelementptr inbounds %class.tetgenbehavior, ptr %1117, i32 0, i32 37
  %1119 = load i32, ptr %1118, align 4, !tbaa !44
  %1120 = icmp ne i32 %1119, 0
  br i1 %1120, label %1121, label %1124

1121:                                             ; preds = %1115
  %1122 = load i64, ptr %29, align 8, !tbaa !54
  %1123 = call i32 (ptr, ...) @printf(ptr noundef @.str.455, i64 noundef %1122)
  br label %1124

1124:                                             ; preds = %1121, %1115
  br label %1125

1125:                                             ; preds = %1124, %1112
  %1126 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 21
  %1127 = load ptr, ptr %1126, align 8, !tbaa !47
  %1128 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1127, i32 0, i32 6
  %1129 = load i64, ptr %1128, align 8, !tbaa !36
  %1130 = icmp sgt i64 %1129, 0
  br i1 %1130, label %1131, label %1277

1131:                                             ; preds = %1125
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #9
  %1132 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 81
  %1133 = load i64, ptr %1132, align 8, !tbaa !71
  store i64 %1133, ptr %32, align 8, !tbaa !54
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #9
  store i64 0, ptr %33, align 8, !tbaa !54
  store i32 0, ptr %16, align 4, !tbaa !28
  br label %1134

1134:                                             ; preds = %1231, %1131
  %1135 = load i32, ptr %16, align 4, !tbaa !28
  %1136 = sext i32 %1135 to i64
  %1137 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 21
  %1138 = load ptr, ptr %1137, align 8, !tbaa !47
  %1139 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1138, i32 0, i32 6
  %1140 = load i64, ptr %1139, align 8, !tbaa !36
  %1141 = icmp slt i64 %1136, %1140
  br i1 %1141, label %1142, label %1234

1142:                                             ; preds = %1134
  %1143 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 21
  %1144 = load ptr, ptr %1143, align 8, !tbaa !47
  %1145 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1144, i32 0, i32 5
  %1146 = load ptr, ptr %1145, align 8, !tbaa !38
  %1147 = load i32, ptr %16, align 4, !tbaa !28
  %1148 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 21
  %1149 = load ptr, ptr %1148, align 8, !tbaa !47
  %1150 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1149, i32 0, i32 2
  %1151 = load i32, ptr %1150, align 8, !tbaa !39
  %1152 = ashr i32 %1147, %1151
  %1153 = sext i32 %1152 to i64
  %1154 = getelementptr inbounds ptr, ptr %1146, i64 %1153
  %1155 = load ptr, ptr %1154, align 8, !tbaa !5
  %1156 = load i32, ptr %16, align 4, !tbaa !28
  %1157 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 21
  %1158 = load ptr, ptr %1157, align 8, !tbaa !47
  %1159 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1158, i32 0, i32 3
  %1160 = load i32, ptr %1159, align 4, !tbaa !40
  %1161 = and i32 %1156, %1160
  %1162 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 21
  %1163 = load ptr, ptr %1162, align 8, !tbaa !47
  %1164 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1163, i32 0, i32 0
  %1165 = load i32, ptr %1164, align 8, !tbaa !41
  %1166 = mul nsw i32 %1161, %1165
  %1167 = sext i32 %1166 to i64
  %1168 = getelementptr inbounds i8, ptr %1155, i64 %1167
  store ptr %1168, ptr %14, align 8, !tbaa !5
  %1169 = load ptr, ptr %14, align 8, !tbaa !5
  %1170 = load ptr, ptr %1169, align 8, !tbaa !5
  %1171 = call noundef ptr @_ZN10tetgenmesh9point2tetEPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %1170)
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %1171, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %1172 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br i1 %1172, label %1173, label %1230

1173:                                             ; preds = %1142
  %1174 = load ptr, ptr %14, align 8, !tbaa !5
  %1175 = load ptr, ptr %1174, align 8, !tbaa !5
  %1176 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %1175)
  %1177 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 0
  %1178 = load ptr, ptr %1177, align 8, !tbaa !25
  %1179 = getelementptr inbounds %class.tetgenio, ptr %1178, i32 0, i32 9
  %1180 = load i32, ptr %1179, align 8, !tbaa !50
  %1181 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 0
  %1182 = load ptr, ptr %1181, align 8, !tbaa !25
  %1183 = getelementptr inbounds %class.tetgenio, ptr %1182, i32 0, i32 0
  %1184 = load i32, ptr %1183, align 8, !tbaa !51
  %1185 = icmp ne i32 %1184, 0
  %1186 = zext i1 %1185 to i64
  %1187 = select i1 %1185, i32 0, i32 1
  %1188 = sub nsw i32 %1180, %1187
  %1189 = icmp sgt i32 %1176, %1188
  br i1 %1189, label %1190, label %1224

1190:                                             ; preds = %1173
  %1191 = load ptr, ptr %14, align 8, !tbaa !5
  %1192 = load ptr, ptr %1191, align 8, !tbaa !5
  %1193 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %1192)
  %1194 = icmp eq i32 %1193, 6
  br i1 %1194, label %1195, label %1199

1195:                                             ; preds = %1190
  %1196 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 83
  %1197 = load i64, ptr %1196, align 8, !tbaa !72
  %1198 = add nsw i64 %1197, -1
  store i64 %1198, ptr %1196, align 8, !tbaa !72
  br label %1213

1199:                                             ; preds = %1190
  %1200 = load ptr, ptr %14, align 8, !tbaa !5
  %1201 = load ptr, ptr %1200, align 8, !tbaa !5
  %1202 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %1201)
  %1203 = icmp eq i32 %1202, 7
  br i1 %1203, label %1204, label %1208

1204:                                             ; preds = %1199
  %1205 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 84
  %1206 = load i64, ptr %1205, align 8, !tbaa !73
  %1207 = add nsw i64 %1206, -1
  store i64 %1207, ptr %1205, align 8, !tbaa !73
  br label %1212

1208:                                             ; preds = %1199
  %1209 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 85
  %1210 = load i64, ptr %1209, align 8, !tbaa !74
  %1211 = add nsw i64 %1210, -1
  store i64 %1211, ptr %1209, align 8, !tbaa !74
  br label %1212

1212:                                             ; preds = %1208, %1204
  br label %1213

1213:                                             ; preds = %1212, %1195
  %1214 = load i64, ptr %33, align 8, !tbaa !54
  %1215 = add nsw i64 %1214, 1
  store i64 %1215, ptr %33, align 8, !tbaa !54
  %1216 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 79
  %1217 = load i64, ptr %1216, align 8, !tbaa !75
  %1218 = icmp sgt i64 %1217, 0
  br i1 %1218, label %1219, label %1223

1219:                                             ; preds = %1213
  %1220 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 79
  %1221 = load i64, ptr %1220, align 8, !tbaa !75
  %1222 = add nsw i64 %1221, 1
  store i64 %1222, ptr %1220, align 8, !tbaa !75
  br label %1223

1223:                                             ; preds = %1219, %1213
  br label %1224

1224:                                             ; preds = %1223, %1173
  %1225 = load ptr, ptr %14, align 8, !tbaa !5
  %1226 = load ptr, ptr %1225, align 8, !tbaa !5
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %1226, i32 noundef 0)
  %1227 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 81
  %1228 = load i64, ptr %1227, align 8, !tbaa !71
  %1229 = add nsw i64 %1228, 1
  store i64 %1229, ptr %1227, align 8, !tbaa !71
  br label %1230

1230:                                             ; preds = %1224, %1142
  br label %1231

1231:                                             ; preds = %1230
  %1232 = load i32, ptr %16, align 4, !tbaa !28
  %1233 = add nsw i32 %1232, 1
  store i32 %1233, ptr %16, align 4, !tbaa !28
  br label %1134, !llvm.loop !76

1234:                                             ; preds = %1134
  %1235 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %1236 = load ptr, ptr %1235, align 8, !tbaa !9
  %1237 = getelementptr inbounds %class.tetgenbehavior, ptr %1236, i32 0, i32 37
  %1238 = load i32, ptr %1237, align 4, !tbaa !44
  %1239 = icmp ne i32 %1238, 0
  br i1 %1239, label %1240, label %1274

1240:                                             ; preds = %1234
  %1241 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 81
  %1242 = load i64, ptr %1241, align 8, !tbaa !71
  %1243 = load i64, ptr %32, align 8, !tbaa !54
  %1244 = icmp sgt i64 %1242, %1243
  br i1 %1244, label %1245, label %1273

1245:                                             ; preds = %1240
  %1246 = load i64, ptr %33, align 8, !tbaa !54
  %1247 = icmp sgt i64 %1246, 0
  br i1 %1247, label %1248, label %1266

1248:                                             ; preds = %1245
  %1249 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 81
  %1250 = load i64, ptr %1249, align 8, !tbaa !71
  %1251 = load i64, ptr %32, align 8, !tbaa !54
  %1252 = load i64, ptr %33, align 8, !tbaa !54
  %1253 = add nsw i64 %1251, %1252
  %1254 = icmp sgt i64 %1250, %1253
  br i1 %1254, label %1255, label %1263

1255:                                             ; preds = %1248
  %1256 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 81
  %1257 = load i64, ptr %1256, align 8, !tbaa !71
  %1258 = load i64, ptr %32, align 8, !tbaa !54
  %1259 = sub nsw i64 %1257, %1258
  %1260 = load i64, ptr %33, align 8, !tbaa !54
  %1261 = sub nsw i64 %1259, %1260
  %1262 = call i32 (ptr, ...) @printf(ptr noundef @.str.456, i64 noundef %1261)
  br label %1263

1263:                                             ; preds = %1255, %1248
  %1264 = load i64, ptr %33, align 8, !tbaa !54
  %1265 = call i32 (ptr, ...) @printf(ptr noundef @.str.457, i64 noundef %1264)
  br label %1272

1266:                                             ; preds = %1245
  %1267 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 81
  %1268 = load i64, ptr %1267, align 8, !tbaa !71
  %1269 = load i64, ptr %32, align 8, !tbaa !54
  %1270 = sub nsw i64 %1268, %1269
  %1271 = call i32 (ptr, ...) @printf(ptr noundef @.str.456, i64 noundef %1270)
  br label %1272

1272:                                             ; preds = %1266, %1263
  br label %1273

1273:                                             ; preds = %1272, %1240
  br label %1274

1274:                                             ; preds = %1273, %1234
  %1275 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 21
  %1276 = load ptr, ptr %1275, align 8, !tbaa !47
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1276)
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  br label %1277

1277:                                             ; preds = %1274, %1125
  %1278 = load ptr, ptr %21, align 8, !tbaa !5
  %1279 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1278, i32 0, i32 6
  %1280 = load i64, ptr %1279, align 8, !tbaa !36
  %1281 = load ptr, ptr %4, align 8, !tbaa !5
  %1282 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1281, i32 0, i32 6
  %1283 = load i64, ptr %1282, align 8, !tbaa !36
  %1284 = sub nsw i64 %1280, %1283
  %1285 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 76
  %1286 = load i64, ptr %1285, align 8, !tbaa !77
  %1287 = add nsw i64 %1286, %1284
  store i64 %1287, ptr %1285, align 8, !tbaa !77
  store i32 0, ptr %16, align 4, !tbaa !28
  br label %1288

1288:                                             ; preds = %1321, %1277
  %1289 = load i32, ptr %16, align 4, !tbaa !28
  %1290 = sext i32 %1289 to i64
  %1291 = load ptr, ptr %3, align 8, !tbaa !5
  %1292 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1291, i32 0, i32 6
  %1293 = load i64, ptr %1292, align 8, !tbaa !36
  %1294 = icmp slt i64 %1290, %1293
  br i1 %1294, label %1295, label %1324

1295:                                             ; preds = %1288
  %1296 = load ptr, ptr %3, align 8, !tbaa !5
  %1297 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1296, i32 0, i32 5
  %1298 = load ptr, ptr %1297, align 8, !tbaa !38
  %1299 = load i32, ptr %16, align 4, !tbaa !28
  %1300 = load ptr, ptr %3, align 8, !tbaa !5
  %1301 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1300, i32 0, i32 2
  %1302 = load i32, ptr %1301, align 8, !tbaa !39
  %1303 = ashr i32 %1299, %1302
  %1304 = sext i32 %1303 to i64
  %1305 = getelementptr inbounds ptr, ptr %1298, i64 %1304
  %1306 = load ptr, ptr %1305, align 8, !tbaa !5
  %1307 = load i32, ptr %16, align 4, !tbaa !28
  %1308 = load ptr, ptr %3, align 8, !tbaa !5
  %1309 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1308, i32 0, i32 3
  %1310 = load i32, ptr %1309, align 4, !tbaa !40
  %1311 = and i32 %1307, %1310
  %1312 = load ptr, ptr %3, align 8, !tbaa !5
  %1313 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1312, i32 0, i32 0
  %1314 = load i32, ptr %1313, align 8, !tbaa !41
  %1315 = mul nsw i32 %1311, %1314
  %1316 = sext i32 %1315 to i64
  %1317 = getelementptr inbounds i8, ptr %1306, i64 %1316
  store ptr %1317, ptr %7, align 8, !tbaa !5
  %1318 = load ptr, ptr %7, align 8, !tbaa !5
  %1319 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1318, i32 0, i32 0
  %1320 = load ptr, ptr %1319, align 8, !tbaa !22
  call void @_ZN10tetgenmesh18tetrahedrondeallocEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %1320)
  br label %1321

1321:                                             ; preds = %1295
  %1322 = load i32, ptr %16, align 4, !tbaa !28
  %1323 = add nsw i32 %1322, 1
  store i32 %1323, ptr %16, align 4, !tbaa !28
  br label %1288, !llvm.loop !78

1324:                                             ; preds = %1288
  %1325 = load ptr, ptr %3, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1325)
  store i32 0, ptr %16, align 4, !tbaa !28
  br label %1326

1326:                                             ; preds = %1359, %1324
  %1327 = load i32, ptr %16, align 4, !tbaa !28
  %1328 = sext i32 %1327 to i64
  %1329 = load ptr, ptr %4, align 8, !tbaa !5
  %1330 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1329, i32 0, i32 6
  %1331 = load i64, ptr %1330, align 8, !tbaa !36
  %1332 = icmp slt i64 %1328, %1331
  br i1 %1332, label %1333, label %1362

1333:                                             ; preds = %1326
  %1334 = load ptr, ptr %4, align 8, !tbaa !5
  %1335 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1334, i32 0, i32 5
  %1336 = load ptr, ptr %1335, align 8, !tbaa !38
  %1337 = load i32, ptr %16, align 4, !tbaa !28
  %1338 = load ptr, ptr %4, align 8, !tbaa !5
  %1339 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1338, i32 0, i32 2
  %1340 = load i32, ptr %1339, align 8, !tbaa !39
  %1341 = ashr i32 %1337, %1340
  %1342 = sext i32 %1341 to i64
  %1343 = getelementptr inbounds ptr, ptr %1336, i64 %1342
  %1344 = load ptr, ptr %1343, align 8, !tbaa !5
  %1345 = load i32, ptr %16, align 4, !tbaa !28
  %1346 = load ptr, ptr %4, align 8, !tbaa !5
  %1347 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1346, i32 0, i32 3
  %1348 = load i32, ptr %1347, align 4, !tbaa !40
  %1349 = and i32 %1345, %1348
  %1350 = load ptr, ptr %4, align 8, !tbaa !5
  %1351 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1350, i32 0, i32 0
  %1352 = load i32, ptr %1351, align 8, !tbaa !41
  %1353 = mul nsw i32 %1349, %1352
  %1354 = sext i32 %1353 to i64
  %1355 = getelementptr inbounds i8, ptr %1344, i64 %1354
  store ptr %1355, ptr %7, align 8, !tbaa !5
  %1356 = load ptr, ptr %7, align 8, !tbaa !5
  %1357 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1356, i32 0, i32 0
  %1358 = load ptr, ptr %1357, align 8, !tbaa !22
  call void @_ZN10tetgenmesh18tetrahedrondeallocEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %1358)
  br label %1359

1359:                                             ; preds = %1333
  %1360 = load i32, ptr %16, align 4, !tbaa !28
  %1361 = add nsw i32 %1360, 1
  store i32 %1361, ptr %16, align 4, !tbaa !28
  br label %1326, !llvm.loop !79

1362:                                             ; preds = %1326
  %1363 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1363)
  %1364 = load ptr, ptr %21, align 8, !tbaa !5
  %1365 = icmp eq ptr %1364, null
  br i1 %1365, label %1367, label %1366

1366:                                             ; preds = %1362
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %1364) #9
  call void @_ZdlPvm(ptr noundef %1364, i64 noundef 48) #11
  br label %1367

1367:                                             ; preds = %1366, %1362
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  br label %1368

1368:                                             ; preds = %1367, %580, %574
  %1369 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %1370 = load ptr, ptr %1369, align 8, !tbaa !9
  %1371 = getelementptr inbounds %class.tetgenbehavior, ptr %1370, i32 0, i32 17
  %1372 = load i32, ptr %1371, align 4, !tbaa !19
  %1373 = icmp ne i32 %1372, 0
  br i1 %1373, label %1374, label %1516

1374:                                             ; preds = %1368
  %1375 = load ptr, ptr %3, align 8, !tbaa !5
  %1376 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1375, i32 0, i32 6
  %1377 = load i64, ptr %1376, align 8, !tbaa !36
  %1378 = icmp sgt i64 %1377, 0
  br i1 %1378, label %1379, label %1516

1379:                                             ; preds = %1374
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #9
  %1380 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 40
  %1381 = load i32, ptr %1380, align 4, !tbaa !80
  %1382 = sub nsw i32 %1381, 1
  store i32 %1382, ptr %34, align 4, !tbaa !28
  store i32 0, ptr %16, align 4, !tbaa !28
  br label %1383

1383:                                             ; preds = %1417, %1379
  %1384 = load i32, ptr %16, align 4, !tbaa !28
  %1385 = sext i32 %1384 to i64
  %1386 = load ptr, ptr %3, align 8, !tbaa !5
  %1387 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1386, i32 0, i32 6
  %1388 = load i64, ptr %1387, align 8, !tbaa !36
  %1389 = icmp slt i64 %1385, %1388
  br i1 %1389, label %1390, label %1420

1390:                                             ; preds = %1383
  %1391 = load ptr, ptr %3, align 8, !tbaa !5
  %1392 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1391, i32 0, i32 5
  %1393 = load ptr, ptr %1392, align 8, !tbaa !38
  %1394 = load i32, ptr %16, align 4, !tbaa !28
  %1395 = load ptr, ptr %3, align 8, !tbaa !5
  %1396 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1395, i32 0, i32 2
  %1397 = load i32, ptr %1396, align 8, !tbaa !39
  %1398 = ashr i32 %1394, %1397
  %1399 = sext i32 %1398 to i64
  %1400 = getelementptr inbounds ptr, ptr %1393, i64 %1399
  %1401 = load ptr, ptr %1400, align 8, !tbaa !5
  %1402 = load i32, ptr %16, align 4, !tbaa !28
  %1403 = load ptr, ptr %3, align 8, !tbaa !5
  %1404 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1403, i32 0, i32 3
  %1405 = load i32, ptr %1404, align 4, !tbaa !40
  %1406 = and i32 %1402, %1405
  %1407 = load ptr, ptr %3, align 8, !tbaa !5
  %1408 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1407, i32 0, i32 0
  %1409 = load i32, ptr %1408, align 8, !tbaa !41
  %1410 = mul nsw i32 %1406, %1409
  %1411 = sext i32 %1410 to i64
  %1412 = getelementptr inbounds i8, ptr %1401, i64 %1411
  store ptr %1412, ptr %7, align 8, !tbaa !5
  %1413 = load ptr, ptr %7, align 8, !tbaa !5
  %1414 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1413, i32 0, i32 0
  %1415 = load ptr, ptr %1414, align 8, !tbaa !22
  %1416 = load i32, ptr %34, align 4, !tbaa !28
  call void @_ZN10tetgenmesh16setelemattributeEPPPdid(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %1415, i32 noundef %1416, double noundef -1.000000e+00)
  br label %1417

1417:                                             ; preds = %1390
  %1418 = load i32, ptr %16, align 4, !tbaa !28
  %1419 = add nsw i32 %1418, 1
  store i32 %1419, ptr %16, align 4, !tbaa !28
  br label %1383, !llvm.loop !81

1420:                                             ; preds = %1383
  %1421 = load ptr, ptr %3, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1421)
  store i32 0, ptr %16, align 4, !tbaa !28
  br label %1422

1422:                                             ; preds = %1453, %1420
  %1423 = load i32, ptr %16, align 4, !tbaa !28
  %1424 = sext i32 %1423 to i64
  %1425 = load ptr, ptr %4, align 8, !tbaa !5
  %1426 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1425, i32 0, i32 6
  %1427 = load i64, ptr %1426, align 8, !tbaa !36
  %1428 = icmp slt i64 %1424, %1427
  br i1 %1428, label %1429, label %1456

1429:                                             ; preds = %1422
  %1430 = load ptr, ptr %4, align 8, !tbaa !5
  %1431 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1430, i32 0, i32 5
  %1432 = load ptr, ptr %1431, align 8, !tbaa !38
  %1433 = load i32, ptr %16, align 4, !tbaa !28
  %1434 = load ptr, ptr %4, align 8, !tbaa !5
  %1435 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1434, i32 0, i32 2
  %1436 = load i32, ptr %1435, align 8, !tbaa !39
  %1437 = ashr i32 %1433, %1436
  %1438 = sext i32 %1437 to i64
  %1439 = getelementptr inbounds ptr, ptr %1432, i64 %1438
  %1440 = load ptr, ptr %1439, align 8, !tbaa !5
  %1441 = load i32, ptr %16, align 4, !tbaa !28
  %1442 = load ptr, ptr %4, align 8, !tbaa !5
  %1443 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1442, i32 0, i32 3
  %1444 = load i32, ptr %1443, align 4, !tbaa !40
  %1445 = and i32 %1441, %1444
  %1446 = load ptr, ptr %4, align 8, !tbaa !5
  %1447 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1446, i32 0, i32 0
  %1448 = load i32, ptr %1447, align 8, !tbaa !41
  %1449 = mul nsw i32 %1445, %1448
  %1450 = sext i32 %1449 to i64
  %1451 = getelementptr inbounds i8, ptr %1440, i64 %1450
  store ptr %1451, ptr %7, align 8, !tbaa !5
  %1452 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN10tetgenmesh8uninfectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %1452)
  br label %1453

1453:                                             ; preds = %1429
  %1454 = load i32, ptr %16, align 4, !tbaa !28
  %1455 = add nsw i32 %1454, 1
  store i32 %1455, ptr %16, align 4, !tbaa !28
  br label %1422, !llvm.loop !82

1456:                                             ; preds = %1422
  %1457 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1457)
  %1458 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 28
  %1459 = load ptr, ptr %1458, align 8, !tbaa !30
  %1460 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1459, i32 0, i32 6
  %1461 = load i64, ptr %1460, align 8, !tbaa !36
  %1462 = icmp sgt i64 %1461, 0
  br i1 %1462, label %1463, label %1506

1463:                                             ; preds = %1456
  store i32 0, ptr %16, align 4, !tbaa !28
  br label %1464

1464:                                             ; preds = %1500, %1463
  %1465 = load i32, ptr %16, align 4, !tbaa !28
  %1466 = sext i32 %1465 to i64
  %1467 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 28
  %1468 = load ptr, ptr %1467, align 8, !tbaa !30
  %1469 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1468, i32 0, i32 6
  %1470 = load i64, ptr %1469, align 8, !tbaa !36
  %1471 = icmp slt i64 %1466, %1470
  br i1 %1471, label %1472, label %1503

1472:                                             ; preds = %1464
  %1473 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 28
  %1474 = load ptr, ptr %1473, align 8, !tbaa !30
  %1475 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1474, i32 0, i32 5
  %1476 = load ptr, ptr %1475, align 8, !tbaa !38
  %1477 = load i32, ptr %16, align 4, !tbaa !28
  %1478 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 28
  %1479 = load ptr, ptr %1478, align 8, !tbaa !30
  %1480 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1479, i32 0, i32 2
  %1481 = load i32, ptr %1480, align 8, !tbaa !39
  %1482 = ashr i32 %1477, %1481
  %1483 = sext i32 %1482 to i64
  %1484 = getelementptr inbounds ptr, ptr %1476, i64 %1483
  %1485 = load ptr, ptr %1484, align 8, !tbaa !5
  %1486 = load i32, ptr %16, align 4, !tbaa !28
  %1487 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 28
  %1488 = load ptr, ptr %1487, align 8, !tbaa !30
  %1489 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1488, i32 0, i32 3
  %1490 = load i32, ptr %1489, align 4, !tbaa !40
  %1491 = and i32 %1486, %1490
  %1492 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 28
  %1493 = load ptr, ptr %1492, align 8, !tbaa !30
  %1494 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1493, i32 0, i32 0
  %1495 = load i32, ptr %1494, align 8, !tbaa !41
  %1496 = mul nsw i32 %1491, %1495
  %1497 = sext i32 %1496 to i64
  %1498 = getelementptr inbounds i8, ptr %1485, i64 %1497
  store ptr %1498, ptr %11, align 8, !tbaa !5
  %1499 = load ptr, ptr %11, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9suninfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %1499)
  br label %1500

1500:                                             ; preds = %1472
  %1501 = load i32, ptr %16, align 4, !tbaa !28
  %1502 = add nsw i32 %1501, 1
  store i32 %1502, ptr %16, align 4, !tbaa !28
  br label %1464, !llvm.loop !83

1503:                                             ; preds = %1464
  %1504 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 28
  %1505 = load ptr, ptr %1504, align 8, !tbaa !30
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1505)
  br label %1506

1506:                                             ; preds = %1503, %1456
  %1507 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 21
  %1508 = load ptr, ptr %1507, align 8, !tbaa !47
  %1509 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1508, i32 0, i32 6
  %1510 = load i64, ptr %1509, align 8, !tbaa !36
  %1511 = icmp sgt i64 %1510, 0
  br i1 %1511, label %1512, label %1515

1512:                                             ; preds = %1506
  %1513 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 21
  %1514 = load ptr, ptr %1513, align 8, !tbaa !47
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1514)
  br label %1515

1515:                                             ; preds = %1512, %1506
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #9
  br label %1516

1516:                                             ; preds = %1515, %1374, %1368
  %1517 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %1518 = load ptr, ptr %1517, align 8, !tbaa !9
  %1519 = getelementptr inbounds %class.tetgenbehavior, ptr %1518, i32 0, i32 13
  %1520 = load i32, ptr %1519, align 4, !tbaa !32
  %1521 = icmp ne i32 %1520, 0
  br i1 %1521, label %1522, label %1832

1522:                                             ; preds = %1516
  %1523 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %1524 = load ptr, ptr %1523, align 8, !tbaa !9
  %1525 = getelementptr inbounds %class.tetgenbehavior, ptr %1524, i32 0, i32 36
  %1526 = load i32, ptr %1525, align 8, !tbaa !16
  %1527 = icmp ne i32 %1526, 0
  br i1 %1527, label %1530, label %1528

1528:                                             ; preds = %1522
  %1529 = call i32 (ptr, ...) @printf(ptr noundef @.str.458)
  br label %1530

1530:                                             ; preds = %1528, %1522
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #9
  store i32 0, ptr %37, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #9
  %1531 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 40
  %1532 = load i32, ptr %1531, align 4, !tbaa !80
  %1533 = sub nsw i32 %1532, 1
  store i32 %1533, ptr %38, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #9
  store i32 0, ptr %39, align 4, !tbaa !28
  %1534 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 0
  %1535 = load ptr, ptr %1534, align 8, !tbaa !25
  %1536 = getelementptr inbounds %class.tetgenio, ptr %1535, i32 0, i32 27
  %1537 = load i32, ptr %1536, align 8, !tbaa !33
  %1538 = icmp sgt i32 %1537, 0
  br i1 %1538, label %1539, label %1696

1539:                                             ; preds = %1530
  store i32 0, ptr %16, align 4, !tbaa !28
  br label %1540

1540:                                             ; preds = %1692, %1539
  %1541 = load i32, ptr %16, align 4, !tbaa !28
  %1542 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 0
  %1543 = load ptr, ptr %1542, align 8, !tbaa !25
  %1544 = getelementptr inbounds %class.tetgenio, ptr %1543, i32 0, i32 27
  %1545 = load i32, ptr %1544, align 8, !tbaa !33
  %1546 = mul nsw i32 5, %1545
  %1547 = icmp slt i32 %1541, %1546
  br i1 %1547, label %1548, label %1695

1548:                                             ; preds = %1540
  %1549 = load ptr, ptr %9, align 8, !tbaa !5
  %1550 = load i32, ptr %16, align 4, !tbaa !28
  %1551 = sdiv i32 %1550, 5
  %1552 = sext i32 %1551 to i64
  %1553 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1549, i64 %1552
  %1554 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1553, i32 0, i32 0
  %1555 = load ptr, ptr %1554, align 8, !tbaa !22
  %1556 = icmp ne ptr %1555, null
  br i1 %1556, label %1557, label %1691

1557:                                             ; preds = %1548
  %1558 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 0
  %1559 = load ptr, ptr %1558, align 8, !tbaa !25
  %1560 = getelementptr inbounds %class.tetgenio, ptr %1559, i32 0, i32 26
  %1561 = load ptr, ptr %1560, align 8, !tbaa !34
  %1562 = load i32, ptr %16, align 4, !tbaa !28
  %1563 = add nsw i32 %1562, 3
  %1564 = sext i32 %1563 to i64
  %1565 = getelementptr inbounds double, ptr %1561, i64 %1564
  %1566 = load double, ptr %1565, align 8, !tbaa !84
  %1567 = fptosi double %1566 to i32
  store i32 %1567, ptr %36, align 4, !tbaa !28
  %1568 = load i32, ptr %36, align 4, !tbaa !28
  %1569 = load i32, ptr %37, align 4, !tbaa !28
  %1570 = icmp sgt i32 %1568, %1569
  br i1 %1570, label %1571, label %1573

1571:                                             ; preds = %1557
  %1572 = load i32, ptr %36, align 4, !tbaa !28
  store i32 %1572, ptr %37, align 4, !tbaa !28
  br label %1573

1573:                                             ; preds = %1571, %1557
  %1574 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 0
  %1575 = load ptr, ptr %1574, align 8, !tbaa !25
  %1576 = getelementptr inbounds %class.tetgenio, ptr %1575, i32 0, i32 26
  %1577 = load ptr, ptr %1576, align 8, !tbaa !34
  %1578 = load i32, ptr %16, align 4, !tbaa !28
  %1579 = add nsw i32 %1578, 4
  %1580 = sext i32 %1579 to i64
  %1581 = getelementptr inbounds double, ptr %1577, i64 %1580
  %1582 = load double, ptr %1581, align 8, !tbaa !84
  store double %1582, ptr %35, align 8, !tbaa !84
  %1583 = load ptr, ptr %3, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1583)
  %1584 = load ptr, ptr %9, align 8, !tbaa !5
  %1585 = load i32, ptr %16, align 4, !tbaa !28
  %1586 = sdiv i32 %1585, 5
  %1587 = sext i32 %1586 to i64
  %1588 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1584, i64 %1587
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %1588)
  %1589 = load ptr, ptr %3, align 8, !tbaa !5
  %1590 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %1589, ptr noundef %7)
  %1591 = load ptr, ptr %9, align 8, !tbaa !5
  %1592 = load i32, ptr %16, align 4, !tbaa !28
  %1593 = sdiv i32 %1592, 5
  %1594 = sext i32 %1593 to i64
  %1595 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1591, i64 %1594
  %1596 = load ptr, ptr %7, align 8, !tbaa !5
  %1597 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1596, ptr noundef nonnull align 8 dereferenceable(12) %1595)
  store i32 0, ptr %17, align 4, !tbaa !28
  br label %1598

1598:                                             ; preds = %1685, %1573
  %1599 = load i32, ptr %17, align 4, !tbaa !28
  %1600 = sext i32 %1599 to i64
  %1601 = load ptr, ptr %3, align 8, !tbaa !5
  %1602 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1601, i32 0, i32 6
  %1603 = load i64, ptr %1602, align 8, !tbaa !36
  %1604 = icmp slt i64 %1600, %1603
  br i1 %1604, label %1605, label %1688

1605:                                             ; preds = %1598
  %1606 = load ptr, ptr %3, align 8, !tbaa !5
  %1607 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1606, i32 0, i32 5
  %1608 = load ptr, ptr %1607, align 8, !tbaa !38
  %1609 = load i32, ptr %17, align 4, !tbaa !28
  %1610 = load ptr, ptr %3, align 8, !tbaa !5
  %1611 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1610, i32 0, i32 2
  %1612 = load i32, ptr %1611, align 8, !tbaa !39
  %1613 = ashr i32 %1609, %1612
  %1614 = sext i32 %1613 to i64
  %1615 = getelementptr inbounds ptr, ptr %1608, i64 %1614
  %1616 = load ptr, ptr %1615, align 8, !tbaa !5
  %1617 = load i32, ptr %17, align 4, !tbaa !28
  %1618 = load ptr, ptr %3, align 8, !tbaa !5
  %1619 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1618, i32 0, i32 3
  %1620 = load i32, ptr %1619, align 4, !tbaa !40
  %1621 = and i32 %1617, %1620
  %1622 = load ptr, ptr %3, align 8, !tbaa !5
  %1623 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1622, i32 0, i32 0
  %1624 = load i32, ptr %1623, align 8, !tbaa !41
  %1625 = mul nsw i32 %1621, %1624
  %1626 = sext i32 %1625 to i64
  %1627 = getelementptr inbounds i8, ptr %1616, i64 %1626
  store ptr %1627, ptr %7, align 8, !tbaa !5
  %1628 = load ptr, ptr %7, align 8, !tbaa !5
  %1629 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %1628)
  %1630 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %1631 = load ptr, ptr %1630, align 8, !tbaa !22
  %1632 = load i32, ptr %38, align 4, !tbaa !28
  %1633 = load i32, ptr %36, align 4, !tbaa !28
  %1634 = sitofp i32 %1633 to double
  call void @_ZN10tetgenmesh16setelemattributeEPPPdid(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %1631, i32 noundef %1632, double noundef %1634)
  %1635 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %1636 = load ptr, ptr %1635, align 8, !tbaa !9
  %1637 = getelementptr inbounds %class.tetgenbehavior, ptr %1636, i32 0, i32 11
  %1638 = load i32, ptr %1637, align 4, !tbaa !85
  %1639 = icmp ne i32 %1638, 0
  br i1 %1639, label %1640, label %1644

1640:                                             ; preds = %1605
  %1641 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %1642 = load ptr, ptr %1641, align 8, !tbaa !22
  %1643 = load double, ptr %35, align 8, !tbaa !84
  call void @_ZN10tetgenmesh14setvolumeboundEPPPdd(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %1642, double noundef %1643)
  br label %1644

1644:                                             ; preds = %1640, %1605
  store i32 0, ptr %18, align 4, !tbaa !28
  br label %1645

1645:                                             ; preds = %1681, %1644
  %1646 = load i32, ptr %18, align 4, !tbaa !28
  %1647 = icmp slt i32 %1646, 4
  br i1 %1647, label %1648, label %1684

1648:                                             ; preds = %1645
  %1649 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %1650 = load ptr, ptr %1649, align 8, !tbaa !22
  %1651 = load i32, ptr %18, align 4, !tbaa !28
  %1652 = sext i32 %1651 to i64
  %1653 = getelementptr inbounds ptr, ptr %1650, i64 %1652
  %1654 = load ptr, ptr %1653, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %1654, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %1655 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br i1 %1655, label %1680, label %1656

1656:                                             ; preds = %1648
  %1657 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %1658 = load ptr, ptr %1657, align 8, !tbaa !22
  %1659 = getelementptr inbounds ptr, ptr %1658, i64 9
  %1660 = load ptr, ptr %1659, align 8, !tbaa !5
  %1661 = icmp ne ptr %1660, null
  br i1 %1661, label %1662, label %1674

1662:                                             ; preds = %1656
  %1663 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %1664 = load ptr, ptr %1663, align 8, !tbaa !22
  %1665 = getelementptr inbounds ptr, ptr %1664, i64 9
  %1666 = load ptr, ptr %1665, align 8, !tbaa !5
  %1667 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 1
  %1668 = load i32, ptr %1667, align 8, !tbaa !21
  %1669 = and i32 %1668, 3
  %1670 = sext i32 %1669 to i64
  %1671 = getelementptr inbounds ptr, ptr %1666, i64 %1670
  %1672 = load ptr, ptr %1671, align 8, !tbaa !5
  %1673 = icmp ne ptr %1672, null
  br i1 %1673, label %1679, label %1674

1674:                                             ; preds = %1662, %1656
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %1675 = load ptr, ptr %3, align 8, !tbaa !5
  %1676 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %1675, ptr noundef %7)
  %1677 = load ptr, ptr %7, align 8, !tbaa !5
  %1678 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1677, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %1679

1679:                                             ; preds = %1674, %1662
  br label %1680

1680:                                             ; preds = %1679, %1648
  br label %1681

1681:                                             ; preds = %1680
  %1682 = load i32, ptr %18, align 4, !tbaa !28
  %1683 = add nsw i32 %1682, 1
  store i32 %1683, ptr %18, align 4, !tbaa !28
  br label %1645, !llvm.loop !86

1684:                                             ; preds = %1645
  br label %1685

1685:                                             ; preds = %1684
  %1686 = load i32, ptr %17, align 4, !tbaa !28
  %1687 = add nsw i32 %1686, 1
  store i32 %1687, ptr %17, align 4, !tbaa !28
  br label %1598, !llvm.loop !87

1688:                                             ; preds = %1598
  %1689 = load i32, ptr %39, align 4, !tbaa !28
  %1690 = add nsw i32 %1689, 1
  store i32 %1690, ptr %39, align 4, !tbaa !28
  br label %1691

1691:                                             ; preds = %1688, %1548
  br label %1692

1692:                                             ; preds = %1691
  %1693 = load i32, ptr %16, align 4, !tbaa !28
  %1694 = add nsw i32 %1693, 5
  store i32 %1694, ptr %16, align 4, !tbaa !28
  br label %1540, !llvm.loop !88

1695:                                             ; preds = %1540
  br label %1696

1696:                                             ; preds = %1695, %1530
  %1697 = load i32, ptr %37, align 4, !tbaa !28
  %1698 = add nsw i32 %1697, 1
  store i32 %1698, ptr %36, align 4, !tbaa !28
  %1699 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 4
  %1700 = load ptr, ptr %1699, align 8, !tbaa !20
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %1700)
  %1701 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %42)
  %1702 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  store ptr %1701, ptr %1702, align 8, !tbaa !22
  br label %1703

1703:                                             ; preds = %1800, %1696
  %1704 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %1705 = load ptr, ptr %1704, align 8, !tbaa !22
  %1706 = icmp ne ptr %1705, null
  br i1 %1706, label %1707, label %1803

1707:                                             ; preds = %1703
  %1708 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br i1 %1708, label %1800, label %1709

1709:                                             ; preds = %1707
  %1710 = load ptr, ptr %3, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1710)
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %1711 = load ptr, ptr %3, align 8, !tbaa !5
  %1712 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %1711, ptr noundef %7)
  %1713 = load ptr, ptr %7, align 8, !tbaa !5
  %1714 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1713, ptr noundef nonnull align 8 dereferenceable(12) %5)
  store i32 0, ptr %17, align 4, !tbaa !28
  br label %1715

1715:                                             ; preds = %1792, %1709
  %1716 = load i32, ptr %17, align 4, !tbaa !28
  %1717 = sext i32 %1716 to i64
  %1718 = load ptr, ptr %3, align 8, !tbaa !5
  %1719 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1718, i32 0, i32 6
  %1720 = load i64, ptr %1719, align 8, !tbaa !36
  %1721 = icmp slt i64 %1717, %1720
  br i1 %1721, label %1722, label %1795

1722:                                             ; preds = %1715
  %1723 = load ptr, ptr %3, align 8, !tbaa !5
  %1724 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1723, i32 0, i32 5
  %1725 = load ptr, ptr %1724, align 8, !tbaa !38
  %1726 = load i32, ptr %17, align 4, !tbaa !28
  %1727 = load ptr, ptr %3, align 8, !tbaa !5
  %1728 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1727, i32 0, i32 2
  %1729 = load i32, ptr %1728, align 8, !tbaa !39
  %1730 = ashr i32 %1726, %1729
  %1731 = sext i32 %1730 to i64
  %1732 = getelementptr inbounds ptr, ptr %1725, i64 %1731
  %1733 = load ptr, ptr %1732, align 8, !tbaa !5
  %1734 = load i32, ptr %17, align 4, !tbaa !28
  %1735 = load ptr, ptr %3, align 8, !tbaa !5
  %1736 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1735, i32 0, i32 3
  %1737 = load i32, ptr %1736, align 4, !tbaa !40
  %1738 = and i32 %1734, %1737
  %1739 = load ptr, ptr %3, align 8, !tbaa !5
  %1740 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1739, i32 0, i32 0
  %1741 = load i32, ptr %1740, align 8, !tbaa !41
  %1742 = mul nsw i32 %1738, %1741
  %1743 = sext i32 %1742 to i64
  %1744 = getelementptr inbounds i8, ptr %1733, i64 %1743
  store ptr %1744, ptr %7, align 8, !tbaa !5
  %1745 = load ptr, ptr %7, align 8, !tbaa !5
  %1746 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %1745)
  %1747 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %1748 = load ptr, ptr %1747, align 8, !tbaa !22
  %1749 = load i32, ptr %38, align 4, !tbaa !28
  %1750 = load i32, ptr %36, align 4, !tbaa !28
  %1751 = sitofp i32 %1750 to double
  call void @_ZN10tetgenmesh16setelemattributeEPPPdid(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %1748, i32 noundef %1749, double noundef %1751)
  store i32 0, ptr %18, align 4, !tbaa !28
  br label %1752

1752:                                             ; preds = %1788, %1722
  %1753 = load i32, ptr %18, align 4, !tbaa !28
  %1754 = icmp slt i32 %1753, 4
  br i1 %1754, label %1755, label %1791

1755:                                             ; preds = %1752
  %1756 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %1757 = load ptr, ptr %1756, align 8, !tbaa !22
  %1758 = load i32, ptr %18, align 4, !tbaa !28
  %1759 = sext i32 %1758 to i64
  %1760 = getelementptr inbounds ptr, ptr %1757, i64 %1759
  %1761 = load ptr, ptr %1760, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %1761, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %1762 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br i1 %1762, label %1787, label %1763

1763:                                             ; preds = %1755
  %1764 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %1765 = load ptr, ptr %1764, align 8, !tbaa !22
  %1766 = getelementptr inbounds ptr, ptr %1765, i64 9
  %1767 = load ptr, ptr %1766, align 8, !tbaa !5
  %1768 = icmp ne ptr %1767, null
  br i1 %1768, label %1769, label %1781

1769:                                             ; preds = %1763
  %1770 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %1771 = load ptr, ptr %1770, align 8, !tbaa !22
  %1772 = getelementptr inbounds ptr, ptr %1771, i64 9
  %1773 = load ptr, ptr %1772, align 8, !tbaa !5
  %1774 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 1
  %1775 = load i32, ptr %1774, align 8, !tbaa !21
  %1776 = and i32 %1775, 3
  %1777 = sext i32 %1776 to i64
  %1778 = getelementptr inbounds ptr, ptr %1773, i64 %1777
  %1779 = load ptr, ptr %1778, align 8, !tbaa !5
  %1780 = icmp ne ptr %1779, null
  br i1 %1780, label %1786, label %1781

1781:                                             ; preds = %1769, %1763
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %1782 = load ptr, ptr %3, align 8, !tbaa !5
  %1783 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %1782, ptr noundef %7)
  %1784 = load ptr, ptr %7, align 8, !tbaa !5
  %1785 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1784, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %1786

1786:                                             ; preds = %1781, %1769
  br label %1787

1787:                                             ; preds = %1786, %1755
  br label %1788

1788:                                             ; preds = %1787
  %1789 = load i32, ptr %18, align 4, !tbaa !28
  %1790 = add nsw i32 %1789, 1
  store i32 %1790, ptr %18, align 4, !tbaa !28
  br label %1752, !llvm.loop !89

1791:                                             ; preds = %1752
  br label %1792

1792:                                             ; preds = %1791
  %1793 = load i32, ptr %17, align 4, !tbaa !28
  %1794 = add nsw i32 %1793, 1
  store i32 %1794, ptr %17, align 4, !tbaa !28
  br label %1715, !llvm.loop !90

1795:                                             ; preds = %1715
  %1796 = load i32, ptr %36, align 4, !tbaa !28
  %1797 = add nsw i32 %1796, 1
  store i32 %1797, ptr %36, align 4, !tbaa !28
  %1798 = load i32, ptr %39, align 4, !tbaa !28
  %1799 = add nsw i32 %1798, 1
  store i32 %1799, ptr %39, align 4, !tbaa !28
  br label %1800

1800:                                             ; preds = %1795, %1707
  %1801 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %42)
  %1802 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  store ptr %1801, ptr %1802, align 8, !tbaa !22
  br label %1703, !llvm.loop !91

1803:                                             ; preds = %1703
  %1804 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 4
  %1805 = load ptr, ptr %1804, align 8, !tbaa !20
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %1805)
  %1806 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %42)
  %1807 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  store ptr %1806, ptr %1807, align 8, !tbaa !22
  br label %1808

1808:                                             ; preds = %1812, %1803
  %1809 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %1810 = load ptr, ptr %1809, align 8, !tbaa !22
  %1811 = icmp ne ptr %1810, null
  br i1 %1811, label %1812, label %1815

1812:                                             ; preds = %1808
  call void @_ZN10tetgenmesh8uninfectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %1813 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %42)
  %1814 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  store ptr %1813, ptr %1814, align 8, !tbaa !22
  br label %1808, !llvm.loop !92

1815:                                             ; preds = %1808
  %1816 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %1817 = load ptr, ptr %1816, align 8, !tbaa !9
  %1818 = getelementptr inbounds %class.tetgenbehavior, ptr %1817, i32 0, i32 37
  %1819 = load i32, ptr %1818, align 4, !tbaa !44
  %1820 = icmp ne i32 %1819, 0
  br i1 %1820, label %1821, label %1831

1821:                                             ; preds = %1815
  %1822 = load i32, ptr %39, align 4, !tbaa !28
  %1823 = icmp sgt i32 %1822, 1
  br i1 %1823, label %1824, label %1827

1824:                                             ; preds = %1821
  %1825 = load i32, ptr %39, align 4, !tbaa !28
  %1826 = call i32 (ptr, ...) @printf(ptr noundef @.str.459, i32 noundef %1825)
  br label %1830

1827:                                             ; preds = %1821
  %1828 = load i32, ptr %39, align 4, !tbaa !28
  %1829 = call i32 (ptr, ...) @printf(ptr noundef @.str.460, i32 noundef %1828)
  br label %1830

1830:                                             ; preds = %1827, %1824
  br label %1831

1831:                                             ; preds = %1830, %1815
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  br label %1832

1832:                                             ; preds = %1831, %1516
  %1833 = load ptr, ptr %9, align 8, !tbaa !5
  %1834 = icmp ne ptr %1833, null
  br i1 %1834, label %1835, label %1840

1835:                                             ; preds = %1832
  %1836 = load ptr, ptr %9, align 8, !tbaa !5
  %1837 = icmp eq ptr %1836, null
  br i1 %1837, label %1839, label %1838

1838:                                             ; preds = %1835
  call void @_ZdaPv(ptr noundef %1836) #11
  br label %1839

1839:                                             ; preds = %1838, %1835
  br label %1840

1840:                                             ; preds = %1839, %1832
  %1841 = load ptr, ptr %3, align 8, !tbaa !5
  %1842 = icmp eq ptr %1841, null
  br i1 %1842, label %1844, label %1843

1843:                                             ; preds = %1840
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %1841) #9
  call void @_ZdlPvm(ptr noundef %1841, i64 noundef 48) #11
  br label %1844

1844:                                             ; preds = %1843, %1840
  %1845 = load ptr, ptr %4, align 8, !tbaa !5
  %1846 = icmp eq ptr %1845, null
  br i1 %1846, label %1848, label %1847

1847:                                             ; preds = %1844
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %1845) #9
  call void @_ZdlPvm(ptr noundef %1845, i64 noundef 48) #11
  br label %1848

1848:                                             ; preds = %1847, %1844
  %1849 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %1850 = load ptr, ptr %1849, align 8, !tbaa !9
  %1851 = getelementptr inbounds %class.tetgenbehavior, ptr %1850, i32 0, i32 17
  %1852 = load i32, ptr %1851, align 4, !tbaa !19
  %1853 = icmp ne i32 %1852, 0
  br i1 %1853, label %1896, label %1854

1854:                                             ; preds = %1848
  %1855 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 55
  store i32 1, ptr %1855, align 8, !tbaa !93
  %1856 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 4
  %1857 = load ptr, ptr %1856, align 8, !tbaa !20
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %1857)
  %1858 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  store i32 11, ptr %1858, align 8, !tbaa !21
  %1859 = call noundef ptr @_ZN10tetgenmesh22alltetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %42)
  %1860 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  store ptr %1859, ptr %1860, align 8, !tbaa !22
  br label %1861

1861:                                             ; preds = %1875, %1854
  %1862 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %1863 = load ptr, ptr %1862, align 8, !tbaa !22
  %1864 = icmp ne ptr %1863, null
  br i1 %1864, label %1865, label %1878

1865:                                             ; preds = %1861
  %1866 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %1867 = load ptr, ptr %1866, align 8, !tbaa !22
  %1868 = getelementptr inbounds ptr, ptr %1867, i64 7
  %1869 = load ptr, ptr %1868, align 8, !tbaa !5
  %1870 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 35
  %1871 = load ptr, ptr %1870, align 8, !tbaa !59
  %1872 = icmp eq ptr %1869, %1871
  br i1 %1872, label %1873, label %1875

1873:                                             ; preds = %1865
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %1874 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 15
  call void @_ZN10tetgenmesh8flippushERPNS_7badfaceEPNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef nonnull align 8 dereferenceable(8) %1874, ptr noundef %6)
  br label %1875

1875:                                             ; preds = %1873, %1865
  %1876 = call noundef ptr @_ZN10tetgenmesh22alltetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %42)
  %1877 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  store ptr %1876, ptr %1877, align 8, !tbaa !22
  br label %1861, !llvm.loop !94

1878:                                             ; preds = %1861
  call void @llvm.lifetime.start.p0(i64 120, ptr %40) #9
  call void @_ZN10tetgenmesh15flipconstraintsC2Ev(ptr noundef nonnull align 8 dereferenceable(120) %40)
  %1879 = getelementptr inbounds %"class.tetgenmesh::flipconstraints", ptr %40, i32 0, i32 0
  store i32 2, ptr %1879, align 8, !tbaa !95
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #9
  %1880 = call noundef i64 @_ZN10tetgenmesh12lawsonflip3dEPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %42, ptr noundef %40)
  store i64 %1880, ptr %41, align 8, !tbaa !54
  %1881 = load i64, ptr %41, align 8, !tbaa !54
  %1882 = icmp sgt i64 %1881, 0
  br i1 %1882, label %1883, label %1893

1883:                                             ; preds = %1878
  %1884 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 2
  %1885 = load ptr, ptr %1884, align 8, !tbaa !9
  %1886 = getelementptr inbounds %class.tetgenbehavior, ptr %1885, i32 0, i32 37
  %1887 = load i32, ptr %1886, align 4, !tbaa !44
  %1888 = icmp ne i32 %1887, 0
  br i1 %1888, label %1889, label %1892

1889:                                             ; preds = %1883
  %1890 = load i64, ptr %41, align 8, !tbaa !54
  %1891 = call i32 (ptr, ...) @printf(ptr noundef @.str.461, i64 noundef %1890)
  br label %1892

1892:                                             ; preds = %1889, %1883
  br label %1893

1893:                                             ; preds = %1892, %1878
  %1894 = getelementptr inbounds %class.tetgenmesh, ptr %42, i32 0, i32 14
  %1895 = load ptr, ptr %1894, align 8, !tbaa !97
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1895)
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %40) #9
  br label %1896

1896:                                             ; preds = %1893, %1848
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #9
  ret void

1897:                                             ; preds = %723, %312, %112, %108
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #9
  br label %1898

1898:                                             ; preds = %1897
  %1899 = load ptr, ptr %19, align 8
  %1900 = load i32, ptr %20, align 4
  %1901 = insertvalue { ptr, i32 } poison, ptr %1899, 0
  %1902 = insertvalue { ptr, i32 } %1901, i32 %1900, 1
  resume { ptr, i32 } %1902
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN10tetgenmesh12lawsonflip3dEPNS_15flipconstraintsE(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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { 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 #3 = { "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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #8 = { 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 #9 = { nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { 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 16}
!10 = !{!"_ZTS10tetgenmesh", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !11, i64 288, !13, i64 304, !6, i64 320, !12, i64 328, !12, i64 332, !12, i64 336, !12, i64 340, !12, i64 344, !12, i64 348, !12, i64 352, !12, i64 356, !12, i64 360, !12, i64 364, !12, i64 368, !12, i64 372, !12, i64 376, !12, i64 380, !12, i64 384, !12, i64 388, !12, i64 392, !12, i64 396, !12, i64 400, !14, i64 408, !14, i64 416, !15, i64 424, !15, i64 432, !15, i64 440, !15, i64 448, !15, i64 456, !15, i64 464, !15, i64 472, !15, i64 480, !15, i64 488, !15, i64 496, !15, i64 504, !15, i64 512, !15, i64 520, !15, i64 528, !15, i64 536, !14, i64 544, !14, i64 552, !14, i64 560, !14, i64 568, !14, i64 576, !14, i64 584, !14, i64 592, !14, i64 600, !14, i64 608, !14, i64 616, !14, i64 624, !14, i64 632, !14, i64 640, !14, i64 648, !14, i64 656, !14, i64 664, !14, i64 672, !14, i64 680, !14, i64 688, !14, i64 696, !14, i64 704, !14, i64 712, !14, i64 720, !14, i64 728, !7, i64 736, !7, i64 1504}
!11 = !{!"_ZTSN10tetgenmesh7trifaceE", !6, i64 0, !12, i64 8}
!12 = !{!"int", !7, i64 0}
!13 = !{!"_ZTSN10tetgenmesh4faceE", !6, i64 0, !12, i64 8}
!14 = !{!"long", !7, i64 0}
!15 = !{!"double", !7, i64 0}
!16 = !{!17, !12, i64 144}
!17 = !{!"_ZTS14tetgenbehavior", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !12, i64 60, !12, i64 64, !12, i64 68, !12, i64 72, !12, i64 76, !12, i64 80, !12, i64 84, !12, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !12, i64 128, !12, i64 132, !12, i64 136, !12, i64 140, !12, i64 144, !12, i64 148, !12, i64 152, !12, i64 156, !12, i64 160, !12, i64 164, !12, i64 168, !12, i64 172, !12, i64 176, !12, i64 180, !12, i64 184, !12, i64 188, !12, i64 192, !12, i64 196, !12, i64 200, !12, i64 204, !12, i64 208, !12, i64 212, !12, i64 216, !12, i64 220, !12, i64 224, !12, i64 228, !12, i64 232, !12, i64 236, !15, i64 240, !15, i64 248, !15, i64 256, !15, i64 264, !15, i64 272, !15, i64 280, !15, i64 288, !15, i64 296, !15, i64 304, !15, i64 312, !15, i64 320, !15, i64 328, !7, i64 336, !7, i64 1360, !7, i64 2384, !7, i64 3408, !7, i64 4432, !18, i64 5456}
!18 = !{!"_ZTSN14tetgenbehavior10objecttypeE", !7, i64 0}
!19 = !{!17, !12, i64 68}
!20 = !{!10, !6, i64 32}
!21 = !{!11, !12, i64 8}
!22 = !{!11, !6, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!10, !6, i64 0}
!26 = !{!27, !12, i64 176}
!27 = !{!"_ZTS8tetgenio", !12, i64 0, !12, i64 4, !12, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !12, i64 64, !12, i64 68, !12, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !12, i64 128, !12, i64 132, !12, i64 136, !6, i64 144, !6, i64 152, !12, i64 160, !6, i64 168, !12, i64 176, !6, i64 184, !12, i64 192, !6, i64 200, !12, i64 208, !6, i64 216, !12, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !12, i64 272, !6, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !12, i64 312, !6, i64 320, !6, i64 328, !6, i64 336, !6, i64 344, !12, i64 352, !12, i64 356, !12, i64 360, !12, i64 364, !6, i64 368, !6, i64 376, !6, i64 384, !6, i64 392, !6, i64 400, !6, i64 408, !6, i64 416}
!28 = !{!12, !12, i64 0}
!29 = !{!27, !6, i64 168}
!30 = !{!10, !6, i64 224}
!31 = distinct !{!31, !24}
!32 = !{!17, !12, i64 52}
!33 = !{!27, !12, i64 192}
!34 = !{!27, !6, i64 184}
!35 = distinct !{!35, !24}
!36 = !{!37, !14, i64 32}
!37 = !{!"_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}
!38 = !{!37, !6, i64 24}
!39 = !{!37, !12, i64 8}
!40 = !{!37, !12, i64 12}
!41 = !{!37, !12, i64 0}
!42 = distinct !{!42, !24}
!43 = distinct !{!43, !24}
!44 = !{!17, !12, i64 148}
!45 = distinct !{!45, !24}
!46 = !{!10, !6, i64 56}
!47 = !{!10, !6, i64 168}
!48 = !{!17, !12, i64 16}
!49 = !{!17, !12, i64 168}
!50 = !{!27, !12, i64 64}
!51 = !{!27, !12, i64 0}
!52 = !{!10, !6, i64 232}
!53 = distinct !{!53, !24}
!54 = !{!14, !14, i64 0}
!55 = !{!10, !6, i64 48}
!56 = !{!13, !6, i64 0}
!57 = !{!10, !6, i64 216}
!58 = distinct !{!58, !24}
!59 = !{!10, !6, i64 280}
!60 = distinct !{!60, !24}
!61 = distinct !{!61, !24}
!62 = distinct !{!62, !24}
!63 = distinct !{!63, !24}
!64 = distinct !{!64, !24}
!65 = distinct !{!65, !24}
!66 = distinct !{!66, !24}
!67 = distinct !{!67, !24}
!68 = !{!10, !6, i64 40}
!69 = distinct !{!69, !24}
!70 = distinct !{!70, !24}
!71 = !{!10, !14, i64 592}
!72 = !{!10, !14, i64 608}
!73 = !{!10, !14, i64 616}
!74 = !{!10, !14, i64 624}
!75 = !{!10, !14, i64 576}
!76 = distinct !{!76, !24}
!77 = !{!10, !14, i64 552}
!78 = distinct !{!78, !24}
!79 = distinct !{!79, !24}
!80 = !{!10, !12, i64 332}
!81 = distinct !{!81, !24}
!82 = distinct !{!82, !24}
!83 = distinct !{!83, !24}
!84 = !{!15, !15, i64 0}
!85 = !{!17, !12, i64 44}
!86 = distinct !{!86, !24}
!87 = distinct !{!87, !24}
!88 = distinct !{!88, !24}
!89 = distinct !{!89, !24}
!90 = distinct !{!90, !24}
!91 = distinct !{!91, !24}
!92 = distinct !{!92, !24}
!93 = !{!10, !12, i64 392}
!94 = distinct !{!94, !24}
!95 = !{!96, !12, i64 0}
!96 = !{!"_ZTSN10tetgenmesh15flipconstraintsE", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !15, i64 24, !15, i64 32, !12, i64 40, !15, i64 48, !15, i64 56, !12, i64 64, !7, i64 72, !7, i64 88, !6, i64 112}
!97 = !{!10, !6, i64 112}


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

@_ZN10tetgenmesh7fsymtblE = external dso_local local_unnamed_addr global [12 x [12 x i32]], align 16
@_ZN10tetgenmesh10facepivot1E = external dso_local local_unnamed_addr global [12 x i32], align 16
@_ZN10tetgenmesh10facepivot2E = external dso_local local_unnamed_addr global [12 x [12 x i32]], align 16
@_ZN10tetgenmesh8orgpivotE = external dso_local local_unnamed_addr global [12 x i32], align 16
@_ZN10tetgenmesh9destpivotE = external dso_local local_unnamed_addr global [12 x i32], align 16
@_ZN10tetgenmesh9apexpivotE = external dso_local local_unnamed_addr global [12 x i32], align 16
@_ZN10tetgenmesh9oppopivotE = external dso_local local_unnamed_addr global [12 x i32], align 16
@_ZN10tetgenmesh8ver2edgeE = external dso_local local_unnamed_addr global [12 x i32], align 16
@.str.446 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.447 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.448 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.449 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.450 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.451 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.452 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.453 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.454 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.455 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.456 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.457 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.458 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.459 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.460 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.461 = external hidden unnamed_addr constant [29 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: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) local_unnamed_addr #1

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) local_unnamed_addr #3

; 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 #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh15flipconstraintsC2Ev(ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10tetgenmesh10carveholesEv(ptr noundef nonnull align 8 dereferenceable(1536) %0) local_unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.tetgenmesh::triface", align 8
  %3 = alloca %"class.tetgenmesh::triface", align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca %"class.tetgenmesh::face", align 8
  %7 = alloca ptr, align 8
  %8 = alloca %"class.tetgenmesh::face", align 8
  %9 = alloca ptr, align 8
  %10 = alloca %"class.tetgenmesh::triface", align 8
  %11 = alloca %"class.tetgenmesh::triface", align 8
  %12 = alloca %"class.tetgenmesh::face", align 8
  %13 = alloca ptr, align 8
  %14 = alloca %"class.tetgenmesh::face", align 8
  %15 = alloca %"class.tetgenmesh::face", align 8
  %16 = alloca %"class.tetgenmesh::flipconstraints", align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #9
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %2)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #9
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #9
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #9
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #9
  %17 = getelementptr inbounds i8, ptr %0, i64 16
  %18 = load ptr, ptr %17, align 8, !tbaa !5
  %19 = getelementptr inbounds i8, ptr %18, i64 144
  %20 = load i32, ptr %19, align 8, !tbaa !15
  %.not = icmp eq i32 %20, 0
  br i1 %.not, label %.sink.split, label %24

.sink.split:                                      ; preds = %1
  %21 = getelementptr inbounds i8, ptr %18, i64 68
  %22 = load i32, ptr %21, align 4, !tbaa !18
  %.not276 = icmp eq i32 %22, 0
  %.str.447..str.446 = select i1 %.not276, ptr @.str.447, ptr @.str.446
  %23 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.447..str.446)
  br label %24

24:                                               ; preds = %.sink.split, %1
  %25 = call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #10
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %25, i32 noundef 16, i32 noundef 10)
          to label %26 unwind label %56

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

28:                                               ; preds = %26
  %29 = getelementptr inbounds i8, ptr %0, i64 32
  %30 = load ptr, ptr %29, align 8, !tbaa !19
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %30)
  %31 = getelementptr inbounds i8, ptr %2, i64 8
  store i32 11, ptr %31, align 8, !tbaa !20
  %32 = call noundef ptr @_ZN10tetgenmesh22alltetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  store ptr %32, ptr %2, align 8, !tbaa !21
  %.not277353 = icmp eq ptr %32, null
  br i1 %.not277353, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %28, %60
  %33 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2)
  br i1 %33, label %34, label %60

34:                                               ; preds = %.lr.ph
  %35 = load ptr, ptr %2, align 8, !tbaa !21
  %36 = getelementptr inbounds i8, ptr %35, i64 72
  %37 = load ptr, ptr %36, align 8, !tbaa !22
  %.not335 = icmp eq ptr %37, null
  br i1 %.not335, label %44, label %38

38:                                               ; preds = %34
  %39 = load i32, ptr %31, align 8, !tbaa !20
  %40 = and i32 %39, 3
  %41 = zext nneg i32 %40 to i64
  %42 = getelementptr inbounds ptr, ptr %37, i64 %41
  %43 = load ptr, ptr %42, align 8, !tbaa !22
  %.not336 = icmp eq ptr %43, null
  br i1 %.not336, label %44, label %60

44:                                               ; preds = %38, %34
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2)
  %45 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %27, ptr noundef nonnull %4)
  %46 = load ptr, ptr %4, align 8, !tbaa !22
  %47 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %46, ptr noundef nonnull align 8 dereferenceable(12) %2)
  %48 = load ptr, ptr %2, align 8, !tbaa !21
  %49 = getelementptr inbounds i8, ptr %48, i64 24
  %50 = load ptr, ptr %49, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %50, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %51 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %51, label %60, label %52

52:                                               ; preds = %44
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %53 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %25, ptr noundef nonnull %4)
  %54 = load ptr, ptr %4, align 8, !tbaa !22
  %55 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %54, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %60

56:                                               ; preds = %24
  %57 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %25, i64 noundef 48) #11
  br label %1382

58:                                               ; preds = %26
  %59 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %27, i64 noundef 48) #11
  br label %1382

60:                                               ; preds = %38, %52, %44, %.lr.ph
  %61 = call noundef ptr @_ZN10tetgenmesh22alltetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  store ptr %61, ptr %2, align 8, !tbaa !21
  %.not277 = icmp eq ptr %61, null
  br i1 %.not277, label %._crit_edge, label %.lr.ph, !llvm.loop !23

._crit_edge:                                      ; preds = %60, %28
  %62 = load ptr, ptr %0, align 8, !tbaa !25
  %63 = getelementptr inbounds i8, ptr %62, i64 176
  %64 = load i32, ptr %63, align 8, !tbaa !26
  %65 = icmp sgt i32 %64, 0
  br i1 %65, label %.lr.ph355, label %.loopexit347

.lr.ph355:                                        ; preds = %._crit_edge
  %66 = getelementptr inbounds i8, ptr %3, i64 8
  %67 = getelementptr inbounds i8, ptr %0, i64 224
  br label %68

68:                                               ; preds = %.lr.ph355, %125
  %indvars.iv = phi i64 [ 0, %.lr.ph355 ], [ %indvars.iv.next, %125 ]
  %69 = phi ptr [ %62, %.lr.ph355 ], [ %126, %125 ]
  store ptr null, ptr %3, align 8, !tbaa !21
  %70 = getelementptr inbounds i8, ptr %69, i64 168
  %71 = load ptr, ptr %70, align 8, !tbaa !28
  %72 = getelementptr inbounds double, ptr %71, i64 %indvars.iv
  call void @_ZN10tetgenmesh12randomsampleEPdPNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %72, ptr noundef nonnull %3)
  %73 = load ptr, ptr %0, align 8, !tbaa !25
  %74 = getelementptr inbounds i8, ptr %73, i64 168
  %75 = load ptr, ptr %74, align 8, !tbaa !28
  %76 = getelementptr inbounds double, ptr %75, i64 %indvars.iv
  %77 = call noundef i32 @_ZN10tetgenmesh6locateEPdPNS_7trifaceEi(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %76, ptr noundef nonnull %3, i32 noundef 0)
  %.not331 = icmp eq i32 %77, 1
  br i1 %.not331, label %115, label %78

78:                                               ; preds = %68
  %79 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %79, label %125, label %80

80:                                               ; preds = %78
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %81 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %25, ptr noundef nonnull %4)
  %82 = load ptr, ptr %4, align 8, !tbaa !22
  %83 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %82, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %84 = load ptr, ptr %3, align 8, !tbaa !21
  %85 = getelementptr inbounds i8, ptr %84, i64 72
  %86 = load ptr, ptr %85, align 8, !tbaa !22
  %.not333 = icmp eq ptr %86, null
  %.pre = load i32, ptr %66, align 8, !tbaa !20
  %.pre531 = and i32 %.pre, 3
  %.pre533 = zext nneg i32 %.pre531 to i64
  br i1 %.not333, label %._crit_edge528, label %87

87:                                               ; preds = %80
  %88 = getelementptr inbounds ptr, ptr %86, i64 %.pre533
  %89 = load ptr, ptr %88, align 8, !tbaa !22
  %.not334 = icmp eq ptr %89, null
  br i1 %.not334, label %._crit_edge528, label %98

._crit_edge528:                                   ; preds = %80, %87
  %90 = getelementptr inbounds ptr, ptr %84, i64 %.pre533
  %91 = load ptr, ptr %90, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %91, ptr noundef nonnull align 8 dereferenceable(12) %2)
  %92 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2)
  br i1 %92, label %125, label %93

93:                                               ; preds = %._crit_edge528
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2)
  %94 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2)
  %. = select i1 %94, ptr %27, ptr %25
  %95 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %., ptr noundef nonnull %4)
  %96 = load ptr, ptr %4, align 8, !tbaa !22
  %97 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %96, ptr noundef nonnull align 8 dereferenceable(12) %2)
  br label %125

98:                                               ; preds = %87
  %99 = getelementptr inbounds ptr, ptr %84, i64 %.pre533
  %100 = load ptr, ptr %99, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %100, ptr noundef nonnull align 8 dereferenceable(12) %2)
  %101 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2)
  br i1 %101, label %102, label %108

102:                                              ; preds = %98
  %103 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2)
  br i1 %103, label %108, label %104

104:                                              ; preds = %102
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2)
  %105 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %27, ptr noundef nonnull %4)
  %106 = load ptr, ptr %4, align 8, !tbaa !22
  %107 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %106, ptr noundef nonnull align 8 dereferenceable(12) %2)
  br label %108

108:                                              ; preds = %102, %104, %98
  %109 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2)
  br i1 %109, label %110, label %125

110:                                              ; preds = %108
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %111 = load ptr, ptr %67, align 8, !tbaa !29
  %112 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %111, ptr noundef nonnull %7)
  %113 = load ptr, ptr %7, align 8, !tbaa !22
  %114 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %113, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %125

115:                                              ; preds = %68
  %116 = load ptr, ptr %17, align 8, !tbaa !5
  %117 = getelementptr inbounds i8, ptr %116, i64 144
  %118 = load i32, ptr %117, align 8, !tbaa !15
  %.not332 = icmp eq i32 %118, 0
  br i1 %.not332, label %119, label %125

119:                                              ; preds = %115
  %120 = udiv i64 %indvars.iv, 3
  %121 = trunc i64 %120 to i32
  %122 = add i32 %121, 1
  %123 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.448, i32 noundef %122)
  %124 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.449)
  br label %125

125:                                              ; preds = %93, %._crit_edge528, %110, %108, %78, %119, %115
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 3
  %126 = load ptr, ptr %0, align 8, !tbaa !25
  %127 = getelementptr inbounds i8, ptr %126, i64 176
  %128 = load i32, ptr %127, align 8, !tbaa !26
  %129 = mul nsw i32 %128, 3
  %130 = trunc nuw i64 %indvars.iv.next to i32
  %131 = icmp sgt i32 %129, %130
  br i1 %131, label %68, label %.loopexit347, !llvm.loop !30

.loopexit347:                                     ; preds = %125, %._crit_edge
  %132 = phi ptr [ %62, %._crit_edge ], [ %126, %125 ]
  %133 = load ptr, ptr %17, align 8, !tbaa !5
  %134 = getelementptr inbounds i8, ptr %133, i64 52
  %135 = load i32, ptr %134, align 4, !tbaa !31
  %.not278 = icmp eq i32 %135, 0
  br i1 %.not278, label %.loopexit345, label %136

136:                                              ; preds = %.loopexit347
  %137 = getelementptr inbounds i8, ptr %132, i64 192
  %138 = load i32, ptr %137, align 8, !tbaa !32
  %139 = icmp sgt i32 %138, 0
  br i1 %139, label %140, label %.loopexit345

140:                                              ; preds = %136
  %141 = zext nneg i32 %138 to i64
  %142 = shl nuw nsw i64 %141, 4
  %143 = call noalias noundef nonnull ptr @_Znam(i64 noundef %142) #10
  %144 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %143, i64 %141
  br label %145

145:                                              ; preds = %145, %140
  %146 = phi ptr [ %143, %140 ], [ %147, %145 ]
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %146)
  %147 = getelementptr inbounds i8, ptr %146, i64 16
  %148 = icmp eq ptr %147, %144
  br i1 %148, label %.preheader344, label %145

.preheader344:                                    ; preds = %145
  %149 = load ptr, ptr %0, align 8, !tbaa !25
  %150 = getelementptr inbounds i8, ptr %149, i64 192
  %151 = load i32, ptr %150, align 8, !tbaa !32
  %152 = icmp sgt i32 %151, 0
  br i1 %152, label %.lr.ph357, label %.loopexit345

.lr.ph357:                                        ; preds = %.preheader344, %177
  %indvars.iv462 = phi i64 [ %indvars.iv.next463, %177 ], [ 0, %.preheader344 ]
  %153 = phi ptr [ %178, %177 ], [ %149, %.preheader344 ]
  store ptr null, ptr %3, align 8, !tbaa !21
  %154 = getelementptr inbounds i8, ptr %153, i64 184
  %155 = load ptr, ptr %154, align 8, !tbaa !33
  %156 = getelementptr inbounds double, ptr %155, i64 %indvars.iv462
  call void @_ZN10tetgenmesh12randomsampleEPdPNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %156, ptr noundef nonnull %3)
  %157 = load ptr, ptr %0, align 8, !tbaa !25
  %158 = getelementptr inbounds i8, ptr %157, i64 184
  %159 = load ptr, ptr %158, align 8, !tbaa !33
  %160 = getelementptr inbounds double, ptr %159, i64 %indvars.iv462
  %161 = call noundef i32 @_ZN10tetgenmesh6locateEPdPNS_7trifaceEi(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %160, ptr noundef nonnull %3, i32 noundef 0)
  %.not329 = icmp eq i32 %161, 1
  br i1 %.not329, label %166, label %162

162:                                              ; preds = %.lr.ph357
  %163 = udiv i64 %indvars.iv462, 5
  %164 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %143, i64 %163
  %165 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %164, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %177

166:                                              ; preds = %.lr.ph357
  %167 = load ptr, ptr %17, align 8, !tbaa !5
  %168 = getelementptr inbounds i8, ptr %167, i64 144
  %169 = load i32, ptr %168, align 8, !tbaa !15
  %.not330 = icmp eq i32 %169, 0
  %170 = udiv i64 %indvars.iv462, 5
  br i1 %.not330, label %171, label %._crit_edge529

171:                                              ; preds = %166
  %172 = trunc i64 %170 to i32
  %173 = add i32 %172, 1
  %174 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.450, i32 noundef %173)
  %175 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.449)
  br label %._crit_edge529

._crit_edge529:                                   ; preds = %166, %171
  %176 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %143, i64 %170
  store ptr null, ptr %176, align 8, !tbaa !21
  br label %177

177:                                              ; preds = %162, %._crit_edge529
  %indvars.iv.next463 = add nuw nsw i64 %indvars.iv462, 5
  %178 = load ptr, ptr %0, align 8, !tbaa !25
  %179 = getelementptr inbounds i8, ptr %178, i64 192
  %180 = load i32, ptr %179, align 8, !tbaa !32
  %181 = mul nsw i32 %180, 5
  %182 = trunc nuw i64 %indvars.iv.next463 to i32
  %183 = icmp sgt i32 %181, %182
  br i1 %183, label %.lr.ph357, label %.loopexit345, !llvm.loop !34

.loopexit345:                                     ; preds = %177, %.preheader344, %136, %.loopexit347
  %.0 = phi ptr [ null, %136 ], [ null, %.loopexit347 ], [ %143, %.preheader344 ], [ %143, %177 ]
  %184 = getelementptr inbounds i8, ptr %25, i64 32
  %185 = load i64, ptr %184, align 8, !tbaa !35
  %186 = icmp sgt i64 %185, 0
  br i1 %186, label %.lr.ph361, label %._crit_edge362

.lr.ph361:                                        ; preds = %.loopexit345
  %187 = getelementptr inbounds i8, ptr %25, i64 24
  %188 = getelementptr inbounds i8, ptr %25, i64 8
  %189 = getelementptr inbounds i8, ptr %25, i64 12
  %190 = getelementptr inbounds i8, ptr %3, i64 8
  %191 = getelementptr inbounds i8, ptr %0, i64 224
  br label %192

192:                                              ; preds = %.lr.ph361, %347
  %indvars.iv465 = phi i64 [ 0, %.lr.ph361 ], [ %indvars.iv.next466, %347 ]
  %193 = load ptr, ptr %187, align 8, !tbaa !37
  %194 = load i32, ptr %188, align 8, !tbaa !38
  %195 = trunc nuw nsw i64 %indvars.iv465 to i32
  %196 = lshr i32 %195, %194
  %197 = zext nneg i32 %196 to i64
  %198 = getelementptr inbounds ptr, ptr %193, i64 %197
  %199 = load ptr, ptr %198, align 8, !tbaa !22
  %200 = load i32, ptr %189, align 4, !tbaa !39
  %201 = and i32 %200, %195
  %202 = load i32, ptr %25, align 8, !tbaa !40
  %203 = mul nsw i32 %201, %202
  %204 = sext i32 %203 to i64
  %205 = getelementptr inbounds i8, ptr %199, i64 %204
  store ptr %205, ptr %4, align 8, !tbaa !22
  %206 = getelementptr inbounds i8, ptr %205, i64 8
  %207 = load i32, ptr %206, align 8, !tbaa !20
  %208 = load ptr, ptr %205, align 8, !tbaa !21
  %209 = add i32 %207, 1
  %210 = and i32 %209, 3
  %211 = zext nneg i32 %210 to i64
  %212 = getelementptr inbounds ptr, ptr %208, i64 %211
  %213 = load ptr, ptr %212, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %213, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %214 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %215 = load ptr, ptr %3, align 8, !tbaa !21
  %216 = getelementptr inbounds i8, ptr %215, i64 72
  %217 = load ptr, ptr %216, align 8, !tbaa !22
  %.not327 = icmp eq ptr %217, null
  br i1 %214, label %239, label %218

218:                                              ; preds = %192
  br i1 %.not327, label %225, label %219

219:                                              ; preds = %218
  %220 = load i32, ptr %190, align 8, !tbaa !20
  %221 = and i32 %220, 3
  %222 = zext nneg i32 %221 to i64
  %223 = getelementptr inbounds ptr, ptr %217, i64 %222
  %224 = load ptr, ptr %223, align 8, !tbaa !22
  %.not326 = icmp eq ptr %224, null
  br i1 %.not326, label %225, label %229

225:                                              ; preds = %219, %218
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %226 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %25, ptr noundef nonnull %5)
  %227 = load ptr, ptr %5, align 8, !tbaa !22
  %228 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %227, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %253

229:                                              ; preds = %219
  %230 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %230, label %231, label %253

231:                                              ; preds = %229
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %232 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %27, ptr noundef nonnull %5)
  %233 = load ptr, ptr %5, align 8, !tbaa !22
  %234 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %233, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %235 = load ptr, ptr %191, align 8, !tbaa !29
  %236 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %235, ptr noundef nonnull %7)
  %237 = load ptr, ptr %7, align 8, !tbaa !22
  %238 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %237, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %253

239:                                              ; preds = %192
  br i1 %.not327, label %253, label %240

240:                                              ; preds = %239
  %241 = load i32, ptr %190, align 8, !tbaa !20
  %242 = and i32 %241, 3
  %243 = zext nneg i32 %242 to i64
  %244 = getelementptr inbounds ptr, ptr %217, i64 %243
  %245 = load ptr, ptr %244, align 8, !tbaa !22
  %.not328 = icmp eq ptr %245, null
  br i1 %.not328, label %253, label %246

246:                                              ; preds = %240
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %247 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br i1 %247, label %253, label %248

248:                                              ; preds = %246
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %249 = load ptr, ptr %191, align 8, !tbaa !29
  %250 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %249, ptr noundef nonnull %7)
  %251 = load ptr, ptr %7, align 8, !tbaa !22
  %252 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %251, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %253

253:                                              ; preds = %229, %231, %225, %246, %248, %240, %239
  %254 = load ptr, ptr %4, align 8, !tbaa !22
  %255 = load ptr, ptr %254, align 8, !tbaa !21
  %256 = and i32 %207, 3
  %257 = xor i32 %256, 2
  %258 = zext nneg i32 %257 to i64
  %259 = getelementptr inbounds ptr, ptr %255, i64 %258
  %260 = load ptr, ptr %259, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %260, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %261 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %262 = load ptr, ptr %3, align 8, !tbaa !21
  %263 = getelementptr inbounds i8, ptr %262, i64 72
  %264 = load ptr, ptr %263, align 8, !tbaa !22
  %.not327.1 = icmp eq ptr %264, null
  br i1 %261, label %286, label %265

265:                                              ; preds = %253
  br i1 %.not327.1, label %282, label %266

266:                                              ; preds = %265
  %267 = load i32, ptr %190, align 8, !tbaa !20
  %268 = and i32 %267, 3
  %269 = zext nneg i32 %268 to i64
  %270 = getelementptr inbounds ptr, ptr %264, i64 %269
  %271 = load ptr, ptr %270, align 8, !tbaa !22
  %.not326.1 = icmp eq ptr %271, null
  br i1 %.not326.1, label %282, label %272

272:                                              ; preds = %266
  %273 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %273, label %274, label %300

274:                                              ; preds = %272
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %275 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %27, ptr noundef nonnull %5)
  %276 = load ptr, ptr %5, align 8, !tbaa !22
  %277 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %276, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %278 = load ptr, ptr %191, align 8, !tbaa !29
  %279 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %278, ptr noundef nonnull %7)
  %280 = load ptr, ptr %7, align 8, !tbaa !22
  %281 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %280, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %300

282:                                              ; preds = %266, %265
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %283 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %25, ptr noundef nonnull %5)
  %284 = load ptr, ptr %5, align 8, !tbaa !22
  %285 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %284, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %300

286:                                              ; preds = %253
  br i1 %.not327.1, label %300, label %287

287:                                              ; preds = %286
  %288 = load i32, ptr %190, align 8, !tbaa !20
  %289 = and i32 %288, 3
  %290 = zext nneg i32 %289 to i64
  %291 = getelementptr inbounds ptr, ptr %264, i64 %290
  %292 = load ptr, ptr %291, align 8, !tbaa !22
  %.not328.1 = icmp eq ptr %292, null
  br i1 %.not328.1, label %300, label %293

293:                                              ; preds = %287
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %294 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br i1 %294, label %300, label %295

295:                                              ; preds = %293
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %296 = load ptr, ptr %191, align 8, !tbaa !29
  %297 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %296, ptr noundef nonnull %7)
  %298 = load ptr, ptr %7, align 8, !tbaa !22
  %299 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %298, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %300

300:                                              ; preds = %295, %293, %287, %286, %282, %274, %272
  %301 = load ptr, ptr %4, align 8, !tbaa !22
  %302 = load ptr, ptr %301, align 8, !tbaa !21
  %303 = add i32 %207, 3
  %304 = and i32 %303, 3
  %305 = zext nneg i32 %304 to i64
  %306 = getelementptr inbounds ptr, ptr %302, i64 %305
  %307 = load ptr, ptr %306, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %307, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %308 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %309 = load ptr, ptr %3, align 8, !tbaa !21
  %310 = getelementptr inbounds i8, ptr %309, i64 72
  %311 = load ptr, ptr %310, align 8, !tbaa !22
  %.not327.2 = icmp eq ptr %311, null
  br i1 %308, label %333, label %312

312:                                              ; preds = %300
  br i1 %.not327.2, label %329, label %313

313:                                              ; preds = %312
  %314 = load i32, ptr %190, align 8, !tbaa !20
  %315 = and i32 %314, 3
  %316 = zext nneg i32 %315 to i64
  %317 = getelementptr inbounds ptr, ptr %311, i64 %316
  %318 = load ptr, ptr %317, align 8, !tbaa !22
  %.not326.2 = icmp eq ptr %318, null
  br i1 %.not326.2, label %329, label %319

319:                                              ; preds = %313
  %320 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %320, label %321, label %347

321:                                              ; preds = %319
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %322 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %27, ptr noundef nonnull %5)
  %323 = load ptr, ptr %5, align 8, !tbaa !22
  %324 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %323, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %325 = load ptr, ptr %191, align 8, !tbaa !29
  %326 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %325, ptr noundef nonnull %7)
  %327 = load ptr, ptr %7, align 8, !tbaa !22
  %328 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %327, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %347

329:                                              ; preds = %313, %312
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %330 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %25, ptr noundef nonnull %5)
  %331 = load ptr, ptr %5, align 8, !tbaa !22
  %332 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %331, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %347

333:                                              ; preds = %300
  br i1 %.not327.2, label %347, label %334

334:                                              ; preds = %333
  %335 = load i32, ptr %190, align 8, !tbaa !20
  %336 = and i32 %335, 3
  %337 = zext nneg i32 %336 to i64
  %338 = getelementptr inbounds ptr, ptr %311, i64 %337
  %339 = load ptr, ptr %338, align 8, !tbaa !22
  %.not328.2 = icmp eq ptr %339, null
  br i1 %.not328.2, label %347, label %340

340:                                              ; preds = %334
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %341 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br i1 %341, label %347, label %342

342:                                              ; preds = %340
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %343 = load ptr, ptr %191, align 8, !tbaa !29
  %344 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %343, ptr noundef nonnull %7)
  %345 = load ptr, ptr %7, align 8, !tbaa !22
  %346 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %345, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %347

347:                                              ; preds = %342, %340, %334, %333, %329, %321, %319
  %indvars.iv.next466 = add nuw nsw i64 %indvars.iv465, 1
  %348 = load i64, ptr %184, align 8, !tbaa !35
  %349 = icmp sgt i64 %348, %indvars.iv.next466
  br i1 %349, label %192, label %._crit_edge362, !llvm.loop !41

._crit_edge362:                                   ; preds = %347, %.loopexit345
  %350 = load ptr, ptr %17, align 8, !tbaa !5
  %351 = getelementptr inbounds i8, ptr %350, i64 52
  %352 = load i32, ptr %351, align 4, !tbaa !31
  %.not279 = icmp eq i32 %352, 0
  br i1 %.not279, label %.loopexit343, label %353

353:                                              ; preds = %._crit_edge362
  %354 = load ptr, ptr %0, align 8, !tbaa !25
  %355 = getelementptr inbounds i8, ptr %354, i64 192
  %356 = load i32, ptr %355, align 8, !tbaa !32
  %357 = icmp sgt i32 %356, 0
  br i1 %357, label %.lr.ph365, label %.loopexit343

.lr.ph365:                                        ; preds = %353, %370
  %indvars.iv468 = phi i64 [ %indvars.iv.next469, %370 ], [ 0, %353 ]
  %358 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %.0, i64 %indvars.iv468
  %359 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %358)
  br i1 %359, label %360, label %370

360:                                              ; preds = %.lr.ph365
  %361 = load ptr, ptr %17, align 8, !tbaa !5
  %362 = getelementptr inbounds i8, ptr %361, i64 148
  %363 = load i32, ptr %362, align 4, !tbaa !42
  %.not324 = icmp eq i32 %363, 0
  br i1 %.not324, label %369, label %364

364:                                              ; preds = %360
  %365 = trunc i64 %indvars.iv468 to i32
  %366 = add i32 %365, 1
  %367 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.450, i32 noundef %366)
  %368 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.451)
  br label %369

369:                                              ; preds = %364, %360
  store ptr null, ptr %358, align 8, !tbaa !21
  br label %370

370:                                              ; preds = %.lr.ph365, %369
  %indvars.iv.next469 = add nuw nsw i64 %indvars.iv468, 1
  %371 = load ptr, ptr %0, align 8, !tbaa !25
  %372 = getelementptr inbounds i8, ptr %371, i64 192
  %373 = load i32, ptr %372, align 8, !tbaa !32
  %374 = sext i32 %373 to i64
  %375 = icmp slt i64 %indvars.iv.next469, %374
  br i1 %375, label %.lr.ph365, label %.loopexit343, !llvm.loop !43

.loopexit343:                                     ; preds = %370, %353, %._crit_edge362
  %376 = getelementptr inbounds i8, ptr %0, i64 56
  %377 = load ptr, ptr %376, align 8, !tbaa !44
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %377)
  %378 = call noundef ptr @_ZN10tetgenmesh13pointtraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  %.not280366 = icmp eq ptr %378, null
  br i1 %.not280366, label %._crit_edge370, label %.lr.ph369

.lr.ph369:                                        ; preds = %.loopexit343
  %379 = getelementptr inbounds i8, ptr %0, i64 168
  %380 = getelementptr inbounds i8, ptr %0, i64 232
  br label %381

381:                                              ; preds = %.lr.ph369, %412
  %.0227367 = phi ptr [ %378, %.lr.ph369 ], [ %413, %412 ]
  %382 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.0227367)
  %.not319 = icmp eq i32 %382, 0
  br i1 %.not319, label %412, label %383

383:                                              ; preds = %381
  %384 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.0227367)
  %.not320 = icmp eq i32 %384, 1
  br i1 %.not320, label %412, label %385

385:                                              ; preds = %383
  %386 = call noundef ptr @_ZN10tetgenmesh9point2tetEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.0227367)
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %386, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %387 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %387, label %388, label %392

388:                                              ; preds = %385
  %389 = load ptr, ptr %379, align 8, !tbaa !45
  %390 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %389, ptr noundef nonnull %9)
  %391 = load ptr, ptr %9, align 8, !tbaa !22
  store ptr %.0227367, ptr %391, align 8, !tbaa !22
  br label %392

392:                                              ; preds = %388, %385
  %393 = load ptr, ptr %17, align 8, !tbaa !5
  %394 = getelementptr inbounds i8, ptr %393, i64 16
  %395 = load i32, ptr %394, align 8, !tbaa !46
  %.not321 = icmp eq i32 %395, 0
  br i1 %.not321, label %412, label %396

396:                                              ; preds = %392
  %397 = getelementptr inbounds i8, ptr %393, i64 168
  %398 = load i32, ptr %397, align 8, !tbaa !47
  %399 = icmp sgt i32 %398, 0
  br i1 %399, label %400, label %412

400:                                              ; preds = %396
  %401 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.0227367)
  %402 = load ptr, ptr %0, align 8, !tbaa !25
  %403 = getelementptr inbounds i8, ptr %402, i64 64
  %404 = load i32, ptr %403, align 8, !tbaa !48
  %405 = load i32, ptr %402, align 8, !tbaa !49
  %.not322 = icmp eq i32 %405, 0
  %.neg323 = sext i1 %.not322 to i32
  %406 = add i32 %404, %.neg323
  %407 = icmp sgt i32 %401, %406
  br i1 %407, label %408, label %412

408:                                              ; preds = %400
  %409 = load ptr, ptr %380, align 8, !tbaa !50
  %410 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %409, ptr noundef nonnull %9)
  %411 = load ptr, ptr %9, align 8, !tbaa !22
  store ptr %.0227367, ptr %411, align 8, !tbaa !22
  br label %412

412:                                              ; preds = %392, %396, %408, %400, %383, %381
  %413 = call noundef ptr @_ZN10tetgenmesh13pointtraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  %.not280 = icmp eq ptr %413, null
  br i1 %.not280, label %._crit_edge370, label %381, !llvm.loop !51

._crit_edge370:                                   ; preds = %412, %.loopexit343
  %414 = load ptr, ptr %17, align 8, !tbaa !5
  %415 = getelementptr inbounds i8, ptr %414, i64 68
  %416 = load i32, ptr %415, align 4, !tbaa !18
  %.not281 = icmp eq i32 %416, 0
  br i1 %.not281, label %417, label %.thread536

417:                                              ; preds = %._crit_edge370
  %418 = load i64, ptr %184, align 8, !tbaa !35
  %419 = icmp sgt i64 %418, 0
  br i1 %419, label %420, label %.thread

420:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #9
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #9
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %11)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #9
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #9
  %421 = getelementptr inbounds i8, ptr %0, i64 48
  %422 = load ptr, ptr %421, align 8, !tbaa !52
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %422)
  %423 = load ptr, ptr %421, align 8, !tbaa !52
  %424 = call noundef ptr @_ZN10tetgenmesh17shellfacetraverseEPNS_10memorypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %423)
  store ptr %424, ptr %12, align 8, !tbaa !53
  %.not283371 = icmp eq ptr %424, null
  br i1 %.not283371, label %._crit_edge374, label %.lr.ph373

.lr.ph373:                                        ; preds = %420
  %425 = getelementptr inbounds i8, ptr %0, i64 216
  br label %426

426:                                              ; preds = %.lr.ph373, %433
  call void @_ZN10tetgenmesh9sstpivot1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %427 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %427, label %428, label %433

428:                                              ; preds = %426
  %429 = load ptr, ptr %425, align 8, !tbaa !54
  %430 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %429, ptr noundef nonnull %13)
  %431 = load ptr, ptr %13, align 8, !tbaa !22
  %432 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %431, ptr noundef nonnull align 8 dereferenceable(12) %12)
  br label %433

433:                                              ; preds = %428, %426
  %434 = load ptr, ptr %421, align 8, !tbaa !52
  %435 = call noundef ptr @_ZN10tetgenmesh17shellfacetraverseEPNS_10memorypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %434)
  store ptr %435, ptr %12, align 8, !tbaa !53
  %.not283 = icmp eq ptr %435, null
  br i1 %.not283, label %._crit_edge374, label %426, !llvm.loop !55

._crit_edge374:                                   ; preds = %433, %420
  %436 = call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #10
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %436, i32 noundef 16, i32 noundef 10)
          to label %.preheader341 unwind label %511

.preheader341:                                    ; preds = %._crit_edge374
  %437 = load i64, ptr %184, align 8, !tbaa !35
  %438 = icmp sgt i64 %437, 0
  br i1 %438, label %.lr.ph378, label %.preheader340

.lr.ph378:                                        ; preds = %.preheader341
  %439 = getelementptr inbounds i8, ptr %25, i64 24
  %440 = getelementptr inbounds i8, ptr %25, i64 8
  %441 = getelementptr inbounds i8, ptr %25, i64 12
  %442 = getelementptr inbounds i8, ptr %10, i64 8
  %443 = getelementptr inbounds i8, ptr %0, i64 280
  br label %452

.preheader340:                                    ; preds = %551, %.preheader341
  %444 = getelementptr inbounds i8, ptr %436, i64 32
  %445 = load i64, ptr %444, align 8, !tbaa !35
  %446 = icmp sgt i64 %445, 0
  br i1 %446, label %.lr.ph381, label %._crit_edge382

.lr.ph381:                                        ; preds = %.preheader340
  %447 = getelementptr inbounds i8, ptr %436, i64 24
  %448 = getelementptr inbounds i8, ptr %436, i64 8
  %449 = getelementptr inbounds i8, ptr %436, i64 12
  %450 = getelementptr inbounds i8, ptr %11, i64 8
  %451 = getelementptr inbounds i8, ptr %3, i64 8
  br label %554

452:                                              ; preds = %.lr.ph378, %551
  %indvars.iv474 = phi i64 [ 0, %.lr.ph378 ], [ %indvars.iv.next475, %551 ]
  %453 = load ptr, ptr %439, align 8, !tbaa !37
  %454 = load i32, ptr %440, align 8, !tbaa !38
  %455 = trunc nuw nsw i64 %indvars.iv474 to i32
  %456 = lshr i32 %455, %454
  %457 = zext nneg i32 %456 to i64
  %458 = getelementptr inbounds ptr, ptr %453, i64 %457
  %459 = load ptr, ptr %458, align 8, !tbaa !22
  %460 = load i32, ptr %441, align 4, !tbaa !39
  %461 = and i32 %460, %455
  %462 = load i32, ptr %25, align 8, !tbaa !40
  %463 = mul nsw i32 %461, %462
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds i8, ptr %459, i64 %464
  store ptr %465, ptr %4, align 8, !tbaa !22
  br label %466

466:                                              ; preds = %452, %550
  %indvars.iv471 = phi i64 [ 0, %452 ], [ %indvars.iv.next472, %550 ]
  %467 = load ptr, ptr %4, align 8, !tbaa !22
  %468 = load ptr, ptr %467, align 8, !tbaa !21
  %469 = getelementptr inbounds ptr, ptr %468, i64 %indvars.iv471
  %470 = load ptr, ptr %469, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %470, ptr noundef nonnull align 8 dereferenceable(12) %2)
  %471 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2)
  br i1 %471, label %550, label %472

472:                                              ; preds = %466
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2, ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @_ZN10tetgenmesh15maketetrahedronEPNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %10)
  %473 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2)
  %474 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2)
  %475 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2)
  %476 = load ptr, ptr %10, align 8, !tbaa !21
  %477 = load i32, ptr %442, align 8, !tbaa !20
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh8orgpivotE, i64 0, i64 %478
  %480 = load i32, ptr %479, align 4, !tbaa !56
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds ptr, ptr %476, i64 %481
  store ptr %474, ptr %482, align 8, !tbaa !22
  %483 = load ptr, ptr %10, align 8, !tbaa !21
  %484 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9destpivotE, i64 0, i64 %478
  %485 = load i32, ptr %484, align 4, !tbaa !56
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds ptr, ptr %483, i64 %486
  store ptr %473, ptr %487, align 8, !tbaa !22
  %488 = load ptr, ptr %10, align 8, !tbaa !21
  %489 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9apexpivotE, i64 0, i64 %478
  %490 = load i32, ptr %489, align 4, !tbaa !56
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds ptr, ptr %488, i64 %491
  store ptr %475, ptr %492, align 8, !tbaa !22
  %493 = load ptr, ptr %443, align 8, !tbaa !57
  %494 = load ptr, ptr %10, align 8, !tbaa !21
  %495 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9oppopivotE, i64 0, i64 %478
  %496 = load i32, ptr %495, align 4, !tbaa !56
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds ptr, ptr %494, i64 %497
  store ptr %493, ptr %498, align 8, !tbaa !22
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %499 = load ptr, ptr %2, align 8, !tbaa !21
  %500 = getelementptr inbounds i8, ptr %499, i64 64
  %501 = load ptr, ptr %500, align 8, !tbaa !22
  %.not298 = icmp eq ptr %501, null
  br i1 %.not298, label %513, label %502

502:                                              ; preds = %472
  %503 = load i32, ptr %31, align 8, !tbaa !20
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh8ver2edgeE, i64 0, i64 %504
  %506 = load i32, ptr %505, align 4, !tbaa !56
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds ptr, ptr %501, i64 %507
  %509 = load ptr, ptr %508, align 8, !tbaa !22
  %.not299 = icmp eq ptr %509, null
  br i1 %.not299, label %513, label %510

510:                                              ; preds = %502
  call void @_ZN10tetgenmesh9tsspivot1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2, ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8, ptr noundef nonnull align 8 dereferenceable(12) %10)
  br label %513

511:                                              ; preds = %._crit_edge374
  %512 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %436, i64 noundef 48) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #9
  br label %1382

513:                                              ; preds = %510, %502, %472
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2)
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %514 = load ptr, ptr %2, align 8, !tbaa !21
  %515 = getelementptr inbounds i8, ptr %514, i64 64
  %516 = load ptr, ptr %515, align 8, !tbaa !22
  %.not298.1 = icmp eq ptr %516, null
  br i1 %.not298.1, label %526, label %517

517:                                              ; preds = %513
  %518 = load i32, ptr %31, align 8, !tbaa !20
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh8ver2edgeE, i64 0, i64 %519
  %521 = load i32, ptr %520, align 4, !tbaa !56
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds ptr, ptr %516, i64 %522
  %524 = load ptr, ptr %523, align 8, !tbaa !22
  %.not299.1 = icmp eq ptr %524, null
  br i1 %.not299.1, label %526, label %525

525:                                              ; preds = %517
  call void @_ZN10tetgenmesh9tsspivot1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2, ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8, ptr noundef nonnull align 8 dereferenceable(12) %10)
  br label %526

526:                                              ; preds = %525, %517, %513
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2)
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %527 = load ptr, ptr %2, align 8, !tbaa !21
  %528 = getelementptr inbounds i8, ptr %527, i64 64
  %529 = load ptr, ptr %528, align 8, !tbaa !22
  %.not298.2 = icmp eq ptr %529, null
  br i1 %.not298.2, label %539, label %530

530:                                              ; preds = %526
  %531 = load i32, ptr %31, align 8, !tbaa !20
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh8ver2edgeE, i64 0, i64 %532
  %534 = load i32, ptr %533, align 4, !tbaa !56
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds ptr, ptr %529, i64 %535
  %537 = load ptr, ptr %536, align 8, !tbaa !22
  %.not299.2 = icmp eq ptr %537, null
  br i1 %.not299.2, label %539, label %538

538:                                              ; preds = %530
  call void @_ZN10tetgenmesh9tsspivot1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2, ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8, ptr noundef nonnull align 8 dereferenceable(12) %10)
  br label %539

539:                                              ; preds = %538, %530, %526
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2)
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %540 = load ptr, ptr %2, align 8, !tbaa !21
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %473, ptr noundef %540)
  %541 = load ptr, ptr %2, align 8, !tbaa !21
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %474, ptr noundef %541)
  %542 = load ptr, ptr %2, align 8, !tbaa !21
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %475, ptr noundef %542)
  %543 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %436, ptr noundef nonnull %5)
  %544 = load ptr, ptr %4, align 8, !tbaa !22
  %545 = load ptr, ptr %544, align 8, !tbaa !21
  %546 = load ptr, ptr %5, align 8, !tbaa !22
  store ptr %545, ptr %546, align 8, !tbaa !21
  %547 = load ptr, ptr %5, align 8, !tbaa !22
  %548 = getelementptr inbounds i8, ptr %547, i64 8
  %549 = trunc nuw nsw i64 %indvars.iv471 to i32
  store i32 %549, ptr %548, align 8, !tbaa !20
  br label %550

550:                                              ; preds = %466, %539
  %indvars.iv.next472 = add nuw nsw i64 %indvars.iv471, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next472, 4
  br i1 %exitcond.not, label %551, label %466, !llvm.loop !58

551:                                              ; preds = %550
  %indvars.iv.next475 = add nuw nsw i64 %indvars.iv474, 1
  %552 = load i64, ptr %184, align 8, !tbaa !35
  %553 = icmp sgt i64 %552, %indvars.iv.next475
  br i1 %553, label %452, label %.preheader340, !llvm.loop !59

554:                                              ; preds = %.lr.ph381, %689
  %indvars.iv478 = phi i64 [ 0, %.lr.ph381 ], [ %indvars.iv.next479, %689 ]
  %555 = load ptr, ptr %447, align 8, !tbaa !37
  %556 = load i32, ptr %448, align 8, !tbaa !38
  %557 = trunc nuw nsw i64 %indvars.iv478 to i32
  %558 = lshr i32 %557, %556
  %559 = zext nneg i32 %558 to i64
  %560 = getelementptr inbounds ptr, ptr %555, i64 %559
  %561 = load ptr, ptr %560, align 8, !tbaa !22
  %562 = load i32, ptr %449, align 4, !tbaa !39
  %563 = and i32 %562, %557
  %564 = load i32, ptr %436, align 8, !tbaa !40
  %565 = mul nsw i32 %563, %564
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds i8, ptr %561, i64 %566
  store ptr %567, ptr %4, align 8, !tbaa !22
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %567, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %568 = load ptr, ptr %11, align 8, !tbaa !21
  %569 = load i32, ptr %450, align 8, !tbaa !20
  %570 = and i32 %569, 3
  %571 = zext nneg i32 %570 to i64
  %572 = getelementptr inbounds ptr, ptr %568, i64 %571
  %573 = load ptr, ptr %572, align 8, !tbaa !22
  %574 = icmp eq ptr %573, null
  br i1 %574, label %575, label %607

575:                                              ; preds = %554
  %576 = load ptr, ptr %4, align 8, !tbaa !22
  %577 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %576)
  br label %578

578:                                              ; preds = %578, %575
  %579 = load i32, ptr %451, align 8, !tbaa !20
  %580 = load ptr, ptr %3, align 8, !tbaa !21
  %581 = sext i32 %579 to i64
  %582 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %581
  %583 = load i32, ptr %582, align 4, !tbaa !56
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds ptr, ptr %580, i64 %584
  %586 = load ptr, ptr %585, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %586, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %587 = load i32, ptr %451, align 8, !tbaa !20
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %581, i64 %588
  %590 = load i32, ptr %589, align 4, !tbaa !56
  store i32 %590, ptr %451, align 8, !tbaa !20
  %591 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %591, label %578, label %592, !llvm.loop !60

592:                                              ; preds = %578
  %593 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %593, label %606, label %594

594:                                              ; preds = %592
  %595 = load i32, ptr %451, align 8, !tbaa !20
  %596 = load ptr, ptr %3, align 8, !tbaa !21
  %597 = and i32 %595, 3
  %598 = zext nneg i32 %597 to i64
  %599 = getelementptr inbounds ptr, ptr %596, i64 %598
  %600 = load ptr, ptr %599, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %600, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %601 = sext i32 %595 to i64
  %602 = load i32, ptr %451, align 8, !tbaa !20
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %601, i64 %603
  %605 = load i32, ptr %604, align 4, !tbaa !56
  store i32 %605, ptr %451, align 8, !tbaa !20
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %606

606:                                              ; preds = %594, %592
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %607

607:                                              ; preds = %606, %554
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %608 = load ptr, ptr %4, align 8, !tbaa !22
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %608)
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %609 = load ptr, ptr %11, align 8, !tbaa !21
  %610 = load i32, ptr %450, align 8, !tbaa !20
  %611 = and i32 %610, 3
  %612 = zext nneg i32 %611 to i64
  %613 = getelementptr inbounds ptr, ptr %609, i64 %612
  %614 = load ptr, ptr %613, align 8, !tbaa !22
  %615 = icmp eq ptr %614, null
  br i1 %615, label %616, label %648

616:                                              ; preds = %607
  %617 = load ptr, ptr %4, align 8, !tbaa !22
  %618 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %617)
  br label %619

619:                                              ; preds = %619, %616
  %620 = load i32, ptr %451, align 8, !tbaa !20
  %621 = load ptr, ptr %3, align 8, !tbaa !21
  %622 = sext i32 %620 to i64
  %623 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %622
  %624 = load i32, ptr %623, align 4, !tbaa !56
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds ptr, ptr %621, i64 %625
  %627 = load ptr, ptr %626, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %627, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %628 = load i32, ptr %451, align 8, !tbaa !20
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %622, i64 %629
  %631 = load i32, ptr %630, align 4, !tbaa !56
  store i32 %631, ptr %451, align 8, !tbaa !20
  %632 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %632, label %619, label %633, !llvm.loop !60

633:                                              ; preds = %619
  %634 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %634, label %647, label %635

635:                                              ; preds = %633
  %636 = load i32, ptr %451, align 8, !tbaa !20
  %637 = load ptr, ptr %3, align 8, !tbaa !21
  %638 = and i32 %636, 3
  %639 = zext nneg i32 %638 to i64
  %640 = getelementptr inbounds ptr, ptr %637, i64 %639
  %641 = load ptr, ptr %640, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %641, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %642 = sext i32 %636 to i64
  %643 = load i32, ptr %451, align 8, !tbaa !20
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %642, i64 %644
  %646 = load i32, ptr %645, align 4, !tbaa !56
  store i32 %646, ptr %451, align 8, !tbaa !20
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %647

647:                                              ; preds = %635, %633
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %648

648:                                              ; preds = %647, %607
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %649 = load ptr, ptr %4, align 8, !tbaa !22
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %649)
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %650 = load ptr, ptr %11, align 8, !tbaa !21
  %651 = load i32, ptr %450, align 8, !tbaa !20
  %652 = and i32 %651, 3
  %653 = zext nneg i32 %652 to i64
  %654 = getelementptr inbounds ptr, ptr %650, i64 %653
  %655 = load ptr, ptr %654, align 8, !tbaa !22
  %656 = icmp eq ptr %655, null
  br i1 %656, label %657, label %689

657:                                              ; preds = %648
  %658 = load ptr, ptr %4, align 8, !tbaa !22
  %659 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %658)
  br label %660

660:                                              ; preds = %660, %657
  %661 = load i32, ptr %451, align 8, !tbaa !20
  %662 = load ptr, ptr %3, align 8, !tbaa !21
  %663 = sext i32 %661 to i64
  %664 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %663
  %665 = load i32, ptr %664, align 4, !tbaa !56
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds ptr, ptr %662, i64 %666
  %668 = load ptr, ptr %667, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %668, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %669 = load i32, ptr %451, align 8, !tbaa !20
  %670 = sext i32 %669 to i64
  %671 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %663, i64 %670
  %672 = load i32, ptr %671, align 4, !tbaa !56
  store i32 %672, ptr %451, align 8, !tbaa !20
  %673 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %673, label %660, label %674, !llvm.loop !60

674:                                              ; preds = %660
  %675 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %675, label %688, label %676

676:                                              ; preds = %674
  %677 = load i32, ptr %451, align 8, !tbaa !20
  %678 = load ptr, ptr %3, align 8, !tbaa !21
  %679 = and i32 %677, 3
  %680 = zext nneg i32 %679 to i64
  %681 = getelementptr inbounds ptr, ptr %678, i64 %680
  %682 = load ptr, ptr %681, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %682, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %683 = sext i32 %677 to i64
  %684 = load i32, ptr %451, align 8, !tbaa !20
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %683, i64 %685
  %687 = load i32, ptr %686, align 4, !tbaa !56
  store i32 %687, ptr %451, align 8, !tbaa !20
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %688

688:                                              ; preds = %676, %674
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %689

689:                                              ; preds = %688, %648
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %690 = load ptr, ptr %4, align 8, !tbaa !22
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %690)
  %indvars.iv.next479 = add nuw nsw i64 %indvars.iv478, 1
  %691 = load i64, ptr %444, align 8, !tbaa !35
  %692 = icmp sgt i64 %691, %indvars.iv.next479
  br i1 %692, label %554, label %._crit_edge382, !llvm.loop !61

._crit_edge382:                                   ; preds = %689, %.preheader340
  %693 = getelementptr inbounds i8, ptr %0, i64 224
  %694 = load ptr, ptr %693, align 8, !tbaa !29
  %695 = getelementptr inbounds i8, ptr %694, i64 32
  %696 = load i64, ptr %695, align 8, !tbaa !35
  %697 = icmp sgt i64 %696, 0
  br i1 %697, label %698, label %799

698:                                              ; preds = %._crit_edge382
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #9
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %14)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #9
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %15)
  %699 = load ptr, ptr %693, align 8, !tbaa !29
  %700 = getelementptr inbounds i8, ptr %699, i64 32
  %701 = load i64, ptr %700, align 8, !tbaa !35
  %702 = icmp sgt i64 %701, 0
  br i1 %702, label %.lr.ph391, label %._crit_edge392

.lr.ph391:                                        ; preds = %698
  %703 = getelementptr inbounds i8, ptr %0, i64 40
  br label %704

704:                                              ; preds = %.lr.ph391, %783
  %indvars.iv482 = phi i64 [ 0, %.lr.ph391 ], [ %indvars.iv.next483, %783 ]
  %705 = phi ptr [ %699, %.lr.ph391 ], [ %787, %783 ]
  %.0247388 = phi i64 [ 0, %.lr.ph391 ], [ %.2249, %783 ]
  %706 = getelementptr inbounds i8, ptr %705, i64 24
  %707 = load ptr, ptr %706, align 8, !tbaa !37
  %708 = getelementptr inbounds i8, ptr %705, i64 8
  %709 = load i32, ptr %708, align 8, !tbaa !38
  %710 = trunc nuw nsw i64 %indvars.iv482 to i32
  %711 = lshr i32 %710, %709
  %712 = zext nneg i32 %711 to i64
  %713 = getelementptr inbounds ptr, ptr %707, i64 %712
  %714 = load ptr, ptr %713, align 8, !tbaa !22
  %715 = getelementptr inbounds i8, ptr %705, i64 12
  %716 = load i32, ptr %715, align 4, !tbaa !39
  %717 = and i32 %716, %710
  %718 = load i32, ptr %705, align 8, !tbaa !40
  %719 = mul nsw i32 %717, %718
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds i8, ptr %714, i64 %720
  store ptr %721, ptr %7, align 8, !tbaa !22
  %722 = icmp eq i64 %indvars.iv482, 0
  br i1 %722, label %723, label %.preheader

723:                                              ; preds = %704
  %724 = load ptr, ptr %17, align 8, !tbaa !5
  %725 = getelementptr inbounds i8, ptr %724, i64 148
  %726 = load i32, ptr %725, align 4, !tbaa !42
  %.not292 = icmp eq i32 %726, 0
  br i1 %.not292, label %.preheader, label %727

727:                                              ; preds = %723
  %728 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %721)
  %729 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %728)
  %730 = load ptr, ptr %7, align 8, !tbaa !22
  %731 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %730)
  %732 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %731)
  %733 = load ptr, ptr %7, align 8, !tbaa !22
  %734 = call noundef ptr @_ZN10tetgenmesh5sapexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %733)
  %735 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %734)
  %736 = load ptr, ptr %7, align 8, !tbaa !22
  %737 = call noundef i32 @_ZN10tetgenmesh9shellmarkERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %736)
  %738 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.452, i32 noundef %729, i32 noundef %732, i32 noundef %735, i32 noundef %737)
  br label %.preheader

.preheader:                                       ; preds = %723, %727, %704
  br label %739

739:                                              ; preds = %.preheader, %780
  %.2244387 = phi i32 [ %782, %780 ], [ 0, %.preheader ]
  %.1248386 = phi i64 [ %.2249, %780 ], [ %.0247388, %.preheader ]
  %740 = load ptr, ptr %7, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %740, ptr noundef nonnull align 8 dereferenceable(12) %14)
  %741 = load ptr, ptr %7, align 8, !tbaa !22
  call void @_ZN10tetgenmesh7sspivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %741, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %742 = load ptr, ptr %14, align 8, !tbaa !53
  %.not293 = icmp eq ptr %742, null
  br i1 %.not293, label %761, label %743

743:                                              ; preds = %739
  %744 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %14)
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %745 = load ptr, ptr %6, align 8, !tbaa !53
  %746 = load ptr, ptr %7, align 8, !tbaa !22
  %747 = load ptr, ptr %746, align 8, !tbaa !53
  %748 = icmp eq ptr %745, %747
  br i1 %748, label %._crit_edge385, label %.lr.ph384

.lr.ph384:                                        ; preds = %743, %.lr.ph384
  %749 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %750 = load ptr, ptr %6, align 8, !tbaa !53
  %751 = load ptr, ptr %7, align 8, !tbaa !22
  %752 = load ptr, ptr %751, align 8, !tbaa !53
  %753 = icmp eq ptr %750, %752
  br i1 %753, label %._crit_edge385, label %.lr.ph384, !llvm.loop !62

._crit_edge385:                                   ; preds = %.lr.ph384, %743
  %754 = load ptr, ptr %15, align 8, !tbaa !53
  %755 = load ptr, ptr %14, align 8, !tbaa !53
  %.not296 = icmp eq ptr %754, %755
  br i1 %.not296, label %757, label %756

756:                                              ; preds = %._crit_edge385
  call void @_ZN10tetgenmesh6sbond1ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %14)
  br label %758

757:                                              ; preds = %._crit_edge385
  call void @_ZN10tetgenmesh9sdissolveERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %14)
  br label %758

758:                                              ; preds = %757, %756
  %759 = load ptr, ptr %8, align 8, !tbaa !53
  %.not297 = icmp eq ptr %759, null
  br i1 %.not297, label %780, label %760

760:                                              ; preds = %758
  call void @_ZN10tetgenmesh6ssbondERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %14, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %780

761:                                              ; preds = %739
  %762 = load ptr, ptr %8, align 8, !tbaa !53
  %.not294 = icmp eq ptr %762, null
  br i1 %.not294, label %780, label %763

763:                                              ; preds = %761
  %764 = icmp eq i64 %.1248386, 0
  br i1 %764, label %765, label %776

765:                                              ; preds = %763
  %766 = load ptr, ptr %17, align 8, !tbaa !5
  %767 = getelementptr inbounds i8, ptr %766, i64 148
  %768 = load i32, ptr %767, align 4, !tbaa !42
  %.not295 = icmp eq i32 %768, 0
  br i1 %.not295, label %776, label %769

769:                                              ; preds = %765
  %770 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %771 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %770)
  %772 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %773 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %772)
  %774 = call noundef i32 @_ZN10tetgenmesh9shellmarkERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %775 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.453, i32 noundef %771, i32 noundef %773, i32 noundef %774)
  %.pre523 = load ptr, ptr %8, align 8, !tbaa !53
  br label %776

776:                                              ; preds = %765, %769, %763
  %777 = phi ptr [ %762, %765 ], [ %.pre523, %769 ], [ %762, %763 ]
  %778 = load ptr, ptr %421, align 8, !tbaa !52
  call void @_ZN10tetgenmesh16shellfacedeallocEPNS_10memorypoolEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %778, ptr noundef %777)
  %779 = add nsw i64 %.1248386, 1
  br label %780

780:                                              ; preds = %761, %776, %758, %760
  %.2249 = phi i64 [ %.1248386, %760 ], [ %.1248386, %758 ], [ %779, %776 ], [ %.1248386, %761 ]
  %781 = load ptr, ptr %7, align 8, !tbaa !22
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %781)
  %782 = add nuw nsw i32 %.2244387, 1
  %exitcond481.not = icmp eq i32 %782, 3
  br i1 %exitcond481.not, label %783, label %739, !llvm.loop !63

783:                                              ; preds = %780
  %784 = load ptr, ptr %703, align 8, !tbaa !64
  %785 = load ptr, ptr %7, align 8, !tbaa !22
  %786 = load ptr, ptr %785, align 8, !tbaa !53
  call void @_ZN10tetgenmesh16shellfacedeallocEPNS_10memorypoolEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %784, ptr noundef %786)
  %indvars.iv.next483 = add nuw nsw i64 %indvars.iv482, 1
  %787 = load ptr, ptr %693, align 8, !tbaa !29
  %788 = getelementptr inbounds i8, ptr %787, i64 32
  %789 = load i64, ptr %788, align 8, !tbaa !35
  %790 = icmp sgt i64 %789, %indvars.iv.next483
  br i1 %790, label %704, label %._crit_edge392, !llvm.loop !65

._crit_edge392:                                   ; preds = %783, %698
  %791 = phi ptr [ %699, %698 ], [ %787, %783 ]
  %.0247.lcssa = phi i64 [ 0, %698 ], [ %.2249, %783 ]
  %.lcssa349 = phi i64 [ %701, %698 ], [ %789, %783 ]
  %792 = load ptr, ptr %17, align 8, !tbaa !5
  %793 = getelementptr inbounds i8, ptr %792, i64 148
  %794 = load i32, ptr %793, align 4, !tbaa !42
  %.not285 = icmp eq i32 %794, 0
  br i1 %.not285, label %797, label %795

795:                                              ; preds = %._crit_edge392
  %796 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.454, i64 noundef %.lcssa349)
  %.pre524 = load ptr, ptr %693, align 8, !tbaa !29
  br label %797

797:                                              ; preds = %795, %._crit_edge392
  %798 = phi ptr [ %.pre524, %795 ], [ %791, %._crit_edge392 ]
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %798)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #9
  br label %799

799:                                              ; preds = %797, %._crit_edge382
  %.3250 = phi i64 [ %.0247.lcssa, %797 ], [ 0, %._crit_edge382 ]
  %800 = getelementptr inbounds i8, ptr %0, i64 216
  %801 = load ptr, ptr %800, align 8, !tbaa !54
  %802 = getelementptr inbounds i8, ptr %801, i64 32
  %803 = load i64, ptr %802, align 8, !tbaa !35
  %804 = icmp sgt i64 %803, 0
  br i1 %804, label %.lr.ph396, label %852

.lr.ph396:                                        ; preds = %799, %847
  %indvars.iv485 = phi i64 [ %indvars.iv.next486, %847 ], [ 0, %799 ]
  %805 = phi ptr [ %848, %847 ], [ %801, %799 ]
  %.4251394 = phi i64 [ %.5252, %847 ], [ %.3250, %799 ]
  %806 = getelementptr inbounds i8, ptr %805, i64 24
  %807 = load ptr, ptr %806, align 8, !tbaa !37
  %808 = getelementptr inbounds i8, ptr %805, i64 8
  %809 = load i32, ptr %808, align 8, !tbaa !38
  %810 = trunc nuw nsw i64 %indvars.iv485 to i32
  %811 = lshr i32 %810, %809
  %812 = zext nneg i32 %811 to i64
  %813 = getelementptr inbounds ptr, ptr %807, i64 %812
  %814 = load ptr, ptr %813, align 8, !tbaa !22
  %815 = getelementptr inbounds i8, ptr %805, i64 12
  %816 = load i32, ptr %815, align 4, !tbaa !39
  %817 = and i32 %816, %810
  %818 = load i32, ptr %805, align 8, !tbaa !40
  %819 = mul nsw i32 %817, %818
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds i8, ptr %814, i64 %820
  store ptr %821, ptr %13, align 8, !tbaa !22
  %822 = load ptr, ptr %821, align 8, !tbaa !53
  %.not289 = icmp eq ptr %822, null
  br i1 %.not289, label %847, label %823

823:                                              ; preds = %.lr.ph396
  %824 = getelementptr inbounds i8, ptr %822, i64 24
  %825 = load ptr, ptr %824, align 8, !tbaa !22
  %.not290 = icmp eq ptr %825, null
  br i1 %.not290, label %847, label %826

826:                                              ; preds = %823
  call void @_ZN10tetgenmesh9sstpivot1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %821, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %827 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %827, label %828, label %847

828:                                              ; preds = %826
  %829 = load ptr, ptr %17, align 8, !tbaa !5
  %830 = getelementptr inbounds i8, ptr %829, i64 148
  %831 = load i32, ptr %830, align 4, !tbaa !42
  %.not291 = icmp eq i32 %831, 0
  br i1 %.not291, label %842, label %832

832:                                              ; preds = %828
  %833 = load ptr, ptr %13, align 8, !tbaa !22
  %834 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %833)
  %835 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %834)
  %836 = load ptr, ptr %13, align 8, !tbaa !22
  %837 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %836)
  %838 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %837)
  %839 = load ptr, ptr %13, align 8, !tbaa !22
  %840 = call noundef i32 @_ZN10tetgenmesh9shellmarkERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %839)
  %841 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.453, i32 noundef %835, i32 noundef %838, i32 noundef %840)
  br label %842

842:                                              ; preds = %832, %828
  %843 = load ptr, ptr %421, align 8, !tbaa !52
  %844 = load ptr, ptr %13, align 8, !tbaa !22
  %845 = load ptr, ptr %844, align 8, !tbaa !53
  call void @_ZN10tetgenmesh16shellfacedeallocEPNS_10memorypoolEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %843, ptr noundef %845)
  %846 = add nsw i64 %.4251394, 1
  br label %847

847:                                              ; preds = %.lr.ph396, %823, %842, %826
  %.5252 = phi i64 [ %846, %842 ], [ %.4251394, %826 ], [ %.4251394, %823 ], [ %.4251394, %.lr.ph396 ]
  %indvars.iv.next486 = add nuw nsw i64 %indvars.iv485, 1
  %848 = load ptr, ptr %800, align 8, !tbaa !54
  %849 = getelementptr inbounds i8, ptr %848, i64 32
  %850 = load i64, ptr %849, align 8, !tbaa !35
  %851 = icmp sgt i64 %850, %indvars.iv.next486
  br i1 %851, label %.lr.ph396, label %._crit_edge397, !llvm.loop !66

._crit_edge397:                                   ; preds = %847
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %848)
  br label %852

852:                                              ; preds = %._crit_edge397, %799
  %.6253 = phi i64 [ %.5252, %._crit_edge397 ], [ %.3250, %799 ]
  %853 = icmp sgt i64 %.6253, 0
  br i1 %853, label %854, label %860

854:                                              ; preds = %852
  %855 = load ptr, ptr %17, align 8, !tbaa !5
  %856 = getelementptr inbounds i8, ptr %855, i64 148
  %857 = load i32, ptr %856, align 4, !tbaa !42
  %.not286 = icmp eq i32 %857, 0
  br i1 %.not286, label %860, label %858

858:                                              ; preds = %854
  %859 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.455, i64 noundef %.6253)
  br label %860

860:                                              ; preds = %854, %858, %852
  %861 = getelementptr inbounds i8, ptr %0, i64 168
  %862 = load ptr, ptr %861, align 8, !tbaa !45
  %863 = getelementptr inbounds i8, ptr %862, i64 32
  %864 = load i64, ptr %863, align 8, !tbaa !35
  %865 = icmp sgt i64 %864, 0
  br i1 %865, label %.lr.ph403, label %950

.lr.ph403:                                        ; preds = %860
  %866 = getelementptr inbounds i8, ptr %0, i64 592
  %867 = load i64, ptr %866, align 8, !tbaa !67
  %868 = getelementptr inbounds i8, ptr %0, i64 608
  %869 = getelementptr inbounds i8, ptr %0, i64 576
  br label %870

870:                                              ; preds = %.lr.ph403, %924
  %indvars.iv488 = phi i64 [ 0, %.lr.ph403 ], [ %indvars.iv.next489, %924 ]
  %871 = phi ptr [ %862, %.lr.ph403 ], [ %925, %924 ]
  %.0239400 = phi i64 [ 0, %.lr.ph403 ], [ %.2241, %924 ]
  %872 = getelementptr inbounds i8, ptr %871, i64 24
  %873 = load ptr, ptr %872, align 8, !tbaa !37
  %874 = getelementptr inbounds i8, ptr %871, i64 8
  %875 = load i32, ptr %874, align 8, !tbaa !38
  %876 = trunc nuw nsw i64 %indvars.iv488 to i32
  %877 = lshr i32 %876, %875
  %878 = zext nneg i32 %877 to i64
  %879 = getelementptr inbounds ptr, ptr %873, i64 %878
  %880 = load ptr, ptr %879, align 8, !tbaa !22
  %881 = getelementptr inbounds i8, ptr %871, i64 12
  %882 = load i32, ptr %881, align 4, !tbaa !39
  %883 = and i32 %882, %876
  %884 = load i32, ptr %871, align 8, !tbaa !40
  %885 = mul nsw i32 %883, %884
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds i8, ptr %880, i64 %886
  store ptr %887, ptr %9, align 8, !tbaa !22
  %888 = load ptr, ptr %887, align 8, !tbaa !22
  %889 = call noundef ptr @_ZN10tetgenmesh9point2tetEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %888)
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %889, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %890 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %890, label %891, label %924

891:                                              ; preds = %870
  %892 = load ptr, ptr %9, align 8, !tbaa !22
  %893 = load ptr, ptr %892, align 8, !tbaa !22
  %894 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %893)
  %895 = load ptr, ptr %0, align 8, !tbaa !25
  %896 = getelementptr inbounds i8, ptr %895, i64 64
  %897 = load i32, ptr %896, align 8, !tbaa !48
  %898 = load i32, ptr %895, align 8, !tbaa !49
  %.not288 = icmp eq i32 %898, 0
  %.neg = sext i1 %.not288 to i32
  %899 = add i32 %897, %.neg
  %900 = icmp sgt i32 %894, %899
  br i1 %900, label %901, label %919

901:                                              ; preds = %891
  %902 = load ptr, ptr %9, align 8, !tbaa !22
  %903 = load ptr, ptr %902, align 8, !tbaa !22
  %904 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %903)
  %905 = icmp eq i32 %904, 6
  br i1 %905, label %911, label %906

906:                                              ; preds = %901
  %907 = load ptr, ptr %9, align 8, !tbaa !22
  %908 = load ptr, ptr %907, align 8, !tbaa !22
  %909 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %908)
  %910 = icmp eq i32 %909, 7
  %.548.v = select i1 %910, i64 616, i64 624
  %.548 = getelementptr inbounds i8, ptr %0, i64 %.548.v
  br label %911

911:                                              ; preds = %906, %901
  %.sink546 = phi ptr [ %868, %901 ], [ %.548, %906 ]
  %912 = load i64, ptr %.sink546, align 8, !tbaa !68
  %913 = add nsw i64 %912, -1
  store i64 %913, ptr %.sink546, align 8, !tbaa !68
  %914 = add nsw i64 %.0239400, 1
  %915 = load i64, ptr %869, align 8, !tbaa !69
  %916 = icmp sgt i64 %915, 0
  br i1 %916, label %917, label %919

917:                                              ; preds = %911
  %918 = add nuw nsw i64 %915, 1
  store i64 %918, ptr %869, align 8, !tbaa !69
  br label %919

919:                                              ; preds = %911, %917, %891
  %.1240 = phi i64 [ %914, %917 ], [ %914, %911 ], [ %.0239400, %891 ]
  %920 = load ptr, ptr %9, align 8, !tbaa !22
  %921 = load ptr, ptr %920, align 8, !tbaa !22
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %921, i32 noundef 0)
  %922 = load i64, ptr %866, align 8, !tbaa !67
  %923 = add nsw i64 %922, 1
  store i64 %923, ptr %866, align 8, !tbaa !67
  br label %924

924:                                              ; preds = %870, %919
  %.2241 = phi i64 [ %.1240, %919 ], [ %.0239400, %870 ]
  %indvars.iv.next489 = add nuw nsw i64 %indvars.iv488, 1
  %925 = load ptr, ptr %861, align 8, !tbaa !45
  %926 = getelementptr inbounds i8, ptr %925, i64 32
  %927 = load i64, ptr %926, align 8, !tbaa !35
  %928 = icmp sgt i64 %927, %indvars.iv.next489
  br i1 %928, label %870, label %._crit_edge404, !llvm.loop !70

._crit_edge404:                                   ; preds = %924
  %929 = load ptr, ptr %17, align 8, !tbaa !5
  %930 = getelementptr inbounds i8, ptr %929, i64 148
  %931 = load i32, ptr %930, align 4, !tbaa !42
  %.not287 = icmp eq i32 %931, 0
  br i1 %.not287, label %948, label %932

932:                                              ; preds = %._crit_edge404
  %933 = load i64, ptr %866, align 8, !tbaa !67
  %934 = icmp sgt i64 %933, %867
  br i1 %934, label %935, label %948

935:                                              ; preds = %932
  %936 = icmp sgt i64 %.2241, 0
  br i1 %936, label %937, label %945

937:                                              ; preds = %935
  %938 = add nsw i64 %.2241, %867
  %939 = icmp sgt i64 %933, %938
  br i1 %939, label %940, label %943

940:                                              ; preds = %937
  %941 = sub i64 %933, %938
  %942 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.456, i64 noundef %941)
  br label %943

943:                                              ; preds = %940, %937
  %944 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.457, i64 noundef %.2241)
  br label %948

945:                                              ; preds = %935
  %946 = sub nsw i64 %933, %867
  %947 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.456, i64 noundef %946)
  br label %948

948:                                              ; preds = %932, %945, %943, %._crit_edge404
  %949 = load ptr, ptr %861, align 8, !tbaa !45
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %949)
  br label %950

950:                                              ; preds = %948, %860
  %951 = load i64, ptr %444, align 8, !tbaa !35
  %952 = getelementptr inbounds i8, ptr %27, i64 32
  %953 = load i64, ptr %952, align 8, !tbaa !35
  %954 = sub i64 %951, %953
  %955 = getelementptr inbounds i8, ptr %0, i64 552
  %956 = load i64, ptr %955, align 8, !tbaa !71
  %957 = add nsw i64 %954, %956
  store i64 %957, ptr %955, align 8, !tbaa !71
  %958 = load i64, ptr %184, align 8, !tbaa !35
  %959 = icmp sgt i64 %958, 0
  br i1 %959, label %.lr.ph408, label %._crit_edge409

.lr.ph408:                                        ; preds = %950
  %960 = getelementptr inbounds i8, ptr %25, i64 24
  %961 = getelementptr inbounds i8, ptr %25, i64 8
  %962 = getelementptr inbounds i8, ptr %25, i64 12
  br label %963

963:                                              ; preds = %.lr.ph408, %963
  %indvars.iv491 = phi i64 [ 0, %.lr.ph408 ], [ %indvars.iv.next492, %963 ]
  %964 = load ptr, ptr %960, align 8, !tbaa !37
  %965 = load i32, ptr %961, align 8, !tbaa !38
  %966 = trunc nuw nsw i64 %indvars.iv491 to i32
  %967 = lshr i32 %966, %965
  %968 = zext nneg i32 %967 to i64
  %969 = getelementptr inbounds ptr, ptr %964, i64 %968
  %970 = load ptr, ptr %969, align 8, !tbaa !22
  %971 = load i32, ptr %962, align 4, !tbaa !39
  %972 = and i32 %971, %966
  %973 = load i32, ptr %25, align 8, !tbaa !40
  %974 = mul nsw i32 %972, %973
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds i8, ptr %970, i64 %975
  store ptr %976, ptr %4, align 8, !tbaa !22
  %977 = load ptr, ptr %976, align 8, !tbaa !21
  call void @_ZN10tetgenmesh18tetrahedrondeallocEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %977)
  %indvars.iv.next492 = add nuw nsw i64 %indvars.iv491, 1
  %978 = load i64, ptr %184, align 8, !tbaa !35
  %979 = icmp sgt i64 %978, %indvars.iv.next492
  br i1 %979, label %963, label %._crit_edge409, !llvm.loop !72

._crit_edge409:                                   ; preds = %963, %950
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %25)
  %980 = load i64, ptr %952, align 8, !tbaa !35
  %981 = icmp sgt i64 %980, 0
  br i1 %981, label %.lr.ph412, label %.loopexit538

.lr.ph412:                                        ; preds = %._crit_edge409
  %982 = getelementptr inbounds i8, ptr %27, i64 24
  %983 = getelementptr inbounds i8, ptr %27, i64 8
  %984 = getelementptr inbounds i8, ptr %27, i64 12
  br label %985

985:                                              ; preds = %.lr.ph412, %985
  %indvars.iv494 = phi i64 [ 0, %.lr.ph412 ], [ %indvars.iv.next495, %985 ]
  %986 = load ptr, ptr %982, align 8, !tbaa !37
  %987 = load i32, ptr %983, align 8, !tbaa !38
  %988 = trunc nuw nsw i64 %indvars.iv494 to i32
  %989 = lshr i32 %988, %987
  %990 = zext nneg i32 %989 to i64
  %991 = getelementptr inbounds ptr, ptr %986, i64 %990
  %992 = load ptr, ptr %991, align 8, !tbaa !22
  %993 = load i32, ptr %984, align 4, !tbaa !39
  %994 = and i32 %993, %988
  %995 = load i32, ptr %27, align 8, !tbaa !40
  %996 = mul nsw i32 %994, %995
  %997 = sext i32 %996 to i64
  %998 = getelementptr inbounds i8, ptr %992, i64 %997
  store ptr %998, ptr %4, align 8, !tbaa !22
  %999 = load ptr, ptr %998, align 8, !tbaa !21
  call void @_ZN10tetgenmesh18tetrahedrondeallocEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %999)
  %indvars.iv.next495 = add nuw nsw i64 %indvars.iv494, 1
  %1000 = load i64, ptr %952, align 8, !tbaa !35
  %1001 = icmp sgt i64 %1000, %indvars.iv.next495
  br i1 %1001, label %985, label %.loopexit538, !llvm.loop !73

.loopexit538:                                     ; preds = %985, %._crit_edge409
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %27)
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %436) #9
  call void @_ZdlPvm(ptr noundef nonnull %436, i64 noundef 48) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #9
  %.pre525 = load ptr, ptr %17, align 8, !tbaa !5
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre525, i64 68
  %.pre526 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !18
  %.not300 = icmp eq i32 %.pre526, 0
  br i1 %.not300, label %.thread, label %.thread536

.thread536:                                       ; preds = %._crit_edge370, %.loopexit538
  %1002 = load i64, ptr %184, align 8, !tbaa !35
  %1003 = icmp sgt i64 %1002, 0
  br i1 %1003, label %.lr.ph416, label %.thread

.lr.ph416:                                        ; preds = %.thread536
  %1004 = getelementptr inbounds i8, ptr %0, i64 332
  %1005 = load i32, ptr %1004, align 4, !tbaa !74
  %1006 = add nsw i32 %1005, -1
  %1007 = getelementptr inbounds i8, ptr %25, i64 24
  %1008 = getelementptr inbounds i8, ptr %25, i64 8
  %1009 = getelementptr inbounds i8, ptr %25, i64 12
  br label %1010

1010:                                             ; preds = %.lr.ph416, %1010
  %indvars.iv497 = phi i64 [ 0, %.lr.ph416 ], [ %indvars.iv.next498, %1010 ]
  %1011 = load ptr, ptr %1007, align 8, !tbaa !37
  %1012 = load i32, ptr %1008, align 8, !tbaa !38
  %1013 = trunc nuw nsw i64 %indvars.iv497 to i32
  %1014 = lshr i32 %1013, %1012
  %1015 = zext nneg i32 %1014 to i64
  %1016 = getelementptr inbounds ptr, ptr %1011, i64 %1015
  %1017 = load ptr, ptr %1016, align 8, !tbaa !22
  %1018 = load i32, ptr %1009, align 4, !tbaa !39
  %1019 = and i32 %1018, %1013
  %1020 = load i32, ptr %25, align 8, !tbaa !40
  %1021 = mul nsw i32 %1019, %1020
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds i8, ptr %1017, i64 %1022
  store ptr %1023, ptr %4, align 8, !tbaa !22
  %1024 = load ptr, ptr %1023, align 8, !tbaa !21
  call void @_ZN10tetgenmesh16setelemattributeEPPPdid(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1024, i32 noundef %1006, double noundef -1.000000e+00)
  %indvars.iv.next498 = add nuw nsw i64 %indvars.iv497, 1
  %1025 = load i64, ptr %184, align 8, !tbaa !35
  %1026 = icmp sgt i64 %1025, %indvars.iv.next498
  br i1 %1026, label %1010, label %._crit_edge417, !llvm.loop !75

._crit_edge417:                                   ; preds = %1010
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %25)
  %1027 = getelementptr inbounds i8, ptr %27, i64 32
  %1028 = load i64, ptr %1027, align 8, !tbaa !35
  %1029 = icmp sgt i64 %1028, 0
  br i1 %1029, label %.lr.ph420, label %._crit_edge421

.lr.ph420:                                        ; preds = %._crit_edge417
  %1030 = getelementptr inbounds i8, ptr %27, i64 24
  %1031 = getelementptr inbounds i8, ptr %27, i64 8
  %1032 = getelementptr inbounds i8, ptr %27, i64 12
  br label %1033

1033:                                             ; preds = %.lr.ph420, %1033
  %indvars.iv500 = phi i64 [ 0, %.lr.ph420 ], [ %indvars.iv.next501, %1033 ]
  %1034 = load ptr, ptr %1030, align 8, !tbaa !37
  %1035 = load i32, ptr %1031, align 8, !tbaa !38
  %1036 = trunc nuw nsw i64 %indvars.iv500 to i32
  %1037 = lshr i32 %1036, %1035
  %1038 = zext nneg i32 %1037 to i64
  %1039 = getelementptr inbounds ptr, ptr %1034, i64 %1038
  %1040 = load ptr, ptr %1039, align 8, !tbaa !22
  %1041 = load i32, ptr %1032, align 4, !tbaa !39
  %1042 = and i32 %1041, %1036
  %1043 = load i32, ptr %27, align 8, !tbaa !40
  %1044 = mul nsw i32 %1042, %1043
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds i8, ptr %1040, i64 %1045
  store ptr %1046, ptr %4, align 8, !tbaa !22
  call void @_ZN10tetgenmesh8uninfectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %1046)
  %indvars.iv.next501 = add nuw nsw i64 %indvars.iv500, 1
  %1047 = load i64, ptr %1027, align 8, !tbaa !35
  %1048 = icmp sgt i64 %1047, %indvars.iv.next501
  br i1 %1048, label %1033, label %._crit_edge421, !llvm.loop !76

._crit_edge421:                                   ; preds = %1033, %._crit_edge417
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %27)
  %1049 = getelementptr inbounds i8, ptr %0, i64 224
  %1050 = load ptr, ptr %1049, align 8, !tbaa !29
  %1051 = getelementptr inbounds i8, ptr %1050, i64 32
  %1052 = load i64, ptr %1051, align 8, !tbaa !35
  %1053 = icmp sgt i64 %1052, 0
  br i1 %1053, label %.lr.ph423, label %1075

.lr.ph423:                                        ; preds = %._crit_edge421, %.lr.ph423
  %indvars.iv503 = phi i64 [ %indvars.iv.next504, %.lr.ph423 ], [ 0, %._crit_edge421 ]
  %1054 = phi ptr [ %1071, %.lr.ph423 ], [ %1050, %._crit_edge421 ]
  %1055 = getelementptr inbounds i8, ptr %1054, i64 24
  %1056 = load ptr, ptr %1055, align 8, !tbaa !37
  %1057 = getelementptr inbounds i8, ptr %1054, i64 8
  %1058 = load i32, ptr %1057, align 8, !tbaa !38
  %1059 = trunc nuw nsw i64 %indvars.iv503 to i32
  %1060 = lshr i32 %1059, %1058
  %1061 = zext nneg i32 %1060 to i64
  %1062 = getelementptr inbounds ptr, ptr %1056, i64 %1061
  %1063 = load ptr, ptr %1062, align 8, !tbaa !22
  %1064 = getelementptr inbounds i8, ptr %1054, i64 12
  %1065 = load i32, ptr %1064, align 4, !tbaa !39
  %1066 = and i32 %1065, %1059
  %1067 = load i32, ptr %1054, align 8, !tbaa !40
  %1068 = mul nsw i32 %1066, %1067
  %1069 = sext i32 %1068 to i64
  %1070 = getelementptr inbounds i8, ptr %1063, i64 %1069
  store ptr %1070, ptr %7, align 8, !tbaa !22
  call void @_ZN10tetgenmesh9suninfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %1070)
  %indvars.iv.next504 = add nuw nsw i64 %indvars.iv503, 1
  %1071 = load ptr, ptr %1049, align 8, !tbaa !29
  %1072 = getelementptr inbounds i8, ptr %1071, i64 32
  %1073 = load i64, ptr %1072, align 8, !tbaa !35
  %1074 = icmp sgt i64 %1073, %indvars.iv.next504
  br i1 %1074, label %.lr.ph423, label %._crit_edge424, !llvm.loop !77

._crit_edge424:                                   ; preds = %.lr.ph423
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1071)
  br label %1075

1075:                                             ; preds = %._crit_edge424, %._crit_edge421
  %1076 = getelementptr inbounds i8, ptr %0, i64 168
  %1077 = load ptr, ptr %1076, align 8, !tbaa !45
  %1078 = getelementptr inbounds i8, ptr %1077, i64 32
  %1079 = load i64, ptr %1078, align 8, !tbaa !35
  %1080 = icmp sgt i64 %1079, 0
  br i1 %1080, label %1081, label %.thread

1081:                                             ; preds = %1075
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1077)
  br label %.thread

.thread:                                          ; preds = %417, %1075, %1081, %.thread536, %.loopexit538
  %1082 = load ptr, ptr %17, align 8, !tbaa !5
  %1083 = getelementptr inbounds i8, ptr %1082, i64 52
  %1084 = load i32, ptr %1083, align 4, !tbaa !31
  %.not301 = icmp eq i32 %1084, 0
  br i1 %.not301, label %1350, label %1085

1085:                                             ; preds = %.thread
  %1086 = getelementptr inbounds i8, ptr %1082, i64 144
  %1087 = load i32, ptr %1086, align 8, !tbaa !15
  %.not302 = icmp eq i32 %1087, 0
  br i1 %.not302, label %1088, label %1090

1088:                                             ; preds = %1085
  %1089 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.458)
  br label %1090

1090:                                             ; preds = %1088, %1085
  %1091 = getelementptr inbounds i8, ptr %0, i64 332
  %1092 = load i32, ptr %1091, align 4, !tbaa !74
  %1093 = add nsw i32 %1092, -1
  %1094 = load ptr, ptr %0, align 8, !tbaa !25
  %1095 = getelementptr inbounds i8, ptr %1094, i64 192
  %1096 = load i32, ptr %1095, align 8, !tbaa !32
  %1097 = icmp sgt i32 %1096, 0
  br i1 %1097, label %.lr.ph434, label %.loopexit

.lr.ph434:                                        ; preds = %1090
  %1098 = getelementptr inbounds i8, ptr %25, i64 24
  %1099 = getelementptr inbounds i8, ptr %25, i64 8
  %1100 = getelementptr inbounds i8, ptr %25, i64 12
  %1101 = getelementptr inbounds i8, ptr %3, i64 8
  br label %1102

1102:                                             ; preds = %.lr.ph434, %1222
  %1103 = phi ptr [ %1094, %.lr.ph434 ], [ %1223, %1222 ]
  %indvars.iv513 = phi i64 [ 0, %.lr.ph434 ], [ %indvars.iv.next514, %1222 ]
  %.0226433 = phi i32 [ 0, %.lr.ph434 ], [ %.1, %1222 ]
  %.0228432 = phi i32 [ 0, %.lr.ph434 ], [ %.2230, %1222 ]
  %1104 = udiv i64 %indvars.iv513, 5
  %1105 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %.0, i64 %1104
  %1106 = load ptr, ptr %1105, align 8, !tbaa !21
  %.not315 = icmp eq ptr %1106, null
  br i1 %.not315, label %1222, label %1107

1107:                                             ; preds = %1102
  %1108 = getelementptr inbounds i8, ptr %1103, i64 184
  %1109 = load ptr, ptr %1108, align 8, !tbaa !33
  %1110 = getelementptr inbounds double, ptr %1109, i64 %indvars.iv513
  %1111 = getelementptr inbounds i8, ptr %1110, i64 24
  %1112 = load double, ptr %1111, align 8, !tbaa !78
  %1113 = fptosi double %1112 to i32
  %spec.select = call i32 @llvm.smax.i32(i32 %.0228432, i32 %1113)
  %1114 = getelementptr inbounds i8, ptr %1110, i64 32
  %1115 = load double, ptr %1114, align 8, !tbaa !78
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %25)
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %1105)
  %1116 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %25, ptr noundef nonnull %4)
  %1117 = load ptr, ptr %4, align 8, !tbaa !22
  %1118 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1117, ptr noundef nonnull align 8 dereferenceable(12) %1105)
  %1119 = load i64, ptr %184, align 8, !tbaa !35
  %1120 = icmp sgt i64 %1119, 0
  br i1 %1120, label %.lr.ph429, label %._crit_edge430

.lr.ph429:                                        ; preds = %1107
  %1121 = sitofp i32 %1113 to double
  br label %1122

1122:                                             ; preds = %.lr.ph429, %1218
  %indvars.iv510 = phi i64 [ 0, %.lr.ph429 ], [ %indvars.iv.next511, %1218 ]
  %1123 = load ptr, ptr %1098, align 8, !tbaa !37
  %1124 = load i32, ptr %1099, align 8, !tbaa !38
  %1125 = trunc nuw nsw i64 %indvars.iv510 to i32
  %1126 = lshr i32 %1125, %1124
  %1127 = zext nneg i32 %1126 to i64
  %1128 = getelementptr inbounds ptr, ptr %1123, i64 %1127
  %1129 = load ptr, ptr %1128, align 8, !tbaa !22
  %1130 = load i32, ptr %1100, align 4, !tbaa !39
  %1131 = and i32 %1130, %1125
  %1132 = load i32, ptr %25, align 8, !tbaa !40
  %1133 = mul nsw i32 %1131, %1132
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds i8, ptr %1129, i64 %1134
  store ptr %1135, ptr %4, align 8, !tbaa !22
  %1136 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %2, ptr noundef nonnull align 8 dereferenceable(12) %1135)
  %1137 = load ptr, ptr %2, align 8, !tbaa !21
  call void @_ZN10tetgenmesh16setelemattributeEPPPdid(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1137, i32 noundef %1093, double noundef %1121)
  %1138 = load ptr, ptr %17, align 8, !tbaa !5
  %1139 = getelementptr inbounds i8, ptr %1138, i64 44
  %1140 = load i32, ptr %1139, align 4, !tbaa !79
  %.not316 = icmp eq i32 %1140, 0
  br i1 %.not316, label %1143, label %1141

1141:                                             ; preds = %1122
  %1142 = load ptr, ptr %2, align 8, !tbaa !21
  call void @_ZN10tetgenmesh14setvolumeboundEPPPdd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1142, double noundef %1115)
  br label %1143

1143:                                             ; preds = %1141, %1122
  %1144 = load ptr, ptr %2, align 8, !tbaa !21
  %1145 = load ptr, ptr %1144, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1145, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %1146 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %1146, label %1161, label %1147

1147:                                             ; preds = %1143
  %1148 = load ptr, ptr %3, align 8, !tbaa !21
  %1149 = getelementptr inbounds i8, ptr %1148, i64 72
  %1150 = load ptr, ptr %1149, align 8, !tbaa !22
  %.not317 = icmp eq ptr %1150, null
  br i1 %.not317, label %1157, label %1151

1151:                                             ; preds = %1147
  %1152 = load i32, ptr %1101, align 8, !tbaa !20
  %1153 = and i32 %1152, 3
  %1154 = zext nneg i32 %1153 to i64
  %1155 = getelementptr inbounds ptr, ptr %1150, i64 %1154
  %1156 = load ptr, ptr %1155, align 8, !tbaa !22
  %.not318 = icmp eq ptr %1156, null
  br i1 %.not318, label %1157, label %1161

1157:                                             ; preds = %1151, %1147
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %1158 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %25, ptr noundef nonnull %4)
  %1159 = load ptr, ptr %4, align 8, !tbaa !22
  %1160 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1159, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %1161

1161:                                             ; preds = %1143, %1157, %1151
  %1162 = load ptr, ptr %2, align 8, !tbaa !21
  %1163 = getelementptr inbounds i8, ptr %1162, i64 8
  %1164 = load ptr, ptr %1163, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1164, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %1165 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %1165, label %1180, label %1166

1166:                                             ; preds = %1161
  %1167 = load ptr, ptr %3, align 8, !tbaa !21
  %1168 = getelementptr inbounds i8, ptr %1167, i64 72
  %1169 = load ptr, ptr %1168, align 8, !tbaa !22
  %.not317.1 = icmp eq ptr %1169, null
  br i1 %.not317.1, label %1176, label %1170

1170:                                             ; preds = %1166
  %1171 = load i32, ptr %1101, align 8, !tbaa !20
  %1172 = and i32 %1171, 3
  %1173 = zext nneg i32 %1172 to i64
  %1174 = getelementptr inbounds ptr, ptr %1169, i64 %1173
  %1175 = load ptr, ptr %1174, align 8, !tbaa !22
  %.not318.1 = icmp eq ptr %1175, null
  br i1 %.not318.1, label %1176, label %1180

1176:                                             ; preds = %1170, %1166
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %1177 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %25, ptr noundef nonnull %4)
  %1178 = load ptr, ptr %4, align 8, !tbaa !22
  %1179 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1178, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %1180

1180:                                             ; preds = %1176, %1170, %1161
  %1181 = load ptr, ptr %2, align 8, !tbaa !21
  %1182 = getelementptr inbounds i8, ptr %1181, i64 16
  %1183 = load ptr, ptr %1182, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1183, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %1184 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %1184, label %1199, label %1185

1185:                                             ; preds = %1180
  %1186 = load ptr, ptr %3, align 8, !tbaa !21
  %1187 = getelementptr inbounds i8, ptr %1186, i64 72
  %1188 = load ptr, ptr %1187, align 8, !tbaa !22
  %.not317.2 = icmp eq ptr %1188, null
  br i1 %.not317.2, label %1195, label %1189

1189:                                             ; preds = %1185
  %1190 = load i32, ptr %1101, align 8, !tbaa !20
  %1191 = and i32 %1190, 3
  %1192 = zext nneg i32 %1191 to i64
  %1193 = getelementptr inbounds ptr, ptr %1188, i64 %1192
  %1194 = load ptr, ptr %1193, align 8, !tbaa !22
  %.not318.2 = icmp eq ptr %1194, null
  br i1 %.not318.2, label %1195, label %1199

1195:                                             ; preds = %1189, %1185
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %1196 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %25, ptr noundef nonnull %4)
  %1197 = load ptr, ptr %4, align 8, !tbaa !22
  %1198 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1197, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %1199

1199:                                             ; preds = %1195, %1189, %1180
  %1200 = load ptr, ptr %2, align 8, !tbaa !21
  %1201 = getelementptr inbounds i8, ptr %1200, i64 24
  %1202 = load ptr, ptr %1201, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1202, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %1203 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %1203, label %1218, label %1204

1204:                                             ; preds = %1199
  %1205 = load ptr, ptr %3, align 8, !tbaa !21
  %1206 = getelementptr inbounds i8, ptr %1205, i64 72
  %1207 = load ptr, ptr %1206, align 8, !tbaa !22
  %.not317.3 = icmp eq ptr %1207, null
  br i1 %.not317.3, label %1214, label %1208

1208:                                             ; preds = %1204
  %1209 = load i32, ptr %1101, align 8, !tbaa !20
  %1210 = and i32 %1209, 3
  %1211 = zext nneg i32 %1210 to i64
  %1212 = getelementptr inbounds ptr, ptr %1207, i64 %1211
  %1213 = load ptr, ptr %1212, align 8, !tbaa !22
  %.not318.3 = icmp eq ptr %1213, null
  br i1 %.not318.3, label %1214, label %1218

1214:                                             ; preds = %1208, %1204
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %1215 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %25, ptr noundef nonnull %4)
  %1216 = load ptr, ptr %4, align 8, !tbaa !22
  %1217 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1216, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %1218

1218:                                             ; preds = %1214, %1208, %1199
  %indvars.iv.next511 = add nuw nsw i64 %indvars.iv510, 1
  %1219 = load i64, ptr %184, align 8, !tbaa !35
  %1220 = icmp sgt i64 %1219, %indvars.iv.next511
  br i1 %1220, label %1122, label %._crit_edge430, !llvm.loop !80

._crit_edge430:                                   ; preds = %1218, %1107
  %1221 = add nsw i32 %.0226433, 1
  %.pre527 = load ptr, ptr %0, align 8, !tbaa !25
  br label %1222

1222:                                             ; preds = %1102, %._crit_edge430
  %1223 = phi ptr [ %.pre527, %._crit_edge430 ], [ %1103, %1102 ]
  %.2230 = phi i32 [ %spec.select, %._crit_edge430 ], [ %.0228432, %1102 ]
  %.1 = phi i32 [ %1221, %._crit_edge430 ], [ %.0226433, %1102 ]
  %indvars.iv.next514 = add nuw nsw i64 %indvars.iv513, 5
  %1224 = getelementptr inbounds i8, ptr %1223, i64 192
  %1225 = load i32, ptr %1224, align 8, !tbaa !32
  %1226 = mul nsw i32 %1225, 5
  %1227 = trunc nuw i64 %indvars.iv.next514 to i32
  %1228 = icmp sgt i32 %1226, %1227
  br i1 %1228, label %1102, label %.loopexit.loopexit, !llvm.loop !81

.loopexit.loopexit:                               ; preds = %1222
  %1229 = add nuw nsw i32 %.2230, 1
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %1090
  %.3231 = phi i32 [ 1, %1090 ], [ %1229, %.loopexit.loopexit ]
  %.2 = phi i32 [ 0, %1090 ], [ %.1, %.loopexit.loopexit ]
  %1230 = load ptr, ptr %29, align 8, !tbaa !19
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %1230)
  %1231 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  store ptr %1231, ptr %2, align 8, !tbaa !21
  %.not304442 = icmp eq ptr %1231, null
  br i1 %.not304442, label %._crit_edge447, label %.lr.ph446

.lr.ph446:                                        ; preds = %.loopexit
  %1232 = getelementptr inbounds i8, ptr %25, i64 24
  %1233 = getelementptr inbounds i8, ptr %25, i64 8
  %1234 = getelementptr inbounds i8, ptr %25, i64 12
  %1235 = getelementptr inbounds i8, ptr %3, i64 8
  br label %1236

1236:                                             ; preds = %.lr.ph446, %1340
  %.3444 = phi i32 [ %.2, %.lr.ph446 ], [ %.4, %1340 ]
  %.0232443 = phi i32 [ %.3231, %.lr.ph446 ], [ %.1233, %1340 ]
  %1237 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2)
  br i1 %1237, label %1340, label %1238

1238:                                             ; preds = %1236
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %25)
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2)
  %1239 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %25, ptr noundef nonnull %4)
  %1240 = load ptr, ptr %4, align 8, !tbaa !22
  %1241 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1240, ptr noundef nonnull align 8 dereferenceable(12) %2)
  %1242 = load i64, ptr %184, align 8, !tbaa !35
  %1243 = icmp sgt i64 %1242, 0
  br i1 %1243, label %.lr.ph440, label %._crit_edge441

.lr.ph440:                                        ; preds = %1238
  %1244 = uitofp nneg i32 %.0232443 to double
  br label %1245

1245:                                             ; preds = %.lr.ph440, %1335
  %indvars.iv520 = phi i64 [ 0, %.lr.ph440 ], [ %indvars.iv.next521, %1335 ]
  %1246 = load ptr, ptr %1232, align 8, !tbaa !37
  %1247 = load i32, ptr %1233, align 8, !tbaa !38
  %1248 = trunc nuw nsw i64 %indvars.iv520 to i32
  %1249 = lshr i32 %1248, %1247
  %1250 = zext nneg i32 %1249 to i64
  %1251 = getelementptr inbounds ptr, ptr %1246, i64 %1250
  %1252 = load ptr, ptr %1251, align 8, !tbaa !22
  %1253 = load i32, ptr %1234, align 4, !tbaa !39
  %1254 = and i32 %1253, %1248
  %1255 = load i32, ptr %25, align 8, !tbaa !40
  %1256 = mul nsw i32 %1254, %1255
  %1257 = sext i32 %1256 to i64
  %1258 = getelementptr inbounds i8, ptr %1252, i64 %1257
  store ptr %1258, ptr %4, align 8, !tbaa !22
  %1259 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %2, ptr noundef nonnull align 8 dereferenceable(12) %1258)
  %1260 = load ptr, ptr %2, align 8, !tbaa !21
  call void @_ZN10tetgenmesh16setelemattributeEPPPdid(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1260, i32 noundef %1093, double noundef %1244)
  %1261 = load ptr, ptr %2, align 8, !tbaa !21
  %1262 = load ptr, ptr %1261, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1262, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %1263 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %1263, label %1278, label %1264

1264:                                             ; preds = %1245
  %1265 = load ptr, ptr %3, align 8, !tbaa !21
  %1266 = getelementptr inbounds i8, ptr %1265, i64 72
  %1267 = load ptr, ptr %1266, align 8, !tbaa !22
  %.not313 = icmp eq ptr %1267, null
  br i1 %.not313, label %1274, label %1268

1268:                                             ; preds = %1264
  %1269 = load i32, ptr %1235, align 8, !tbaa !20
  %1270 = and i32 %1269, 3
  %1271 = zext nneg i32 %1270 to i64
  %1272 = getelementptr inbounds ptr, ptr %1267, i64 %1271
  %1273 = load ptr, ptr %1272, align 8, !tbaa !22
  %.not314 = icmp eq ptr %1273, null
  br i1 %.not314, label %1274, label %1278

1274:                                             ; preds = %1268, %1264
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %1275 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %25, ptr noundef nonnull %4)
  %1276 = load ptr, ptr %4, align 8, !tbaa !22
  %1277 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1276, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %1278

1278:                                             ; preds = %1245, %1274, %1268
  %1279 = load ptr, ptr %2, align 8, !tbaa !21
  %1280 = getelementptr inbounds i8, ptr %1279, i64 8
  %1281 = load ptr, ptr %1280, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1281, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %1282 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %1282, label %1297, label %1283

1283:                                             ; preds = %1278
  %1284 = load ptr, ptr %3, align 8, !tbaa !21
  %1285 = getelementptr inbounds i8, ptr %1284, i64 72
  %1286 = load ptr, ptr %1285, align 8, !tbaa !22
  %.not313.1 = icmp eq ptr %1286, null
  br i1 %.not313.1, label %1293, label %1287

1287:                                             ; preds = %1283
  %1288 = load i32, ptr %1235, align 8, !tbaa !20
  %1289 = and i32 %1288, 3
  %1290 = zext nneg i32 %1289 to i64
  %1291 = getelementptr inbounds ptr, ptr %1286, i64 %1290
  %1292 = load ptr, ptr %1291, align 8, !tbaa !22
  %.not314.1 = icmp eq ptr %1292, null
  br i1 %.not314.1, label %1293, label %1297

1293:                                             ; preds = %1287, %1283
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %1294 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %25, ptr noundef nonnull %4)
  %1295 = load ptr, ptr %4, align 8, !tbaa !22
  %1296 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1295, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %1297

1297:                                             ; preds = %1293, %1287, %1278
  %1298 = load ptr, ptr %2, align 8, !tbaa !21
  %1299 = getelementptr inbounds i8, ptr %1298, i64 16
  %1300 = load ptr, ptr %1299, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1300, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %1301 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %1301, label %1316, label %1302

1302:                                             ; preds = %1297
  %1303 = load ptr, ptr %3, align 8, !tbaa !21
  %1304 = getelementptr inbounds i8, ptr %1303, i64 72
  %1305 = load ptr, ptr %1304, align 8, !tbaa !22
  %.not313.2 = icmp eq ptr %1305, null
  br i1 %.not313.2, label %1312, label %1306

1306:                                             ; preds = %1302
  %1307 = load i32, ptr %1235, align 8, !tbaa !20
  %1308 = and i32 %1307, 3
  %1309 = zext nneg i32 %1308 to i64
  %1310 = getelementptr inbounds ptr, ptr %1305, i64 %1309
  %1311 = load ptr, ptr %1310, align 8, !tbaa !22
  %.not314.2 = icmp eq ptr %1311, null
  br i1 %.not314.2, label %1312, label %1316

1312:                                             ; preds = %1306, %1302
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %1313 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %25, ptr noundef nonnull %4)
  %1314 = load ptr, ptr %4, align 8, !tbaa !22
  %1315 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1314, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %1316

1316:                                             ; preds = %1312, %1306, %1297
  %1317 = load ptr, ptr %2, align 8, !tbaa !21
  %1318 = getelementptr inbounds i8, ptr %1317, i64 24
  %1319 = load ptr, ptr %1318, align 8, !tbaa !22
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1319, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %1320 = call noundef zeroext i1 @_ZN10tetgenmesh8infectedERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %1320, label %1335, label %1321

1321:                                             ; preds = %1316
  %1322 = load ptr, ptr %3, align 8, !tbaa !21
  %1323 = getelementptr inbounds i8, ptr %1322, i64 72
  %1324 = load ptr, ptr %1323, align 8, !tbaa !22
  %.not313.3 = icmp eq ptr %1324, null
  br i1 %.not313.3, label %1331, label %1325

1325:                                             ; preds = %1321
  %1326 = load i32, ptr %1235, align 8, !tbaa !20
  %1327 = and i32 %1326, 3
  %1328 = zext nneg i32 %1327 to i64
  %1329 = getelementptr inbounds ptr, ptr %1324, i64 %1328
  %1330 = load ptr, ptr %1329, align 8, !tbaa !22
  %.not314.3 = icmp eq ptr %1330, null
  br i1 %.not314.3, label %1331, label %1335

1331:                                             ; preds = %1325, %1321
  call void @_ZN10tetgenmesh6infectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %1332 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %25, ptr noundef nonnull %4)
  %1333 = load ptr, ptr %4, align 8, !tbaa !22
  %1334 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1333, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %1335

1335:                                             ; preds = %1331, %1325, %1316
  %indvars.iv.next521 = add nuw nsw i64 %indvars.iv520, 1
  %1336 = load i64, ptr %184, align 8, !tbaa !35
  %1337 = icmp sgt i64 %1336, %indvars.iv.next521
  br i1 %1337, label %1245, label %._crit_edge441, !llvm.loop !82

._crit_edge441:                                   ; preds = %1335, %1238
  %1338 = add nuw nsw i32 %.0232443, 1
  %1339 = add nsw i32 %.3444, 1
  br label %1340

1340:                                             ; preds = %._crit_edge441, %1236
  %.1233 = phi i32 [ %.0232443, %1236 ], [ %1338, %._crit_edge441 ]
  %.4 = phi i32 [ %.3444, %1236 ], [ %1339, %._crit_edge441 ]
  %1341 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  store ptr %1341, ptr %2, align 8, !tbaa !21
  %.not304 = icmp eq ptr %1341, null
  br i1 %.not304, label %._crit_edge447, label %1236, !llvm.loop !83

._crit_edge447:                                   ; preds = %1340, %.loopexit
  %.3.lcssa = phi i32 [ %.2, %.loopexit ], [ %.4, %1340 ]
  %1342 = load ptr, ptr %29, align 8, !tbaa !19
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %1342)
  %1343 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  store ptr %1343, ptr %2, align 8, !tbaa !21
  %.not306449 = icmp eq ptr %1343, null
  br i1 %.not306449, label %._crit_edge452, label %.lr.ph451

.lr.ph451:                                        ; preds = %._crit_edge447, %.lr.ph451
  call void @_ZN10tetgenmesh8uninfectERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2)
  %1344 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  store ptr %1344, ptr %2, align 8, !tbaa !21
  %.not306 = icmp eq ptr %1344, null
  br i1 %.not306, label %._crit_edge452, label %.lr.ph451, !llvm.loop !84

._crit_edge452:                                   ; preds = %.lr.ph451, %._crit_edge447
  %1345 = load ptr, ptr %17, align 8, !tbaa !5
  %1346 = getelementptr inbounds i8, ptr %1345, i64 148
  %1347 = load i32, ptr %1346, align 4, !tbaa !42
  %.not307 = icmp eq i32 %1347, 0
  br i1 %.not307, label %1350, label %.sink.split547

.sink.split547:                                   ; preds = %._crit_edge452
  %1348 = icmp sgt i32 %.3.lcssa, 1
  %.str.459..str.460 = select i1 %1348, ptr @.str.459, ptr @.str.460
  %1349 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.459..str.460, i32 noundef %.3.lcssa)
  br label %1350

1350:                                             ; preds = %.sink.split547, %._crit_edge452, %.thread
  %.not308 = icmp eq ptr %.0, null
  br i1 %.not308, label %1352, label %1351

1351:                                             ; preds = %1350
  call void @_ZdaPv(ptr noundef nonnull %.0) #11
  br label %1352

1352:                                             ; preds = %1350, %1351
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %25) #9
  call void @_ZdlPvm(ptr noundef nonnull %25, i64 noundef 48) #11
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %27) #9
  call void @_ZdlPvm(ptr noundef nonnull %27, i64 noundef 48) #11
  %1353 = load ptr, ptr %17, align 8, !tbaa !5
  %1354 = getelementptr inbounds i8, ptr %1353, i64 68
  %1355 = load i32, ptr %1354, align 4, !tbaa !18
  %.not309 = icmp eq i32 %1355, 0
  br i1 %.not309, label %1356, label %1381

1356:                                             ; preds = %1352
  %1357 = getelementptr inbounds i8, ptr %0, i64 392
  store i32 1, ptr %1357, align 8, !tbaa !85
  %1358 = load ptr, ptr %29, align 8, !tbaa !19
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %1358)
  store i32 11, ptr %31, align 8, !tbaa !20
  %1359 = call noundef ptr @_ZN10tetgenmesh22alltetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  store ptr %1359, ptr %2, align 8, !tbaa !21
  %.not311453 = icmp eq ptr %1359, null
  br i1 %.not311453, label %._crit_edge457, label %.lr.ph456

.lr.ph456:                                        ; preds = %1356
  %1360 = getelementptr inbounds i8, ptr %0, i64 280
  %1361 = getelementptr inbounds i8, ptr %0, i64 120
  br label %1362

1362:                                             ; preds = %.lr.ph456, %1368
  %storemerge310454 = phi ptr [ %1359, %.lr.ph456 ], [ %1369, %1368 ]
  %1363 = getelementptr inbounds i8, ptr %storemerge310454, i64 56
  %1364 = load ptr, ptr %1363, align 8, !tbaa !22
  %1365 = load ptr, ptr %1360, align 8, !tbaa !57
  %1366 = icmp eq ptr %1364, %1365
  br i1 %1366, label %1367, label %1368

1367:                                             ; preds = %1362
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %2, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh8flippushERPNS_7badfaceEPNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(8) %1361, ptr noundef nonnull %3)
  br label %1368

1368:                                             ; preds = %1367, %1362
  %1369 = call noundef ptr @_ZN10tetgenmesh22alltetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  store ptr %1369, ptr %2, align 8, !tbaa !21
  %.not311 = icmp eq ptr %1369, null
  br i1 %.not311, label %._crit_edge457, label %1362, !llvm.loop !86

._crit_edge457:                                   ; preds = %1368, %1356
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %16) #9
  call void @_ZN10tetgenmesh15flipconstraintsC2Ev(ptr noundef nonnull align 8 dereferenceable(120) %16)
  store i32 2, ptr %16, align 8, !tbaa !87
  %1370 = call noundef i64 @_ZN10tetgenmesh12lawsonflip3dEPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %16)
  %1371 = icmp sgt i64 %1370, 0
  br i1 %1371, label %1372, label %1378

1372:                                             ; preds = %._crit_edge457
  %1373 = load ptr, ptr %17, align 8, !tbaa !5
  %1374 = getelementptr inbounds i8, ptr %1373, i64 148
  %1375 = load i32, ptr %1374, align 4, !tbaa !42
  %.not312 = icmp eq i32 %1375, 0
  br i1 %.not312, label %1378, label %1376

1376:                                             ; preds = %1372
  %1377 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.461, i64 noundef %1370)
  br label %1378

1378:                                             ; preds = %1372, %1376, %._crit_edge457
  %1379 = getelementptr inbounds i8, ptr %0, i64 112
  %1380 = load ptr, ptr %1379, align 8, !tbaa !89
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1380)
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %16) #9
  br label %1381

1381:                                             ; preds = %1378, %1352
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #9
  ret void

1382:                                             ; preds = %511, %58, %56
  %.pn = phi { ptr, i32 } [ %512, %511 ], [ %59, %58 ], [ %57, %56 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #9
  resume { ptr, i32 } %.pn
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZN10tetgenmesh12lawsonflip3dEPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef) local_unnamed_addr #5 align 2

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

declare void @_ZN10tetgenmesh9arraypoolD1Ev(ptr) local_unnamed_addr

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #8

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #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 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 #4 = { 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 #5 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #9 = { nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { 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 16}
!6 = !{!"_ZTS10tetgenmesh", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !7, i64 176, !7, i64 184, !7, i64 192, !7, i64 200, !7, i64 208, !7, i64 216, !7, i64 224, !7, i64 232, !7, i64 240, !7, i64 248, !7, i64 256, !7, i64 264, !7, i64 272, !7, i64 280, !10, i64 288, !12, i64 304, !7, i64 320, !11, i64 328, !11, i64 332, !11, i64 336, !11, i64 340, !11, i64 344, !11, i64 348, !11, i64 352, !11, i64 356, !11, i64 360, !11, i64 364, !11, i64 368, !11, i64 372, !11, i64 376, !11, i64 380, !11, i64 384, !11, i64 388, !11, i64 392, !11, i64 396, !11, i64 400, !13, i64 408, !13, i64 416, !14, i64 424, !14, i64 432, !14, i64 440, !14, i64 448, !14, i64 456, !14, i64 464, !14, i64 472, !14, i64 480, !14, i64 488, !14, i64 496, !14, i64 504, !14, i64 512, !14, i64 520, !14, i64 528, !14, i64 536, !13, i64 544, !13, i64 552, !13, i64 560, !13, i64 568, !13, i64 576, !13, i64 584, !13, i64 592, !13, i64 600, !13, i64 608, !13, i64 616, !13, i64 624, !13, i64 632, !13, i64 640, !13, i64 648, !13, i64 656, !13, i64 664, !13, i64 672, !13, i64 680, !13, i64 688, !13, i64 696, !13, i64 704, !13, i64 712, !13, i64 720, !13, i64 728, !8, i64 736, !8, i64 1504}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSN10tetgenmesh7trifaceE", !7, i64 0, !11, i64 8}
!11 = !{!"int", !8, i64 0}
!12 = !{!"_ZTSN10tetgenmesh4faceE", !7, i64 0, !11, i64 8}
!13 = !{!"long", !8, i64 0}
!14 = !{!"double", !8, i64 0}
!15 = !{!16, !11, i64 144}
!16 = !{!"_ZTS14tetgenbehavior", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68, !11, i64 72, !11, i64 76, !11, i64 80, !11, i64 84, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !11, i64 104, !11, i64 108, !11, i64 112, !11, i64 116, !11, i64 120, !11, i64 124, !11, i64 128, !11, i64 132, !11, i64 136, !11, i64 140, !11, i64 144, !11, i64 148, !11, i64 152, !11, i64 156, !11, i64 160, !11, i64 164, !11, i64 168, !11, i64 172, !11, i64 176, !11, i64 180, !11, i64 184, !11, i64 188, !11, i64 192, !11, i64 196, !11, i64 200, !11, i64 204, !11, i64 208, !11, i64 212, !11, i64 216, !11, i64 220, !11, i64 224, !11, i64 228, !11, i64 232, !11, i64 236, !14, i64 240, !14, i64 248, !14, i64 256, !14, i64 264, !14, i64 272, !14, i64 280, !14, i64 288, !14, i64 296, !14, i64 304, !14, i64 312, !14, i64 320, !14, i64 328, !8, i64 336, !8, i64 1360, !8, i64 2384, !8, i64 3408, !8, i64 4432, !17, i64 5456}
!17 = !{!"_ZTSN14tetgenbehavior10objecttypeE", !8, i64 0}
!18 = !{!16, !11, i64 68}
!19 = !{!6, !7, i64 32}
!20 = !{!10, !11, i64 8}
!21 = !{!10, !7, i64 0}
!22 = !{!7, !7, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!6, !7, i64 0}
!26 = !{!27, !11, i64 176}
!27 = !{!"_ZTS8tetgenio", !11, i64 0, !11, i64 4, !11, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !11, i64 64, !11, i64 68, !11, i64 72, !7, i64 80, !7, i64 88, !7, i64 96, !7, i64 104, !7, i64 112, !7, i64 120, !11, i64 128, !11, i64 132, !11, i64 136, !7, i64 144, !7, i64 152, !11, i64 160, !7, i64 168, !11, i64 176, !7, i64 184, !11, i64 192, !7, i64 200, !11, i64 208, !7, i64 216, !11, i64 224, !7, i64 232, !7, i64 240, !7, i64 248, !7, i64 256, !7, i64 264, !11, i64 272, !7, i64 280, !7, i64 288, !7, i64 296, !7, i64 304, !11, i64 312, !7, i64 320, !7, i64 328, !7, i64 336, !7, i64 344, !11, i64 352, !11, i64 356, !11, i64 360, !11, i64 364, !7, i64 368, !7, i64 376, !7, i64 384, !7, i64 392, !7, i64 400, !7, i64 408, !7, i64 416}
!28 = !{!27, !7, i64 168}
!29 = !{!6, !7, i64 224}
!30 = distinct !{!30, !24}
!31 = !{!16, !11, i64 52}
!32 = !{!27, !11, i64 192}
!33 = !{!27, !7, i64 184}
!34 = distinct !{!34, !24}
!35 = !{!36, !13, i64 32}
!36 = !{!"_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}
!37 = !{!36, !7, i64 24}
!38 = !{!36, !11, i64 8}
!39 = !{!36, !11, i64 12}
!40 = !{!36, !11, i64 0}
!41 = distinct !{!41, !24}
!42 = !{!16, !11, i64 148}
!43 = distinct !{!43, !24}
!44 = !{!6, !7, i64 56}
!45 = !{!6, !7, i64 168}
!46 = !{!16, !11, i64 16}
!47 = !{!16, !11, i64 168}
!48 = !{!27, !11, i64 64}
!49 = !{!27, !11, i64 0}
!50 = !{!6, !7, i64 232}
!51 = distinct !{!51, !24}
!52 = !{!6, !7, i64 48}
!53 = !{!12, !7, i64 0}
!54 = !{!6, !7, i64 216}
!55 = distinct !{!55, !24}
!56 = !{!11, !11, i64 0}
!57 = !{!6, !7, i64 280}
!58 = distinct !{!58, !24}
!59 = distinct !{!59, !24}
!60 = distinct !{!60, !24}
!61 = distinct !{!61, !24}
!62 = distinct !{!62, !24}
!63 = distinct !{!63, !24}
!64 = !{!6, !7, i64 40}
!65 = distinct !{!65, !24}
!66 = distinct !{!66, !24}
!67 = !{!6, !13, i64 592}
!68 = !{!13, !13, i64 0}
!69 = !{!6, !13, i64 576}
!70 = distinct !{!70, !24}
!71 = !{!6, !13, i64 552}
!72 = distinct !{!72, !24}
!73 = distinct !{!73, !24}
!74 = !{!6, !11, i64 332}
!75 = distinct !{!75, !24}
!76 = distinct !{!76, !24}
!77 = distinct !{!77, !24}
!78 = !{!14, !14, i64 0}
!79 = !{!16, !11, i64 44}
!80 = distinct !{!80, !24}
!81 = distinct !{!81, !24}
!82 = distinct !{!82, !24}
!83 = distinct !{!83, !24}
!84 = distinct !{!84, !24}
!85 = !{!6, !11, i64 392}
!86 = distinct !{!86, !24}
!87 = !{!88, !11, i64 0}
!88 = !{!"_ZTSN10tetgenmesh15flipconstraintsE", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !14, i64 24, !14, i64 32, !11, i64 40, !14, i64 48, !14, i64 56, !11, i64 64, !8, i64 72, !8, i64 88, !7, i64 112}
!89 = !{!6, !7, i64 112}


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