; 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.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
@.str.421 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.422 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.423 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.424 = external hidden unnamed_addr constant [38 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: mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48)) #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

35:                                               ; preds = %35, %2
  %36 = phi ptr [ %33, %2 ], [ %37, %35 ]
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %36)
  %37 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %36, i64 1
  %38 = icmp eq ptr %37, %34
  br i1 %38, label %39, label %35

39:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 16, ptr %8) #9
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #9
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #9
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #9
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %11)
  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 16, ptr %13) #9
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %13)
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #9
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %14)
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #9
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %15)
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #9
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %16)
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #9
  store ptr null, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #9
  store ptr null, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #9
  call void @llvm.lifetime.start.p0(i64 120, ptr %20) #9
  call void @_ZN10tetgenmesh15flipconstraintsC2Ev(ptr noundef nonnull align 8 dereferenceable(120) %20)
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #9
  %40 = load ptr, ptr %5, align 8, !tbaa !5
  %41 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %40)
  store i32 %41, ptr %21, align 4, !tbaa !9
  %42 = load i32, ptr %21, align 4, !tbaa !9
  %43 = icmp eq i32 %42, 6
  br i1 %43, label %44, label %73

44:                                               ; preds = %39
  %45 = load ptr, ptr %5, align 8, !tbaa !5
  %46 = call noundef ptr @_ZN10tetgenmesh8point2shEPd(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %45)
  call void @_ZN10tetgenmesh7sdecodeEPPdRNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %46, ptr noundef nonnull align 8 dereferenceable(12) %14)
  %47 = getelementptr inbounds %"class.tetgenmesh::face", ptr %14, i32 0, i32 1
  store i32 0, ptr %47, align 8, !tbaa !11
  %48 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %14)
  %49 = load ptr, ptr %5, align 8, !tbaa !5
  %50 = icmp eq ptr %48, %49
  br i1 %50, label %51, label %53

51:                                               ; preds = %44
  call void @_ZN10tetgenmesh6senextERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %14, ptr noundef nonnull align 8 dereferenceable(12) %15)
  call void @_ZN10tetgenmesh10spivotselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %52 = getelementptr inbounds %"class.tetgenmesh::face", ptr %15, i32 0, i32 1
  store i32 0, ptr %52, align 8, !tbaa !11
  br label %56

53:                                               ; preds = %44
  %54 = 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 @_ZN10tetgenmesh7senext2ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %14)
  call void @_ZN10tetgenmesh10spivotselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %14)
  %55 = getelementptr inbounds %"class.tetgenmesh::face", ptr %14, i32 0, i32 1
  store i32 0, ptr %55, align 8, !tbaa !11
  br label %56

56:                                               ; preds = %53, %51
  %57 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %14)
  store ptr %57, ptr %17, align 8, !tbaa !5
  %58 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %15)
  store ptr %58, ptr %18, align 8, !tbaa !5
  %59 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 2
  %60 = load ptr, ptr %59, align 8, !tbaa !14
  %61 = getelementptr inbounds %class.tetgenbehavior, ptr %60, i32 0, i32 37
  %62 = load i32, ptr %61, align 4, !tbaa !19
  %63 = icmp sgt i32 %62, 2
  br i1 %63, label %64, label %72

64:                                               ; preds = %56
  %65 = load ptr, ptr %5, align 8, !tbaa !5
  %66 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %65)
  %67 = load ptr, ptr %17, align 8, !tbaa !5
  %68 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %67)
  %69 = load ptr, ptr %18, align 8, !tbaa !5
  %70 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %69)
  %71 = call i32 (ptr, ...) @printf(ptr noundef @.str.421, i32 noundef %66, i32 noundef %68, i32 noundef %70)
  br label %72

72:                                               ; preds = %64, %56
  br label %119

73:                                               ; preds = %39
  %74 = load i32, ptr %21, align 4, !tbaa !9
  %75 = icmp eq i32 %74, 7
  br i1 %75, label %76, label %87

76:                                               ; preds = %73
  %77 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 2
  %78 = load ptr, ptr %77, align 8, !tbaa !14
  %79 = getelementptr inbounds %class.tetgenbehavior, ptr %78, i32 0, i32 37
  %80 = load i32, ptr %79, align 4, !tbaa !19
  %81 = icmp sgt i32 %80, 2
  br i1 %81, label %82, label %86

82:                                               ; preds = %76
  %83 = load ptr, ptr %5, align 8, !tbaa !5
  %84 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %83)
  %85 = call i32 (ptr, ...) @printf(ptr noundef @.str.422, i32 noundef %84)
  br label %86

86:                                               ; preds = %82, %76
  br label %118

87:                                               ; preds = %73
  %88 = load i32, ptr %21, align 4, !tbaa !9
  %89 = icmp eq i32 %88, 8
  br i1 %89, label %90, label %101

90:                                               ; preds = %87
  %91 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 2
  %92 = load ptr, ptr %91, align 8, !tbaa !14
  %93 = getelementptr inbounds %class.tetgenbehavior, ptr %92, i32 0, i32 37
  %94 = load i32, ptr %93, align 4, !tbaa !19
  %95 = icmp sgt i32 %94, 2
  br i1 %95, label %96, label %100

96:                                               ; preds = %90
  %97 = load ptr, ptr %5, align 8, !tbaa !5
  %98 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %97)
  %99 = call i32 (ptr, ...) @printf(ptr noundef @.str.423, i32 noundef %98)
  br label %100

100:                                              ; preds = %96, %90
  br label %117

101:                                              ; preds = %87
  %102 = load i32, ptr %21, align 4, !tbaa !9
  %103 = icmp eq i32 %102, 5
  br i1 %103, label %104, label %115

104:                                              ; preds = %101
  %105 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 2
  %106 = load ptr, ptr %105, align 8, !tbaa !14
  %107 = getelementptr inbounds %class.tetgenbehavior, ptr %106, i32 0, i32 37
  %108 = load i32, ptr %107, align 4, !tbaa !19
  %109 = icmp sgt i32 %108, 2
  br i1 %109, label %110, label %114

110:                                              ; preds = %104
  %111 = load ptr, ptr %5, align 8, !tbaa !5
  %112 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %111)
  %113 = call i32 (ptr, ...) @printf(ptr noundef @.str.424, i32 noundef %112)
  br label %114

114:                                              ; preds = %110, %104
  br label %116

115:                                              ; preds = %101
  store i32 0, ptr %3, align 4
  store i32 1, ptr %29, align 4
  br label %1310

116:                                              ; preds = %114
  br label %117

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

118:                                              ; preds = %117, %86
  br label %119

119:                                              ; preds = %118, %72
  %120 = load ptr, ptr %5, align 8, !tbaa !5
  %121 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 16
  %122 = load ptr, ptr %121, align 8, !tbaa !22
  %123 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 21
  %124 = load ptr, ptr %123, align 8, !tbaa !23
  %125 = call noundef i32 @_ZN10tetgenmesh13getvertexstarEiPdPNS_9arraypoolES2_S2_(ptr noundef nonnull align 8 dereferenceable(1536) %32, i32 noundef 1, ptr noundef %120, ptr noundef %122, ptr noundef %124, ptr noundef null)
  %126 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 16
  %127 = load ptr, ptr %126, align 8, !tbaa !22
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %127)
  %128 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 21
  %129 = load ptr, ptr %128, align 8, !tbaa !23
  %130 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %129, i32 0, i32 6
  %131 = load i64, ptr %130, align 8, !tbaa !24
  %132 = icmp sgt i64 %131, 3
  br i1 %132, label %133, label %138

133:                                              ; preds = %119
  %134 = load ptr, ptr %5, align 8, !tbaa !5
  %135 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 21
  %136 = load ptr, ptr %135, align 8, !tbaa !23
  %137 = call noundef i32 @_ZN10tetgenmesh19reduceedgesatvertexEPdPNS_9arraypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %134, ptr noundef %136)
  store i32 %137, ptr %23, align 4, !tbaa !26
  br label %144

138:                                              ; preds = %119
  %139 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 21
  %140 = load ptr, ptr %139, align 8, !tbaa !23
  %141 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %140, i32 0, i32 6
  %142 = load i64, ptr %141, align 8, !tbaa !24
  %143 = trunc i64 %142 to i32
  store i32 %143, ptr %23, align 4, !tbaa !26
  br label %144

144:                                              ; preds = %138, %133
  %145 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 21
  %146 = load ptr, ptr %145, align 8, !tbaa !23
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %146)
  store i32 0, ptr %24, align 4, !tbaa !26
  %147 = load i32, ptr %23, align 4, !tbaa !26
  %148 = icmp eq i32 %147, 4
  br i1 %148, label %149, label %151

149:                                              ; preds = %144
  %150 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN10tetgenmesh12point2tetorgEPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %150, ptr noundef nonnull align 8 dereferenceable(12) %8)
  store i32 2, ptr %22, align 4, !tbaa !27
  store i32 1, ptr %24, align 4, !tbaa !26
  br label %317

151:                                              ; preds = %144
  %152 = load i32, ptr %23, align 4, !tbaa !26
  %153 = icmp eq i32 %152, 5
  br i1 %153, label %154, label %316

154:                                              ; preds = %151
  %155 = load i32, ptr %21, align 4, !tbaa !9
  %156 = icmp eq i32 %155, 6
  br i1 %156, label %157, label %242

157:                                              ; preds = %154
  call void @_ZN10tetgenmesh9sstpivot1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %14, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %158 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %159 = load ptr, ptr %5, align 8, !tbaa !5
  %160 = icmp ne ptr %158, %159
  br i1 %160, label %161, label %162

161:                                              ; preds = %157
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %162

162:                                              ; preds = %161, %157
  store i32 0, ptr %28, align 4, !tbaa !26
  %163 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %10, i32 0, i32 0
  store ptr null, ptr %163, align 8, !tbaa !29
  %164 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %165

165:                                              ; preds = %202, %162
  br label %166

166:                                              ; preds = %165
  %167 = load i32, ptr %28, align 4, !tbaa !26
  %168 = add nsw i32 %167, 1
  store i32 %168, ptr %28, align 4, !tbaa !26
  %169 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %170 = load ptr, ptr %18, align 8, !tbaa !5
  %171 = icmp eq ptr %169, %170
  br i1 %171, label %172, label %174

172:                                              ; preds = %166
  %173 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %174

174:                                              ; preds = %172, %166
  %175 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %176 = load i32, ptr %175, align 8, !tbaa !30
  store i32 %176, ptr %26, align 4, !tbaa !26
  %177 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 0
  %178 = load ptr, ptr %177, align 8, !tbaa !29
  %179 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %180 = load i32, ptr %179, align 8, !tbaa !30
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %181
  %183 = load i32, ptr %182, align 4, !tbaa !26
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds ptr, ptr %178, i64 %184
  %186 = load ptr, ptr %185, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %186, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %187 = load i32, ptr %26, align 4, !tbaa !26
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %188
  %190 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %191 = load i32, ptr %190, align 8, !tbaa !30
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds [12 x i32], ptr %189, i64 0, i64 %192
  %194 = load i32, ptr %193, align 4, !tbaa !26
  %195 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  store i32 %194, ptr %195, align 8, !tbaa !30
  %196 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 0
  %197 = load ptr, ptr %196, align 8, !tbaa !29
  %198 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %8, i32 0, i32 0
  %199 = load ptr, ptr %198, align 8, !tbaa !29
  %200 = icmp eq ptr %197, %199
  br i1 %200, label %201, label %202

201:                                              ; preds = %174
  br label %203

202:                                              ; preds = %174
  br label %165, !llvm.loop !31

203:                                              ; preds = %201
  %204 = load i32, ptr %28, align 4, !tbaa !26
  %205 = icmp eq i32 %204, 3
  br i1 %205, label %206, label %207

206:                                              ; preds = %203
  br label %241

207:                                              ; preds = %203
  %208 = load i32, ptr %28, align 4, !tbaa !26
  %209 = icmp eq i32 %208, 4
  br i1 %209, label %210, label %240

210:                                              ; preds = %207
  %211 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %212 = load ptr, ptr %18, align 8, !tbaa !5
  %213 = icmp eq ptr %211, %212
  br i1 %213, label %214, label %239

214:                                              ; preds = %210
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %215 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  %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) %8)
  store i32 0, ptr %28, align 4, !tbaa !26
  br label %217

217:                                              ; preds = %228, %214
  %218 = load i32, ptr %28, align 4, !tbaa !26
  %219 = icmp slt i32 %218, 2
  br i1 %219, label %220, label %231

220:                                              ; preds = %217
  %221 = load i32, ptr %28, align 4, !tbaa !26
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 %222
  %224 = load i32, ptr %28, align 4, !tbaa !26
  %225 = add nsw i32 %224, 1
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 %226
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %223, ptr noundef nonnull align 8 dereferenceable(12) %227)
  br label %228

228:                                              ; preds = %220
  %229 = load i32, ptr %28, align 4, !tbaa !26
  %230 = add nsw i32 %229, 1
  store i32 %230, ptr %28, align 4, !tbaa !26
  br label %217, !llvm.loop !33

231:                                              ; preds = %217
  %232 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  %233 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %232)
  %234 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 2
  %235 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %234)
  %236 = icmp eq ptr %233, %235
  br i1 %236, label %237, label %238

237:                                              ; preds = %231
  store i32 3, ptr %22, align 4, !tbaa !27
  store i32 1, ptr %24, align 4, !tbaa !26
  br label %238

238:                                              ; preds = %237, %231
  br label %239

239:                                              ; preds = %238, %210
  br label %240

240:                                              ; preds = %239, %207
  br label %241

241:                                              ; preds = %240, %206
  br label %315

242:                                              ; preds = %154
  %243 = load i32, ptr %21, align 4, !tbaa !9
  %244 = icmp eq i32 %243, 7
  br i1 %244, label %245, label %314

245:                                              ; preds = %242
  %246 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN10tetgenmesh12point2tetorgEPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %246, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %247 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  %248 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %247, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %249 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 1
  %250 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %249, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %251 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 1
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %251)
  %252 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 1
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %252)
  %253 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 2
  %254 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %253, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %255 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 2
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %255)
  %256 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 2
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %256)
  %257 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %8, i32 0, i32 0
  store ptr null, ptr %257, align 8, !tbaa !29
  store i32 0, ptr %28, align 4, !tbaa !26
  br label %258

258:                                              ; preds = %310, %245
  %259 = load i32, ptr %28, align 4, !tbaa !26
  %260 = icmp slt i32 %259, 3
  br i1 %260, label %261, label %313

261:                                              ; preds = %258
  %262 = load i32, ptr %28, align 4, !tbaa !26
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 %263
  %265 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %264)
  store i32 0, ptr %23, align 4, !tbaa !26
  br label %266

266:                                              ; preds = %300, %261
  br label %267

267:                                              ; preds = %266
  %268 = load i32, ptr %23, align 4, !tbaa !26
  %269 = add nsw i32 %268, 1
  store i32 %269, ptr %23, align 4, !tbaa !26
  %270 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %271 = load i32, ptr %270, align 8, !tbaa !30
  store i32 %271, ptr %26, align 4, !tbaa !26
  %272 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 0
  %273 = load ptr, ptr %272, align 8, !tbaa !29
  %274 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %275 = load i32, ptr %274, align 8, !tbaa !30
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %276
  %278 = load i32, ptr %277, align 4, !tbaa !26
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds ptr, ptr %273, i64 %279
  %281 = load ptr, ptr %280, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %281, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %282 = load i32, ptr %26, align 4, !tbaa !26
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %283
  %285 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %286 = load i32, ptr %285, align 8, !tbaa !30
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds [12 x i32], ptr %284, i64 0, i64 %287
  %289 = load i32, ptr %288, align 4, !tbaa !26
  %290 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  store i32 %289, ptr %290, align 8, !tbaa !30
  %291 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 0
  %292 = load ptr, ptr %291, align 8, !tbaa !29
  %293 = load i32, ptr %28, align 4, !tbaa !26
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 %294
  %296 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %295, i32 0, i32 0
  %297 = load ptr, ptr %296, align 16, !tbaa !29
  %298 = icmp eq ptr %292, %297
  br i1 %298, label %299, label %300

299:                                              ; preds = %267
  br label %301

300:                                              ; preds = %267
  br label %266, !llvm.loop !34

301:                                              ; preds = %299
  %302 = load i32, ptr %23, align 4, !tbaa !26
  %303 = icmp eq i32 %302, 3
  br i1 %303, label %304, label %309

304:                                              ; preds = %301
  %305 = load i32, ptr %28, align 4, !tbaa !26
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 %306
  %308 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %8, ptr noundef nonnull align 8 dereferenceable(12) %307)
  br label %313

309:                                              ; preds = %301
  br label %310

310:                                              ; preds = %309
  %311 = load i32, ptr %28, align 4, !tbaa !26
  %312 = add nsw i32 %311, 1
  store i32 %312, ptr %28, align 4, !tbaa !26
  br label %258, !llvm.loop !35

313:                                              ; preds = %304, %258
  store i32 3, ptr %22, align 4, !tbaa !27
  store i32 1, ptr %24, align 4, !tbaa !26
  br label %314

314:                                              ; preds = %313, %242
  br label %315

315:                                              ; preds = %314, %241
  br label %316

316:                                              ; preds = %315, %151
  br label %317

317:                                              ; preds = %316, %149
  %318 = load i32, ptr %24, align 4, !tbaa !26
  %319 = icmp ne i32 %318, 0
  br i1 %319, label %386, label %320

320:                                              ; preds = %317
  %321 = load i32, ptr %21, align 4, !tbaa !9
  %322 = icmp eq i32 %321, 6
  br i1 %322, label %323, label %385

323:                                              ; preds = %320
  call void @_ZN10tetgenmesh9sstpivot1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %14, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %324 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %325 = load ptr, ptr %5, align 8, !tbaa !5
  %326 = icmp ne ptr %324, %325
  br i1 %326, label %327, label %328

327:                                              ; preds = %323
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %328

328:                                              ; preds = %327, %323
  %329 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %330

330:                                              ; preds = %383, %328
  br label %331

331:                                              ; preds = %330
  call void @_ZN10tetgenmesh5eprevERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %332 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %10, i32 0, i32 1
  %333 = load i32, ptr %332, align 8, !tbaa !30
  store i32 %333, ptr %26, align 4, !tbaa !26
  %334 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %10, i32 0, i32 0
  %335 = load ptr, ptr %334, align 8, !tbaa !29
  %336 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %10, i32 0, i32 1
  %337 = load i32, ptr %336, align 8, !tbaa !30
  %338 = and i32 %337, 3
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds ptr, ptr %335, i64 %339
  %341 = load ptr, ptr %340, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %341, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %342 = load i32, ptr %26, align 4, !tbaa !26
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %343
  %345 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %10, i32 0, i32 1
  %346 = load i32, ptr %345, align 8, !tbaa !30
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds [12 x i32], ptr %344, i64 0, i64 %347
  %349 = load i32, ptr %348, align 4, !tbaa !26
  %350 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %10, i32 0, i32 1
  store i32 %349, ptr %350, align 8, !tbaa !30
  %351 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %352 = load ptr, ptr %18, align 8, !tbaa !5
  %353 = icmp ne ptr %351, %352
  br i1 %353, label %354, label %355

354:                                              ; preds = %331
  br label %384

355:                                              ; preds = %331
  %356 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %357 = load i32, ptr %356, align 8, !tbaa !30
  store i32 %357, ptr %26, align 4, !tbaa !26
  %358 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 0
  %359 = load ptr, ptr %358, align 8, !tbaa !29
  %360 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %361 = load i32, ptr %360, align 8, !tbaa !30
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %362
  %364 = load i32, ptr %363, align 4, !tbaa !26
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds ptr, ptr %359, i64 %365
  %367 = load ptr, ptr %366, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %367, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %368 = load i32, ptr %26, align 4, !tbaa !26
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %369
  %371 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %372 = load i32, ptr %371, align 8, !tbaa !30
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds [12 x i32], ptr %370, i64 0, i64 %373
  %375 = load i32, ptr %374, align 4, !tbaa !26
  %376 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  store i32 %375, ptr %376, align 8, !tbaa !30
  %377 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 0
  %378 = load ptr, ptr %377, align 8, !tbaa !29
  %379 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %8, i32 0, i32 0
  %380 = load ptr, ptr %379, align 8, !tbaa !29
  %381 = icmp eq ptr %378, %380
  br i1 %381, label %382, label %383

382:                                              ; preds = %355
  store i32 4, ptr %22, align 4, !tbaa !27
  store i32 1, ptr %24, align 4, !tbaa !26
  br label %384

383:                                              ; preds = %355
  br label %330, !llvm.loop !36

384:                                              ; preds = %382, %354
  br label %385

385:                                              ; preds = %384, %320
  br label %386

386:                                              ; preds = %385, %317
  %387 = load i32, ptr %24, align 4, !tbaa !26
  %388 = icmp ne i32 %387, 0
  br i1 %388, label %496, label %389

389:                                              ; preds = %386
  %390 = load i32, ptr %21, align 4, !tbaa !9
  %391 = icmp eq i32 %390, 6
  br i1 %391, label %392, label %495

392:                                              ; preds = %389
  %393 = load ptr, ptr %17, align 8, !tbaa !5
  %394 = load ptr, ptr %18, align 8, !tbaa !5
  %395 = call noundef i32 @_ZN10tetgenmesh7getedgeEPdS0_PNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %393, ptr noundef %394, ptr noundef %8)
  %396 = icmp ne i32 %395, 0
  br i1 %396, label %397, label %494

397:                                              ; preds = %392
  %398 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 53
  %399 = load i32, ptr %398, align 8, !tbaa !37
  %400 = icmp ne i32 %399, 0
  br i1 %400, label %493, label %401

401:                                              ; preds = %397
  store i32 0, ptr %28, align 4, !tbaa !26
  br label %402

402:                                              ; preds = %445, %401
  %403 = load i32, ptr %28, align 4, !tbaa !26
  %404 = icmp slt i32 %403, 2
  br i1 %404, label %405, label %448

405:                                              ; preds = %402
  %406 = load i32, ptr %28, align 4, !tbaa !26
  %407 = icmp eq i32 %406, 0
  br i1 %407, label %408, label %409

408:                                              ; preds = %405
  br label %410

409:                                              ; preds = %405
  br label %410

410:                                              ; preds = %409, %408
  %411 = phi ptr [ %14, %408 ], [ %15, %409 ]
  %412 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %411)
  call void @_ZN10tetgenmesh9sstpivot1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %413 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %10)
  br label %414

414:                                              ; preds = %443, %410
  br label %415

415:                                              ; preds = %414
  call void @_ZN10tetgenmesh12tssdissolve1ERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %416 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %417 = load i32, ptr %416, align 8, !tbaa !30
  store i32 %417, ptr %26, align 4, !tbaa !26
  %418 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 0
  %419 = load ptr, ptr %418, align 8, !tbaa !29
  %420 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %421 = load i32, ptr %420, align 8, !tbaa !30
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %422
  %424 = load i32, ptr %423, align 4, !tbaa !26
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds ptr, ptr %419, i64 %425
  %427 = load ptr, ptr %426, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %427, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %428 = load i32, ptr %26, align 4, !tbaa !26
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %429
  %431 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %432 = load i32, ptr %431, align 8, !tbaa !30
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds [12 x i32], ptr %430, i64 0, i64 %433
  %435 = load i32, ptr %434, align 4, !tbaa !26
  %436 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  store i32 %435, ptr %436, align 8, !tbaa !30
  %437 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 0
  %438 = load ptr, ptr %437, align 8, !tbaa !29
  %439 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %10, i32 0, i32 0
  %440 = load ptr, ptr %439, align 8, !tbaa !29
  %441 = icmp eq ptr %438, %440
  br i1 %441, label %442, label %443

442:                                              ; preds = %415
  br label %444

443:                                              ; preds = %415
  br label %414, !llvm.loop !38

444:                                              ; preds = %442
  call void @_ZN10tetgenmesh12sstdissolve1ERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %16)
  br label %445

445:                                              ; preds = %444
  %446 = load i32, ptr %28, align 4, !tbaa !26
  %447 = add nsw i32 %446, 1
  store i32 %447, ptr %28, align 4, !tbaa !26
  br label %402, !llvm.loop !39

448:                                              ; preds = %402
  store i32 1, ptr %25, align 4, !tbaa !26
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %449 = load ptr, ptr %5, align 8, !tbaa !5
  %450 = load i32, ptr %25, align 4, !tbaa !26
  %451 = call noundef i32 @_ZN10tetgenmesh13sremovevertexEPdPNS_4faceES2_i(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %449, ptr noundef %11, ptr noundef %15, i32 noundef %450)
  %452 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 25
  %453 = load ptr, ptr %452, align 8, !tbaa !40
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %453)
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %454 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %455

455:                                              ; preds = %484, %448
  br label %456

456:                                              ; preds = %455
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %457 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %458 = load i32, ptr %457, align 8, !tbaa !30
  store i32 %458, ptr %26, align 4, !tbaa !26
  %459 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 0
  %460 = load ptr, ptr %459, align 8, !tbaa !29
  %461 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %462 = load i32, ptr %461, align 8, !tbaa !30
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %463
  %465 = load i32, ptr %464, align 4, !tbaa !26
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds ptr, ptr %460, i64 %466
  %468 = load ptr, ptr %467, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %468, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %469 = load i32, ptr %26, align 4, !tbaa !26
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %470
  %472 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %473 = load i32, ptr %472, align 8, !tbaa !30
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds [12 x i32], ptr %471, i64 0, i64 %474
  %476 = load i32, ptr %475, align 4, !tbaa !26
  %477 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  store i32 %476, ptr %477, align 8, !tbaa !30
  %478 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 0
  %479 = load ptr, ptr %478, align 8, !tbaa !29
  %480 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %8, i32 0, i32 0
  %481 = load ptr, ptr %480, align 8, !tbaa !29
  %482 = icmp eq ptr %479, %481
  br i1 %482, label %483, label %484

483:                                              ; preds = %456
  br label %485

484:                                              ; preds = %456
  br label %455, !llvm.loop !41

485:                                              ; preds = %483
  %486 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %486, i32 noundef 8)
  %487 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 83
  %488 = load i64, ptr %487, align 8, !tbaa !42
  %489 = add nsw i64 %488, -1
  store i64 %489, ptr %487, align 8, !tbaa !42
  %490 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 85
  %491 = load i64, ptr %490, align 8, !tbaa !43
  %492 = add nsw i64 %491, 1
  store i64 %492, ptr %490, align 8, !tbaa !43
  store i32 1, ptr %3, align 4
  store i32 1, ptr %29, align 4
  br label %1310

493:                                              ; preds = %397
  br label %494

494:                                              ; preds = %493, %392
  br label %495

495:                                              ; preds = %494, %389
  br label %496

496:                                              ; preds = %495, %386
  %497 = load i32, ptr %24, align 4, !tbaa !26
  %498 = icmp ne i32 %497, 0
  br i1 %498, label %500, label %499

499:                                              ; preds = %496
  store i32 0, ptr %3, align 4
  store i32 1, ptr %29, align 4
  br label %1310

500:                                              ; preds = %496
  %501 = load i32, ptr %21, align 4, !tbaa !9
  %502 = icmp eq i32 %501, 6
  br i1 %502, label %503, label %597

503:                                              ; preds = %500
  store i32 0, ptr %28, align 4, !tbaa !26
  br label %504

504:                                              ; preds = %547, %503
  %505 = load i32, ptr %28, align 4, !tbaa !26
  %506 = icmp slt i32 %505, 2
  br i1 %506, label %507, label %550

507:                                              ; preds = %504
  %508 = load i32, ptr %28, align 4, !tbaa !26
  %509 = icmp eq i32 %508, 0
  br i1 %509, label %510, label %511

510:                                              ; preds = %507
  br label %512

511:                                              ; preds = %507
  br label %512

512:                                              ; preds = %511, %510
  %513 = phi ptr [ %14, %510 ], [ %15, %511 ]
  %514 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %513)
  call void @_ZN10tetgenmesh9sstpivot1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %515 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %10)
  br label %516

516:                                              ; preds = %545, %512
  br label %517

517:                                              ; preds = %516
  call void @_ZN10tetgenmesh12tssdissolve1ERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %518 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %519 = load i32, ptr %518, align 8, !tbaa !30
  store i32 %519, ptr %26, align 4, !tbaa !26
  %520 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 0
  %521 = load ptr, ptr %520, align 8, !tbaa !29
  %522 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %523 = load i32, ptr %522, align 8, !tbaa !30
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %524
  %526 = load i32, ptr %525, align 4, !tbaa !26
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds ptr, ptr %521, i64 %527
  %529 = load ptr, ptr %528, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %529, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %530 = load i32, ptr %26, align 4, !tbaa !26
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %531
  %533 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %534 = load i32, ptr %533, align 8, !tbaa !30
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds [12 x i32], ptr %532, i64 0, i64 %535
  %537 = load i32, ptr %536, align 4, !tbaa !26
  %538 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  store i32 %537, ptr %538, align 8, !tbaa !30
  %539 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 0
  %540 = load ptr, ptr %539, align 8, !tbaa !29
  %541 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %10, i32 0, i32 0
  %542 = load ptr, ptr %541, align 8, !tbaa !29
  %543 = icmp eq ptr %540, %542
  br i1 %543, label %544, label %545

544:                                              ; preds = %517
  br label %546

545:                                              ; preds = %517
  br label %516, !llvm.loop !44

546:                                              ; preds = %544
  call void @_ZN10tetgenmesh12sstdissolve1ERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %16)
  br label %547

547:                                              ; preds = %546
  %548 = load i32, ptr %28, align 4, !tbaa !26
  %549 = add nsw i32 %548, 1
  store i32 %549, ptr %28, align 4, !tbaa !26
  br label %504, !llvm.loop !45

550:                                              ; preds = %504
  %551 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 53
  %552 = load i32, ptr %551, align 8, !tbaa !37
  %553 = icmp ne i32 %552, 0
  br i1 %553, label %554, label %596

554:                                              ; preds = %550
  store i32 0, ptr %28, align 4, !tbaa !26
  br label %555

555:                                              ; preds = %592, %554
  %556 = load i32, ptr %28, align 4, !tbaa !26
  %557 = icmp slt i32 %556, 2
  br i1 %557, label %558, label %595

558:                                              ; preds = %555
  %559 = load i32, ptr %28, align 4, !tbaa !26
  %560 = icmp eq i32 %559, 0
  br i1 %560, label %561, label %562

561:                                              ; preds = %558
  br label %563

562:                                              ; preds = %558
  br label %563

563:                                              ; preds = %562, %561
  %564 = phi ptr [ %14, %561 ], [ %15, %562 ]
  %565 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %564)
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %566 = getelementptr inbounds %"class.tetgenmesh::face", ptr %11, i32 0, i32 0
  %567 = load ptr, ptr %566, align 8, !tbaa !46
  %568 = icmp ne ptr %567, null
  br i1 %568, label %569, label %591

569:                                              ; preds = %563
  %570 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %11)
  br label %571

571:                                              ; preds = %589, %569
  br label %572

572:                                              ; preds = %571
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %573 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %10, i32 0, i32 0
  %574 = load ptr, ptr %573, align 8, !tbaa !29
  %575 = icmp ne ptr %574, null
  br i1 %575, label %576, label %577

576:                                              ; preds = %572
  call void @_ZN10tetgenmesh10tsdissolveERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %10)
  br label %577

577:                                              ; preds = %576, %572
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %578 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %10, i32 0, i32 0
  %579 = load ptr, ptr %578, align 8, !tbaa !29
  %580 = icmp ne ptr %579, null
  br i1 %580, label %581, label %582

581:                                              ; preds = %577
  call void @_ZN10tetgenmesh10tsdissolveERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %10)
  br label %582

582:                                              ; preds = %581, %577
  call void @_ZN10tetgenmesh10stdissolveERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @_ZN10tetgenmesh10spivotselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %583 = getelementptr inbounds %"class.tetgenmesh::face", ptr %12, i32 0, i32 0
  %584 = load ptr, ptr %583, align 8, !tbaa !46
  %585 = getelementptr inbounds %"class.tetgenmesh::face", ptr %11, i32 0, i32 0
  %586 = load ptr, ptr %585, align 8, !tbaa !46
  %587 = icmp eq ptr %584, %586
  br i1 %587, label %588, label %589

588:                                              ; preds = %582
  br label %590

589:                                              ; preds = %582
  br label %571, !llvm.loop !47

590:                                              ; preds = %588
  br label %591

591:                                              ; preds = %590, %563
  br label %592

592:                                              ; preds = %591
  %593 = load i32, ptr %28, align 4, !tbaa !26
  %594 = add nsw i32 %593, 1
  store i32 %594, ptr %28, align 4, !tbaa !26
  br label %555, !llvm.loop !48

595:                                              ; preds = %555
  br label %596

596:                                              ; preds = %595, %550
  br label %597

597:                                              ; preds = %596, %500
  %598 = load i32, ptr %22, align 4, !tbaa !27
  %599 = icmp eq i32 %598, 2
  br i1 %599, label %600, label %675

600:                                              ; preds = %597
  %601 = call noalias noundef nonnull ptr @_Znam(i64 noundef 64) #10
  %602 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %601, i64 4
  br label %603

603:                                              ; preds = %605, %600
  %604 = phi ptr [ %601, %600 ], [ %606, %605 ]
  invoke void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %604)
          to label %605 unwind label %628

605:                                              ; preds = %603
  %606 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %604, i64 1
  %607 = icmp eq ptr %606, %602
  br i1 %607, label %608, label %603

608:                                              ; preds = %605
  store ptr %601, ptr %6, align 8, !tbaa !5
  %609 = load ptr, ptr %6, align 8, !tbaa !5
  %610 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %609, i64 0
  %611 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %610, ptr noundef nonnull align 8 dereferenceable(12) %8)
  store i32 0, ptr %28, align 4, !tbaa !26
  br label %612

612:                                              ; preds = %625, %608
  %613 = load i32, ptr %28, align 4, !tbaa !26
  %614 = icmp slt i32 %613, 2
  br i1 %614, label %615, label %632

615:                                              ; preds = %612
  %616 = load ptr, ptr %6, align 8, !tbaa !5
  %617 = load i32, ptr %28, align 4, !tbaa !26
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %616, i64 %618
  %620 = load ptr, ptr %6, align 8, !tbaa !5
  %621 = load i32, ptr %28, align 4, !tbaa !26
  %622 = add nsw i32 %621, 1
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %620, i64 %623
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %619, ptr noundef nonnull align 8 dereferenceable(12) %624)
  br label %625

625:                                              ; preds = %615
  %626 = load i32, ptr %28, align 4, !tbaa !26
  %627 = add nsw i32 %626, 1
  store i32 %627, ptr %28, align 4, !tbaa !26
  br label %612, !llvm.loop !49

628:                                              ; preds = %603
  %629 = landingpad { ptr, i32 }
          cleanup
  %630 = extractvalue { ptr, i32 } %629, 0
  store ptr %630, ptr %30, align 8
  %631 = extractvalue { ptr, i32 } %629, 1
  store i32 %631, ptr %31, align 4
  call void @_ZdaPvm(ptr noundef %601, i64 noundef 64) #11
  br label %1312

632:                                              ; preds = %612
  %633 = load ptr, ptr %6, align 8, !tbaa !5
  %634 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %633, i64 0
  %635 = load ptr, ptr %6, align 8, !tbaa !5
  %636 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %635, i64 3
  call void @_ZN10tetgenmesh5eprevERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %634, ptr noundef nonnull align 8 dereferenceable(12) %636)
  %637 = load ptr, ptr %6, align 8, !tbaa !5
  %638 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %637, i64 3
  %639 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %638, i32 0, i32 1
  %640 = load i32, ptr %639, align 8, !tbaa !30
  store i32 %640, ptr %26, align 4, !tbaa !26
  %641 = load ptr, ptr %6, align 8, !tbaa !5
  %642 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %641, i64 3
  %643 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %642, i32 0, i32 0
  %644 = load ptr, ptr %643, align 8, !tbaa !29
  %645 = load ptr, ptr %6, align 8, !tbaa !5
  %646 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %645, i64 3
  %647 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %646, i32 0, i32 1
  %648 = load i32, ptr %647, align 8, !tbaa !30
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %649
  %651 = load i32, ptr %650, align 4, !tbaa !26
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds ptr, ptr %644, i64 %652
  %654 = load ptr, ptr %653, align 8, !tbaa !5
  %655 = load ptr, ptr %6, align 8, !tbaa !5
  %656 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %655, i64 3
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %654, ptr noundef nonnull align 8 dereferenceable(12) %656)
  %657 = load i32, ptr %26, align 4, !tbaa !26
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %658
  %660 = load ptr, ptr %6, align 8, !tbaa !5
  %661 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %660, i64 3
  %662 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %661, i32 0, i32 1
  %663 = load i32, ptr %662, align 8, !tbaa !30
  %664 = sext i32 %663 to i64
  %665 = getelementptr inbounds [12 x i32], ptr %659, i64 0, i64 %664
  %666 = load i32, ptr %665, align 4, !tbaa !26
  %667 = load ptr, ptr %6, align 8, !tbaa !5
  %668 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %667, i64 3
  %669 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %668, i32 0, i32 1
  store i32 %666, ptr %669, align 8, !tbaa !30
  %670 = load ptr, ptr %6, align 8, !tbaa !5
  %671 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %670, i64 3
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %671)
  %672 = load ptr, ptr %6, align 8, !tbaa !5
  %673 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %672, i64 3
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %673)
  %674 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6flip41EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %674, i32 noundef 1, ptr noundef %20)
  br label %1154

675:                                              ; preds = %597
  %676 = load i32, ptr %22, align 4, !tbaa !27
  %677 = icmp eq i32 %676, 3
  br i1 %677, label %678, label %880

678:                                              ; preds = %675
  %679 = call noalias noundef nonnull ptr @_Znam(i64 noundef 96) #10
  %680 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %679, i64 6
  br label %681

681:                                              ; preds = %683, %678
  %682 = phi ptr [ %679, %678 ], [ %684, %683 ]
  invoke void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %682)
          to label %683 unwind label %706

683:                                              ; preds = %681
  %684 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %682, i64 1
  %685 = icmp eq ptr %684, %680
  br i1 %685, label %686, label %681

686:                                              ; preds = %683
  store ptr %679, ptr %6, align 8, !tbaa !5
  %687 = load ptr, ptr %6, align 8, !tbaa !5
  %688 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %687, i64 0
  %689 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %688, ptr noundef nonnull align 8 dereferenceable(12) %8)
  store i32 0, ptr %28, align 4, !tbaa !26
  br label %690

690:                                              ; preds = %703, %686
  %691 = load i32, ptr %28, align 4, !tbaa !26
  %692 = icmp slt i32 %691, 2
  br i1 %692, label %693, label %710

693:                                              ; preds = %690
  %694 = load ptr, ptr %6, align 8, !tbaa !5
  %695 = load i32, ptr %28, align 4, !tbaa !26
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %694, i64 %696
  %698 = load ptr, ptr %6, align 8, !tbaa !5
  %699 = load i32, ptr %28, align 4, !tbaa !26
  %700 = add nsw i32 %699, 1
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %698, i64 %701
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %697, ptr noundef nonnull align 8 dereferenceable(12) %702)
  br label %703

703:                                              ; preds = %693
  %704 = load i32, ptr %28, align 4, !tbaa !26
  %705 = add nsw i32 %704, 1
  store i32 %705, ptr %28, align 4, !tbaa !26
  br label %690, !llvm.loop !50

706:                                              ; preds = %681
  %707 = landingpad { ptr, i32 }
          cleanup
  %708 = extractvalue { ptr, i32 } %707, 0
  store ptr %708, ptr %30, align 8
  %709 = extractvalue { ptr, i32 } %707, 1
  store i32 %709, ptr %31, align 4
  call void @_ZdaPvm(ptr noundef %679, i64 noundef 96) #11
  br label %1312

710:                                              ; preds = %690
  %711 = load ptr, ptr %6, align 8, !tbaa !5
  %712 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %711, i64 0
  %713 = load ptr, ptr %6, align 8, !tbaa !5
  %714 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %713, i64 3
  call void @_ZN10tetgenmesh5eprevERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %712, ptr noundef nonnull align 8 dereferenceable(12) %714)
  %715 = load ptr, ptr %6, align 8, !tbaa !5
  %716 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %715, i64 3
  %717 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %716, i32 0, i32 1
  %718 = load i32, ptr %717, align 8, !tbaa !30
  store i32 %718, ptr %26, align 4, !tbaa !26
  %719 = load ptr, ptr %6, align 8, !tbaa !5
  %720 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %719, i64 3
  %721 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %720, i32 0, i32 0
  %722 = load ptr, ptr %721, align 8, !tbaa !29
  %723 = load ptr, ptr %6, align 8, !tbaa !5
  %724 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %723, i64 3
  %725 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %724, i32 0, i32 1
  %726 = load i32, ptr %725, align 8, !tbaa !30
  %727 = sext i32 %726 to i64
  %728 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %727
  %729 = load i32, ptr %728, align 4, !tbaa !26
  %730 = sext i32 %729 to i64
  %731 = getelementptr inbounds ptr, ptr %722, i64 %730
  %732 = load ptr, ptr %731, align 8, !tbaa !5
  %733 = load ptr, ptr %6, align 8, !tbaa !5
  %734 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %733, i64 3
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %732, ptr noundef nonnull align 8 dereferenceable(12) %734)
  %735 = load i32, ptr %26, align 4, !tbaa !26
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %736
  %738 = load ptr, ptr %6, align 8, !tbaa !5
  %739 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %738, i64 3
  %740 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %739, i32 0, i32 1
  %741 = load i32, ptr %740, align 8, !tbaa !30
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds [12 x i32], ptr %737, i64 0, i64 %742
  %744 = load i32, ptr %743, align 4, !tbaa !26
  %745 = load ptr, ptr %6, align 8, !tbaa !5
  %746 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %745, i64 3
  %747 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %746, i32 0, i32 1
  store i32 %744, ptr %747, align 8, !tbaa !30
  %748 = load ptr, ptr %6, align 8, !tbaa !5
  %749 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %748, i64 3
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %749)
  %750 = load ptr, ptr %6, align 8, !tbaa !5
  %751 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %750, i64 3
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %751)
  store i32 3, ptr %28, align 4, !tbaa !26
  br label %752

752:                                              ; preds = %765, %710
  %753 = load i32, ptr %28, align 4, !tbaa !26
  %754 = icmp slt i32 %753, 5
  br i1 %754, label %755, label %768

755:                                              ; preds = %752
  %756 = load ptr, ptr %6, align 8, !tbaa !5
  %757 = load i32, ptr %28, align 4, !tbaa !26
  %758 = sext i32 %757 to i64
  %759 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %756, i64 %758
  %760 = load ptr, ptr %6, align 8, !tbaa !5
  %761 = load i32, ptr %28, align 4, !tbaa !26
  %762 = add nsw i32 %761, 1
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %760, i64 %763
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %759, ptr noundef nonnull align 8 dereferenceable(12) %764)
  br label %765

765:                                              ; preds = %755
  %766 = load i32, ptr %28, align 4, !tbaa !26
  %767 = add nsw i32 %766, 1
  store i32 %767, ptr %28, align 4, !tbaa !26
  br label %752, !llvm.loop !51

768:                                              ; preds = %752
  %769 = load i32, ptr %21, align 4, !tbaa !9
  %770 = icmp eq i32 %769, 7
  br i1 %770, label %771, label %876

771:                                              ; preds = %768
  store i32 0, ptr %23, align 4, !tbaa !26
  store i32 3, ptr %28, align 4, !tbaa !26
  br label %772

772:                                              ; preds = %809, %771
  %773 = load i32, ptr %28, align 4, !tbaa !26
  %774 = icmp slt i32 %773, 6
  br i1 %774, label %775, label %812

775:                                              ; preds = %772
  %776 = load ptr, ptr %6, align 8, !tbaa !5
  %777 = load i32, ptr %28, align 4, !tbaa !26
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %776, i64 %778
  %780 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %779, i32 0, i32 0
  %781 = load ptr, ptr %780, align 8, !tbaa !29
  %782 = getelementptr inbounds ptr, ptr %781, i64 9
  %783 = load ptr, ptr %782, align 8, !tbaa !5
  %784 = icmp ne ptr %783, null
  br i1 %784, label %785, label %808

785:                                              ; preds = %775
  %786 = load ptr, ptr %6, align 8, !tbaa !5
  %787 = load i32, ptr %28, align 4, !tbaa !26
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %786, i64 %788
  %790 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %789, i32 0, i32 0
  %791 = load ptr, ptr %790, align 8, !tbaa !29
  %792 = getelementptr inbounds ptr, ptr %791, i64 9
  %793 = load ptr, ptr %792, align 8, !tbaa !5
  %794 = load ptr, ptr %6, align 8, !tbaa !5
  %795 = load i32, ptr %28, align 4, !tbaa !26
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %794, i64 %796
  %798 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %797, i32 0, i32 1
  %799 = load i32, ptr %798, align 8, !tbaa !30
  %800 = and i32 %799, 3
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds ptr, ptr %793, i64 %801
  %803 = load ptr, ptr %802, align 8, !tbaa !5
  %804 = icmp ne ptr %803, null
  br i1 %804, label %805, label %808

805:                                              ; preds = %785
  %806 = load i32, ptr %23, align 4, !tbaa !26
  %807 = add nsw i32 %806, 1
  store i32 %807, ptr %23, align 4, !tbaa !26
  br label %808

808:                                              ; preds = %805, %785, %775
  br label %809

809:                                              ; preds = %808
  %810 = load i32, ptr %28, align 4, !tbaa !26
  %811 = add nsw i32 %810, 1
  store i32 %811, ptr %28, align 4, !tbaa !26
  br label %772, !llvm.loop !52

812:                                              ; preds = %772
  %813 = load i32, ptr %23, align 4, !tbaa !26
  %814 = icmp sgt i32 %813, 0
  br i1 %814, label %815, label %875

815:                                              ; preds = %812
  store i32 0, ptr %28, align 4, !tbaa !26
  br label %816

816:                                              ; preds = %845, %815
  %817 = load i32, ptr %28, align 4, !tbaa !26
  %818 = icmp slt i32 %817, 3
  br i1 %818, label %819, label %848

819:                                              ; preds = %816
  %820 = load ptr, ptr %6, align 8, !tbaa !5
  %821 = load i32, ptr %28, align 4, !tbaa !26
  %822 = add nsw i32 %821, 3
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %820, i64 %823
  %825 = load i32, ptr %28, align 4, !tbaa !26
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 %826
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %824, ptr noundef nonnull align 8 dereferenceable(12) %827)
  %828 = load ptr, ptr %6, align 8, !tbaa !5
  %829 = load i32, ptr %28, align 4, !tbaa !26
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %828, i64 %830
  %832 = load ptr, ptr %6, align 8, !tbaa !5
  %833 = load i32, ptr %28, align 4, !tbaa !26
  %834 = add nsw i32 %833, 3
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %832, i64 %835
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %831, ptr noundef nonnull align 8 dereferenceable(12) %836)
  %837 = load i32, ptr %28, align 4, !tbaa !26
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 %838
  %840 = load ptr, ptr %6, align 8, !tbaa !5
  %841 = load i32, ptr %28, align 4, !tbaa !26
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %840, i64 %842
  %844 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %843, ptr noundef nonnull align 8 dereferenceable(12) %839)
  br label %845

845:                                              ; preds = %819
  %846 = load i32, ptr %28, align 4, !tbaa !26
  %847 = add nsw i32 %846, 1
  store i32 %847, ptr %28, align 4, !tbaa !26
  br label %816, !llvm.loop !53

848:                                              ; preds = %816
  %849 = load ptr, ptr %6, align 8, !tbaa !5
  %850 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %849, i64 1
  %851 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 1
  %852 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %851, ptr noundef nonnull align 8 dereferenceable(12) %850)
  %853 = load ptr, ptr %6, align 8, !tbaa !5
  %854 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %853, i64 2
  %855 = load ptr, ptr %6, align 8, !tbaa !5
  %856 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %855, i64 1
  %857 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %856, ptr noundef nonnull align 8 dereferenceable(12) %854)
  %858 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 1
  %859 = load ptr, ptr %6, align 8, !tbaa !5
  %860 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %859, i64 2
  %861 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %860, ptr noundef nonnull align 8 dereferenceable(12) %858)
  %862 = load ptr, ptr %6, align 8, !tbaa !5
  %863 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %862, i64 4
  %864 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 1
  %865 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %864, ptr noundef nonnull align 8 dereferenceable(12) %863)
  %866 = load ptr, ptr %6, align 8, !tbaa !5
  %867 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %866, i64 5
  %868 = load ptr, ptr %6, align 8, !tbaa !5
  %869 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %868, i64 4
  %870 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %869, ptr noundef nonnull align 8 dereferenceable(12) %867)
  %871 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 1
  %872 = load ptr, ptr %6, align 8, !tbaa !5
  %873 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %872, i64 5
  %874 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %873, ptr noundef nonnull align 8 dereferenceable(12) %871)
  br label %875

875:                                              ; preds = %848, %812
  br label %876

876:                                              ; preds = %875, %768
  %877 = load ptr, ptr %6, align 8, !tbaa !5
  %878 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %877, i64 3
  call void @_ZN10tetgenmesh6flip32EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %878, i32 noundef 1, ptr noundef %20)
  %879 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6flip41EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %879, i32 noundef 1, ptr noundef %20)
  br label %1153

880:                                              ; preds = %675
  %881 = load i32, ptr %22, align 4, !tbaa !27
  %882 = icmp eq i32 %881, 4
  br i1 %882, label %883, label %1152

883:                                              ; preds = %880
  store i32 0, ptr %27, align 4, !tbaa !26
  %884 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %885

885:                                              ; preds = %916, %883
  br label %886

886:                                              ; preds = %885
  %887 = load i32, ptr %27, align 4, !tbaa !26
  %888 = add nsw i32 %887, 1
  store i32 %888, ptr %27, align 4, !tbaa !26
  %889 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %890 = load i32, ptr %889, align 8, !tbaa !30
  store i32 %890, ptr %26, align 4, !tbaa !26
  %891 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 0
  %892 = load ptr, ptr %891, align 8, !tbaa !29
  %893 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %894 = load i32, ptr %893, align 8, !tbaa !30
  %895 = sext i32 %894 to i64
  %896 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %895
  %897 = load i32, ptr %896, align 4, !tbaa !26
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds ptr, ptr %892, i64 %898
  %900 = load ptr, ptr %899, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %900, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %901 = load i32, ptr %26, align 4, !tbaa !26
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %902
  %904 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %905 = load i32, ptr %904, align 8, !tbaa !30
  %906 = sext i32 %905 to i64
  %907 = getelementptr inbounds [12 x i32], ptr %903, i64 0, i64 %906
  %908 = load i32, ptr %907, align 4, !tbaa !26
  %909 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  store i32 %908, ptr %909, align 8, !tbaa !30
  %910 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 0
  %911 = load ptr, ptr %910, align 8, !tbaa !29
  %912 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %8, i32 0, i32 0
  %913 = load ptr, ptr %912, align 8, !tbaa !29
  %914 = icmp eq ptr %911, %913
  br i1 %914, label %915, label %916

915:                                              ; preds = %886
  br label %917

916:                                              ; preds = %886
  br label %885, !llvm.loop !54

917:                                              ; preds = %915
  %918 = load i32, ptr %27, align 4, !tbaa !26
  %919 = mul nsw i32 2, %918
  %920 = sext i32 %919 to i64
  %921 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %920, i64 16)
  %922 = extractvalue { i64, i1 } %921, 1
  %923 = extractvalue { i64, i1 } %921, 0
  %924 = select i1 %922, i64 -1, i64 %923
  %925 = call noalias noundef nonnull ptr @_Znam(i64 noundef %924) #10
  %926 = icmp eq i64 %920, 0
  br i1 %926, label %934, label %927

927:                                              ; preds = %917
  %928 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %925, i64 %920
  br label %929

929:                                              ; preds = %931, %927
  %930 = phi ptr [ %925, %927 ], [ %932, %931 ]
  invoke void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %930)
          to label %931 unwind label %956

931:                                              ; preds = %929
  %932 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %930, i64 1
  %933 = icmp eq ptr %932, %928
  br i1 %933, label %934, label %929

934:                                              ; preds = %931, %917
  store ptr %925, ptr %6, align 8, !tbaa !5
  %935 = load ptr, ptr %6, align 8, !tbaa !5
  %936 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %935, i64 0
  %937 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %936, ptr noundef nonnull align 8 dereferenceable(12) %8)
  store i32 0, ptr %28, align 4, !tbaa !26
  br label %938

938:                                              ; preds = %953, %934
  %939 = load i32, ptr %28, align 4, !tbaa !26
  %940 = load i32, ptr %27, align 4, !tbaa !26
  %941 = sub nsw i32 %940, 1
  %942 = icmp slt i32 %939, %941
  br i1 %942, label %943, label %960

943:                                              ; preds = %938
  %944 = load ptr, ptr %6, align 8, !tbaa !5
  %945 = load i32, ptr %28, align 4, !tbaa !26
  %946 = sext i32 %945 to i64
  %947 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %944, i64 %946
  %948 = load ptr, ptr %6, align 8, !tbaa !5
  %949 = load i32, ptr %28, align 4, !tbaa !26
  %950 = add nsw i32 %949, 1
  %951 = sext i32 %950 to i64
  %952 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %948, i64 %951
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %947, ptr noundef nonnull align 8 dereferenceable(12) %952)
  br label %953

953:                                              ; preds = %943
  %954 = load i32, ptr %28, align 4, !tbaa !26
  %955 = add nsw i32 %954, 1
  store i32 %955, ptr %28, align 4, !tbaa !26
  br label %938, !llvm.loop !55

956:                                              ; preds = %929
  %957 = landingpad { ptr, i32 }
          cleanup
  %958 = extractvalue { ptr, i32 } %957, 0
  store ptr %958, ptr %30, align 8
  %959 = extractvalue { ptr, i32 } %957, 1
  store i32 %959, ptr %31, align 4
  call void @_ZdaPvm(ptr noundef %925, i64 noundef %924) #11
  br label %1312

960:                                              ; preds = %938
  %961 = load ptr, ptr %6, align 8, !tbaa !5
  %962 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %961, i64 0
  %963 = load ptr, ptr %6, align 8, !tbaa !5
  %964 = load i32, ptr %27, align 4, !tbaa !26
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %963, i64 %965
  call void @_ZN10tetgenmesh5eprevERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %962, ptr noundef nonnull align 8 dereferenceable(12) %966)
  %967 = load ptr, ptr %6, align 8, !tbaa !5
  %968 = load i32, ptr %27, align 4, !tbaa !26
  %969 = sext i32 %968 to i64
  %970 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %967, i64 %969
  %971 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %970, i32 0, i32 1
  %972 = load i32, ptr %971, align 8, !tbaa !30
  store i32 %972, ptr %26, align 4, !tbaa !26
  %973 = load ptr, ptr %6, align 8, !tbaa !5
  %974 = load i32, ptr %27, align 4, !tbaa !26
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %973, i64 %975
  %977 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %976, i32 0, i32 0
  %978 = load ptr, ptr %977, align 8, !tbaa !29
  %979 = load ptr, ptr %6, align 8, !tbaa !5
  %980 = load i32, ptr %27, align 4, !tbaa !26
  %981 = sext i32 %980 to i64
  %982 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %979, i64 %981
  %983 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %982, i32 0, i32 1
  %984 = load i32, ptr %983, align 8, !tbaa !30
  %985 = sext i32 %984 to i64
  %986 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %985
  %987 = load i32, ptr %986, align 4, !tbaa !26
  %988 = sext i32 %987 to i64
  %989 = getelementptr inbounds ptr, ptr %978, i64 %988
  %990 = load ptr, ptr %989, align 8, !tbaa !5
  %991 = load ptr, ptr %6, align 8, !tbaa !5
  %992 = load i32, ptr %27, align 4, !tbaa !26
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %991, i64 %993
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %990, ptr noundef nonnull align 8 dereferenceable(12) %994)
  %995 = load i32, ptr %26, align 4, !tbaa !26
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %996
  %998 = load ptr, ptr %6, align 8, !tbaa !5
  %999 = load i32, ptr %27, align 4, !tbaa !26
  %1000 = sext i32 %999 to i64
  %1001 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %998, i64 %1000
  %1002 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1001, i32 0, i32 1
  %1003 = load i32, ptr %1002, align 8, !tbaa !30
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds [12 x i32], ptr %997, i64 0, i64 %1004
  %1006 = load i32, ptr %1005, align 4, !tbaa !26
  %1007 = load ptr, ptr %6, align 8, !tbaa !5
  %1008 = load i32, ptr %27, align 4, !tbaa !26
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1007, i64 %1009
  %1011 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1010, i32 0, i32 1
  store i32 %1006, ptr %1011, align 8, !tbaa !30
  %1012 = load ptr, ptr %6, align 8, !tbaa !5
  %1013 = load i32, ptr %27, align 4, !tbaa !26
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1012, i64 %1014
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1015)
  %1016 = load ptr, ptr %6, align 8, !tbaa !5
  %1017 = load i32, ptr %27, align 4, !tbaa !26
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1016, i64 %1018
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1019)
  %1020 = load i32, ptr %27, align 4, !tbaa !26
  store i32 %1020, ptr %28, align 4, !tbaa !26
  br label %1021

1021:                                             ; preds = %1037, %960
  %1022 = load i32, ptr %28, align 4, !tbaa !26
  %1023 = load i32, ptr %27, align 4, !tbaa !26
  %1024 = mul nsw i32 2, %1023
  %1025 = sub nsw i32 %1024, 1
  %1026 = icmp slt i32 %1022, %1025
  br i1 %1026, label %1027, label %1040

1027:                                             ; preds = %1021
  %1028 = load ptr, ptr %6, align 8, !tbaa !5
  %1029 = load i32, ptr %28, align 4, !tbaa !26
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1028, i64 %1030
  %1032 = load ptr, ptr %6, align 8, !tbaa !5
  %1033 = load i32, ptr %28, align 4, !tbaa !26
  %1034 = add nsw i32 %1033, 1
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1032, i64 %1035
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1031, ptr noundef nonnull align 8 dereferenceable(12) %1036)
  br label %1037

1037:                                             ; preds = %1027
  %1038 = load i32, ptr %28, align 4, !tbaa !26
  %1039 = add nsw i32 %1038, 1
  store i32 %1039, ptr %28, align 4, !tbaa !26
  br label %1021, !llvm.loop !56

1040:                                             ; preds = %1021
  %1041 = load ptr, ptr %6, align 8, !tbaa !5
  %1042 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1041, i64 0
  %1043 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  %1044 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1043, ptr noundef nonnull align 8 dereferenceable(12) %1042)
  %1045 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1045)
  %1046 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1046)
  %1047 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1047)
  %1048 = load ptr, ptr %6, align 8, !tbaa !5
  %1049 = load i32, ptr %27, align 4, !tbaa !26
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1048, i64 %1050
  %1052 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 1
  %1053 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1052, ptr noundef nonnull align 8 dereferenceable(12) %1051)
  %1054 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 1
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1054)
  %1055 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 1
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1055)
  %1056 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 1
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1056)
  %1057 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  call void @_ZN10tetgenmesh6flip23EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %1057, i32 noundef 1, ptr noundef %20)
  %1058 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 2
  %1059 = load ptr, ptr %6, align 8, !tbaa !5
  %1060 = load i32, ptr %27, align 4, !tbaa !26
  %1061 = sext i32 %1060 to i64
  %1062 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1059, i64 %1061
  %1063 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1062, ptr noundef nonnull align 8 dereferenceable(12) %1058)
  %1064 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  %1065 = load ptr, ptr %6, align 8, !tbaa !5
  %1066 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1065, i64 0
  %1067 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1066, ptr noundef nonnull align 8 dereferenceable(12) %1064)
  store i32 1, ptr %28, align 4, !tbaa !26
  br label %1068

1068:                                             ; preds = %1108, %1040
  %1069 = load i32, ptr %28, align 4, !tbaa !26
  %1070 = load i32, ptr %27, align 4, !tbaa !26
  %1071 = sub nsw i32 %1070, 1
  %1072 = icmp slt i32 %1069, %1071
  br i1 %1072, label %1073, label %1111

1073:                                             ; preds = %1068
  %1074 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 1
  %1075 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  %1076 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1075, ptr noundef nonnull align 8 dereferenceable(12) %1074)
  %1077 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1077)
  %1078 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1078)
  %1079 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1079)
  %1080 = load ptr, ptr %6, align 8, !tbaa !5
  %1081 = load i32, ptr %27, align 4, !tbaa !26
  %1082 = load i32, ptr %28, align 4, !tbaa !26
  %1083 = add nsw i32 %1081, %1082
  %1084 = sext i32 %1083 to i64
  %1085 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1080, i64 %1084
  %1086 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 1
  %1087 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1086, ptr noundef nonnull align 8 dereferenceable(12) %1085)
  %1088 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 1
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1088)
  %1089 = load ptr, ptr %6, align 8, !tbaa !5
  %1090 = load i32, ptr %28, align 4, !tbaa !26
  %1091 = sext i32 %1090 to i64
  %1092 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1089, i64 %1091
  %1093 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 2
  %1094 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1093, ptr noundef nonnull align 8 dereferenceable(12) %1092)
  %1095 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 2
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1095)
  %1096 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 2
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1096)
  %1097 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  call void @_ZN10tetgenmesh6flip32EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %1097, i32 noundef 1, ptr noundef %20)
  %1098 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  %1099 = load ptr, ptr %6, align 8, !tbaa !5
  %1100 = load i32, ptr %28, align 4, !tbaa !26
  %1101 = sext i32 %1100 to i64
  %1102 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1099, i64 %1101
  %1103 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1102, ptr noundef nonnull align 8 dereferenceable(12) %1098)
  %1104 = load ptr, ptr %6, align 8, !tbaa !5
  %1105 = load i32, ptr %28, align 4, !tbaa !26
  %1106 = sext i32 %1105 to i64
  %1107 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1104, i64 %1106
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1107)
  br label %1108

1108:                                             ; preds = %1073
  %1109 = load i32, ptr %28, align 4, !tbaa !26
  %1110 = add nsw i32 %1109, 1
  store i32 %1110, ptr %28, align 4, !tbaa !26
  br label %1068, !llvm.loop !57

1111:                                             ; preds = %1068
  %1112 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 1
  %1113 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 3
  %1114 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1113, ptr noundef nonnull align 8 dereferenceable(12) %1112)
  %1115 = load ptr, ptr %6, align 8, !tbaa !5
  %1116 = load i32, ptr %27, align 4, !tbaa !26
  %1117 = sext i32 %1116 to i64
  %1118 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1115, i64 %1117
  %1119 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  %1120 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1119, ptr noundef nonnull align 8 dereferenceable(12) %1118)
  %1121 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1121)
  %1122 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1122)
  %1123 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1123)
  %1124 = load ptr, ptr %6, align 8, !tbaa !5
  %1125 = load i32, ptr %27, align 4, !tbaa !26
  %1126 = sub nsw i32 %1125, 1
  %1127 = sext i32 %1126 to i64
  %1128 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1124, i64 %1127
  %1129 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 1
  %1130 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1129, ptr noundef nonnull align 8 dereferenceable(12) %1128)
  %1131 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 1
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1131)
  %1132 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 1
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1132)
  %1133 = load ptr, ptr %6, align 8, !tbaa !5
  %1134 = load i32, ptr %27, align 4, !tbaa !26
  %1135 = mul nsw i32 2, %1134
  %1136 = sub nsw i32 %1135, 1
  %1137 = sext i32 %1136 to i64
  %1138 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1133, i64 %1137
  %1139 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 2
  %1140 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1139, ptr noundef nonnull align 8 dereferenceable(12) %1138)
  %1141 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 2
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1141)
  %1142 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 2
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1142)
  %1143 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 2
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %1143)
  %1144 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  call void @_ZN10tetgenmesh6flip41EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %1144, i32 noundef 1, ptr noundef %20)
  %1145 = getelementptr inbounds [4 x %"class.tetgenmesh::triface"], ptr %7, i64 0, i64 0
  %1146 = load ptr, ptr %6, align 8, !tbaa !5
  %1147 = load i32, ptr %27, align 4, !tbaa !26
  %1148 = sub nsw i32 %1147, 1
  %1149 = sext i32 %1148 to i64
  %1150 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1146, i64 %1149
  %1151 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1150, ptr noundef nonnull align 8 dereferenceable(12) %1145)
  br label %1152

1152:                                             ; preds = %1111, %880
  br label %1153

1153:                                             ; preds = %1152, %876
  br label %1154

1154:                                             ; preds = %1153, %632
  %1155 = load ptr, ptr %6, align 8, !tbaa !5
  %1156 = icmp eq ptr %1155, null
  br i1 %1156, label %1158, label %1157

1157:                                             ; preds = %1154
  call void @_ZdaPv(ptr noundef %1155) #11
  br label %1158

1158:                                             ; preds = %1157, %1154
  %1159 = load i32, ptr %21, align 4, !tbaa !9
  %1160 = icmp eq i32 %1159, 6
  br i1 %1160, label %1161, label %1265

1161:                                             ; preds = %1158
  %1162 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 53
  %1163 = load i32, ptr %1162, align 8, !tbaa !37
  %1164 = icmp ne i32 %1163, 0
  %1165 = zext i1 %1164 to i64
  %1166 = select i1 %1164, i32 0, i32 1
  store i32 %1166, ptr %25, align 4, !tbaa !26
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %1167 = load ptr, ptr %5, align 8, !tbaa !5
  %1168 = load i32, ptr %25, align 4, !tbaa !26
  %1169 = call noundef i32 @_ZN10tetgenmesh13sremovevertexEPdPNS_4faceES2_i(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %1167, ptr noundef %11, ptr noundef %15, i32 noundef %1168)
  %1170 = getelementptr inbounds %"class.tetgenmesh::face", ptr %15, i32 0, i32 1
  store i32 0, ptr %1170, align 8, !tbaa !11
  %1171 = load ptr, ptr %17, align 8, !tbaa !5
  call void @_ZN10tetgenmesh12point2tetorgEPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %1171, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %1172 = load ptr, ptr %18, align 8, !tbaa !5
  %1173 = call noundef i32 @_ZN10tetgenmesh13finddirectionEPNS_7trifaceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %8, ptr noundef %1172)
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %1174 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %1175

1175:                                             ; preds = %1204, %1161
  br label %1176

1176:                                             ; preds = %1175
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %1177 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %1178 = load i32, ptr %1177, align 8, !tbaa !30
  store i32 %1178, ptr %26, align 4, !tbaa !26
  %1179 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 0
  %1180 = load ptr, ptr %1179, align 8, !tbaa !29
  %1181 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %1182 = load i32, ptr %1181, align 8, !tbaa !30
  %1183 = sext i32 %1182 to i64
  %1184 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %1183
  %1185 = load i32, ptr %1184, align 4, !tbaa !26
  %1186 = sext i32 %1185 to i64
  %1187 = getelementptr inbounds ptr, ptr %1180, i64 %1186
  %1188 = load ptr, ptr %1187, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %1188, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %1189 = load i32, ptr %26, align 4, !tbaa !26
  %1190 = sext i32 %1189 to i64
  %1191 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %1190
  %1192 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %1193 = load i32, ptr %1192, align 8, !tbaa !30
  %1194 = sext i32 %1193 to i64
  %1195 = getelementptr inbounds [12 x i32], ptr %1191, i64 0, i64 %1194
  %1196 = load i32, ptr %1195, align 4, !tbaa !26
  %1197 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  store i32 %1196, ptr %1197, align 8, !tbaa !30
  %1198 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 0
  %1199 = load ptr, ptr %1198, align 8, !tbaa !29
  %1200 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %8, i32 0, i32 0
  %1201 = load ptr, ptr %1200, align 8, !tbaa !29
  %1202 = icmp eq ptr %1199, %1201
  br i1 %1202, label %1203, label %1204

1203:                                             ; preds = %1176
  br label %1205

1204:                                             ; preds = %1176
  br label %1175, !llvm.loop !58

1205:                                             ; preds = %1203
  %1206 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 53
  %1207 = load i32, ptr %1206, align 8, !tbaa !37
  %1208 = icmp ne i32 %1207, 0
  br i1 %1208, label %1209, label %1262

1209:                                             ; preds = %1205
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %1210 = getelementptr inbounds %"class.tetgenmesh::face", ptr %11, i32 0, i32 0
  %1211 = load ptr, ptr %1210, align 8, !tbaa !46
  %1212 = icmp ne ptr %1211, null
  br i1 %1212, label %1213, label %1261

1213:                                             ; preds = %1209
  %1214 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %11)
  br label %1215

1215:                                             ; preds = %1259, %1213
  br label %1216

1216:                                             ; preds = %1215
  %1217 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %1218 = load ptr, ptr %17, align 8, !tbaa !5
  %1219 = icmp ne ptr %1217, %1218
  br i1 %1219, label %1220, label %1221

1220:                                             ; preds = %1216
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %12)
  br label %1221

1221:                                             ; preds = %1220, %1216
  %1222 = call noundef ptr @_ZN10tetgenmesh5sapexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %12)
  store ptr %1222, ptr %19, align 8, !tbaa !5
  %1223 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %1224

1224:                                             ; preds = %1230, %1221
  br label %1225

1225:                                             ; preds = %1224
  %1226 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %1227 = load ptr, ptr %19, align 8, !tbaa !5
  %1228 = icmp eq ptr %1226, %1227
  br i1 %1228, label %1229, label %1230

1229:                                             ; preds = %1225
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %12)
  br label %1252

1230:                                             ; preds = %1225
  %1231 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %1232 = load i32, ptr %1231, align 8, !tbaa !30
  store i32 %1232, ptr %26, align 4, !tbaa !26
  %1233 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 0
  %1234 = load ptr, ptr %1233, align 8, !tbaa !29
  %1235 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %1236 = load i32, ptr %1235, align 8, !tbaa !30
  %1237 = sext i32 %1236 to i64
  %1238 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %1237
  %1239 = load i32, ptr %1238, align 4, !tbaa !26
  %1240 = sext i32 %1239 to i64
  %1241 = getelementptr inbounds ptr, ptr %1234, i64 %1240
  %1242 = load ptr, ptr %1241, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %1242, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %1243 = load i32, ptr %26, align 4, !tbaa !26
  %1244 = sext i32 %1243 to i64
  %1245 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %1244
  %1246 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  %1247 = load i32, ptr %1246, align 8, !tbaa !30
  %1248 = sext i32 %1247 to i64
  %1249 = getelementptr inbounds [12 x i32], ptr %1245, i64 0, i64 %1248
  %1250 = load i32, ptr %1249, align 4, !tbaa !26
  %1251 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %9, i32 0, i32 1
  store i32 %1250, ptr %1251, align 8, !tbaa !30
  br label %1224, !llvm.loop !59

1252:                                             ; preds = %1229
  call void @_ZN10tetgenmesh10spivotselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %1253 = getelementptr inbounds %"class.tetgenmesh::face", ptr %12, i32 0, i32 0
  %1254 = load ptr, ptr %1253, align 8, !tbaa !46
  %1255 = getelementptr inbounds %"class.tetgenmesh::face", ptr %11, i32 0, i32 0
  %1256 = load ptr, ptr %1255, align 8, !tbaa !46
  %1257 = icmp eq ptr %1254, %1256
  br i1 %1257, label %1258, label %1259

1258:                                             ; preds = %1252
  br label %1260

1259:                                             ; preds = %1252
  br label %1215, !llvm.loop !60

1260:                                             ; preds = %1258
  br label %1261

1261:                                             ; preds = %1260, %1209
  br label %1262

1262:                                             ; preds = %1261, %1205
  %1263 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 25
  %1264 = load ptr, ptr %1263, align 8, !tbaa !40
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1264)
  br label %1265

1265:                                             ; preds = %1262, %1158
  %1266 = load ptr, ptr %5, align 8, !tbaa !5
  %1267 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %1266)
  %1268 = icmp ne i32 %1267, 0
  br i1 %1268, label %1269, label %1274

1269:                                             ; preds = %1265
  %1270 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %32, ptr noundef %1270, i32 noundef 0)
  %1271 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 81
  %1272 = load i64, ptr %1271, align 8, !tbaa !61
  %1273 = add nsw i64 %1272, 1
  store i64 %1273, ptr %1271, align 8, !tbaa !61
  br label %1274

1274:                                             ; preds = %1269, %1265
  %1275 = load i32, ptr %21, align 4, !tbaa !9
  %1276 = icmp ne i32 %1275, 5
  br i1 %1276, label %1277, label %1309

1277:                                             ; preds = %1274
  %1278 = load i32, ptr %21, align 4, !tbaa !9
  %1279 = icmp eq i32 %1278, 6
  br i1 %1279, label %1280, label %1284

1280:                                             ; preds = %1277
  %1281 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 83
  %1282 = load i64, ptr %1281, align 8, !tbaa !42
  %1283 = add nsw i64 %1282, -1
  store i64 %1283, ptr %1281, align 8, !tbaa !42
  br label %1300

1284:                                             ; preds = %1277
  %1285 = load i32, ptr %21, align 4, !tbaa !9
  %1286 = icmp eq i32 %1285, 7
  br i1 %1286, label %1287, label %1291

1287:                                             ; preds = %1284
  %1288 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 84
  %1289 = load i64, ptr %1288, align 8, !tbaa !62
  %1290 = add nsw i64 %1289, -1
  store i64 %1290, ptr %1288, align 8, !tbaa !62
  br label %1299

1291:                                             ; preds = %1284
  %1292 = load i32, ptr %21, align 4, !tbaa !9
  %1293 = icmp eq i32 %1292, 8
  br i1 %1293, label %1294, label %1298

1294:                                             ; preds = %1291
  %1295 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 85
  %1296 = load i64, ptr %1295, align 8, !tbaa !43
  %1297 = add nsw i64 %1296, -1
  store i64 %1297, ptr %1295, align 8, !tbaa !43
  br label %1298

1298:                                             ; preds = %1294, %1291
  br label %1299

1299:                                             ; preds = %1298, %1287
  br label %1300

1300:                                             ; preds = %1299, %1280
  %1301 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 79
  %1302 = load i64, ptr %1301, align 8, !tbaa !63
  %1303 = icmp sgt i64 %1302, 0
  br i1 %1303, label %1304, label %1308

1304:                                             ; preds = %1300
  %1305 = getelementptr inbounds %class.tetgenmesh, ptr %32, i32 0, i32 79
  %1306 = load i64, ptr %1305, align 8, !tbaa !63
  %1307 = add nsw i64 %1306, 1
  store i64 %1307, ptr %1305, align 8, !tbaa !63
  br label %1308

1308:                                             ; preds = %1304, %1300
  br label %1309

1309:                                             ; preds = %1308, %1274
  store i32 1, ptr %3, align 4
  store i32 1, ptr %29, align 4
  br label %1310

1310:                                             ; preds = %1309, %499, %485, %115
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %7) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #9
  %1311 = load i32, ptr %3, align 4
  ret i32 %1311

1312:                                             ; preds = %956, %706, %628
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %7) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #9
  br label %1313

1313:                                             ; preds = %1312
  %1314 = load ptr, ptr %30, align 8
  %1315 = load i32, ptr %31, align 4
  %1316 = insertvalue { ptr, i32 } poison, ptr %1314, 0
  %1317 = insertvalue { ptr, i32 } %1316, i32 %1315, 1
  resume { ptr, i32 } %1317
}

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


; 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
@.str.421 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.422 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.423 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.424 = external hidden unnamed_addr constant [38 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: 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 @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12)) 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 #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: 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 #5 align 2

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

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

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

; Function Attrs: 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 @_ZN10tetgenmesh6senextERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef range(i32 0, 2) i32 @_ZN10tetgenmesh19removevertexbyflipsEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1) local_unnamed_addr #7 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca [4 x %"class.tetgenmesh::triface"], align 16
  %4 = alloca %"class.tetgenmesh::triface", align 8
  %5 = alloca %"class.tetgenmesh::triface", align 8
  %6 = alloca %"class.tetgenmesh::triface", align 8
  %7 = alloca %"class.tetgenmesh::face", align 8
  %8 = alloca %"class.tetgenmesh::face", align 8
  %9 = alloca %"class.tetgenmesh::face", align 8
  %10 = alloca %"class.tetgenmesh::face", align 8
  %11 = alloca %"class.tetgenmesh::face", align 8
  %12 = alloca %"class.tetgenmesh::face", align 8
  %13 = alloca %"class.tetgenmesh::flipconstraints", align 8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %3) #8
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %3)
  %.ptr.1 = getelementptr inbounds i8, ptr %3, i64 16
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  %.ptr.2 = getelementptr inbounds i8, ptr %3, i64 32
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  %.ptr.3 = getelementptr inbounds i8, ptr %3, i64 48
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %.ptr.3)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #8
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %4)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #8
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %5)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #8
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #8
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #8
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #8
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #8
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #8
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %11)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #8
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %13) #8
  call void @_ZN10tetgenmesh15flipconstraintsC2Ev(ptr noundef nonnull align 8 dereferenceable(120) %13)
  %14 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1)
  %15 = icmp eq i32 %14, 6
  br i1 %15, label %16, label %38

16:                                               ; preds = %2
  %17 = call noundef ptr @_ZN10tetgenmesh8point2shEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1)
  call void @_ZN10tetgenmesh7sdecodeEPPdRNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %17, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %18 = getelementptr inbounds i8, ptr %10, i64 8
  store i32 0, ptr %18, align 8, !tbaa !5
  %19 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %20 = icmp eq ptr %19, %1
  br i1 %20, label %21, label %23

21:                                               ; preds = %16
  call void @_ZN10tetgenmesh6senextERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %11)
  call void @_ZN10tetgenmesh10spivotselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %22 = getelementptr inbounds i8, ptr %11, i64 8
  br label %25

23:                                               ; preds = %16
  %24 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %11, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh7senext2ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh10spivotselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  br label %25

25:                                               ; preds = %23, %21
  %.sink = phi ptr [ %18, %23 ], [ %22, %21 ]
  store i32 0, ptr %.sink, align 8, !tbaa !5
  %26 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %27 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %28 = getelementptr inbounds i8, ptr %0, i64 16
  %29 = load ptr, ptr %28, align 8, !tbaa !11
  %30 = getelementptr inbounds i8, ptr %29, i64 148
  %31 = load i32, ptr %30, align 4, !tbaa !16
  %32 = icmp sgt i32 %31, 2
  br i1 %32, label %33, label %66

33:                                               ; preds = %25
  %34 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1)
  %35 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %26)
  %36 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %27)
  %37 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.421, i32 noundef %34, i32 noundef %35, i32 noundef %36)
  br label %66

38:                                               ; preds = %2
  switch i32 %14, label %.thread.thread [
    i32 7, label %39
    i32 8, label %48
    i32 5, label %57
  ]

39:                                               ; preds = %38
  %40 = getelementptr inbounds i8, ptr %0, i64 16
  %41 = load ptr, ptr %40, align 8, !tbaa !11
  %42 = getelementptr inbounds i8, ptr %41, i64 148
  %43 = load i32, ptr %42, align 4, !tbaa !16
  %44 = icmp sgt i32 %43, 2
  br i1 %44, label %45, label %66

45:                                               ; preds = %39
  %46 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1)
  %47 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.422, i32 noundef %46)
  br label %66

48:                                               ; preds = %38
  %49 = getelementptr inbounds i8, ptr %0, i64 16
  %50 = load ptr, ptr %49, align 8, !tbaa !11
  %51 = getelementptr inbounds i8, ptr %50, i64 148
  %52 = load i32, ptr %51, align 4, !tbaa !16
  %53 = icmp sgt i32 %52, 2
  br i1 %53, label %54, label %66

54:                                               ; preds = %48
  %55 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1)
  %56 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.423, i32 noundef %55)
  br label %66

57:                                               ; preds = %38
  %58 = getelementptr inbounds i8, ptr %0, i64 16
  %59 = load ptr, ptr %58, align 8, !tbaa !11
  %60 = getelementptr inbounds i8, ptr %59, i64 148
  %61 = load i32, ptr %60, align 4, !tbaa !16
  %62 = icmp sgt i32 %61, 2
  br i1 %62, label %63, label %66

63:                                               ; preds = %57
  %64 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1)
  %65 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.424, i32 noundef %64)
  br label %66

66:                                               ; preds = %45, %39, %63, %57, %48, %54, %25, %33
  %.0249 = phi ptr [ %26, %33 ], [ %26, %25 ], [ null, %45 ], [ null, %39 ], [ null, %54 ], [ null, %48 ], [ null, %63 ], [ null, %57 ]
  %.0248 = phi ptr [ %27, %33 ], [ %27, %25 ], [ null, %45 ], [ null, %39 ], [ null, %54 ], [ null, %48 ], [ null, %63 ], [ null, %57 ]
  %67 = getelementptr inbounds i8, ptr %0, i64 128
  %68 = load ptr, ptr %67, align 8, !tbaa !19
  %69 = getelementptr inbounds i8, ptr %0, i64 168
  %70 = load ptr, ptr %69, align 8, !tbaa !20
  %71 = call noundef i32 @_ZN10tetgenmesh13getvertexstarEiPdPNS_9arraypoolES2_S2_(ptr noundef nonnull align 8 dereferenceable(1536) %0, i32 noundef 1, ptr noundef %1, ptr noundef %68, ptr noundef %70, ptr noundef null)
  %72 = load ptr, ptr %67, align 8, !tbaa !19
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %72)
  %73 = load ptr, ptr %69, align 8, !tbaa !20
  %74 = getelementptr inbounds i8, ptr %73, i64 32
  %75 = load i64, ptr %74, align 8, !tbaa !21
  %76 = icmp sgt i64 %75, 3
  br i1 %76, label %77, label %79

77:                                               ; preds = %66
  %78 = call noundef i32 @_ZN10tetgenmesh19reduceedgesatvertexEPdPNS_9arraypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1, ptr noundef nonnull %73)
  %.pre = load ptr, ptr %69, align 8, !tbaa !20
  br label %81

79:                                               ; preds = %66
  %80 = trunc i64 %75 to i32
  br label %81

81:                                               ; preds = %79, %77
  %82 = phi ptr [ %.pre, %77 ], [ %73, %79 ]
  %.0240 = phi i32 [ %78, %77 ], [ %80, %79 ]
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %82)
  switch i32 %.0240, label %194 [
    i32 4, label %83
    i32 5, label %84
  ]

83:                                               ; preds = %81
  call void @_ZN10tetgenmesh12point2tetorgEPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(12) %4)
  br label %.thread292

84:                                               ; preds = %81
  br i1 %15, label %85, label %123

85:                                               ; preds = %84
  call void @_ZN10tetgenmesh9sstpivot1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %86 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %.not = icmp eq ptr %86, %1
  br i1 %.not, label %88, label %87

87:                                               ; preds = %85
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  br label %88

88:                                               ; preds = %87, %85
  store ptr null, ptr %6, align 8, !tbaa !23
  %89 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %90 = getelementptr inbounds i8, ptr %5, i64 8
  br label %91

91:                                               ; preds = %97, %88
  %.0 = phi i32 [ 0, %88 ], [ %92, %97 ]
  %92 = add nuw nsw i32 %.0, 1
  %93 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %94 = icmp eq ptr %93, %.0248
  br i1 %94, label %95, label %97

95:                                               ; preds = %91
  %96 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br label %97

97:                                               ; preds = %95, %91
  %98 = load i32, ptr %90, align 8, !tbaa !24
  %99 = load ptr, ptr %5, align 8, !tbaa !23
  %100 = sext i32 %98 to i64
  %101 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %100
  %102 = load i32, ptr %101, align 4, !tbaa !25
  %103 = sext i32 %102 to i64
  %104 = getelementptr inbounds ptr, ptr %99, i64 %103
  %105 = load ptr, ptr %104, align 8, !tbaa !26
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %105, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %106 = load i32, ptr %90, align 8, !tbaa !24
  %107 = sext i32 %106 to i64
  %108 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %100, i64 %107
  %109 = load i32, ptr %108, align 4, !tbaa !25
  store i32 %109, ptr %90, align 8, !tbaa !24
  %110 = load ptr, ptr %5, align 8, !tbaa !23
  %111 = load ptr, ptr %4, align 8, !tbaa !23
  %112 = icmp eq ptr %110, %111
  br i1 %112, label %113, label %91, !llvm.loop !27

113:                                              ; preds = %97
  %114 = icmp eq i32 %92, 4
  br i1 %114, label %115, label %194

115:                                              ; preds = %113
  %116 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %117 = icmp eq ptr %116, %.0248
  br i1 %117, label %118, label %194

118:                                              ; preds = %115
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %4)
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %119 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %4)
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  %120 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %121 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  %122 = icmp eq ptr %120, %121
  br i1 %122, label %.thread292, label %194

123:                                              ; preds = %84
  %124 = icmp eq i32 %14, 7
  br i1 %124, label %125, label %.thread.thread

125:                                              ; preds = %123
  call void @_ZN10tetgenmesh12point2tetorgEPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %126 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %127 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1, ptr noundef nonnull align 8 dereferenceable(12) %4)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  %128 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2, ptr noundef nonnull align 8 dereferenceable(12) %4)
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  store ptr null, ptr %4, align 8, !tbaa !23
  %129 = getelementptr inbounds i8, ptr %5, i64 8
  %130 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %.pre365 = load i32, ptr %129, align 8, !tbaa !24
  %.pre366 = load ptr, ptr %5, align 8, !tbaa !23
  br label %173

131:                                              ; preds = %190
  %132 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  %.pre367 = load i32, ptr %129, align 8, !tbaa !24
  %.pre368 = load ptr, ptr %5, align 8, !tbaa !23
  br label %133

133:                                              ; preds = %133, %131
  %134 = phi ptr [ %.pre368, %131 ], [ %147, %133 ]
  %135 = phi i32 [ %.pre367, %131 ], [ %146, %133 ]
  %.1241.1 = phi i32 [ 0, %131 ], [ %136, %133 ]
  %136 = add nuw nsw i32 %.1241.1, 1
  %137 = sext i32 %135 to i64
  %138 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %137
  %139 = load i32, ptr %138, align 4, !tbaa !25
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds ptr, ptr %134, i64 %140
  %142 = load ptr, ptr %141, align 8, !tbaa !26
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %142, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %143 = load i32, ptr %129, align 8, !tbaa !24
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %137, i64 %144
  %146 = load i32, ptr %145, align 4, !tbaa !25
  store i32 %146, ptr %129, align 8, !tbaa !24
  %147 = load ptr, ptr %5, align 8, !tbaa !23
  %148 = load ptr, ptr %.ptr.1, align 16, !tbaa !23
  %149 = icmp eq ptr %147, %148
  br i1 %149, label %150, label %133, !llvm.loop !29

150:                                              ; preds = %133
  %151 = icmp eq i32 %136, 3
  br i1 %151, label %192, label %152

152:                                              ; preds = %150
  %153 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  %.pre369 = load i32, ptr %129, align 8, !tbaa !24
  %.pre370 = load ptr, ptr %5, align 8, !tbaa !23
  br label %154

154:                                              ; preds = %154, %152
  %155 = phi ptr [ %.pre370, %152 ], [ %168, %154 ]
  %156 = phi i32 [ %.pre369, %152 ], [ %167, %154 ]
  %.1241.2 = phi i32 [ 0, %152 ], [ %157, %154 ]
  %157 = add nuw nsw i32 %.1241.2, 1
  %158 = sext i32 %156 to i64
  %159 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %158
  %160 = load i32, ptr %159, align 4, !tbaa !25
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds ptr, ptr %155, i64 %161
  %163 = load ptr, ptr %162, align 8, !tbaa !26
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %163, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %164 = load i32, ptr %129, align 8, !tbaa !24
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %158, i64 %165
  %167 = load i32, ptr %166, align 4, !tbaa !25
  store i32 %167, ptr %129, align 8, !tbaa !24
  %168 = load ptr, ptr %5, align 8, !tbaa !23
  %169 = load ptr, ptr %.ptr.2, align 16, !tbaa !23
  %170 = icmp eq ptr %168, %169
  br i1 %170, label %171, label %154, !llvm.loop !29

171:                                              ; preds = %154
  %172 = icmp eq i32 %157, 3
  br i1 %172, label %192, label %.thread292

173:                                              ; preds = %173, %125
  %174 = phi ptr [ %.pre366, %125 ], [ %187, %173 ]
  %175 = phi i32 [ %.pre365, %125 ], [ %186, %173 ]
  %.1241 = phi i32 [ 0, %125 ], [ %176, %173 ]
  %176 = add nuw nsw i32 %.1241, 1
  %177 = sext i32 %175 to i64
  %178 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %177
  %179 = load i32, ptr %178, align 4, !tbaa !25
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds ptr, ptr %174, i64 %180
  %182 = load ptr, ptr %181, align 8, !tbaa !26
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %182, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %183 = load i32, ptr %129, align 8, !tbaa !24
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %177, i64 %184
  %186 = load i32, ptr %185, align 4, !tbaa !25
  store i32 %186, ptr %129, align 8, !tbaa !24
  %187 = load ptr, ptr %5, align 8, !tbaa !23
  %188 = load ptr, ptr %3, align 16, !tbaa !23
  %189 = icmp eq ptr %187, %188
  br i1 %189, label %190, label %173, !llvm.loop !29

190:                                              ; preds = %173
  %191 = icmp eq i32 %176, 3
  br i1 %191, label %192, label %131

192:                                              ; preds = %171, %150, %190
  %.lcssa339 = phi ptr [ %3, %190 ], [ %.ptr.1, %150 ], [ %.ptr.2, %171 ]
  %193 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %4, ptr noundef nonnull align 8 dereferenceable(12) %.lcssa339)
  br label %.thread292

194:                                              ; preds = %81, %113, %115, %118
  br i1 %15, label %195, label %.thread.thread

195:                                              ; preds = %194
  call void @_ZN10tetgenmesh9sstpivot1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %196 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %.not258 = icmp eq ptr %196, %1
  br i1 %.not258, label %198, label %197

197:                                              ; preds = %195
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  br label %198

198:                                              ; preds = %197, %195
  %199 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %200 = getelementptr inbounds i8, ptr %6, i64 8
  %201 = getelementptr inbounds i8, ptr %5, i64 8
  br label %202

202:                                              ; preds = %215, %198
  call void @_ZN10tetgenmesh5eprevERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %203 = load i32, ptr %200, align 8, !tbaa !24
  %204 = load ptr, ptr %6, align 8, !tbaa !23
  %205 = and i32 %203, 3
  %206 = zext nneg i32 %205 to i64
  %207 = getelementptr inbounds ptr, ptr %204, i64 %206
  %208 = load ptr, ptr %207, align 8, !tbaa !26
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %208, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %209 = sext i32 %203 to i64
  %210 = load i32, ptr %200, align 8, !tbaa !24
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %209, i64 %211
  %213 = load i32, ptr %212, align 4, !tbaa !25
  store i32 %213, ptr %200, align 8, !tbaa !24
  %214 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %.not259 = icmp eq ptr %214, %.0248
  br i1 %.not259, label %215, label %.thread

215:                                              ; preds = %202
  %216 = load i32, ptr %201, align 8, !tbaa !24
  %217 = load ptr, ptr %5, align 8, !tbaa !23
  %218 = sext i32 %216 to i64
  %219 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %218
  %220 = load i32, ptr %219, align 4, !tbaa !25
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds ptr, ptr %217, i64 %221
  %223 = load ptr, ptr %222, align 8, !tbaa !26
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %223, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %224 = load i32, ptr %201, align 8, !tbaa !24
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %218, i64 %225
  %227 = load i32, ptr %226, align 4, !tbaa !25
  store i32 %227, ptr %201, align 8, !tbaa !24
  %228 = load ptr, ptr %5, align 8, !tbaa !23
  %229 = load ptr, ptr %4, align 8, !tbaa !23
  %230 = icmp eq ptr %228, %229
  br i1 %230, label %.thread292, label %202, !llvm.loop !30

.thread:                                          ; preds = %202
  %231 = call noundef i32 @_ZN10tetgenmesh7getedgeEPdS0_PNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %.0249, ptr noundef %.0248, ptr noundef nonnull %4)
  %.not260 = icmp ne i32 %231, 0
  %232 = getelementptr inbounds i8, ptr %0, i64 384
  %233 = load i32, ptr %232, align 8
  %.not261 = icmp eq i32 %233, 0
  %or.cond = select i1 %.not260, i1 %.not261, i1 false
  br i1 %or.cond, label %.preheader305, label %.thread.thread

.preheader305:                                    ; preds = %.thread
  %234 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %10)
  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) %6)
  %235 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %236

236:                                              ; preds = %236, %.preheader305
  call void @_ZN10tetgenmesh12tssdissolve1ERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %237 = load i32, ptr %201, align 8, !tbaa !24
  %238 = load ptr, ptr %5, align 8, !tbaa !23
  %239 = sext i32 %237 to i64
  %240 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %239
  %241 = load i32, ptr %240, align 4, !tbaa !25
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds ptr, ptr %238, i64 %242
  %244 = load ptr, ptr %243, align 8, !tbaa !26
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %244, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %245 = load i32, ptr %201, align 8, !tbaa !24
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %239, i64 %246
  %248 = load i32, ptr %247, align 4, !tbaa !25
  store i32 %248, ptr %201, align 8, !tbaa !24
  %249 = load ptr, ptr %5, align 8, !tbaa !23
  %250 = load ptr, ptr %6, align 8, !tbaa !23
  %251 = icmp eq ptr %249, %250
  br i1 %251, label %252, label %236, !llvm.loop !31

252:                                              ; preds = %236
  call void @_ZN10tetgenmesh12sstdissolve1ERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %253 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %11)
  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) %6)
  %254 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %255

255:                                              ; preds = %255, %252
  call void @_ZN10tetgenmesh12tssdissolve1ERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %256 = load i32, ptr %201, align 8, !tbaa !24
  %257 = load ptr, ptr %5, align 8, !tbaa !23
  %258 = sext i32 %256 to i64
  %259 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %258
  %260 = load i32, ptr %259, align 4, !tbaa !25
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds ptr, ptr %257, i64 %261
  %263 = load ptr, ptr %262, align 8, !tbaa !26
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %263, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %264 = load i32, ptr %201, align 8, !tbaa !24
  %265 = sext i32 %264 to i64
  %266 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %258, i64 %265
  %267 = load i32, ptr %266, align 4, !tbaa !25
  store i32 %267, ptr %201, align 8, !tbaa !24
  %268 = load ptr, ptr %5, align 8, !tbaa !23
  %269 = load ptr, ptr %6, align 8, !tbaa !23
  %270 = icmp eq ptr %268, %269
  br i1 %270, label %271, label %255, !llvm.loop !31

271:                                              ; preds = %255
  call void @_ZN10tetgenmesh12sstdissolve1ERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %272 = call noundef i32 @_ZN10tetgenmesh13sremovevertexEPdPNS_4faceES2_i(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1, ptr noundef nonnull %7, ptr noundef nonnull %11, i32 noundef 1)
  %273 = getelementptr inbounds i8, ptr %0, i64 200
  %274 = load ptr, ptr %273, align 8, !tbaa !32
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %274)
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %275 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %4)
  br label %276

276:                                              ; preds = %276, %271
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %277 = load i32, ptr %201, align 8, !tbaa !24
  %278 = load ptr, ptr %5, align 8, !tbaa !23
  %279 = sext i32 %277 to i64
  %280 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %279
  %281 = load i32, ptr %280, align 4, !tbaa !25
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds ptr, ptr %278, i64 %282
  %284 = load ptr, ptr %283, align 8, !tbaa !26
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %284, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %285 = load i32, ptr %201, align 8, !tbaa !24
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %279, i64 %286
  %288 = load i32, ptr %287, align 4, !tbaa !25
  store i32 %288, ptr %201, align 8, !tbaa !24
  %289 = load ptr, ptr %5, align 8, !tbaa !23
  %290 = load ptr, ptr %4, align 8, !tbaa !23
  %291 = icmp eq ptr %289, %290
  br i1 %291, label %292, label %276, !llvm.loop !33

292:                                              ; preds = %276
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1, i32 noundef 8)
  %293 = getelementptr inbounds i8, ptr %0, i64 608
  %294 = load i64, ptr %293, align 8, !tbaa !34
  %295 = add nsw i64 %294, -1
  store i64 %295, ptr %293, align 8, !tbaa !34
  %296 = getelementptr inbounds i8, ptr %0, i64 624
  %297 = load i64, ptr %296, align 8, !tbaa !35
  br label %.thread.thread.sink.split

.thread292:                                       ; preds = %215, %171, %192, %83, %118
  %.1245291294 = phi i32 [ 3, %192 ], [ 2, %83 ], [ 3, %118 ], [ 3, %171 ], [ 4, %215 ]
  br i1 %15, label %.preheader304, label %.loopexit303

.preheader304:                                    ; preds = %.thread292
  %298 = getelementptr inbounds i8, ptr %5, i64 8
  %299 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %10)
  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) %6)
  %300 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %301

301:                                              ; preds = %301, %.preheader304
  call void @_ZN10tetgenmesh12tssdissolve1ERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %302 = load i32, ptr %298, align 8, !tbaa !24
  %303 = load ptr, ptr %5, align 8, !tbaa !23
  %304 = sext i32 %302 to i64
  %305 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %304
  %306 = load i32, ptr %305, align 4, !tbaa !25
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds ptr, ptr %303, i64 %307
  %309 = load ptr, ptr %308, align 8, !tbaa !26
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %309, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %310 = load i32, ptr %298, align 8, !tbaa !24
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %304, i64 %311
  %313 = load i32, ptr %312, align 4, !tbaa !25
  store i32 %313, ptr %298, align 8, !tbaa !24
  %314 = load ptr, ptr %5, align 8, !tbaa !23
  %315 = load ptr, ptr %6, align 8, !tbaa !23
  %316 = icmp eq ptr %314, %315
  br i1 %316, label %317, label %301, !llvm.loop !36

317:                                              ; preds = %301
  call void @_ZN10tetgenmesh12sstdissolve1ERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %318 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %11)
  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) %6)
  %319 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %320

320:                                              ; preds = %320, %317
  call void @_ZN10tetgenmesh12tssdissolve1ERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %321 = load i32, ptr %298, align 8, !tbaa !24
  %322 = load ptr, ptr %5, align 8, !tbaa !23
  %323 = sext i32 %321 to i64
  %324 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %323
  %325 = load i32, ptr %324, align 4, !tbaa !25
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds ptr, ptr %322, i64 %326
  %328 = load ptr, ptr %327, align 8, !tbaa !26
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %328, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %329 = load i32, ptr %298, align 8, !tbaa !24
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %323, i64 %330
  %332 = load i32, ptr %331, align 4, !tbaa !25
  store i32 %332, ptr %298, align 8, !tbaa !24
  %333 = load ptr, ptr %5, align 8, !tbaa !23
  %334 = load ptr, ptr %6, align 8, !tbaa !23
  %335 = icmp eq ptr %333, %334
  br i1 %335, label %336, label %320, !llvm.loop !36

336:                                              ; preds = %320
  call void @_ZN10tetgenmesh12sstdissolve1ERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %337 = getelementptr inbounds i8, ptr %0, i64 384
  %338 = load i32, ptr %337, align 8, !tbaa !37
  %.not263 = icmp eq i32 %338, 0
  br i1 %.not263, label %.loopexit303, label %.preheader302.preheader

.preheader302.preheader:                          ; preds = %336
  %339 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %340 = load ptr, ptr %7, align 8, !tbaa !38
  %.not280 = icmp eq ptr %340, null
  br i1 %.not280, label %.loopexit301, label %341

341:                                              ; preds = %.preheader302.preheader
  %342 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %8, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br label %343

343:                                              ; preds = %349, %341
  call void @_ZN10tetgenmesh7stpivotERNS_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) %6)
  %344 = load ptr, ptr %6, align 8, !tbaa !23
  %.not281 = icmp eq ptr %344, null
  br i1 %.not281, label %346, label %345

345:                                              ; preds = %343
  call void @_ZN10tetgenmesh10tsdissolveERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %346

346:                                              ; preds = %345, %343
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @_ZN10tetgenmesh7stpivotERNS_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) %6)
  %347 = load ptr, ptr %6, align 8, !tbaa !23
  %.not282 = icmp eq ptr %347, null
  br i1 %.not282, label %349, label %348

348:                                              ; preds = %346
  call void @_ZN10tetgenmesh10tsdissolveERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %349

349:                                              ; preds = %348, %346
  call void @_ZN10tetgenmesh10stdissolveERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @_ZN10tetgenmesh10spivotselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %350 = load ptr, ptr %8, align 8, !tbaa !38
  %351 = load ptr, ptr %7, align 8, !tbaa !38
  %352 = icmp eq ptr %350, %351
  br i1 %352, label %.loopexit301, label %343, !llvm.loop !39

.loopexit301:                                     ; preds = %349, %.preheader302.preheader
  %353 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %11)
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %354 = load ptr, ptr %7, align 8, !tbaa !38
  %.not280.1 = icmp eq ptr %354, null
  br i1 %.not280.1, label %.loopexit303, label %355

355:                                              ; preds = %.loopexit301
  %356 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %8, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br label %357

357:                                              ; preds = %363, %355
  call void @_ZN10tetgenmesh7stpivotERNS_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) %6)
  %358 = load ptr, ptr %6, align 8, !tbaa !23
  %.not281.1 = icmp eq ptr %358, null
  br i1 %.not281.1, label %360, label %359

359:                                              ; preds = %357
  call void @_ZN10tetgenmesh10tsdissolveERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %360

360:                                              ; preds = %359, %357
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @_ZN10tetgenmesh7stpivotERNS_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) %6)
  %361 = load ptr, ptr %6, align 8, !tbaa !23
  %.not282.1 = icmp eq ptr %361, null
  br i1 %.not282.1, label %363, label %362

362:                                              ; preds = %360
  call void @_ZN10tetgenmesh10tsdissolveERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %363

363:                                              ; preds = %362, %360
  call void @_ZN10tetgenmesh10stdissolveERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @_ZN10tetgenmesh10spivotselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %364 = load ptr, ptr %8, align 8, !tbaa !38
  %365 = load ptr, ptr %7, align 8, !tbaa !38
  %366 = icmp eq ptr %364, %365
  br i1 %366, label %.loopexit303, label %357, !llvm.loop !39

.loopexit303:                                     ; preds = %363, %.loopexit301, %336, %.thread292
  switch i32 %.1245291294, label %446 [
    i32 2, label %367
    i32 3, label %383
  ]

367:                                              ; preds = %.loopexit303
  %368 = call noalias noundef nonnull dereferenceable(64) ptr @_Znam(i64 noundef 64) #9
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %368)
  %.ptr272.1 = getelementptr inbounds i8, ptr %368, i64 16
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %.ptr272.1)
  %.ptr272.2 = getelementptr inbounds i8, ptr %368, i64 32
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %.ptr272.2)
  %.ptr272.3 = getelementptr inbounds i8, ptr %368, i64 48
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %.ptr272.3)
  %369 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %368, ptr noundef nonnull align 8 dereferenceable(12) %4)
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %368, ptr noundef nonnull align 8 dereferenceable(12) %.ptr272.1)
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr272.1, ptr noundef nonnull align 8 dereferenceable(12) %.ptr272.2)
  call void @_ZN10tetgenmesh5eprevERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %368, ptr noundef nonnull align 8 dereferenceable(12) %.ptr272.3)
  %370 = getelementptr inbounds i8, ptr %368, i64 56
  %371 = load i32, ptr %370, align 8, !tbaa !24
  %372 = load ptr, ptr %.ptr272.3, align 8, !tbaa !23
  %373 = sext i32 %371 to i64
  %374 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %373
  %375 = load i32, ptr %374, align 4, !tbaa !25
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds ptr, ptr %372, i64 %376
  %378 = load ptr, ptr %377, align 8, !tbaa !26
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %378, ptr noundef nonnull align 8 dereferenceable(12) %.ptr272.3)
  %379 = load i32, ptr %370, align 8, !tbaa !24
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %373, i64 %380
  %382 = load i32, ptr %381, align 4, !tbaa !25
  store i32 %382, ptr %370, align 8, !tbaa !24
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr272.3)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr272.3)
  call void @_ZN10tetgenmesh6flip41EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %368, i32 noundef 1, ptr noundef nonnull %13)
  br label %517

383:                                              ; preds = %.loopexit303
  %384 = call noalias noundef nonnull dereferenceable(96) ptr @_Znam(i64 noundef 96) #9
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %384)
  %.ptr266.1 = getelementptr inbounds i8, ptr %384, i64 16
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.1)
  %.ptr266.2 = getelementptr inbounds i8, ptr %384, i64 32
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.2)
  %.ptr266.3 = getelementptr inbounds i8, ptr %384, i64 48
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.3)
  %.ptr266.4 = getelementptr inbounds i8, ptr %384, i64 64
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.4)
  %.ptr266.5 = getelementptr inbounds i8, ptr %384, i64 80
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.5)
  %385 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %384, ptr noundef nonnull align 8 dereferenceable(12) %4)
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %384, ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.1)
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.1, ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.2)
  call void @_ZN10tetgenmesh5eprevERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %384, ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.3)
  %386 = getelementptr inbounds i8, ptr %384, i64 56
  %387 = load i32, ptr %386, align 8, !tbaa !24
  %388 = load ptr, ptr %.ptr266.3, align 8, !tbaa !23
  %389 = sext i32 %387 to i64
  %390 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %389
  %391 = load i32, ptr %390, align 4, !tbaa !25
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds ptr, ptr %388, i64 %392
  %394 = load ptr, ptr %393, align 8, !tbaa !26
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %394, ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.3)
  %395 = load i32, ptr %386, align 8, !tbaa !24
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %389, i64 %396
  %398 = load i32, ptr %397, align 4, !tbaa !25
  store i32 %398, ptr %386, align 8, !tbaa !24
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.3)
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.3)
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.3, ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.4)
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.4, ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.5)
  %399 = icmp eq i32 %14, 7
  br i1 %399, label %.preheader300.preheader, label %445

.preheader300.preheader:                          ; preds = %383
  %400 = load ptr, ptr %.ptr266.3, align 8, !tbaa !23
  %401 = getelementptr inbounds i8, ptr %400, i64 72
  %402 = load ptr, ptr %401, align 8, !tbaa !26
  %.not268 = icmp eq ptr %402, null
  br i1 %.not268, label %.preheader300.1, label %403

403:                                              ; preds = %.preheader300.preheader
  %404 = getelementptr inbounds i8, ptr %384, i64 56
  %405 = load i32, ptr %404, align 8, !tbaa !24
  %406 = and i32 %405, 3
  %407 = zext nneg i32 %406 to i64
  %408 = getelementptr inbounds ptr, ptr %402, i64 %407
  %409 = load ptr, ptr %408, align 8, !tbaa !26
  %.not269 = icmp ne ptr %409, null
  %410 = zext i1 %.not269 to i32
  br label %.preheader300.1

.preheader300.1:                                  ; preds = %403, %.preheader300.preheader
  %.3243 = phi i32 [ 0, %.preheader300.preheader ], [ %410, %403 ]
  %411 = load ptr, ptr %.ptr266.4, align 8, !tbaa !23
  %412 = getelementptr inbounds i8, ptr %411, i64 72
  %413 = load ptr, ptr %412, align 8, !tbaa !26
  %.not268.1 = icmp eq ptr %413, null
  br i1 %.not268.1, label %.preheader300.2, label %414

414:                                              ; preds = %.preheader300.1
  %415 = getelementptr inbounds i8, ptr %384, i64 72
  %416 = load i32, ptr %415, align 8, !tbaa !24
  %417 = and i32 %416, 3
  %418 = zext nneg i32 %417 to i64
  %419 = getelementptr inbounds ptr, ptr %413, i64 %418
  %420 = load ptr, ptr %419, align 8, !tbaa !26
  %.not269.1 = icmp ne ptr %420, null
  %421 = zext i1 %.not269.1 to i32
  %spec.select.1 = add nuw nsw i32 %.3243, %421
  br label %.preheader300.2

.preheader300.2:                                  ; preds = %414, %.preheader300.1
  %.3243.1 = phi i32 [ %.3243, %.preheader300.1 ], [ %spec.select.1, %414 ]
  %422 = load ptr, ptr %.ptr266.5, align 8, !tbaa !23
  %423 = getelementptr inbounds i8, ptr %422, i64 72
  %424 = load ptr, ptr %423, align 8, !tbaa !26
  %.not268.2 = icmp eq ptr %424, null
  br i1 %.not268.2, label %433, label %425

425:                                              ; preds = %.preheader300.2
  %426 = getelementptr inbounds i8, ptr %384, i64 88
  %427 = load i32, ptr %426, align 8, !tbaa !24
  %428 = and i32 %427, 3
  %429 = zext nneg i32 %428 to i64
  %430 = getelementptr inbounds ptr, ptr %424, i64 %429
  %431 = load ptr, ptr %430, align 8, !tbaa !26
  %.not269.2 = icmp ne ptr %431, null
  %432 = zext i1 %.not269.2 to i32
  %spec.select.2 = add nuw nsw i32 %.3243.1, %432
  br label %433

433:                                              ; preds = %425, %.preheader300.2
  %.3243.2 = phi i32 [ %.3243.1, %.preheader300.2 ], [ %spec.select.2, %425 ]
  %.not386 = icmp eq i32 %.3243.2, 0
  br i1 %.not386, label %445, label %.preheader.preheader

.preheader.preheader:                             ; preds = %433
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.3, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %384, ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.3)
  %434 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %384, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %435 = getelementptr inbounds i8, ptr %384, i64 64
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %435, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.1, ptr noundef nonnull align 8 dereferenceable(12) %435)
  %436 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.1, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  %437 = getelementptr inbounds i8, ptr %384, i64 80
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %437, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.2, ptr noundef nonnull align 8 dereferenceable(12) %437)
  %438 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.2, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  %439 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1, ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.1)
  %440 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.1, ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.2)
  %441 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.2, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  %442 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1, ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.4)
  %443 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.4, ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.5)
  %444 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %.ptr266.5, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  br label %445

445:                                              ; preds = %433, %.preheader.preheader, %383
  call void @_ZN10tetgenmesh6flip32EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.ptr266.3, i32 noundef 1, ptr noundef nonnull %13)
  call void @_ZN10tetgenmesh6flip41EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %384, i32 noundef 1, ptr noundef nonnull %13)
  br label %517

446:                                              ; preds = %.loopexit303
  %447 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %448 = getelementptr inbounds i8, ptr %5, i64 8
  %.pre371 = load i32, ptr %448, align 8, !tbaa !24
  %.pre372 = load ptr, ptr %5, align 8, !tbaa !23
  br label %449

449:                                              ; preds = %449, %446
  %450 = phi ptr [ %463, %449 ], [ %.pre372, %446 ]
  %451 = phi i32 [ %462, %449 ], [ %.pre371, %446 ]
  %indvars.iv355 = phi i32 [ %indvars.iv.next356, %449 ], [ 1, %446 ]
  %indvars.iv350 = phi i64 [ %indvars.iv.next351, %449 ], [ 1, %446 ]
  %.0237 = phi i32 [ %452, %449 ], [ 0, %446 ]
  %452 = add nuw nsw i32 %.0237, 1
  %453 = sext i32 %451 to i64
  %454 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %453
  %455 = load i32, ptr %454, align 4, !tbaa !25
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds ptr, ptr %450, i64 %456
  %458 = load ptr, ptr %457, align 8, !tbaa !26
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %458, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %459 = load i32, ptr %448, align 8, !tbaa !24
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %453, i64 %460
  %462 = load i32, ptr %461, align 4, !tbaa !25
  store i32 %462, ptr %448, align 8, !tbaa !24
  %463 = load ptr, ptr %5, align 8, !tbaa !23
  %464 = load ptr, ptr %4, align 8, !tbaa !23
  %465 = icmp eq ptr %463, %464
  %indvars.iv.next351 = add nuw i64 %indvars.iv350, 1
  %indvars.iv.next356 = add i32 %indvars.iv355, 2
  br i1 %465, label %466, label %449, !llvm.loop !40

466:                                              ; preds = %449
  %467 = shl nuw nsw i32 %452, 1
  %468 = zext nneg i32 %467 to i64
  %469 = shl nuw nsw i64 %468, 4
  %470 = call noalias noundef nonnull ptr @_Znam(i64 noundef %469) #9
  %471 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %470, i64 %468
  br label %472

472:                                              ; preds = %472, %466
  %473 = phi ptr [ %470, %466 ], [ %474, %472 ]
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %473)
  %474 = getelementptr inbounds i8, ptr %473, i64 16
  %475 = icmp eq ptr %474, %471
  br i1 %475, label %476, label %472

476:                                              ; preds = %472
  %477 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %470, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %.not335 = icmp eq i32 %.0237, 0
  br i1 %.not335, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %476
  %wide.trip.count = zext nneg i32 %.0237 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %478 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %470, i64 %indvars.iv
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %479 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %470, i64 %indvars.iv.next
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %478, ptr noundef nonnull align 8 dereferenceable(12) %479)
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !41

._crit_edge:                                      ; preds = %.lr.ph, %476
  %480 = zext nneg i32 %452 to i64
  %481 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %470, i64 %480
  call void @_ZN10tetgenmesh5eprevERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %470, ptr noundef nonnull align 8 dereferenceable(12) %481)
  %482 = getelementptr inbounds i8, ptr %481, i64 8
  %483 = load i32, ptr %482, align 8, !tbaa !24
  %484 = load ptr, ptr %481, align 8, !tbaa !23
  %485 = sext i32 %483 to i64
  %486 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %485
  %487 = load i32, ptr %486, align 4, !tbaa !25
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds ptr, ptr %484, i64 %488
  %490 = load ptr, ptr %489, align 8, !tbaa !26
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %490, ptr noundef nonnull align 8 dereferenceable(12) %481)
  %491 = load i32, ptr %482, align 8, !tbaa !24
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %485, i64 %492
  %494 = load i32, ptr %493, align 4, !tbaa !25
  store i32 %494, ptr %482, align 8, !tbaa !24
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %481)
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %481)
  %495 = add nsw i32 %467, -1
  %496 = icmp slt i32 %452, %495
  br i1 %496, label %.lr.ph326.preheader, label %._crit_edge327

.lr.ph326.preheader:                              ; preds = %._crit_edge
  %wide.trip.count357 = zext i32 %indvars.iv355 to i64
  br label %.lr.ph326

.lr.ph326:                                        ; preds = %.lr.ph326.preheader, %.lr.ph326
  %indvars.iv352 = phi i64 [ %indvars.iv350, %.lr.ph326.preheader ], [ %indvars.iv.next353, %.lr.ph326 ]
  %497 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %470, i64 %indvars.iv352
  %indvars.iv.next353 = add nuw nsw i64 %indvars.iv352, 1
  %498 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %470, i64 %indvars.iv.next353
  call void @_ZN10tetgenmesh5fnextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %497, ptr noundef nonnull align 8 dereferenceable(12) %498)
  %exitcond358.not = icmp eq i64 %indvars.iv.next353, %wide.trip.count357
  br i1 %exitcond358.not, label %._crit_edge327, label %.lr.ph326, !llvm.loop !42

._crit_edge327:                                   ; preds = %.lr.ph326, %._crit_edge
  %499 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %470)
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %500 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1, ptr noundef nonnull align 8 dereferenceable(12) %481)
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  call void @_ZN10tetgenmesh6flip23EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %3, i32 noundef 1, ptr noundef nonnull %13)
  %501 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %481, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  %502 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %470, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %503 = icmp ugt i32 %.0237, 1
  %wide.trip.count363 = zext nneg i32 %.0237 to i64
  br i1 %503, label %.lr.ph330.preheader, label %._crit_edge331

.lr.ph330.preheader:                              ; preds = %._crit_edge327
  %invariant.gep = getelementptr inbounds %"class.tetgenmesh::triface", ptr %470, i64 %480
  br label %.lr.ph330

.lr.ph330:                                        ; preds = %.lr.ph330.preheader, %.lr.ph330
  %indvars.iv359 = phi i64 [ 1, %.lr.ph330.preheader ], [ %indvars.iv.next360, %.lr.ph330 ]
  %504 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %gep = getelementptr inbounds %"class.tetgenmesh::triface", ptr %invariant.gep, i64 %indvars.iv359
  %505 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1, ptr noundef nonnull align 8 dereferenceable(12) %gep)
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  %506 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %470, i64 %indvars.iv359
  %507 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2, ptr noundef nonnull align 8 dereferenceable(12) %506)
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  call void @_ZN10tetgenmesh6flip32EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %3, i32 noundef 1, ptr noundef nonnull %13)
  %508 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %506, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %506)
  %indvars.iv.next360 = add nuw nsw i64 %indvars.iv359, 1
  %exitcond364.not = icmp eq i64 %indvars.iv.next360, %wide.trip.count363
  br i1 %exitcond364.not, label %._crit_edge331, label %.lr.ph330, !llvm.loop !43

._crit_edge331:                                   ; preds = %.lr.ph330, %._crit_edge327
  %509 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %.ptr.3, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  %510 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %481)
  call void @_ZN10tetgenmesh9eprevselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %511 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %470, i64 %wide.trip.count363
  %512 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1, ptr noundef nonnull align 8 dereferenceable(12) %511)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.1)
  %513 = sext i32 %495 to i64
  %514 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %470, i64 %513
  %515 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2, ptr noundef nonnull align 8 dereferenceable(12) %514)
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %.ptr.2)
  call void @_ZN10tetgenmesh6flip41EPNS_7trifaceEiPNS_15flipconstraintsE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %3, i32 noundef 1, ptr noundef nonnull %13)
  %516 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %511, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %517

517:                                              ; preds = %367, %._crit_edge331, %445
  %.0247 = phi ptr [ %368, %367 ], [ %384, %445 ], [ %470, %._crit_edge331 ]
  call void @_ZdaPv(ptr noundef nonnull %.0247) #10
  br i1 %15, label %518, label %576

518:                                              ; preds = %517
  %519 = getelementptr inbounds i8, ptr %0, i64 384
  %520 = load i32, ptr %519, align 8, !tbaa !37
  %.not274 = icmp eq i32 %520, 0
  %521 = zext i1 %.not274 to i32
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %522 = call noundef i32 @_ZN10tetgenmesh13sremovevertexEPdPNS_4faceES2_i(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1, ptr noundef nonnull %7, ptr noundef nonnull %11, i32 noundef %521)
  %523 = getelementptr inbounds i8, ptr %11, i64 8
  store i32 0, ptr %523, align 8, !tbaa !5
  call void @_ZN10tetgenmesh12point2tetorgEPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %.0249, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %524 = call noundef i32 @_ZN10tetgenmesh13finddirectionEPNS_7trifaceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %4, ptr noundef %.0248)
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %525 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %526 = getelementptr inbounds i8, ptr %5, i64 8
  br label %527

527:                                              ; preds = %527, %518
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %528 = load i32, ptr %526, align 8, !tbaa !24
  %529 = load ptr, ptr %5, align 8, !tbaa !23
  %530 = sext i32 %528 to i64
  %531 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %530
  %532 = load i32, ptr %531, align 4, !tbaa !25
  %533 = sext i32 %532 to i64
  %534 = getelementptr inbounds ptr, ptr %529, i64 %533
  %535 = load ptr, ptr %534, align 8, !tbaa !26
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %535, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %536 = load i32, ptr %526, align 8, !tbaa !24
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %530, i64 %537
  %539 = load i32, ptr %538, align 4, !tbaa !25
  store i32 %539, ptr %526, align 8, !tbaa !24
  %540 = load ptr, ptr %5, align 8, !tbaa !23
  %541 = load ptr, ptr %4, align 8, !tbaa !23
  %542 = icmp eq ptr %540, %541
  br i1 %542, label %543, label %527, !llvm.loop !44

543:                                              ; preds = %527
  %544 = load i32, ptr %519, align 8, !tbaa !37
  %.not275 = icmp eq i32 %544, 0
  br i1 %.not275, label %.loopexit, label %545

545:                                              ; preds = %543
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %546 = load ptr, ptr %7, align 8, !tbaa !38
  %.not276 = icmp eq ptr %546, null
  br i1 %.not276, label %.loopexit, label %547

547:                                              ; preds = %545
  %548 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %8, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br label %549

549:                                              ; preds = %._crit_edge334, %547
  %550 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %.not277 = icmp eq ptr %550, %.0249
  br i1 %.not277, label %552, label %551

551:                                              ; preds = %549
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %552

552:                                              ; preds = %551, %549
  %553 = call noundef ptr @_ZN10tetgenmesh5sapexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %554 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %555 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %556 = icmp eq ptr %555, %553
  br i1 %556, label %._crit_edge334, label %.lr.ph333

._crit_edge334:                                   ; preds = %.lr.ph333, %552
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5, 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) %6, ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @_ZN10tetgenmesh10spivotselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %557 = load ptr, ptr %8, align 8, !tbaa !38
  %558 = load ptr, ptr %7, align 8, !tbaa !38
  %559 = icmp eq ptr %557, %558
  br i1 %559, label %.loopexit, label %549, !llvm.loop !45

.lr.ph333:                                        ; preds = %552, %.lr.ph333
  %560 = load i32, ptr %526, align 8, !tbaa !24
  %561 = load ptr, ptr %5, align 8, !tbaa !23
  %562 = sext i32 %560 to i64
  %563 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %562
  %564 = load i32, ptr %563, align 4, !tbaa !25
  %565 = sext i32 %564 to i64
  %566 = getelementptr inbounds ptr, ptr %561, i64 %565
  %567 = load ptr, ptr %566, align 8, !tbaa !26
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %567, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %568 = load i32, ptr %526, align 8, !tbaa !24
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %562, i64 %569
  %571 = load i32, ptr %570, align 4, !tbaa !25
  store i32 %571, ptr %526, align 8, !tbaa !24
  %572 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %573 = icmp eq ptr %572, %553
  br i1 %573, label %._crit_edge334, label %.lr.ph333, !llvm.loop !46

.loopexit:                                        ; preds = %._crit_edge334, %545, %543
  %574 = getelementptr inbounds i8, ptr %0, i64 200
  %575 = load ptr, ptr %574, align 8, !tbaa !32
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %575)
  br label %576

576:                                              ; preds = %.loopexit, %517
  %577 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1)
  %.not278 = icmp eq i32 %577, 0
  br i1 %.not278, label %582, label %578

578:                                              ; preds = %576
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1, i32 noundef 0)
  %579 = getelementptr inbounds i8, ptr %0, i64 592
  %580 = load i64, ptr %579, align 8, !tbaa !47
  %581 = add nsw i64 %580, 1
  store i64 %581, ptr %579, align 8, !tbaa !47
  br label %582

582:                                              ; preds = %578, %576
  %.not279 = icmp eq i32 %14, 5
  br i1 %.not279, label %.thread.thread, label %583

583:                                              ; preds = %582
  br i1 %15, label %.sink.split, label %584

584:                                              ; preds = %583
  switch i32 %14, label %589 [
    i32 7, label %.sink.split
    i32 8, label %585
  ]

585:                                              ; preds = %584
  br label %.sink.split

.sink.split:                                      ; preds = %584, %583, %585
  %.sink382 = phi i64 [ 624, %585 ], [ 608, %583 ], [ 616, %584 ]
  %586 = getelementptr inbounds i8, ptr %0, i64 %.sink382
  %587 = load i64, ptr %586, align 8, !tbaa !48
  %588 = add nsw i64 %587, -1
  store i64 %588, ptr %586, align 8, !tbaa !48
  br label %589

589:                                              ; preds = %.sink.split, %584
  %590 = getelementptr inbounds i8, ptr %0, i64 576
  %591 = load i64, ptr %590, align 8, !tbaa !49
  %592 = icmp sgt i64 %591, 0
  br i1 %592, label %.thread.thread.sink.split, label %.thread.thread

.thread.thread.sink.split:                        ; preds = %589, %292
  %.sink385 = phi i64 [ %297, %292 ], [ %591, %589 ]
  %.sink384 = phi ptr [ %296, %292 ], [ %590, %589 ]
  %593 = add nsw i64 %.sink385, 1
  store i64 %593, ptr %.sink384, align 8, !tbaa !48
  br label %.thread.thread

.thread.thread:                                   ; preds = %.thread.thread.sink.split, %194, %.thread, %123, %582, %589, %38
  %.0246 = phi i32 [ 0, %38 ], [ 1, %589 ], [ 1, %582 ], [ 0, %123 ], [ 0, %.thread ], [ 0, %194 ], [ 1, %.thread.thread.sink.split ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %3) #8
  ret i32 %.0246
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 8}
!6 = !{!"_ZTSN10tetgenmesh4faceE", !7, i64 0, !10, i64 8}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!12, !7, i64 16}
!12 = !{!"_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, !13, i64 288, !6, i64 304, !7, i64 320, !10, i64 328, !10, i64 332, !10, i64 336, !10, i64 340, !10, i64 344, !10, i64 348, !10, i64 352, !10, i64 356, !10, i64 360, !10, i64 364, !10, i64 368, !10, i64 372, !10, i64 376, !10, i64 380, !10, i64 384, !10, i64 388, !10, i64 392, !10, i64 396, !10, i64 400, !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, !8, i64 736, !8, i64 1504}
!13 = !{!"_ZTSN10tetgenmesh7trifaceE", !7, i64 0, !10, i64 8}
!14 = !{!"long", !8, i64 0}
!15 = !{!"double", !8, i64 0}
!16 = !{!17, !10, i64 148}
!17 = !{!"_ZTS14tetgenbehavior", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !10, i64 92, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !10, i64 220, !10, i64 224, !10, i64 228, !10, i64 232, !10, i64 236, !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, !8, i64 336, !8, i64 1360, !8, i64 2384, !8, i64 3408, !8, i64 4432, !18, i64 5456}
!18 = !{!"_ZTSN14tetgenbehavior10objecttypeE", !8, i64 0}
!19 = !{!12, !7, i64 128}
!20 = !{!12, !7, i64 168}
!21 = !{!22, !14, i64 32}
!22 = !{!"_ZTSN10tetgenmesh9arraypoolE", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !7, i64 24, !14, i64 32, !14, i64 40}
!23 = !{!13, !7, i64 0}
!24 = !{!13, !10, i64 8}
!25 = !{!10, !10, i64 0}
!26 = !{!7, !7, i64 0}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = distinct !{!29, !28}
!30 = distinct !{!30, !28}
!31 = distinct !{!31, !28}
!32 = !{!12, !7, i64 200}
!33 = distinct !{!33, !28}
!34 = !{!12, !14, i64 608}
!35 = !{!12, !14, i64 624}
!36 = distinct !{!36, !28}
!37 = !{!12, !10, i64 384}
!38 = !{!6, !7, i64 0}
!39 = distinct !{!39, !28}
!40 = distinct !{!40, !28}
!41 = distinct !{!41, !28}
!42 = distinct !{!42, !28}
!43 = distinct !{!43, !28}
!44 = distinct !{!44, !28}
!45 = distinct !{!45, !28}
!46 = distinct !{!46, !28}
!47 = !{!12, !14, i64 592}
!48 = !{!14, !14, i64 0}
!49 = !{!12, !14, i64 576}


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