; LLVM IR from Ubpa/USTC_CG :: Homeworks/6_MassSpring/documents/tetgen/src/TetGene (tetgen)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.tetgenmesh::triface" = type <{ ptr, i32, [4 x i8] }>
%"class.tetgenmesh::face" = type <{ ptr, i32, [4 x i8] }>
%class.tetgenmesh = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.tetgenmesh::triface", %"class.tetgenmesh::face", ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i64, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, [8 x [3 x [8 x i32]]], [8 x i32] }
%class.tetgenbehavior = type <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, double, double, [1024 x i8], [1024 x i8], [1024 x i8], [1024 x i8], [1024 x i8], i32, [4 x i8] }>
%class.tetgenio = type { i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, ptr, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.tetgenmesh::memorypool" = type { ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i64, i64, i32, i32 }

@_ZN10tetgenmesh7fsymtblE = external dso_local global [12 x [12 x i32]], align 16
@_ZN10tetgenmesh10facepivot1E = external dso_local global [12 x i32], align 16
@_ZN10tetgenmesh10facepivot2E = external dso_local global [12 x [12 x i32]], align 16
@_ZN10tetgenmesh8orgpivotE = external dso_local global [12 x i32], align 16
@_ZN10tetgenmesh9destpivotE = external dso_local global [12 x i32], align 16
@_ZN10tetgenmesh9apexpivotE = external dso_local global [12 x i32], align 16
@_ZN10tetgenmesh9oppopivotE = external dso_local global [12 x i32], align 16
@_ZN10tetgenmesh2PIE = external dso_local global double, align 8
@.str.462 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.463 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.464 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.465 = external hidden unnamed_addr constant [43 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind
declare double @sqrt(double noundef) #9

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind
declare double @cos(double noundef) #9

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

53:                                               ; preds = %1
  %54 = call i32 (ptr, ...) @printf(ptr noundef @.str.462)
  br label %55

55:                                               ; preds = %53, %1
  %56 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 2
  %57 = load ptr, ptr %56, align 8, !tbaa !11
  %58 = getelementptr inbounds %class.tetgenbehavior, ptr %57, i32 0, i32 17
  %59 = load i32, ptr %58, align 4, !tbaa !20
  %60 = icmp ne i32 %59, 0
  br i1 %60, label %61, label %69

61:                                               ; preds = %55
  %62 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %63 = load ptr, ptr %62, align 8, !tbaa !21
  %64 = getelementptr inbounds %class.tetgenio, ptr %63, i32 0, i32 20
  %65 = load i32, ptr %64, align 8, !tbaa !22
  %66 = icmp sgt i32 %65, 0
  br i1 %66, label %68, label %67

67:                                               ; preds = %61
  call void @_Z15terminatetetgenP10tetgenmeshi(ptr noundef %47, i32 noundef 2)
  br label %68

68:                                               ; preds = %67, %61
  br label %71

69:                                               ; preds = %55
  %70 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 55
  store i32 1, ptr %70, align 8, !tbaa !24
  br label %71

71:                                               ; preds = %69, %68
  call void @_ZN10tetgenmesh18makeindex2pointmapERPPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %72 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %73 = load ptr, ptr %72, align 8, !tbaa !21
  %74 = getelementptr inbounds %class.tetgenio, ptr %73, i32 0, i32 0
  %75 = load i32, ptr %74, align 8, !tbaa !25
  %76 = icmp eq i32 %75, 1
  br i1 %76, label %77, label %82

77:                                               ; preds = %71
  %78 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 35
  %79 = load ptr, ptr %78, align 8, !tbaa !26
  %80 = load ptr, ptr %4, align 8, !tbaa !5
  %81 = getelementptr inbounds ptr, ptr %80, i64 0
  store ptr %79, ptr %81, align 8, !tbaa !5
  br label %82

82:                                               ; preds = %77, %71
  %83 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %84 = load ptr, ptr %83, align 8, !tbaa !21
  %85 = getelementptr inbounds %class.tetgenio, ptr %84, i32 0, i32 9
  %86 = load i32, ptr %85, align 8, !tbaa !27
  %87 = add nsw i32 %86, 1
  %88 = sext i32 %87 to i64
  %89 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %88, i64 8)
  %90 = extractvalue { i64, i1 } %89, 1
  %91 = extractvalue { i64, i1 } %89, 0
  %92 = select i1 %90, i64 -1, i64 %91
  %93 = call noalias noundef nonnull ptr @_Znam(i64 noundef %92) #11
  store ptr %93, ptr %3, align 8, !tbaa !5
  %94 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %95 = load ptr, ptr %94, align 8, !tbaa !21
  %96 = getelementptr inbounds %class.tetgenio, ptr %95, i32 0, i32 0
  %97 = load i32, ptr %96, align 8, !tbaa !25
  store i32 %97, ptr %31, align 4, !tbaa !9
  br label %98

98:                                               ; preds = %120, %82
  %99 = load i32, ptr %31, align 4, !tbaa !9
  %100 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %101 = load ptr, ptr %100, align 8, !tbaa !21
  %102 = getelementptr inbounds %class.tetgenio, ptr %101, i32 0, i32 9
  %103 = load i32, ptr %102, align 8, !tbaa !27
  %104 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %105 = load ptr, ptr %104, align 8, !tbaa !21
  %106 = getelementptr inbounds %class.tetgenio, ptr %105, i32 0, i32 0
  %107 = load i32, ptr %106, align 8, !tbaa !25
  %108 = add nsw i32 %103, %107
  %109 = icmp slt i32 %99, %108
  br i1 %109, label %110, label %123

110:                                              ; preds = %98
  %111 = load ptr, ptr %4, align 8, !tbaa !5
  %112 = load i32, ptr %31, align 4, !tbaa !9
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds ptr, ptr %111, i64 %113
  %115 = load ptr, ptr %114, align 8, !tbaa !5
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %115, i32 noundef 5)
  %116 = load ptr, ptr %3, align 8, !tbaa !5
  %117 = load i32, ptr %31, align 4, !tbaa !9
  %118 = sext i32 %117 to i64
  %119 = getelementptr inbounds ptr, ptr %116, i64 %118
  store ptr null, ptr %119, align 8, !tbaa !5
  br label %120

120:                                              ; preds = %110
  %121 = load i32, ptr %31, align 4, !tbaa !9
  %122 = add nsw i32 %121, 1
  store i32 %122, ptr %31, align 4, !tbaa !9
  br label %98, !llvm.loop !28

123:                                              ; preds = %98
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %124

124:                                              ; preds = %472, %123
  %125 = load i32, ptr %31, align 4, !tbaa !9
  %126 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %127 = load ptr, ptr %126, align 8, !tbaa !21
  %128 = getelementptr inbounds %class.tetgenio, ptr %127, i32 0, i32 18
  %129 = load i32, ptr %128, align 8, !tbaa !30
  %130 = icmp slt i32 %125, %129
  br i1 %130, label %131, label %475

131:                                              ; preds = %124
  %132 = load i32, ptr %31, align 4, !tbaa !9
  %133 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %134 = load ptr, ptr %133, align 8, !tbaa !21
  %135 = getelementptr inbounds %class.tetgenio, ptr %134, i32 0, i32 19
  %136 = load i32, ptr %135, align 4, !tbaa !31
  %137 = mul nsw i32 %132, %136
  store i32 %137, ptr %30, align 4, !tbaa !9
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %138

138:                                              ; preds = %158, %131
  %139 = load i32, ptr %32, align 4, !tbaa !9
  %140 = icmp slt i32 %139, 4
  br i1 %140, label %141, label %161

141:                                              ; preds = %138
  %142 = load ptr, ptr %4, align 8, !tbaa !5
  %143 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %144 = load ptr, ptr %143, align 8, !tbaa !21
  %145 = getelementptr inbounds %class.tetgenio, ptr %144, i32 0, i32 12
  %146 = load ptr, ptr %145, align 8, !tbaa !32
  %147 = load i32, ptr %30, align 4, !tbaa !9
  %148 = add nsw i32 %147, 1
  store i32 %148, ptr %30, align 4, !tbaa !9
  %149 = sext i32 %147 to i64
  %150 = getelementptr inbounds i32, ptr %146, i64 %149
  %151 = load i32, ptr %150, align 4, !tbaa !9
  %152 = sext i32 %151 to i64
  %153 = getelementptr inbounds ptr, ptr %142, i64 %152
  %154 = load ptr, ptr %153, align 8, !tbaa !5
  %155 = load i32, ptr %32, align 4, !tbaa !9
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 %156
  store ptr %154, ptr %157, align 8, !tbaa !5
  br label %158

158:                                              ; preds = %141
  %159 = load i32, ptr %32, align 4, !tbaa !9
  %160 = add nsw i32 %159, 1
  store i32 %160, ptr %32, align 4, !tbaa !9
  br label %138, !llvm.loop !33

161:                                              ; preds = %138
  %162 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  %163 = load ptr, ptr %162, align 16, !tbaa !5
  %164 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  %165 = load ptr, ptr %164, align 8, !tbaa !5
  %166 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 2
  %167 = load ptr, ptr %166, align 16, !tbaa !5
  %168 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 3
  %169 = load ptr, ptr %168, align 8, !tbaa !5
  %170 = call noundef double @_Z8orient3dPdS_S_S_(ptr noundef %163, ptr noundef %165, ptr noundef %167, ptr noundef %169)
  store double %170, ptr %19, align 8, !tbaa !34
  %171 = load double, ptr %19, align 8, !tbaa !34
  %172 = fcmp ogt double %171, 0.000000e+00
  br i1 %172, label %173, label %183

173:                                              ; preds = %161
  %174 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  %175 = load ptr, ptr %174, align 16, !tbaa !5
  %176 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 0
  store ptr %175, ptr %176, align 16, !tbaa !5
  %177 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  %178 = load ptr, ptr %177, align 8, !tbaa !5
  %179 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  store ptr %178, ptr %179, align 16, !tbaa !5
  %180 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 0
  %181 = load ptr, ptr %180, align 16, !tbaa !5
  %182 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  store ptr %181, ptr %182, align 8, !tbaa !5
  br label %202

183:                                              ; preds = %161
  %184 = load double, ptr %19, align 8, !tbaa !34
  %185 = fcmp oeq double %184, 0.000000e+00
  br i1 %185, label %186, label %201

186:                                              ; preds = %183
  %187 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 2
  %188 = load ptr, ptr %187, align 8, !tbaa !11
  %189 = getelementptr inbounds %class.tetgenbehavior, ptr %188, i32 0, i32 36
  %190 = load i32, ptr %189, align 8, !tbaa !17
  %191 = icmp ne i32 %190, 0
  br i1 %191, label %200, label %192

192:                                              ; preds = %186
  %193 = load i32, ptr %31, align 4, !tbaa !9
  %194 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %195 = load ptr, ptr %194, align 8, !tbaa !21
  %196 = getelementptr inbounds %class.tetgenio, ptr %195, i32 0, i32 0
  %197 = load i32, ptr %196, align 8, !tbaa !25
  %198 = add nsw i32 %193, %197
  %199 = call i32 (ptr, ...) @printf(ptr noundef @.str.463, i32 noundef %198)
  br label %200

200:                                              ; preds = %192, %186
  br label %201

201:                                              ; preds = %200, %183
  br label %202

202:                                              ; preds = %201, %173
  call void @_ZN10tetgenmesh15maketetrahedronEPNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %5)
  %203 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  %204 = load ptr, ptr %203, align 16, !tbaa !5
  %205 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %206 = load ptr, ptr %205, align 8, !tbaa !35
  %207 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %208 = load i32, ptr %207, align 8, !tbaa !36
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh8orgpivotE, i64 0, i64 %209
  %211 = load i32, ptr %210, align 4, !tbaa !9
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds ptr, ptr %206, i64 %212
  store ptr %204, ptr %213, align 8, !tbaa !5
  %214 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  %215 = load ptr, ptr %214, align 8, !tbaa !5
  %216 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %217 = load ptr, ptr %216, align 8, !tbaa !35
  %218 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %219 = load i32, ptr %218, align 8, !tbaa !36
  %220 = sext i32 %219 to i64
  %221 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9destpivotE, i64 0, i64 %220
  %222 = load i32, ptr %221, align 4, !tbaa !9
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds ptr, ptr %217, i64 %223
  store ptr %215, ptr %224, align 8, !tbaa !5
  %225 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 2
  %226 = load ptr, ptr %225, align 16, !tbaa !5
  %227 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %228 = load ptr, ptr %227, align 8, !tbaa !35
  %229 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %230 = load i32, ptr %229, align 8, !tbaa !36
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9apexpivotE, i64 0, i64 %231
  %233 = load i32, ptr %232, align 4, !tbaa !9
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds ptr, ptr %228, i64 %234
  store ptr %226, ptr %235, align 8, !tbaa !5
  %236 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 3
  %237 = load ptr, ptr %236, align 8, !tbaa !5
  %238 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %239 = load ptr, ptr %238, align 8, !tbaa !35
  %240 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %241 = load i32, ptr %240, align 8, !tbaa !36
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9oppopivotE, i64 0, i64 %242
  %244 = load i32, ptr %243, align 4, !tbaa !9
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds ptr, ptr %239, i64 %245
  store ptr %237, ptr %246, align 8, !tbaa !5
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %247

247:                                              ; preds = %275, %202
  %248 = load i32, ptr %32, align 4, !tbaa !9
  %249 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %250 = load ptr, ptr %249, align 8, !tbaa !21
  %251 = getelementptr inbounds %class.tetgenio, ptr %250, i32 0, i32 20
  %252 = load i32, ptr %251, align 8, !tbaa !22
  %253 = icmp slt i32 %248, %252
  br i1 %253, label %254, label %278

254:                                              ; preds = %247
  %255 = load i32, ptr %31, align 4, !tbaa !9
  %256 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %257 = load ptr, ptr %256, align 8, !tbaa !21
  %258 = getelementptr inbounds %class.tetgenio, ptr %257, i32 0, i32 20
  %259 = load i32, ptr %258, align 8, !tbaa !22
  %260 = mul nsw i32 %255, %259
  store i32 %260, ptr %30, align 4, !tbaa !9
  %261 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %262 = load ptr, ptr %261, align 8, !tbaa !21
  %263 = getelementptr inbounds %class.tetgenio, ptr %262, i32 0, i32 13
  %264 = load ptr, ptr %263, align 8, !tbaa !37
  %265 = load i32, ptr %30, align 4, !tbaa !9
  %266 = load i32, ptr %32, align 4, !tbaa !9
  %267 = add nsw i32 %265, %266
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds double, ptr %264, i64 %268
  %270 = load double, ptr %269, align 8, !tbaa !34
  store double %270, ptr %20, align 8, !tbaa !34
  %271 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %272 = load ptr, ptr %271, align 8, !tbaa !35
  %273 = load i32, ptr %32, align 4, !tbaa !9
  %274 = load double, ptr %20, align 8, !tbaa !34
  call void @_ZN10tetgenmesh16setelemattributeEPPPdid(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %272, i32 noundef %273, double noundef %274)
  br label %275

275:                                              ; preds = %254
  %276 = load i32, ptr %32, align 4, !tbaa !9
  %277 = add nsw i32 %276, 1
  store i32 %277, ptr %32, align 4, !tbaa !9
  br label %247, !llvm.loop !38

278:                                              ; preds = %247
  %279 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 2
  %280 = load ptr, ptr %279, align 8, !tbaa !11
  %281 = getelementptr inbounds %class.tetgenbehavior, ptr %280, i32 0, i32 11
  %282 = load i32, ptr %281, align 4, !tbaa !39
  %283 = icmp ne i32 %282, 0
  br i1 %283, label %284, label %304

284:                                              ; preds = %278
  %285 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %286 = load ptr, ptr %285, align 8, !tbaa !21
  %287 = getelementptr inbounds %class.tetgenio, ptr %286, i32 0, i32 14
  %288 = load ptr, ptr %287, align 8, !tbaa !40
  %289 = icmp ne ptr %288, null
  br i1 %289, label %290, label %299

290:                                              ; preds = %284
  %291 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %292 = load ptr, ptr %291, align 8, !tbaa !21
  %293 = getelementptr inbounds %class.tetgenio, ptr %292, i32 0, i32 14
  %294 = load ptr, ptr %293, align 8, !tbaa !40
  %295 = load i32, ptr %31, align 4, !tbaa !9
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds double, ptr %294, i64 %296
  %298 = load double, ptr %297, align 8, !tbaa !34
  store double %298, ptr %21, align 8, !tbaa !34
  br label %300

299:                                              ; preds = %284
  store double -1.000000e+00, ptr %21, align 8, !tbaa !34
  br label %300

300:                                              ; preds = %299, %290
  %301 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %302 = load ptr, ptr %301, align 8, !tbaa !35
  %303 = load double, ptr %21, align 8, !tbaa !34
  call void @_ZN10tetgenmesh14setvolumeboundEPPPdd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %302, double noundef %303)
  br label %304

304:                                              ; preds = %300, %278
  %305 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  store i32 0, ptr %305, align 8, !tbaa !36
  br label %306

306:                                              ; preds = %467, %304
  %307 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %308 = load i32, ptr %307, align 8, !tbaa !36
  %309 = icmp slt i32 %308, 4
  br i1 %309, label %310, label %471

310:                                              ; preds = %306
  %311 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %312 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 3
  store ptr %311, ptr %312, align 8, !tbaa !5
  %313 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 3
  %314 = load ptr, ptr %313, align 8, !tbaa !5
  %315 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %314)
  store i32 %315, ptr %30, align 4, !tbaa !9
  %316 = load ptr, ptr %3, align 8, !tbaa !5
  %317 = load i32, ptr %30, align 4, !tbaa !9
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds ptr, ptr %316, i64 %318
  %320 = load ptr, ptr %319, align 8, !tbaa !5
  store ptr %320, ptr %11, align 8, !tbaa !5
  %321 = load ptr, ptr %11, align 8, !tbaa !5
  %322 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %323 = load ptr, ptr %322, align 8, !tbaa !35
  %324 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %325 = load i32, ptr %324, align 8, !tbaa !36
  %326 = add nsw i32 8, %325
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds ptr, ptr %323, i64 %327
  store ptr %321, ptr %328, align 8, !tbaa !5
  %329 = call noundef ptr @_ZN10tetgenmesh6encodeERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %330 = load ptr, ptr %3, align 8, !tbaa !5
  %331 = load i32, ptr %30, align 4, !tbaa !9
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds ptr, ptr %330, i64 %332
  store ptr %329, ptr %333, align 8, !tbaa !5
  %334 = load ptr, ptr %11, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %334, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %335 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %336 = load ptr, ptr %335, align 8, !tbaa !35
  %337 = icmp ne ptr %336, null
  br i1 %337, label %338, label %466

338:                                              ; preds = %310
  %339 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %340 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  store ptr %339, ptr %340, align 16, !tbaa !5
  %341 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %342 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  store ptr %341, ptr %342, align 8, !tbaa !5
  %343 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %344 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 2
  store ptr %343, ptr %344, align 16, !tbaa !5
  %345 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br label %346

346:                                              ; preds = %461, %338
  %347 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %348 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 0
  store ptr %347, ptr %348, align 16, !tbaa !5
  %349 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %350 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 1
  store ptr %349, ptr %350, align 8, !tbaa !5
  %351 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %352 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 2
  store ptr %351, ptr %352, align 16, !tbaa !5
  store i32 0, ptr %28, align 4, !tbaa !9
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %353

353:                                              ; preds = %434, %346
  %354 = load i32, ptr %32, align 4, !tbaa !9
  %355 = icmp slt i32 %354, 3
  br i1 %355, label %356, label %437

356:                                              ; preds = %353
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %357 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %10, i32 0, i32 0
  %358 = load ptr, ptr %357, align 8, !tbaa !35
  %359 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %10, i32 0, i32 1
  %360 = load i32, ptr %359, align 8, !tbaa !36
  %361 = and i32 %360, 3
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds ptr, ptr %358, i64 %362
  %364 = load ptr, ptr %363, align 8, !tbaa !5
  %365 = icmp eq ptr %364, null
  br i1 %365, label %366, label %430

366:                                              ; preds = %356
  %367 = load i32, ptr %32, align 4, !tbaa !9
  %368 = add nsw i32 %367, 1
  %369 = srem i32 %368, 3
  store i32 %369, ptr %33, align 4, !tbaa !9
  %370 = load i32, ptr %33, align 4, !tbaa !9
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 %371
  %373 = load ptr, ptr %372, align 8, !tbaa !5
  %374 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  %375 = load ptr, ptr %374, align 16, !tbaa !5
  %376 = icmp eq ptr %373, %375
  br i1 %376, label %377, label %389

377:                                              ; preds = %366
  %378 = load i32, ptr %32, align 4, !tbaa !9
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 %379
  %381 = load ptr, ptr %380, align 8, !tbaa !5
  %382 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  %383 = load ptr, ptr %382, align 8, !tbaa !5
  %384 = icmp eq ptr %381, %383
  br i1 %384, label %385, label %388

385:                                              ; preds = %377
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %386 = load i32, ptr %28, align 4, !tbaa !9
  %387 = add nsw i32 %386, 1
  store i32 %387, ptr %28, align 4, !tbaa !9
  br label %388

388:                                              ; preds = %385, %377
  br label %389

389:                                              ; preds = %388, %366
  %390 = load i32, ptr %33, align 4, !tbaa !9
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 %391
  %393 = load ptr, ptr %392, align 8, !tbaa !5
  %394 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  %395 = load ptr, ptr %394, align 8, !tbaa !5
  %396 = icmp eq ptr %393, %395
  br i1 %396, label %397, label %409

397:                                              ; preds = %389
  %398 = load i32, ptr %32, align 4, !tbaa !9
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 %399
  %401 = load ptr, ptr %400, align 8, !tbaa !5
  %402 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 2
  %403 = load ptr, ptr %402, align 16, !tbaa !5
  %404 = icmp eq ptr %401, %403
  br i1 %404, label %405, label %408

405:                                              ; preds = %397
  call void @_ZN10tetgenmesh5enextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %406 = load i32, ptr %28, align 4, !tbaa !9
  %407 = add nsw i32 %406, 1
  store i32 %407, ptr %28, align 4, !tbaa !9
  br label %408

408:                                              ; preds = %405, %397
  br label %409

409:                                              ; preds = %408, %389
  %410 = load i32, ptr %33, align 4, !tbaa !9
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 %411
  %413 = load ptr, ptr %412, align 8, !tbaa !5
  %414 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 2
  %415 = load ptr, ptr %414, align 16, !tbaa !5
  %416 = icmp eq ptr %413, %415
  br i1 %416, label %417, label %429

417:                                              ; preds = %409
  %418 = load i32, ptr %32, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 %419
  %421 = load ptr, ptr %420, align 8, !tbaa !5
  %422 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  %423 = load ptr, ptr %422, align 16, !tbaa !5
  %424 = icmp eq ptr %421, %423
  br i1 %424, label %425, label %428

425:                                              ; preds = %417
  call void @_ZN10tetgenmesh5eprevERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %426 = load i32, ptr %28, align 4, !tbaa !9
  %427 = add nsw i32 %426, 1
  store i32 %427, ptr %28, align 4, !tbaa !9
  br label %428

428:                                              ; preds = %425, %417
  br label %429

429:                                              ; preds = %428, %409
  br label %433

430:                                              ; preds = %356
  %431 = load i32, ptr %28, align 4, !tbaa !9
  %432 = add nsw i32 %431, 1
  store i32 %432, ptr %28, align 4, !tbaa !9
  br label %433

433:                                              ; preds = %430, %429
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %434

434:                                              ; preds = %433
  %435 = load i32, ptr %32, align 4, !tbaa !9
  %436 = add nsw i32 %435, 1
  store i32 %436, ptr %32, align 4, !tbaa !9
  br label %353, !llvm.loop !41

437:                                              ; preds = %353
  %438 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %439 = load ptr, ptr %438, align 8, !tbaa !35
  %440 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 1
  %441 = load i32, ptr %440, align 8, !tbaa !36
  %442 = add nsw i32 8, %441
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds ptr, ptr %439, i64 %443
  %445 = load ptr, ptr %444, align 8, !tbaa !5
  store ptr %445, ptr %11, align 8, !tbaa !5
  %446 = load i32, ptr %28, align 4, !tbaa !9
  %447 = icmp eq i32 %446, 3
  br i1 %447, label %448, label %457

448:                                              ; preds = %437
  %449 = load ptr, ptr %11, align 8, !tbaa !5
  %450 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %7, i32 0, i32 0
  %451 = load ptr, ptr %450, align 8, !tbaa !35
  %452 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %7, i32 0, i32 1
  %453 = load i32, ptr %452, align 8, !tbaa !36
  %454 = add nsw i32 8, %453
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds ptr, ptr %451, i64 %455
  store ptr %449, ptr %456, align 8, !tbaa !5
  br label %459

457:                                              ; preds = %437
  %458 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %459

459:                                              ; preds = %457, %448
  %460 = load ptr, ptr %11, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %460, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %461

461:                                              ; preds = %459
  %462 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %463 = load ptr, ptr %462, align 8, !tbaa !35
  %464 = icmp ne ptr %463, null
  br i1 %464, label %346, label %465, !llvm.loop !42

465:                                              ; preds = %461
  br label %466

466:                                              ; preds = %465, %310
  br label %467

467:                                              ; preds = %466
  %468 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %469 = load i32, ptr %468, align 8, !tbaa !36
  %470 = add nsw i32 %469, 1
  store i32 %470, ptr %468, align 8, !tbaa !36
  br label %306, !llvm.loop !43

471:                                              ; preds = %306
  br label %472

472:                                              ; preds = %471
  %473 = load i32, ptr %31, align 4, !tbaa !9
  %474 = add nsw i32 %473, 1
  store i32 %474, ptr %31, align 4, !tbaa !9
  br label %124, !llvm.loop !44

475:                                              ; preds = %124
  %476 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 36
  %477 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %476, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %478 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 4
  %479 = load ptr, ptr %478, align 8, !tbaa !45
  %480 = getelementptr inbounds %"class.tetgenmesh::memorypool", ptr %479, i32 0, i32 10
  %481 = load i64, ptr %480, align 8, !tbaa !46
  %482 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 76
  store i64 %481, ptr %482, align 8, !tbaa !48
  %483 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 4
  %484 = load ptr, ptr %483, align 8, !tbaa !45
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %484)
  %485 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %47)
  %486 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  store ptr %485, ptr %486, align 8, !tbaa !35
  br label %487

487:                                              ; preds = %625, %475
  %488 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %489 = load ptr, ptr %488, align 8, !tbaa !35
  %490 = icmp ne ptr %489, null
  br i1 %490, label %491, label %628

491:                                              ; preds = %487
  %492 = call noundef ptr @_ZN10tetgenmesh6encodeERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5)
  store ptr %492, ptr %11, align 8, !tbaa !5
  %493 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  store i32 0, ptr %493, align 8, !tbaa !36
  br label %494

494:                                              ; preds = %621, %491
  %495 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %496 = load i32, ptr %495, align 8, !tbaa !36
  %497 = icmp slt i32 %496, 4
  br i1 %497, label %498, label %625

498:                                              ; preds = %494
  %499 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %500 = load ptr, ptr %499, align 8, !tbaa !35
  %501 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %502 = load i32, ptr %501, align 8, !tbaa !36
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds ptr, ptr %500, i64 %503
  %505 = load ptr, ptr %504, align 8, !tbaa !5
  %506 = icmp eq ptr %505, null
  br i1 %506, label %507, label %604

507:                                              ; preds = %498
  call void @_ZN10tetgenmesh15maketetrahedronEPNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %8)
  %508 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %509 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  store ptr %508, ptr %509, align 16, !tbaa !5
  %510 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %511 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  store ptr %510, ptr %511, align 8, !tbaa !5
  %512 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %513 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 2
  store ptr %512, ptr %513, align 16, !tbaa !5
  %514 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  %515 = load ptr, ptr %514, align 8, !tbaa !5
  %516 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %8, i32 0, i32 0
  %517 = load ptr, ptr %516, align 8, !tbaa !35
  %518 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %8, i32 0, i32 1
  %519 = load i32, ptr %518, align 8, !tbaa !36
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh8orgpivotE, i64 0, i64 %520
  %522 = load i32, ptr %521, align 4, !tbaa !9
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds ptr, ptr %517, i64 %523
  store ptr %515, ptr %524, align 8, !tbaa !5
  %525 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  %526 = load ptr, ptr %525, align 16, !tbaa !5
  %527 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %8, i32 0, i32 0
  %528 = load ptr, ptr %527, align 8, !tbaa !35
  %529 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %8, i32 0, i32 1
  %530 = load i32, ptr %529, align 8, !tbaa !36
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9destpivotE, i64 0, i64 %531
  %533 = load i32, ptr %532, align 4, !tbaa !9
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds ptr, ptr %528, i64 %534
  store ptr %526, ptr %535, align 8, !tbaa !5
  %536 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 2
  %537 = load ptr, ptr %536, align 16, !tbaa !5
  %538 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %8, i32 0, i32 0
  %539 = load ptr, ptr %538, align 8, !tbaa !35
  %540 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %8, i32 0, i32 1
  %541 = load i32, ptr %540, align 8, !tbaa !36
  %542 = sext i32 %541 to i64
  %543 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9apexpivotE, i64 0, i64 %542
  %544 = load i32, ptr %543, align 4, !tbaa !9
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds ptr, ptr %539, i64 %545
  store ptr %537, ptr %546, align 8, !tbaa !5
  %547 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 35
  %548 = load ptr, ptr %547, align 8, !tbaa !26
  %549 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %8, i32 0, i32 0
  %550 = load ptr, ptr %549, align 8, !tbaa !35
  %551 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %8, i32 0, i32 1
  %552 = load i32, ptr %551, align 8, !tbaa !36
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9oppopivotE, i64 0, i64 %553
  %555 = load i32, ptr %554, align 4, !tbaa !9
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds ptr, ptr %550, i64 %556
  store ptr %548, ptr %557, align 8, !tbaa !5
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %8)
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %558

558:                                              ; preds = %600, %507
  %559 = load i32, ptr %32, align 4, !tbaa !9
  %560 = icmp slt i32 %559, 3
  br i1 %560, label %561, label %603

561:                                              ; preds = %558
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %8, ptr noundef nonnull align 8 dereferenceable(12) %10)
  br label %562

562:                                              ; preds = %574, %561
  br label %563

563:                                              ; preds = %562
  %564 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %10, i32 0, i32 0
  %565 = load ptr, ptr %564, align 8, !tbaa !35
  %566 = icmp eq ptr %565, null
  br i1 %566, label %567, label %568

567:                                              ; preds = %563
  br label %594

568:                                              ; preds = %563
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %569 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %570 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 35
  %571 = load ptr, ptr %570, align 8, !tbaa !26
  %572 = icmp eq ptr %569, %571
  br i1 %572, label %573, label %574

573:                                              ; preds = %568
  br label %594

574:                                              ; preds = %568
  %575 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %10, i32 0, i32 1
  %576 = load i32, ptr %575, align 8, !tbaa !36
  store i32 %576, ptr %29, align 4, !tbaa !9
  %577 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %10, i32 0, i32 0
  %578 = load ptr, ptr %577, align 8, !tbaa !35
  %579 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %10, i32 0, i32 1
  %580 = load i32, ptr %579, align 8, !tbaa !36
  %581 = and i32 %580, 3
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds ptr, ptr %578, i64 %582
  %584 = load ptr, ptr %583, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %584, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %585 = load i32, ptr %29, align 4, !tbaa !9
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %586
  %588 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %10, i32 0, i32 1
  %589 = load i32, ptr %588, align 8, !tbaa !36
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds [12 x i32], ptr %587, i64 0, i64 %590
  %592 = load i32, ptr %591, align 4, !tbaa !9
  %593 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %10, i32 0, i32 1
  store i32 %592, ptr %593, align 8, !tbaa !36
  br label %562, !llvm.loop !49

594:                                              ; preds = %573, %567
  %595 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %10, i32 0, i32 0
  %596 = load ptr, ptr %595, align 8, !tbaa !35
  %597 = icmp ne ptr %596, null
  br i1 %597, label %598, label %599

598:                                              ; preds = %594
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %8, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %10)
  br label %599

599:                                              ; preds = %598, %594
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %600

600:                                              ; preds = %599
  %601 = load i32, ptr %32, align 4, !tbaa !9
  %602 = add nsw i32 %601, 1
  store i32 %602, ptr %32, align 4, !tbaa !9
  br label %558, !llvm.loop !50

603:                                              ; preds = %558
  br label %604

604:                                              ; preds = %603, %498
  %605 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %606 = load ptr, ptr %605, align 8, !tbaa !35
  %607 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %608 = load i32, ptr %607, align 8, !tbaa !36
  %609 = add nsw i32 4, %608
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds ptr, ptr %606, i64 %610
  %612 = load ptr, ptr %611, align 8, !tbaa !5
  %613 = load ptr, ptr %11, align 8, !tbaa !5
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %612, ptr noundef %613)
  %614 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %615 = load ptr, ptr %614, align 8, !tbaa !35
  %616 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %617 = load i32, ptr %616, align 8, !tbaa !36
  %618 = add nsw i32 8, %617
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds ptr, ptr %615, i64 %619
  store ptr null, ptr %620, align 8, !tbaa !5
  br label %621

621:                                              ; preds = %604
  %622 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %623 = load i32, ptr %622, align 8, !tbaa !36
  %624 = add nsw i32 %623, 1
  store i32 %624, ptr %622, align 8, !tbaa !36
  br label %494, !llvm.loop !51

625:                                              ; preds = %494
  %626 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %47)
  %627 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  store ptr %626, ptr %627, align 8, !tbaa !35
  br label %487, !llvm.loop !52

628:                                              ; preds = %487
  %629 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 4
  %630 = load ptr, ptr %629, align 8, !tbaa !45
  %631 = getelementptr inbounds %"class.tetgenmesh::memorypool", ptr %630, i32 0, i32 10
  %632 = load i64, ptr %631, align 8, !tbaa !46
  %633 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 76
  %634 = load i64, ptr %633, align 8, !tbaa !48
  %635 = sub nsw i64 %632, %634
  %636 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 76
  store i64 %635, ptr %636, align 8, !tbaa !48
  %637 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %638 = load ptr, ptr %637, align 8, !tbaa !21
  %639 = getelementptr inbounds %class.tetgenio, ptr %638, i32 0, i32 32
  %640 = load ptr, ptr %639, align 8, !tbaa !53
  %641 = icmp ne ptr %640, null
  br i1 %641, label %642, label %862

642:                                              ; preds = %628
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %643

643:                                              ; preds = %858, %642
  %644 = load i32, ptr %31, align 4, !tbaa !9
  %645 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %646 = load ptr, ptr %645, align 8, !tbaa !21
  %647 = getelementptr inbounds %class.tetgenio, ptr %646, i32 0, i32 37
  %648 = load i32, ptr %647, align 8, !tbaa !54
  %649 = icmp slt i32 %644, %648
  br i1 %649, label %650, label %861

650:                                              ; preds = %643
  %651 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %652 = load ptr, ptr %651, align 8, !tbaa !21
  %653 = getelementptr inbounds %class.tetgenio, ptr %652, i32 0, i32 33
  %654 = load ptr, ptr %653, align 8, !tbaa !55
  %655 = icmp ne ptr %654, null
  br i1 %655, label %656, label %665

656:                                              ; preds = %650
  %657 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %658 = load ptr, ptr %657, align 8, !tbaa !21
  %659 = getelementptr inbounds %class.tetgenio, ptr %658, i32 0, i32 33
  %660 = load ptr, ptr %659, align 8, !tbaa !55
  %661 = load i32, ptr %31, align 4, !tbaa !9
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds i32, ptr %660, i64 %662
  %664 = load i32, ptr %663, align 4, !tbaa !9
  store i32 %664, ptr %27, align 4, !tbaa !9
  br label %666

665:                                              ; preds = %650
  store i32 -1, ptr %27, align 4, !tbaa !9
  br label %666

666:                                              ; preds = %665, %656
  %667 = load i32, ptr %27, align 4, !tbaa !9
  %668 = icmp ne i32 %667, 0
  br i1 %668, label %669, label %857

669:                                              ; preds = %666
  %670 = load i32, ptr %31, align 4, !tbaa !9
  %671 = mul nsw i32 %670, 3
  store i32 %671, ptr %30, align 4, !tbaa !9
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %672

672:                                              ; preds = %692, %669
  %673 = load i32, ptr %32, align 4, !tbaa !9
  %674 = icmp slt i32 %673, 3
  br i1 %674, label %675, label %695

675:                                              ; preds = %672
  %676 = load ptr, ptr %4, align 8, !tbaa !5
  %677 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %678 = load ptr, ptr %677, align 8, !tbaa !21
  %679 = getelementptr inbounds %class.tetgenio, ptr %678, i32 0, i32 32
  %680 = load ptr, ptr %679, align 8, !tbaa !53
  %681 = load i32, ptr %30, align 4, !tbaa !9
  %682 = add nsw i32 %681, 1
  store i32 %682, ptr %30, align 4, !tbaa !9
  %683 = sext i32 %681 to i64
  %684 = getelementptr inbounds i32, ptr %680, i64 %683
  %685 = load i32, ptr %684, align 4, !tbaa !9
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds ptr, ptr %676, i64 %686
  %688 = load ptr, ptr %687, align 8, !tbaa !5
  %689 = load i32, ptr %32, align 4, !tbaa !9
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 %690
  store ptr %688, ptr %691, align 8, !tbaa !5
  br label %692

692:                                              ; preds = %675
  %693 = load i32, ptr %32, align 4, !tbaa !9
  %694 = add nsw i32 %693, 1
  store i32 %694, ptr %32, align 4, !tbaa !9
  br label %672, !llvm.loop !56

695:                                              ; preds = %672
  store i32 0, ptr %28, align 4, !tbaa !9
  %696 = getelementptr inbounds %"class.tetgenmesh::face", ptr %13, i32 0, i32 0
  store ptr null, ptr %696, align 8, !tbaa !57
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %697

697:                                              ; preds = %711, %695
  %698 = load i32, ptr %32, align 4, !tbaa !9
  %699 = icmp slt i32 %698, 3
  br i1 %699, label %700, label %714

700:                                              ; preds = %697
  %701 = load i32, ptr %32, align 4, !tbaa !9
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 %702
  %704 = load ptr, ptr %703, align 8, !tbaa !5
  %705 = call noundef ptr @_ZN10tetgenmesh9point2tetEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %704)
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %705, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %706 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %707 = load ptr, ptr %706, align 8, !tbaa !35
  %708 = icmp eq ptr %707, null
  br i1 %708, label %709, label %710

709:                                              ; preds = %700
  br label %714

710:                                              ; preds = %700
  br label %711

711:                                              ; preds = %710
  %712 = load i32, ptr %32, align 4, !tbaa !9
  %713 = add nsw i32 %712, 1
  store i32 %713, ptr %32, align 4, !tbaa !9
  br label %697, !llvm.loop !58

714:                                              ; preds = %709, %697
  %715 = load i32, ptr %32, align 4, !tbaa !9
  %716 = icmp eq i32 %715, 3
  br i1 %716, label %717, label %770

717:                                              ; preds = %714
  %718 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  %719 = load ptr, ptr %718, align 16, !tbaa !5
  %720 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  %721 = load ptr, ptr %720, align 8, !tbaa !5
  %722 = call noundef i32 @_ZN10tetgenmesh7getedgeEPdS0_PNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %719, ptr noundef %721, ptr noundef %6)
  %723 = icmp ne i32 %722, 0
  br i1 %723, label %724, label %770

724:                                              ; preds = %717
  %725 = 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)
  %726 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %727 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 2
  store ptr %726, ptr %727, align 16, !tbaa !5
  br label %728

728:                                              ; preds = %768, %724
  br label %729

729:                                              ; preds = %728
  %730 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %731 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 2
  %732 = load ptr, ptr %731, align 16, !tbaa !5
  %733 = icmp eq ptr %730, %732
  br i1 %733, label %734, label %741

734:                                              ; preds = %729
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %13)
  %735 = getelementptr inbounds %"class.tetgenmesh::face", ptr %13, i32 0, i32 0
  %736 = load ptr, ptr %735, align 8, !tbaa !57
  %737 = icmp ne ptr %736, null
  br i1 %737, label %738, label %739

738:                                              ; preds = %734
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %740

739:                                              ; preds = %734
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %740

740:                                              ; preds = %739, %738
  br label %769

741:                                              ; preds = %729
  %742 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %743 = load i32, ptr %742, align 8, !tbaa !36
  store i32 %743, ptr %29, align 4, !tbaa !9
  %744 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %745 = load ptr, ptr %744, align 8, !tbaa !35
  %746 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %747 = load i32, ptr %746, align 8, !tbaa !36
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %748
  %750 = load i32, ptr %749, align 4, !tbaa !9
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds ptr, ptr %745, i64 %751
  %753 = load ptr, ptr %752, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %753, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %754 = load i32, ptr %29, align 4, !tbaa !9
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %755
  %757 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %758 = load i32, ptr %757, align 8, !tbaa !36
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds [12 x i32], ptr %756, i64 0, i64 %759
  %761 = load i32, ptr %760, align 4, !tbaa !9
  %762 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  store i32 %761, ptr %762, align 8, !tbaa !36
  %763 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %764 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 2
  %765 = load ptr, ptr %764, align 16, !tbaa !5
  %766 = icmp eq ptr %763, %765
  br i1 %766, label %767, label %768

767:                                              ; preds = %741
  br label %769

768:                                              ; preds = %741
  br label %728, !llvm.loop !59

769:                                              ; preds = %767, %740
  br label %770

770:                                              ; preds = %769, %717, %714
  %771 = load i32, ptr %28, align 4, !tbaa !9
  %772 = icmp ne i32 %771, 0
  br i1 %772, label %773, label %820

773:                                              ; preds = %770
  %774 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 5
  %775 = load ptr, ptr %774, align 8, !tbaa !60
  call void @_ZN10tetgenmesh13makeshellfaceEPNS_10memorypoolEPNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %775, ptr noundef %12)
  %776 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  %777 = load ptr, ptr %776, align 16, !tbaa !5
  call void @_ZN10tetgenmesh7setsorgERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef %777)
  %778 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  %779 = load ptr, ptr %778, align 8, !tbaa !5
  call void @_ZN10tetgenmesh8setsdestERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef %779)
  %780 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 2
  %781 = load ptr, ptr %780, align 16, !tbaa !5
  call void @_ZN10tetgenmesh8setsapexERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef %781)
  %782 = call noundef ptr @_ZN10tetgenmesh7sencodeERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12)
  store ptr %782, ptr %16, align 8, !tbaa !5
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %783

783:                                              ; preds = %796, %773
  %784 = load i32, ptr %32, align 4, !tbaa !9
  %785 = icmp slt i32 %784, 3
  br i1 %785, label %786, label %799

786:                                              ; preds = %783
  %787 = load i32, ptr %32, align 4, !tbaa !9
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 %788
  %790 = load ptr, ptr %789, align 8, !tbaa !5
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %790, i32 noundef 4)
  %791 = load i32, ptr %32, align 4, !tbaa !9
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 %792
  %794 = load ptr, ptr %793, align 8, !tbaa !5
  %795 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN10tetgenmesh11setpoint2shEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %794, ptr noundef %795)
  br label %796

796:                                              ; preds = %786
  %797 = load i32, ptr %32, align 4, !tbaa !9
  %798 = add nsw i32 %797, 1
  store i32 %798, ptr %32, align 4, !tbaa !9
  br label %783, !llvm.loop !61

799:                                              ; preds = %783
  %800 = load i32, ptr %27, align 4, !tbaa !9
  call void @_ZN10tetgenmesh12setshellmarkERNS_4faceEi(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12, i32 noundef %800)
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %801 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %802 = load i32, ptr %801, align 8, !tbaa !36
  store i32 %802, ptr %29, align 4, !tbaa !9
  %803 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %804 = load ptr, ptr %803, align 8, !tbaa !35
  %805 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %806 = load i32, ptr %805, align 8, !tbaa !36
  %807 = and i32 %806, 3
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds ptr, ptr %804, i64 %808
  %810 = load ptr, ptr %809, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %810, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %811 = load i32, ptr %29, align 4, !tbaa !9
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %812
  %814 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %815 = load i32, ptr %814, align 8, !tbaa !36
  %816 = sext i32 %815 to i64
  %817 = getelementptr inbounds [12 x i32], ptr %813, i64 0, i64 %816
  %818 = load i32, ptr %817, align 4, !tbaa !9
  %819 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  store i32 %818, ptr %819, align 8, !tbaa !36
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %12)
  br label %856

820:                                              ; preds = %770
  %821 = getelementptr inbounds %"class.tetgenmesh::face", ptr %13, i32 0, i32 0
  %822 = load ptr, ptr %821, align 8, !tbaa !57
  %823 = icmp ne ptr %822, null
  br i1 %823, label %824, label %826

824:                                              ; preds = %820
  %825 = load i32, ptr %27, align 4, !tbaa !9
  call void @_ZN10tetgenmesh12setshellmarkERNS_4faceEi(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %13, i32 noundef %825)
  br label %855

826:                                              ; preds = %820
  %827 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 2
  %828 = load ptr, ptr %827, align 8, !tbaa !11
  %829 = getelementptr inbounds %class.tetgenbehavior, ptr %828, i32 0, i32 36
  %830 = load i32, ptr %829, align 8, !tbaa !17
  %831 = icmp ne i32 %830, 0
  br i1 %831, label %854, label %832

832:                                              ; preds = %826
  %833 = getelementptr inbounds %"class.tetgenmesh::face", ptr %13, i32 0, i32 0
  %834 = load ptr, ptr %833, align 8, !tbaa !57
  %835 = icmp eq ptr %834, null
  br i1 %835, label %836, label %853

836:                                              ; preds = %832
  %837 = load i32, ptr %31, align 4, !tbaa !9
  %838 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %839 = load ptr, ptr %838, align 8, !tbaa !21
  %840 = getelementptr inbounds %class.tetgenio, ptr %839, i32 0, i32 0
  %841 = load i32, ptr %840, align 8, !tbaa !25
  %842 = add nsw i32 %837, %841
  %843 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  %844 = load ptr, ptr %843, align 16, !tbaa !5
  %845 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %844)
  %846 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  %847 = load ptr, ptr %846, align 8, !tbaa !5
  %848 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %847)
  %849 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 2
  %850 = load ptr, ptr %849, align 16, !tbaa !5
  %851 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %850)
  %852 = call i32 (ptr, ...) @printf(ptr noundef @.str.464, i32 noundef %842, i32 noundef %845, i32 noundef %848, i32 noundef %851)
  br label %853

853:                                              ; preds = %836, %832
  br label %854

854:                                              ; preds = %853, %826
  br label %855

855:                                              ; preds = %854, %824
  br label %856

856:                                              ; preds = %855, %799
  br label %857

857:                                              ; preds = %856, %666
  br label %858

858:                                              ; preds = %857
  %859 = load i32, ptr %31, align 4, !tbaa !9
  %860 = add nsw i32 %859, 1
  store i32 %860, ptr %31, align 4, !tbaa !9
  br label %643, !llvm.loop !62

861:                                              ; preds = %643
  br label %862

862:                                              ; preds = %861, %628
  %863 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %864 = load ptr, ptr %863, align 8, !tbaa !21
  %865 = getelementptr inbounds %class.tetgenio, ptr %864, i32 0, i32 20
  %866 = load i32, ptr %865, align 8, !tbaa !22
  store i32 %866, ptr %26, align 4, !tbaa !9
  %867 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 4
  %868 = load ptr, ptr %867, align 8, !tbaa !45
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %868)
  %869 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %47)
  %870 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  store ptr %869, ptr %870, align 8, !tbaa !35
  br label %871

871:                                              ; preds = %955, %862
  %872 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %873 = load ptr, ptr %872, align 8, !tbaa !35
  %874 = icmp ne ptr %873, null
  br i1 %874, label %875, label %958

875:                                              ; preds = %871
  %876 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  store i32 0, ptr %876, align 8, !tbaa !36
  br label %877

877:                                              ; preds = %951, %875
  %878 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %879 = load i32, ptr %878, align 8, !tbaa !36
  %880 = icmp slt i32 %879, 4
  br i1 %880, label %881, label %955

881:                                              ; preds = %877
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %13)
  %882 = getelementptr inbounds %"class.tetgenmesh::face", ptr %13, i32 0, i32 0
  %883 = load ptr, ptr %882, align 8, !tbaa !57
  %884 = icmp eq ptr %883, null
  br i1 %884, label %885, label %950

885:                                              ; preds = %881
  store i32 0, ptr %28, align 4, !tbaa !9
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %886 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br i1 %886, label %887, label %895

887:                                              ; preds = %885
  %888 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 2
  %889 = load ptr, ptr %888, align 8, !tbaa !11
  %890 = getelementptr inbounds %class.tetgenbehavior, ptr %889, i32 0, i32 17
  %891 = load i32, ptr %890, align 4, !tbaa !20
  %892 = icmp ne i32 %891, 0
  br i1 %892, label %894, label %893

893:                                              ; preds = %887
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %894

894:                                              ; preds = %893, %887
  br label %913

895:                                              ; preds = %885
  %896 = load i32, ptr %26, align 4, !tbaa !9
  %897 = icmp sgt i32 %896, 0
  br i1 %897, label %898, label %912

898:                                              ; preds = %895
  %899 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %900 = load ptr, ptr %899, align 8, !tbaa !35
  %901 = load i32, ptr %26, align 4, !tbaa !9
  %902 = sub nsw i32 %901, 1
  %903 = call noundef double @_ZN10tetgenmesh13elemattributeEPPPdi(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %900, i32 noundef %902)
  %904 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %905 = load ptr, ptr %904, align 8, !tbaa !35
  %906 = load i32, ptr %26, align 4, !tbaa !9
  %907 = sub nsw i32 %906, 1
  %908 = call noundef double @_ZN10tetgenmesh13elemattributeEPPPdi(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %905, i32 noundef %907)
  %909 = fcmp une double %903, %908
  br i1 %909, label %910, label %911

910:                                              ; preds = %898
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %911

911:                                              ; preds = %910, %898
  br label %912

912:                                              ; preds = %911, %895
  br label %913

913:                                              ; preds = %912, %894
  %914 = load i32, ptr %28, align 4, !tbaa !9
  %915 = icmp ne i32 %914, 0
  br i1 %915, label %916, label %949

916:                                              ; preds = %913
  %917 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 5
  %918 = load ptr, ptr %917, align 8, !tbaa !60
  call void @_ZN10tetgenmesh13makeshellfaceEPNS_10memorypoolEPNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %918, ptr noundef %12)
  %919 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %920 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  store ptr %919, ptr %920, align 16, !tbaa !5
  %921 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %922 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  store ptr %921, ptr %922, align 8, !tbaa !5
  %923 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %924 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 2
  store ptr %923, ptr %924, align 16, !tbaa !5
  %925 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  %926 = load ptr, ptr %925, align 16, !tbaa !5
  call void @_ZN10tetgenmesh7setsorgERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef %926)
  %927 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  %928 = load ptr, ptr %927, align 8, !tbaa !5
  call void @_ZN10tetgenmesh8setsdestERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef %928)
  %929 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 2
  %930 = load ptr, ptr %929, align 16, !tbaa !5
  call void @_ZN10tetgenmesh8setsapexERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef %930)
  %931 = call noundef ptr @_ZN10tetgenmesh7sencodeERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12)
  store ptr %931, ptr %16, align 8, !tbaa !5
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %932

932:                                              ; preds = %945, %916
  %933 = load i32, ptr %32, align 4, !tbaa !9
  %934 = icmp slt i32 %933, 3
  br i1 %934, label %935, label %948

935:                                              ; preds = %932
  %936 = load i32, ptr %32, align 4, !tbaa !9
  %937 = sext i32 %936 to i64
  %938 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 %937
  %939 = load ptr, ptr %938, align 8, !tbaa !5
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %939, i32 noundef 4)
  %940 = load i32, ptr %32, align 4, !tbaa !9
  %941 = sext i32 %940 to i64
  %942 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 %941
  %943 = load ptr, ptr %942, align 8, !tbaa !5
  %944 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN10tetgenmesh11setpoint2shEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %943, ptr noundef %944)
  br label %945

945:                                              ; preds = %935
  %946 = load i32, ptr %32, align 4, !tbaa !9
  %947 = add nsw i32 %946, 1
  store i32 %947, ptr %32, align 4, !tbaa !9
  br label %932, !llvm.loop !63

948:                                              ; preds = %932
  call void @_ZN10tetgenmesh12setshellmarkERNS_4faceEi(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12, i32 noundef -1)
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %12)
  br label %949

949:                                              ; preds = %948, %913
  br label %950

950:                                              ; preds = %949, %881
  br label %951

951:                                              ; preds = %950
  %952 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %953 = load i32, ptr %952, align 8, !tbaa !36
  %954 = add nsw i32 %953, 1
  store i32 %954, ptr %952, align 8, !tbaa !36
  br label %877, !llvm.loop !64

955:                                              ; preds = %877
  %956 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %47)
  %957 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  store ptr %956, ptr %957, align 8, !tbaa !35
  br label %871, !llvm.loop !65

958:                                              ; preds = %871
  %959 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 5
  %960 = load ptr, ptr %959, align 8, !tbaa !60
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %960)
  %961 = getelementptr inbounds %"class.tetgenmesh::face", ptr %12, i32 0, i32 1
  store i32 0, ptr %961, align 8, !tbaa !66
  %962 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 5
  %963 = load ptr, ptr %962, align 8, !tbaa !60
  %964 = call noundef ptr @_ZN10tetgenmesh17shellfacetraverseEPNS_10memorypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %963)
  %965 = getelementptr inbounds %"class.tetgenmesh::face", ptr %12, i32 0, i32 0
  store ptr %964, ptr %965, align 8, !tbaa !57
  br label %966

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

970:                                              ; preds = %966
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %971

971:                                              ; preds = %1026, %970
  %972 = load i32, ptr %31, align 4, !tbaa !9
  %973 = icmp slt i32 %972, 3
  br i1 %973, label %974, label %1029

974:                                              ; preds = %971
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %13)
  %975 = getelementptr inbounds %"class.tetgenmesh::face", ptr %13, i32 0, i32 0
  %976 = load ptr, ptr %975, align 8, !tbaa !57
  %977 = icmp eq ptr %976, null
  br i1 %977, label %978, label %1025

978:                                              ; preds = %974
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %979 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %980 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 2
  store ptr %979, ptr %980, align 16, !tbaa !5
  %981 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %13, ptr noundef nonnull align 8 dereferenceable(12) %12)
  br label %982

982:                                              ; preds = %1023, %978
  br label %983

983:                                              ; preds = %982
  %984 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %985 = load i32, ptr %984, align 8, !tbaa !36
  store i32 %985, ptr %29, align 4, !tbaa !9
  %986 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %987 = load ptr, ptr %986, align 8, !tbaa !35
  %988 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %989 = load i32, ptr %988, align 8, !tbaa !36
  %990 = sext i32 %989 to i64
  %991 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %990
  %992 = load i32, ptr %991, align 4, !tbaa !9
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds ptr, ptr %987, i64 %993
  %995 = load ptr, ptr %994, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %995, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %996 = load i32, ptr %29, align 4, !tbaa !9
  %997 = sext i32 %996 to i64
  %998 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %997
  %999 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %1000 = load i32, ptr %999, align 8, !tbaa !36
  %1001 = sext i32 %1000 to i64
  %1002 = getelementptr inbounds [12 x i32], ptr %998, i64 0, i64 %1001
  %1003 = load i32, ptr %1002, align 4, !tbaa !9
  %1004 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  store i32 %1003, ptr %1004, align 8, !tbaa !36
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %14)
  %1005 = getelementptr inbounds %"class.tetgenmesh::face", ptr %14, i32 0, i32 0
  %1006 = load ptr, ptr %1005, align 8, !tbaa !57
  %1007 = icmp ne ptr %1006, null
  br i1 %1007, label %1008, label %1017

1008:                                             ; preds = %983
  %1009 = getelementptr inbounds %"class.tetgenmesh::face", ptr %14, i32 0, i32 0
  %1010 = load ptr, ptr %1009, align 8, !tbaa !57
  %1011 = getelementptr inbounds %"class.tetgenmesh::face", ptr %13, i32 0, i32 0
  %1012 = load ptr, ptr %1011, align 8, !tbaa !57
  %1013 = icmp ne ptr %1010, %1012
  br i1 %1013, label %1014, label %1016

1014:                                             ; preds = %1008
  call void @_ZN10tetgenmesh6sbond1ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %13, ptr noundef nonnull align 8 dereferenceable(12) %14)
  %1015 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %13, ptr noundef nonnull align 8 dereferenceable(12) %14)
  br label %1016

1016:                                             ; preds = %1014, %1008
  br label %1017

1017:                                             ; preds = %1016, %983
  %1018 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %1019 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 2
  %1020 = load ptr, ptr %1019, align 16, !tbaa !5
  %1021 = icmp eq ptr %1018, %1020
  br i1 %1021, label %1022, label %1023

1022:                                             ; preds = %1017
  br label %1024

1023:                                             ; preds = %1017
  br label %982, !llvm.loop !67

1024:                                             ; preds = %1022
  br label %1025

1025:                                             ; preds = %1024, %974
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12)
  br label %1026

1026:                                             ; preds = %1025
  %1027 = load i32, ptr %31, align 4, !tbaa !9
  %1028 = add nsw i32 %1027, 1
  store i32 %1028, ptr %31, align 4, !tbaa !9
  br label %971, !llvm.loop !68

1029:                                             ; preds = %971
  %1030 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 5
  %1031 = load ptr, ptr %1030, align 8, !tbaa !60
  %1032 = call noundef ptr @_ZN10tetgenmesh17shellfacetraverseEPNS_10memorypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1031)
  %1033 = getelementptr inbounds %"class.tetgenmesh::face", ptr %12, i32 0, i32 0
  store ptr %1032, ptr %1033, align 8, !tbaa !57
  br label %966, !llvm.loop !69

1034:                                             ; preds = %966
  %1035 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %1036 = load ptr, ptr %1035, align 8, !tbaa !21
  %1037 = getelementptr inbounds %class.tetgenio, ptr %1036, i32 0, i32 38
  %1038 = load ptr, ptr %1037, align 8, !tbaa !70
  %1039 = icmp ne ptr %1038, null
  br i1 %1039, label %1040, label %1213

1040:                                             ; preds = %1034
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %1041

1041:                                             ; preds = %1209, %1040
  %1042 = load i32, ptr %31, align 4, !tbaa !9
  %1043 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %1044 = load ptr, ptr %1043, align 8, !tbaa !21
  %1045 = getelementptr inbounds %class.tetgenio, ptr %1044, i32 0, i32 42
  %1046 = load i32, ptr %1045, align 8, !tbaa !71
  %1047 = icmp slt i32 %1042, %1046
  br i1 %1047, label %1048, label %1212

1048:                                             ; preds = %1041
  %1049 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %1050 = load ptr, ptr %1049, align 8, !tbaa !21
  %1051 = getelementptr inbounds %class.tetgenio, ptr %1050, i32 0, i32 39
  %1052 = load ptr, ptr %1051, align 8, !tbaa !72
  %1053 = icmp ne ptr %1052, null
  br i1 %1053, label %1054, label %1063

1054:                                             ; preds = %1048
  %1055 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %1056 = load ptr, ptr %1055, align 8, !tbaa !21
  %1057 = getelementptr inbounds %class.tetgenio, ptr %1056, i32 0, i32 39
  %1058 = load ptr, ptr %1057, align 8, !tbaa !72
  %1059 = load i32, ptr %31, align 4, !tbaa !9
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds i32, ptr %1058, i64 %1060
  %1062 = load i32, ptr %1061, align 4, !tbaa !9
  store i32 %1062, ptr %27, align 4, !tbaa !9
  br label %1064

1063:                                             ; preds = %1048
  store i32 -1, ptr %27, align 4, !tbaa !9
  br label %1064

1064:                                             ; preds = %1063, %1054
  %1065 = load i32, ptr %27, align 4, !tbaa !9
  %1066 = icmp ne i32 %1065, 0
  br i1 %1066, label %1067, label %1208

1067:                                             ; preds = %1064
  %1068 = load i32, ptr %31, align 4, !tbaa !9
  %1069 = mul nsw i32 %1068, 2
  store i32 %1069, ptr %30, align 4, !tbaa !9
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %1070

1070:                                             ; preds = %1090, %1067
  %1071 = load i32, ptr %32, align 4, !tbaa !9
  %1072 = icmp slt i32 %1071, 2
  br i1 %1072, label %1073, label %1093

1073:                                             ; preds = %1070
  %1074 = load ptr, ptr %4, align 8, !tbaa !5
  %1075 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %1076 = load ptr, ptr %1075, align 8, !tbaa !21
  %1077 = getelementptr inbounds %class.tetgenio, ptr %1076, i32 0, i32 38
  %1078 = load ptr, ptr %1077, align 8, !tbaa !70
  %1079 = load i32, ptr %30, align 4, !tbaa !9
  %1080 = add nsw i32 %1079, 1
  store i32 %1080, ptr %30, align 4, !tbaa !9
  %1081 = sext i32 %1079 to i64
  %1082 = getelementptr inbounds i32, ptr %1078, i64 %1081
  %1083 = load i32, ptr %1082, align 4, !tbaa !9
  %1084 = sext i32 %1083 to i64
  %1085 = getelementptr inbounds ptr, ptr %1074, i64 %1084
  %1086 = load ptr, ptr %1085, align 8, !tbaa !5
  %1087 = load i32, ptr %32, align 4, !tbaa !9
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 %1088
  store ptr %1086, ptr %1089, align 8, !tbaa !5
  br label %1090

1090:                                             ; preds = %1073
  %1091 = load i32, ptr %32, align 4, !tbaa !9
  %1092 = add nsw i32 %1091, 1
  store i32 %1092, ptr %32, align 4, !tbaa !9
  br label %1070, !llvm.loop !73

1093:                                             ; preds = %1070
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %1094

1094:                                             ; preds = %1108, %1093
  %1095 = load i32, ptr %32, align 4, !tbaa !9
  %1096 = icmp slt i32 %1095, 2
  br i1 %1096, label %1097, label %1111

1097:                                             ; preds = %1094
  %1098 = load i32, ptr %32, align 4, !tbaa !9
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 %1099
  %1101 = load ptr, ptr %1100, align 8, !tbaa !5
  %1102 = call noundef ptr @_ZN10tetgenmesh9point2tetEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1101)
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1102, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %1103 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %6, i32 0, i32 0
  %1104 = load ptr, ptr %1103, align 8, !tbaa !35
  %1105 = icmp eq ptr %1104, null
  br i1 %1105, label %1106, label %1107

1106:                                             ; preds = %1097
  br label %1111

1107:                                             ; preds = %1097
  br label %1108

1108:                                             ; preds = %1107
  %1109 = load i32, ptr %32, align 4, !tbaa !9
  %1110 = add nsw i32 %1109, 1
  store i32 %1110, ptr %32, align 4, !tbaa !9
  br label %1094, !llvm.loop !74

1111:                                             ; preds = %1106, %1094
  %1112 = load i32, ptr %32, align 4, !tbaa !9
  %1113 = icmp eq i32 %1112, 2
  br i1 %1113, label %1114, label %1186

1114:                                             ; preds = %1111
  %1115 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  %1116 = load ptr, ptr %1115, align 16, !tbaa !5
  %1117 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  %1118 = load ptr, ptr %1117, align 8, !tbaa !5
  %1119 = call noundef i32 @_ZN10tetgenmesh7getedgeEPdS0_PNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1116, ptr noundef %1118, ptr noundef %6)
  %1120 = icmp ne i32 %1119, 0
  br i1 %1120, label %1121, label %1186

1121:                                             ; preds = %1114
  %1122 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 6
  %1123 = load ptr, ptr %1122, align 8, !tbaa !75
  call void @_ZN10tetgenmesh13makeshellfaceEPNS_10memorypoolEPNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1123, ptr noundef %15)
  %1124 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  %1125 = load ptr, ptr %1124, align 16, !tbaa !5
  call void @_ZN10tetgenmesh7setsorgERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef %1125)
  %1126 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  %1127 = load ptr, ptr %1126, align 8, !tbaa !5
  call void @_ZN10tetgenmesh8setsdestERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef %1127)
  call void @_ZN10tetgenmesh8setsapexERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef null)
  %1128 = call noundef ptr @_ZN10tetgenmesh7sencodeERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %15)
  store ptr %1128, ptr %16, align 8, !tbaa !5
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %1129

1129:                                             ; preds = %1142, %1121
  %1130 = load i32, ptr %32, align 4, !tbaa !9
  %1131 = icmp slt i32 %1130, 2
  br i1 %1131, label %1132, label %1145

1132:                                             ; preds = %1129
  %1133 = load i32, ptr %32, align 4, !tbaa !9
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 %1134
  %1136 = load ptr, ptr %1135, align 8, !tbaa !5
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1136, i32 noundef 2)
  %1137 = load i32, ptr %32, align 4, !tbaa !9
  %1138 = sext i32 %1137 to i64
  %1139 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 %1138
  %1140 = load ptr, ptr %1139, align 8, !tbaa !5
  %1141 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN10tetgenmesh11setpoint2shEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1140, ptr noundef %1141)
  br label %1142

1142:                                             ; preds = %1132
  %1143 = load i32, ptr %32, align 4, !tbaa !9
  %1144 = add nsw i32 %1143, 1
  store i32 %1144, ptr %32, align 4, !tbaa !9
  br label %1129, !llvm.loop !76

1145:                                             ; preds = %1129
  %1146 = load i32, ptr %27, align 4, !tbaa !9
  call void @_ZN10tetgenmesh12setshellmarkERNS_4faceEi(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %15, i32 noundef %1146)
  %1147 = 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)
  %1148 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %1149 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 2
  store ptr %1148, ptr %1149, align 16, !tbaa !5
  %1150 = getelementptr inbounds %"class.tetgenmesh::face", ptr %12, i32 0, i32 0
  store ptr null, ptr %1150, align 8, !tbaa !57
  br label %1151

1151:                                             ; preds = %1184, %1145
  br label %1152

1152:                                             ; preds = %1151
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %15)
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %1153 = getelementptr inbounds %"class.tetgenmesh::face", ptr %12, i32 0, i32 0
  %1154 = load ptr, ptr %1153, align 8, !tbaa !57
  %1155 = icmp ne ptr %1154, null
  br i1 %1155, label %1156, label %1157

1156:                                             ; preds = %1152
  call void @_ZN10tetgenmesh7ssbond1ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %15)
  call void @_ZN10tetgenmesh6sbond1ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %12)
  br label %1157

1157:                                             ; preds = %1156, %1152
  %1158 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %1159 = load i32, ptr %1158, align 8, !tbaa !36
  store i32 %1159, ptr %29, align 4, !tbaa !9
  %1160 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %1161 = load ptr, ptr %1160, align 8, !tbaa !35
  %1162 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %1163 = load i32, ptr %1162, align 8, !tbaa !36
  %1164 = sext i32 %1163 to i64
  %1165 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %1164
  %1166 = load i32, ptr %1165, align 4, !tbaa !9
  %1167 = sext i32 %1166 to i64
  %1168 = getelementptr inbounds ptr, ptr %1161, i64 %1167
  %1169 = load ptr, ptr %1168, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1169, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %1170 = load i32, ptr %29, align 4, !tbaa !9
  %1171 = sext i32 %1170 to i64
  %1172 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %1171
  %1173 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %1174 = load i32, ptr %1173, align 8, !tbaa !36
  %1175 = sext i32 %1174 to i64
  %1176 = getelementptr inbounds [12 x i32], ptr %1172, i64 0, i64 %1175
  %1177 = load i32, ptr %1176, align 4, !tbaa !9
  %1178 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  store i32 %1177, ptr %1178, align 8, !tbaa !36
  %1179 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %1180 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 2
  %1181 = load ptr, ptr %1180, align 16, !tbaa !5
  %1182 = icmp eq ptr %1179, %1181
  br i1 %1182, label %1183, label %1184

1183:                                             ; preds = %1157
  br label %1185

1184:                                             ; preds = %1157
  br label %1151, !llvm.loop !77

1185:                                             ; preds = %1183
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br label %1207

1186:                                             ; preds = %1114, %1111
  %1187 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 2
  %1188 = load ptr, ptr %1187, align 8, !tbaa !11
  %1189 = getelementptr inbounds %class.tetgenbehavior, ptr %1188, i32 0, i32 36
  %1190 = load i32, ptr %1189, align 8, !tbaa !17
  %1191 = icmp ne i32 %1190, 0
  br i1 %1191, label %1206, label %1192

1192:                                             ; preds = %1186
  %1193 = load i32, ptr %31, align 4, !tbaa !9
  %1194 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %1195 = load ptr, ptr %1194, align 8, !tbaa !21
  %1196 = getelementptr inbounds %class.tetgenio, ptr %1195, i32 0, i32 0
  %1197 = load i32, ptr %1196, align 8, !tbaa !25
  %1198 = add nsw i32 %1193, %1197
  %1199 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  %1200 = load ptr, ptr %1199, align 16, !tbaa !5
  %1201 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1200)
  %1202 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  %1203 = load ptr, ptr %1202, align 8, !tbaa !5
  %1204 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1203)
  %1205 = call i32 (ptr, ...) @printf(ptr noundef @.str.465, i32 noundef %1198, i32 noundef %1201, i32 noundef %1204)
  br label %1206

1206:                                             ; preds = %1192, %1186
  br label %1207

1207:                                             ; preds = %1206, %1185
  br label %1208

1208:                                             ; preds = %1207, %1064
  br label %1209

1209:                                             ; preds = %1208
  %1210 = load i32, ptr %31, align 4, !tbaa !9
  %1211 = add nsw i32 %1210, 1
  store i32 %1211, ptr %31, align 4, !tbaa !9
  br label %1041, !llvm.loop !78

1212:                                             ; preds = %1041
  br label %1213

1213:                                             ; preds = %1212, %1034
  %1214 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 2
  %1215 = load ptr, ptr %1214, align 8, !tbaa !11
  %1216 = getelementptr inbounds %class.tetgenbehavior, ptr %1215, i32 0, i32 61
  %1217 = load double, ptr %1216, align 8, !tbaa !79
  %1218 = fdiv double %1217, 1.800000e+02
  %1219 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !34
  %1220 = fmul double %1218, %1219
  %1221 = call double @cos(double noundef %1220) #10
  store double %1221, ptr %22, align 8, !tbaa !34
  %1222 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 5
  %1223 = load ptr, ptr %1222, align 8, !tbaa !60
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %1223)
  %1224 = getelementptr inbounds %"class.tetgenmesh::face", ptr %12, i32 0, i32 1
  store i32 0, ptr %1224, align 8, !tbaa !66
  %1225 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 5
  %1226 = load ptr, ptr %1225, align 8, !tbaa !60
  %1227 = call noundef ptr @_ZN10tetgenmesh17shellfacetraverseEPNS_10memorypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1226)
  %1228 = getelementptr inbounds %"class.tetgenmesh::face", ptr %12, i32 0, i32 0
  store ptr %1227, ptr %1228, align 8, !tbaa !57
  br label %1229

1229:                                             ; preds = %1399, %1213
  %1230 = getelementptr inbounds %"class.tetgenmesh::face", ptr %12, i32 0, i32 0
  %1231 = load ptr, ptr %1230, align 8, !tbaa !57
  %1232 = icmp ne ptr %1231, null
  br i1 %1232, label %1233, label %1404

1233:                                             ; preds = %1229
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %1234

1234:                                             ; preds = %1396, %1233
  %1235 = load i32, ptr %31, align 4, !tbaa !9
  %1236 = icmp slt i32 %1235, 3
  br i1 %1236, label %1237, label %1399

1237:                                             ; preds = %1234
  call void @_ZN10tetgenmesh7sspivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %15)
  %1238 = getelementptr inbounds %"class.tetgenmesh::face", ptr %15, i32 0, i32 0
  %1239 = load ptr, ptr %1238, align 8, !tbaa !57
  %1240 = icmp eq ptr %1239, null
  br i1 %1240, label %1241, label %1395

1241:                                             ; preds = %1237
  store i32 0, ptr %28, align 4, !tbaa !9
  store i32 0, ptr %30, align 4, !tbaa !9
  %1242 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %14, ptr noundef nonnull align 8 dereferenceable(12) %12)
  br label %1243

1243:                                             ; preds = %1253, %1241
  br label %1244

1244:                                             ; preds = %1243
  %1245 = load i32, ptr %30, align 4, !tbaa !9
  %1246 = add nsw i32 %1245, 1
  store i32 %1246, ptr %30, align 4, !tbaa !9
  call void @_ZN10tetgenmesh10spivotselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %14)
  %1247 = getelementptr inbounds %"class.tetgenmesh::face", ptr %14, i32 0, i32 0
  %1248 = load ptr, ptr %1247, align 8, !tbaa !57
  %1249 = getelementptr inbounds %"class.tetgenmesh::face", ptr %12, i32 0, i32 0
  %1250 = load ptr, ptr %1249, align 8, !tbaa !57
  %1251 = icmp eq ptr %1248, %1250
  br i1 %1251, label %1252, label %1253

1252:                                             ; preds = %1244
  br label %1254

1253:                                             ; preds = %1244
  br label %1243, !llvm.loop !80

1254:                                             ; preds = %1252
  %1255 = load i32, ptr %30, align 4, !tbaa !9
  %1256 = icmp ne i32 %1255, 2
  br i1 %1256, label %1257, label %1262

1257:                                             ; preds = %1254
  %1258 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %1259 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  store ptr %1258, ptr %1259, align 16, !tbaa !5
  %1260 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %1261 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  store ptr %1260, ptr %1261, align 8, !tbaa !5
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %1329

1262:                                             ; preds = %1254
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %13)
  %1263 = call noundef i32 @_ZN10tetgenmesh9shellmarkERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %1264 = call noundef i32 @_ZN10tetgenmesh9shellmarkERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %13)
  %1265 = icmp ne i32 %1263, %1264
  br i1 %1265, label %1266, label %1271

1266:                                             ; preds = %1262
  %1267 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %1268 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  store ptr %1267, ptr %1268, align 16, !tbaa !5
  %1269 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %1270 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  store ptr %1269, ptr %1270, align 8, !tbaa !5
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %1328

1271:                                             ; preds = %1262
  %1272 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 2
  %1273 = load ptr, ptr %1272, align 8, !tbaa !11
  %1274 = getelementptr inbounds %class.tetgenbehavior, ptr %1273, i32 0, i32 17
  %1275 = load i32, ptr %1274, align 4, !tbaa !20
  %1276 = icmp ne i32 %1275, 0
  br i1 %1276, label %1327, label %1277

1277:                                             ; preds = %1271
  %1278 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %1279 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  store ptr %1278, ptr %1279, align 16, !tbaa !5
  %1280 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %1281 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  store ptr %1280, ptr %1281, align 8, !tbaa !5
  %1282 = call noundef ptr @_ZN10tetgenmesh5sapexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %1283 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 2
  store ptr %1282, ptr %1283, align 16, !tbaa !5
  %1284 = call noundef ptr @_ZN10tetgenmesh5sapexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %13)
  %1285 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 3
  store ptr %1284, ptr %1285, align 8, !tbaa !5
  %1286 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  %1287 = load ptr, ptr %1286, align 16, !tbaa !5
  %1288 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  %1289 = load ptr, ptr %1288, align 8, !tbaa !5
  %1290 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 2
  %1291 = load ptr, ptr %1290, align 16, !tbaa !5
  %1292 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 0
  call void @_ZN10tetgenmesh10facenormalEPdS0_S0_S0_iS0_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1287, ptr noundef %1289, ptr noundef %1291, ptr noundef %1292, i32 noundef 1, ptr noundef null)
  %1293 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  %1294 = load ptr, ptr %1293, align 16, !tbaa !5
  %1295 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  %1296 = load ptr, ptr %1295, align 8, !tbaa !5
  %1297 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 3
  %1298 = load ptr, ptr %1297, align 8, !tbaa !5
  %1299 = getelementptr inbounds [3 x double], ptr %25, i64 0, i64 0
  call void @_ZN10tetgenmesh10facenormalEPdS0_S0_S0_iS0_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1294, ptr noundef %1296, ptr noundef %1298, ptr noundef %1299, i32 noundef 1, ptr noundef null)
  %1300 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 0
  %1301 = getelementptr inbounds [3 x double], ptr %25, i64 0, i64 0
  %1302 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1300, ptr noundef %1301)
  %1303 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 0
  %1304 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 0
  %1305 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1303, ptr noundef %1304)
  %1306 = call double @sqrt(double noundef %1305) #10
  %1307 = getelementptr inbounds [3 x double], ptr %25, i64 0, i64 0
  %1308 = getelementptr inbounds [3 x double], ptr %25, i64 0, i64 0
  %1309 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1307, ptr noundef %1308)
  %1310 = call double @sqrt(double noundef %1309) #10
  %1311 = fmul double %1306, %1310
  %1312 = fdiv double %1302, %1311
  store double %1312, ptr %23, align 8, !tbaa !34
  %1313 = load double, ptr %23, align 8, !tbaa !34
  %1314 = fcmp ogt double %1313, 1.000000e+00
  br i1 %1314, label %1315, label %1316

1315:                                             ; preds = %1277
  store double 1.000000e+00, ptr %23, align 8, !tbaa !34
  br label %1321

1316:                                             ; preds = %1277
  %1317 = load double, ptr %23, align 8, !tbaa !34
  %1318 = fcmp olt double %1317, -1.000000e+00
  br i1 %1318, label %1319, label %1320

1319:                                             ; preds = %1316
  store double -1.000000e+00, ptr %23, align 8, !tbaa !34
  br label %1320

1320:                                             ; preds = %1319, %1316
  br label %1321

1321:                                             ; preds = %1320, %1315
  %1322 = load double, ptr %23, align 8, !tbaa !34
  %1323 = load double, ptr %22, align 8, !tbaa !34
  %1324 = fcmp ogt double %1322, %1323
  br i1 %1324, label %1325, label %1326

1325:                                             ; preds = %1321
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %1326

1326:                                             ; preds = %1325, %1321
  br label %1327

1327:                                             ; preds = %1326, %1271
  br label %1328

1328:                                             ; preds = %1327, %1266
  br label %1329

1329:                                             ; preds = %1328, %1257
  %1330 = load i32, ptr %28, align 4, !tbaa !9
  %1331 = icmp ne i32 %1330, 0
  br i1 %1331, label %1332, label %1394

1332:                                             ; preds = %1329
  %1333 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 6
  %1334 = load ptr, ptr %1333, align 8, !tbaa !75
  call void @_ZN10tetgenmesh13makeshellfaceEPNS_10memorypoolEPNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1334, ptr noundef %15)
  %1335 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  %1336 = load ptr, ptr %1335, align 16, !tbaa !5
  call void @_ZN10tetgenmesh7setsorgERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef %1336)
  %1337 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  %1338 = load ptr, ptr %1337, align 8, !tbaa !5
  call void @_ZN10tetgenmesh8setsdestERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef %1338)
  call void @_ZN10tetgenmesh8setsapexERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef null)
  %1339 = call noundef ptr @_ZN10tetgenmesh7sencodeERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %15)
  store ptr %1339, ptr %16, align 8, !tbaa !5
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %1340

1340:                                             ; preds = %1353, %1332
  %1341 = load i32, ptr %32, align 4, !tbaa !9
  %1342 = icmp slt i32 %1341, 2
  br i1 %1342, label %1343, label %1356

1343:                                             ; preds = %1340
  %1344 = load i32, ptr %32, align 4, !tbaa !9
  %1345 = sext i32 %1344 to i64
  %1346 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 %1345
  %1347 = load ptr, ptr %1346, align 8, !tbaa !5
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1347, i32 noundef 2)
  %1348 = load i32, ptr %32, align 4, !tbaa !9
  %1349 = sext i32 %1348 to i64
  %1350 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 %1349
  %1351 = load ptr, ptr %1350, align 8, !tbaa !5
  %1352 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_ZN10tetgenmesh11setpoint2shEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1351, ptr noundef %1352)
  br label %1353

1353:                                             ; preds = %1343
  %1354 = load i32, ptr %32, align 4, !tbaa !9
  %1355 = add nsw i32 %1354, 1
  store i32 %1355, ptr %32, align 4, !tbaa !9
  br label %1340, !llvm.loop !81

1356:                                             ; preds = %1340
  call void @_ZN10tetgenmesh12setshellmarkERNS_4faceEi(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %15, i32 noundef -1)
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %1357 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %1358 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 2
  store ptr %1357, ptr %1358, align 16, !tbaa !5
  br label %1359

1359:                                             ; preds = %1392, %1356
  br label %1360

1360:                                             ; preds = %1359
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %15)
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %13)
  %1361 = getelementptr inbounds %"class.tetgenmesh::face", ptr %13, i32 0, i32 0
  %1362 = load ptr, ptr %1361, align 8, !tbaa !57
  %1363 = icmp ne ptr %1362, null
  br i1 %1363, label %1364, label %1365

1364:                                             ; preds = %1360
  call void @_ZN10tetgenmesh7ssbond1ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %13, ptr noundef nonnull align 8 dereferenceable(12) %15)
  br label %1365

1365:                                             ; preds = %1364, %1360
  %1366 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %1367 = load i32, ptr %1366, align 8, !tbaa !36
  store i32 %1367, ptr %29, align 4, !tbaa !9
  %1368 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 0
  %1369 = load ptr, ptr %1368, align 8, !tbaa !35
  %1370 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %1371 = load i32, ptr %1370, align 8, !tbaa !36
  %1372 = sext i32 %1371 to i64
  %1373 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %1372
  %1374 = load i32, ptr %1373, align 4, !tbaa !9
  %1375 = sext i32 %1374 to i64
  %1376 = getelementptr inbounds ptr, ptr %1369, i64 %1375
  %1377 = load ptr, ptr %1376, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1377, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %1378 = load i32, ptr %29, align 4, !tbaa !9
  %1379 = sext i32 %1378 to i64
  %1380 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %1379
  %1381 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  %1382 = load i32, ptr %1381, align 8, !tbaa !36
  %1383 = sext i32 %1382 to i64
  %1384 = getelementptr inbounds [12 x i32], ptr %1380, i64 0, i64 %1383
  %1385 = load i32, ptr %1384, align 4, !tbaa !9
  %1386 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %5, i32 0, i32 1
  store i32 %1385, ptr %1386, align 8, !tbaa !36
  %1387 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %5)
  %1388 = getelementptr inbounds [3 x ptr], ptr %18, i64 0, i64 2
  %1389 = load ptr, ptr %1388, align 16, !tbaa !5
  %1390 = icmp eq ptr %1387, %1389
  br i1 %1390, label %1391, label %1392

1391:                                             ; preds = %1365
  br label %1393

1392:                                             ; preds = %1365
  br label %1359, !llvm.loop !82

1393:                                             ; preds = %1391
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %5)
  call void @_ZN10tetgenmesh6sbond1ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %12)
  br label %1394

1394:                                             ; preds = %1393, %1329
  br label %1395

1395:                                             ; preds = %1394, %1237
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12)
  br label %1396

1396:                                             ; preds = %1395
  %1397 = load i32, ptr %31, align 4, !tbaa !9
  %1398 = add nsw i32 %1397, 1
  store i32 %1398, ptr %31, align 4, !tbaa !9
  br label %1234, !llvm.loop !83

1399:                                             ; preds = %1234
  %1400 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 5
  %1401 = load ptr, ptr %1400, align 8, !tbaa !60
  %1402 = call noundef ptr @_ZN10tetgenmesh17shellfacetraverseEPNS_10memorypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1401)
  %1403 = getelementptr inbounds %"class.tetgenmesh::face", ptr %12, i32 0, i32 0
  store ptr %1402, ptr %1403, align 8, !tbaa !57
  br label %1229, !llvm.loop !84

1404:                                             ; preds = %1229
  %1405 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 6
  %1406 = load ptr, ptr %1405, align 8, !tbaa !75
  %1407 = getelementptr inbounds %"class.tetgenmesh::memorypool", ptr %1406, i32 0, i32 10
  %1408 = load i64, ptr %1407, align 8, !tbaa !46
  %1409 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 75
  store i64 %1408, ptr %1409, align 8, !tbaa !85
  %1410 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 2
  %1411 = load ptr, ptr %1410, align 8, !tbaa !11
  %1412 = getelementptr inbounds %class.tetgenbehavior, ptr %1411, i32 0, i32 4
  %1413 = load i32, ptr %1412, align 8, !tbaa !86
  %1414 = icmp ne i32 %1413, 0
  br i1 %1414, label %1415, label %1419

1415:                                             ; preds = %1404
  %1416 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 54
  %1417 = load i32, ptr %1416, align 4, !tbaa !87
  %1418 = icmp ne i32 %1417, 0
  br i1 %1418, label %1419, label %1696

1419:                                             ; preds = %1415, %1404
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #10
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %36)
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #10
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %37)
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #10
  %1420 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 6
  %1421 = load ptr, ptr %1420, align 8, !tbaa !75
  call void @_ZN10tetgenmesh16makepoint2submapEPNS_10memorypoolERPiRPNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1421, ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %34)
  %1422 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 7
  %1423 = load ptr, ptr %1422, align 8, !tbaa !88
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %1423)
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #10
  %1424 = call noundef ptr @_ZN10tetgenmesh13pointtraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %47)
  store ptr %1424, ptr %44, align 8, !tbaa !5
  br label %1425

1425:                                             ; preds = %1525, %1419
  %1426 = load ptr, ptr %44, align 8, !tbaa !5
  %1427 = icmp ne ptr %1426, null
  br i1 %1427, label %1428, label %1527

1428:                                             ; preds = %1425
  %1429 = load ptr, ptr %44, align 8, !tbaa !5
  %1430 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1429)
  store i32 %1430, ptr %38, align 4, !tbaa !89
  %1431 = load i32, ptr %38, align 4, !tbaa !89
  %1432 = icmp eq i32 %1431, 5
  br i1 %1432, label %1433, label %1438

1433:                                             ; preds = %1428
  %1434 = load ptr, ptr %44, align 8, !tbaa !5
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1434, i32 noundef 8)
  %1435 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 85
  %1436 = load i64, ptr %1435, align 8, !tbaa !91
  %1437 = add nsw i64 %1436, 1
  store i64 %1437, ptr %1435, align 8, !tbaa !91
  br label %1525

1438:                                             ; preds = %1428
  %1439 = load i32, ptr %38, align 4, !tbaa !89
  %1440 = icmp eq i32 %1439, 4
  br i1 %1440, label %1441, label %1446

1441:                                             ; preds = %1438
  %1442 = load ptr, ptr %44, align 8, !tbaa !5
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1442, i32 noundef 7)
  %1443 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 84
  %1444 = load i64, ptr %1443, align 8, !tbaa !92
  %1445 = add nsw i64 %1444, 1
  store i64 %1445, ptr %1443, align 8, !tbaa !92
  br label %1524

1446:                                             ; preds = %1438
  %1447 = load i32, ptr %38, align 4, !tbaa !89
  %1448 = icmp eq i32 %1447, 2
  br i1 %1448, label %1449, label %1523

1449:                                             ; preds = %1446
  %1450 = load ptr, ptr %44, align 8, !tbaa !5
  %1451 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1450)
  %1452 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %1453 = load ptr, ptr %1452, align 8, !tbaa !21
  %1454 = getelementptr inbounds %class.tetgenio, ptr %1453, i32 0, i32 0
  %1455 = load i32, ptr %1454, align 8, !tbaa !25
  %1456 = sub nsw i32 %1451, %1455
  store i32 %1456, ptr %30, align 4, !tbaa !9
  %1457 = load ptr, ptr %35, align 8, !tbaa !5
  %1458 = load i32, ptr %30, align 4, !tbaa !9
  %1459 = add nsw i32 %1458, 1
  %1460 = sext i32 %1459 to i64
  %1461 = getelementptr inbounds i32, ptr %1457, i64 %1460
  %1462 = load i32, ptr %1461, align 4, !tbaa !9
  %1463 = load ptr, ptr %35, align 8, !tbaa !5
  %1464 = load i32, ptr %30, align 4, !tbaa !9
  %1465 = sext i32 %1464 to i64
  %1466 = getelementptr inbounds i32, ptr %1463, i64 %1465
  %1467 = load i32, ptr %1466, align 4, !tbaa !9
  %1468 = sub nsw i32 %1462, %1467
  %1469 = icmp eq i32 %1468, 2
  br i1 %1469, label %1470, label %1522

1470:                                             ; preds = %1449
  %1471 = load ptr, ptr %35, align 8, !tbaa !5
  %1472 = load i32, ptr %30, align 4, !tbaa !9
  %1473 = sext i32 %1472 to i64
  %1474 = getelementptr inbounds i32, ptr %1471, i64 %1473
  %1475 = load i32, ptr %1474, align 4, !tbaa !9
  store i32 %1475, ptr %31, align 4, !tbaa !9
  %1476 = load ptr, ptr %34, align 8, !tbaa !5
  %1477 = load i32, ptr %31, align 4, !tbaa !9
  %1478 = sext i32 %1477 to i64
  %1479 = getelementptr inbounds %"class.tetgenmesh::face", ptr %1476, i64 %1478
  %1480 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %36, ptr noundef nonnull align 8 dereferenceable(12) %1479)
  %1481 = load ptr, ptr %34, align 8, !tbaa !5
  %1482 = load i32, ptr %31, align 4, !tbaa !9
  %1483 = add nsw i32 %1482, 1
  %1484 = sext i32 %1483 to i64
  %1485 = getelementptr inbounds %"class.tetgenmesh::face", ptr %1481, i64 %1484
  %1486 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %37, ptr noundef nonnull align 8 dereferenceable(12) %1485)
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %37)
  %1487 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %37)
  %1488 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  store ptr %1487, ptr %1488, align 16, !tbaa !5
  %1489 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %36)
  %1490 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  store ptr %1489, ptr %1490, align 8, !tbaa !5
  %1491 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  %1492 = load ptr, ptr %1491, align 16, !tbaa !5
  %1493 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  %1494 = load ptr, ptr %1493, align 8, !tbaa !5
  %1495 = call noundef double @_ZN10tetgenmesh8distanceEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1492, ptr noundef %1494)
  store double %1495, ptr %40, align 8, !tbaa !34
  %1496 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 0
  %1497 = load ptr, ptr %1496, align 16, !tbaa !5
  %1498 = load ptr, ptr %44, align 8, !tbaa !5
  %1499 = call noundef double @_ZN10tetgenmesh8distanceEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1497, ptr noundef %1498)
  store double %1499, ptr %41, align 8, !tbaa !34
  %1500 = load ptr, ptr %44, align 8, !tbaa !5
  %1501 = getelementptr inbounds [4 x ptr], ptr %17, i64 0, i64 1
  %1502 = load ptr, ptr %1501, align 8, !tbaa !5
  %1503 = call noundef double @_ZN10tetgenmesh8distanceEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1500, ptr noundef %1502)
  store double %1503, ptr %42, align 8, !tbaa !34
  %1504 = load double, ptr %41, align 8, !tbaa !34
  %1505 = load double, ptr %42, align 8, !tbaa !34
  %1506 = fadd double %1504, %1505
  %1507 = load double, ptr %40, align 8, !tbaa !34
  %1508 = fsub double %1506, %1507
  %1509 = load double, ptr %40, align 8, !tbaa !34
  %1510 = fdiv double %1508, %1509
  %1511 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 2
  %1512 = load ptr, ptr %1511, align 8, !tbaa !11
  %1513 = getelementptr inbounds %class.tetgenbehavior, ptr %1512, i32 0, i32 70
  %1514 = load double, ptr %1513, align 8, !tbaa !93
  %1515 = fcmp olt double %1510, %1514
  br i1 %1515, label %1516, label %1521

1516:                                             ; preds = %1470
  %1517 = load ptr, ptr %44, align 8, !tbaa !5
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1517, i32 noundef 6)
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %37)
  call void @_ZN10tetgenmesh11senext2selfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %36)
  call void @_ZN10tetgenmesh5sbondERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %37, ptr noundef nonnull align 8 dereferenceable(12) %36)
  %1518 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 83
  %1519 = load i64, ptr %1518, align 8, !tbaa !94
  %1520 = add nsw i64 %1519, 1
  store i64 %1520, ptr %1518, align 8, !tbaa !94
  br label %1521

1521:                                             ; preds = %1516, %1470
  br label %1522

1522:                                             ; preds = %1521, %1449
  br label %1523

1523:                                             ; preds = %1522, %1446
  br label %1524

1524:                                             ; preds = %1523, %1441
  br label %1525

1525:                                             ; preds = %1524, %1433
  %1526 = call noundef ptr @_ZN10tetgenmesh13pointtraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %47)
  store ptr %1526, ptr %44, align 8, !tbaa !5
  br label %1425, !llvm.loop !95

1527:                                             ; preds = %1425
  %1528 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 2
  %1529 = load ptr, ptr %1528, align 8, !tbaa !11
  %1530 = getelementptr inbounds %class.tetgenbehavior, ptr %1529, i32 0, i32 3
  %1531 = load i32, ptr %1530, align 4, !tbaa !96
  %1532 = icmp ne i32 %1531, 0
  br i1 %1532, label %1533, label %1594

1533:                                             ; preds = %1527
  %1534 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %1535 = load ptr, ptr %1534, align 8, !tbaa !21
  %1536 = getelementptr inbounds %class.tetgenio, ptr %1535, i32 0, i32 28
  %1537 = load ptr, ptr %1536, align 8, !tbaa !97
  %1538 = icmp ne ptr %1537, null
  br i1 %1538, label %1539, label %1594

1539:                                             ; preds = %1533
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %1540

1540:                                             ; preds = %1590, %1539
  %1541 = load i32, ptr %31, align 4, !tbaa !9
  %1542 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %1543 = load ptr, ptr %1542, align 8, !tbaa !21
  %1544 = getelementptr inbounds %class.tetgenio, ptr %1543, i32 0, i32 29
  %1545 = load i32, ptr %1544, align 8, !tbaa !98
  %1546 = icmp slt i32 %1541, %1545
  br i1 %1546, label %1547, label %1593

1547:                                             ; preds = %1540
  %1548 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %1549 = load ptr, ptr %1548, align 8, !tbaa !21
  %1550 = getelementptr inbounds %class.tetgenio, ptr %1549, i32 0, i32 28
  %1551 = load ptr, ptr %1550, align 8, !tbaa !97
  %1552 = load i32, ptr %31, align 4, !tbaa !9
  %1553 = mul nsw i32 %1552, 2
  %1554 = sext i32 %1553 to i64
  %1555 = getelementptr inbounds double, ptr %1551, i64 %1554
  %1556 = load double, ptr %1555, align 8, !tbaa !34
  %1557 = fptosi double %1556 to i32
  store i32 %1557, ptr %43, align 4, !tbaa !9
  %1558 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %1559 = load ptr, ptr %1558, align 8, !tbaa !21
  %1560 = getelementptr inbounds %class.tetgenio, ptr %1559, i32 0, i32 28
  %1561 = load ptr, ptr %1560, align 8, !tbaa !97
  %1562 = load i32, ptr %31, align 4, !tbaa !9
  %1563 = mul nsw i32 %1562, 2
  %1564 = add nsw i32 %1563, 1
  %1565 = sext i32 %1564 to i64
  %1566 = getelementptr inbounds double, ptr %1561, i64 %1565
  %1567 = load double, ptr %1566, align 8, !tbaa !34
  store double %1567, ptr %39, align 8, !tbaa !34
  %1568 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 5
  %1569 = load ptr, ptr %1568, align 8, !tbaa !60
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %1569)
  %1570 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 5
  %1571 = load ptr, ptr %1570, align 8, !tbaa !60
  %1572 = call noundef ptr @_ZN10tetgenmesh17shellfacetraverseEPNS_10memorypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1571)
  %1573 = getelementptr inbounds %"class.tetgenmesh::face", ptr %12, i32 0, i32 0
  store ptr %1572, ptr %1573, align 8, !tbaa !57
  br label %1574

1574:                                             ; preds = %1584, %1547
  %1575 = getelementptr inbounds %"class.tetgenmesh::face", ptr %12, i32 0, i32 0
  %1576 = load ptr, ptr %1575, align 8, !tbaa !57
  %1577 = icmp ne ptr %1576, null
  br i1 %1577, label %1578, label %1589

1578:                                             ; preds = %1574
  %1579 = call noundef i32 @_ZN10tetgenmesh9shellmarkERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %1580 = load i32, ptr %43, align 4, !tbaa !9
  %1581 = icmp eq i32 %1579, %1580
  br i1 %1581, label %1582, label %1584

1582:                                             ; preds = %1578
  %1583 = load double, ptr %39, align 8, !tbaa !34
  call void @_ZN10tetgenmesh12setareaboundERNS_4faceEd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %12, double noundef %1583)
  br label %1584

1584:                                             ; preds = %1582, %1578
  %1585 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 5
  %1586 = load ptr, ptr %1585, align 8, !tbaa !60
  %1587 = call noundef ptr @_ZN10tetgenmesh17shellfacetraverseEPNS_10memorypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1586)
  %1588 = getelementptr inbounds %"class.tetgenmesh::face", ptr %12, i32 0, i32 0
  store ptr %1587, ptr %1588, align 8, !tbaa !57
  br label %1574, !llvm.loop !99

1589:                                             ; preds = %1574
  br label %1590

1590:                                             ; preds = %1589
  %1591 = load i32, ptr %31, align 4, !tbaa !9
  %1592 = add nsw i32 %1591, 1
  store i32 %1592, ptr %31, align 4, !tbaa !9
  br label %1540, !llvm.loop !100

1593:                                             ; preds = %1540
  br label %1594

1594:                                             ; preds = %1593, %1533, %1527
  %1595 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 2
  %1596 = load ptr, ptr %1595, align 8, !tbaa !11
  %1597 = getelementptr inbounds %class.tetgenbehavior, ptr %1596, i32 0, i32 3
  %1598 = load i32, ptr %1597, align 4, !tbaa !96
  %1599 = icmp ne i32 %1598, 0
  br i1 %1599, label %1600, label %1687

1600:                                             ; preds = %1594
  %1601 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %1602 = load ptr, ptr %1601, align 8, !tbaa !21
  %1603 = getelementptr inbounds %class.tetgenio, ptr %1602, i32 0, i32 30
  %1604 = load ptr, ptr %1603, align 8, !tbaa !101
  %1605 = icmp ne ptr %1604, null
  br i1 %1605, label %1606, label %1687

1606:                                             ; preds = %1600
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #10
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %1607

1607:                                             ; preds = %1683, %1606
  %1608 = load i32, ptr %31, align 4, !tbaa !9
  %1609 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %1610 = load ptr, ptr %1609, align 8, !tbaa !21
  %1611 = getelementptr inbounds %class.tetgenio, ptr %1610, i32 0, i32 31
  %1612 = load i32, ptr %1611, align 8, !tbaa !102
  %1613 = icmp slt i32 %1608, %1612
  br i1 %1613, label %1614, label %1686

1614:                                             ; preds = %1607
  %1615 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %1616 = load ptr, ptr %1615, align 8, !tbaa !21
  %1617 = getelementptr inbounds %class.tetgenio, ptr %1616, i32 0, i32 30
  %1618 = load ptr, ptr %1617, align 8, !tbaa !101
  %1619 = load i32, ptr %31, align 4, !tbaa !9
  %1620 = mul nsw i32 %1619, 3
  %1621 = sext i32 %1620 to i64
  %1622 = getelementptr inbounds double, ptr %1618, i64 %1621
  %1623 = load double, ptr %1622, align 8, !tbaa !34
  %1624 = fptosi double %1623 to i32
  store i32 %1624, ptr %45, align 4, !tbaa !9
  %1625 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %1626 = load ptr, ptr %1625, align 8, !tbaa !21
  %1627 = getelementptr inbounds %class.tetgenio, ptr %1626, i32 0, i32 30
  %1628 = load ptr, ptr %1627, align 8, !tbaa !101
  %1629 = load i32, ptr %31, align 4, !tbaa !9
  %1630 = mul nsw i32 %1629, 3
  %1631 = add nsw i32 %1630, 1
  %1632 = sext i32 %1631 to i64
  %1633 = getelementptr inbounds double, ptr %1628, i64 %1632
  %1634 = load double, ptr %1633, align 8, !tbaa !34
  %1635 = fptosi double %1634 to i32
  store i32 %1635, ptr %46, align 4, !tbaa !9
  %1636 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %1637 = load ptr, ptr %1636, align 8, !tbaa !21
  %1638 = getelementptr inbounds %class.tetgenio, ptr %1637, i32 0, i32 30
  %1639 = load ptr, ptr %1638, align 8, !tbaa !101
  %1640 = load i32, ptr %31, align 4, !tbaa !9
  %1641 = mul nsw i32 %1640, 3
  %1642 = add nsw i32 %1641, 2
  %1643 = sext i32 %1642 to i64
  %1644 = getelementptr inbounds double, ptr %1639, i64 %1643
  %1645 = load double, ptr %1644, align 8, !tbaa !34
  store double %1645, ptr %40, align 8, !tbaa !34
  %1646 = load i32, ptr %45, align 4, !tbaa !9
  %1647 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 0
  %1648 = load ptr, ptr %1647, align 8, !tbaa !21
  %1649 = getelementptr inbounds %class.tetgenio, ptr %1648, i32 0, i32 0
  %1650 = load i32, ptr %1649, align 8, !tbaa !25
  %1651 = sub nsw i32 %1646, %1650
  store i32 %1651, ptr %30, align 4, !tbaa !9
  %1652 = load ptr, ptr %35, align 8, !tbaa !5
  %1653 = load i32, ptr %30, align 4, !tbaa !9
  %1654 = sext i32 %1653 to i64
  %1655 = getelementptr inbounds i32, ptr %1652, i64 %1654
  %1656 = load i32, ptr %1655, align 4, !tbaa !9
  store i32 %1656, ptr %32, align 4, !tbaa !9
  br label %1657

1657:                                             ; preds = %1679, %1614
  %1658 = load i32, ptr %32, align 4, !tbaa !9
  %1659 = load ptr, ptr %35, align 8, !tbaa !5
  %1660 = load i32, ptr %30, align 4, !tbaa !9
  %1661 = add nsw i32 %1660, 1
  %1662 = sext i32 %1661 to i64
  %1663 = getelementptr inbounds i32, ptr %1659, i64 %1662
  %1664 = load i32, ptr %1663, align 4, !tbaa !9
  %1665 = icmp slt i32 %1658, %1664
  br i1 %1665, label %1666, label %1682

1666:                                             ; preds = %1657
  %1667 = load ptr, ptr %34, align 8, !tbaa !5
  %1668 = load i32, ptr %32, align 4, !tbaa !9
  %1669 = sext i32 %1668 to i64
  %1670 = getelementptr inbounds %"class.tetgenmesh::face", ptr %1667, i64 %1669
  %1671 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %36, ptr noundef nonnull align 8 dereferenceable(12) %1670)
  %1672 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %36)
  %1673 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef %1672)
  %1674 = load i32, ptr %46, align 4, !tbaa !9
  %1675 = icmp eq i32 %1673, %1674
  br i1 %1675, label %1676, label %1678

1676:                                             ; preds = %1666
  %1677 = load double, ptr %40, align 8, !tbaa !34
  call void @_ZN10tetgenmesh12setareaboundERNS_4faceEd(ptr noundef nonnull align 8 dereferenceable(1536) %47, ptr noundef nonnull align 8 dereferenceable(12) %36, double noundef %1677)
  br label %1682

1678:                                             ; preds = %1666
  br label %1679

1679:                                             ; preds = %1678
  %1680 = load i32, ptr %32, align 4, !tbaa !9
  %1681 = add nsw i32 %1680, 1
  store i32 %1681, ptr %32, align 4, !tbaa !9
  br label %1657, !llvm.loop !103

1682:                                             ; preds = %1676, %1657
  br label %1683

1683:                                             ; preds = %1682
  %1684 = load i32, ptr %31, align 4, !tbaa !9
  %1685 = add nsw i32 %1684, 1
  store i32 %1685, ptr %31, align 4, !tbaa !9
  br label %1607, !llvm.loop !104

1686:                                             ; preds = %1607
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #10
  br label %1687

1687:                                             ; preds = %1686, %1600, %1594
  %1688 = load ptr, ptr %35, align 8, !tbaa !5
  %1689 = icmp eq ptr %1688, null
  br i1 %1689, label %1691, label %1690

1690:                                             ; preds = %1687
  call void @_ZdaPv(ptr noundef %1688) #12
  br label %1691

1691:                                             ; preds = %1690, %1687
  %1692 = load ptr, ptr %34, align 8, !tbaa !5
  %1693 = icmp eq ptr %1692, null
  br i1 %1693, label %1695, label %1694

1694:                                             ; preds = %1691
  call void @_ZdaPv(ptr noundef %1692) #12
  br label %1695

1695:                                             ; preds = %1694, %1691
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  br label %1696

1696:                                             ; preds = %1695, %1415
  %1697 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 52
  store i32 1, ptr %1697, align 4, !tbaa !105
  %1698 = getelementptr inbounds %class.tetgenmesh, ptr %47, i32 0, i32 53
  store i32 1, ptr %1698, align 8, !tbaa !106
  %1699 = load ptr, ptr %4, align 8, !tbaa !5
  %1700 = icmp eq ptr %1699, null
  br i1 %1700, label %1702, label %1701

1701:                                             ; preds = %1696
  call void @_ZdaPv(ptr noundef %1699) #12
  br label %1702

1702:                                             ; preds = %1701, %1696
  %1703 = load ptr, ptr %3, align 8, !tbaa !5
  %1704 = icmp eq ptr %1703, null
  br i1 %1704, label %1706, label %1705

1705:                                             ; preds = %1702
  call void @_ZdaPv(ptr noundef %1703) #12
  br label %1706

1706:                                             ; preds = %1705, %1702
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %5) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #10
  ret void
}

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

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


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

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

@_ZN10tetgenmesh7fsymtblE = external dso_local local_unnamed_addr global [12 x [12 x i32]], align 16
@_ZN10tetgenmesh10facepivot1E = external dso_local local_unnamed_addr global [12 x i32], align 16
@_ZN10tetgenmesh10facepivot2E = external dso_local local_unnamed_addr global [12 x [12 x i32]], align 16
@_ZN10tetgenmesh8orgpivotE = external dso_local local_unnamed_addr global [12 x i32], align 16
@_ZN10tetgenmesh9destpivotE = external dso_local local_unnamed_addr global [12 x i32], align 16
@_ZN10tetgenmesh9apexpivotE = external dso_local local_unnamed_addr global [12 x i32], align 16
@_ZN10tetgenmesh9oppopivotE = external dso_local local_unnamed_addr global [12 x i32], align 16
@_ZN10tetgenmesh2PIE = external dso_local local_unnamed_addr global double, align 8
@.str.462 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.463 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.464 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.465 = external hidden unnamed_addr constant [43 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: inlinehint mustprogress uwtable
declare dso_local void @_Z15terminatetetgenP10tetgenmeshi(ptr noundef, i32 noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #9

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @cos(double noundef) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10tetgenmesh15reconstructmeshEv(ptr noundef nonnull align 8 dereferenceable(1536) %0) local_unnamed_addr #6 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.tetgenmesh::triface", align 8
  %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::triface", align 8
  %8 = alloca %"class.tetgenmesh::triface", 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 [3 x double], align 16
  %14 = alloca [3 x double], align 16
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca %"class.tetgenmesh::face", align 8
  %18 = alloca %"class.tetgenmesh::face", align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #10
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #10
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %4)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #10
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %5)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #10
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #10
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #10
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #10
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #10
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #10
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %11)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #10
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #10
  %19 = getelementptr inbounds i8, ptr %0, i64 16
  %20 = load ptr, ptr %19, align 8, !tbaa !5
  %21 = getelementptr inbounds i8, ptr %20, i64 144
  %22 = load i32, ptr %21, align 8, !tbaa !15
  %.not = icmp eq i32 %22, 0
  br i1 %.not, label %23, label %25

23:                                               ; preds = %1
  %24 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.462)
  %.pre = load ptr, ptr %19, align 8, !tbaa !5
  br label %25

25:                                               ; preds = %23, %1
  %26 = phi ptr [ %.pre, %23 ], [ %20, %1 ]
  %27 = getelementptr inbounds i8, ptr %26, i64 68
  %28 = load i32, ptr %27, align 4, !tbaa !18
  %.not201 = icmp eq i32 %28, 0
  br i1 %.not201, label %35, label %29

29:                                               ; preds = %25
  %30 = load ptr, ptr %0, align 8, !tbaa !19
  %31 = getelementptr inbounds i8, ptr %30, i64 136
  %32 = load i32, ptr %31, align 8, !tbaa !20
  %33 = icmp sgt i32 %32, 0
  br i1 %33, label %37, label %34

34:                                               ; preds = %29
  call void @_Z15terminatetetgenP10tetgenmeshi(ptr noundef nonnull %0, i32 noundef 2)
  br label %37

35:                                               ; preds = %25
  %36 = getelementptr inbounds i8, ptr %0, i64 392
  store i32 1, ptr %36, align 8, !tbaa !22
  br label %37

37:                                               ; preds = %29, %34, %35
  call void @_ZN10tetgenmesh18makeindex2pointmapERPPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(8) %2)
  %38 = load ptr, ptr %0, align 8, !tbaa !19
  %39 = load i32, ptr %38, align 8, !tbaa !23
  %40 = icmp eq i32 %39, 1
  br i1 %40, label %41, label %45

41:                                               ; preds = %37
  %42 = getelementptr inbounds i8, ptr %0, i64 280
  %43 = load ptr, ptr %42, align 8, !tbaa !24
  %44 = load ptr, ptr %2, align 8, !tbaa !25
  store ptr %43, ptr %44, align 8, !tbaa !25
  %.pre523 = load ptr, ptr %0, align 8, !tbaa !19
  br label %45

45:                                               ; preds = %41, %37
  %46 = phi ptr [ %.pre523, %41 ], [ %38, %37 ]
  %47 = getelementptr inbounds i8, ptr %46, i64 64
  %48 = load i32, ptr %47, align 8, !tbaa !26
  %49 = add nsw i32 %48, 1
  %50 = sext i32 %49 to i64
  %51 = icmp slt i32 %48, -1
  %52 = shl nsw i64 %50, 3
  %53 = select i1 %51, i64 -1, i64 %52
  %54 = call noalias noundef nonnull ptr @_Znam(i64 noundef %53) #11
  %55 = load i32, ptr %47, align 8, !tbaa !26
  %56 = icmp sgt i32 %55, 0
  br i1 %56, label %.lr.ph.preheader, label %.preheader283

.lr.ph.preheader:                                 ; preds = %45
  %57 = load i32, ptr %46, align 8, !tbaa !23
  %58 = sext i32 %57 to i64
  br label %.lr.ph

.preheader283:                                    ; preds = %.lr.ph, %45
  %59 = phi ptr [ %46, %45 ], [ %71, %.lr.ph ]
  %60 = getelementptr inbounds i8, ptr %59, i64 128
  %61 = load i32, ptr %60, align 8, !tbaa !27
  %62 = icmp sgt i32 %61, 0
  br i1 %62, label %.lr.ph298, label %._crit_edge299

.lr.ph298:                                        ; preds = %.preheader283
  %63 = getelementptr inbounds i8, ptr %3, i64 8
  %64 = getelementptr inbounds i8, ptr %8, i64 8
  %65 = getelementptr inbounds i8, ptr %4, i64 8
  %66 = getelementptr inbounds i8, ptr %5, i64 8
  br label %78

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ %58, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %67 = load ptr, ptr %2, align 8, !tbaa !25
  %68 = getelementptr inbounds ptr, ptr %67, i64 %indvars.iv
  %69 = load ptr, ptr %68, align 8, !tbaa !25
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %69, i32 noundef 5)
  %70 = getelementptr inbounds ptr, ptr %54, i64 %indvars.iv
  store ptr null, ptr %70, align 8, !tbaa !25
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %71 = load ptr, ptr %0, align 8, !tbaa !19
  %72 = getelementptr inbounds i8, ptr %71, i64 64
  %73 = load i32, ptr %72, align 8, !tbaa !26
  %74 = load i32, ptr %71, align 8, !tbaa !23
  %75 = add nsw i32 %74, %73
  %76 = sext i32 %75 to i64
  %77 = icmp slt i64 %indvars.iv.next, %76
  br i1 %77, label %.lr.ph, label %.preheader283, !llvm.loop !28

78:                                               ; preds = %.lr.ph298, %292
  %indvars.iv378 = phi i64 [ 0, %.lr.ph298 ], [ %indvars.iv.next379, %292 ]
  %79 = phi ptr [ %59, %.lr.ph298 ], [ %293, %292 ]
  %80 = getelementptr inbounds i8, ptr %79, i64 132
  %81 = load i32, ptr %80, align 4, !tbaa !30
  %82 = load ptr, ptr %2, align 8, !tbaa !25
  %83 = getelementptr inbounds i8, ptr %79, i64 80
  %84 = trunc nuw nsw i64 %indvars.iv378 to i32
  %85 = mul i32 %81, %84
  %86 = sext i32 %85 to i64
  %87 = load ptr, ptr %83, align 8, !tbaa !31
  %88 = getelementptr inbounds i32, ptr %87, i64 %86
  %89 = load i32, ptr %88, align 4, !tbaa !32
  %90 = sext i32 %89 to i64
  %91 = getelementptr inbounds ptr, ptr %82, i64 %90
  %92 = load ptr, ptr %91, align 8, !tbaa !25
  %93 = getelementptr i32, ptr %87, i64 %86
  %94 = getelementptr i8, ptr %93, i64 4
  %95 = load i32, ptr %94, align 4, !tbaa !32
  %96 = sext i32 %95 to i64
  %97 = getelementptr inbounds ptr, ptr %82, i64 %96
  %98 = load ptr, ptr %97, align 8, !tbaa !25
  %99 = getelementptr i32, ptr %87, i64 %86
  %100 = getelementptr i8, ptr %99, i64 8
  %101 = load i32, ptr %100, align 4, !tbaa !32
  %102 = sext i32 %101 to i64
  %103 = getelementptr inbounds ptr, ptr %82, i64 %102
  %104 = load ptr, ptr %103, align 8, !tbaa !25
  %105 = getelementptr i32, ptr %87, i64 %86
  %106 = getelementptr i8, ptr %105, i64 12
  %107 = load i32, ptr %106, align 4, !tbaa !32
  %108 = sext i32 %107 to i64
  %109 = getelementptr inbounds ptr, ptr %82, i64 %108
  %110 = load ptr, ptr %109, align 8, !tbaa !25
  %111 = call noundef double @_Z8orient3dPdS_S_S_(ptr noundef %92, ptr noundef %98, ptr noundef %104, ptr noundef %110)
  %112 = fcmp ogt double %111, 0.000000e+00
  br i1 %112, label %124, label %113

113:                                              ; preds = %78
  %114 = fcmp oeq double %111, 0.000000e+00
  br i1 %114, label %115, label %124

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

119:                                              ; preds = %115
  %120 = load ptr, ptr %0, align 8, !tbaa !19
  %121 = load i32, ptr %120, align 8, !tbaa !23
  %122 = add nsw i32 %121, %84
  %123 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.463, i32 noundef %122)
  br label %124

124:                                              ; preds = %78, %113, %119, %115
  %.sroa.45.0 = phi ptr [ %98, %119 ], [ %98, %115 ], [ %98, %113 ], [ %92, %78 ]
  %.sroa.0441.0 = phi ptr [ %92, %119 ], [ %92, %115 ], [ %92, %113 ], [ %98, %78 ]
  call void @_ZN10tetgenmesh15maketetrahedronEPNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %3)
  %125 = load ptr, ptr %3, align 8, !tbaa !33
  %126 = load i32, ptr %63, align 8, !tbaa !34
  %127 = sext i32 %126 to i64
  %128 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh8orgpivotE, i64 0, i64 %127
  %129 = load i32, ptr %128, align 4, !tbaa !32
  %130 = sext i32 %129 to i64
  %131 = getelementptr inbounds ptr, ptr %125, i64 %130
  store ptr %.sroa.0441.0, ptr %131, align 8, !tbaa !25
  %132 = load ptr, ptr %3, align 8, !tbaa !33
  %133 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9destpivotE, i64 0, i64 %127
  %134 = load i32, ptr %133, align 4, !tbaa !32
  %135 = sext i32 %134 to i64
  %136 = getelementptr inbounds ptr, ptr %132, i64 %135
  store ptr %.sroa.45.0, ptr %136, align 8, !tbaa !25
  %137 = load ptr, ptr %3, align 8, !tbaa !33
  %138 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9apexpivotE, i64 0, i64 %127
  %139 = load i32, ptr %138, align 4, !tbaa !32
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds ptr, ptr %137, i64 %140
  store ptr %104, ptr %141, align 8, !tbaa !25
  %142 = load ptr, ptr %3, align 8, !tbaa !33
  %143 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9oppopivotE, i64 0, i64 %127
  %144 = load i32, ptr %143, align 4, !tbaa !32
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds ptr, ptr %142, i64 %145
  store ptr %110, ptr %146, align 8, !tbaa !25
  %147 = load ptr, ptr %0, align 8, !tbaa !19
  %148 = getelementptr inbounds i8, ptr %147, i64 136
  %149 = load i32, ptr %148, align 8, !tbaa !20
  %150 = icmp sgt i32 %149, 0
  br i1 %150, label %.lr.ph293, label %._crit_edge

.lr.ph293:                                        ; preds = %124, %.lr.ph293
  %151 = phi i32 [ %164, %.lr.ph293 ], [ %149, %124 ]
  %152 = phi ptr [ %162, %.lr.ph293 ], [ %147, %124 ]
  %.1174292 = phi i32 [ %161, %.lr.ph293 ], [ 0, %124 ]
  %153 = mul nsw i32 %151, %84
  %154 = getelementptr inbounds i8, ptr %152, i64 88
  %155 = load ptr, ptr %154, align 8, !tbaa !35
  %156 = add nsw i32 %153, %.1174292
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds double, ptr %155, i64 %157
  %159 = load double, ptr %158, align 8, !tbaa !36
  %160 = load ptr, ptr %3, align 8, !tbaa !33
  call void @_ZN10tetgenmesh16setelemattributeEPPPdid(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %160, i32 noundef %.1174292, double noundef %159)
  %161 = add nuw nsw i32 %.1174292, 1
  %162 = load ptr, ptr %0, align 8, !tbaa !19
  %163 = getelementptr inbounds i8, ptr %162, i64 136
  %164 = load i32, ptr %163, align 8, !tbaa !20
  %165 = icmp slt i32 %161, %164
  br i1 %165, label %.lr.ph293, label %._crit_edge, !llvm.loop !37

._crit_edge:                                      ; preds = %.lr.ph293, %124
  %.lcssa288 = phi ptr [ %147, %124 ], [ %162, %.lr.ph293 ]
  %166 = load ptr, ptr %19, align 8, !tbaa !5
  %167 = getelementptr inbounds i8, ptr %166, i64 44
  %168 = load i32, ptr %167, align 4, !tbaa !38
  %.not244 = icmp eq i32 %168, 0
  br i1 %.not244, label %177, label %169

169:                                              ; preds = %._crit_edge
  %170 = getelementptr inbounds i8, ptr %.lcssa288, i64 96
  %171 = load ptr, ptr %170, align 8, !tbaa !39
  %.not245 = icmp eq ptr %171, null
  br i1 %.not245, label %175, label %172

172:                                              ; preds = %169
  %173 = getelementptr inbounds double, ptr %171, i64 %indvars.iv378
  %174 = load double, ptr %173, align 8, !tbaa !36
  br label %175

175:                                              ; preds = %169, %172
  %.0164 = phi double [ %174, %172 ], [ -1.000000e+00, %169 ]
  %176 = load ptr, ptr %3, align 8, !tbaa !33
  call void @_ZN10tetgenmesh14setvolumeboundEPPPdd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %176, double noundef %.0164)
  br label %177

177:                                              ; preds = %175, %._crit_edge
  store i32 0, ptr %63, align 8, !tbaa !34
  br label %178

178:                                              ; preds = %177, %.loopexit282
  %179 = call noundef ptr @_ZN10tetgenmesh4oppoERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %180 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %179)
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds ptr, ptr %54, i64 %181
  %183 = load ptr, ptr %182, align 8, !tbaa !25
  %184 = load ptr, ptr %3, align 8, !tbaa !33
  %185 = load i32, ptr %63, align 8, !tbaa !34
  %186 = sext i32 %185 to i64
  %187 = getelementptr ptr, ptr %184, i64 %186
  %188 = getelementptr i8, ptr %187, i64 64
  store ptr %183, ptr %188, align 8, !tbaa !25
  %189 = call noundef ptr @_ZN10tetgenmesh6encodeERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  store ptr %189, ptr %182, align 8, !tbaa !25
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %183, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %190 = load ptr, ptr %4, align 8, !tbaa !33
  %.not247 = icmp eq ptr %190, null
  br i1 %.not247, label %.loopexit282, label %191

191:                                              ; preds = %178
  %192 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %193 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %194 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %195 = 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)
  br label %196

196:                                              ; preds = %287, %191
  %197 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %198 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %199 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %200 = load ptr, ptr %8, align 8, !tbaa !33
  %201 = load i32, ptr %64, align 8, !tbaa !34
  %202 = and i32 %201, 3
  %203 = zext nneg i32 %202 to i64
  %204 = getelementptr inbounds ptr, ptr %200, i64 %203
  %205 = load ptr, ptr %204, align 8, !tbaa !25
  %206 = icmp eq ptr %205, null
  br i1 %206, label %207, label %221

207:                                              ; preds = %196
  %208 = icmp eq ptr %198, %192
  %209 = icmp eq ptr %197, %193
  %or.cond537 = and i1 %208, %209
  br i1 %or.cond537, label %210, label %211

210:                                              ; preds = %207
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %211

211:                                              ; preds = %210, %207
  %.1168 = phi i32 [ 1, %210 ], [ 0, %207 ]
  %212 = icmp eq ptr %198, %193
  %213 = icmp eq ptr %197, %194
  %or.cond538 = and i1 %212, %213
  br i1 %or.cond538, label %214, label %216

214:                                              ; preds = %211
  call void @_ZN10tetgenmesh5enextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %215 = add nuw nsw i32 %.1168, 1
  br label %216

216:                                              ; preds = %214, %211
  %.2 = phi i32 [ %215, %214 ], [ %.1168, %211 ]
  %217 = icmp eq ptr %198, %194
  %218 = icmp eq ptr %197, %192
  %or.cond539 = and i1 %217, %218
  br i1 %or.cond539, label %219, label %221

219:                                              ; preds = %216
  call void @_ZN10tetgenmesh5eprevERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %220 = add nuw nsw i32 %.2, 1
  br label %221

221:                                              ; preds = %196, %216, %219
  %.3 = phi i32 [ %220, %219 ], [ %.2, %216 ], [ 1, %196 ]
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %222 = load ptr, ptr %8, align 8, !tbaa !33
  %223 = load i32, ptr %64, align 8, !tbaa !34
  %224 = and i32 %223, 3
  %225 = zext nneg i32 %224 to i64
  %226 = getelementptr inbounds ptr, ptr %222, i64 %225
  %227 = load ptr, ptr %226, align 8, !tbaa !25
  %228 = icmp eq ptr %227, null
  br i1 %228, label %231, label %229

229:                                              ; preds = %221
  %230 = add nuw nsw i32 %.3, 1
  br label %246

231:                                              ; preds = %221
  %232 = icmp eq ptr %199, %192
  %233 = icmp eq ptr %198, %193
  %or.cond540 = and i1 %232, %233
  br i1 %or.cond540, label %234, label %236

234:                                              ; preds = %231
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %235 = add nuw nsw i32 %.3, 1
  br label %236

236:                                              ; preds = %234, %231
  %.1168.1 = phi i32 [ %235, %234 ], [ %.3, %231 ]
  %237 = icmp eq ptr %199, %193
  %238 = icmp eq ptr %198, %194
  %or.cond541 = and i1 %237, %238
  br i1 %or.cond541, label %239, label %241

239:                                              ; preds = %236
  call void @_ZN10tetgenmesh5enextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %240 = add nuw nsw i32 %.1168.1, 1
  br label %241

241:                                              ; preds = %239, %236
  %.2.1 = phi i32 [ %240, %239 ], [ %.1168.1, %236 ]
  %242 = icmp eq ptr %199, %194
  %243 = icmp eq ptr %198, %192
  %or.cond542 = and i1 %242, %243
  br i1 %or.cond542, label %244, label %246

244:                                              ; preds = %241
  call void @_ZN10tetgenmesh5eprevERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %245 = add nuw nsw i32 %.2.1, 1
  br label %246

246:                                              ; preds = %244, %241, %229
  %.3.1 = phi i32 [ %245, %244 ], [ %.2.1, %241 ], [ %230, %229 ]
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %247 = load ptr, ptr %8, align 8, !tbaa !33
  %248 = load i32, ptr %64, align 8, !tbaa !34
  %249 = and i32 %248, 3
  %250 = zext nneg i32 %249 to i64
  %251 = getelementptr inbounds ptr, ptr %247, i64 %250
  %252 = load ptr, ptr %251, align 8, !tbaa !25
  %253 = icmp eq ptr %252, null
  br i1 %253, label %256, label %254

254:                                              ; preds = %246
  %255 = add nuw nsw i32 %.3.1, 1
  br label %271

256:                                              ; preds = %246
  %257 = icmp eq ptr %197, %192
  %258 = icmp eq ptr %199, %193
  %or.cond543 = and i1 %257, %258
  br i1 %or.cond543, label %259, label %261

259:                                              ; preds = %256
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %260 = add nuw nsw i32 %.3.1, 1
  br label %261

261:                                              ; preds = %259, %256
  %.1168.2 = phi i32 [ %260, %259 ], [ %.3.1, %256 ]
  %262 = icmp eq ptr %197, %193
  %263 = icmp eq ptr %199, %194
  %or.cond544 = and i1 %262, %263
  br i1 %or.cond544, label %264, label %266

264:                                              ; preds = %261
  call void @_ZN10tetgenmesh5enextERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %265 = add nuw nsw i32 %.1168.2, 1
  br label %266

266:                                              ; preds = %264, %261
  %.2.2 = phi i32 [ %265, %264 ], [ %.1168.2, %261 ]
  %267 = icmp eq ptr %197, %194
  %268 = icmp eq ptr %199, %192
  %or.cond545 = and i1 %267, %268
  br i1 %or.cond545, label %269, label %271

269:                                              ; preds = %266
  call void @_ZN10tetgenmesh5eprevERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %270 = add nuw nsw i32 %.2.2, 1
  br label %271

271:                                              ; preds = %269, %266, %254
  %.3.2 = phi i32 [ %270, %269 ], [ %.2.2, %266 ], [ %255, %254 ]
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %272 = load ptr, ptr %4, align 8, !tbaa !33
  %273 = load i32, ptr %65, align 8, !tbaa !34
  %274 = sext i32 %273 to i64
  %275 = getelementptr ptr, ptr %272, i64 %274
  %276 = getelementptr i8, ptr %275, i64 64
  %277 = load ptr, ptr %276, align 8, !tbaa !25
  %278 = icmp eq i32 %.3.2, 3
  br i1 %278, label %279, label %285

279:                                              ; preds = %271
  %280 = load ptr, ptr %5, align 8, !tbaa !33
  %281 = load i32, ptr %66, align 8, !tbaa !34
  %282 = sext i32 %281 to i64
  %283 = getelementptr ptr, ptr %280, i64 %282
  %284 = getelementptr i8, ptr %283, i64 64
  store ptr %277, ptr %284, align 8, !tbaa !25
  br label %287

285:                                              ; preds = %271
  %286 = 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 %287

287:                                              ; preds = %285, %279
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %277, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %288 = load ptr, ptr %4, align 8, !tbaa !33
  %.not248 = icmp eq ptr %288, null
  br i1 %.not248, label %.loopexit282, label %196, !llvm.loop !40

.loopexit282:                                     ; preds = %287, %178
  %289 = load i32, ptr %63, align 8, !tbaa !34
  %290 = add nsw i32 %289, 1
  store i32 %290, ptr %63, align 8, !tbaa !34
  %291 = icmp slt i32 %289, 3
  br i1 %291, label %178, label %292, !llvm.loop !41

292:                                              ; preds = %.loopexit282
  %indvars.iv.next379 = add nuw nsw i64 %indvars.iv378, 1
  %293 = load ptr, ptr %0, align 8, !tbaa !19
  %294 = getelementptr inbounds i8, ptr %293, i64 128
  %295 = load i32, ptr %294, align 8, !tbaa !27
  %296 = sext i32 %295 to i64
  %297 = icmp slt i64 %indvars.iv.next379, %296
  br i1 %297, label %78, label %._crit_edge299, !llvm.loop !42

._crit_edge299:                                   ; preds = %292, %.preheader283
  %298 = getelementptr inbounds i8, ptr %0, i64 288
  %299 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %298, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %300 = getelementptr inbounds i8, ptr %0, i64 32
  %301 = load ptr, ptr %300, align 8, !tbaa !43
  %302 = getelementptr inbounds i8, ptr %301, i64 64
  %303 = load i64, ptr %302, align 8, !tbaa !44
  %304 = getelementptr inbounds i8, ptr %0, i64 552
  store i64 %303, ptr %304, align 8, !tbaa !46
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %301)
  %305 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  store ptr %305, ptr %3, align 8, !tbaa !33
  %.not202304 = icmp eq ptr %305, null
  br i1 %.not202304, label %._crit_edge307, label %.lr.ph306

.lr.ph306:                                        ; preds = %._crit_edge299
  %306 = getelementptr inbounds i8, ptr %3, i64 8
  %307 = getelementptr inbounds i8, ptr %6, i64 8
  %308 = getelementptr inbounds i8, ptr %0, i64 280
  %309 = getelementptr inbounds i8, ptr %8, i64 8
  br label %310

310:                                              ; preds = %.lr.ph306, %419
  %311 = call noundef ptr @_ZN10tetgenmesh6encodeERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  store i32 0, ptr %306, align 8, !tbaa !34
  br label %312

312:                                              ; preds = %310, %.loopexit281
  %storemerge241303 = phi i32 [ 0, %310 ], [ %417, %.loopexit281 ]
  %313 = load ptr, ptr %3, align 8, !tbaa !33
  %314 = sext i32 %storemerge241303 to i64
  %315 = getelementptr inbounds ptr, ptr %313, i64 %314
  %316 = load ptr, ptr %315, align 8, !tbaa !25
  %317 = icmp eq ptr %316, null
  br i1 %317, label %318, label %.loopexit281

318:                                              ; preds = %312
  call void @_ZN10tetgenmesh15maketetrahedronEPNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %6)
  %319 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %320 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %321 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %322 = load ptr, ptr %6, align 8, !tbaa !33
  %323 = load i32, ptr %307, align 8, !tbaa !34
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh8orgpivotE, i64 0, i64 %324
  %326 = load i32, ptr %325, align 4, !tbaa !32
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds ptr, ptr %322, i64 %327
  store ptr %320, ptr %328, align 8, !tbaa !25
  %329 = load ptr, ptr %6, align 8, !tbaa !33
  %330 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9destpivotE, i64 0, i64 %324
  %331 = load i32, ptr %330, align 4, !tbaa !32
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds ptr, ptr %329, i64 %332
  store ptr %319, ptr %333, align 8, !tbaa !25
  %334 = load ptr, ptr %6, align 8, !tbaa !33
  %335 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9apexpivotE, i64 0, i64 %324
  %336 = load i32, ptr %335, align 4, !tbaa !32
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds ptr, ptr %334, i64 %337
  store ptr %321, ptr %338, align 8, !tbaa !25
  %339 = load ptr, ptr %308, align 8, !tbaa !24
  %340 = load ptr, ptr %6, align 8, !tbaa !33
  %341 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9oppopivotE, i64 0, i64 %324
  %342 = load i32, ptr %341, align 4, !tbaa !32
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds ptr, ptr %340, i64 %343
  store ptr %339, ptr %344, align 8, !tbaa !25
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %345 = load ptr, ptr %8, align 8, !tbaa !33
  %346 = icmp eq ptr %345, null
  br i1 %346, label %.thread, label %.lr.ph301

.lr.ph301:                                        ; preds = %318, %350
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %347 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %348 = load ptr, ptr %308, align 8, !tbaa !24
  %349 = icmp eq ptr %347, %348
  br i1 %349, label %364, label %350

350:                                              ; preds = %.lr.ph301
  %351 = load i32, ptr %309, align 8, !tbaa !34
  %352 = load ptr, ptr %8, align 8, !tbaa !33
  %353 = and i32 %351, 3
  %354 = zext nneg i32 %353 to i64
  %355 = getelementptr inbounds ptr, ptr %352, i64 %354
  %356 = load ptr, ptr %355, align 8, !tbaa !25
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %356, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %357 = sext i32 %351 to i64
  %358 = load i32, ptr %309, align 8, !tbaa !34
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %357, i64 %359
  %361 = load i32, ptr %360, align 4, !tbaa !32
  store i32 %361, ptr %309, align 8, !tbaa !34
  %362 = load ptr, ptr %8, align 8, !tbaa !33
  %363 = icmp eq ptr %362, null
  br i1 %363, label %.thread, label %.lr.ph301, !llvm.loop !47

364:                                              ; preds = %.lr.ph301
  %.pr = load ptr, ptr %8, align 8, !tbaa !33
  %.not242 = icmp eq ptr %.pr, null
  br i1 %.not242, label %.thread, label %365

365:                                              ; preds = %364
  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) %7)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %.thread

.thread:                                          ; preds = %350, %318, %365, %364
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %366 = load ptr, ptr %8, align 8, !tbaa !33
  %367 = icmp eq ptr %366, null
  br i1 %367, label %.thread.1, label %.lr.ph301.1

.lr.ph301.1:                                      ; preds = %.thread, %371
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %368 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %369 = load ptr, ptr %308, align 8, !tbaa !24
  %370 = icmp eq ptr %368, %369
  br i1 %370, label %385, label %371

371:                                              ; preds = %.lr.ph301.1
  %372 = load i32, ptr %309, align 8, !tbaa !34
  %373 = load ptr, ptr %8, align 8, !tbaa !33
  %374 = and i32 %372, 3
  %375 = zext nneg i32 %374 to i64
  %376 = getelementptr inbounds ptr, ptr %373, i64 %375
  %377 = load ptr, ptr %376, align 8, !tbaa !25
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %377, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %378 = sext i32 %372 to i64
  %379 = load i32, ptr %309, align 8, !tbaa !34
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %378, i64 %380
  %382 = load i32, ptr %381, align 4, !tbaa !32
  store i32 %382, ptr %309, align 8, !tbaa !34
  %383 = load ptr, ptr %8, align 8, !tbaa !33
  %384 = icmp eq ptr %383, null
  br i1 %384, label %.thread.1, label %.lr.ph301.1, !llvm.loop !47

385:                                              ; preds = %.lr.ph301.1
  %.pr.1 = load ptr, ptr %8, align 8, !tbaa !33
  %.not242.1 = icmp eq ptr %.pr.1, null
  br i1 %.not242.1, label %.thread.1, label %386

386:                                              ; preds = %385
  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) %7)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %.thread.1

.thread.1:                                        ; preds = %371, %386, %385, %.thread
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %387 = load ptr, ptr %8, align 8, !tbaa !33
  %388 = icmp eq ptr %387, null
  br i1 %388, label %.thread.2, label %.lr.ph301.2

.lr.ph301.2:                                      ; preds = %.thread.1, %392
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %389 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %390 = load ptr, ptr %308, align 8, !tbaa !24
  %391 = icmp eq ptr %389, %390
  br i1 %391, label %406, label %392

392:                                              ; preds = %.lr.ph301.2
  %393 = load i32, ptr %309, align 8, !tbaa !34
  %394 = load ptr, ptr %8, align 8, !tbaa !33
  %395 = and i32 %393, 3
  %396 = zext nneg i32 %395 to i64
  %397 = getelementptr inbounds ptr, ptr %394, i64 %396
  %398 = load ptr, ptr %397, align 8, !tbaa !25
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %398, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %399 = sext i32 %393 to i64
  %400 = load i32, ptr %309, align 8, !tbaa !34
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %399, i64 %401
  %403 = load i32, ptr %402, align 4, !tbaa !32
  store i32 %403, ptr %309, align 8, !tbaa !34
  %404 = load ptr, ptr %8, align 8, !tbaa !33
  %405 = icmp eq ptr %404, null
  br i1 %405, label %.thread.2, label %.lr.ph301.2, !llvm.loop !47

406:                                              ; preds = %.lr.ph301.2
  %.pr.2 = load ptr, ptr %8, align 8, !tbaa !33
  %.not242.2 = icmp eq ptr %.pr.2, null
  br i1 %.not242.2, label %.thread.2, label %407

407:                                              ; preds = %406
  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) %7)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %.thread.2

.thread.2:                                        ; preds = %392, %407, %406, %.thread.1
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %.pre524 = load ptr, ptr %3, align 8, !tbaa !33
  %.pre525 = load i32, ptr %306, align 8, !tbaa !34
  %.pre529 = sext i32 %.pre525 to i64
  br label %.loopexit281

.loopexit281:                                     ; preds = %.thread.2, %312
  %.pre-phi = phi i64 [ %.pre529, %.thread.2 ], [ %314, %312 ]
  %408 = phi ptr [ %.pre524, %.thread.2 ], [ %313, %312 ]
  %409 = getelementptr ptr, ptr %408, i64 %.pre-phi
  %410 = getelementptr i8, ptr %409, i64 32
  %411 = load ptr, ptr %410, align 8, !tbaa !25
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %411, ptr noundef %311)
  %412 = load ptr, ptr %3, align 8, !tbaa !33
  %413 = load i32, ptr %306, align 8, !tbaa !34
  %414 = sext i32 %413 to i64
  %415 = getelementptr ptr, ptr %412, i64 %414
  %416 = getelementptr i8, ptr %415, i64 64
  store ptr null, ptr %416, align 8, !tbaa !25
  %417 = add nsw i32 %413, 1
  store i32 %417, ptr %306, align 8, !tbaa !34
  %418 = icmp slt i32 %413, 3
  br i1 %418, label %312, label %419, !llvm.loop !48

419:                                              ; preds = %.loopexit281
  %420 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  store ptr %420, ptr %3, align 8, !tbaa !33
  %.not202 = icmp eq ptr %420, null
  br i1 %.not202, label %._crit_edge307, label %310, !llvm.loop !49

._crit_edge307:                                   ; preds = %419, %._crit_edge299
  %421 = load ptr, ptr %300, align 8, !tbaa !43
  %422 = getelementptr inbounds i8, ptr %421, i64 64
  %423 = load i64, ptr %422, align 8, !tbaa !44
  %424 = load i64, ptr %304, align 8, !tbaa !46
  %425 = sub nsw i64 %423, %424
  store i64 %425, ptr %304, align 8, !tbaa !46
  %426 = load ptr, ptr %0, align 8, !tbaa !19
  %427 = getelementptr inbounds i8, ptr %426, i64 232
  %428 = load ptr, ptr %427, align 8, !tbaa !50
  %.not203 = icmp eq ptr %428, null
  br i1 %.not203, label %.loopexit280, label %.preheader279

.preheader279:                                    ; preds = %._crit_edge307
  %429 = getelementptr inbounds i8, ptr %426, i64 272
  %430 = load i32, ptr %429, align 8, !tbaa !51
  %431 = icmp sgt i32 %430, 0
  br i1 %431, label %.lr.ph313, label %.loopexit280

.lr.ph313:                                        ; preds = %.preheader279
  %432 = getelementptr inbounds i8, ptr %3, i64 8
  %433 = getelementptr inbounds i8, ptr %0, i64 40
  br label %434

434:                                              ; preds = %.lr.ph313, %526
  %indvars.iv396 = phi i64 [ 0, %.lr.ph313 ], [ %indvars.iv.next397, %526 ]
  %indvars.iv381 = phi i32 [ 0, %.lr.ph313 ], [ %indvars.iv.next382, %526 ]
  %435 = phi ptr [ %426, %.lr.ph313 ], [ %527, %526 ]
  %436 = zext i32 %indvars.iv381 to i64
  %437 = getelementptr inbounds i8, ptr %435, i64 240
  %438 = load ptr, ptr %437, align 8, !tbaa !52
  %.not235 = icmp eq ptr %438, null
  br i1 %.not235, label %.thread258, label %439

439:                                              ; preds = %434
  %440 = getelementptr inbounds i32, ptr %438, i64 %indvars.iv396
  %441 = load i32, ptr %440, align 4, !tbaa !32
  %.not236 = icmp eq i32 %441, 0
  br i1 %.not236, label %526, label %.thread258

.thread258:                                       ; preds = %434, %439
  %.0166261 = phi i32 [ %441, %439 ], [ -1, %434 ]
  %442 = load ptr, ptr %2, align 8, !tbaa !25
  %443 = getelementptr inbounds i8, ptr %435, i64 232
  %444 = load ptr, ptr %443, align 8, !tbaa !50
  %445 = getelementptr inbounds i32, ptr %444, i64 %436
  %446 = load i32, ptr %445, align 4, !tbaa !32
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds ptr, ptr %442, i64 %447
  %449 = load ptr, ptr %448, align 8, !tbaa !25
  %450 = getelementptr inbounds i32, ptr %444, i64 %436
  %451 = getelementptr inbounds i8, ptr %450, i64 4
  %452 = load i32, ptr %451, align 4, !tbaa !32
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds ptr, ptr %442, i64 %453
  %455 = load ptr, ptr %454, align 8, !tbaa !25
  %456 = getelementptr inbounds i32, ptr %444, i64 %436
  %457 = getelementptr inbounds i8, ptr %456, i64 8
  %458 = load i32, ptr %457, align 4, !tbaa !32
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds ptr, ptr %442, i64 %459
  %461 = load ptr, ptr %460, align 8, !tbaa !25
  store ptr null, ptr %10, align 8, !tbaa !53
  %462 = call noundef ptr @_ZN10tetgenmesh9point2tetEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %449)
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %462, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %463 = load ptr, ptr %4, align 8, !tbaa !33
  %464 = icmp eq ptr %463, null
  br i1 %464, label %.critedge, label %465

465:                                              ; preds = %.thread258
  %466 = call noundef ptr @_ZN10tetgenmesh9point2tetEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %455)
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %466, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %467 = load ptr, ptr %4, align 8, !tbaa !33
  %468 = icmp eq ptr %467, null
  br i1 %468, label %.critedge, label %469

469:                                              ; preds = %465
  %470 = call noundef ptr @_ZN10tetgenmesh9point2tetEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %461)
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %470, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %471 = load ptr, ptr %4, align 8, !tbaa !33
  %472 = icmp eq ptr %471, null
  br i1 %472, label %.critedge, label %473

473:                                              ; preds = %469
  %474 = call noundef i32 @_ZN10tetgenmesh7getedgeEPdS0_PNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %449, ptr noundef %455, ptr noundef nonnull %4)
  %.not237 = icmp eq i32 %474, 0
  br i1 %.not237, label %.critedge, label %475

475:                                              ; preds = %473
  %476 = 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)
  %477 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  br label %478

478:                                              ; preds = %483, %475
  %479 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %480 = icmp eq ptr %479, %461
  br i1 %480, label %481, label %483

481:                                              ; preds = %478
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %482 = load ptr, ptr %10, align 8
  %.not238.not = icmp eq ptr %482, null
  br i1 %.not238.not, label %498, label %.critedge.thread

483:                                              ; preds = %478
  %484 = load i32, ptr %432, align 8, !tbaa !34
  %485 = load ptr, ptr %3, align 8, !tbaa !33
  %486 = sext i32 %484 to i64
  %487 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %486
  %488 = load i32, ptr %487, align 4, !tbaa !32
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds ptr, ptr %485, i64 %489
  %491 = load ptr, ptr %490, align 8, !tbaa !25
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %491, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %492 = load i32, ptr %432, align 8, !tbaa !34
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %486, i64 %493
  %495 = load i32, ptr %494, align 4, !tbaa !32
  store i32 %495, ptr %432, align 8, !tbaa !34
  %496 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %497 = icmp eq ptr %496, %477
  br i1 %497, label %.critedge, label %478, !llvm.loop !54

498:                                              ; preds = %481
  %499 = load ptr, ptr %433, align 8, !tbaa !55
  call void @_ZN10tetgenmesh13makeshellfaceEPNS_10memorypoolEPNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %499, ptr noundef nonnull %9)
  call void @_ZN10tetgenmesh7setsorgERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef %449)
  call void @_ZN10tetgenmesh8setsdestERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef %455)
  call void @_ZN10tetgenmesh8setsapexERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef %461)
  %500 = call noundef ptr @_ZN10tetgenmesh7sencodeERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %449, i32 noundef 4)
  call void @_ZN10tetgenmesh11setpoint2shEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %449, ptr noundef %500)
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %455, i32 noundef 4)
  call void @_ZN10tetgenmesh11setpoint2shEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %455, ptr noundef %500)
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %461, i32 noundef 4)
  call void @_ZN10tetgenmesh11setpoint2shEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %461, ptr noundef %500)
  call void @_ZN10tetgenmesh12setshellmarkERNS_4faceEi(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, i32 noundef %.0166261)
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %501 = load i32, ptr %432, align 8, !tbaa !34
  %502 = load ptr, ptr %3, align 8, !tbaa !33
  %503 = and i32 %501, 3
  %504 = zext nneg i32 %503 to i64
  %505 = getelementptr inbounds ptr, ptr %502, i64 %504
  %506 = load ptr, ptr %505, align 8, !tbaa !25
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %506, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %507 = sext i32 %501 to i64
  %508 = load i32, ptr %432, align 8, !tbaa !34
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh7fsymtblE, i64 0, i64 %507, i64 %509
  %511 = load i32, ptr %510, align 4, !tbaa !32
  store i32 %511, ptr %432, align 8, !tbaa !34
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %526

.critedge:                                        ; preds = %483, %473, %469, %465, %.thread258
  %.pr263 = load ptr, ptr %10, align 8
  %.not240 = icmp eq ptr %.pr263, null
  br i1 %.not240, label %512, label %.critedge.thread

.critedge.thread:                                 ; preds = %481, %.critedge
  call void @_ZN10tetgenmesh12setshellmarkERNS_4faceEi(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10, i32 noundef %.0166261)
  br label %526

512:                                              ; preds = %.critedge
  %513 = load ptr, ptr %19, align 8, !tbaa !5
  %514 = getelementptr inbounds i8, ptr %513, i64 144
  %515 = load i32, ptr %514, align 8, !tbaa !15
  %516 = icmp eq i32 %515, 0
  br i1 %516, label %517, label %526

517:                                              ; preds = %512
  %518 = load ptr, ptr %0, align 8, !tbaa !19
  %519 = load i32, ptr %518, align 8, !tbaa !23
  %520 = trunc nuw nsw i64 %indvars.iv396 to i32
  %521 = add nsw i32 %519, %520
  %522 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %449)
  %523 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %455)
  %524 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %461)
  %525 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.464, i32 noundef %521, i32 noundef %522, i32 noundef %523, i32 noundef %524)
  br label %526

526:                                              ; preds = %439, %.critedge.thread, %517, %512, %498
  %indvars.iv.next397 = add nuw nsw i64 %indvars.iv396, 1
  %527 = load ptr, ptr %0, align 8, !tbaa !19
  %528 = getelementptr inbounds i8, ptr %527, i64 272
  %529 = load i32, ptr %528, align 8, !tbaa !51
  %530 = sext i32 %529 to i64
  %531 = icmp slt i64 %indvars.iv.next397, %530
  %indvars.iv.next382 = add i32 %indvars.iv381, 3
  br i1 %531, label %434, label %..loopexit280_crit_edge, !llvm.loop !56

..loopexit280_crit_edge:                          ; preds = %526
  %.pre526 = load ptr, ptr %300, align 8, !tbaa !43
  br label %.loopexit280

.loopexit280:                                     ; preds = %.preheader279, %..loopexit280_crit_edge, %._crit_edge307
  %532 = phi ptr [ %421, %._crit_edge307 ], [ %.pre526, %..loopexit280_crit_edge ], [ %421, %.preheader279 ]
  %533 = phi ptr [ %426, %._crit_edge307 ], [ %527, %..loopexit280_crit_edge ], [ %426, %.preheader279 ]
  %534 = getelementptr inbounds i8, ptr %533, i64 136
  %535 = load i32, ptr %534, align 8, !tbaa !20
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %532)
  %536 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  store ptr %536, ptr %3, align 8, !tbaa !33
  %.not205316 = icmp eq ptr %536, null
  br i1 %.not205316, label %._crit_edge319, label %.lr.ph318

.lr.ph318:                                        ; preds = %.loopexit280
  %537 = getelementptr inbounds i8, ptr %3, i64 8
  %538 = icmp sgt i32 %535, 0
  %539 = add nsw i32 %535, -1
  %540 = getelementptr inbounds i8, ptr %0, i64 40
  br label %541

541:                                              ; preds = %.lr.ph318, %566
  store i32 0, ptr %537, align 8, !tbaa !34
  br label %542

542:                                              ; preds = %541, %.critedge252
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %543 = load ptr, ptr %10, align 8, !tbaa !53
  %544 = icmp eq ptr %543, null
  br i1 %544, label %545, label %.critedge252

545:                                              ; preds = %542
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %546 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  br i1 %546, label %547, label %551

547:                                              ; preds = %545
  %548 = load ptr, ptr %19, align 8, !tbaa !5
  %549 = getelementptr inbounds i8, ptr %548, i64 68
  %550 = load i32, ptr %549, align 4, !tbaa !18
  %.not233.not = icmp eq i32 %550, 0
  br i1 %.not233.not, label %.critedge250, label %.critedge252

551:                                              ; preds = %545
  br i1 %538, label %552, label %.critedge252

552:                                              ; preds = %551
  %553 = load ptr, ptr %3, align 8, !tbaa !33
  %554 = call noundef double @_ZN10tetgenmesh13elemattributeEPPPdi(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %553, i32 noundef %539)
  %555 = load ptr, ptr %4, align 8, !tbaa !33
  %556 = call noundef double @_ZN10tetgenmesh13elemattributeEPPPdi(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %555, i32 noundef %539)
  %557 = fcmp une double %554, %556
  br i1 %557, label %.critedge250, label %.critedge252

.critedge250:                                     ; preds = %552, %547
  %558 = load ptr, ptr %540, align 8, !tbaa !55
  call void @_ZN10tetgenmesh13makeshellfaceEPNS_10memorypoolEPNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %558, ptr noundef nonnull %9)
  %559 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %560 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %561 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh7setsorgERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef %559)
  call void @_ZN10tetgenmesh8setsdestERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef %560)
  call void @_ZN10tetgenmesh8setsapexERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef %561)
  %562 = call noundef ptr @_ZN10tetgenmesh7sencodeERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %559, i32 noundef 4)
  call void @_ZN10tetgenmesh11setpoint2shEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %559, ptr noundef %562)
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %560, i32 noundef 4)
  call void @_ZN10tetgenmesh11setpoint2shEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %560, ptr noundef %562)
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %561, i32 noundef 4)
  call void @_ZN10tetgenmesh11setpoint2shEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %561, ptr noundef %562)
  call void @_ZN10tetgenmesh12setshellmarkERNS_4faceEi(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, i32 noundef -1)
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %.critedge252

.critedge252:                                     ; preds = %552, %551, %542, %.critedge250, %547
  %563 = load i32, ptr %537, align 8, !tbaa !34
  %564 = add nsw i32 %563, 1
  store i32 %564, ptr %537, align 8, !tbaa !34
  %565 = icmp slt i32 %563, 3
  br i1 %565, label %542, label %566, !llvm.loop !57

566:                                              ; preds = %.critedge252
  %567 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  store ptr %567, ptr %3, align 8, !tbaa !33
  %.not205 = icmp eq ptr %567, null
  br i1 %.not205, label %._crit_edge319, label %541, !llvm.loop !58

._crit_edge319:                                   ; preds = %566, %.loopexit280
  %568 = getelementptr inbounds i8, ptr %0, i64 40
  %569 = load ptr, ptr %568, align 8, !tbaa !55
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %569)
  %570 = getelementptr inbounds i8, ptr %9, i64 8
  store i32 0, ptr %570, align 8, !tbaa !59
  %571 = load ptr, ptr %568, align 8, !tbaa !55
  %572 = call noundef ptr @_ZN10tetgenmesh17shellfacetraverseEPNS_10memorypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %571)
  store ptr %572, ptr %9, align 8, !tbaa !53
  %.not207323 = icmp eq ptr %572, null
  br i1 %.not207323, label %._crit_edge324, label %.preheader277.lr.ph

.preheader277.lr.ph:                              ; preds = %._crit_edge319
  %573 = getelementptr inbounds i8, ptr %3, i64 8
  br label %.preheader277

.preheader277:                                    ; preds = %.preheader277.lr.ph, %.loopexit276.2
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %574 = load ptr, ptr %10, align 8, !tbaa !53
  %575 = icmp eq ptr %574, null
  br i1 %575, label %576, label %.loopexit276

576:                                              ; preds = %.preheader277
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %577 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %578 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %579

579:                                              ; preds = %596, %576
  %580 = load i32, ptr %573, align 8, !tbaa !34
  %581 = load ptr, ptr %3, align 8, !tbaa !33
  %582 = sext i32 %580 to i64
  %583 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %582
  %584 = load i32, ptr %583, align 4, !tbaa !32
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds ptr, ptr %581, i64 %585
  %587 = load ptr, ptr %586, align 8, !tbaa !25
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %587, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %588 = load i32, ptr %573, align 8, !tbaa !34
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %582, i64 %589
  %591 = load i32, ptr %590, align 4, !tbaa !32
  store i32 %591, ptr %573, align 8, !tbaa !34
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %592 = load ptr, ptr %11, align 8, !tbaa !53
  %.not230 = icmp eq ptr %592, null
  %593 = load ptr, ptr %10, align 8
  %.not231 = icmp eq ptr %592, %593
  %or.cond = select i1 %.not230, i1 true, i1 %.not231
  br i1 %or.cond, label %596, label %594

594:                                              ; preds = %579
  call void @_ZN10tetgenmesh6sbond1ERNS_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)
  %595 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %11)
  br label %596

596:                                              ; preds = %594, %579
  %597 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %598 = icmp eq ptr %597, %577
  br i1 %598, label %.loopexit276, label %579, !llvm.loop !60

.loopexit276:                                     ; preds = %596, %.preheader277
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %599 = load ptr, ptr %10, align 8, !tbaa !53
  %600 = icmp eq ptr %599, null
  br i1 %600, label %601, label %.loopexit276.1

601:                                              ; preds = %.loopexit276
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %602 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %603 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %604

604:                                              ; preds = %621, %601
  %605 = load i32, ptr %573, align 8, !tbaa !34
  %606 = load ptr, ptr %3, align 8, !tbaa !33
  %607 = sext i32 %605 to i64
  %608 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %607
  %609 = load i32, ptr %608, align 4, !tbaa !32
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds ptr, ptr %606, i64 %610
  %612 = load ptr, ptr %611, align 8, !tbaa !25
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %612, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %613 = load i32, ptr %573, align 8, !tbaa !34
  %614 = sext i32 %613 to i64
  %615 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %607, i64 %614
  %616 = load i32, ptr %615, align 4, !tbaa !32
  store i32 %616, ptr %573, align 8, !tbaa !34
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %617 = load ptr, ptr %11, align 8, !tbaa !53
  %.not230.1 = icmp eq ptr %617, null
  %618 = load ptr, ptr %10, align 8
  %.not231.1 = icmp eq ptr %617, %618
  %or.cond.1 = select i1 %.not230.1, i1 true, i1 %.not231.1
  br i1 %or.cond.1, label %621, label %619

619:                                              ; preds = %604
  call void @_ZN10tetgenmesh6sbond1ERNS_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)
  %620 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %11)
  br label %621

621:                                              ; preds = %619, %604
  %622 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %623 = icmp eq ptr %622, %602
  br i1 %623, label %.loopexit276.1, label %604, !llvm.loop !60

.loopexit276.1:                                   ; preds = %621, %.loopexit276
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %624 = load ptr, ptr %10, align 8, !tbaa !53
  %625 = icmp eq ptr %624, null
  br i1 %625, label %626, label %.loopexit276.2

626:                                              ; preds = %.loopexit276.1
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %627 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %628 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %629

629:                                              ; preds = %646, %626
  %630 = load i32, ptr %573, align 8, !tbaa !34
  %631 = load ptr, ptr %3, align 8, !tbaa !33
  %632 = sext i32 %630 to i64
  %633 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %632
  %634 = load i32, ptr %633, align 4, !tbaa !32
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds ptr, ptr %631, i64 %635
  %637 = load ptr, ptr %636, align 8, !tbaa !25
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %637, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %638 = load i32, ptr %573, align 8, !tbaa !34
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %632, i64 %639
  %641 = load i32, ptr %640, align 4, !tbaa !32
  store i32 %641, ptr %573, align 8, !tbaa !34
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %642 = load ptr, ptr %11, align 8, !tbaa !53
  %.not230.2 = icmp eq ptr %642, null
  %643 = load ptr, ptr %10, align 8
  %.not231.2 = icmp eq ptr %642, %643
  %or.cond.2 = select i1 %.not230.2, i1 true, i1 %.not231.2
  br i1 %or.cond.2, label %646, label %644

644:                                              ; preds = %629
  call void @_ZN10tetgenmesh6sbond1ERNS_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)
  %645 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %11)
  br label %646

646:                                              ; preds = %644, %629
  %647 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %648 = icmp eq ptr %647, %627
  br i1 %648, label %.loopexit276.2, label %629, !llvm.loop !60

.loopexit276.2:                                   ; preds = %646, %.loopexit276.1
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %649 = load ptr, ptr %568, align 8, !tbaa !55
  %650 = call noundef ptr @_ZN10tetgenmesh17shellfacetraverseEPNS_10memorypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %649)
  store ptr %650, ptr %9, align 8, !tbaa !53
  %.not207 = icmp eq ptr %650, null
  br i1 %.not207, label %._crit_edge324, label %.preheader277, !llvm.loop !61

._crit_edge324:                                   ; preds = %.loopexit276.2, %._crit_edge319
  %651 = load ptr, ptr %0, align 8, !tbaa !19
  %652 = getelementptr inbounds i8, ptr %651, i64 280
  %653 = load ptr, ptr %652, align 8, !tbaa !62
  %.not208 = icmp eq ptr %653, null
  br i1 %.not208, label %.loopexit275, label %.preheader274

.preheader274:                                    ; preds = %._crit_edge324
  %654 = getelementptr inbounds i8, ptr %651, i64 312
  %655 = load i32, ptr %654, align 8, !tbaa !63
  %656 = icmp sgt i32 %655, 0
  br i1 %656, label %.lr.ph332, label %.loopexit275

.lr.ph332:                                        ; preds = %.preheader274
  %657 = getelementptr inbounds i8, ptr %0, i64 48
  %658 = getelementptr inbounds i8, ptr %3, i64 8
  br label %659

659:                                              ; preds = %.lr.ph332, %722
  %indvars.iv417 = phi i64 [ 0, %.lr.ph332 ], [ %indvars.iv.next418, %722 ]
  %indvars.iv402 = phi i64 [ 0, %.lr.ph332 ], [ %indvars.iv.next403, %722 ]
  %660 = phi ptr [ %651, %.lr.ph332 ], [ %723, %722 ]
  %661 = getelementptr inbounds i8, ptr %660, i64 288
  %662 = load ptr, ptr %661, align 8, !tbaa !64
  %.not225 = icmp eq ptr %662, null
  br i1 %.not225, label %.thread264, label %663

663:                                              ; preds = %659
  %664 = getelementptr inbounds i32, ptr %662, i64 %indvars.iv417
  %665 = load i32, ptr %664, align 4, !tbaa !32
  %.not226 = icmp eq i32 %665, 0
  br i1 %.not226, label %722, label %.thread264

.thread264:                                       ; preds = %659, %663
  %.1267 = phi i32 [ %665, %663 ], [ -1, %659 ]
  %666 = load ptr, ptr %2, align 8, !tbaa !25
  %667 = getelementptr inbounds i8, ptr %660, i64 280
  %668 = load ptr, ptr %667, align 8, !tbaa !62
  %indvars.iv.next405 = or disjoint i64 %indvars.iv402, 1
  %669 = getelementptr inbounds i32, ptr %668, i64 %indvars.iv402
  %670 = load i32, ptr %669, align 4, !tbaa !32
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds ptr, ptr %666, i64 %671
  %673 = load ptr, ptr %672, align 8, !tbaa !25
  %674 = getelementptr inbounds i32, ptr %668, i64 %indvars.iv.next405
  %675 = load i32, ptr %674, align 4, !tbaa !32
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds ptr, ptr %666, i64 %676
  %678 = load ptr, ptr %677, align 8, !tbaa !25
  %679 = call noundef ptr @_ZN10tetgenmesh9point2tetEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %673)
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %679, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %680 = load ptr, ptr %4, align 8, !tbaa !33
  %681 = icmp eq ptr %680, null
  br i1 %681, label %.thread268, label %.preheader273.1

.preheader273.1:                                  ; preds = %.thread264
  %682 = call noundef ptr @_ZN10tetgenmesh9point2tetEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %678)
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %682, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %683 = load ptr, ptr %4, align 8, !tbaa !33
  %684 = icmp eq ptr %683, null
  br i1 %684, label %.thread268, label %685

685:                                              ; preds = %.preheader273.1
  %686 = call noundef i32 @_ZN10tetgenmesh7getedgeEPdS0_PNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %673, ptr noundef %678, ptr noundef nonnull %4)
  %.not227 = icmp eq i32 %686, 0
  br i1 %.not227, label %.thread268, label %687

687:                                              ; preds = %685
  %688 = load ptr, ptr %657, align 8, !tbaa !65
  call void @_ZN10tetgenmesh13makeshellfaceEPNS_10memorypoolEPNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %688, ptr noundef nonnull %12)
  call void @_ZN10tetgenmesh7setsorgERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef %673)
  call void @_ZN10tetgenmesh8setsdestERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef %678)
  call void @_ZN10tetgenmesh8setsapexERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef null)
  %689 = call noundef ptr @_ZN10tetgenmesh7sencodeERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %673, i32 noundef 2)
  call void @_ZN10tetgenmesh11setpoint2shEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %673, ptr noundef %689)
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %678, i32 noundef 2)
  call void @_ZN10tetgenmesh11setpoint2shEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %678, ptr noundef %689)
  call void @_ZN10tetgenmesh12setshellmarkERNS_4faceEi(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12, i32 noundef %.1267)
  %690 = 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)
  %691 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  store ptr null, ptr %9, align 8, !tbaa !53
  br label %692

692:                                              ; preds = %695, %687
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %693 = load ptr, ptr %9, align 8, !tbaa !53
  %.not229 = icmp eq ptr %693, null
  br i1 %.not229, label %695, label %694

694:                                              ; preds = %692
  call void @_ZN10tetgenmesh7ssbond1ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @_ZN10tetgenmesh6sbond1ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %695

695:                                              ; preds = %694, %692
  %696 = load i32, ptr %658, align 8, !tbaa !34
  %697 = load ptr, ptr %3, align 8, !tbaa !33
  %698 = sext i32 %696 to i64
  %699 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %698
  %700 = load i32, ptr %699, align 4, !tbaa !32
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds ptr, ptr %697, i64 %701
  %703 = load ptr, ptr %702, align 8, !tbaa !25
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %703, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %704 = load i32, ptr %658, align 8, !tbaa !34
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %698, i64 %705
  %707 = load i32, ptr %706, align 4, !tbaa !32
  store i32 %707, ptr %658, align 8, !tbaa !34
  %708 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %709 = icmp eq ptr %708, %691
  br i1 %709, label %710, label %692, !llvm.loop !66

710:                                              ; preds = %695
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %722

.thread268:                                       ; preds = %.thread264, %.preheader273.1, %685
  %711 = load ptr, ptr %19, align 8, !tbaa !5
  %712 = getelementptr inbounds i8, ptr %711, i64 144
  %713 = load i32, ptr %712, align 8, !tbaa !15
  %.not228 = icmp eq i32 %713, 0
  br i1 %.not228, label %714, label %722

714:                                              ; preds = %.thread268
  %715 = load ptr, ptr %0, align 8, !tbaa !19
  %716 = load i32, ptr %715, align 8, !tbaa !23
  %717 = trunc nuw nsw i64 %indvars.iv417 to i32
  %718 = add nsw i32 %716, %717
  %719 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %673)
  %720 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %678)
  %721 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.465, i32 noundef %718, i32 noundef %719, i32 noundef %720)
  br label %722

722:                                              ; preds = %663, %.thread268, %714, %710
  %indvars.iv.next418 = add nuw nsw i64 %indvars.iv417, 1
  %723 = load ptr, ptr %0, align 8, !tbaa !19
  %724 = getelementptr inbounds i8, ptr %723, i64 312
  %725 = load i32, ptr %724, align 8, !tbaa !63
  %726 = sext i32 %725 to i64
  %727 = icmp slt i64 %indvars.iv.next418, %726
  %indvars.iv.next403 = add nuw nsw i64 %indvars.iv402, 2
  br i1 %727, label %659, label %.loopexit275, !llvm.loop !67

.loopexit275:                                     ; preds = %722, %.preheader274, %._crit_edge324
  %728 = load ptr, ptr %19, align 8, !tbaa !5
  %729 = getelementptr inbounds i8, ptr %728, i64 248
  %730 = load double, ptr %729, align 8, !tbaa !68
  %731 = fdiv double %730, 1.800000e+02
  %732 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !36
  %733 = fmul double %731, %732
  %734 = call double @cos(double noundef %733) #10
  %735 = load ptr, ptr %568, align 8, !tbaa !55
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %735)
  store i32 0, ptr %570, align 8, !tbaa !59
  %736 = load ptr, ptr %568, align 8, !tbaa !55
  %737 = call noundef ptr @_ZN10tetgenmesh17shellfacetraverseEPNS_10memorypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %736)
  store ptr %737, ptr %9, align 8, !tbaa !53
  %.not210339 = icmp eq ptr %737, null
  br i1 %.not210339, label %._crit_edge340, label %.preheader272.lr.ph

.preheader272.lr.ph:                              ; preds = %.loopexit275
  %738 = getelementptr inbounds i8, ptr %0, i64 48
  %739 = getelementptr inbounds i8, ptr %3, i64 8
  br label %.preheader272

.preheader272:                                    ; preds = %.preheader272.backedge, %.preheader272.lr.ph
  %.5185336 = phi i32 [ 0, %.preheader272.lr.ph ], [ %.5185336.be, %.preheader272.backedge ]
  call void @_ZN10tetgenmesh7sspivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %12)
  %740 = load ptr, ptr %12, align 8, !tbaa !53
  %741 = icmp eq ptr %740, null
  br i1 %741, label %742, label %799

742:                                              ; preds = %.preheader272
  %743 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %11, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %744

744:                                              ; preds = %744, %742
  %.3172 = phi i32 [ 0, %742 ], [ %745, %744 ]
  %745 = add nuw nsw i32 %.3172, 1
  call void @_ZN10tetgenmesh10spivotselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %11)
  %746 = load ptr, ptr %11, align 8, !tbaa !53
  %747 = load ptr, ptr %9, align 8, !tbaa !53
  %748 = icmp eq ptr %746, %747
  br i1 %748, label %749, label %744, !llvm.loop !69

749:                                              ; preds = %744
  %.not220 = icmp eq i32 %745, 2
  br i1 %.not220, label %750, label %.critedge254.sink.split

750:                                              ; preds = %749
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %751 = call noundef i32 @_ZN10tetgenmesh9shellmarkERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %752 = call noundef i32 @_ZN10tetgenmesh9shellmarkERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %.not221 = icmp eq i32 %751, %752
  br i1 %.not221, label %753, label %.critedge254.sink.split

753:                                              ; preds = %750
  %754 = load ptr, ptr %19, align 8, !tbaa !5
  %755 = getelementptr inbounds i8, ptr %754, i64 68
  %756 = load i32, ptr %755, align 4, !tbaa !18
  %.not222 = icmp eq i32 %756, 0
  br i1 %.not222, label %757, label %799

757:                                              ; preds = %753
  %758 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %759 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %760 = call noundef ptr @_ZN10tetgenmesh5sapexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %761 = call noundef ptr @_ZN10tetgenmesh5sapexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh10facenormalEPdS0_S0_S0_iS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %758, ptr noundef %759, ptr noundef %760, ptr noundef nonnull %13, i32 noundef 1, ptr noundef null)
  call void @_ZN10tetgenmesh10facenormalEPdS0_S0_S0_iS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %758, ptr noundef %759, ptr noundef %761, ptr noundef nonnull %14, i32 noundef 1, ptr noundef null)
  %762 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %13, ptr noundef nonnull %14)
  %763 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %13, ptr noundef nonnull %13)
  %764 = call double @sqrt(double noundef %763) #10
  %765 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %14, ptr noundef nonnull %14)
  %766 = call double @sqrt(double noundef %765) #10
  %767 = fmul double %764, %766
  %768 = fdiv double %762, %767
  %769 = fcmp ogt double %768, 1.000000e+00
  br i1 %769, label %773, label %770

770:                                              ; preds = %757
  %771 = fcmp olt double %768, -1.000000e+00
  br i1 %771, label %772, label %773

772:                                              ; preds = %770
  br label %773

773:                                              ; preds = %757, %770, %772
  %.0165 = phi double [ -1.000000e+00, %772 ], [ %768, %770 ], [ 1.000000e+00, %757 ]
  %774 = fcmp ogt double %.0165, %734
  br i1 %774, label %.critedge254, label %799

.critedge254.sink.split:                          ; preds = %750, %749
  %775 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %776 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %.critedge254

.critedge254:                                     ; preds = %.critedge254.sink.split, %773
  %.sroa.45.1 = phi ptr [ %759, %773 ], [ %776, %.critedge254.sink.split ]
  %.sroa.0441.1 = phi ptr [ %758, %773 ], [ %775, %.critedge254.sink.split ]
  %777 = load ptr, ptr %738, align 8, !tbaa !65
  call void @_ZN10tetgenmesh13makeshellfaceEPNS_10memorypoolEPNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %777, ptr noundef nonnull %12)
  call void @_ZN10tetgenmesh7setsorgERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef %.sroa.0441.1)
  call void @_ZN10tetgenmesh8setsdestERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef %.sroa.45.1)
  call void @_ZN10tetgenmesh8setsapexERNS_4faceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef null)
  %778 = call noundef ptr @_ZN10tetgenmesh7sencodeERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %.sroa.0441.1, i32 noundef 2)
  call void @_ZN10tetgenmesh11setpoint2shEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %.sroa.0441.1, ptr noundef %778)
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %.sroa.45.1, i32 noundef 2)
  call void @_ZN10tetgenmesh11setpoint2shEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %.sroa.45.1, ptr noundef %778)
  call void @_ZN10tetgenmesh12setshellmarkERNS_4faceEi(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12, i32 noundef -1)
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %779 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %780

780:                                              ; preds = %783, %.critedge254
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %12)
  call void @_ZN10tetgenmesh7tspivotERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %781 = load ptr, ptr %10, align 8, !tbaa !53
  %.not224 = icmp eq ptr %781, null
  br i1 %.not224, label %783, label %782

782:                                              ; preds = %780
  call void @_ZN10tetgenmesh7ssbond1ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %12)
  br label %783

783:                                              ; preds = %782, %780
  %784 = load i32, ptr %739, align 8, !tbaa !34
  %785 = load ptr, ptr %3, align 8, !tbaa !33
  %786 = sext i32 %784 to i64
  %787 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %786
  %788 = load i32, ptr %787, align 4, !tbaa !32
  %789 = sext i32 %788 to i64
  %790 = getelementptr inbounds ptr, ptr %785, i64 %789
  %791 = load ptr, ptr %790, align 8, !tbaa !25
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %791, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %792 = load i32, ptr %739, align 8, !tbaa !34
  %793 = sext i32 %792 to i64
  %794 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %786, i64 %793
  %795 = load i32, ptr %794, align 4, !tbaa !32
  store i32 %795, ptr %739, align 8, !tbaa !34
  %796 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %797 = icmp eq ptr %796, %779
  br i1 %797, label %798, label %780, !llvm.loop !70

798:                                              ; preds = %783
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh6sbond1ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %799

799:                                              ; preds = %753, %773, %798, %.preheader272
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %800 = add nuw nsw i32 %.5185336, 1
  %exitcond.not = icmp eq i32 %800, 3
  br i1 %exitcond.not, label %801, label %.preheader272.backedge

.preheader272.backedge:                           ; preds = %799, %801
  %.5185336.be = phi i32 [ %800, %799 ], [ 0, %801 ]
  br label %.preheader272, !llvm.loop !71

801:                                              ; preds = %799
  %802 = load ptr, ptr %568, align 8, !tbaa !55
  %803 = call noundef ptr @_ZN10tetgenmesh17shellfacetraverseEPNS_10memorypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %802)
  store ptr %803, ptr %9, align 8, !tbaa !53
  %.not210 = icmp eq ptr %803, null
  br i1 %.not210, label %._crit_edge340, label %.preheader272.backedge

._crit_edge340:                                   ; preds = %801, %.loopexit275
  %804 = getelementptr inbounds i8, ptr %0, i64 48
  %805 = load ptr, ptr %804, align 8, !tbaa !65
  %806 = getelementptr inbounds i8, ptr %805, i64 64
  %807 = load i64, ptr %806, align 8, !tbaa !44
  %808 = getelementptr inbounds i8, ptr %0, i64 544
  store i64 %807, ptr %808, align 8, !tbaa !72
  %809 = load ptr, ptr %19, align 8, !tbaa !5
  %810 = getelementptr inbounds i8, ptr %809, i64 16
  %811 = load i32, ptr %810, align 8, !tbaa !73
  %.not211 = icmp ne i32 %811, 0
  %812 = getelementptr inbounds i8, ptr %0, i64 388
  %813 = load i32, ptr %812, align 4
  %.not212 = icmp eq i32 %813, 0
  %or.cond256 = select i1 %.not211, i1 %.not212, i1 false
  br i1 %or.cond256, label %954, label %814

814:                                              ; preds = %._crit_edge340
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #10
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %17)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #10
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %18)
  %815 = load ptr, ptr %804, align 8, !tbaa !65
  call void @_ZN10tetgenmesh16makepoint2submapEPNS_10memorypoolERPiRPNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %815, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %15)
  %816 = getelementptr inbounds i8, ptr %0, i64 56
  %817 = load ptr, ptr %816, align 8, !tbaa !74
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %817)
  %818 = call noundef ptr @_ZN10tetgenmesh13pointtraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  %.not213343 = icmp eq ptr %818, null
  br i1 %.not213343, label %._crit_edge347, label %.lr.ph346

.lr.ph346:                                        ; preds = %814
  %819 = getelementptr inbounds i8, ptr %0, i64 608
  %820 = getelementptr inbounds i8, ptr %0, i64 616
  %821 = getelementptr inbounds i8, ptr %0, i64 624
  br label %822

822:                                              ; preds = %.lr.ph346, %863
  %.0344 = phi ptr [ %818, %.lr.ph346 ], [ %864, %863 ]
  %823 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.0344)
  switch i32 %823, label %863 [
    i32 5, label %824
    i32 4, label %825
    i32 2, label %826
  ]

824:                                              ; preds = %822
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.0344, i32 noundef 8)
  br label %.sink.split

825:                                              ; preds = %822
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.0344, i32 noundef 7)
  br label %.sink.split

826:                                              ; preds = %822
  %827 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.0344)
  %828 = load ptr, ptr %0, align 8, !tbaa !19
  %829 = load i32, ptr %828, align 8, !tbaa !23
  %830 = sub nsw i32 %827, %829
  %831 = load ptr, ptr %16, align 8, !tbaa !25
  %832 = sext i32 %830 to i64
  %833 = getelementptr i32, ptr %831, i64 %832
  %834 = getelementptr i8, ptr %833, i64 4
  %835 = load i32, ptr %834, align 4, !tbaa !32
  %836 = load i32, ptr %833, align 4, !tbaa !32
  %837 = sub nsw i32 %835, %836
  %838 = icmp eq i32 %837, 2
  br i1 %838, label %839, label %863

839:                                              ; preds = %826
  %840 = load ptr, ptr %15, align 8, !tbaa !25
  %841 = sext i32 %836 to i64
  %842 = getelementptr inbounds %"class.tetgenmesh::face", ptr %840, i64 %841
  %843 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %17, ptr noundef nonnull align 8 dereferenceable(12) %842)
  %844 = load ptr, ptr %15, align 8, !tbaa !25
  %845 = getelementptr %"class.tetgenmesh::face", ptr %844, i64 %841
  %846 = getelementptr i8, ptr %845, i64 16
  %847 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %18, ptr noundef nonnull align 8 dereferenceable(12) %846)
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %18)
  %848 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %18)
  %849 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %850 = call noundef double @_ZN10tetgenmesh8distanceEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %848, ptr noundef %849)
  %851 = call noundef double @_ZN10tetgenmesh8distanceEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %848, ptr noundef nonnull %.0344)
  %852 = call noundef double @_ZN10tetgenmesh8distanceEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.0344, ptr noundef %849)
  %853 = fadd double %851, %852
  %854 = fsub double %853, %850
  %855 = fdiv double %854, %850
  %856 = load ptr, ptr %19, align 8, !tbaa !5
  %857 = getelementptr inbounds i8, ptr %856, i64 320
  %858 = load double, ptr %857, align 8, !tbaa !75
  %859 = fcmp olt double %855, %858
  br i1 %859, label %860, label %863

860:                                              ; preds = %839
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.0344, i32 noundef 6)
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %18)
  call void @_ZN10tetgenmesh11senext2selfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %17)
  call void @_ZN10tetgenmesh5sbondERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %18, ptr noundef nonnull align 8 dereferenceable(12) %17)
  br label %.sink.split

.sink.split:                                      ; preds = %824, %860, %825
  %.sink = phi ptr [ %820, %825 ], [ %819, %860 ], [ %821, %824 ]
  %861 = load i64, ptr %.sink, align 8, !tbaa !76
  %862 = add nsw i64 %861, 1
  store i64 %862, ptr %.sink, align 8, !tbaa !76
  br label %863

863:                                              ; preds = %.sink.split, %822, %826, %839
  %864 = call noundef ptr @_ZN10tetgenmesh13pointtraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  %.not213 = icmp eq ptr %864, null
  br i1 %.not213, label %._crit_edge347, label %822, !llvm.loop !77

._crit_edge347:                                   ; preds = %863, %814
  %865 = load ptr, ptr %19, align 8, !tbaa !5
  %866 = getelementptr inbounds i8, ptr %865, i64 12
  %867 = load i32, ptr %866, align 4, !tbaa !78
  %.not214 = icmp eq i32 %867, 0
  br i1 %.not214, label %.loopexit269, label %868

868:                                              ; preds = %._crit_edge347
  %869 = load ptr, ptr %0, align 8, !tbaa !19
  %870 = getelementptr inbounds i8, ptr %869, i64 200
  %871 = load ptr, ptr %870, align 8, !tbaa !79
  %.not215 = icmp eq ptr %871, null
  br i1 %.not215, label %.loopexit271.thread, label %.preheader270

.preheader270:                                    ; preds = %868
  %872 = getelementptr inbounds i8, ptr %869, i64 208
  %873 = load i32, ptr %872, align 8, !tbaa !80
  %874 = icmp sgt i32 %873, 0
  br i1 %874, label %.lr.ph353, label %.loopexit271.thread

.lr.ph353:                                        ; preds = %.preheader270, %._crit_edge351
  %indvars.iv423 = phi i64 [ %indvars.iv.next424, %._crit_edge351 ], [ 0, %.preheader270 ]
  %875 = phi ptr [ %894, %._crit_edge351 ], [ %869, %.preheader270 ]
  %876 = getelementptr inbounds i8, ptr %875, i64 200
  %877 = load ptr, ptr %876, align 8, !tbaa !79
  %878 = shl nuw nsw i64 %indvars.iv423, 1
  %879 = getelementptr inbounds double, ptr %877, i64 %878
  %880 = load double, ptr %879, align 8, !tbaa !36
  %881 = fptosi double %880 to i32
  %882 = or disjoint i64 %878, 1
  %883 = getelementptr inbounds double, ptr %877, i64 %882
  %884 = load double, ptr %883, align 8, !tbaa !36
  %885 = load ptr, ptr %568, align 8, !tbaa !55
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %885)
  %886 = load ptr, ptr %568, align 8, !tbaa !55
  %887 = call noundef ptr @_ZN10tetgenmesh17shellfacetraverseEPNS_10memorypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %886)
  store ptr %887, ptr %9, align 8, !tbaa !53
  %.not219348 = icmp eq ptr %887, null
  br i1 %.not219348, label %._crit_edge351, label %.lr.ph350

.lr.ph350:                                        ; preds = %.lr.ph353, %891
  %888 = call noundef i32 @_ZN10tetgenmesh9shellmarkERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %889 = icmp eq i32 %888, %881
  br i1 %889, label %890, label %891

890:                                              ; preds = %.lr.ph350
  call void @_ZN10tetgenmesh12setareaboundERNS_4faceEd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, double noundef %884)
  br label %891

891:                                              ; preds = %890, %.lr.ph350
  %892 = load ptr, ptr %568, align 8, !tbaa !55
  %893 = call noundef ptr @_ZN10tetgenmesh17shellfacetraverseEPNS_10memorypoolE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %892)
  store ptr %893, ptr %9, align 8, !tbaa !53
  %.not219 = icmp eq ptr %893, null
  br i1 %.not219, label %._crit_edge351, label %.lr.ph350, !llvm.loop !81

._crit_edge351:                                   ; preds = %891, %.lr.ph353
  %indvars.iv.next424 = add nuw nsw i64 %indvars.iv423, 1
  %894 = load ptr, ptr %0, align 8, !tbaa !19
  %895 = getelementptr inbounds i8, ptr %894, i64 208
  %896 = load i32, ptr %895, align 8, !tbaa !80
  %897 = sext i32 %896 to i64
  %898 = icmp slt i64 %indvars.iv.next424, %897
  br i1 %898, label %.lr.ph353, label %.loopexit271, !llvm.loop !82

.loopexit271:                                     ; preds = %._crit_edge351
  %.pre527 = load ptr, ptr %19, align 8, !tbaa !5
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre527, i64 12
  %.pre528 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !78
  %899 = icmp eq i32 %.pre528, 0
  br i1 %899, label %.loopexit269, label %.loopexit271.thread

.loopexit271.thread:                              ; preds = %868, %.preheader270, %.loopexit271
  %900 = load ptr, ptr %0, align 8, !tbaa !19
  %901 = getelementptr inbounds i8, ptr %900, i64 216
  %902 = load ptr, ptr %901, align 8, !tbaa !83
  %.not217 = icmp eq ptr %902, null
  br i1 %.not217, label %.loopexit269, label %.preheader

.preheader:                                       ; preds = %.loopexit271.thread
  %903 = getelementptr inbounds i8, ptr %900, i64 224
  %904 = load i32, ptr %903, align 8, !tbaa !84
  %905 = icmp sgt i32 %904, 0
  br i1 %905, label %.lr.ph358, label %.loopexit269

.lr.ph358:                                        ; preds = %.preheader, %.loopexit
  %indvars.iv429 = phi i64 [ %indvars.iv.next430, %.loopexit ], [ 0, %.preheader ]
  %906 = phi ptr [ %941, %.loopexit ], [ %900, %.preheader ]
  %907 = getelementptr inbounds i8, ptr %906, i64 216
  %908 = load ptr, ptr %907, align 8, !tbaa !83
  %.idx = mul i64 %indvars.iv429, 24
  %909 = getelementptr inbounds i8, ptr %908, i64 %.idx
  %910 = load double, ptr %909, align 8, !tbaa !36
  %911 = fptosi double %910 to i32
  %912 = getelementptr inbounds i8, ptr %909, i64 8
  %913 = load double, ptr %912, align 8, !tbaa !36
  %914 = fptosi double %913 to i32
  %915 = getelementptr inbounds i8, ptr %909, i64 16
  %916 = load double, ptr %915, align 8, !tbaa !36
  %917 = load i32, ptr %906, align 8, !tbaa !23
  %918 = sub nsw i32 %911, %917
  %919 = load ptr, ptr %16, align 8, !tbaa !25
  %920 = sext i32 %918 to i64
  %921 = getelementptr i32, ptr %919, i64 %920
  %922 = load i32, ptr %921, align 4, !tbaa !32
  %923 = getelementptr i8, ptr %921, i64 4
  %924 = load i32, ptr %923, align 4, !tbaa !32
  %925 = icmp slt i32 %922, %924
  br i1 %925, label %.lr.ph356.preheader, label %.loopexit

.lr.ph356.preheader:                              ; preds = %.lr.ph358
  %926 = sext i32 %922 to i64
  br label %.lr.ph356

927:                                              ; preds = %.lr.ph356
  %indvars.iv.next427 = add nsw i64 %indvars.iv426, 1
  %928 = load ptr, ptr %16, align 8, !tbaa !25
  %929 = getelementptr i32, ptr %928, i64 %920
  %930 = getelementptr i8, ptr %929, i64 4
  %931 = load i32, ptr %930, align 4, !tbaa !32
  %932 = sext i32 %931 to i64
  %933 = icmp slt i64 %indvars.iv.next427, %932
  br i1 %933, label %.lr.ph356, label %.loopexit, !llvm.loop !85

.lr.ph356:                                        ; preds = %.lr.ph356.preheader, %927
  %indvars.iv426 = phi i64 [ %926, %.lr.ph356.preheader ], [ %indvars.iv.next427, %927 ]
  %934 = load ptr, ptr %15, align 8, !tbaa !25
  %935 = getelementptr inbounds %"class.tetgenmesh::face", ptr %934, i64 %indvars.iv426
  %936 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %17, ptr noundef nonnull align 8 dereferenceable(12) %935)
  %937 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %938 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %937)
  %939 = icmp eq i32 %938, %914
  br i1 %939, label %940, label %927

940:                                              ; preds = %.lr.ph356
  call void @_ZN10tetgenmesh12setareaboundERNS_4faceEd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %17, double noundef %916)
  br label %.loopexit

.loopexit:                                        ; preds = %927, %.lr.ph358, %940
  %indvars.iv.next430 = add nuw nsw i64 %indvars.iv429, 1
  %941 = load ptr, ptr %0, align 8, !tbaa !19
  %942 = getelementptr inbounds i8, ptr %941, i64 224
  %943 = load i32, ptr %942, align 8, !tbaa !84
  %944 = sext i32 %943 to i64
  %945 = icmp slt i64 %indvars.iv.next430, %944
  br i1 %945, label %.lr.ph358, label %.loopexit269, !llvm.loop !86

.loopexit269:                                     ; preds = %.loopexit, %._crit_edge347, %.preheader, %.loopexit271.thread, %.loopexit271
  %946 = load ptr, ptr %16, align 8, !tbaa !25
  %947 = icmp eq ptr %946, null
  br i1 %947, label %949, label %948

948:                                              ; preds = %.loopexit269
  call void @_ZdaPv(ptr noundef nonnull %946) #12
  br label %949

949:                                              ; preds = %948, %.loopexit269
  %950 = load ptr, ptr %15, align 8, !tbaa !25
  %951 = icmp eq ptr %950, null
  br i1 %951, label %953, label %952

952:                                              ; preds = %949
  call void @_ZdaPv(ptr noundef nonnull %950) #12
  br label %953

953:                                              ; preds = %952, %949
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  br label %954

954:                                              ; preds = %._crit_edge340, %953
  %955 = getelementptr inbounds i8, ptr %0, i64 380
  store i32 1, ptr %955, align 4, !tbaa !87
  %956 = getelementptr inbounds i8, ptr %0, i64 384
  store i32 1, ptr %956, align 8, !tbaa !88
  %957 = load ptr, ptr %2, align 8, !tbaa !25
  %958 = icmp eq ptr %957, null
  br i1 %958, label %960, label %959

959:                                              ; preds = %954
  call void @_ZdaPv(ptr noundef nonnull %957) #12
  br label %960

960:                                              ; preds = %954, %959
  call void @_ZdaPv(ptr noundef nonnull %54) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #10
  ret void
}

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

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

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

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


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