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

@_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
@.str.425 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.426 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.427 = external hidden unnamed_addr constant [41 x i8], align 1

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

56:                                               ; preds = %2
  %57 = load ptr, ptr %5, align 8, !tbaa !5
  %58 = call noundef ptr @_ZN10tetgenmesh8point2shEPd(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %57)
  call void @_ZN10tetgenmesh7sdecodeEPPdRNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %58, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %59 = getelementptr inbounds %"class.tetgenmesh::face", ptr %9, i32 0, i32 1
  store i32 0, ptr %59, align 8, !tbaa !11
  %60 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %61 = load ptr, ptr %5, align 8, !tbaa !5
  %62 = icmp eq ptr %60, %61
  br i1 %62, label %63, label %65

63:                                               ; preds = %56
  call void @_ZN10tetgenmesh6senextERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh10spivotselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %10)
  %64 = getelementptr inbounds %"class.tetgenmesh::face", ptr %10, i32 0, i32 1
  store i32 0, ptr %64, align 8, !tbaa !11
  br label %68

65:                                               ; preds = %56
  %66 = 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)
  call void @_ZN10tetgenmesh7senext2ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh10spivotselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %67 = getelementptr inbounds %"class.tetgenmesh::face", ptr %9, i32 0, i32 1
  store i32 0, ptr %67, align 8, !tbaa !11
  br label %68

68:                                               ; preds = %65, %63
  %69 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %9)
  store ptr %69, ptr %11, align 8, !tbaa !5
  %70 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %10)
  store ptr %70, ptr %12, align 8, !tbaa !5
  %71 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 2
  %72 = load ptr, ptr %71, align 8, !tbaa !14
  %73 = getelementptr inbounds %class.tetgenbehavior, ptr %72, i32 0, i32 37
  %74 = load i32, ptr %73, align 4, !tbaa !19
  %75 = icmp sgt i32 %74, 2
  br i1 %75, label %76, label %84

76:                                               ; preds = %68
  %77 = load ptr, ptr %5, align 8, !tbaa !5
  %78 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %77)
  %79 = load ptr, ptr %11, align 8, !tbaa !5
  %80 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %79)
  %81 = load ptr, ptr %12, align 8, !tbaa !5
  %82 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %81)
  %83 = call i32 (ptr, ...) @printf(ptr noundef @.str.425, i32 noundef %78, i32 noundef %80, i32 noundef %82)
  br label %84

84:                                               ; preds = %76, %68
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %85 = getelementptr inbounds %"class.tetgenmesh::face", ptr %6, i32 0, i32 0
  %86 = load ptr, ptr %85, align 8, !tbaa !22
  %87 = icmp ne ptr %86, null
  br i1 %87, label %88, label %117

88:                                               ; preds = %84
  %89 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %90

90:                                               ; preds = %115, %88
  br label %91

91:                                               ; preds = %90
  %92 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %93 = load ptr, ptr %92, align 8, !tbaa !23
  %94 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %93, ptr noundef %8)
  %95 = load ptr, ptr %8, align 8, !tbaa !5
  %96 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %95, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %97 = load ptr, ptr %8, align 8, !tbaa !5
  %98 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %97)
  %99 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %100 = icmp ne ptr %98, %99
  br i1 %100, label %101, label %103

101:                                              ; preds = %91
  %102 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %102)
  br label %103

103:                                              ; preds = %101, %91
  call void @_ZN10tetgenmesh10spivotselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %104 = getelementptr inbounds %"class.tetgenmesh::face", ptr %7, i32 0, i32 0
  %105 = load ptr, ptr %104, align 8, !tbaa !22
  %106 = icmp eq ptr %105, null
  br i1 %106, label %107, label %108

107:                                              ; preds = %103
  br label %116

108:                                              ; preds = %103
  %109 = getelementptr inbounds %"class.tetgenmesh::face", ptr %7, i32 0, i32 0
  %110 = load ptr, ptr %109, align 8, !tbaa !22
  %111 = getelementptr inbounds %"class.tetgenmesh::face", ptr %6, i32 0, i32 0
  %112 = load ptr, ptr %111, align 8, !tbaa !22
  %113 = icmp eq ptr %110, %112
  br i1 %113, label %114, label %115

114:                                              ; preds = %108
  br label %116

115:                                              ; preds = %108
  br label %90, !llvm.loop !24

116:                                              ; preds = %114, %107
  br label %117

117:                                              ; preds = %116, %84
  %118 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %119 = load ptr, ptr %118, align 8, !tbaa !23
  %120 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %119, i32 0, i32 6
  %121 = load i64, ptr %120, align 8, !tbaa !26
  %122 = icmp slt i64 %121, 2
  br i1 %122, label %123, label %126

123:                                              ; preds = %117
  %124 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %125 = load ptr, ptr %124, align 8, !tbaa !23
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %125)
  store i32 0, ptr %3, align 4
  store i32 1, ptr %15, align 4
  br label %1547

126:                                              ; preds = %117
  br label %158

127:                                              ; preds = %2
  %128 = load i32, ptr %14, align 4, !tbaa !9
  %129 = icmp eq i32 %128, 7
  br i1 %129, label %130, label %156

130:                                              ; preds = %127
  %131 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 2
  %132 = load ptr, ptr %131, align 8, !tbaa !14
  %133 = getelementptr inbounds %class.tetgenbehavior, ptr %132, i32 0, i32 37
  %134 = load i32, ptr %133, align 4, !tbaa !19
  %135 = icmp sgt i32 %134, 2
  br i1 %135, label %136, label %140

136:                                              ; preds = %130
  %137 = load ptr, ptr %5, align 8, !tbaa !5
  %138 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %137)
  %139 = call i32 (ptr, ...) @printf(ptr noundef @.str.426, i32 noundef %138)
  br label %140

140:                                              ; preds = %136, %130
  %141 = load ptr, ptr %5, align 8, !tbaa !5
  %142 = call noundef ptr @_ZN10tetgenmesh8point2shEPd(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %141)
  call void @_ZN10tetgenmesh7sdecodeEPPdRNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %142, ptr noundef nonnull align 8 dereferenceable(12) %6)
  store i32 0, ptr %13, align 4, !tbaa !28
  br label %143

143:                                              ; preds = %152, %140
  %144 = load i32, ptr %13, align 4, !tbaa !28
  %145 = icmp slt i32 %144, 2
  br i1 %145, label %146, label %155

146:                                              ; preds = %143
  %147 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %148 = load ptr, ptr %147, align 8, !tbaa !23
  %149 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %148, ptr noundef %8)
  %150 = load ptr, ptr %8, align 8, !tbaa !5
  %151 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %150, ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %152

152:                                              ; preds = %146
  %153 = load i32, ptr %13, align 4, !tbaa !28
  %154 = add nsw i32 %153, 1
  store i32 %154, ptr %13, align 4, !tbaa !28
  br label %143, !llvm.loop !29

155:                                              ; preds = %143
  br label %157

156:                                              ; preds = %127
  store i32 0, ptr %3, align 4
  store i32 1, ptr %15, align 4
  br label %1547

157:                                              ; preds = %155
  br label %158

158:                                              ; preds = %157, %126
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #11
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %16)
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #11
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %17)
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #11
  call void @llvm.memset.p0.i64(ptr align 16 %27, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %28) #11
  call void @llvm.memset.p0.i64(ptr align 16 %28, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #11
  call void @llvm.memset.p0.i64(ptr align 16 %29, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #11
  %159 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %160 = load ptr, ptr %159, align 8, !tbaa !23
  %161 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %160, i32 0, i32 6
  %162 = load i64, ptr %161, align 8, !tbaa !26
  %163 = trunc i64 %162 to i32
  store i32 %163, ptr %37, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #11
  %164 = load i32, ptr %37, align 4, !tbaa !28
  %165 = sext i32 %164 to i64
  %166 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %165, i64 8)
  %167 = extractvalue { i64, i1 } %166, 1
  %168 = extractvalue { i64, i1 } %166, 0
  %169 = select i1 %167, i64 -1, i64 %168
  %170 = call noalias noundef nonnull ptr @_Znam(i64 noundef %169) #12
  store ptr %170, ptr %38, align 8, !tbaa !5
  store i32 0, ptr %13, align 4, !tbaa !28
  br label %171

171:                                              ; preds = %180, %158
  %172 = load i32, ptr %13, align 4, !tbaa !28
  %173 = load i32, ptr %37, align 4, !tbaa !28
  %174 = icmp slt i32 %172, %173
  br i1 %174, label %175, label %183

175:                                              ; preds = %171
  %176 = load ptr, ptr %38, align 8, !tbaa !5
  %177 = load i32, ptr %13, align 4, !tbaa !28
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds ptr, ptr %176, i64 %178
  store ptr null, ptr %179, align 8, !tbaa !5
  br label %180

180:                                              ; preds = %175
  %181 = load i32, ptr %13, align 4, !tbaa !28
  %182 = add nsw i32 %181, 1
  store i32 %182, ptr %13, align 4, !tbaa !28
  br label %171, !llvm.loop !30

183:                                              ; preds = %171
  store i32 0, ptr %13, align 4, !tbaa !28
  br label %184

184:                                              ; preds = %709, %183
  %185 = load i32, ptr %13, align 4, !tbaa !28
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %188 = load ptr, ptr %187, align 8, !tbaa !23
  %189 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %188, i32 0, i32 6
  %190 = load i64, ptr %189, align 8, !tbaa !26
  %191 = icmp slt i64 %186, %190
  br i1 %191, label %192, label %712

192:                                              ; preds = %184
  %193 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %194 = load ptr, ptr %193, align 8, !tbaa !23
  %195 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %194, i32 0, i32 5
  %196 = load ptr, ptr %195, align 8, !tbaa !31
  %197 = load i32, ptr %13, align 4, !tbaa !28
  %198 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %199 = load ptr, ptr %198, align 8, !tbaa !23
  %200 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %199, i32 0, i32 2
  %201 = load i32, ptr %200, align 8, !tbaa !32
  %202 = ashr i32 %197, %201
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds ptr, ptr %196, i64 %203
  %205 = load ptr, ptr %204, align 8, !tbaa !5
  %206 = load i32, ptr %13, align 4, !tbaa !28
  %207 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %208 = load ptr, ptr %207, align 8, !tbaa !23
  %209 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %208, i32 0, i32 3
  %210 = load i32, ptr %209, align 4, !tbaa !33
  %211 = and i32 %206, %210
  %212 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %213 = load ptr, ptr %212, align 8, !tbaa !23
  %214 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %213, i32 0, i32 0
  %215 = load i32, ptr %214, align 8, !tbaa !34
  %216 = mul nsw i32 %211, %215
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds i8, ptr %205, i64 %217
  store ptr %218, ptr %8, align 8, !tbaa !5
  %219 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %219, ptr noundef nonnull align 8 dereferenceable(12) %16)
  %220 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %16)
  br i1 %220, label %221, label %222

221:                                              ; preds = %192
  br label %709

222:                                              ; preds = %192
  %223 = load ptr, ptr %5, align 8, !tbaa !5
  %224 = call noundef ptr @_ZN10tetgenmesh6encodeERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %16)
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %223, ptr noundef %224)
  %225 = load ptr, ptr %5, align 8, !tbaa !5
  %226 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %227 = load ptr, ptr %226, align 8, !tbaa !35
  %228 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 24
  %229 = load ptr, ptr %228, align 8, !tbaa !36
  %230 = call noundef i32 @_ZN10tetgenmesh13getvertexstarEiPdPNS_9arraypoolES2_S2_(ptr noundef nonnull align 8 dereferenceable(1536) %51, i32 noundef 0, ptr noundef %225, ptr noundef %227, ptr noundef null, ptr noundef %229)
  %231 = load ptr, ptr %8, align 8, !tbaa !5
  %232 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %231)
  store ptr %232, ptr %19, align 8, !tbaa !5
  %233 = load ptr, ptr %8, align 8, !tbaa !5
  %234 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %233)
  store ptr %234, ptr %20, align 8, !tbaa !5
  %235 = load ptr, ptr %8, align 8, !tbaa !5
  %236 = call noundef ptr @_ZN10tetgenmesh5sapexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %235)
  store ptr %236, ptr %21, align 8, !tbaa !5
  %237 = load ptr, ptr %19, align 8, !tbaa !5
  %238 = load ptr, ptr %20, align 8, !tbaa !5
  %239 = load ptr, ptr %21, align 8, !tbaa !5
  %240 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 0
  call void @_ZN10tetgenmesh10facenormalEPdS0_S0_S0_iS0_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %237, ptr noundef %238, ptr noundef %239, ptr noundef %240, i32 noundef 1, ptr noundef null)
  %241 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 0
  %242 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 0
  %243 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %241, ptr noundef %242)
  %244 = call double @sqrt(double noundef %243) #11
  store double %244, ptr %25, align 8, !tbaa !37
  %245 = load double, ptr %25, align 8, !tbaa !37
  %246 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 0
  %247 = load double, ptr %246, align 16, !tbaa !37
  %248 = fdiv double %247, %245
  store double %248, ptr %246, align 16, !tbaa !37
  %249 = load double, ptr %25, align 8, !tbaa !37
  %250 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 1
  %251 = load double, ptr %250, align 8, !tbaa !37
  %252 = fdiv double %251, %249
  store double %252, ptr %250, align 8, !tbaa !37
  %253 = load double, ptr %25, align 8, !tbaa !37
  %254 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 2
  %255 = load double, ptr %254, align 16, !tbaa !37
  %256 = fdiv double %255, %253
  store double %256, ptr %254, align 16, !tbaa !37
  %257 = load i32, ptr %14, align 4, !tbaa !9
  %258 = icmp eq i32 %257, 6
  br i1 %258, label %259, label %335

259:                                              ; preds = %222
  %260 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %261 = load ptr, ptr %260, align 8, !tbaa !23
  %262 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %261, i32 0, i32 5
  %263 = load ptr, ptr %262, align 8, !tbaa !31
  %264 = load i32, ptr %13, align 4, !tbaa !28
  %265 = add nsw i32 %264, 1
  %266 = load i32, ptr %37, align 4, !tbaa !28
  %267 = srem i32 %265, %266
  %268 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %269 = load ptr, ptr %268, align 8, !tbaa !23
  %270 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %269, i32 0, i32 2
  %271 = load i32, ptr %270, align 8, !tbaa !32
  %272 = ashr i32 %267, %271
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds ptr, ptr %263, i64 %273
  %275 = load ptr, ptr %274, align 8, !tbaa !5
  %276 = load i32, ptr %13, align 4, !tbaa !28
  %277 = add nsw i32 %276, 1
  %278 = load i32, ptr %37, align 4, !tbaa !28
  %279 = srem i32 %277, %278
  %280 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %281 = load ptr, ptr %280, align 8, !tbaa !23
  %282 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %281, i32 0, i32 3
  %283 = load i32, ptr %282, align 4, !tbaa !33
  %284 = and i32 %279, %283
  %285 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %286 = load ptr, ptr %285, align 8, !tbaa !23
  %287 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %286, i32 0, i32 0
  %288 = load i32, ptr %287, align 8, !tbaa !34
  %289 = mul nsw i32 %284, %288
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds i8, ptr %275, i64 %290
  store ptr %291, ptr %8, align 8, !tbaa !5
  %292 = load ptr, ptr %8, align 8, !tbaa !5
  %293 = call noundef ptr @_ZN10tetgenmesh5sapexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %292)
  store ptr %293, ptr %22, align 8, !tbaa !5
  %294 = load ptr, ptr %20, align 8, !tbaa !5
  %295 = load ptr, ptr %19, align 8, !tbaa !5
  %296 = load ptr, ptr %22, align 8, !tbaa !5
  %297 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 0
  call void @_ZN10tetgenmesh10facenormalEPdS0_S0_S0_iS0_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %294, ptr noundef %295, ptr noundef %296, ptr noundef %297, i32 noundef 1, ptr noundef null)
  %298 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 0
  %299 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 0
  %300 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %298, ptr noundef %299)
  %301 = call double @sqrt(double noundef %300) #11
  store double %301, ptr %25, align 8, !tbaa !37
  %302 = load double, ptr %25, align 8, !tbaa !37
  %303 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 0
  %304 = load double, ptr %303, align 16, !tbaa !37
  %305 = fdiv double %304, %302
  store double %305, ptr %303, align 16, !tbaa !37
  %306 = load double, ptr %25, align 8, !tbaa !37
  %307 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 1
  %308 = load double, ptr %307, align 8, !tbaa !37
  %309 = fdiv double %308, %306
  store double %309, ptr %307, align 8, !tbaa !37
  %310 = load double, ptr %25, align 8, !tbaa !37
  %311 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 2
  %312 = load double, ptr %311, align 16, !tbaa !37
  %313 = fdiv double %312, %310
  store double %313, ptr %311, align 16, !tbaa !37
  %314 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 0
  %315 = load double, ptr %314, align 16, !tbaa !37
  %316 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 0
  %317 = load double, ptr %316, align 16, !tbaa !37
  %318 = fadd double %315, %317
  %319 = fmul double 5.000000e-01, %318
  %320 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 0
  store double %319, ptr %320, align 16, !tbaa !37
  %321 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 1
  %322 = load double, ptr %321, align 8, !tbaa !37
  %323 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 1
  %324 = load double, ptr %323, align 8, !tbaa !37
  %325 = fadd double %322, %324
  %326 = fmul double 5.000000e-01, %325
  %327 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 1
  store double %326, ptr %327, align 8, !tbaa !37
  %328 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 2
  %329 = load double, ptr %328, align 16, !tbaa !37
  %330 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 2
  %331 = load double, ptr %330, align 16, !tbaa !37
  %332 = fadd double %329, %331
  %333 = fmul double 5.000000e-01, %332
  %334 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 2
  store double %333, ptr %334, align 16, !tbaa !37
  br label %335

335:                                              ; preds = %259, %222
  %336 = load ptr, ptr %19, align 8, !tbaa !5
  %337 = load ptr, ptr %20, align 8, !tbaa !5
  %338 = call noundef double @_ZN10tetgenmesh8distanceEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %336, ptr noundef %337)
  store double %338, ptr %25, align 8, !tbaa !37
  %339 = load ptr, ptr %5, align 8, !tbaa !5
  %340 = getelementptr inbounds double, ptr %339, i64 0
  %341 = load double, ptr %340, align 8, !tbaa !37
  %342 = load double, ptr %25, align 8, !tbaa !37
  %343 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 0
  %344 = load double, ptr %343, align 16, !tbaa !37
  %345 = call double @llvm.fmuladd.f64(double %342, double %344, double %341)
  %346 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 0
  store double %345, ptr %346, align 16, !tbaa !37
  %347 = load ptr, ptr %5, align 8, !tbaa !5
  %348 = getelementptr inbounds double, ptr %347, i64 1
  %349 = load double, ptr %348, align 8, !tbaa !37
  %350 = load double, ptr %25, align 8, !tbaa !37
  %351 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 1
  %352 = load double, ptr %351, align 8, !tbaa !37
  %353 = call double @llvm.fmuladd.f64(double %350, double %352, double %349)
  %354 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 1
  store double %353, ptr %354, align 8, !tbaa !37
  %355 = load ptr, ptr %5, align 8, !tbaa !5
  %356 = getelementptr inbounds double, ptr %355, i64 2
  %357 = load double, ptr %356, align 8, !tbaa !37
  %358 = load double, ptr %25, align 8, !tbaa !37
  %359 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 2
  %360 = load double, ptr %359, align 16, !tbaa !37
  %361 = call double @llvm.fmuladd.f64(double %358, double %360, double %357)
  %362 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 2
  store double %361, ptr %362, align 16, !tbaa !37
  store i32 0, ptr %35, align 4, !tbaa !28
  br label %363

363:                                              ; preds = %437, %335
  %364 = load i32, ptr %35, align 4, !tbaa !28
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %367 = load ptr, ptr %366, align 8, !tbaa !35
  %368 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %367, i32 0, i32 6
  %369 = load i64, ptr %368, align 8, !tbaa !26
  %370 = icmp slt i64 %365, %369
  br i1 %370, label %371, label %440

371:                                              ; preds = %363
  %372 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %373 = load ptr, ptr %372, align 8, !tbaa !35
  %374 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %373, i32 0, i32 5
  %375 = load ptr, ptr %374, align 8, !tbaa !31
  %376 = load i32, ptr %35, align 4, !tbaa !28
  %377 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %378 = load ptr, ptr %377, align 8, !tbaa !35
  %379 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %378, i32 0, i32 2
  %380 = load i32, ptr %379, align 8, !tbaa !32
  %381 = ashr i32 %376, %380
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds ptr, ptr %375, i64 %382
  %384 = load ptr, ptr %383, align 8, !tbaa !5
  %385 = load i32, ptr %35, align 4, !tbaa !28
  %386 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %387 = load ptr, ptr %386, align 8, !tbaa !35
  %388 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %387, i32 0, i32 3
  %389 = load i32, ptr %388, align 4, !tbaa !33
  %390 = and i32 %385, %389
  %391 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %392 = load ptr, ptr %391, align 8, !tbaa !35
  %393 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %392, i32 0, i32 0
  %394 = load i32, ptr %393, align 8, !tbaa !34
  %395 = mul nsw i32 %390, %394
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds i8, ptr %384, i64 %396
  store ptr %397, ptr %18, align 8, !tbaa !5
  %398 = load ptr, ptr %18, align 8, !tbaa !5
  %399 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %398)
  store ptr %399, ptr %19, align 8, !tbaa !5
  %400 = load ptr, ptr %18, align 8, !tbaa !5
  %401 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %400)
  store ptr %401, ptr %20, align 8, !tbaa !5
  %402 = load ptr, ptr %18, align 8, !tbaa !5
  %403 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %402)
  store ptr %403, ptr %21, align 8, !tbaa !5
  %404 = load ptr, ptr %5, align 8, !tbaa !5
  %405 = load ptr, ptr %19, align 8, !tbaa !5
  %406 = load ptr, ptr %20, align 8, !tbaa !5
  %407 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 0
  %408 = call noundef double @_Z8orient3dPdS_S_S_(ptr noundef %404, ptr noundef %405, ptr noundef %406, ptr noundef %407)
  store double %408, ptr %30, align 8, !tbaa !37
  %409 = load double, ptr %30, align 8, !tbaa !37
  %410 = fcmp oge double %409, 0.000000e+00
  br i1 %410, label %411, label %436

411:                                              ; preds = %371
  %412 = load ptr, ptr %5, align 8, !tbaa !5
  %413 = load ptr, ptr %20, align 8, !tbaa !5
  %414 = load ptr, ptr %21, align 8, !tbaa !5
  %415 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 0
  %416 = call noundef double @_Z8orient3dPdS_S_S_(ptr noundef %412, ptr noundef %413, ptr noundef %414, ptr noundef %415)
  store double %416, ptr %30, align 8, !tbaa !37
  %417 = load double, ptr %30, align 8, !tbaa !37
  %418 = fcmp oge double %417, 0.000000e+00
  br i1 %418, label %419, label %435

419:                                              ; preds = %411
  %420 = load ptr, ptr %5, align 8, !tbaa !5
  %421 = load ptr, ptr %21, align 8, !tbaa !5
  %422 = load ptr, ptr %19, align 8, !tbaa !5
  %423 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 0
  %424 = call noundef double @_Z8orient3dPdS_S_S_(ptr noundef %420, ptr noundef %421, ptr noundef %422, ptr noundef %423)
  store double %424, ptr %30, align 8, !tbaa !37
  %425 = load double, ptr %30, align 8, !tbaa !37
  %426 = fcmp oge double %425, 0.000000e+00
  br i1 %426, label %427, label %434

427:                                              ; preds = %419
  %428 = load ptr, ptr %19, align 8, !tbaa !5
  %429 = load ptr, ptr %20, align 8, !tbaa !5
  %430 = load ptr, ptr %21, align 8, !tbaa !5
  %431 = load ptr, ptr %5, align 8, !tbaa !5
  %432 = getelementptr inbounds [3 x double], ptr %24, i64 0, i64 0
  %433 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 0
  call void @_ZN10tetgenmesh12planelineintEPdS0_S0_S0_S0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %428, ptr noundef %429, ptr noundef %430, ptr noundef %431, ptr noundef %432, ptr noundef %433, ptr noundef %26)
  br label %440

434:                                              ; preds = %419
  br label %435

435:                                              ; preds = %434, %411
  br label %436

436:                                              ; preds = %435, %371
  br label %437

437:                                              ; preds = %436
  %438 = load i32, ptr %35, align 4, !tbaa !28
  %439 = add nsw i32 %438, 1
  store i32 %439, ptr %35, align 4, !tbaa !28
  br label %363, !llvm.loop !38

440:                                              ; preds = %427, %363
  store i32 0, ptr %35, align 4, !tbaa !28
  br label %441

441:                                              ; preds = %482, %440
  %442 = load i32, ptr %35, align 4, !tbaa !28
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 24
  %445 = load ptr, ptr %444, align 8, !tbaa !36
  %446 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %445, i32 0, i32 6
  %447 = load i64, ptr %446, align 8, !tbaa !26
  %448 = icmp slt i64 %443, %447
  br i1 %448, label %449, label %485

449:                                              ; preds = %441
  %450 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 24
  %451 = load ptr, ptr %450, align 8, !tbaa !36
  %452 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %451, i32 0, i32 5
  %453 = load ptr, ptr %452, align 8, !tbaa !31
  %454 = load i32, ptr %35, align 4, !tbaa !28
  %455 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 24
  %456 = load ptr, ptr %455, align 8, !tbaa !36
  %457 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %456, i32 0, i32 2
  %458 = load i32, ptr %457, align 8, !tbaa !32
  %459 = ashr i32 %454, %458
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds ptr, ptr %453, i64 %460
  %462 = load ptr, ptr %461, align 8, !tbaa !5
  %463 = load i32, ptr %35, align 4, !tbaa !28
  %464 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 24
  %465 = load ptr, ptr %464, align 8, !tbaa !36
  %466 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %465, i32 0, i32 3
  %467 = load i32, ptr %466, align 4, !tbaa !33
  %468 = and i32 %463, %467
  %469 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 24
  %470 = load ptr, ptr %469, align 8, !tbaa !36
  %471 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %470, i32 0, i32 0
  %472 = load i32, ptr %471, align 8, !tbaa !34
  %473 = mul nsw i32 %468, %472
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds i8, ptr %462, i64 %474
  store ptr %475, ptr %8, align 8, !tbaa !5
  %476 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %476, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %477 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %478 = load ptr, ptr %477, align 8, !tbaa !35
  %479 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %478, ptr noundef %18)
  %480 = load ptr, ptr %18, align 8, !tbaa !5
  %481 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %480, ptr noundef nonnull align 8 dereferenceable(12) %17)
  br label %482

482:                                              ; preds = %449
  %483 = load i32, ptr %35, align 4, !tbaa !28
  %484 = add nsw i32 %483, 1
  store i32 %484, ptr %35, align 4, !tbaa !28
  br label %441, !llvm.loop !39

485:                                              ; preds = %441
  store i32 0, ptr %34, align 4, !tbaa !28
  store i32 100, ptr %33, align 4, !tbaa !28
  %486 = load ptr, ptr %5, align 8, !tbaa !5
  %487 = getelementptr inbounds double, ptr %486, i64 0
  %488 = load double, ptr %487, align 8, !tbaa !37
  %489 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 0
  %490 = load double, ptr %489, align 16, !tbaa !37
  %491 = fsub double %488, %490
  %492 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 0
  store double %491, ptr %492, align 16, !tbaa !37
  %493 = load ptr, ptr %5, align 8, !tbaa !5
  %494 = getelementptr inbounds double, ptr %493, i64 1
  %495 = load double, ptr %494, align 8, !tbaa !37
  %496 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 1
  %497 = load double, ptr %496, align 8, !tbaa !37
  %498 = fsub double %495, %497
  %499 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 1
  store double %498, ptr %499, align 8, !tbaa !37
  %500 = load ptr, ptr %5, align 8, !tbaa !5
  %501 = getelementptr inbounds double, ptr %500, i64 2
  %502 = load double, ptr %501, align 8, !tbaa !37
  %503 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 2
  %504 = load double, ptr %503, align 16, !tbaa !37
  %505 = fsub double %502, %504
  %506 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 2
  store double %505, ptr %506, align 16, !tbaa !37
  store double -1.000000e+00, ptr %31, align 8, !tbaa !37
  br label %507

507:                                              ; preds = %663, %485
  %508 = load i32, ptr %34, align 4, !tbaa !28
  %509 = icmp slt i32 %508, 3
  br i1 %509, label %510, label %668

510:                                              ; preds = %507
  store i32 1, ptr %35, align 4, !tbaa !28
  br label %511

511:                                              ; preds = %656, %510
  %512 = load i32, ptr %35, align 4, !tbaa !28
  %513 = load i32, ptr %33, align 4, !tbaa !28
  %514 = sub nsw i32 %513, 1
  %515 = icmp slt i32 %512, %514
  br i1 %515, label %516, label %659

516:                                              ; preds = %511
  %517 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 0
  %518 = load double, ptr %517, align 16, !tbaa !37
  %519 = load i32, ptr %35, align 4, !tbaa !28
  %520 = sitofp i32 %519 to double
  %521 = load i32, ptr %33, align 4, !tbaa !28
  %522 = sitofp i32 %521 to double
  %523 = fdiv double %520, %522
  %524 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 0
  %525 = load double, ptr %524, align 16, !tbaa !37
  %526 = call double @llvm.fmuladd.f64(double %523, double %525, double %518)
  %527 = getelementptr inbounds [3 x double], ptr %28, i64 0, i64 0
  store double %526, ptr %527, align 16, !tbaa !37
  %528 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 1
  %529 = load double, ptr %528, align 8, !tbaa !37
  %530 = load i32, ptr %35, align 4, !tbaa !28
  %531 = sitofp i32 %530 to double
  %532 = load i32, ptr %33, align 4, !tbaa !28
  %533 = sitofp i32 %532 to double
  %534 = fdiv double %531, %533
  %535 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 1
  %536 = load double, ptr %535, align 8, !tbaa !37
  %537 = call double @llvm.fmuladd.f64(double %534, double %536, double %529)
  %538 = getelementptr inbounds [3 x double], ptr %28, i64 0, i64 1
  store double %537, ptr %538, align 8, !tbaa !37
  %539 = getelementptr inbounds [3 x double], ptr %27, i64 0, i64 2
  %540 = load double, ptr %539, align 16, !tbaa !37
  %541 = load i32, ptr %35, align 4, !tbaa !28
  %542 = sitofp i32 %541 to double
  %543 = load i32, ptr %33, align 4, !tbaa !28
  %544 = sitofp i32 %543 to double
  %545 = fdiv double %542, %544
  %546 = getelementptr inbounds [3 x double], ptr %23, i64 0, i64 2
  %547 = load double, ptr %546, align 16, !tbaa !37
  %548 = call double @llvm.fmuladd.f64(double %545, double %547, double %540)
  %549 = getelementptr inbounds [3 x double], ptr %28, i64 0, i64 2
  store double %548, ptr %549, align 16, !tbaa !37
  store double -1.000000e+00, ptr %32, align 8, !tbaa !37
  store i32 0, ptr %36, align 4, !tbaa !28
  br label %550

550:                                              ; preds = %612, %516
  %551 = load i32, ptr %36, align 4, !tbaa !28
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %554 = load ptr, ptr %553, align 8, !tbaa !35
  %555 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %554, i32 0, i32 6
  %556 = load i64, ptr %555, align 8, !tbaa !26
  %557 = icmp slt i64 %552, %556
  br i1 %557, label %558, label %615

558:                                              ; preds = %550
  %559 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %560 = load ptr, ptr %559, align 8, !tbaa !35
  %561 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %560, i32 0, i32 5
  %562 = load ptr, ptr %561, align 8, !tbaa !31
  %563 = load i32, ptr %36, align 4, !tbaa !28
  %564 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %565 = load ptr, ptr %564, align 8, !tbaa !35
  %566 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %565, i32 0, i32 2
  %567 = load i32, ptr %566, align 8, !tbaa !32
  %568 = ashr i32 %563, %567
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds ptr, ptr %562, i64 %569
  %571 = load ptr, ptr %570, align 8, !tbaa !5
  %572 = load i32, ptr %36, align 4, !tbaa !28
  %573 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %574 = load ptr, ptr %573, align 8, !tbaa !35
  %575 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %574, i32 0, i32 3
  %576 = load i32, ptr %575, align 4, !tbaa !33
  %577 = and i32 %572, %576
  %578 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %579 = load ptr, ptr %578, align 8, !tbaa !35
  %580 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %579, i32 0, i32 0
  %581 = load i32, ptr %580, align 8, !tbaa !34
  %582 = mul nsw i32 %577, %581
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds i8, ptr %571, i64 %583
  store ptr %584, ptr %18, align 8, !tbaa !5
  %585 = load ptr, ptr %18, align 8, !tbaa !5
  %586 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %585)
  store ptr %586, ptr %19, align 8, !tbaa !5
  %587 = load ptr, ptr %18, align 8, !tbaa !5
  %588 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %587)
  store ptr %588, ptr %20, align 8, !tbaa !5
  %589 = load ptr, ptr %18, align 8, !tbaa !5
  %590 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %589)
  store ptr %590, ptr %21, align 8, !tbaa !5
  %591 = load ptr, ptr %20, align 8, !tbaa !5
  %592 = load ptr, ptr %19, align 8, !tbaa !5
  %593 = load ptr, ptr %21, align 8, !tbaa !5
  %594 = getelementptr inbounds [3 x double], ptr %28, i64 0, i64 0
  %595 = call noundef double @_Z8orient3dPdS_S_S_(ptr noundef %591, ptr noundef %592, ptr noundef %593, ptr noundef %594)
  store double %595, ptr %30, align 8, !tbaa !37
  %596 = load double, ptr %30, align 8, !tbaa !37
  %597 = fcmp ole double %596, 0.000000e+00
  br i1 %597, label %598, label %599

598:                                              ; preds = %558
  br label %615

599:                                              ; preds = %558
  %600 = load double, ptr %32, align 8, !tbaa !37
  %601 = fcmp oeq double %600, -1.000000e+00
  br i1 %601, label %602, label %604

602:                                              ; preds = %599
  %603 = load double, ptr %30, align 8, !tbaa !37
  store double %603, ptr %32, align 8, !tbaa !37
  br label %611

604:                                              ; preds = %599
  %605 = load double, ptr %30, align 8, !tbaa !37
  %606 = load double, ptr %32, align 8, !tbaa !37
  %607 = fcmp olt double %605, %606
  br i1 %607, label %608, label %610

608:                                              ; preds = %604
  %609 = load double, ptr %30, align 8, !tbaa !37
  store double %609, ptr %32, align 8, !tbaa !37
  br label %610

610:                                              ; preds = %608, %604
  br label %611

611:                                              ; preds = %610, %602
  br label %612

612:                                              ; preds = %611
  %613 = load i32, ptr %36, align 4, !tbaa !28
  %614 = add nsw i32 %613, 1
  store i32 %614, ptr %36, align 4, !tbaa !28
  br label %550, !llvm.loop !40

615:                                              ; preds = %598, %550
  %616 = load i32, ptr %36, align 4, !tbaa !28
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %619 = load ptr, ptr %618, align 8, !tbaa !35
  %620 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %619, i32 0, i32 6
  %621 = load i64, ptr %620, align 8, !tbaa !26
  %622 = icmp eq i64 %617, %621
  br i1 %622, label %623, label %655

623:                                              ; preds = %615
  %624 = load double, ptr %31, align 8, !tbaa !37
  %625 = fcmp oeq double %624, -1.000000e+00
  br i1 %625, label %626, label %637

626:                                              ; preds = %623
  %627 = getelementptr inbounds [3 x double], ptr %28, i64 0, i64 0
  %628 = load double, ptr %627, align 16, !tbaa !37
  %629 = getelementptr inbounds [3 x double], ptr %29, i64 0, i64 0
  store double %628, ptr %629, align 16, !tbaa !37
  %630 = getelementptr inbounds [3 x double], ptr %28, i64 0, i64 1
  %631 = load double, ptr %630, align 8, !tbaa !37
  %632 = getelementptr inbounds [3 x double], ptr %29, i64 0, i64 1
  store double %631, ptr %632, align 8, !tbaa !37
  %633 = getelementptr inbounds [3 x double], ptr %28, i64 0, i64 2
  %634 = load double, ptr %633, align 16, !tbaa !37
  %635 = getelementptr inbounds [3 x double], ptr %29, i64 0, i64 2
  store double %634, ptr %635, align 16, !tbaa !37
  %636 = load double, ptr %32, align 8, !tbaa !37
  store double %636, ptr %31, align 8, !tbaa !37
  br label %654

637:                                              ; preds = %623
  %638 = load double, ptr %31, align 8, !tbaa !37
  %639 = load double, ptr %32, align 8, !tbaa !37
  %640 = fcmp olt double %638, %639
  br i1 %640, label %641, label %652

641:                                              ; preds = %637
  %642 = getelementptr inbounds [3 x double], ptr %28, i64 0, i64 0
  %643 = load double, ptr %642, align 16, !tbaa !37
  %644 = getelementptr inbounds [3 x double], ptr %29, i64 0, i64 0
  store double %643, ptr %644, align 16, !tbaa !37
  %645 = getelementptr inbounds [3 x double], ptr %28, i64 0, i64 1
  %646 = load double, ptr %645, align 8, !tbaa !37
  %647 = getelementptr inbounds [3 x double], ptr %29, i64 0, i64 1
  store double %646, ptr %647, align 8, !tbaa !37
  %648 = getelementptr inbounds [3 x double], ptr %28, i64 0, i64 2
  %649 = load double, ptr %648, align 16, !tbaa !37
  %650 = getelementptr inbounds [3 x double], ptr %29, i64 0, i64 2
  store double %649, ptr %650, align 16, !tbaa !37
  %651 = load double, ptr %32, align 8, !tbaa !37
  store double %651, ptr %31, align 8, !tbaa !37
  br label %653

652:                                              ; preds = %637
  br label %659

653:                                              ; preds = %641
  br label %654

654:                                              ; preds = %653, %626
  br label %655

655:                                              ; preds = %654, %615
  br label %656

656:                                              ; preds = %655
  %657 = load i32, ptr %35, align 4, !tbaa !28
  %658 = add nsw i32 %657, 1
  store i32 %658, ptr %35, align 4, !tbaa !28
  br label %511, !llvm.loop !41

659:                                              ; preds = %652, %511
  %660 = load double, ptr %31, align 8, !tbaa !37
  %661 = fcmp ogt double %660, 0.000000e+00
  br i1 %661, label %662, label %663

662:                                              ; preds = %659
  br label %668

663:                                              ; preds = %659
  %664 = load i32, ptr %33, align 4, !tbaa !28
  %665 = mul nsw i32 %664, 10
  store i32 %665, ptr %33, align 4, !tbaa !28
  %666 = load i32, ptr %34, align 4, !tbaa !28
  %667 = add nsw i32 %666, 1
  store i32 %667, ptr %34, align 4, !tbaa !28
  br label %507, !llvm.loop !42

668:                                              ; preds = %662, %507
  %669 = load double, ptr %31, align 8, !tbaa !37
  %670 = fcmp oeq double %669, -1.000000e+00
  br i1 %670, label %671, label %676

671:                                              ; preds = %668
  %672 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %673 = load ptr, ptr %672, align 8, !tbaa !35
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %673)
  %674 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 24
  %675 = load ptr, ptr %674, align 8, !tbaa !36
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %675)
  br label %712

676:                                              ; preds = %668
  %677 = load ptr, ptr %38, align 8, !tbaa !5
  %678 = load i32, ptr %13, align 4, !tbaa !28
  %679 = sext i32 %678 to i64
  %680 = getelementptr inbounds ptr, ptr %677, i64 %679
  call void @_ZN10tetgenmesh9makepointEPPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %680, i32 noundef 8)
  %681 = getelementptr inbounds [3 x double], ptr %29, i64 0, i64 0
  %682 = load double, ptr %681, align 16, !tbaa !37
  %683 = load ptr, ptr %38, align 8, !tbaa !5
  %684 = load i32, ptr %13, align 4, !tbaa !28
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds ptr, ptr %683, i64 %685
  %687 = load ptr, ptr %686, align 8, !tbaa !5
  %688 = getelementptr inbounds double, ptr %687, i64 0
  store double %682, ptr %688, align 8, !tbaa !37
  %689 = getelementptr inbounds [3 x double], ptr %29, i64 0, i64 1
  %690 = load double, ptr %689, align 8, !tbaa !37
  %691 = load ptr, ptr %38, align 8, !tbaa !5
  %692 = load i32, ptr %13, align 4, !tbaa !28
  %693 = sext i32 %692 to i64
  %694 = getelementptr inbounds ptr, ptr %691, i64 %693
  %695 = load ptr, ptr %694, align 8, !tbaa !5
  %696 = getelementptr inbounds double, ptr %695, i64 1
  store double %690, ptr %696, align 8, !tbaa !37
  %697 = getelementptr inbounds [3 x double], ptr %29, i64 0, i64 2
  %698 = load double, ptr %697, align 16, !tbaa !37
  %699 = load ptr, ptr %38, align 8, !tbaa !5
  %700 = load i32, ptr %13, align 4, !tbaa !28
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds ptr, ptr %699, i64 %701
  %703 = load ptr, ptr %702, align 8, !tbaa !5
  %704 = getelementptr inbounds double, ptr %703, i64 2
  store double %698, ptr %704, align 8, !tbaa !37
  %705 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %706 = load ptr, ptr %705, align 8, !tbaa !35
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %706)
  %707 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 24
  %708 = load ptr, ptr %707, align 8, !tbaa !36
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %708)
  br label %709

709:                                              ; preds = %676, %221
  %710 = load i32, ptr %13, align 4, !tbaa !28
  %711 = add nsw i32 %710, 1
  store i32 %711, ptr %13, align 4, !tbaa !28
  br label %184, !llvm.loop !43

712:                                              ; preds = %671, %184
  %713 = load i32, ptr %13, align 4, !tbaa !28
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %716 = load ptr, ptr %715, align 8, !tbaa !23
  %717 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %716, i32 0, i32 6
  %718 = load i64, ptr %717, align 8, !tbaa !26
  %719 = icmp slt i64 %714, %718
  br i1 %719, label %720, label %750

720:                                              ; preds = %712
  br label %721

721:                                              ; preds = %740, %720
  %722 = load i32, ptr %13, align 4, !tbaa !28
  %723 = icmp sgt i32 %722, 0
  br i1 %723, label %724, label %743

724:                                              ; preds = %721
  %725 = load ptr, ptr %38, align 8, !tbaa !5
  %726 = load i32, ptr %13, align 4, !tbaa !28
  %727 = sub nsw i32 %726, 1
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds ptr, ptr %725, i64 %728
  %730 = load ptr, ptr %729, align 8, !tbaa !5
  %731 = icmp ne ptr %730, null
  br i1 %731, label %732, label %739

732:                                              ; preds = %724
  %733 = load ptr, ptr %38, align 8, !tbaa !5
  %734 = load i32, ptr %13, align 4, !tbaa !28
  %735 = sub nsw i32 %734, 1
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds ptr, ptr %733, i64 %736
  %738 = load ptr, ptr %737, align 8, !tbaa !5
  call void @_ZN10tetgenmesh12pointdeallocEPd(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %738)
  br label %739

739:                                              ; preds = %732, %724
  br label %740

740:                                              ; preds = %739
  %741 = load i32, ptr %13, align 4, !tbaa !28
  %742 = add nsw i32 %741, -1
  store i32 %742, ptr %13, align 4, !tbaa !28
  br label %721, !llvm.loop !44

743:                                              ; preds = %721
  %744 = load ptr, ptr %38, align 8, !tbaa !5
  %745 = icmp eq ptr %744, null
  br i1 %745, label %747, label %746

746:                                              ; preds = %743
  call void @_ZdaPv(ptr noundef %744) #13
  br label %747

747:                                              ; preds = %746, %743
  %748 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %749 = load ptr, ptr %748, align 8, !tbaa !23
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %749)
  store i32 0, ptr %3, align 4
  store i32 1, ptr %15, align 4
  br label %1546

750:                                              ; preds = %712
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #11
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %39)
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #11
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %40)
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #11
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %41)
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #11
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %42)
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #11
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %43)
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #11
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %45)
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #11
  store i32 0, ptr %46, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #11
  %751 = load i32, ptr %14, align 4, !tbaa !9
  %752 = icmp eq i32 %751, 6
  br i1 %752, label %753, label %818

753:                                              ; preds = %750
  call void @_ZN10tetgenmesh9sstpivot1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %754 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %41, ptr noundef nonnull align 8 dereferenceable(12) %17)
  br label %755

755:                                              ; preds = %784, %753
  br label %756

756:                                              ; preds = %755
  call void @_ZN10tetgenmesh12tssdissolve1ERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %41)
  %757 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %41, i32 0, i32 1
  %758 = load i32, ptr %757, align 8, !tbaa !45
  store i32 %758, ptr %47, align 4, !tbaa !28
  %759 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %41, i32 0, i32 0
  %760 = load ptr, ptr %759, align 8, !tbaa !46
  %761 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %41, i32 0, i32 1
  %762 = load i32, ptr %761, align 8, !tbaa !45
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %763
  %765 = load i32, ptr %764, align 4, !tbaa !28
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds ptr, ptr %760, i64 %766
  %768 = load ptr, ptr %767, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %768, ptr noundef nonnull align 8 dereferenceable(12) %41)
  %769 = load i32, ptr %47, align 4, !tbaa !28
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %770
  %772 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %41, i32 0, i32 1
  %773 = load i32, ptr %772, align 8, !tbaa !45
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds [12 x i32], ptr %771, i64 0, i64 %774
  %776 = load i32, ptr %775, align 4, !tbaa !28
  %777 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %41, i32 0, i32 1
  store i32 %776, ptr %777, align 8, !tbaa !45
  %778 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %41, i32 0, i32 0
  %779 = load ptr, ptr %778, align 8, !tbaa !46
  %780 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %17, i32 0, i32 0
  %781 = load ptr, ptr %780, align 8, !tbaa !46
  %782 = icmp eq ptr %779, %781
  br i1 %782, label %783, label %784

783:                                              ; preds = %756
  br label %785

784:                                              ; preds = %756
  br label %755, !llvm.loop !47

785:                                              ; preds = %783
  call void @_ZN10tetgenmesh9sstpivot1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %786 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %41, ptr noundef nonnull align 8 dereferenceable(12) %17)
  br label %787

787:                                              ; preds = %816, %785
  br label %788

788:                                              ; preds = %787
  call void @_ZN10tetgenmesh12tssdissolve1ERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %41)
  %789 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %41, i32 0, i32 1
  %790 = load i32, ptr %789, align 8, !tbaa !45
  store i32 %790, ptr %47, align 4, !tbaa !28
  %791 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %41, i32 0, i32 0
  %792 = load ptr, ptr %791, align 8, !tbaa !46
  %793 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %41, i32 0, i32 1
  %794 = load i32, ptr %793, align 8, !tbaa !45
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %795
  %797 = load i32, ptr %796, align 4, !tbaa !28
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds ptr, ptr %792, i64 %798
  %800 = load ptr, ptr %799, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %800, ptr noundef nonnull align 8 dereferenceable(12) %41)
  %801 = load i32, ptr %47, align 4, !tbaa !28
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %802
  %804 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %41, i32 0, i32 1
  %805 = load i32, ptr %804, align 8, !tbaa !45
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds [12 x i32], ptr %803, i64 0, i64 %806
  %808 = load i32, ptr %807, align 4, !tbaa !28
  %809 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %41, i32 0, i32 1
  store i32 %808, ptr %809, align 8, !tbaa !45
  %810 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %41, i32 0, i32 0
  %811 = load ptr, ptr %810, align 8, !tbaa !46
  %812 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %17, i32 0, i32 0
  %813 = load ptr, ptr %812, align 8, !tbaa !46
  %814 = icmp eq ptr %811, %813
  br i1 %814, label %815, label %816

815:                                              ; preds = %788
  br label %817

816:                                              ; preds = %788
  br label %787, !llvm.loop !48

817:                                              ; preds = %815
  br label %818

818:                                              ; preds = %817, %750
  store i32 0, ptr %13, align 4, !tbaa !28
  br label %819

819:                                              ; preds = %998, %818
  %820 = load i32, ptr %13, align 4, !tbaa !28
  %821 = sext i32 %820 to i64
  %822 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %823 = load ptr, ptr %822, align 8, !tbaa !23
  %824 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %823, i32 0, i32 6
  %825 = load i64, ptr %824, align 8, !tbaa !26
  %826 = icmp slt i64 %821, %825
  br i1 %826, label %827, label %1001

827:                                              ; preds = %819
  %828 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %829 = load ptr, ptr %828, align 8, !tbaa !23
  %830 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %829, i32 0, i32 5
  %831 = load ptr, ptr %830, align 8, !tbaa !31
  %832 = load i32, ptr %13, align 4, !tbaa !28
  %833 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %834 = load ptr, ptr %833, align 8, !tbaa !23
  %835 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %834, i32 0, i32 2
  %836 = load i32, ptr %835, align 8, !tbaa !32
  %837 = ashr i32 %832, %836
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds ptr, ptr %831, i64 %838
  %840 = load ptr, ptr %839, align 8, !tbaa !5
  %841 = load i32, ptr %13, align 4, !tbaa !28
  %842 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %843 = load ptr, ptr %842, align 8, !tbaa !23
  %844 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %843, i32 0, i32 3
  %845 = load i32, ptr %844, align 4, !tbaa !33
  %846 = and i32 %841, %845
  %847 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %848 = load ptr, ptr %847, align 8, !tbaa !23
  %849 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %848, i32 0, i32 0
  %850 = load i32, ptr %849, align 8, !tbaa !34
  %851 = mul nsw i32 %846, %850
  %852 = sext i32 %851 to i64
  %853 = getelementptr inbounds i8, ptr %840, i64 %852
  store ptr %853, ptr %8, align 8, !tbaa !5
  %854 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %854, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %855 = load ptr, ptr %5, align 8, !tbaa !5
  %856 = call noundef ptr @_ZN10tetgenmesh6encodeERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %17)
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %855, ptr noundef %856)
  %857 = load ptr, ptr %5, align 8, !tbaa !5
  %858 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %859 = load ptr, ptr %858, align 8, !tbaa !35
  %860 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 24
  %861 = load ptr, ptr %860, align 8, !tbaa !36
  %862 = call noundef i32 @_ZN10tetgenmesh13getvertexstarEiPdPNS_9arraypoolES2_S2_(ptr noundef nonnull align 8 dereferenceable(1536) %51, i32 noundef 0, ptr noundef %857, ptr noundef %859, ptr noundef null, ptr noundef %861)
  %863 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %17)
  br i1 %863, label %953, label %864

864:                                              ; preds = %827
  store i32 0, ptr %35, align 4, !tbaa !28
  br label %865

865:                                              ; preds = %906, %864
  %866 = load i32, ptr %35, align 4, !tbaa !28
  %867 = sext i32 %866 to i64
  %868 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %869 = load ptr, ptr %868, align 8, !tbaa !35
  %870 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %869, i32 0, i32 6
  %871 = load i64, ptr %870, align 8, !tbaa !26
  %872 = icmp slt i64 %867, %871
  br i1 %872, label %873, label %909

873:                                              ; preds = %865
  %874 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %875 = load ptr, ptr %874, align 8, !tbaa !35
  %876 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %875, i32 0, i32 5
  %877 = load ptr, ptr %876, align 8, !tbaa !31
  %878 = load i32, ptr %35, align 4, !tbaa !28
  %879 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %880 = load ptr, ptr %879, align 8, !tbaa !35
  %881 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %880, i32 0, i32 2
  %882 = load i32, ptr %881, align 8, !tbaa !32
  %883 = ashr i32 %878, %882
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds ptr, ptr %877, i64 %884
  %886 = load ptr, ptr %885, align 8, !tbaa !5
  %887 = load i32, ptr %35, align 4, !tbaa !28
  %888 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %889 = load ptr, ptr %888, align 8, !tbaa !35
  %890 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %889, i32 0, i32 3
  %891 = load i32, ptr %890, align 4, !tbaa !33
  %892 = and i32 %887, %891
  %893 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %894 = load ptr, ptr %893, align 8, !tbaa !35
  %895 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %894, i32 0, i32 0
  %896 = load i32, ptr %895, align 8, !tbaa !34
  %897 = mul nsw i32 %892, %896
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds i8, ptr %886, i64 %898
  store ptr %899, ptr %18, align 8, !tbaa !5
  %900 = load ptr, ptr %18, align 8, !tbaa !5
  %901 = load ptr, ptr %38, align 8, !tbaa !5
  %902 = load i32, ptr %13, align 4, !tbaa !28
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds ptr, ptr %901, i64 %903
  %905 = load ptr, ptr %904, align 8, !tbaa !5
  call void @_ZN10tetgenmesh7setoppoERNS_7trifaceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %900, ptr noundef %905)
  br label %906

906:                                              ; preds = %873
  %907 = load i32, ptr %35, align 4, !tbaa !28
  %908 = add nsw i32 %907, 1
  store i32 %908, ptr %35, align 4, !tbaa !28
  br label %865, !llvm.loop !49

909:                                              ; preds = %865
  %910 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %911 = load ptr, ptr %910, align 8, !tbaa !35
  %912 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %911, i32 0, i32 5
  %913 = load ptr, ptr %912, align 8, !tbaa !31
  %914 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %915 = load ptr, ptr %914, align 8, !tbaa !35
  %916 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %915, i32 0, i32 2
  %917 = load i32, ptr %916, align 8, !tbaa !32
  %918 = ashr i32 0, %917
  %919 = sext i32 %918 to i64
  %920 = getelementptr inbounds ptr, ptr %913, i64 %919
  %921 = load ptr, ptr %920, align 8, !tbaa !5
  %922 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %923 = load ptr, ptr %922, align 8, !tbaa !35
  %924 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %923, i32 0, i32 3
  %925 = load i32, ptr %924, align 4, !tbaa !33
  %926 = and i32 0, %925
  %927 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %928 = load ptr, ptr %927, align 8, !tbaa !35
  %929 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %928, i32 0, i32 0
  %930 = load i32, ptr %929, align 8, !tbaa !34
  %931 = mul nsw i32 %926, %930
  %932 = sext i32 %931 to i64
  %933 = getelementptr inbounds i8, ptr %921, i64 %932
  store ptr %933, ptr %18, align 8, !tbaa !5
  %934 = load ptr, ptr %38, align 8, !tbaa !5
  %935 = load i32, ptr %13, align 4, !tbaa !28
  %936 = sext i32 %935 to i64
  %937 = getelementptr inbounds ptr, ptr %934, i64 %936
  %938 = load ptr, ptr %937, align 8, !tbaa !5
  %939 = load ptr, ptr %18, align 8, !tbaa !5
  %940 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %939, i32 0, i32 0
  %941 = load ptr, ptr %940, align 8, !tbaa !46
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %938, ptr noundef %941)
  %942 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 85
  %943 = load i64, ptr %942, align 8, !tbaa !50
  %944 = add nsw i64 %943, 1
  store i64 %944, ptr %942, align 8, !tbaa !50
  %945 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 79
  %946 = load i64, ptr %945, align 8, !tbaa !51
  %947 = icmp sgt i64 %946, 0
  br i1 %947, label %948, label %952

948:                                              ; preds = %909
  %949 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 79
  %950 = load i64, ptr %949, align 8, !tbaa !51
  %951 = add nsw i64 %950, -1
  store i64 %951, ptr %949, align 8, !tbaa !51
  br label %952

952:                                              ; preds = %948, %909
  br label %953

953:                                              ; preds = %952, %827
  store i32 0, ptr %35, align 4, !tbaa !28
  br label %954

954:                                              ; preds = %990, %953
  %955 = load i32, ptr %35, align 4, !tbaa !28
  %956 = sext i32 %955 to i64
  %957 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 24
  %958 = load ptr, ptr %957, align 8, !tbaa !36
  %959 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %958, i32 0, i32 6
  %960 = load i64, ptr %959, align 8, !tbaa !26
  %961 = icmp slt i64 %956, %960
  br i1 %961, label %962, label %993

962:                                              ; preds = %954
  %963 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 24
  %964 = load ptr, ptr %963, align 8, !tbaa !36
  %965 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %964, i32 0, i32 5
  %966 = load ptr, ptr %965, align 8, !tbaa !31
  %967 = load i32, ptr %35, align 4, !tbaa !28
  %968 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 24
  %969 = load ptr, ptr %968, align 8, !tbaa !36
  %970 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %969, i32 0, i32 2
  %971 = load i32, ptr %970, align 8, !tbaa !32
  %972 = ashr i32 %967, %971
  %973 = sext i32 %972 to i64
  %974 = getelementptr inbounds ptr, ptr %966, i64 %973
  %975 = load ptr, ptr %974, align 8, !tbaa !5
  %976 = load i32, ptr %35, align 4, !tbaa !28
  %977 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 24
  %978 = load ptr, ptr %977, align 8, !tbaa !36
  %979 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %978, i32 0, i32 3
  %980 = load i32, ptr %979, align 4, !tbaa !33
  %981 = and i32 %976, %980
  %982 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 24
  %983 = load ptr, ptr %982, align 8, !tbaa !36
  %984 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %983, i32 0, i32 0
  %985 = load i32, ptr %984, align 8, !tbaa !34
  %986 = mul nsw i32 %981, %985
  %987 = sext i32 %986 to i64
  %988 = getelementptr inbounds i8, ptr %975, i64 %987
  store ptr %988, ptr %8, align 8, !tbaa !5
  %989 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %989, ptr noundef nonnull align 8 dereferenceable(12) %17)
  call void @_ZN10tetgenmesh8dissolveERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %17)
  call void @_ZN10tetgenmesh10tsdissolveERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %17)
  br label %990

990:                                              ; preds = %962
  %991 = load i32, ptr %35, align 4, !tbaa !28
  %992 = add nsw i32 %991, 1
  store i32 %992, ptr %35, align 4, !tbaa !28
  br label %954, !llvm.loop !52

993:                                              ; preds = %954
  %994 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 16
  %995 = load ptr, ptr %994, align 8, !tbaa !35
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %995)
  %996 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 24
  %997 = load ptr, ptr %996, align 8, !tbaa !36
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %997)
  br label %998

998:                                              ; preds = %993
  %999 = load i32, ptr %13, align 4, !tbaa !28
  %1000 = add nsw i32 %999, 1
  store i32 %1000, ptr %13, align 4, !tbaa !28
  br label %819, !llvm.loop !53

1001:                                             ; preds = %819
  %1002 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 26
  %1003 = load ptr, ptr %1002, align 8, !tbaa !23
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1003)
  %1004 = load i32, ptr %14, align 4, !tbaa !9
  %1005 = icmp eq i32 %1004, 6
  br i1 %1005, label %1006, label %1007

1006:                                             ; preds = %1001
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %6)
  store ptr %10, ptr %44, align 8, !tbaa !5
  br label %1019

1007:                                             ; preds = %1001
  %1008 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %1009 = load ptr, ptr %5, align 8, !tbaa !5
  %1010 = icmp eq ptr %1008, %1009
  br i1 %1010, label %1011, label %1012

1011:                                             ; preds = %1007
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %1018

1012:                                             ; preds = %1007
  %1013 = call noundef ptr @_ZN10tetgenmesh5sapexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %1014 = load ptr, ptr %5, align 8, !tbaa !5
  %1015 = icmp eq ptr %1013, %1014
  br i1 %1015, label %1016, label %1017

1016:                                             ; preds = %1012
  call void @_ZN10tetgenmesh11senext2selfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %1017

1017:                                             ; preds = %1016, %1012
  br label %1018

1018:                                             ; preds = %1017, %1011
  store ptr null, ptr %44, align 8, !tbaa !5
  br label %1019

1019:                                             ; preds = %1018, %1006
  %1020 = load ptr, ptr %5, align 8, !tbaa !5
  %1021 = load ptr, ptr %44, align 8, !tbaa !5
  %1022 = load i32, ptr %46, align 4, !tbaa !28
  %1023 = call noundef i32 @_ZN10tetgenmesh13sremovevertexEPdPNS_4faceES2_i(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %1020, ptr noundef %6, ptr noundef %1021, i32 noundef %1022)
  %1024 = load i32, ptr %14, align 4, !tbaa !9
  %1025 = icmp eq i32 %1024, 6
  br i1 %1025, label %1026, label %1028

1026:                                             ; preds = %1019
  %1027 = getelementptr inbounds %"class.tetgenmesh::face", ptr %10, i32 0, i32 1
  store i32 0, ptr %1027, align 8, !tbaa !11
  br label %1028

1028:                                             ; preds = %1026, %1019
  store i32 0, ptr %13, align 4, !tbaa !28
  br label %1029

1029:                                             ; preds = %1152, %1028
  %1030 = load i32, ptr %13, align 4, !tbaa !28
  %1031 = sext i32 %1030 to i64
  %1032 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 25
  %1033 = load ptr, ptr %1032, align 8, !tbaa !54
  %1034 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1033, i32 0, i32 6
  %1035 = load i64, ptr %1034, align 8, !tbaa !26
  %1036 = icmp slt i64 %1031, %1035
  br i1 %1036, label %1037, label %1155

1037:                                             ; preds = %1029
  %1038 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 25
  %1039 = load ptr, ptr %1038, align 8, !tbaa !54
  %1040 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1039, i32 0, i32 5
  %1041 = load ptr, ptr %1040, align 8, !tbaa !31
  %1042 = load i32, ptr %13, align 4, !tbaa !28
  %1043 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 25
  %1044 = load ptr, ptr %1043, align 8, !tbaa !54
  %1045 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1044, i32 0, i32 2
  %1046 = load i32, ptr %1045, align 8, !tbaa !32
  %1047 = ashr i32 %1042, %1046
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds ptr, ptr %1041, i64 %1048
  %1050 = load ptr, ptr %1049, align 8, !tbaa !5
  %1051 = load i32, ptr %13, align 4, !tbaa !28
  %1052 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 25
  %1053 = load ptr, ptr %1052, align 8, !tbaa !54
  %1054 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1053, i32 0, i32 3
  %1055 = load i32, ptr %1054, align 4, !tbaa !33
  %1056 = and i32 %1051, %1055
  %1057 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 25
  %1058 = load ptr, ptr %1057, align 8, !tbaa !54
  %1059 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1058, i32 0, i32 0
  %1060 = load i32, ptr %1059, align 8, !tbaa !34
  %1061 = mul nsw i32 %1056, %1060
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds i8, ptr %1050, i64 %1062
  store ptr %1063, ptr %8, align 8, !tbaa !5
  %1064 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %1064)
  %1065 = load ptr, ptr %8, align 8, !tbaa !5
  %1066 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %42, ptr noundef nonnull align 8 dereferenceable(12) %1065)
  %1067 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %42)
  store ptr %1067, ptr %19, align 8, !tbaa !5
  %1068 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %42)
  store ptr %1068, ptr %20, align 8, !tbaa !5
  %1069 = call noundef ptr @_ZN10tetgenmesh5sapexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %42)
  store ptr %1069, ptr %21, align 8, !tbaa !5
  call void @_ZN10tetgenmesh15maketetrahedronEPNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %39)
  call void @_ZN10tetgenmesh15maketetrahedronEPNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %17)
  %1070 = load ptr, ptr %19, align 8, !tbaa !5
  %1071 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %39, i32 0, i32 0
  %1072 = load ptr, ptr %1071, align 8, !tbaa !46
  %1073 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %39, i32 0, i32 1
  %1074 = load i32, ptr %1073, align 8, !tbaa !45
  %1075 = sext i32 %1074 to i64
  %1076 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh8orgpivotE, i64 0, i64 %1075
  %1077 = load i32, ptr %1076, align 4, !tbaa !28
  %1078 = sext i32 %1077 to i64
  %1079 = getelementptr inbounds ptr, ptr %1072, i64 %1078
  store ptr %1070, ptr %1079, align 8, !tbaa !5
  %1080 = load ptr, ptr %20, align 8, !tbaa !5
  %1081 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %39, i32 0, i32 0
  %1082 = load ptr, ptr %1081, align 8, !tbaa !46
  %1083 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %39, i32 0, i32 1
  %1084 = load i32, ptr %1083, align 8, !tbaa !45
  %1085 = sext i32 %1084 to i64
  %1086 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9destpivotE, i64 0, i64 %1085
  %1087 = load i32, ptr %1086, align 4, !tbaa !28
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds ptr, ptr %1082, i64 %1088
  store ptr %1080, ptr %1089, align 8, !tbaa !5
  %1090 = load ptr, ptr %21, align 8, !tbaa !5
  %1091 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %39, i32 0, i32 0
  %1092 = load ptr, ptr %1091, align 8, !tbaa !46
  %1093 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %39, i32 0, i32 1
  %1094 = load i32, ptr %1093, align 8, !tbaa !45
  %1095 = sext i32 %1094 to i64
  %1096 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9apexpivotE, i64 0, i64 %1095
  %1097 = load i32, ptr %1096, align 4, !tbaa !28
  %1098 = sext i32 %1097 to i64
  %1099 = getelementptr inbounds ptr, ptr %1092, i64 %1098
  store ptr %1090, ptr %1099, align 8, !tbaa !5
  %1100 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 35
  %1101 = load ptr, ptr %1100, align 8, !tbaa !55
  %1102 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %39, i32 0, i32 0
  %1103 = load ptr, ptr %1102, align 8, !tbaa !46
  %1104 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %39, i32 0, i32 1
  %1105 = load i32, ptr %1104, align 8, !tbaa !45
  %1106 = sext i32 %1105 to i64
  %1107 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9oppopivotE, i64 0, i64 %1106
  %1108 = load i32, ptr %1107, align 4, !tbaa !28
  %1109 = sext i32 %1108 to i64
  %1110 = getelementptr inbounds ptr, ptr %1103, i64 %1109
  store ptr %1101, ptr %1110, align 8, !tbaa !5
  %1111 = load ptr, ptr %20, align 8, !tbaa !5
  %1112 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %17, i32 0, i32 0
  %1113 = load ptr, ptr %1112, align 8, !tbaa !46
  %1114 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %17, i32 0, i32 1
  %1115 = load i32, ptr %1114, align 8, !tbaa !45
  %1116 = sext i32 %1115 to i64
  %1117 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh8orgpivotE, i64 0, i64 %1116
  %1118 = load i32, ptr %1117, align 4, !tbaa !28
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds ptr, ptr %1113, i64 %1119
  store ptr %1111, ptr %1120, align 8, !tbaa !5
  %1121 = load ptr, ptr %19, align 8, !tbaa !5
  %1122 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %17, i32 0, i32 0
  %1123 = load ptr, ptr %1122, align 8, !tbaa !46
  %1124 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %17, i32 0, i32 1
  %1125 = load i32, ptr %1124, align 8, !tbaa !45
  %1126 = sext i32 %1125 to i64
  %1127 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9destpivotE, i64 0, i64 %1126
  %1128 = load i32, ptr %1127, align 4, !tbaa !28
  %1129 = sext i32 %1128 to i64
  %1130 = getelementptr inbounds ptr, ptr %1123, i64 %1129
  store ptr %1121, ptr %1130, align 8, !tbaa !5
  %1131 = load ptr, ptr %21, align 8, !tbaa !5
  %1132 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %17, i32 0, i32 0
  %1133 = load ptr, ptr %1132, align 8, !tbaa !46
  %1134 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %17, i32 0, i32 1
  %1135 = load i32, ptr %1134, align 8, !tbaa !45
  %1136 = sext i32 %1135 to i64
  %1137 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9apexpivotE, i64 0, i64 %1136
  %1138 = load i32, ptr %1137, align 4, !tbaa !28
  %1139 = sext i32 %1138 to i64
  %1140 = getelementptr inbounds ptr, ptr %1133, i64 %1139
  store ptr %1131, ptr %1140, align 8, !tbaa !5
  %1141 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 35
  %1142 = load ptr, ptr %1141, align 8, !tbaa !55
  %1143 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %17, i32 0, i32 0
  %1144 = load ptr, ptr %1143, align 8, !tbaa !46
  %1145 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %17, i32 0, i32 1
  %1146 = load i32, ptr %1145, align 8, !tbaa !45
  %1147 = sext i32 %1146 to i64
  %1148 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9oppopivotE, i64 0, i64 %1147
  %1149 = load i32, ptr %1148, align 4, !tbaa !28
  %1150 = sext i32 %1149 to i64
  %1151 = getelementptr inbounds ptr, ptr %1144, i64 %1150
  store ptr %1142, ptr %1151, align 8, !tbaa !5
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %39, ptr noundef nonnull align 8 dereferenceable(12) %17)
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %39, ptr noundef nonnull align 8 dereferenceable(12) %42)
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %42)
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %17, ptr noundef nonnull align 8 dereferenceable(12) %42)
  br label %1152

1152:                                             ; preds = %1037
  %1153 = load i32, ptr %13, align 4, !tbaa !28
  %1154 = add nsw i32 %1153, 1
  store i32 %1154, ptr %13, align 4, !tbaa !28
  br label %1029, !llvm.loop !56

1155:                                             ; preds = %1029
  %1156 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 25
  %1157 = load ptr, ptr %1156, align 8, !tbaa !54
  %1158 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1157, i32 0, i32 6
  %1159 = load i64, ptr %1158, align 8, !tbaa !26
  %1160 = mul nsw i64 %1159, 2
  %1161 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 76
  %1162 = load i64, ptr %1161, align 8, !tbaa !57
  %1163 = add nsw i64 %1162, %1160
  store i64 %1163, ptr %1161, align 8, !tbaa !57
  %1164 = load i32, ptr %14, align 4, !tbaa !9
  %1165 = icmp eq i32 %1164, 6
  br i1 %1165, label %1166, label %1188

1166:                                             ; preds = %1155
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %1167 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %1168

1168:                                             ; preds = %1186, %1166
  br label %1169

1169:                                             ; preds = %1168
  %1170 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %1171 = load ptr, ptr %11, align 8, !tbaa !5
  %1172 = icmp ne ptr %1170, %1171
  br i1 %1172, label %1173, label %1174

1173:                                             ; preds = %1169
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %7)
  br label %1174

1174:                                             ; preds = %1173, %1169
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %39)
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %39, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %43)
  %1175 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %43)
  %1176 = load ptr, ptr %11, align 8, !tbaa !5
  %1177 = icmp ne ptr %1175, %1176
  br i1 %1177, label %1178, label %1179

1178:                                             ; preds = %1174
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %43)
  br label %1179

1179:                                             ; preds = %1178, %1174
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %43)
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %43, ptr noundef nonnull align 8 dereferenceable(12) %17)
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %17, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %17)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %39)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %17)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %39, ptr noundef nonnull align 8 dereferenceable(12) %17)
  call void @_ZN10tetgenmesh10spivotselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %1180 = getelementptr inbounds %"class.tetgenmesh::face", ptr %7, i32 0, i32 0
  %1181 = load ptr, ptr %1180, align 8, !tbaa !22
  %1182 = getelementptr inbounds %"class.tetgenmesh::face", ptr %6, i32 0, i32 0
  %1183 = load ptr, ptr %1182, align 8, !tbaa !22
  %1184 = icmp eq ptr %1181, %1183
  br i1 %1184, label %1185, label %1186

1185:                                             ; preds = %1179
  br label %1187

1186:                                             ; preds = %1179
  br label %1168, !llvm.loop !58

1187:                                             ; preds = %1185
  br label %1188

1188:                                             ; preds = %1187, %1155
  store i32 0, ptr %13, align 4, !tbaa !28
  br label %1189

1189:                                             ; preds = %1347, %1188
  %1190 = load i32, ptr %13, align 4, !tbaa !28
  %1191 = sext i32 %1190 to i64
  %1192 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 25
  %1193 = load ptr, ptr %1192, align 8, !tbaa !54
  %1194 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1193, i32 0, i32 6
  %1195 = load i64, ptr %1194, align 8, !tbaa !26
  %1196 = icmp slt i64 %1191, %1195
  br i1 %1196, label %1197, label %1350

1197:                                             ; preds = %1189
  %1198 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 25
  %1199 = load ptr, ptr %1198, align 8, !tbaa !54
  %1200 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1199, i32 0, i32 5
  %1201 = load ptr, ptr %1200, align 8, !tbaa !31
  %1202 = load i32, ptr %13, align 4, !tbaa !28
  %1203 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 25
  %1204 = load ptr, ptr %1203, align 8, !tbaa !54
  %1205 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1204, i32 0, i32 2
  %1206 = load i32, ptr %1205, align 8, !tbaa !32
  %1207 = ashr i32 %1202, %1206
  %1208 = sext i32 %1207 to i64
  %1209 = getelementptr inbounds ptr, ptr %1201, i64 %1208
  %1210 = load ptr, ptr %1209, align 8, !tbaa !5
  %1211 = load i32, ptr %13, align 4, !tbaa !28
  %1212 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 25
  %1213 = load ptr, ptr %1212, align 8, !tbaa !54
  %1214 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1213, i32 0, i32 3
  %1215 = load i32, ptr %1214, align 4, !tbaa !33
  %1216 = and i32 %1211, %1215
  %1217 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 25
  %1218 = load ptr, ptr %1217, align 8, !tbaa !54
  %1219 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1218, i32 0, i32 0
  %1220 = load i32, ptr %1219, align 8, !tbaa !34
  %1221 = mul nsw i32 %1216, %1220
  %1222 = sext i32 %1221 to i64
  %1223 = getelementptr inbounds i8, ptr %1210, i64 %1222
  store ptr %1223, ptr %8, align 8, !tbaa !5
  %1224 = load ptr, ptr %8, align 8, !tbaa !5
  %1225 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %42, ptr noundef nonnull align 8 dereferenceable(12) %1224)
  store i32 0, ptr %36, align 4, !tbaa !28
  br label %1226

1226:                                             ; preds = %1343, %1197
  %1227 = load i32, ptr %36, align 4, !tbaa !28
  %1228 = icmp slt i32 %1227, 2
  br i1 %1228, label %1229, label %1346

1229:                                             ; preds = %1226
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %42, ptr noundef nonnull align 8 dereferenceable(12) %39)
  store i32 0, ptr %35, align 4, !tbaa !28
  br label %1230

1230:                                             ; preds = %1339, %1229
  %1231 = load i32, ptr %35, align 4, !tbaa !28
  %1232 = icmp slt i32 %1231, 3
  br i1 %1232, label %1233, label %1342

1233:                                             ; preds = %1230
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %39, ptr noundef nonnull align 8 dereferenceable(12) %40)
  %1234 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %40, i32 0, i32 0
  %1235 = load ptr, ptr %1234, align 8, !tbaa !46
  %1236 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %40, i32 0, i32 1
  %1237 = load i32, ptr %1236, align 8, !tbaa !45
  %1238 = and i32 %1237, 3
  %1239 = sext i32 %1238 to i64
  %1240 = getelementptr inbounds ptr, ptr %1235, i64 %1239
  %1241 = load ptr, ptr %1240, align 8, !tbaa !5
  %1242 = icmp eq ptr %1241, null
  br i1 %1242, label %1243, label %1338

1243:                                             ; preds = %1233
  call void @_ZN10tetgenmesh7sspivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %42, ptr noundef nonnull align 8 dereferenceable(12) %45)
  %1244 = getelementptr inbounds %"class.tetgenmesh::face", ptr %45, i32 0, i32 0
  %1245 = load ptr, ptr %1244, align 8, !tbaa !22
  %1246 = icmp ne ptr %1245, null
  br i1 %1246, label %1247, label %1248

1247:                                             ; preds = %1243
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %39, ptr noundef nonnull align 8 dereferenceable(12) %45)
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %45, ptr noundef nonnull align 8 dereferenceable(12) %39)
  br label %1248

1248:                                             ; preds = %1247, %1243
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %42, ptr noundef nonnull align 8 dereferenceable(12) %43)
  %1249 = getelementptr inbounds %"class.tetgenmesh::face", ptr %43, i32 0, i32 0
  %1250 = load ptr, ptr %1249, align 8, !tbaa !22
  %1251 = icmp ne ptr %1250, null
  br i1 %1251, label %1252, label %1272

1252:                                             ; preds = %1248
  %1253 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %43)
  %1254 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %42)
  %1255 = icmp ne ptr %1253, %1254
  br i1 %1255, label %1256, label %1257

1256:                                             ; preds = %1252
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %43)
  br label %1257

1257:                                             ; preds = %1256, %1252
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %43, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %1258 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %43)
  br i1 %1258, label %1259, label %1260

1259:                                             ; preds = %1257
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %17)
  br label %1271

1260:                                             ; preds = %1257
  %1261 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %41, ptr noundef nonnull align 8 dereferenceable(12) %17)
  br label %1262

1262:                                             ; preds = %1268, %1260
  br label %1263

1263:                                             ; preds = %1262
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %41, ptr noundef nonnull align 8 dereferenceable(12) %16)
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %41)
  %1264 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %41, i32 0, i32 0
  %1265 = load ptr, ptr %1264, align 8, !tbaa !46
  %1266 = icmp eq ptr %1265, null
  br i1 %1266, label %1267, label %1268

1267:                                             ; preds = %1263
  br label %1269

1268:                                             ; preds = %1263
  br label %1262, !llvm.loop !59

1269:                                             ; preds = %1267
  %1270 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %17, ptr noundef nonnull align 8 dereferenceable(12) %16)
  br label %1271

1271:                                             ; preds = %1269, %1259
  br label %1288

1272:                                             ; preds = %1248
  call void @_ZN10tetgenmesh9sstpivot1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %45, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %1273 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %1274 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %42)
  %1275 = icmp ne ptr %1273, %1274
  br i1 %1275, label %1276, label %1277

1276:                                             ; preds = %1272
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %17)
  br label %1277

1277:                                             ; preds = %1276, %1272
  %1278 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %41, ptr noundef nonnull align 8 dereferenceable(12) %17)
  br label %1279

1279:                                             ; preds = %1285, %1277
  br label %1280

1280:                                             ; preds = %1279
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %41, ptr noundef nonnull align 8 dereferenceable(12) %16)
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %41)
  %1281 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %41, i32 0, i32 0
  %1282 = load ptr, ptr %1281, align 8, !tbaa !46
  %1283 = icmp eq ptr %1282, null
  br i1 %1283, label %1284, label %1285

1284:                                             ; preds = %1280
  br label %1286

1285:                                             ; preds = %1280
  br label %1279, !llvm.loop !60

1286:                                             ; preds = %1284
  %1287 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %17, ptr noundef nonnull align 8 dereferenceable(12) %16)
  br label %1288

1288:                                             ; preds = %1286, %1271
  %1289 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %40)
  store ptr %1289, ptr %21, align 8, !tbaa !5
  %1290 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %1291 = load ptr, ptr %5, align 8, !tbaa !5
  %1292 = icmp eq ptr %1290, %1291
  br i1 %1292, label %1293, label %1320

1293:                                             ; preds = %1288
  %1294 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 18
  %1295 = load ptr, ptr %1294, align 8, !tbaa !61
  %1296 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %1295, ptr noundef %18)
  %1297 = load ptr, ptr %18, align 8, !tbaa !5
  %1298 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %1297, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %1299 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %17, i32 0, i32 1
  %1300 = load i32, ptr %1299, align 8, !tbaa !45
  store i32 %1300, ptr %47, align 4, !tbaa !28
  %1301 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %17, i32 0, i32 0
  %1302 = load ptr, ptr %1301, align 8, !tbaa !46
  %1303 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %17, i32 0, i32 1
  %1304 = load i32, ptr %1303, align 8, !tbaa !45
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %1305
  %1307 = load i32, ptr %1306, align 4, !tbaa !28
  %1308 = sext i32 %1307 to i64
  %1309 = getelementptr inbounds ptr, ptr %1302, i64 %1308
  %1310 = load ptr, ptr %1309, align 8, !tbaa !5
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %1310, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %1311 = load i32, ptr %47, align 4, !tbaa !28
  %1312 = sext i32 %1311 to i64
  %1313 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %1312
  %1314 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %17, i32 0, i32 1
  %1315 = load i32, ptr %1314, align 8, !tbaa !45
  %1316 = sext i32 %1315 to i64
  %1317 = getelementptr inbounds [12 x i32], ptr %1313, i64 0, i64 %1316
  %1318 = load i32, ptr %1317, align 4, !tbaa !28
  %1319 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %17, i32 0, i32 1
  store i32 %1318, ptr %1319, align 8, !tbaa !45
  br label %1337

1320:                                             ; preds = %1288
  %1321 = load ptr, ptr %21, align 8, !tbaa !5
  %1322 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 35
  %1323 = load ptr, ptr %1322, align 8, !tbaa !55
  %1324 = icmp eq ptr %1321, %1323
  br i1 %1324, label %1325, label %1336

1325:                                             ; preds = %1320
  %1326 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %1327 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 35
  %1328 = load ptr, ptr %1327, align 8, !tbaa !55
  %1329 = icmp ne ptr %1326, %1328
  br i1 %1329, label %1330, label %1335

1330:                                             ; preds = %1325
  %1331 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %17)
  call void @_ZN10tetgenmesh7setapexERNS_7trifaceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %40, ptr noundef %1331)
  %1332 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 76
  %1333 = load i64, ptr %1332, align 8, !tbaa !57
  %1334 = add nsw i64 %1333, -1
  store i64 %1334, ptr %1332, align 8, !tbaa !57
  br label %1335

1335:                                             ; preds = %1330, %1325
  br label %1336

1336:                                             ; preds = %1335, %1320
  br label %1337

1337:                                             ; preds = %1336, %1293
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %40, ptr noundef nonnull align 8 dereferenceable(12) %17)
  br label %1338

1338:                                             ; preds = %1337, %1233
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %39)
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %42)
  br label %1339

1339:                                             ; preds = %1338
  %1340 = load i32, ptr %35, align 4, !tbaa !28
  %1341 = add nsw i32 %1340, 1
  store i32 %1341, ptr %35, align 4, !tbaa !28
  br label %1230, !llvm.loop !62

1342:                                             ; preds = %1230
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %42)
  br label %1343

1343:                                             ; preds = %1342
  %1344 = load i32, ptr %36, align 4, !tbaa !28
  %1345 = add nsw i32 %1344, 1
  store i32 %1345, ptr %36, align 4, !tbaa !28
  br label %1226, !llvm.loop !63

1346:                                             ; preds = %1226
  br label %1347

1347:                                             ; preds = %1346
  %1348 = load i32, ptr %13, align 4, !tbaa !28
  %1349 = add nsw i32 %1348, 1
  store i32 %1349, ptr %13, align 4, !tbaa !28
  br label %1189, !llvm.loop !64

1350:                                             ; preds = %1189
  store i32 0, ptr %13, align 4, !tbaa !28
  br label %1351

1351:                                             ; preds = %1387, %1350
  %1352 = load i32, ptr %13, align 4, !tbaa !28
  %1353 = sext i32 %1352 to i64
  %1354 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 25
  %1355 = load ptr, ptr %1354, align 8, !tbaa !54
  %1356 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1355, i32 0, i32 6
  %1357 = load i64, ptr %1356, align 8, !tbaa !26
  %1358 = icmp slt i64 %1353, %1357
  br i1 %1358, label %1359, label %1390

1359:                                             ; preds = %1351
  %1360 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 25
  %1361 = load ptr, ptr %1360, align 8, !tbaa !54
  %1362 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1361, i32 0, i32 5
  %1363 = load ptr, ptr %1362, align 8, !tbaa !31
  %1364 = load i32, ptr %13, align 4, !tbaa !28
  %1365 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 25
  %1366 = load ptr, ptr %1365, align 8, !tbaa !54
  %1367 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1366, i32 0, i32 2
  %1368 = load i32, ptr %1367, align 8, !tbaa !32
  %1369 = ashr i32 %1364, %1368
  %1370 = sext i32 %1369 to i64
  %1371 = getelementptr inbounds ptr, ptr %1363, i64 %1370
  %1372 = load ptr, ptr %1371, align 8, !tbaa !5
  %1373 = load i32, ptr %13, align 4, !tbaa !28
  %1374 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 25
  %1375 = load ptr, ptr %1374, align 8, !tbaa !54
  %1376 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1375, i32 0, i32 3
  %1377 = load i32, ptr %1376, align 4, !tbaa !33
  %1378 = and i32 %1373, %1377
  %1379 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 25
  %1380 = load ptr, ptr %1379, align 8, !tbaa !54
  %1381 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1380, i32 0, i32 0
  %1382 = load i32, ptr %1381, align 8, !tbaa !34
  %1383 = mul nsw i32 %1378, %1382
  %1384 = sext i32 %1383 to i64
  %1385 = getelementptr inbounds i8, ptr %1372, i64 %1384
  store ptr %1385, ptr %8, align 8, !tbaa !5
  %1386 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN10tetgenmesh9suninfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef nonnull align 8 dereferenceable(12) %1386)
  br label %1387

1387:                                             ; preds = %1359
  %1388 = load i32, ptr %13, align 4, !tbaa !28
  %1389 = add nsw i32 %1388, 1
  store i32 %1389, ptr %13, align 4, !tbaa !28
  br label %1351, !llvm.loop !65

1390:                                             ; preds = %1351
  %1391 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 25
  %1392 = load ptr, ptr %1391, align 8, !tbaa !54
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1392)
  %1393 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 18
  %1394 = load ptr, ptr %1393, align 8, !tbaa !61
  %1395 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1394, i32 0, i32 6
  %1396 = load i64, ptr %1395, align 8, !tbaa !26
  %1397 = icmp sgt i64 %1396, 0
  br i1 %1397, label %1398, label %1450

1398:                                             ; preds = %1390
  store i32 0, ptr %13, align 4, !tbaa !28
  br label %1399

1399:                                             ; preds = %1437, %1398
  %1400 = load i32, ptr %13, align 4, !tbaa !28
  %1401 = sext i32 %1400 to i64
  %1402 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 18
  %1403 = load ptr, ptr %1402, align 8, !tbaa !61
  %1404 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1403, i32 0, i32 6
  %1405 = load i64, ptr %1404, align 8, !tbaa !26
  %1406 = icmp slt i64 %1401, %1405
  br i1 %1406, label %1407, label %1440

1407:                                             ; preds = %1399
  %1408 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 18
  %1409 = load ptr, ptr %1408, align 8, !tbaa !61
  %1410 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1409, i32 0, i32 5
  %1411 = load ptr, ptr %1410, align 8, !tbaa !31
  %1412 = load i32, ptr %13, align 4, !tbaa !28
  %1413 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 18
  %1414 = load ptr, ptr %1413, align 8, !tbaa !61
  %1415 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1414, i32 0, i32 2
  %1416 = load i32, ptr %1415, align 8, !tbaa !32
  %1417 = ashr i32 %1412, %1416
  %1418 = sext i32 %1417 to i64
  %1419 = getelementptr inbounds ptr, ptr %1411, i64 %1418
  %1420 = load ptr, ptr %1419, align 8, !tbaa !5
  %1421 = load i32, ptr %13, align 4, !tbaa !28
  %1422 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 18
  %1423 = load ptr, ptr %1422, align 8, !tbaa !61
  %1424 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1423, i32 0, i32 3
  %1425 = load i32, ptr %1424, align 4, !tbaa !33
  %1426 = and i32 %1421, %1425
  %1427 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 18
  %1428 = load ptr, ptr %1427, align 8, !tbaa !61
  %1429 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1428, i32 0, i32 0
  %1430 = load i32, ptr %1429, align 8, !tbaa !34
  %1431 = mul nsw i32 %1426, %1430
  %1432 = sext i32 %1431 to i64
  %1433 = getelementptr inbounds i8, ptr %1420, i64 %1432
  store ptr %1433, ptr %18, align 8, !tbaa !5
  %1434 = load ptr, ptr %18, align 8, !tbaa !5
  %1435 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %1434, i32 0, i32 0
  %1436 = load ptr, ptr %1435, align 8, !tbaa !46
  call void @_ZN10tetgenmesh18tetrahedrondeallocEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %1436)
  br label %1437

1437:                                             ; preds = %1407
  %1438 = load i32, ptr %13, align 4, !tbaa !28
  %1439 = add nsw i32 %1438, 1
  store i32 %1439, ptr %13, align 4, !tbaa !28
  br label %1399, !llvm.loop !66

1440:                                             ; preds = %1399
  %1441 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 18
  %1442 = load ptr, ptr %1441, align 8, !tbaa !61
  %1443 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %1442, i32 0, i32 6
  %1444 = load i64, ptr %1443, align 8, !tbaa !26
  %1445 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 76
  %1446 = load i64, ptr %1445, align 8, !tbaa !57
  %1447 = sub nsw i64 %1446, %1444
  store i64 %1447, ptr %1445, align 8, !tbaa !57
  %1448 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 18
  %1449 = load ptr, ptr %1448, align 8, !tbaa !61
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %1449)
  br label %1450

1450:                                             ; preds = %1440, %1390
  %1451 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %1451, i32 noundef 0)
  %1452 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 81
  %1453 = load i64, ptr %1452, align 8, !tbaa !67
  %1454 = add nsw i64 %1453, 1
  store i64 %1454, ptr %1452, align 8, !tbaa !67
  %1455 = load i32, ptr %14, align 4, !tbaa !9
  %1456 = icmp eq i32 %1455, 6
  br i1 %1456, label %1457, label %1461

1457:                                             ; preds = %1450
  %1458 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 83
  %1459 = load i64, ptr %1458, align 8, !tbaa !68
  %1460 = add nsw i64 %1459, -1
  store i64 %1460, ptr %1458, align 8, !tbaa !68
  br label %1465

1461:                                             ; preds = %1450
  %1462 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 84
  %1463 = load i64, ptr %1462, align 8, !tbaa !69
  %1464 = add nsw i64 %1463, -1
  store i64 %1464, ptr %1462, align 8, !tbaa !69
  br label %1465

1465:                                             ; preds = %1461, %1457
  %1466 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 79
  %1467 = load i64, ptr %1466, align 8, !tbaa !51
  %1468 = icmp sgt i64 %1467, 0
  br i1 %1468, label %1469, label %1473

1469:                                             ; preds = %1465
  %1470 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 79
  %1471 = load i64, ptr %1470, align 8, !tbaa !51
  %1472 = add nsw i64 %1471, 1
  store i64 %1472, ptr %1470, align 8, !tbaa !51
  br label %1473

1473:                                             ; preds = %1469, %1465
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #11
  store i32 0, ptr %49, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #11
  %1474 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 2
  %1475 = load ptr, ptr %1474, align 8, !tbaa !14
  %1476 = getelementptr inbounds %class.tetgenbehavior, ptr %1475, i32 0, i32 46
  %1477 = load i32, ptr %1476, align 8, !tbaa !70
  store i32 %1477, ptr %50, align 4, !tbaa !28
  %1478 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 2
  %1479 = load ptr, ptr %1478, align 8, !tbaa !14
  %1480 = getelementptr inbounds %class.tetgenbehavior, ptr %1479, i32 0, i32 46
  store i32 100000, ptr %1480, align 8, !tbaa !70
  store i32 0, ptr %13, align 4, !tbaa !28
  br label %1481

1481:                                             ; preds = %1521, %1473
  %1482 = load i32, ptr %13, align 4, !tbaa !28
  %1483 = load i32, ptr %37, align 4, !tbaa !28
  %1484 = icmp slt i32 %1482, %1483
  br i1 %1484, label %1485, label %1524

1485:                                             ; preds = %1481
  %1486 = load ptr, ptr %38, align 8, !tbaa !5
  %1487 = load i32, ptr %13, align 4, !tbaa !28
  %1488 = sext i32 %1487 to i64
  %1489 = getelementptr inbounds ptr, ptr %1486, i64 %1488
  %1490 = load ptr, ptr %1489, align 8, !tbaa !5
  %1491 = icmp ne ptr %1490, null
  br i1 %1491, label %1492, label %1520

1492:                                             ; preds = %1485
  %1493 = load ptr, ptr %38, align 8, !tbaa !5
  %1494 = load i32, ptr %13, align 4, !tbaa !28
  %1495 = sext i32 %1494 to i64
  %1496 = getelementptr inbounds ptr, ptr %1493, i64 %1495
  %1497 = load ptr, ptr %1496, align 8, !tbaa !5
  %1498 = call noundef i32 @_ZN10tetgenmesh19removevertexbyflipsEPd(ptr noundef nonnull align 8 dereferenceable(1536) %51, ptr noundef %1497)
  %1499 = icmp ne i32 %1498, 0
  br i1 %1499, label %1519, label %1500

1500:                                             ; preds = %1492
  %1501 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 2
  %1502 = load ptr, ptr %1501, align 8, !tbaa !14
  %1503 = getelementptr inbounds %class.tetgenbehavior, ptr %1502, i32 0, i32 42
  %1504 = load i32, ptr %1503, align 8, !tbaa !71
  %1505 = icmp sgt i32 %1504, 0
  br i1 %1505, label %1506, label %1516

1506:                                             ; preds = %1500
  %1507 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 29
  %1508 = load ptr, ptr %1507, align 8, !tbaa !72
  %1509 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %1508, ptr noundef %48)
  %1510 = load ptr, ptr %38, align 8, !tbaa !5
  %1511 = load i32, ptr %13, align 4, !tbaa !28
  %1512 = sext i32 %1511 to i64
  %1513 = getelementptr inbounds ptr, ptr %1510, i64 %1512
  %1514 = load ptr, ptr %1513, align 8, !tbaa !5
  %1515 = load ptr, ptr %48, align 8, !tbaa !5
  store ptr %1514, ptr %1515, align 8, !tbaa !5
  br label %1516

1516:                                             ; preds = %1506, %1500
  %1517 = load i32, ptr %49, align 4, !tbaa !28
  %1518 = add nsw i32 %1517, 1
  store i32 %1518, ptr %49, align 4, !tbaa !28
  br label %1519

1519:                                             ; preds = %1516, %1492
  br label %1520

1520:                                             ; preds = %1519, %1485
  br label %1521

1521:                                             ; preds = %1520
  %1522 = load i32, ptr %13, align 4, !tbaa !28
  %1523 = add nsw i32 %1522, 1
  store i32 %1523, ptr %13, align 4, !tbaa !28
  br label %1481, !llvm.loop !73

1524:                                             ; preds = %1481
  %1525 = load i32, ptr %50, align 4, !tbaa !28
  %1526 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 2
  %1527 = load ptr, ptr %1526, align 8, !tbaa !14
  %1528 = getelementptr inbounds %class.tetgenbehavior, ptr %1527, i32 0, i32 46
  store i32 %1525, ptr %1528, align 8, !tbaa !70
  %1529 = load i32, ptr %49, align 4, !tbaa !28
  %1530 = icmp sgt i32 %1529, 0
  br i1 %1530, label %1531, label %1541

1531:                                             ; preds = %1524
  %1532 = getelementptr inbounds %class.tetgenmesh, ptr %51, i32 0, i32 2
  %1533 = load ptr, ptr %1532, align 8, !tbaa !14
  %1534 = getelementptr inbounds %class.tetgenbehavior, ptr %1533, i32 0, i32 37
  %1535 = load i32, ptr %1534, align 4, !tbaa !19
  %1536 = icmp sgt i32 %1535, 2
  br i1 %1536, label %1537, label %1540

1537:                                             ; preds = %1531
  %1538 = load i32, ptr %49, align 4, !tbaa !28
  %1539 = call i32 (ptr, ...) @printf(ptr noundef @.str.427, i32 noundef %1538)
  br label %1540

1540:                                             ; preds = %1537, %1531
  br label %1541

1541:                                             ; preds = %1540, %1524
  %1542 = load ptr, ptr %38, align 8, !tbaa !5
  %1543 = icmp eq ptr %1542, null
  br i1 %1543, label %1545, label %1544

1544:                                             ; preds = %1541
  call void @_ZdaPv(ptr noundef %1542) #13
  br label %1545

1545:                                             ; preds = %1544, %1541
  store i32 1, ptr %3, align 4
  store i32 1, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #11
  br label %1546

1546:                                             ; preds = %1545, %747
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #11
  br label %1547

1547:                                             ; preds = %1546, %156, %123
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #11
  %1548 = load i32, ptr %3, align 4
  ret i32 %1548
}

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #10

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10tetgenmesh8dissolveERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536), ptr noundef nonnull align 8 dereferenceable(12)) #6 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind "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 = { 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 #10 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #11 = { nounwind }
attributes #12 = { builtin allocsize(0) }
attributes #13 = { builtin nounwind }

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

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


; 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::face" = type <{ ptr, i32, [4 x i8] }>
%"class.tetgenmesh::triface" = type <{ ptr, i32, [4 x i8] }>

@_ZN10tetgenmesh10facepivot1E = external dso_local local_unnamed_addr global [12 x i32], align 16
@_ZN10tetgenmesh10facepivot2E = external dso_local local_unnamed_addr global [12 x [12 x i32]], align 16
@_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
@.str.425 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.426 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.427 = external hidden unnamed_addr constant [41 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef range(i32 0, 2) i32 @_ZN10tetgenmesh24suppressbdrysteinerpointEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1) local_unnamed_addr #6 align 2 {
  %3 = alloca %"class.tetgenmesh::face", align 8
  %4 = alloca %"class.tetgenmesh::face", align 8
  %5 = alloca ptr, align 8
  %6 = alloca %"class.tetgenmesh::face", align 8
  %7 = alloca %"class.tetgenmesh::face", align 8
  %8 = alloca %"class.tetgenmesh::triface", align 8
  %9 = alloca %"class.tetgenmesh::triface", align 8
  %10 = alloca ptr, align 8
  %11 = alloca [3 x double], align 16
  %12 = alloca [3 x double], align 16
  %13 = alloca double, align 8
  %14 = alloca [3 x double], align 16
  %15 = alloca [3 x double], align 16
  %16 = alloca %"class.tetgenmesh::triface", align 8
  %17 = alloca %"class.tetgenmesh::triface", align 8
  %18 = alloca %"class.tetgenmesh::triface", align 8
  %19 = alloca %"class.tetgenmesh::face", align 8
  %20 = alloca %"class.tetgenmesh::face", align 8
  %21 = alloca %"class.tetgenmesh::face", align 8
  %22 = alloca ptr, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #13
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #13
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %4)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #13
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #13
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %7)
  %23 = call noundef i32 @_ZN10tetgenmesh9pointtypeEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1)
  %24 = icmp eq i32 %23, 6
  br i1 %24, label %25, label %73

25:                                               ; preds = %2
  %26 = call noundef ptr @_ZN10tetgenmesh8point2shEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1)
  call void @_ZN10tetgenmesh7sdecodeEPPdRNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %26, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %27 = getelementptr inbounds i8, ptr %6, i64 8
  store i32 0, ptr %27, align 8, !tbaa !5
  %28 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %29 = icmp eq ptr %28, %1
  br i1 %29, label %30, label %32

30:                                               ; preds = %25
  call void @_ZN10tetgenmesh6senextERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @_ZN10tetgenmesh10spivotselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %31 = getelementptr inbounds i8, ptr %7, i64 8
  br label %34

32:                                               ; preds = %25
  %33 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @_ZN10tetgenmesh7senext2ERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %6)
  call void @_ZN10tetgenmesh10spivotselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  br label %34

34:                                               ; preds = %32, %30
  %.sink = phi ptr [ %27, %32 ], [ %31, %30 ]
  store i32 0, ptr %.sink, align 8, !tbaa !5
  %35 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6)
  %36 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7)
  %37 = getelementptr inbounds i8, ptr %0, i64 16
  %38 = load ptr, ptr %37, align 8, !tbaa !11
  %39 = getelementptr inbounds i8, ptr %38, i64 148
  %40 = load i32, ptr %39, align 4, !tbaa !16
  %41 = icmp sgt i32 %40, 2
  br i1 %41, label %42, label %47

42:                                               ; preds = %34
  %43 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1)
  %44 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %35)
  %45 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %36)
  %46 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.425, i32 noundef %43, i32 noundef %44, i32 noundef %45)
  br label %47

47:                                               ; preds = %42, %34
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %48 = load ptr, ptr %3, align 8, !tbaa !19
  %.not = icmp eq ptr %48, null
  br i1 %.not, label %.loopexit258, label %49

49:                                               ; preds = %47
  %50 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %4, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %51 = getelementptr inbounds i8, ptr %0, i64 208
  br label %52

52:                                               ; preds = %62, %49
  %53 = load ptr, ptr %51, align 8, !tbaa !20
  %54 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %53, ptr noundef nonnull %5)
  %55 = load ptr, ptr %5, align 8, !tbaa !21
  %56 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %55, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %57 = load ptr, ptr %5, align 8, !tbaa !21
  %58 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %57)
  %59 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %.not237 = icmp eq ptr %58, %59
  br i1 %.not237, label %62, label %60

60:                                               ; preds = %52
  %61 = load ptr, ptr %5, align 8, !tbaa !21
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %61)
  br label %62

62:                                               ; preds = %60, %52
  call void @_ZN10tetgenmesh10spivotselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %63 = load ptr, ptr %4, align 8, !tbaa !19
  %64 = icmp eq ptr %63, null
  %65 = load ptr, ptr %3, align 8
  %66 = icmp eq ptr %63, %65
  %or.cond = select i1 %64, i1 true, i1 %66
  br i1 %or.cond, label %.loopexit258, label %52, !llvm.loop !22

.loopexit258:                                     ; preds = %62, %47
  %67 = getelementptr inbounds i8, ptr %0, i64 208
  %68 = load ptr, ptr %67, align 8, !tbaa !20
  %69 = getelementptr inbounds i8, ptr %68, i64 32
  %70 = load i64, ptr %69, align 8, !tbaa !24
  %71 = icmp slt i64 %70, 2
  br i1 %71, label %72, label %.loopexit259

72:                                               ; preds = %.loopexit258
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %68)
  br label %864

73:                                               ; preds = %2
  %74 = icmp eq i32 %23, 7
  br i1 %74, label %75, label %864

75:                                               ; preds = %73
  %76 = getelementptr inbounds i8, ptr %0, i64 16
  %77 = load ptr, ptr %76, align 8, !tbaa !11
  %78 = getelementptr inbounds i8, ptr %77, i64 148
  %79 = load i32, ptr %78, align 4, !tbaa !16
  %80 = icmp sgt i32 %79, 2
  br i1 %80, label %81, label %.loopexit259.loopexit

81:                                               ; preds = %75
  %82 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1)
  %83 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.426, i32 noundef %82)
  br label %.loopexit259.loopexit

.loopexit259.loopexit:                            ; preds = %81, %75
  %84 = call noundef ptr @_ZN10tetgenmesh8point2shEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1)
  call void @_ZN10tetgenmesh7sdecodeEPPdRNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %84, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %85 = getelementptr inbounds i8, ptr %0, i64 208
  %86 = load ptr, ptr %85, align 8, !tbaa !20
  %87 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %86, ptr noundef nonnull %5)
  %88 = load ptr, ptr %5, align 8, !tbaa !21
  %89 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %88, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %90 = load ptr, ptr %85, align 8, !tbaa !20
  %91 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %90, ptr noundef nonnull %5)
  %92 = load ptr, ptr %5, align 8, !tbaa !21
  %93 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %92, ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %.loopexit259

.loopexit259:                                     ; preds = %.loopexit259.loopexit, %.loopexit258
  %.0204 = phi ptr [ %35, %.loopexit258 ], [ null, %.loopexit259.loopexit ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #13
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #13
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #13
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %14, i8 0, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #13
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %15, i8 0, i64 24, i1 false)
  %94 = getelementptr inbounds i8, ptr %0, i64 208
  %95 = load ptr, ptr %94, align 8, !tbaa !20
  %96 = getelementptr inbounds i8, ptr %95, i64 32
  %97 = load i64, ptr %96, align 8, !tbaa !24
  %98 = trunc i64 %97 to i32
  %sext = shl i64 %97, 32
  %99 = ashr exact i64 %sext, 29
  %.inv = icmp sgt i64 %sext, -1
  %100 = select i1 %.inv, i64 %99, i64 -1
  %101 = call noalias noundef nonnull ptr @_Znam(i64 noundef %100) #14
  %102 = icmp sgt i32 %98, 0
  br i1 %102, label %.lr.ph.preheader, label %.preheader256

.lr.ph.preheader:                                 ; preds = %.loopexit259
  %103 = shl i64 %97, 3
  %104 = and i64 %103, 17179869176
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %101, i8 0, i64 %104, i1 false), !tbaa !21
  br label %.preheader256

.preheader256:                                    ; preds = %.lr.ph.preheader, %.loopexit259
  %105 = load i64, ptr %96, align 8, !tbaa !24
  %106 = icmp sgt i64 %105, 0
  br i1 %106, label %.lr.ph349, label %.loopexit257.thread

.lr.ph349:                                        ; preds = %.preheader256
  %107 = getelementptr inbounds i8, ptr %0, i64 128
  %108 = getelementptr inbounds i8, ptr %0, i64 192
  %109 = getelementptr inbounds i8, ptr %11, i64 16
  %110 = getelementptr inbounds i8, ptr %12, i64 16
  %111 = getelementptr inbounds i8, ptr %1, i64 16
  %112 = getelementptr inbounds i8, ptr %14, i64 16
  %113 = getelementptr inbounds i8, ptr %15, i64 16
  br label %114

114:                                              ; preds = %.lr.ph349, %391
  %indvars.iv432 = phi i64 [ 0, %.lr.ph349 ], [ %indvars.iv.next433, %391 ]
  %115 = phi ptr [ %95, %.lr.ph349 ], [ %393, %391 ]
  %.sroa.9.0347 = phi double [ 0.000000e+00, %.lr.ph349 ], [ %.sroa.9.5, %391 ]
  %116 = phi <2 x double> [ zeroinitializer, %.lr.ph349 ], [ %392, %391 ]
  %117 = getelementptr inbounds i8, ptr %115, i64 24
  %118 = load ptr, ptr %117, align 8, !tbaa !26
  %119 = getelementptr inbounds i8, ptr %115, i64 8
  %120 = load i32, ptr %119, align 8, !tbaa !27
  %121 = trunc nuw nsw i64 %indvars.iv432 to i32
  %122 = lshr i32 %121, %120
  %123 = zext nneg i32 %122 to i64
  %124 = getelementptr inbounds ptr, ptr %118, i64 %123
  %125 = load ptr, ptr %124, align 8, !tbaa !21
  %126 = getelementptr inbounds i8, ptr %115, i64 12
  %127 = load i32, ptr %126, align 4, !tbaa !28
  %128 = and i32 %127, %121
  %129 = load i32, ptr %115, align 8, !tbaa !29
  %130 = mul nsw i32 %128, %129
  %131 = sext i32 %130 to i64
  %132 = getelementptr inbounds i8, ptr %125, i64 %131
  store ptr %132, ptr %5, align 8, !tbaa !21
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %132, ptr noundef nonnull align 8 dereferenceable(12) %8)
  %133 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br i1 %133, label %391, label %134

134:                                              ; preds = %114
  %135 = call noundef ptr @_ZN10tetgenmesh6encodeERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1, ptr noundef %135)
  %136 = load ptr, ptr %107, align 8, !tbaa !30
  %137 = load ptr, ptr %108, align 8, !tbaa !31
  %138 = call noundef i32 @_ZN10tetgenmesh13getvertexstarEiPdPNS_9arraypoolES2_S2_(ptr noundef nonnull align 8 dereferenceable(1536) %0, i32 noundef 0, ptr noundef %1, ptr noundef %136, ptr noundef null, ptr noundef %137)
  %139 = load ptr, ptr %5, align 8, !tbaa !21
  %140 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %139)
  %141 = load ptr, ptr %5, align 8, !tbaa !21
  %142 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %141)
  %143 = load ptr, ptr %5, align 8, !tbaa !21
  %144 = call noundef ptr @_ZN10tetgenmesh5sapexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %143)
  call void @_ZN10tetgenmesh10facenormalEPdS0_S0_S0_iS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %140, ptr noundef %142, ptr noundef %144, ptr noundef nonnull %11, i32 noundef 1, ptr noundef null)
  %145 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %11, ptr noundef nonnull %11)
  %146 = call double @sqrt(double noundef %145) #13
  %147 = load <2 x double>, ptr %11, align 16, !tbaa !32
  %148 = insertelement <2 x double> poison, double %146, i64 0
  %149 = shufflevector <2 x double> %148, <2 x double> poison, <2 x i32> zeroinitializer
  %150 = fdiv <2 x double> %147, %149
  store <2 x double> %150, ptr %11, align 16, !tbaa !32
  %151 = load double, ptr %109, align 16, !tbaa !32
  %152 = fdiv double %151, %146
  store double %152, ptr %109, align 16, !tbaa !32
  br i1 %24, label %153, label %188

153:                                              ; preds = %134
  %154 = load ptr, ptr %94, align 8, !tbaa !20
  %155 = getelementptr inbounds i8, ptr %154, i64 24
  %156 = load ptr, ptr %155, align 8, !tbaa !26
  %157 = trunc i64 %indvars.iv432 to i32
  %158 = add i32 %157, 1
  %159 = srem i32 %158, %98
  %160 = getelementptr inbounds i8, ptr %154, i64 8
  %161 = load i32, ptr %160, align 8, !tbaa !27
  %162 = lshr i32 %159, %161
  %163 = zext nneg i32 %162 to i64
  %164 = getelementptr inbounds ptr, ptr %156, i64 %163
  %165 = load ptr, ptr %164, align 8, !tbaa !21
  %166 = getelementptr inbounds i8, ptr %154, i64 12
  %167 = load i32, ptr %166, align 4, !tbaa !28
  %168 = and i32 %167, %159
  %169 = load i32, ptr %154, align 8, !tbaa !29
  %170 = mul nsw i32 %168, %169
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds i8, ptr %165, i64 %171
  store ptr %172, ptr %5, align 8, !tbaa !21
  %173 = call noundef ptr @_ZN10tetgenmesh5sapexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %172)
  call void @_ZN10tetgenmesh10facenormalEPdS0_S0_S0_iS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %142, ptr noundef %140, ptr noundef %173, ptr noundef nonnull %12, i32 noundef 1, ptr noundef null)
  %174 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %12, ptr noundef nonnull %12)
  %175 = call double @sqrt(double noundef %174) #13
  %176 = load <2 x double>, ptr %12, align 16, !tbaa !32
  %177 = insertelement <2 x double> poison, double %175, i64 0
  %178 = shufflevector <2 x double> %177, <2 x double> poison, <2 x i32> zeroinitializer
  %179 = fdiv <2 x double> %176, %178
  store <2 x double> %179, ptr %12, align 16, !tbaa !32
  %180 = load double, ptr %110, align 16, !tbaa !32
  %181 = fdiv double %180, %175
  store double %181, ptr %110, align 16, !tbaa !32
  %182 = load <2 x double>, ptr %11, align 16, !tbaa !32
  %183 = fadd <2 x double> %179, %182
  %184 = fmul <2 x double> %183, <double 5.000000e-01, double 5.000000e-01>
  store <2 x double> %184, ptr %11, align 16, !tbaa !32
  %185 = load double, ptr %109, align 16, !tbaa !32
  %186 = fadd double %181, %185
  %187 = fmul double %186, 5.000000e-01
  store double %187, ptr %109, align 16, !tbaa !32
  br label %188

188:                                              ; preds = %153, %134
  %189 = call noundef double @_ZN10tetgenmesh8distanceEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %140, ptr noundef %142)
  %190 = load <2 x double>, ptr %1, align 8, !tbaa !32
  %191 = load <2 x double>, ptr %11, align 16, !tbaa !32
  %192 = insertelement <2 x double> poison, double %189, i64 0
  %193 = shufflevector <2 x double> %192, <2 x double> poison, <2 x i32> zeroinitializer
  %194 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %193, <2 x double> %191, <2 x double> %190)
  store <2 x double> %194, ptr %12, align 16, !tbaa !32
  %195 = load double, ptr %111, align 8, !tbaa !32
  %196 = load double, ptr %109, align 16, !tbaa !32
  %197 = call double @llvm.fmuladd.f64(double %189, double %196, double %195)
  store double %197, ptr %110, align 16, !tbaa !32
  %198 = load ptr, ptr %107, align 8, !tbaa !30
  %199 = getelementptr inbounds i8, ptr %198, i64 32
  %200 = load i64, ptr %199, align 8, !tbaa !24
  %201 = icmp sgt i64 %200, 0
  br i1 %201, label %.lr.ph280, label %.loopexit255

.lr.ph280:                                        ; preds = %188, %233
  %indvars.iv = phi i64 [ %indvars.iv.next, %233 ], [ 0, %188 ]
  %202 = phi ptr [ %234, %233 ], [ %198, %188 ]
  %203 = getelementptr inbounds i8, ptr %202, i64 24
  %204 = load ptr, ptr %203, align 8, !tbaa !26
  %205 = getelementptr inbounds i8, ptr %202, i64 8
  %206 = load i32, ptr %205, align 8, !tbaa !27
  %207 = trunc nuw nsw i64 %indvars.iv to i32
  %208 = lshr i32 %207, %206
  %209 = zext nneg i32 %208 to i64
  %210 = getelementptr inbounds ptr, ptr %204, i64 %209
  %211 = load ptr, ptr %210, align 8, !tbaa !21
  %212 = getelementptr inbounds i8, ptr %202, i64 12
  %213 = load i32, ptr %212, align 4, !tbaa !28
  %214 = and i32 %213, %207
  %215 = load i32, ptr %202, align 8, !tbaa !29
  %216 = mul nsw i32 %214, %215
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds i8, ptr %211, i64 %217
  store ptr %218, ptr %10, align 8, !tbaa !21
  %219 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %218)
  %220 = load ptr, ptr %10, align 8, !tbaa !21
  %221 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %220)
  %222 = load ptr, ptr %10, align 8, !tbaa !21
  %223 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %222)
  %224 = call noundef double @_Z8orient3dPdS_S_S_(ptr noundef nonnull %1, ptr noundef %219, ptr noundef %221, ptr noundef nonnull %12)
  %225 = fcmp ult double %224, 0.000000e+00
  br i1 %225, label %233, label %226

226:                                              ; preds = %.lr.ph280
  %227 = call noundef double @_Z8orient3dPdS_S_S_(ptr noundef nonnull %1, ptr noundef %221, ptr noundef %223, ptr noundef nonnull %12)
  %228 = fcmp ult double %227, 0.000000e+00
  br i1 %228, label %233, label %229

229:                                              ; preds = %226
  %230 = call noundef double @_Z8orient3dPdS_S_S_(ptr noundef nonnull %1, ptr noundef %223, ptr noundef %219, ptr noundef nonnull %12)
  %231 = fcmp ult double %230, 0.000000e+00
  br i1 %231, label %233, label %232

232:                                              ; preds = %229
  call void @_ZN10tetgenmesh12planelineintEPdS0_S0_S0_S0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %219, ptr noundef %221, ptr noundef %223, ptr noundef nonnull %1, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef nonnull %13)
  br label %.loopexit255

233:                                              ; preds = %.lr.ph280, %229, %226
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %234 = load ptr, ptr %107, align 8, !tbaa !30
  %235 = getelementptr inbounds i8, ptr %234, i64 32
  %236 = load i64, ptr %235, align 8, !tbaa !24
  %237 = icmp sgt i64 %236, %indvars.iv.next
  br i1 %237, label %.lr.ph280, label %.loopexit255, !llvm.loop !33

.loopexit255:                                     ; preds = %233, %188, %232
  %238 = load ptr, ptr %108, align 8, !tbaa !31
  %239 = getelementptr inbounds i8, ptr %238, i64 32
  %240 = load i64, ptr %239, align 8, !tbaa !24
  %241 = icmp sgt i64 %240, 0
  br i1 %241, label %.lr.ph282, label %._crit_edge

.lr.ph282:                                        ; preds = %.loopexit255, %.lr.ph282
  %indvars.iv423 = phi i64 [ %indvars.iv.next424, %.lr.ph282 ], [ 0, %.loopexit255 ]
  %242 = phi ptr [ %263, %.lr.ph282 ], [ %238, %.loopexit255 ]
  %243 = getelementptr inbounds i8, ptr %242, i64 24
  %244 = load ptr, ptr %243, align 8, !tbaa !26
  %245 = getelementptr inbounds i8, ptr %242, i64 8
  %246 = load i32, ptr %245, align 8, !tbaa !27
  %247 = trunc nuw nsw i64 %indvars.iv423 to i32
  %248 = lshr i32 %247, %246
  %249 = zext nneg i32 %248 to i64
  %250 = getelementptr inbounds ptr, ptr %244, i64 %249
  %251 = load ptr, ptr %250, align 8, !tbaa !21
  %252 = getelementptr inbounds i8, ptr %242, i64 12
  %253 = load i32, ptr %252, align 4, !tbaa !28
  %254 = and i32 %253, %247
  %255 = load i32, ptr %242, align 8, !tbaa !29
  %256 = mul nsw i32 %254, %255
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds i8, ptr %251, i64 %257
  store ptr %258, ptr %5, align 8, !tbaa !21
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %258, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %259 = load ptr, ptr %107, align 8, !tbaa !30
  %260 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %259, ptr noundef nonnull %10)
  %261 = load ptr, ptr %10, align 8, !tbaa !21
  %262 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %261, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %indvars.iv.next424 = add nuw nsw i64 %indvars.iv423, 1
  %263 = load ptr, ptr %108, align 8, !tbaa !31
  %264 = getelementptr inbounds i8, ptr %263, i64 32
  %265 = load i64, ptr %264, align 8, !tbaa !24
  %266 = icmp sgt i64 %265, %indvars.iv.next424
  br i1 %266, label %.lr.ph282, label %._crit_edge, !llvm.loop !34

._crit_edge:                                      ; preds = %.lr.ph282, %.loopexit255
  %267 = load <2 x double>, ptr %1, align 8, !tbaa !32
  %268 = load <2 x double>, ptr %14, align 16, !tbaa !32
  %269 = fsub <2 x double> %267, %268
  store <2 x double> %269, ptr %11, align 16, !tbaa !32
  %270 = load double, ptr %111, align 8, !tbaa !32
  %271 = load double, ptr %112, align 16, !tbaa !32
  %272 = fsub double %270, %271
  store double %272, ptr %109, align 16, !tbaa !32
  br label %.preheader254

.preheader254:                                    ; preds = %._crit_edge, %377
  %.0216344 = phi i32 [ 0, %._crit_edge ], [ %379, %377 ]
  %.0217343 = phi i32 [ 100, %._crit_edge ], [ %378, %377 ]
  %.0220342 = phi double [ -1.000000e+00, %._crit_edge ], [ %.1221.lcssa, %377 ]
  %.sroa.9.1341 = phi double [ %.sroa.9.0347, %._crit_edge ], [ %.sroa.9.2.lcssa, %377 ]
  %273 = phi <2 x double> [ %116, %._crit_edge ], [ %375, %377 ]
  %274 = icmp ugt i32 %.0217343, 2
  br i1 %274, label %.lr.ph297, label %._crit_edge298

.lr.ph297:                                        ; preds = %.preheader254
  %275 = uitofp nneg i32 %.0217343 to double
  %276 = load ptr, ptr %107, align 8, !tbaa !30
  %277 = getelementptr inbounds i8, ptr %276, i64 32
  %278 = load i64, ptr %277, align 8, !tbaa !24
  %279 = icmp sgt i64 %278, 0
  br i1 %279, label %.lr.ph297.split.preheader, label %.lr.ph297.split.us

.lr.ph297.split.preheader:                        ; preds = %.lr.ph297
  %280 = add nsw i32 %.0217343, -2
  br label %.lr.ph297.split

.lr.ph297.split.us:                               ; preds = %.lr.ph297
  %281 = load <2 x double>, ptr %14, align 16, !tbaa !32
  %282 = load <2 x double>, ptr %11, align 16, !tbaa !32
  %283 = load double, ptr %112, align 16, !tbaa !32
  %284 = load double, ptr %109, align 16, !tbaa !32
  %285 = icmp eq i64 %278, 0
  br i1 %285, label %.lr.ph297.split.us.split.us.preheader, label %.lr.ph297.split.us.split.preheader

.lr.ph297.split.us.split.preheader:               ; preds = %.lr.ph297.split.us
  %286 = add nsw i32 %.0217343, -2
  %287 = uitofp nneg i32 %286 to double
  %288 = fdiv double %287, %275
  %289 = insertelement <2 x double> poison, double %288, i64 0
  %290 = shufflevector <2 x double> %289, <2 x double> poison, <2 x i32> zeroinitializer
  %291 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %290, <2 x double> %282, <2 x double> %281)
  %292 = call double @llvm.fmuladd.f64(double %288, double %284, double %283)
  br label %._crit_edge298.sink.split

.lr.ph297.split.us.split.us.preheader:            ; preds = %.lr.ph297.split.us
  %or.cond393.peel = fcmp ugt double %.0220342, -1.000000e+00
  br i1 %or.cond393.peel, label %._crit_edge298.split.us.split.us, label %.lr.ph297.split.us.split.us.peel.next.preheader

.lr.ph297.split.us.split.us.peel.next.preheader:  ; preds = %.lr.ph297.split.us.split.us.preheader
  %293 = add nsw i32 %.0217343, -3
  %294 = add nsw i32 %.0217343, -4
  %xtraiter = and i32 %293, 7
  %295 = icmp ult i32 %294, 7
  br i1 %295, label %.lr.ph297.split.us.split.us.peel.next.epil.preheader, label %.lr.ph297.split.us.split.us.peel.next.preheader.new

.lr.ph297.split.us.split.us.peel.next.preheader.new: ; preds = %.lr.ph297.split.us.split.us.peel.next.preheader
  %unroll_iter = and i32 %293, -8
  br label %.lr.ph297.split.us.split.us.peel.next

.lr.ph297.split.us.split.us.peel.next:            ; preds = %.lr.ph297.split.us.split.us.peel.next, %.lr.ph297.split.us.split.us.peel.next.preheader.new
  %.2212296.us.us = phi i32 [ 2, %.lr.ph297.split.us.split.us.peel.next.preheader.new ], [ %296, %.lr.ph297.split.us.split.us.peel.next ]
  %niter = phi i32 [ 0, %.lr.ph297.split.us.split.us.peel.next.preheader.new ], [ %niter.next.7, %.lr.ph297.split.us.split.us.peel.next ]
  %296 = add nuw nsw i32 %.2212296.us.us, 8
  %niter.next.7 = add i32 %niter, 8
  %niter.ncmp.7 = icmp eq i32 %niter.next.7, %unroll_iter
  br i1 %niter.ncmp.7, label %.lr.ph297.split.us.split.us.peel.next.epil.preheader, label %.lr.ph297.split.us.split.us.peel.next, !llvm.loop !35

._crit_edge298.split.us.split.us:                 ; preds = %.lr.ph297.split.us.split.us.preheader
  %297 = fdiv double 1.000000e+00, %275
  %298 = call double @llvm.fmuladd.f64(double %297, double %284, double %283)
  %299 = insertelement <2 x double> poison, double %297, i64 0
  %300 = shufflevector <2 x double> %299, <2 x double> poison, <2 x i32> zeroinitializer
  %301 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %300, <2 x double> %282, <2 x double> %281)
  br label %._crit_edge298.sink.split

.lr.ph297.split.us.split.us.peel.next.epil.preheader: ; preds = %.lr.ph297.split.us.split.us.peel.next.preheader, %.lr.ph297.split.us.split.us.peel.next
  %.2212296.us.us.unr = phi i32 [ 2, %.lr.ph297.split.us.split.us.peel.next.preheader ], [ %296, %.lr.ph297.split.us.split.us.peel.next ]
  br label %.lr.ph297.split.us.split.us.peel.next.epil

.lr.ph297.split.us.split.us.peel.next.epil:       ; preds = %.lr.ph297.split.us.split.us.peel.next.epil, %.lr.ph297.split.us.split.us.peel.next.epil.preheader
  %.2212296.us.us.epil = phi i32 [ %302, %.lr.ph297.split.us.split.us.peel.next.epil ], [ %.2212296.us.us.unr, %.lr.ph297.split.us.split.us.peel.next.epil.preheader ]
  %epil.iter = phi i32 [ %epil.iter.next, %.lr.ph297.split.us.split.us.peel.next.epil ], [ 0, %.lr.ph297.split.us.split.us.peel.next.epil.preheader ]
  %302 = add nuw nsw i32 %.2212296.us.us.epil, 1
  %epil.iter.next = add i32 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i32 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge303.split.us.loopexit, label %.lr.ph297.split.us.split.us.peel.next.epil, !llvm.loop !37

._crit_edge303.split.us.loopexit:                 ; preds = %.lr.ph297.split.us.split.us.peel.next.epil
  %303 = uitofp nneg i32 %.2212296.us.us.epil to double
  %304 = fdiv double %303, %275
  %305 = insertelement <2 x double> poison, double %304, i64 0
  %306 = shufflevector <2 x double> %305, <2 x double> poison, <2 x i32> zeroinitializer
  %307 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %306, <2 x double> %282, <2 x double> %281)
  %308 = call double @llvm.fmuladd.f64(double %304, double %284, double %283)
  br label %._crit_edge298.sink.split

.lr.ph297.split:                                  ; preds = %.lr.ph297.split.preheader, %370
  %309 = phi i64 [ %357, %370 ], [ %278, %.lr.ph297.split.preheader ]
  %310 = phi ptr [ %358, %370 ], [ %276, %.lr.ph297.split.preheader ]
  %.2212296 = phi i32 [ %372, %370 ], [ 1, %.lr.ph297.split.preheader ]
  %.1221295 = phi double [ %.2222, %370 ], [ %.0220342, %.lr.ph297.split.preheader ]
  %.sroa.9.2294 = phi double [ %.sroa.9.3, %370 ], [ %.sroa.9.1341, %.lr.ph297.split.preheader ]
  %311 = phi <2 x double> [ %371, %370 ], [ %273, %.lr.ph297.split.preheader ]
  %312 = uitofp nneg i32 %.2212296 to double
  %313 = fdiv double %312, %275
  %314 = load <2 x double>, ptr %14, align 16, !tbaa !32
  %315 = load <2 x double>, ptr %11, align 16, !tbaa !32
  %316 = insertelement <2 x double> poison, double %313, i64 0
  %317 = shufflevector <2 x double> %316, <2 x double> poison, <2 x i32> zeroinitializer
  %318 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %317, <2 x double> %315, <2 x double> %314)
  store <2 x double> %318, ptr %15, align 16, !tbaa !32
  %319 = load double, ptr %112, align 16, !tbaa !32
  %320 = load double, ptr %109, align 16, !tbaa !32
  %321 = call double @llvm.fmuladd.f64(double %313, double %320, double %319)
  store double %321, ptr %113, align 16, !tbaa !32
  %322 = icmp sgt i64 %309, 0
  br i1 %322, label %.lr.ph286, label %._crit_edge287

.lr.ph286:                                        ; preds = %.lr.ph297.split, %352
  %indvars.iv427 = phi i64 [ %indvars.iv.next428, %352 ], [ 0, %.lr.ph297.split ]
  %323 = phi ptr [ %353, %352 ], [ %310, %.lr.ph297.split ]
  %.0218283 = phi double [ %.1219, %352 ], [ -1.000000e+00, %.lr.ph297.split ]
  %324 = getelementptr inbounds i8, ptr %323, i64 24
  %325 = load ptr, ptr %324, align 8, !tbaa !26
  %326 = getelementptr inbounds i8, ptr %323, i64 8
  %327 = load i32, ptr %326, align 8, !tbaa !27
  %328 = trunc nuw nsw i64 %indvars.iv427 to i32
  %329 = lshr i32 %328, %327
  %330 = zext nneg i32 %329 to i64
  %331 = getelementptr inbounds ptr, ptr %325, i64 %330
  %332 = load ptr, ptr %331, align 8, !tbaa !21
  %333 = getelementptr inbounds i8, ptr %323, i64 12
  %334 = load i32, ptr %333, align 4, !tbaa !28
  %335 = and i32 %334, %328
  %336 = load i32, ptr %323, align 8, !tbaa !29
  %337 = mul nsw i32 %335, %336
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds i8, ptr %332, i64 %338
  store ptr %339, ptr %10, align 8, !tbaa !21
  %340 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %339)
  %341 = load ptr, ptr %10, align 8, !tbaa !21
  %342 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %341)
  %343 = load ptr, ptr %10, align 8, !tbaa !21
  %344 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %343)
  %345 = call noundef double @_Z8orient3dPdS_S_S_(ptr noundef %342, ptr noundef %340, ptr noundef %344, ptr noundef nonnull %15)
  %346 = fcmp ugt double %345, 0.000000e+00
  br i1 %346, label %347, label %.lr.ph286.._crit_edge287.loopexit_crit_edge

.lr.ph286.._crit_edge287.loopexit_crit_edge:      ; preds = %.lr.ph286
  %.pre.pre = load ptr, ptr %107, align 8, !tbaa !30
  %.phi.trans.insert469.phi.trans.insert = getelementptr inbounds i8, ptr %.pre.pre, i64 32
  %.pre470.pre = load i64, ptr %.phi.trans.insert469.phi.trans.insert, align 8, !tbaa !24
  br label %._crit_edge287

347:                                              ; preds = %.lr.ph286
  %348 = fcmp oeq double %.0218283, -1.000000e+00
  br i1 %348, label %352, label %349

349:                                              ; preds = %347
  %350 = fcmp olt double %345, %.0218283
  br i1 %350, label %351, label %352

351:                                              ; preds = %349
  br label %352

352:                                              ; preds = %347, %351, %349
  %.1219 = phi double [ %345, %351 ], [ %.0218283, %349 ], [ %345, %347 ]
  %indvars.iv.next428 = add nuw nsw i64 %indvars.iv427, 1
  %353 = load ptr, ptr %107, align 8, !tbaa !30
  %354 = getelementptr inbounds i8, ptr %353, i64 32
  %355 = load i64, ptr %354, align 8, !tbaa !24
  %356 = icmp sgt i64 %355, %indvars.iv.next428
  br i1 %356, label %.lr.ph286, label %._crit_edge287, !llvm.loop !39

._crit_edge287:                                   ; preds = %352, %.lr.ph286.._crit_edge287.loopexit_crit_edge, %.lr.ph297.split
  %357 = phi i64 [ %309, %.lr.ph297.split ], [ %.pre470.pre, %.lr.ph286.._crit_edge287.loopexit_crit_edge ], [ %355, %352 ]
  %358 = phi ptr [ %310, %.lr.ph297.split ], [ %.pre.pre, %.lr.ph286.._crit_edge287.loopexit_crit_edge ], [ %353, %352 ]
  %.0218.lcssa = phi double [ -1.000000e+00, %.lr.ph297.split ], [ %.0218283, %.lr.ph286.._crit_edge287.loopexit_crit_edge ], [ %.1219, %352 ]
  %.lcssa270 = phi i64 [ 0, %.lr.ph297.split ], [ %indvars.iv427, %.lr.ph286.._crit_edge287.loopexit_crit_edge ], [ %indvars.iv.next428, %352 ]
  %359 = icmp eq i64 %357, %.lcssa270
  br i1 %359, label %360, label %370

360:                                              ; preds = %._crit_edge287
  %361 = fcmp oeq double %.1221295, -1.000000e+00
  br i1 %361, label %362, label %365

362:                                              ; preds = %360
  %363 = load <2 x double>, ptr %15, align 16, !tbaa !32
  %364 = load double, ptr %113, align 16, !tbaa !32
  br label %370

365:                                              ; preds = %360
  %366 = fcmp olt double %.1221295, %.0218.lcssa
  br i1 %366, label %367, label %._crit_edge298

367:                                              ; preds = %365
  %368 = load <2 x double>, ptr %15, align 16, !tbaa !32
  %369 = load double, ptr %113, align 16, !tbaa !32
  br label %370

370:                                              ; preds = %._crit_edge287, %367, %362
  %.sroa.9.3 = phi double [ %364, %362 ], [ %369, %367 ], [ %.sroa.9.2294, %._crit_edge287 ]
  %.2222 = phi double [ %.0218.lcssa, %362 ], [ %.0218.lcssa, %367 ], [ %.1221295, %._crit_edge287 ]
  %371 = phi <2 x double> [ %363, %362 ], [ %368, %367 ], [ %311, %._crit_edge287 ]
  %372 = add nuw nsw i32 %.2212296, 1
  %exitcond430.not = icmp eq i32 %.2212296, %280
  br i1 %exitcond430.not, label %._crit_edge298, label %.lr.ph297.split, !llvm.loop !40

._crit_edge298.sink.split:                        ; preds = %.lr.ph297.split.us.split.preheader, %._crit_edge303.split.us.loopexit, %._crit_edge298.split.us.split.us
  %.us-phi328.sink = phi double [ %298, %._crit_edge298.split.us.split.us ], [ %292, %.lr.ph297.split.us.split.preheader ], [ %308, %._crit_edge303.split.us.loopexit ]
  %.sroa.9.2.lcssa.ph = phi double [ %.sroa.9.1341, %._crit_edge298.split.us.split.us ], [ %.sroa.9.1341, %.lr.ph297.split.us.split.preheader ], [ %308, %._crit_edge303.split.us.loopexit ]
  %.1221.lcssa.ph = phi double [ %.0220342, %._crit_edge298.split.us.split.us ], [ %.0220342, %.lr.ph297.split.us.split.preheader ], [ -1.000000e+00, %._crit_edge303.split.us.loopexit ]
  %373 = phi <2 x double> [ %273, %._crit_edge298.split.us.split.us ], [ %273, %.lr.ph297.split.us.split.preheader ], [ %307, %._crit_edge303.split.us.loopexit ]
  %374 = phi <2 x double> [ %301, %._crit_edge298.split.us.split.us ], [ %291, %.lr.ph297.split.us.split.preheader ], [ %307, %._crit_edge303.split.us.loopexit ]
  store <2 x double> %374, ptr %15, align 16, !tbaa !32
  store double %.us-phi328.sink, ptr %113, align 16, !tbaa !32
  br label %._crit_edge298

._crit_edge298:                                   ; preds = %370, %365, %._crit_edge298.sink.split, %.preheader254
  %.sroa.9.2.lcssa = phi double [ %.sroa.9.1341, %.preheader254 ], [ %.sroa.9.2.lcssa.ph, %._crit_edge298.sink.split ], [ %.sroa.9.2294, %365 ], [ %.sroa.9.3, %370 ]
  %.1221.lcssa = phi double [ %.0220342, %.preheader254 ], [ %.1221.lcssa.ph, %._crit_edge298.sink.split ], [ %.1221295, %365 ], [ %.2222, %370 ]
  %375 = phi <2 x double> [ %273, %.preheader254 ], [ %373, %._crit_edge298.sink.split ], [ %311, %365 ], [ %371, %370 ]
  %376 = fcmp ogt double %.1221.lcssa, 0.000000e+00
  br i1 %376, label %380, label %377

377:                                              ; preds = %._crit_edge298
  %378 = mul nuw nsw i32 %.0217343, 10
  %379 = add nuw nsw i32 %.0216344, 1
  %exitcond431.not = icmp eq i32 %379, 3
  br i1 %exitcond431.not, label %380, label %.preheader254, !llvm.loop !42

380:                                              ; preds = %._crit_edge298, %377
  %381 = fcmp oeq double %.1221.lcssa, -1.000000e+00
  br i1 %381, label %382, label %385

382:                                              ; preds = %380
  %383 = load ptr, ptr %107, align 8, !tbaa !30
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %383)
  %384 = load ptr, ptr %108, align 8, !tbaa !31
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %384)
  %.pre464 = load ptr, ptr %94, align 8, !tbaa !20
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre464, i64 32
  %.pre465 = load i64, ptr %.phi.trans.insert, align 8, !tbaa !24
  br label %.loopexit257

385:                                              ; preds = %380
  %386 = getelementptr inbounds ptr, ptr %101, i64 %indvars.iv432
  call void @_ZN10tetgenmesh9makepointEPPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %386, i32 noundef 8)
  %387 = load ptr, ptr %386, align 8, !tbaa !21
  store <2 x double> %375, ptr %387, align 8, !tbaa !32
  %388 = getelementptr inbounds i8, ptr %387, i64 16
  store double %.sroa.9.2.lcssa, ptr %388, align 8, !tbaa !32
  %389 = load ptr, ptr %107, align 8, !tbaa !30
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %389)
  %390 = load ptr, ptr %108, align 8, !tbaa !31
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %390)
  br label %391

391:                                              ; preds = %114, %385
  %.sroa.9.5 = phi double [ %.sroa.9.0347, %114 ], [ %.sroa.9.2.lcssa, %385 ]
  %392 = phi <2 x double> [ %116, %114 ], [ %375, %385 ]
  %indvars.iv.next433 = add nuw nsw i64 %indvars.iv432, 1
  %393 = load ptr, ptr %94, align 8, !tbaa !20
  %394 = getelementptr inbounds i8, ptr %393, i64 32
  %395 = load i64, ptr %394, align 8, !tbaa !24
  %396 = icmp sgt i64 %395, %indvars.iv.next433
  br i1 %396, label %114, label %.loopexit257.loopexit, !llvm.loop !43

.loopexit257.loopexit:                            ; preds = %391
  %397 = trunc nuw i64 %indvars.iv.next433 to i32
  br label %.loopexit257

.loopexit257:                                     ; preds = %.loopexit257.loopexit, %382
  %398 = phi i64 [ %.pre465, %382 ], [ %395, %.loopexit257.loopexit ]
  %.2274 = phi i32 [ %121, %382 ], [ %397, %.loopexit257.loopexit ]
  %399 = phi i64 [ %indvars.iv432, %382 ], [ %indvars.iv.next433, %.loopexit257.loopexit ]
  %400 = icmp sgt i64 %398, %399
  br i1 %400, label %.preheader, label %.loopexit257.thread

.preheader:                                       ; preds = %.loopexit257
  %invariant.gep = getelementptr i8, ptr %101, i64 -8
  %401 = icmp sgt i32 %.2274, 0
  br i1 %401, label %.lr.ph391.preheader, label %._crit_edge392

.lr.ph391.preheader:                              ; preds = %.preheader
  %402 = zext nneg i32 %.2274 to i64
  br label %.lr.ph391

.lr.ph391:                                        ; preds = %.lr.ph391.preheader, %405
  %indvars.iv461 = phi i64 [ %402, %.lr.ph391.preheader ], [ %indvars.iv.next462, %405 ]
  %gep = getelementptr ptr, ptr %invariant.gep, i64 %indvars.iv461
  %403 = load ptr, ptr %gep, align 8, !tbaa !21
  %.not247 = icmp eq ptr %403, null
  br i1 %.not247, label %405, label %404

404:                                              ; preds = %.lr.ph391
  call void @_ZN10tetgenmesh12pointdeallocEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %403)
  br label %405

405:                                              ; preds = %.lr.ph391, %404
  %indvars.iv.next462 = add nsw i64 %indvars.iv461, -1
  %406 = icmp sgt i64 %indvars.iv461, 1
  br i1 %406, label %.lr.ph391, label %._crit_edge392, !llvm.loop !44

._crit_edge392:                                   ; preds = %405, %.preheader
  call void @_ZdaPv(ptr noundef nonnull %101) #15
  %407 = load ptr, ptr %94, align 8, !tbaa !20
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %407)
  br label %863

.loopexit257.thread:                              ; preds = %.preheader256, %.loopexit257
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #13
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %16)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #13
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %17)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #13
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %18)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #13
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %19)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #13
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %20)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #13
  call void @_ZN10tetgenmesh4faceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %21)
  br i1 %24, label %408, label %.loopexit253

408:                                              ; preds = %.loopexit257.thread
  call void @_ZN10tetgenmesh9sstpivot1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %409 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %18, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %410 = getelementptr inbounds i8, ptr %18, i64 8
  br label %411

411:                                              ; preds = %411, %408
  call void @_ZN10tetgenmesh12tssdissolve1ERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %18)
  %412 = load i32, ptr %410, align 8, !tbaa !45
  %413 = load ptr, ptr %18, align 8, !tbaa !46
  %414 = sext i32 %412 to i64
  %415 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %414
  %416 = load i32, ptr %415, align 4, !tbaa !47
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds ptr, ptr %413, i64 %417
  %419 = load ptr, ptr %418, align 8, !tbaa !21
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %419, ptr noundef nonnull align 8 dereferenceable(12) %18)
  %420 = load i32, ptr %410, align 8, !tbaa !45
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %414, i64 %421
  %423 = load i32, ptr %422, align 4, !tbaa !47
  store i32 %423, ptr %410, align 8, !tbaa !45
  %424 = load ptr, ptr %18, align 8, !tbaa !46
  %425 = load ptr, ptr %9, align 8, !tbaa !46
  %426 = icmp eq ptr %424, %425
  br i1 %426, label %427, label %411, !llvm.loop !48

427:                                              ; preds = %411
  call void @_ZN10tetgenmesh9sstpivot1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %428 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %18, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %429

429:                                              ; preds = %429, %427
  call void @_ZN10tetgenmesh12tssdissolve1ERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %18)
  %430 = load i32, ptr %410, align 8, !tbaa !45
  %431 = load ptr, ptr %18, align 8, !tbaa !46
  %432 = sext i32 %430 to i64
  %433 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %432
  %434 = load i32, ptr %433, align 4, !tbaa !47
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds ptr, ptr %431, i64 %435
  %437 = load ptr, ptr %436, align 8, !tbaa !21
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %437, ptr noundef nonnull align 8 dereferenceable(12) %18)
  %438 = load i32, ptr %410, align 8, !tbaa !45
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %432, i64 %439
  %441 = load i32, ptr %440, align 4, !tbaa !47
  store i32 %441, ptr %410, align 8, !tbaa !45
  %442 = load ptr, ptr %18, align 8, !tbaa !46
  %443 = load ptr, ptr %9, align 8, !tbaa !46
  %444 = icmp eq ptr %442, %443
  br i1 %444, label %.loopexit253, label %429, !llvm.loop !49

.loopexit253:                                     ; preds = %429, %.loopexit257.thread
  %445 = load ptr, ptr %94, align 8, !tbaa !20
  %446 = getelementptr inbounds i8, ptr %445, i64 32
  %447 = load i64, ptr %446, align 8, !tbaa !24
  %448 = icmp sgt i64 %447, 0
  br i1 %448, label %.lr.ph362, label %._crit_edge363

.lr.ph362:                                        ; preds = %.loopexit253
  %449 = getelementptr inbounds i8, ptr %0, i64 128
  %450 = getelementptr inbounds i8, ptr %0, i64 192
  %451 = getelementptr inbounds i8, ptr %0, i64 624
  %452 = getelementptr inbounds i8, ptr %0, i64 576
  br label %453

453:                                              ; preds = %.lr.ph362, %._crit_edge359
  %indvars.iv441 = phi i64 [ 0, %.lr.ph362 ], [ %indvars.iv.next442, %._crit_edge359 ]
  %454 = phi ptr [ %445, %.lr.ph362 ], [ %544, %._crit_edge359 ]
  %455 = getelementptr inbounds i8, ptr %454, i64 24
  %456 = load ptr, ptr %455, align 8, !tbaa !26
  %457 = getelementptr inbounds i8, ptr %454, i64 8
  %458 = load i32, ptr %457, align 8, !tbaa !27
  %459 = trunc nuw nsw i64 %indvars.iv441 to i32
  %460 = lshr i32 %459, %458
  %461 = zext nneg i32 %460 to i64
  %462 = getelementptr inbounds ptr, ptr %456, i64 %461
  %463 = load ptr, ptr %462, align 8, !tbaa !21
  %464 = getelementptr inbounds i8, ptr %454, i64 12
  %465 = load i32, ptr %464, align 4, !tbaa !28
  %466 = and i32 %465, %459
  %467 = load i32, ptr %454, align 8, !tbaa !29
  %468 = mul nsw i32 %466, %467
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds i8, ptr %463, i64 %469
  store ptr %470, ptr %5, align 8, !tbaa !21
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %470, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %471 = call noundef ptr @_ZN10tetgenmesh6encodeERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1, ptr noundef %471)
  %472 = load ptr, ptr %449, align 8, !tbaa !30
  %473 = load ptr, ptr %450, align 8, !tbaa !31
  %474 = call noundef i32 @_ZN10tetgenmesh13getvertexstarEiPdPNS_9arraypoolES2_S2_(ptr noundef nonnull align 8 dereferenceable(1536) %0, i32 noundef 0, ptr noundef %1, ptr noundef %472, ptr noundef null, ptr noundef %473)
  %475 = call noundef zeroext i1 @_ZN10tetgenmesh9ishulltetERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br i1 %475, label %516, label %.preheader252

.preheader252:                                    ; preds = %453
  %476 = load ptr, ptr %449, align 8, !tbaa !30
  %477 = getelementptr inbounds i8, ptr %476, i64 32
  %478 = load i64, ptr %477, align 8, !tbaa !24
  %479 = icmp sgt i64 %478, 0
  br i1 %479, label %.lr.ph353, label %._crit_edge354

.lr.ph353:                                        ; preds = %.preheader252
  %480 = getelementptr inbounds ptr, ptr %101, i64 %indvars.iv441
  br label %481

481:                                              ; preds = %.lr.ph353, %481
  %indvars.iv435 = phi i64 [ 0, %.lr.ph353 ], [ %indvars.iv.next436, %481 ]
  %482 = phi ptr [ %476, %.lr.ph353 ], [ %500, %481 ]
  %483 = getelementptr inbounds i8, ptr %482, i64 24
  %484 = load ptr, ptr %483, align 8, !tbaa !26
  %485 = getelementptr inbounds i8, ptr %482, i64 8
  %486 = load i32, ptr %485, align 8, !tbaa !27
  %487 = trunc nuw nsw i64 %indvars.iv435 to i32
  %488 = lshr i32 %487, %486
  %489 = zext nneg i32 %488 to i64
  %490 = getelementptr inbounds ptr, ptr %484, i64 %489
  %491 = load ptr, ptr %490, align 8, !tbaa !21
  %492 = getelementptr inbounds i8, ptr %482, i64 12
  %493 = load i32, ptr %492, align 4, !tbaa !28
  %494 = and i32 %493, %487
  %495 = load i32, ptr %482, align 8, !tbaa !29
  %496 = mul nsw i32 %494, %495
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds i8, ptr %491, i64 %497
  store ptr %498, ptr %10, align 8, !tbaa !21
  %499 = load ptr, ptr %480, align 8, !tbaa !21
  call void @_ZN10tetgenmesh7setoppoERNS_7trifaceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %498, ptr noundef %499)
  %indvars.iv.next436 = add nuw nsw i64 %indvars.iv435, 1
  %500 = load ptr, ptr %449, align 8, !tbaa !30
  %501 = getelementptr inbounds i8, ptr %500, i64 32
  %502 = load i64, ptr %501, align 8, !tbaa !24
  %503 = icmp sgt i64 %502, %indvars.iv.next436
  br i1 %503, label %481, label %._crit_edge354, !llvm.loop !50

._crit_edge354:                                   ; preds = %481, %.preheader252
  %.lcssa264 = phi ptr [ %476, %.preheader252 ], [ %500, %481 ]
  %504 = getelementptr inbounds i8, ptr %.lcssa264, i64 24
  %505 = load ptr, ptr %504, align 8, !tbaa !26
  %506 = load ptr, ptr %505, align 8, !tbaa !21
  store ptr %506, ptr %10, align 8, !tbaa !21
  %507 = getelementptr inbounds ptr, ptr %101, i64 %indvars.iv441
  %508 = load ptr, ptr %507, align 8, !tbaa !21
  %509 = load ptr, ptr %506, align 8, !tbaa !46
  call void @_ZN10tetgenmesh12setpoint2tetEPdPS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %508, ptr noundef %509)
  %510 = load i64, ptr %451, align 8, !tbaa !51
  %511 = add nsw i64 %510, 1
  store i64 %511, ptr %451, align 8, !tbaa !51
  %512 = load i64, ptr %452, align 8, !tbaa !52
  %513 = icmp sgt i64 %512, 0
  br i1 %513, label %514, label %516

514:                                              ; preds = %._crit_edge354
  %515 = add nsw i64 %512, -1
  store i64 %515, ptr %452, align 8, !tbaa !52
  br label %516

516:                                              ; preds = %._crit_edge354, %514, %453
  %517 = load ptr, ptr %450, align 8, !tbaa !31
  %518 = getelementptr inbounds i8, ptr %517, i64 32
  %519 = load i64, ptr %518, align 8, !tbaa !24
  %520 = icmp sgt i64 %519, 0
  br i1 %520, label %.lr.ph358, label %._crit_edge359

.lr.ph358:                                        ; preds = %516, %.lr.ph358
  %indvars.iv438 = phi i64 [ %indvars.iv.next439, %.lr.ph358 ], [ 0, %516 ]
  %521 = phi ptr [ %538, %.lr.ph358 ], [ %517, %516 ]
  %522 = getelementptr inbounds i8, ptr %521, i64 24
  %523 = load ptr, ptr %522, align 8, !tbaa !26
  %524 = getelementptr inbounds i8, ptr %521, i64 8
  %525 = load i32, ptr %524, align 8, !tbaa !27
  %526 = trunc nuw nsw i64 %indvars.iv438 to i32
  %527 = lshr i32 %526, %525
  %528 = zext nneg i32 %527 to i64
  %529 = getelementptr inbounds ptr, ptr %523, i64 %528
  %530 = load ptr, ptr %529, align 8, !tbaa !21
  %531 = getelementptr inbounds i8, ptr %521, i64 12
  %532 = load i32, ptr %531, align 4, !tbaa !28
  %533 = and i32 %532, %526
  %534 = load i32, ptr %521, align 8, !tbaa !29
  %535 = mul nsw i32 %533, %534
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds i8, ptr %530, i64 %536
  store ptr %537, ptr %5, align 8, !tbaa !21
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %537, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh8dissolveERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh10tsdissolveERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %indvars.iv.next439 = add nuw nsw i64 %indvars.iv438, 1
  %538 = load ptr, ptr %450, align 8, !tbaa !31
  %539 = getelementptr inbounds i8, ptr %538, i64 32
  %540 = load i64, ptr %539, align 8, !tbaa !24
  %541 = icmp sgt i64 %540, %indvars.iv.next439
  br i1 %541, label %.lr.ph358, label %._crit_edge359, !llvm.loop !53

._crit_edge359:                                   ; preds = %.lr.ph358, %516
  %542 = load ptr, ptr %449, align 8, !tbaa !30
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %542)
  %543 = load ptr, ptr %450, align 8, !tbaa !31
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %543)
  %indvars.iv.next442 = add nuw nsw i64 %indvars.iv441, 1
  %544 = load ptr, ptr %94, align 8, !tbaa !20
  %545 = getelementptr inbounds i8, ptr %544, i64 32
  %546 = load i64, ptr %545, align 8, !tbaa !24
  %547 = icmp sgt i64 %546, %indvars.iv.next442
  br i1 %547, label %453, label %._crit_edge363, !llvm.loop !54

._crit_edge363:                                   ; preds = %._crit_edge359, %.loopexit253
  %.lcssa265 = phi ptr [ %445, %.loopexit253 ], [ %544, %._crit_edge359 ]
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %.lcssa265)
  br i1 %24, label %557, label %548

548:                                              ; preds = %._crit_edge363
  %549 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %550 = icmp eq ptr %549, %1
  br i1 %550, label %551, label %552

551:                                              ; preds = %548
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %.thread

552:                                              ; preds = %548
  %553 = call noundef ptr @_ZN10tetgenmesh5sapexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %554 = icmp eq ptr %553, %1
  br i1 %554, label %555, label %.thread

555:                                              ; preds = %552
  call void @_ZN10tetgenmesh11senext2selfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %.thread

.thread:                                          ; preds = %551, %555, %552
  %556 = call noundef i32 @_ZN10tetgenmesh13sremovevertexEPdPNS_4faceES2_i(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1, ptr noundef nonnull %3, ptr noundef null, i32 noundef 0)
  br label %560

557:                                              ; preds = %._crit_edge363
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %558 = call noundef i32 @_ZN10tetgenmesh13sremovevertexEPdPNS_4faceES2_i(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1, ptr noundef nonnull %3, ptr noundef nonnull %7, i32 noundef 0)
  %559 = getelementptr inbounds i8, ptr %7, i64 8
  store i32 0, ptr %559, align 8, !tbaa !5
  br label %560

560:                                              ; preds = %.thread, %557
  %561 = getelementptr inbounds i8, ptr %0, i64 200
  %562 = load ptr, ptr %561, align 8, !tbaa !55
  %563 = getelementptr inbounds i8, ptr %562, i64 32
  %564 = load i64, ptr %563, align 8, !tbaa !24
  %565 = icmp sgt i64 %564, 0
  br i1 %565, label %.lr.ph367, label %._crit_edge368

.lr.ph367:                                        ; preds = %560
  %566 = getelementptr inbounds i8, ptr %16, i64 8
  %567 = getelementptr inbounds i8, ptr %0, i64 280
  %568 = getelementptr inbounds i8, ptr %9, i64 8
  br label %569

569:                                              ; preds = %.lr.ph367, %569
  %indvars.iv444 = phi i64 [ 0, %.lr.ph367 ], [ %indvars.iv.next445, %569 ]
  %570 = phi ptr [ %562, %.lr.ph367 ], [ %638, %569 ]
  %571 = getelementptr inbounds i8, ptr %570, i64 24
  %572 = load ptr, ptr %571, align 8, !tbaa !26
  %573 = getelementptr inbounds i8, ptr %570, i64 8
  %574 = load i32, ptr %573, align 8, !tbaa !27
  %575 = trunc nuw nsw i64 %indvars.iv444 to i32
  %576 = lshr i32 %575, %574
  %577 = zext nneg i32 %576 to i64
  %578 = getelementptr inbounds ptr, ptr %572, i64 %577
  %579 = load ptr, ptr %578, align 8, !tbaa !21
  %580 = getelementptr inbounds i8, ptr %570, i64 12
  %581 = load i32, ptr %580, align 4, !tbaa !28
  %582 = and i32 %581, %575
  %583 = load i32, ptr %570, align 8, !tbaa !29
  %584 = mul nsw i32 %582, %583
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds i8, ptr %579, i64 %585
  store ptr %586, ptr %5, align 8, !tbaa !21
  call void @_ZN10tetgenmesh7sinfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %586)
  %587 = load ptr, ptr %5, align 8, !tbaa !21
  %588 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %19, ptr noundef nonnull align 8 dereferenceable(12) %587)
  %589 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %19)
  %590 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %19)
  %591 = call noundef ptr @_ZN10tetgenmesh5sapexERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %19)
  call void @_ZN10tetgenmesh15maketetrahedronEPNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %16)
  call void @_ZN10tetgenmesh15maketetrahedronEPNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %9)
  %592 = load ptr, ptr %16, align 8, !tbaa !46
  %593 = load i32, ptr %566, align 8, !tbaa !45
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh8orgpivotE, i64 0, i64 %594
  %596 = load i32, ptr %595, align 4, !tbaa !47
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds ptr, ptr %592, i64 %597
  store ptr %589, ptr %598, align 8, !tbaa !21
  %599 = load ptr, ptr %16, align 8, !tbaa !46
  %600 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9destpivotE, i64 0, i64 %594
  %601 = load i32, ptr %600, align 4, !tbaa !47
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds ptr, ptr %599, i64 %602
  store ptr %590, ptr %603, align 8, !tbaa !21
  %604 = load ptr, ptr %16, align 8, !tbaa !46
  %605 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9apexpivotE, i64 0, i64 %594
  %606 = load i32, ptr %605, align 4, !tbaa !47
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds ptr, ptr %604, i64 %607
  store ptr %591, ptr %608, align 8, !tbaa !21
  %609 = load ptr, ptr %567, align 8, !tbaa !56
  %610 = load ptr, ptr %16, align 8, !tbaa !46
  %611 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9oppopivotE, i64 0, i64 %594
  %612 = load i32, ptr %611, align 4, !tbaa !47
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds ptr, ptr %610, i64 %613
  store ptr %609, ptr %614, align 8, !tbaa !21
  %615 = load ptr, ptr %9, align 8, !tbaa !46
  %616 = load i32, ptr %568, align 8, !tbaa !45
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh8orgpivotE, i64 0, i64 %617
  %619 = load i32, ptr %618, align 4, !tbaa !47
  %620 = sext i32 %619 to i64
  %621 = getelementptr inbounds ptr, ptr %615, i64 %620
  store ptr %590, ptr %621, align 8, !tbaa !21
  %622 = load ptr, ptr %9, align 8, !tbaa !46
  %623 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9destpivotE, i64 0, i64 %617
  %624 = load i32, ptr %623, align 4, !tbaa !47
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds ptr, ptr %622, i64 %625
  store ptr %589, ptr %626, align 8, !tbaa !21
  %627 = load ptr, ptr %9, align 8, !tbaa !46
  %628 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9apexpivotE, i64 0, i64 %617
  %629 = load i32, ptr %628, align 4, !tbaa !47
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds ptr, ptr %627, i64 %630
  store ptr %591, ptr %631, align 8, !tbaa !21
  %632 = load ptr, ptr %567, align 8, !tbaa !56
  %633 = load ptr, ptr %9, align 8, !tbaa !46
  %634 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh9oppopivotE, i64 0, i64 %617
  %635 = load i32, ptr %634, align 4, !tbaa !47
  %636 = sext i32 %635 to i64
  %637 = getelementptr inbounds ptr, ptr %633, i64 %636
  store ptr %632, ptr %637, align 8, !tbaa !21
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16, 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) %16, ptr noundef nonnull align 8 dereferenceable(12) %19)
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %19)
  call void @_ZN10tetgenmesh6tsbondERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %19)
  %indvars.iv.next445 = add nuw nsw i64 %indvars.iv444, 1
  %638 = load ptr, ptr %561, align 8, !tbaa !55
  %639 = getelementptr inbounds i8, ptr %638, i64 32
  %640 = load i64, ptr %639, align 8, !tbaa !24
  %641 = icmp sgt i64 %640, %indvars.iv.next445
  br i1 %641, label %569, label %._crit_edge368, !llvm.loop !57

._crit_edge368:                                   ; preds = %569, %560
  %642 = phi ptr [ %562, %560 ], [ %638, %569 ]
  %.lcssa262 = phi i64 [ %564, %560 ], [ %640, %569 ]
  %643 = shl nsw i64 %.lcssa262, 1
  %644 = getelementptr inbounds i8, ptr %0, i64 552
  %645 = load i64, ptr %644, align 8, !tbaa !58
  %646 = add nsw i64 %645, %643
  store i64 %646, ptr %644, align 8, !tbaa !58
  br i1 %24, label %647, label %.loopexit

647:                                              ; preds = %._crit_edge368
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %648 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %4, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br label %649

649:                                              ; preds = %655, %647
  %650 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %.not238 = icmp eq ptr %650, %.0204
  br i1 %.not238, label %652, label %651

651:                                              ; preds = %649
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  br label %652

652:                                              ; preds = %651, %649
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4, ptr noundef nonnull align 8 dereferenceable(12) %16)
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4, ptr noundef nonnull align 8 dereferenceable(12) %20)
  %653 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %20)
  %.not239 = icmp eq ptr %653, %.0204
  br i1 %.not239, label %655, label %654

654:                                              ; preds = %652
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %20)
  br label %655

655:                                              ; preds = %654, %652
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %20)
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %20, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %7)
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %7, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16)
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh10spivotselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %656 = load ptr, ptr %4, align 8, !tbaa !19
  %657 = load ptr, ptr %3, align 8, !tbaa !19
  %658 = icmp eq ptr %656, %657
  br i1 %658, label %.loopexit.loopexit, label %649, !llvm.loop !59

.loopexit.loopexit:                               ; preds = %655
  %.pre466 = load ptr, ptr %561, align 8, !tbaa !55
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %._crit_edge368
  %659 = phi ptr [ %.pre466, %.loopexit.loopexit ], [ %642, %._crit_edge368 ]
  %660 = getelementptr inbounds i8, ptr %659, i64 32
  %661 = load i64, ptr %660, align 8, !tbaa !24
  %662 = icmp sgt i64 %661, 0
  br i1 %662, label %.lr.ph374, label %._crit_edge377

.lr.ph374:                                        ; preds = %.loopexit
  %663 = getelementptr inbounds i8, ptr %17, i64 8
  %664 = getelementptr inbounds i8, ptr %0, i64 280
  %665 = getelementptr inbounds i8, ptr %0, i64 144
  %666 = getelementptr inbounds i8, ptr %9, i64 8
  br label %668

.preheader251:                                    ; preds = %762
  %667 = icmp sgt i64 %765, 0
  br i1 %667, label %.lr.ph376, label %._crit_edge377

668:                                              ; preds = %.lr.ph374, %762
  %indvars.iv448 = phi i64 [ 0, %.lr.ph374 ], [ %indvars.iv.next449, %762 ]
  %669 = phi ptr [ %659, %.lr.ph374 ], [ %763, %762 ]
  %670 = getelementptr inbounds i8, ptr %669, i64 24
  %671 = load ptr, ptr %670, align 8, !tbaa !26
  %672 = getelementptr inbounds i8, ptr %669, i64 8
  %673 = load i32, ptr %672, align 8, !tbaa !27
  %674 = trunc nuw nsw i64 %indvars.iv448 to i32
  %675 = lshr i32 %674, %673
  %676 = zext nneg i32 %675 to i64
  %677 = getelementptr inbounds ptr, ptr %671, i64 %676
  %678 = load ptr, ptr %677, align 8, !tbaa !21
  %679 = getelementptr inbounds i8, ptr %669, i64 12
  %680 = load i32, ptr %679, align 4, !tbaa !28
  %681 = and i32 %680, %674
  %682 = load i32, ptr %669, align 8, !tbaa !29
  %683 = mul nsw i32 %681, %682
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds i8, ptr %678, i64 %684
  store ptr %685, ptr %5, align 8, !tbaa !21
  %686 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh4faceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %19, ptr noundef nonnull align 8 dereferenceable(12) %685)
  br label %687

687:                                              ; preds = %668, %761
  %688 = phi i1 [ true, %668 ], [ false, %761 ]
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %19, ptr noundef nonnull align 8 dereferenceable(12) %16)
  br label %689

689:                                              ; preds = %687, %759
  %.5215370 = phi i32 [ 0, %687 ], [ %760, %759 ]
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %690 = load ptr, ptr %17, align 8, !tbaa !46
  %691 = load i32, ptr %663, align 8, !tbaa !45
  %692 = and i32 %691, 3
  %693 = zext nneg i32 %692 to i64
  %694 = getelementptr inbounds ptr, ptr %690, i64 %693
  %695 = load ptr, ptr %694, align 8, !tbaa !21
  %696 = icmp eq ptr %695, null
  br i1 %696, label %697, label %759

697:                                              ; preds = %689
  call void @_ZN10tetgenmesh7sspivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %19, ptr noundef nonnull align 8 dereferenceable(12) %21)
  %698 = load ptr, ptr %21, align 8, !tbaa !19
  %.not242 = icmp eq ptr %698, null
  br i1 %.not242, label %700, label %699

699:                                              ; preds = %697
  call void @_ZN10tetgenmesh8tssbond1ERNS_7trifaceERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %21)
  call void @_ZN10tetgenmesh8sstbond1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %21, ptr noundef nonnull align 8 dereferenceable(12) %16)
  br label %700

700:                                              ; preds = %699, %697
  call void @_ZN10tetgenmesh6spivotERNS_4faceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %19, ptr noundef nonnull align 8 dereferenceable(12) %20)
  %701 = load ptr, ptr %20, align 8, !tbaa !19
  %.not243 = icmp eq ptr %701, null
  br i1 %.not243, label %716, label %702

702:                                              ; preds = %700
  %703 = call noundef ptr @_ZN10tetgenmesh4sorgERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %20)
  %704 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %19)
  %.not245 = icmp eq ptr %703, %704
  br i1 %.not245, label %706, label %705

705:                                              ; preds = %702
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %20)
  br label %706

706:                                              ; preds = %705, %702
  call void @_ZN10tetgenmesh7stpivotERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %20, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %707 = call noundef zeroext i1 @_ZN10tetgenmesh9sinfectedERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %20)
  br i1 %707, label %708, label %709

708:                                              ; preds = %706
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %727

709:                                              ; preds = %706
  %710 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %18, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %711

711:                                              ; preds = %711, %709
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %18, ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8, ptr noundef nonnull align 8 dereferenceable(12) %18)
  %712 = load ptr, ptr %18, align 8, !tbaa !46
  %713 = icmp eq ptr %712, null
  br i1 %713, label %714, label %711, !llvm.loop !60

714:                                              ; preds = %711
  %715 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %727

716:                                              ; preds = %700
  call void @_ZN10tetgenmesh9sstpivot1ERNS_4faceERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %21, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %717 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %718 = call noundef ptr @_ZN10tetgenmesh5sdestERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %19)
  %.not244 = icmp eq ptr %717, %718
  br i1 %.not244, label %720, label %719

719:                                              ; preds = %716
  call void @_ZN10tetgenmesh8esymselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %720

720:                                              ; preds = %719, %716
  %721 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %18, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %722

722:                                              ; preds = %722, %720
  call void @_ZN10tetgenmesh4esymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %18, ptr noundef nonnull align 8 dereferenceable(12) %8)
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %8, ptr noundef nonnull align 8 dereferenceable(12) %18)
  %723 = load ptr, ptr %18, align 8, !tbaa !46
  %724 = icmp eq ptr %723, null
  br i1 %724, label %725, label %722, !llvm.loop !61

725:                                              ; preds = %722
  %726 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %9, ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %727

727:                                              ; preds = %708, %714, %725
  %728 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %17)
  %729 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %730 = icmp eq ptr %729, %1
  br i1 %730, label %731, label %748

731:                                              ; preds = %727
  %732 = load ptr, ptr %665, align 8, !tbaa !62
  %733 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %732, ptr noundef nonnull %10)
  %734 = load ptr, ptr %10, align 8, !tbaa !21
  %735 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN10tetgenmesh7trifaceaSERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %734, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %736 = load i32, ptr %666, align 8, !tbaa !45
  %737 = load ptr, ptr %9, align 8, !tbaa !46
  %738 = sext i32 %736 to i64
  %739 = getelementptr inbounds [12 x i32], ptr @_ZN10tetgenmesh10facepivot1E, i64 0, i64 %738
  %740 = load i32, ptr %739, align 4, !tbaa !47
  %741 = sext i32 %740 to i64
  %742 = getelementptr inbounds ptr, ptr %737, i64 %741
  %743 = load ptr, ptr %742, align 8, !tbaa !21
  call void @_ZN10tetgenmesh6decodeEPPdRNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %743, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %744 = load i32, ptr %666, align 8, !tbaa !45
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds [12 x [12 x i32]], ptr @_ZN10tetgenmesh10facepivot2E, i64 0, i64 %738, i64 %745
  %747 = load i32, ptr %746, align 4, !tbaa !47
  store i32 %747, ptr %666, align 8, !tbaa !45
  br label %758

748:                                              ; preds = %727
  %749 = load ptr, ptr %664, align 8, !tbaa !56
  %750 = icmp eq ptr %728, %749
  br i1 %750, label %751, label %758

751:                                              ; preds = %748
  %752 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  %753 = load ptr, ptr %664, align 8, !tbaa !56
  %.not246 = icmp eq ptr %752, %753
  br i1 %.not246, label %758, label %754

754:                                              ; preds = %751
  %755 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %9)
  call void @_ZN10tetgenmesh7setapexERNS_7trifaceEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %17, ptr noundef %755)
  %756 = load i64, ptr %644, align 8, !tbaa !58
  %757 = add nsw i64 %756, -1
  store i64 %757, ptr %644, align 8, !tbaa !58
  br label %758

758:                                              ; preds = %748, %754, %751, %731
  call void @_ZN10tetgenmesh4bondERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %17, ptr noundef nonnull align 8 dereferenceable(12) %9)
  br label %759

759:                                              ; preds = %758, %689
  call void @_ZN10tetgenmesh9enextselfERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %16)
  call void @_ZN10tetgenmesh10senextselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %19)
  %760 = add nuw nsw i32 %.5215370, 1
  %exitcond447.not = icmp eq i32 %760, 3
  br i1 %exitcond447.not, label %761, label %689, !llvm.loop !63

761:                                              ; preds = %759
  call void @_ZN10tetgenmesh9sesymselfERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %19)
  br i1 %688, label %687, label %762, !llvm.loop !64

762:                                              ; preds = %761
  %indvars.iv.next449 = add nuw nsw i64 %indvars.iv448, 1
  %763 = load ptr, ptr %561, align 8, !tbaa !55
  %764 = getelementptr inbounds i8, ptr %763, i64 32
  %765 = load i64, ptr %764, align 8, !tbaa !24
  %766 = icmp sgt i64 %765, %indvars.iv.next449
  br i1 %766, label %668, label %.preheader251, !llvm.loop !65

.lr.ph376:                                        ; preds = %.preheader251, %.lr.ph376
  %indvars.iv451 = phi i64 [ %indvars.iv.next452, %.lr.ph376 ], [ 0, %.preheader251 ]
  %767 = phi ptr [ %784, %.lr.ph376 ], [ %763, %.preheader251 ]
  %768 = getelementptr inbounds i8, ptr %767, i64 24
  %769 = load ptr, ptr %768, align 8, !tbaa !26
  %770 = getelementptr inbounds i8, ptr %767, i64 8
  %771 = load i32, ptr %770, align 8, !tbaa !27
  %772 = trunc nuw nsw i64 %indvars.iv451 to i32
  %773 = lshr i32 %772, %771
  %774 = zext nneg i32 %773 to i64
  %775 = getelementptr inbounds ptr, ptr %769, i64 %774
  %776 = load ptr, ptr %775, align 8, !tbaa !21
  %777 = getelementptr inbounds i8, ptr %767, i64 12
  %778 = load i32, ptr %777, align 4, !tbaa !28
  %779 = and i32 %778, %772
  %780 = load i32, ptr %767, align 8, !tbaa !29
  %781 = mul nsw i32 %779, %780
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds i8, ptr %776, i64 %782
  store ptr %783, ptr %5, align 8, !tbaa !21
  call void @_ZN10tetgenmesh9suninfectERNS_4faceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %783)
  %indvars.iv.next452 = add nuw nsw i64 %indvars.iv451, 1
  %784 = load ptr, ptr %561, align 8, !tbaa !55
  %785 = getelementptr inbounds i8, ptr %784, i64 32
  %786 = load i64, ptr %785, align 8, !tbaa !24
  %787 = icmp sgt i64 %786, %indvars.iv.next452
  br i1 %787, label %.lr.ph376, label %._crit_edge377, !llvm.loop !66

._crit_edge377:                                   ; preds = %.lr.ph376, %.loopexit, %.preheader251
  %.lcssa261 = phi ptr [ %763, %.preheader251 ], [ %659, %.loopexit ], [ %784, %.lr.ph376 ]
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %.lcssa261)
  %788 = getelementptr inbounds i8, ptr %0, i64 144
  %789 = load ptr, ptr %788, align 8, !tbaa !62
  %790 = getelementptr inbounds i8, ptr %789, i64 32
  %791 = load i64, ptr %790, align 8, !tbaa !24
  %792 = icmp sgt i64 %791, 0
  br i1 %792, label %.lr.ph380, label %817

.lr.ph380:                                        ; preds = %._crit_edge377, %.lr.ph380
  %indvars.iv454 = phi i64 [ %indvars.iv.next455, %.lr.ph380 ], [ 0, %._crit_edge377 ]
  %793 = phi ptr [ %811, %.lr.ph380 ], [ %789, %._crit_edge377 ]
  %794 = getelementptr inbounds i8, ptr %793, i64 24
  %795 = load ptr, ptr %794, align 8, !tbaa !26
  %796 = getelementptr inbounds i8, ptr %793, i64 8
  %797 = load i32, ptr %796, align 8, !tbaa !27
  %798 = trunc nuw nsw i64 %indvars.iv454 to i32
  %799 = lshr i32 %798, %797
  %800 = zext nneg i32 %799 to i64
  %801 = getelementptr inbounds ptr, ptr %795, i64 %800
  %802 = load ptr, ptr %801, align 8, !tbaa !21
  %803 = getelementptr inbounds i8, ptr %793, i64 12
  %804 = load i32, ptr %803, align 4, !tbaa !28
  %805 = and i32 %804, %798
  %806 = load i32, ptr %793, align 8, !tbaa !29
  %807 = mul nsw i32 %805, %806
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds i8, ptr %802, i64 %808
  store ptr %809, ptr %10, align 8, !tbaa !21
  %810 = load ptr, ptr %809, align 8, !tbaa !46
  call void @_ZN10tetgenmesh18tetrahedrondeallocEPPPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %810)
  %indvars.iv.next455 = add nuw nsw i64 %indvars.iv454, 1
  %811 = load ptr, ptr %788, align 8, !tbaa !62
  %812 = getelementptr inbounds i8, ptr %811, i64 32
  %813 = load i64, ptr %812, align 8, !tbaa !24
  %814 = icmp sgt i64 %813, %indvars.iv.next455
  br i1 %814, label %.lr.ph380, label %._crit_edge381, !llvm.loop !67

._crit_edge381:                                   ; preds = %.lr.ph380
  %815 = load i64, ptr %644, align 8, !tbaa !58
  %816 = sub nsw i64 %815, %813
  store i64 %816, ptr %644, align 8, !tbaa !58
  call void @_ZN10tetgenmesh9arraypool7restartEv(ptr noundef nonnull align 8 dereferenceable(48) %811)
  br label %817

817:                                              ; preds = %._crit_edge381, %._crit_edge377
  call void @_ZN10tetgenmesh12setpointtypeEPdNS_8verttypeE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %1, i32 noundef 0)
  %818 = getelementptr inbounds i8, ptr %0, i64 592
  %819 = load i64, ptr %818, align 8, !tbaa !68
  %820 = add nsw i64 %819, 1
  store i64 %820, ptr %818, align 8, !tbaa !68
  %. = select i1 %24, i64 608, i64 616
  %821 = getelementptr inbounds i8, ptr %0, i64 %.
  %822 = load i64, ptr %821, align 8, !tbaa !69
  %823 = add nsw i64 %822, -1
  store i64 %823, ptr %821, align 8, !tbaa !69
  %824 = getelementptr inbounds i8, ptr %0, i64 576
  %825 = load i64, ptr %824, align 8, !tbaa !52
  %826 = icmp sgt i64 %825, 0
  br i1 %826, label %827, label %829

827:                                              ; preds = %817
  %828 = add nuw nsw i64 %825, 1
  store i64 %828, ptr %824, align 8, !tbaa !52
  br label %829

829:                                              ; preds = %827, %817
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #13
  %830 = getelementptr inbounds i8, ptr %0, i64 16
  %831 = load ptr, ptr %830, align 8, !tbaa !11
  %832 = getelementptr inbounds i8, ptr %831, i64 184
  %833 = load i32, ptr %832, align 8, !tbaa !70
  store i32 100000, ptr %832, align 8, !tbaa !70
  br i1 %102, label %.lr.ph387, label %._crit_edge388.thread

._crit_edge388.thread:                            ; preds = %829
  %834 = getelementptr inbounds i8, ptr %831, i64 184
  store i32 %833, ptr %834, align 8, !tbaa !70
  br label %862

.lr.ph387:                                        ; preds = %829
  %835 = getelementptr inbounds i8, ptr %0, i64 232
  %wide.trip.count = and i64 %97, 2147483647
  br label %836

836:                                              ; preds = %.lr.ph387, %853
  %indvars.iv457 = phi i64 [ 0, %.lr.ph387 ], [ %indvars.iv.next458, %853 ]
  %.0202385 = phi i32 [ 0, %.lr.ph387 ], [ %.1203, %853 ]
  %837 = getelementptr inbounds ptr, ptr %101, i64 %indvars.iv457
  %838 = load ptr, ptr %837, align 8, !tbaa !21
  %.not240 = icmp eq ptr %838, null
  br i1 %.not240, label %853, label %839

839:                                              ; preds = %836
  %840 = call noundef i32 @_ZN10tetgenmesh19removevertexbyflipsEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %838)
  %.not241 = icmp eq i32 %840, 0
  br i1 %.not241, label %841, label %853

841:                                              ; preds = %839
  %842 = load ptr, ptr %830, align 8, !tbaa !11
  %843 = getelementptr inbounds i8, ptr %842, i64 168
  %844 = load i32, ptr %843, align 8, !tbaa !71
  %845 = icmp sgt i32 %844, 0
  br i1 %845, label %846, label %851

846:                                              ; preds = %841
  %847 = load ptr, ptr %835, align 8, !tbaa !72
  %848 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %847, ptr noundef nonnull %22)
  %849 = load ptr, ptr %837, align 8, !tbaa !21
  %850 = load ptr, ptr %22, align 8, !tbaa !21
  store ptr %849, ptr %850, align 8, !tbaa !21
  br label %851

851:                                              ; preds = %846, %841
  %852 = add nsw i32 %.0202385, 1
  br label %853

853:                                              ; preds = %836, %851, %839
  %.1203 = phi i32 [ %.0202385, %839 ], [ %852, %851 ], [ %.0202385, %836 ]
  %indvars.iv.next458 = add nuw nsw i64 %indvars.iv457, 1
  %exitcond460.not = icmp eq i64 %indvars.iv.next458, %wide.trip.count
  br i1 %exitcond460.not, label %._crit_edge388, label %836, !llvm.loop !73

._crit_edge388:                                   ; preds = %853
  %.pre467 = load ptr, ptr %830, align 8, !tbaa !11
  %854 = getelementptr inbounds i8, ptr %.pre467, i64 184
  store i32 %833, ptr %854, align 8, !tbaa !70
  %855 = icmp sgt i32 %.1203, 0
  br i1 %855, label %856, label %862

856:                                              ; preds = %._crit_edge388
  %857 = getelementptr inbounds i8, ptr %.pre467, i64 148
  %858 = load i32, ptr %857, align 4, !tbaa !16
  %859 = icmp sgt i32 %858, 2
  br i1 %859, label %860, label %862

860:                                              ; preds = %856
  %861 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.427, i32 noundef %.1203)
  br label %862

862:                                              ; preds = %._crit_edge388.thread, %._crit_edge388, %860, %856
  call void @_ZdaPv(ptr noundef nonnull %101) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #13
  br label %863

863:                                              ; preds = %862, %._crit_edge392
  %.0 = phi i32 [ 0, %._crit_edge392 ], [ 1, %862 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #13
  br label %864

864:                                              ; preds = %73, %863, %72
  %.1 = phi i32 [ 0, %72 ], [ %.0, %863 ], [ 0, %73 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #13
  ret i32 %.1
}

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #11

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #12

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

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

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


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