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

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

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

@.str.142 = external hidden unnamed_addr constant [2 x i8], align 1
@_ZN10tetgenmesh2PIE = external dso_local global double, align 8
@.str.616 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.617 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.618 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.619 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.620 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.621 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.622 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.623 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.624 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.625 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.626 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.627 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.628 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.629 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.630 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.631 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.632 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.633 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.634 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.635 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.636 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.637 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.638 = external hidden unnamed_addr constant [48 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

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

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

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #2

; Function Attrs: nounwind
declare i32 @sprintf(ptr noundef, ptr noundef, ...) #3

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind
declare double @acos(double noundef) #3

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10tetgenmesh17qualitystatisticsEv(ptr noundef nonnull align 8 dereferenceable(1536) %0) #6 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.tetgenmesh::triface", align 8
  %4 = alloca %"class.tetgenmesh::triface", align 8
  %5 = alloca [4 x ptr], align 16
  %6 = alloca [128 x i8], align 16
  %7 = alloca [12 x double], align 16
  %8 = alloca [12 x double], align 16
  %9 = alloca [4 x [4 x double]], align 16
  %10 = alloca [4 x double], align 16
  %11 = alloca double, align 8
  %12 = alloca [6 x [3 x double]], align 16
  %13 = alloca [4 x [3 x double]], align 16
  %14 = alloca [4 x double], align 16
  %15 = alloca [6 x double], align 16
  %16 = alloca [6 x double], align 16
  %17 = alloca [3 x double], align 16
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca [12 x i64], align 16
  %43 = alloca [16 x i64], align 16
  %44 = alloca [18 x i64], align 16
  %45 = alloca [18 x i64], align 16
  %46 = alloca [4 x i32], align 16
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %53 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %3) #8
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %3)
  call void @llvm.lifetime.start.p0(i64 16, ptr %4) #8
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %4)
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #8
  call void @llvm.lifetime.start.p0(i64 128, ptr %6) #8
  call void @llvm.lifetime.start.p0(i64 96, ptr %7) #8
  call void @llvm.lifetime.start.p0(i64 96, ptr %8) #8
  call void @llvm.lifetime.start.p0(i64 128, ptr %9) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.start.p0(i64 144, ptr %12) #8
  call void @llvm.lifetime.start.p0(i64 96, ptr %13) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #8
  call void @llvm.lifetime.start.p0(i64 48, ptr %15) #8
  call void @llvm.lifetime.start.p0(i64 48, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.start.p0(i64 96, ptr %42) #8
  call void @llvm.lifetime.start.p0(i64 128, ptr %43) #8
  call void @llvm.lifetime.start.p0(i64 144, ptr %44) #8
  call void @llvm.lifetime.start.p0(i64 144, ptr %45) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #8
  %54 = call i32 (ptr, ...) @printf(ptr noundef @.str.616)
  store double 0.000000e+00, ptr %35, align 8, !tbaa !9
  store double 0.000000e+00, ptr %34, align 8, !tbaa !9
  store double 0.000000e+00, ptr %39, align 8, !tbaa !9
  store double 0.000000e+00, ptr %38, align 8, !tbaa !9
  store double 0.000000e+00, ptr %28, align 8, !tbaa !9
  store double 0.000000e+00, ptr %29, align 8, !tbaa !9
  %55 = getelementptr inbounds [12 x double], ptr %7, i64 0, i64 0
  store double 7.070000e-01, ptr %55, align 16, !tbaa !9
  %56 = getelementptr inbounds [12 x double], ptr %7, i64 0, i64 1
  store double 1.000000e+00, ptr %56, align 8, !tbaa !9
  %57 = getelementptr inbounds [12 x double], ptr %7, i64 0, i64 2
  store double 1.100000e+00, ptr %57, align 16, !tbaa !9
  %58 = getelementptr inbounds [12 x double], ptr %7, i64 0, i64 3
  store double 1.200000e+00, ptr %58, align 8, !tbaa !9
  %59 = getelementptr inbounds [12 x double], ptr %7, i64 0, i64 4
  store double 1.400000e+00, ptr %59, align 16, !tbaa !9
  %60 = getelementptr inbounds [12 x double], ptr %7, i64 0, i64 5
  store double 1.600000e+00, ptr %60, align 8, !tbaa !9
  %61 = getelementptr inbounds [12 x double], ptr %7, i64 0, i64 6
  store double 1.800000e+00, ptr %61, align 16, !tbaa !9
  %62 = getelementptr inbounds [12 x double], ptr %7, i64 0, i64 7
  store double 2.000000e+00, ptr %62, align 8, !tbaa !9
  %63 = getelementptr inbounds [12 x double], ptr %7, i64 0, i64 8
  store double 2.500000e+00, ptr %63, align 16, !tbaa !9
  %64 = getelementptr inbounds [12 x double], ptr %7, i64 0, i64 9
  store double 3.000000e+00, ptr %64, align 8, !tbaa !9
  %65 = getelementptr inbounds [12 x double], ptr %7, i64 0, i64 10
  store double 1.000000e+01, ptr %65, align 16, !tbaa !9
  %66 = getelementptr inbounds [12 x double], ptr %7, i64 0, i64 11
  store double 0.000000e+00, ptr %66, align 8, !tbaa !9
  %67 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 0
  store double 1.500000e+00, ptr %67, align 16, !tbaa !9
  %68 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 1
  store double 2.000000e+00, ptr %68, align 8, !tbaa !9
  %69 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 2
  store double 2.500000e+00, ptr %69, align 16, !tbaa !9
  %70 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 3
  store double 3.000000e+00, ptr %70, align 8, !tbaa !9
  %71 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 4
  store double 4.000000e+00, ptr %71, align 16, !tbaa !9
  %72 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 5
  store double 6.000000e+00, ptr %72, align 8, !tbaa !9
  %73 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 6
  store double 1.000000e+01, ptr %73, align 16, !tbaa !9
  %74 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 7
  store double 1.500000e+01, ptr %74, align 8, !tbaa !9
  %75 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 8
  store double 2.500000e+01, ptr %75, align 16, !tbaa !9
  %76 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 9
  store double 5.000000e+01, ptr %76, align 8, !tbaa !9
  %77 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 10
  store double 1.000000e+02, ptr %77, align 16, !tbaa !9
  %78 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 11
  store double 0.000000e+00, ptr %78, align 8, !tbaa !9
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %79

79:                                               ; preds = %86, %1
  %80 = load i32, ptr %50, align 4, !tbaa !11
  %81 = icmp slt i32 %80, 12
  br i1 %81, label %82, label %89

82:                                               ; preds = %79
  %83 = load i32, ptr %50, align 4, !tbaa !11
  %84 = sext i32 %83 to i64
  %85 = getelementptr inbounds [12 x i64], ptr %42, i64 0, i64 %84
  store i64 0, ptr %85, align 8, !tbaa !13
  br label %86

86:                                               ; preds = %82
  %87 = load i32, ptr %50, align 4, !tbaa !11
  %88 = add nsw i32 %87, 1
  store i32 %88, ptr %50, align 4, !tbaa !11
  br label %79, !llvm.loop !15

89:                                               ; preds = %79
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %90

90:                                               ; preds = %97, %89
  %91 = load i32, ptr %50, align 4, !tbaa !11
  %92 = icmp slt i32 %91, 12
  br i1 %92, label %93, label %100

93:                                               ; preds = %90
  %94 = load i32, ptr %50, align 4, !tbaa !11
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds [16 x i64], ptr %43, i64 0, i64 %95
  store i64 0, ptr %96, align 8, !tbaa !13
  br label %97

97:                                               ; preds = %93
  %98 = load i32, ptr %50, align 4, !tbaa !11
  %99 = add nsw i32 %98, 1
  store i32 %99, ptr %50, align 4, !tbaa !11
  br label %90, !llvm.loop !17

100:                                              ; preds = %90
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %101

101:                                              ; preds = %108, %100
  %102 = load i32, ptr %50, align 4, !tbaa !11
  %103 = icmp slt i32 %102, 18
  br i1 %103, label %104, label %111

104:                                              ; preds = %101
  %105 = load i32, ptr %50, align 4, !tbaa !11
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds [18 x i64], ptr %44, i64 0, i64 %106
  store i64 0, ptr %107, align 8, !tbaa !13
  br label %108

108:                                              ; preds = %104
  %109 = load i32, ptr %50, align 4, !tbaa !11
  %110 = add nsw i32 %109, 1
  store i32 %110, ptr %50, align 4, !tbaa !11
  br label %101, !llvm.loop !18

111:                                              ; preds = %101
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %112

112:                                              ; preds = %119, %111
  %113 = load i32, ptr %50, align 4, !tbaa !11
  %114 = icmp slt i32 %113, 18
  br i1 %114, label %115, label %122

115:                                              ; preds = %112
  %116 = load i32, ptr %50, align 4, !tbaa !11
  %117 = sext i32 %116 to i64
  %118 = getelementptr inbounds [18 x i64], ptr %45, i64 0, i64 %117
  store i64 0, ptr %118, align 8, !tbaa !13
  br label %119

119:                                              ; preds = %115
  %120 = load i32, ptr %50, align 4, !tbaa !11
  %121 = add nsw i32 %120, 1
  store i32 %121, ptr %50, align 4, !tbaa !11
  br label %112, !llvm.loop !19

122:                                              ; preds = %112
  %123 = getelementptr inbounds %class.tetgenmesh, ptr %53, i32 0, i32 69
  %124 = load double, ptr %123, align 8, !tbaa !20
  %125 = getelementptr inbounds %class.tetgenmesh, ptr %53, i32 0, i32 70
  %126 = load double, ptr %125, align 8, !tbaa !24
  %127 = fsub double %124, %126
  %128 = getelementptr inbounds %class.tetgenmesh, ptr %53, i32 0, i32 71
  %129 = load double, ptr %128, align 8, !tbaa !25
  %130 = fadd double %127, %129
  %131 = getelementptr inbounds %class.tetgenmesh, ptr %53, i32 0, i32 72
  %132 = load double, ptr %131, align 8, !tbaa !26
  %133 = fsub double %130, %132
  %134 = getelementptr inbounds %class.tetgenmesh, ptr %53, i32 0, i32 73
  %135 = load double, ptr %134, align 8, !tbaa !27
  %136 = fadd double %133, %135
  %137 = getelementptr inbounds %class.tetgenmesh, ptr %53, i32 0, i32 74
  %138 = load double, ptr %137, align 8, !tbaa !28
  %139 = fsub double %136, %138
  store double %139, ptr %31, align 8, !tbaa !9
  %140 = load double, ptr %31, align 8, !tbaa !9
  %141 = load double, ptr %31, align 8, !tbaa !9
  %142 = fmul double %140, %141
  store double %142, ptr %31, align 8, !tbaa !9
  %143 = load double, ptr %31, align 8, !tbaa !9
  store double %143, ptr %18, align 8, !tbaa !9
  store double 0.000000e+00, ptr %19, align 8, !tbaa !9
  %144 = load double, ptr %31, align 8, !tbaa !9
  store double %144, ptr %20, align 8, !tbaa !9
  store double 0.000000e+00, ptr %21, align 8, !tbaa !9
  store double 1.000000e+16, ptr %22, align 8, !tbaa !9
  store double 0.000000e+00, ptr %23, align 8, !tbaa !9
  store double 1.800000e+02, ptr %26, align 8, !tbaa !9
  store double 1.800000e+02, ptr %24, align 8, !tbaa !9
  store double 0.000000e+00, ptr %27, align 8, !tbaa !9
  store double 0.000000e+00, ptr %25, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #8
  %145 = getelementptr inbounds %class.tetgenmesh, ptr %53, i32 0, i32 40
  %146 = load i32, ptr %145, align 4, !tbaa !29
  %147 = sub nsw i32 %146, 1
  store i32 %147, ptr %52, align 4, !tbaa !11
  %148 = getelementptr inbounds %class.tetgenmesh, ptr %53, i32 0, i32 4
  %149 = load ptr, ptr %148, align 8, !tbaa !30
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %149)
  %150 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %53)
  %151 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %3, i32 0, i32 0
  store ptr %150, ptr %151, align 8, !tbaa !31
  br label %152

152:                                              ; preds = %1305, %668, %168, %122
  %153 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %3, i32 0, i32 0
  %154 = load ptr, ptr %153, align 8, !tbaa !31
  %155 = icmp ne ptr %154, null
  br i1 %155, label %156, label %1313

156:                                              ; preds = %152
  %157 = getelementptr inbounds %class.tetgenmesh, ptr %53, i32 0, i32 2
  %158 = load ptr, ptr %157, align 8, !tbaa !32
  %159 = getelementptr inbounds %class.tetgenbehavior, ptr %158, i32 0, i32 17
  %160 = load i32, ptr %159, align 4, !tbaa !33
  %161 = icmp ne i32 %160, 0
  br i1 %161, label %162, label %172

162:                                              ; preds = %156
  %163 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %3, i32 0, i32 0
  %164 = load ptr, ptr %163, align 8, !tbaa !31
  %165 = load i32, ptr %52, align 4, !tbaa !11
  %166 = call noundef double @_ZN10tetgenmesh13elemattributeEPPPdi(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %164, i32 noundef %165)
  %167 = fcmp oeq double %166, -1.000000e+00
  br i1 %167, label %168, label %171

168:                                              ; preds = %162
  %169 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %53)
  %170 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %3, i32 0, i32 0
  store ptr %169, ptr %170, align 8, !tbaa !31
  br label %152, !llvm.loop !36

171:                                              ; preds = %162
  br label %172

172:                                              ; preds = %171, %156
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %173

173:                                              ; preds = %187, %172
  %174 = load i32, ptr %50, align 4, !tbaa !11
  %175 = icmp slt i32 %174, 4
  br i1 %175, label %176, label %190

176:                                              ; preds = %173
  %177 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %3, i32 0, i32 0
  %178 = load ptr, ptr %177, align 8, !tbaa !31
  %179 = load i32, ptr %50, align 4, !tbaa !11
  %180 = add nsw i32 4, %179
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds ptr, ptr %178, i64 %181
  %183 = load ptr, ptr %182, align 8, !tbaa !5
  %184 = load i32, ptr %50, align 4, !tbaa !11
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 %185
  store ptr %183, ptr %186, align 8, !tbaa !5
  br label %187

187:                                              ; preds = %176
  %188 = load i32, ptr %50, align 4, !tbaa !11
  %189 = add nsw i32 %188, 1
  store i32 %189, ptr %50, align 4, !tbaa !11
  br label %173, !llvm.loop !37

190:                                              ; preds = %173
  %191 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 1
  %192 = load ptr, ptr %191, align 8, !tbaa !5
  %193 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 0
  %194 = load ptr, ptr %193, align 16, !tbaa !5
  %195 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 2
  %196 = load ptr, ptr %195, align 16, !tbaa !5
  %197 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 3
  %198 = load ptr, ptr %197, align 8, !tbaa !5
  %199 = call noundef double @_ZN10tetgenmesh12orient3dfastEPdS0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %192, ptr noundef %194, ptr noundef %196, ptr noundef %198)
  %200 = fdiv double %199, 6.000000e+00
  store double %200, ptr %30, align 8, !tbaa !9
  %201 = load double, ptr %30, align 8, !tbaa !9
  %202 = load double, ptr %28, align 8, !tbaa !9
  %203 = fadd double %202, %201
  store double %203, ptr %28, align 8, !tbaa !9
  %204 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 0
  %205 = load ptr, ptr %204, align 16, !tbaa !5
  %206 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 1
  %207 = load ptr, ptr %206, align 8, !tbaa !5
  %208 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 2
  %209 = load ptr, ptr %208, align 16, !tbaa !5
  %210 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 3
  %211 = load ptr, ptr %210, align 8, !tbaa !5
  %212 = call noundef double @_ZN10tetgenmesh11tetprismvolEPdS0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %205, ptr noundef %207, ptr noundef %209, ptr noundef %211)
  %213 = load double, ptr %29, align 8, !tbaa !9
  %214 = fadd double %213, %212
  store double %214, ptr %29, align 8, !tbaa !9
  %215 = load double, ptr %30, align 8, !tbaa !9
  %216 = load double, ptr %20, align 8, !tbaa !9
  %217 = fcmp olt double %215, %216
  br i1 %217, label %218, label %220

218:                                              ; preds = %190
  %219 = load double, ptr %30, align 8, !tbaa !9
  store double %219, ptr %20, align 8, !tbaa !9
  br label %220

220:                                              ; preds = %218, %190
  %221 = load double, ptr %30, align 8, !tbaa !9
  %222 = load double, ptr %21, align 8, !tbaa !9
  %223 = fcmp ogt double %221, %222
  br i1 %223, label %224, label %226

224:                                              ; preds = %220
  %225 = load double, ptr %30, align 8, !tbaa !9
  store double %225, ptr %21, align 8, !tbaa !9
  br label %226

226:                                              ; preds = %224, %220
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %227

227:                                              ; preds = %248, %226
  %228 = load i32, ptr %50, align 4, !tbaa !11
  %229 = icmp slt i32 %228, 3
  br i1 %229, label %230, label %251

230:                                              ; preds = %227
  %231 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 0
  %232 = load ptr, ptr %231, align 16, !tbaa !5
  %233 = load i32, ptr %50, align 4, !tbaa !11
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds double, ptr %232, i64 %234
  %236 = load double, ptr %235, align 8, !tbaa !9
  %237 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 3
  %238 = load ptr, ptr %237, align 8, !tbaa !5
  %239 = load i32, ptr %50, align 4, !tbaa !11
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds double, ptr %238, i64 %240
  %242 = load double, ptr %241, align 8, !tbaa !9
  %243 = fsub double %236, %242
  %244 = getelementptr inbounds [6 x [3 x double]], ptr %12, i64 0, i64 0
  %245 = load i32, ptr %50, align 4, !tbaa !11
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds [3 x double], ptr %244, i64 0, i64 %246
  store double %243, ptr %247, align 8, !tbaa !9
  br label %248

248:                                              ; preds = %230
  %249 = load i32, ptr %50, align 4, !tbaa !11
  %250 = add nsw i32 %249, 1
  store i32 %250, ptr %50, align 4, !tbaa !11
  br label %227, !llvm.loop !38

251:                                              ; preds = %227
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %252

252:                                              ; preds = %273, %251
  %253 = load i32, ptr %50, align 4, !tbaa !11
  %254 = icmp slt i32 %253, 3
  br i1 %254, label %255, label %276

255:                                              ; preds = %252
  %256 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 1
  %257 = load ptr, ptr %256, align 8, !tbaa !5
  %258 = load i32, ptr %50, align 4, !tbaa !11
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds double, ptr %257, i64 %259
  %261 = load double, ptr %260, align 8, !tbaa !9
  %262 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 3
  %263 = load ptr, ptr %262, align 8, !tbaa !5
  %264 = load i32, ptr %50, align 4, !tbaa !11
  %265 = sext i32 %264 to i64
  %266 = getelementptr inbounds double, ptr %263, i64 %265
  %267 = load double, ptr %266, align 8, !tbaa !9
  %268 = fsub double %261, %267
  %269 = getelementptr inbounds [6 x [3 x double]], ptr %12, i64 0, i64 1
  %270 = load i32, ptr %50, align 4, !tbaa !11
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds [3 x double], ptr %269, i64 0, i64 %271
  store double %268, ptr %272, align 8, !tbaa !9
  br label %273

273:                                              ; preds = %255
  %274 = load i32, ptr %50, align 4, !tbaa !11
  %275 = add nsw i32 %274, 1
  store i32 %275, ptr %50, align 4, !tbaa !11
  br label %252, !llvm.loop !39

276:                                              ; preds = %252
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %277

277:                                              ; preds = %298, %276
  %278 = load i32, ptr %50, align 4, !tbaa !11
  %279 = icmp slt i32 %278, 3
  br i1 %279, label %280, label %301

280:                                              ; preds = %277
  %281 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 2
  %282 = load ptr, ptr %281, align 16, !tbaa !5
  %283 = load i32, ptr %50, align 4, !tbaa !11
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds double, ptr %282, i64 %284
  %286 = load double, ptr %285, align 8, !tbaa !9
  %287 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 3
  %288 = load ptr, ptr %287, align 8, !tbaa !5
  %289 = load i32, ptr %50, align 4, !tbaa !11
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds double, ptr %288, i64 %290
  %292 = load double, ptr %291, align 8, !tbaa !9
  %293 = fsub double %286, %292
  %294 = getelementptr inbounds [6 x [3 x double]], ptr %12, i64 0, i64 2
  %295 = load i32, ptr %50, align 4, !tbaa !11
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds [3 x double], ptr %294, i64 0, i64 %296
  store double %293, ptr %297, align 8, !tbaa !9
  br label %298

298:                                              ; preds = %280
  %299 = load i32, ptr %50, align 4, !tbaa !11
  %300 = add nsw i32 %299, 1
  store i32 %300, ptr %50, align 4, !tbaa !11
  br label %277, !llvm.loop !40

301:                                              ; preds = %277
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %302

302:                                              ; preds = %323, %301
  %303 = load i32, ptr %50, align 4, !tbaa !11
  %304 = icmp slt i32 %303, 3
  br i1 %304, label %305, label %326

305:                                              ; preds = %302
  %306 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 1
  %307 = load ptr, ptr %306, align 8, !tbaa !5
  %308 = load i32, ptr %50, align 4, !tbaa !11
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds double, ptr %307, i64 %309
  %311 = load double, ptr %310, align 8, !tbaa !9
  %312 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 0
  %313 = load ptr, ptr %312, align 16, !tbaa !5
  %314 = load i32, ptr %50, align 4, !tbaa !11
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds double, ptr %313, i64 %315
  %317 = load double, ptr %316, align 8, !tbaa !9
  %318 = fsub double %311, %317
  %319 = getelementptr inbounds [6 x [3 x double]], ptr %12, i64 0, i64 3
  %320 = load i32, ptr %50, align 4, !tbaa !11
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds [3 x double], ptr %319, i64 0, i64 %321
  store double %318, ptr %322, align 8, !tbaa !9
  br label %323

323:                                              ; preds = %305
  %324 = load i32, ptr %50, align 4, !tbaa !11
  %325 = add nsw i32 %324, 1
  store i32 %325, ptr %50, align 4, !tbaa !11
  br label %302, !llvm.loop !41

326:                                              ; preds = %302
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %327

327:                                              ; preds = %348, %326
  %328 = load i32, ptr %50, align 4, !tbaa !11
  %329 = icmp slt i32 %328, 3
  br i1 %329, label %330, label %351

330:                                              ; preds = %327
  %331 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 2
  %332 = load ptr, ptr %331, align 16, !tbaa !5
  %333 = load i32, ptr %50, align 4, !tbaa !11
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds double, ptr %332, i64 %334
  %336 = load double, ptr %335, align 8, !tbaa !9
  %337 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 1
  %338 = load ptr, ptr %337, align 8, !tbaa !5
  %339 = load i32, ptr %50, align 4, !tbaa !11
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds double, ptr %338, i64 %340
  %342 = load double, ptr %341, align 8, !tbaa !9
  %343 = fsub double %336, %342
  %344 = getelementptr inbounds [6 x [3 x double]], ptr %12, i64 0, i64 4
  %345 = load i32, ptr %50, align 4, !tbaa !11
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds [3 x double], ptr %344, i64 0, i64 %346
  store double %343, ptr %347, align 8, !tbaa !9
  br label %348

348:                                              ; preds = %330
  %349 = load i32, ptr %50, align 4, !tbaa !11
  %350 = add nsw i32 %349, 1
  store i32 %350, ptr %50, align 4, !tbaa !11
  br label %327, !llvm.loop !42

351:                                              ; preds = %327
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %352

352:                                              ; preds = %373, %351
  %353 = load i32, ptr %50, align 4, !tbaa !11
  %354 = icmp slt i32 %353, 3
  br i1 %354, label %355, label %376

355:                                              ; preds = %352
  %356 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 0
  %357 = load ptr, ptr %356, align 16, !tbaa !5
  %358 = load i32, ptr %50, align 4, !tbaa !11
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds double, ptr %357, i64 %359
  %361 = load double, ptr %360, align 8, !tbaa !9
  %362 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 2
  %363 = load ptr, ptr %362, align 16, !tbaa !5
  %364 = load i32, ptr %50, align 4, !tbaa !11
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds double, ptr %363, i64 %365
  %367 = load double, ptr %366, align 8, !tbaa !9
  %368 = fsub double %361, %367
  %369 = getelementptr inbounds [6 x [3 x double]], ptr %12, i64 0, i64 5
  %370 = load i32, ptr %50, align 4, !tbaa !11
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds [3 x double], ptr %369, i64 0, i64 %371
  store double %368, ptr %372, align 8, !tbaa !9
  br label %373

373:                                              ; preds = %355
  %374 = load i32, ptr %50, align 4, !tbaa !11
  %375 = add nsw i32 %374, 1
  store i32 %375, ptr %50, align 4, !tbaa !11
  br label %352, !llvm.loop !43

376:                                              ; preds = %352
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %377

377:                                              ; preds = %393, %376
  %378 = load i32, ptr %50, align 4, !tbaa !11
  %379 = icmp slt i32 %378, 6
  br i1 %379, label %380, label %396

380:                                              ; preds = %377
  %381 = load i32, ptr %50, align 4, !tbaa !11
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds [6 x [3 x double]], ptr %12, i64 0, i64 %382
  %384 = getelementptr inbounds [3 x double], ptr %383, i64 0, i64 0
  %385 = load i32, ptr %50, align 4, !tbaa !11
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds [6 x [3 x double]], ptr %12, i64 0, i64 %386
  %388 = getelementptr inbounds [3 x double], ptr %387, i64 0, i64 0
  %389 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %384, ptr noundef %388)
  %390 = load i32, ptr %50, align 4, !tbaa !11
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds [6 x double], ptr %15, i64 0, i64 %391
  store double %389, ptr %392, align 8, !tbaa !9
  br label %393

393:                                              ; preds = %380
  %394 = load i32, ptr %50, align 4, !tbaa !11
  %395 = add nsw i32 %394, 1
  store i32 %395, ptr %50, align 4, !tbaa !11
  br label %377, !llvm.loop !44

396:                                              ; preds = %377
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %397

397:                                              ; preds = %464, %396
  %398 = load i32, ptr %50, align 4, !tbaa !11
  %399 = icmp slt i32 %398, 6
  br i1 %399, label %400, label %467

400:                                              ; preds = %397
  %401 = load i32, ptr %50, align 4, !tbaa !11
  %402 = icmp eq i32 %401, 0
  br i1 %402, label %403, label %408

403:                                              ; preds = %400
  %404 = load i32, ptr %50, align 4, !tbaa !11
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds [6 x double], ptr %15, i64 0, i64 %405
  %407 = load double, ptr %406, align 8, !tbaa !9
  store double %407, ptr %35, align 8, !tbaa !9
  store double %407, ptr %34, align 8, !tbaa !9
  br label %439

408:                                              ; preds = %400
  %409 = load i32, ptr %50, align 4, !tbaa !11
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds [6 x double], ptr %15, i64 0, i64 %410
  %412 = load double, ptr %411, align 8, !tbaa !9
  %413 = load double, ptr %34, align 8, !tbaa !9
  %414 = fcmp olt double %412, %413
  br i1 %414, label %415, label %420

415:                                              ; preds = %408
  %416 = load i32, ptr %50, align 4, !tbaa !11
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds [6 x double], ptr %15, i64 0, i64 %417
  %419 = load double, ptr %418, align 8, !tbaa !9
  br label %422

420:                                              ; preds = %408
  %421 = load double, ptr %34, align 8, !tbaa !9
  br label %422

422:                                              ; preds = %420, %415
  %423 = phi double [ %419, %415 ], [ %421, %420 ]
  store double %423, ptr %34, align 8, !tbaa !9
  %424 = load i32, ptr %50, align 4, !tbaa !11
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds [6 x double], ptr %15, i64 0, i64 %425
  %427 = load double, ptr %426, align 8, !tbaa !9
  %428 = load double, ptr %35, align 8, !tbaa !9
  %429 = fcmp ogt double %427, %428
  br i1 %429, label %430, label %435

430:                                              ; preds = %422
  %431 = load i32, ptr %50, align 4, !tbaa !11
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds [6 x double], ptr %15, i64 0, i64 %432
  %434 = load double, ptr %433, align 8, !tbaa !9
  br label %437

435:                                              ; preds = %422
  %436 = load double, ptr %35, align 8, !tbaa !9
  br label %437

437:                                              ; preds = %435, %430
  %438 = phi double [ %434, %430 ], [ %436, %435 ]
  store double %438, ptr %35, align 8, !tbaa !9
  br label %439

439:                                              ; preds = %437, %403
  %440 = load i32, ptr %50, align 4, !tbaa !11
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds [6 x double], ptr %15, i64 0, i64 %441
  %443 = load double, ptr %442, align 8, !tbaa !9
  %444 = load double, ptr %19, align 8, !tbaa !9
  %445 = fcmp ogt double %443, %444
  br i1 %445, label %446, label %451

446:                                              ; preds = %439
  %447 = load i32, ptr %50, align 4, !tbaa !11
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds [6 x double], ptr %15, i64 0, i64 %448
  %450 = load double, ptr %449, align 8, !tbaa !9
  store double %450, ptr %19, align 8, !tbaa !9
  br label %451

451:                                              ; preds = %446, %439
  %452 = load i32, ptr %50, align 4, !tbaa !11
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds [6 x double], ptr %15, i64 0, i64 %453
  %455 = load double, ptr %454, align 8, !tbaa !9
  %456 = load double, ptr %18, align 8, !tbaa !9
  %457 = fcmp olt double %455, %456
  br i1 %457, label %458, label %463

458:                                              ; preds = %451
  %459 = load i32, ptr %50, align 4, !tbaa !11
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds [6 x double], ptr %15, i64 0, i64 %460
  %462 = load double, ptr %461, align 8, !tbaa !9
  store double %462, ptr %18, align 8, !tbaa !9
  br label %463

463:                                              ; preds = %458, %451
  br label %464

464:                                              ; preds = %463
  %465 = load i32, ptr %50, align 4, !tbaa !11
  %466 = add nsw i32 %465, 1
  store i32 %466, ptr %50, align 4, !tbaa !11
  br label %397, !llvm.loop !45

467:                                              ; preds = %397
  store i32 0, ptr %51, align 4, !tbaa !11
  br label %468

468:                                              ; preds = %493, %467
  %469 = load i32, ptr %51, align 4, !tbaa !11
  %470 = icmp slt i32 %469, 3
  br i1 %470, label %471, label %496

471:                                              ; preds = %468
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %472

472:                                              ; preds = %489, %471
  %473 = load i32, ptr %50, align 4, !tbaa !11
  %474 = icmp slt i32 %473, 3
  br i1 %474, label %475, label %492

475:                                              ; preds = %472
  %476 = load i32, ptr %51, align 4, !tbaa !11
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds [6 x [3 x double]], ptr %12, i64 0, i64 %477
  %479 = load i32, ptr %50, align 4, !tbaa !11
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds [3 x double], ptr %478, i64 0, i64 %480
  %482 = load double, ptr %481, align 8, !tbaa !9
  %483 = load i32, ptr %51, align 4, !tbaa !11
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds [4 x [4 x double]], ptr %9, i64 0, i64 %484
  %486 = load i32, ptr %50, align 4, !tbaa !11
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds [4 x double], ptr %485, i64 0, i64 %487
  store double %482, ptr %488, align 8, !tbaa !9
  br label %489

489:                                              ; preds = %475
  %490 = load i32, ptr %50, align 4, !tbaa !11
  %491 = add nsw i32 %490, 1
  store i32 %491, ptr %50, align 4, !tbaa !11
  br label %472, !llvm.loop !46

492:                                              ; preds = %472
  br label %493

493:                                              ; preds = %492
  %494 = load i32, ptr %51, align 4, !tbaa !11
  %495 = add nsw i32 %494, 1
  store i32 %495, ptr %51, align 4, !tbaa !11
  br label %468, !llvm.loop !47

496:                                              ; preds = %468
  %497 = getelementptr inbounds [4 x [4 x double]], ptr %9, i64 0, i64 0
  %498 = getelementptr inbounds [4 x i32], ptr %46, i64 0, i64 0
  %499 = call noundef zeroext i1 @_ZN10tetgenmesh8lu_decmpEPA4_diPiPdi(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %497, i32 noundef 3, ptr noundef %498, ptr noundef %11, i32 noundef 0)
  br i1 %499, label %500, label %665

500:                                              ; preds = %496
  store i32 0, ptr %51, align 4, !tbaa !11
  br label %501

501:                                              ; preds = %540, %500
  %502 = load i32, ptr %51, align 4, !tbaa !11
  %503 = icmp slt i32 %502, 3
  br i1 %503, label %504, label %543

504:                                              ; preds = %501
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %505

505:                                              ; preds = %512, %504
  %506 = load i32, ptr %50, align 4, !tbaa !11
  %507 = icmp slt i32 %506, 3
  br i1 %507, label %508, label %515

508:                                              ; preds = %505
  %509 = load i32, ptr %50, align 4, !tbaa !11
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds [4 x double], ptr %10, i64 0, i64 %510
  store double 0.000000e+00, ptr %511, align 8, !tbaa !9
  br label %512

512:                                              ; preds = %508
  %513 = load i32, ptr %50, align 4, !tbaa !11
  %514 = add nsw i32 %513, 1
  store i32 %514, ptr %50, align 4, !tbaa !11
  br label %505, !llvm.loop !48

515:                                              ; preds = %505
  %516 = load i32, ptr %51, align 4, !tbaa !11
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds [4 x double], ptr %10, i64 0, i64 %517
  store double 1.000000e+00, ptr %518, align 8, !tbaa !9
  %519 = getelementptr inbounds [4 x [4 x double]], ptr %9, i64 0, i64 0
  %520 = getelementptr inbounds [4 x i32], ptr %46, i64 0, i64 0
  %521 = getelementptr inbounds [4 x double], ptr %10, i64 0, i64 0
  call void @_ZN10tetgenmesh8lu_solveEPA4_diPiPdi(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %519, i32 noundef 3, ptr noundef %520, ptr noundef %521, i32 noundef 0)
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %522

522:                                              ; preds = %536, %515
  %523 = load i32, ptr %50, align 4, !tbaa !11
  %524 = icmp slt i32 %523, 3
  br i1 %524, label %525, label %539

525:                                              ; preds = %522
  %526 = load i32, ptr %50, align 4, !tbaa !11
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds [4 x double], ptr %10, i64 0, i64 %527
  %529 = load double, ptr %528, align 8, !tbaa !9
  %530 = load i32, ptr %51, align 4, !tbaa !11
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 %531
  %533 = load i32, ptr %50, align 4, !tbaa !11
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds [3 x double], ptr %532, i64 0, i64 %534
  store double %529, ptr %535, align 8, !tbaa !9
  br label %536

536:                                              ; preds = %525
  %537 = load i32, ptr %50, align 4, !tbaa !11
  %538 = add nsw i32 %537, 1
  store i32 %538, ptr %50, align 4, !tbaa !11
  br label %522, !llvm.loop !49

539:                                              ; preds = %522
  br label %540

540:                                              ; preds = %539
  %541 = load i32, ptr %51, align 4, !tbaa !11
  %542 = add nsw i32 %541, 1
  store i32 %542, ptr %51, align 4, !tbaa !11
  br label %501, !llvm.loop !50

543:                                              ; preds = %501
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %544

544:                                              ; preds = %570, %543
  %545 = load i32, ptr %50, align 4, !tbaa !11
  %546 = icmp slt i32 %545, 3
  br i1 %546, label %547, label %573

547:                                              ; preds = %544
  %548 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 0
  %549 = load i32, ptr %50, align 4, !tbaa !11
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds [3 x double], ptr %548, i64 0, i64 %550
  %552 = load double, ptr %551, align 8, !tbaa !9
  %553 = fneg double %552
  %554 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 1
  %555 = load i32, ptr %50, align 4, !tbaa !11
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds [3 x double], ptr %554, i64 0, i64 %556
  %558 = load double, ptr %557, align 8, !tbaa !9
  %559 = fsub double %553, %558
  %560 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 2
  %561 = load i32, ptr %50, align 4, !tbaa !11
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds [3 x double], ptr %560, i64 0, i64 %562
  %564 = load double, ptr %563, align 8, !tbaa !9
  %565 = fsub double %559, %564
  %566 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 3
  %567 = load i32, ptr %50, align 4, !tbaa !11
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds [3 x double], ptr %566, i64 0, i64 %568
  store double %565, ptr %569, align 8, !tbaa !9
  br label %570

570:                                              ; preds = %547
  %571 = load i32, ptr %50, align 4, !tbaa !11
  %572 = add nsw i32 %571, 1
  store i32 %572, ptr %50, align 4, !tbaa !11
  br label %544, !llvm.loop !51

573:                                              ; preds = %544
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %574

574:                                              ; preds = %591, %573
  %575 = load i32, ptr %50, align 4, !tbaa !11
  %576 = icmp slt i32 %575, 3
  br i1 %576, label %577, label %594

577:                                              ; preds = %574
  %578 = load i32, ptr %50, align 4, !tbaa !11
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds [6 x [3 x double]], ptr %12, i64 0, i64 %579
  %581 = getelementptr inbounds [3 x double], ptr %580, i64 0, i64 0
  %582 = load i32, ptr %50, align 4, !tbaa !11
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds [6 x [3 x double]], ptr %12, i64 0, i64 %583
  %585 = getelementptr inbounds [3 x double], ptr %584, i64 0, i64 0
  %586 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %581, ptr noundef %585)
  %587 = fmul double 5.000000e-01, %586
  %588 = load i32, ptr %50, align 4, !tbaa !11
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds [4 x double], ptr %10, i64 0, i64 %589
  store double %587, ptr %590, align 8, !tbaa !9
  br label %591

591:                                              ; preds = %577
  %592 = load i32, ptr %50, align 4, !tbaa !11
  %593 = add nsw i32 %592, 1
  store i32 %593, ptr %50, align 4, !tbaa !11
  br label %574, !llvm.loop !52

594:                                              ; preds = %574
  %595 = getelementptr inbounds [4 x [4 x double]], ptr %9, i64 0, i64 0
  %596 = getelementptr inbounds [4 x i32], ptr %46, i64 0, i64 0
  %597 = getelementptr inbounds [4 x double], ptr %10, i64 0, i64 0
  call void @_ZN10tetgenmesh8lu_solveEPA4_diPiPdi(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %595, i32 noundef 3, ptr noundef %596, ptr noundef %597, i32 noundef 0)
  %598 = getelementptr inbounds [4 x double], ptr %10, i64 0, i64 0
  %599 = getelementptr inbounds [4 x double], ptr %10, i64 0, i64 0
  %600 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %598, ptr noundef %599)
  %601 = call double @sqrt(double noundef %600) #8
  store double %601, ptr %32, align 8, !tbaa !9
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %602

602:                                              ; preds = %639, %594
  %603 = load i32, ptr %50, align 4, !tbaa !11
  %604 = icmp slt i32 %603, 4
  br i1 %604, label %605, label %642

605:                                              ; preds = %602
  %606 = load i32, ptr %50, align 4, !tbaa !11
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 %607
  %609 = getelementptr inbounds [3 x double], ptr %608, i64 0, i64 0
  %610 = load i32, ptr %50, align 4, !tbaa !11
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 %611
  %613 = getelementptr inbounds [3 x double], ptr %612, i64 0, i64 0
  %614 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %609, ptr noundef %613)
  %615 = call double @sqrt(double noundef %614) #8
  %616 = load i32, ptr %50, align 4, !tbaa !11
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds [4 x double], ptr %14, i64 0, i64 %617
  store double %615, ptr %618, align 8, !tbaa !9
  store i32 0, ptr %51, align 4, !tbaa !11
  br label %619

619:                                              ; preds = %635, %605
  %620 = load i32, ptr %51, align 4, !tbaa !11
  %621 = icmp slt i32 %620, 3
  br i1 %621, label %622, label %638

622:                                              ; preds = %619
  %623 = load i32, ptr %50, align 4, !tbaa !11
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds [4 x double], ptr %14, i64 0, i64 %624
  %626 = load double, ptr %625, align 8, !tbaa !9
  %627 = load i32, ptr %50, align 4, !tbaa !11
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 %628
  %630 = load i32, ptr %51, align 4, !tbaa !11
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds [3 x double], ptr %629, i64 0, i64 %631
  %633 = load double, ptr %632, align 8, !tbaa !9
  %634 = fdiv double %633, %626
  store double %634, ptr %632, align 8, !tbaa !9
  br label %635

635:                                              ; preds = %622
  %636 = load i32, ptr %51, align 4, !tbaa !11
  %637 = add nsw i32 %636, 1
  store i32 %637, ptr %51, align 4, !tbaa !11
  br label %619, !llvm.loop !53

638:                                              ; preds = %619
  br label %639

639:                                              ; preds = %638
  %640 = load i32, ptr %50, align 4, !tbaa !11
  %641 = add nsw i32 %640, 1
  store i32 %641, ptr %50, align 4, !tbaa !11
  br label %602, !llvm.loop !54

642:                                              ; preds = %602
  %643 = getelementptr inbounds [4 x double], ptr %14, i64 0, i64 0
  %644 = load double, ptr %643, align 16, !tbaa !9
  store double %644, ptr %33, align 8, !tbaa !9
  store i32 1, ptr %50, align 4, !tbaa !11
  br label %645

645:                                              ; preds = %661, %642
  %646 = load i32, ptr %50, align 4, !tbaa !11
  %647 = icmp slt i32 %646, 4
  br i1 %647, label %648, label %664

648:                                              ; preds = %645
  %649 = load i32, ptr %50, align 4, !tbaa !11
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds [4 x double], ptr %14, i64 0, i64 %650
  %652 = load double, ptr %651, align 8, !tbaa !9
  %653 = load double, ptr %33, align 8, !tbaa !9
  %654 = fcmp ogt double %652, %653
  br i1 %654, label %655, label %660

655:                                              ; preds = %648
  %656 = load i32, ptr %50, align 4, !tbaa !11
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds [4 x double], ptr %14, i64 0, i64 %657
  %659 = load double, ptr %658, align 8, !tbaa !9
  store double %659, ptr %33, align 8, !tbaa !9
  br label %660

660:                                              ; preds = %655, %648
  br label %661

661:                                              ; preds = %660
  %662 = load i32, ptr %50, align 4, !tbaa !11
  %663 = add nsw i32 %662, 1
  store i32 %663, ptr %50, align 4, !tbaa !11
  br label %645, !llvm.loop !55

664:                                              ; preds = %645
  br label %793

665:                                              ; preds = %496
  %666 = load double, ptr %30, align 8, !tbaa !9
  %667 = fcmp ole double %666, 0.000000e+00
  br i1 %667, label %668, label %688

668:                                              ; preds = %665
  %669 = load double, ptr %30, align 8, !tbaa !9
  %670 = fcmp olt double %669, 0.000000e+00
  %671 = zext i1 %670 to i64
  %672 = select i1 %670, ptr @.str.618, ptr @.str.619
  %673 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 0
  %674 = load ptr, ptr %673, align 16, !tbaa !5
  %675 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %674)
  %676 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 1
  %677 = load ptr, ptr %676, align 8, !tbaa !5
  %678 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %677)
  %679 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 2
  %680 = load ptr, ptr %679, align 16, !tbaa !5
  %681 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %680)
  %682 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 3
  %683 = load ptr, ptr %682, align 8, !tbaa !5
  %684 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %683)
  %685 = call i32 (ptr, ...) @printf(ptr noundef @.str.617, ptr noundef %672, i32 noundef %675, i32 noundef %678, i32 noundef %681, i32 noundef %684)
  %686 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %53)
  %687 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %3, i32 0, i32 0
  store ptr %686, ptr %687, align 8, !tbaa !31
  br label %152, !llvm.loop !36

688:                                              ; preds = %665
  %689 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 2
  %690 = load ptr, ptr %689, align 16, !tbaa !5
  %691 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 1
  %692 = load ptr, ptr %691, align 8, !tbaa !5
  %693 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 3
  %694 = load ptr, ptr %693, align 8, !tbaa !5
  %695 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 0
  %696 = getelementptr inbounds [3 x double], ptr %695, i64 0, i64 0
  call void @_ZN10tetgenmesh10facenormalEPdS0_S0_S0_iS0_(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %690, ptr noundef %692, ptr noundef %694, ptr noundef %696, i32 noundef 1, ptr noundef null)
  %697 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 0
  %698 = load ptr, ptr %697, align 16, !tbaa !5
  %699 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 2
  %700 = load ptr, ptr %699, align 16, !tbaa !5
  %701 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 3
  %702 = load ptr, ptr %701, align 8, !tbaa !5
  %703 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 1
  %704 = getelementptr inbounds [3 x double], ptr %703, i64 0, i64 0
  call void @_ZN10tetgenmesh10facenormalEPdS0_S0_S0_iS0_(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %698, ptr noundef %700, ptr noundef %702, ptr noundef %704, i32 noundef 1, ptr noundef null)
  %705 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 1
  %706 = load ptr, ptr %705, align 8, !tbaa !5
  %707 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 0
  %708 = load ptr, ptr %707, align 16, !tbaa !5
  %709 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 3
  %710 = load ptr, ptr %709, align 8, !tbaa !5
  %711 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 2
  %712 = getelementptr inbounds [3 x double], ptr %711, i64 0, i64 0
  call void @_ZN10tetgenmesh10facenormalEPdS0_S0_S0_iS0_(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %706, ptr noundef %708, ptr noundef %710, ptr noundef %712, i32 noundef 1, ptr noundef null)
  %713 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 0
  %714 = load ptr, ptr %713, align 16, !tbaa !5
  %715 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 1
  %716 = load ptr, ptr %715, align 8, !tbaa !5
  %717 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 2
  %718 = load ptr, ptr %717, align 16, !tbaa !5
  %719 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 3
  %720 = getelementptr inbounds [3 x double], ptr %719, i64 0, i64 0
  call void @_ZN10tetgenmesh10facenormalEPdS0_S0_S0_iS0_(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %714, ptr noundef %716, ptr noundef %718, ptr noundef %720, i32 noundef 1, ptr noundef null)
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %721

721:                                              ; preds = %758, %688
  %722 = load i32, ptr %50, align 4, !tbaa !11
  %723 = icmp slt i32 %722, 4
  br i1 %723, label %724, label %761

724:                                              ; preds = %721
  %725 = load i32, ptr %50, align 4, !tbaa !11
  %726 = sext i32 %725 to i64
  %727 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 %726
  %728 = getelementptr inbounds [3 x double], ptr %727, i64 0, i64 0
  %729 = load i32, ptr %50, align 4, !tbaa !11
  %730 = sext i32 %729 to i64
  %731 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 %730
  %732 = getelementptr inbounds [3 x double], ptr %731, i64 0, i64 0
  %733 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %728, ptr noundef %732)
  %734 = call double @sqrt(double noundef %733) #8
  %735 = load i32, ptr %50, align 4, !tbaa !11
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds [4 x double], ptr %14, i64 0, i64 %736
  store double %734, ptr %737, align 8, !tbaa !9
  store i32 0, ptr %51, align 4, !tbaa !11
  br label %738

738:                                              ; preds = %754, %724
  %739 = load i32, ptr %51, align 4, !tbaa !11
  %740 = icmp slt i32 %739, 3
  br i1 %740, label %741, label %757

741:                                              ; preds = %738
  %742 = load i32, ptr %50, align 4, !tbaa !11
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds [4 x double], ptr %14, i64 0, i64 %743
  %745 = load double, ptr %744, align 8, !tbaa !9
  %746 = load i32, ptr %50, align 4, !tbaa !11
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 %747
  %749 = load i32, ptr %51, align 4, !tbaa !11
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds [3 x double], ptr %748, i64 0, i64 %750
  %752 = load double, ptr %751, align 8, !tbaa !9
  %753 = fdiv double %752, %745
  store double %753, ptr %751, align 8, !tbaa !9
  br label %754

754:                                              ; preds = %741
  %755 = load i32, ptr %51, align 4, !tbaa !11
  %756 = add nsw i32 %755, 1
  store i32 %756, ptr %51, align 4, !tbaa !11
  br label %738, !llvm.loop !56

757:                                              ; preds = %738
  br label %758

758:                                              ; preds = %757
  %759 = load i32, ptr %50, align 4, !tbaa !11
  %760 = add nsw i32 %759, 1
  store i32 %760, ptr %50, align 4, !tbaa !11
  br label %721, !llvm.loop !57

761:                                              ; preds = %721
  %762 = getelementptr inbounds [4 x double], ptr %14, i64 0, i64 0
  %763 = load double, ptr %762, align 16, !tbaa !9
  %764 = load double, ptr %30, align 8, !tbaa !9
  %765 = fdiv double %763, %764
  store double %765, ptr %33, align 8, !tbaa !9
  store i32 1, ptr %50, align 4, !tbaa !11
  br label %766

766:                                              ; preds = %786, %761
  %767 = load i32, ptr %50, align 4, !tbaa !11
  %768 = icmp slt i32 %767, 4
  br i1 %768, label %769, label %789

769:                                              ; preds = %766
  %770 = load i32, ptr %50, align 4, !tbaa !11
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds [4 x double], ptr %14, i64 0, i64 %771
  %773 = load double, ptr %772, align 8, !tbaa !9
  %774 = load double, ptr %30, align 8, !tbaa !9
  %775 = fdiv double %773, %774
  %776 = load double, ptr %33, align 8, !tbaa !9
  %777 = fcmp ogt double %775, %776
  br i1 %777, label %778, label %785

778:                                              ; preds = %769
  %779 = load i32, ptr %50, align 4, !tbaa !11
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds [4 x double], ptr %14, i64 0, i64 %780
  %782 = load double, ptr %781, align 8, !tbaa !9
  %783 = load double, ptr %30, align 8, !tbaa !9
  %784 = fdiv double %782, %783
  store double %784, ptr %33, align 8, !tbaa !9
  br label %785

785:                                              ; preds = %778, %769
  br label %786

786:                                              ; preds = %785
  %787 = load i32, ptr %50, align 4, !tbaa !11
  %788 = add nsw i32 %787, 1
  store i32 %788, ptr %50, align 4, !tbaa !11
  br label %766, !llvm.loop !58

789:                                              ; preds = %766
  %790 = load double, ptr %35, align 8, !tbaa !9
  %791 = call double @sqrt(double noundef %790) #8
  %792 = fmul double 5.000000e-01, %791
  store double %792, ptr %32, align 8, !tbaa !9
  br label %793

793:                                              ; preds = %789, %664
  store i32 0, ptr %51, align 4, !tbaa !11
  store i32 1, ptr %50, align 4, !tbaa !11
  br label %794

794:                                              ; preds = %843, %793
  %795 = load i32, ptr %50, align 4, !tbaa !11
  %796 = icmp slt i32 %795, 4
  br i1 %796, label %797, label %846

797:                                              ; preds = %794
  %798 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 0
  %799 = getelementptr inbounds [3 x double], ptr %798, i64 0, i64 0
  %800 = load i32, ptr %50, align 4, !tbaa !11
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 %801
  %803 = getelementptr inbounds [3 x double], ptr %802, i64 0, i64 0
  %804 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %799, ptr noundef %803)
  %805 = fneg double %804
  %806 = load i32, ptr %51, align 4, !tbaa !11
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %807
  store double %805, ptr %808, align 8, !tbaa !9
  %809 = load i32, ptr %51, align 4, !tbaa !11
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %810
  %812 = load double, ptr %811, align 8, !tbaa !9
  %813 = fcmp olt double %812, -1.000000e+00
  br i1 %813, label %814, label %818

814:                                              ; preds = %797
  %815 = load i32, ptr %51, align 4, !tbaa !11
  %816 = sext i32 %815 to i64
  %817 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %816
  store double -1.000000e+00, ptr %817, align 8, !tbaa !9
  br label %829

818:                                              ; preds = %797
  %819 = load i32, ptr %51, align 4, !tbaa !11
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %820
  %822 = load double, ptr %821, align 8, !tbaa !9
  %823 = fcmp ogt double %822, 1.000000e+00
  br i1 %823, label %824, label %828

824:                                              ; preds = %818
  %825 = load i32, ptr %51, align 4, !tbaa !11
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %826
  store double 1.000000e+00, ptr %827, align 8, !tbaa !9
  br label %828

828:                                              ; preds = %824, %818
  br label %829

829:                                              ; preds = %828, %814
  %830 = load i32, ptr %51, align 4, !tbaa !11
  %831 = sext i32 %830 to i64
  %832 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %831
  %833 = load double, ptr %832, align 8, !tbaa !9
  %834 = call double @acos(double noundef %833) #8
  %835 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !9
  %836 = fdiv double %834, %835
  %837 = fmul double %836, 1.800000e+02
  %838 = load i32, ptr %51, align 4, !tbaa !11
  %839 = sext i32 %838 to i64
  %840 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %839
  store double %837, ptr %840, align 8, !tbaa !9
  %841 = load i32, ptr %51, align 4, !tbaa !11
  %842 = add nsw i32 %841, 1
  store i32 %842, ptr %51, align 4, !tbaa !11
  br label %843

843:                                              ; preds = %829
  %844 = load i32, ptr %50, align 4, !tbaa !11
  %845 = add nsw i32 %844, 1
  store i32 %845, ptr %50, align 4, !tbaa !11
  br label %794, !llvm.loop !59

846:                                              ; preds = %794
  store i32 2, ptr %50, align 4, !tbaa !11
  br label %847

847:                                              ; preds = %896, %846
  %848 = load i32, ptr %50, align 4, !tbaa !11
  %849 = icmp slt i32 %848, 4
  br i1 %849, label %850, label %899

850:                                              ; preds = %847
  %851 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 1
  %852 = getelementptr inbounds [3 x double], ptr %851, i64 0, i64 0
  %853 = load i32, ptr %50, align 4, !tbaa !11
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 %854
  %856 = getelementptr inbounds [3 x double], ptr %855, i64 0, i64 0
  %857 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %852, ptr noundef %856)
  %858 = fneg double %857
  %859 = load i32, ptr %51, align 4, !tbaa !11
  %860 = sext i32 %859 to i64
  %861 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %860
  store double %858, ptr %861, align 8, !tbaa !9
  %862 = load i32, ptr %51, align 4, !tbaa !11
  %863 = sext i32 %862 to i64
  %864 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %863
  %865 = load double, ptr %864, align 8, !tbaa !9
  %866 = fcmp olt double %865, -1.000000e+00
  br i1 %866, label %867, label %871

867:                                              ; preds = %850
  %868 = load i32, ptr %51, align 4, !tbaa !11
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %869
  store double -1.000000e+00, ptr %870, align 8, !tbaa !9
  br label %882

871:                                              ; preds = %850
  %872 = load i32, ptr %51, align 4, !tbaa !11
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %873
  %875 = load double, ptr %874, align 8, !tbaa !9
  %876 = fcmp ogt double %875, 1.000000e+00
  br i1 %876, label %877, label %881

877:                                              ; preds = %871
  %878 = load i32, ptr %51, align 4, !tbaa !11
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %879
  store double 1.000000e+00, ptr %880, align 8, !tbaa !9
  br label %881

881:                                              ; preds = %877, %871
  br label %882

882:                                              ; preds = %881, %867
  %883 = load i32, ptr %51, align 4, !tbaa !11
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %884
  %886 = load double, ptr %885, align 8, !tbaa !9
  %887 = call double @acos(double noundef %886) #8
  %888 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !9
  %889 = fdiv double %887, %888
  %890 = fmul double %889, 1.800000e+02
  %891 = load i32, ptr %51, align 4, !tbaa !11
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %892
  store double %890, ptr %893, align 8, !tbaa !9
  %894 = load i32, ptr %51, align 4, !tbaa !11
  %895 = add nsw i32 %894, 1
  store i32 %895, ptr %51, align 4, !tbaa !11
  br label %896

896:                                              ; preds = %882
  %897 = load i32, ptr %50, align 4, !tbaa !11
  %898 = add nsw i32 %897, 1
  store i32 %898, ptr %50, align 4, !tbaa !11
  br label %847, !llvm.loop !60

899:                                              ; preds = %847
  %900 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 2
  %901 = getelementptr inbounds [3 x double], ptr %900, i64 0, i64 0
  %902 = getelementptr inbounds [4 x [3 x double]], ptr %13, i64 0, i64 3
  %903 = getelementptr inbounds [3 x double], ptr %902, i64 0, i64 0
  %904 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %901, ptr noundef %903)
  %905 = fneg double %904
  %906 = load i32, ptr %51, align 4, !tbaa !11
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %907
  store double %905, ptr %908, align 8, !tbaa !9
  %909 = load i32, ptr %51, align 4, !tbaa !11
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %910
  %912 = load double, ptr %911, align 8, !tbaa !9
  %913 = fcmp olt double %912, -1.000000e+00
  br i1 %913, label %914, label %918

914:                                              ; preds = %899
  %915 = load i32, ptr %51, align 4, !tbaa !11
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %916
  store double -1.000000e+00, ptr %917, align 8, !tbaa !9
  br label %929

918:                                              ; preds = %899
  %919 = load i32, ptr %51, align 4, !tbaa !11
  %920 = sext i32 %919 to i64
  %921 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %920
  %922 = load double, ptr %921, align 8, !tbaa !9
  %923 = fcmp ogt double %922, 1.000000e+00
  br i1 %923, label %924, label %928

924:                                              ; preds = %918
  %925 = load i32, ptr %51, align 4, !tbaa !11
  %926 = sext i32 %925 to i64
  %927 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %926
  store double 1.000000e+00, ptr %927, align 8, !tbaa !9
  br label %928

928:                                              ; preds = %924, %918
  br label %929

929:                                              ; preds = %928, %914
  %930 = load i32, ptr %51, align 4, !tbaa !11
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %931
  %933 = load double, ptr %932, align 8, !tbaa !9
  %934 = call double @acos(double noundef %933) #8
  %935 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !9
  %936 = fdiv double %934, %935
  %937 = fmul double %936, 1.800000e+02
  %938 = load i32, ptr %51, align 4, !tbaa !11
  %939 = sext i32 %938 to i64
  %940 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %939
  store double %937, ptr %940, align 8, !tbaa !9
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %941

941:                                              ; preds = %1089, %929
  %942 = load i32, ptr %50, align 4, !tbaa !11
  %943 = icmp slt i32 %942, 6
  br i1 %943, label %944, label %1092

944:                                              ; preds = %941
  %945 = load i32, ptr %50, align 4, !tbaa !11
  %946 = icmp eq i32 %945, 0
  br i1 %946, label %947, label %952

947:                                              ; preds = %944
  %948 = load i32, ptr %50, align 4, !tbaa !11
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %949
  %951 = load double, ptr %950, align 8, !tbaa !9
  store double %951, ptr %39, align 8, !tbaa !9
  store double %951, ptr %38, align 8, !tbaa !9
  br label %983

952:                                              ; preds = %944
  %953 = load i32, ptr %50, align 4, !tbaa !11
  %954 = sext i32 %953 to i64
  %955 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %954
  %956 = load double, ptr %955, align 8, !tbaa !9
  %957 = load double, ptr %38, align 8, !tbaa !9
  %958 = fcmp olt double %956, %957
  br i1 %958, label %959, label %964

959:                                              ; preds = %952
  %960 = load i32, ptr %50, align 4, !tbaa !11
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %961
  %963 = load double, ptr %962, align 8, !tbaa !9
  br label %966

964:                                              ; preds = %952
  %965 = load double, ptr %38, align 8, !tbaa !9
  br label %966

966:                                              ; preds = %964, %959
  %967 = phi double [ %963, %959 ], [ %965, %964 ]
  store double %967, ptr %38, align 8, !tbaa !9
  %968 = load i32, ptr %50, align 4, !tbaa !11
  %969 = sext i32 %968 to i64
  %970 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %969
  %971 = load double, ptr %970, align 8, !tbaa !9
  %972 = load double, ptr %39, align 8, !tbaa !9
  %973 = fcmp ogt double %971, %972
  br i1 %973, label %974, label %979

974:                                              ; preds = %966
  %975 = load i32, ptr %50, align 4, !tbaa !11
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %976
  %978 = load double, ptr %977, align 8, !tbaa !9
  br label %981

979:                                              ; preds = %966
  %980 = load double, ptr %39, align 8, !tbaa !9
  br label %981

981:                                              ; preds = %979, %974
  %982 = phi double [ %978, %974 ], [ %980, %979 ]
  store double %982, ptr %39, align 8, !tbaa !9
  br label %983

983:                                              ; preds = %981, %947
  %984 = load i32, ptr %50, align 4, !tbaa !11
  %985 = sext i32 %984 to i64
  %986 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %985
  %987 = load double, ptr %986, align 8, !tbaa !9
  %988 = load double, ptr %24, align 8, !tbaa !9
  %989 = fcmp olt double %987, %988
  br i1 %989, label %990, label %995

990:                                              ; preds = %983
  %991 = load i32, ptr %50, align 4, !tbaa !11
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %992
  %994 = load double, ptr %993, align 8, !tbaa !9
  store double %994, ptr %24, align 8, !tbaa !9
  br label %995

995:                                              ; preds = %990, %983
  %996 = load i32, ptr %50, align 4, !tbaa !11
  %997 = sext i32 %996 to i64
  %998 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %997
  %999 = load double, ptr %998, align 8, !tbaa !9
  %1000 = load double, ptr %25, align 8, !tbaa !9
  %1001 = fcmp ogt double %999, %1000
  br i1 %1001, label %1002, label %1007

1002:                                             ; preds = %995
  %1003 = load i32, ptr %50, align 4, !tbaa !11
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %1004
  %1006 = load double, ptr %1005, align 8, !tbaa !9
  store double %1006, ptr %25, align 8, !tbaa !9
  br label %1007

1007:                                             ; preds = %1002, %995
  %1008 = load i32, ptr %50, align 4, !tbaa !11
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %1009
  %1011 = load double, ptr %1010, align 8, !tbaa !9
  %1012 = fcmp olt double %1011, 5.000000e+00
  br i1 %1012, label %1013, label %1014

1013:                                             ; preds = %1007
  store i32 0, ptr %49, align 4, !tbaa !11
  br label %1083

1014:                                             ; preds = %1007
  %1015 = load i32, ptr %50, align 4, !tbaa !11
  %1016 = sext i32 %1015 to i64
  %1017 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %1016
  %1018 = load double, ptr %1017, align 8, !tbaa !9
  %1019 = fcmp oge double %1018, 5.000000e+00
  br i1 %1019, label %1020, label %1027

1020:                                             ; preds = %1014
  %1021 = load i32, ptr %50, align 4, !tbaa !11
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %1022
  %1024 = load double, ptr %1023, align 8, !tbaa !9
  %1025 = fcmp olt double %1024, 1.000000e+01
  br i1 %1025, label %1026, label %1027

1026:                                             ; preds = %1020
  store i32 1, ptr %49, align 4, !tbaa !11
  br label %1082

1027:                                             ; preds = %1020, %1014
  %1028 = load i32, ptr %50, align 4, !tbaa !11
  %1029 = sext i32 %1028 to i64
  %1030 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %1029
  %1031 = load double, ptr %1030, align 8, !tbaa !9
  %1032 = fcmp oge double %1031, 8.000000e+01
  br i1 %1032, label %1033, label %1040

1033:                                             ; preds = %1027
  %1034 = load i32, ptr %50, align 4, !tbaa !11
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %1035
  %1037 = load double, ptr %1036, align 8, !tbaa !9
  %1038 = fcmp olt double %1037, 1.100000e+02
  br i1 %1038, label %1039, label %1040

1039:                                             ; preds = %1033
  store i32 9, ptr %49, align 4, !tbaa !11
  br label %1081

1040:                                             ; preds = %1033, %1027
  %1041 = load i32, ptr %50, align 4, !tbaa !11
  %1042 = sext i32 %1041 to i64
  %1043 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %1042
  %1044 = load double, ptr %1043, align 8, !tbaa !9
  %1045 = fcmp oge double %1044, 1.700000e+02
  br i1 %1045, label %1046, label %1053

1046:                                             ; preds = %1040
  %1047 = load i32, ptr %50, align 4, !tbaa !11
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %1048
  %1050 = load double, ptr %1049, align 8, !tbaa !9
  %1051 = fcmp olt double %1050, 1.750000e+02
  br i1 %1051, label %1052, label %1053

1052:                                             ; preds = %1046
  store i32 16, ptr %49, align 4, !tbaa !11
  br label %1080

1053:                                             ; preds = %1046, %1040
  %1054 = load i32, ptr %50, align 4, !tbaa !11
  %1055 = sext i32 %1054 to i64
  %1056 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %1055
  %1057 = load double, ptr %1056, align 8, !tbaa !9
  %1058 = fcmp oge double %1057, 1.750000e+02
  br i1 %1058, label %1059, label %1060

1059:                                             ; preds = %1053
  store i32 17, ptr %49, align 4, !tbaa !11
  br label %1079

1060:                                             ; preds = %1053
  %1061 = load i32, ptr %50, align 4, !tbaa !11
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %1062
  %1064 = load double, ptr %1063, align 8, !tbaa !9
  %1065 = fdiv double %1064, 1.000000e+01
  %1066 = fptosi double %1065 to i32
  store i32 %1066, ptr %49, align 4, !tbaa !11
  %1067 = load i32, ptr %50, align 4, !tbaa !11
  %1068 = sext i32 %1067 to i64
  %1069 = getelementptr inbounds [6 x double], ptr %16, i64 0, i64 %1068
  %1070 = load double, ptr %1069, align 8, !tbaa !9
  %1071 = fcmp olt double %1070, 8.000000e+01
  br i1 %1071, label %1072, label %1075

1072:                                             ; preds = %1060
  %1073 = load i32, ptr %49, align 4, !tbaa !11
  %1074 = add nsw i32 %1073, 1
  store i32 %1074, ptr %49, align 4, !tbaa !11
  br label %1078

1075:                                             ; preds = %1060
  %1076 = load i32, ptr %49, align 4, !tbaa !11
  %1077 = add nsw i32 %1076, -1
  store i32 %1077, ptr %49, align 4, !tbaa !11
  br label %1078

1078:                                             ; preds = %1075, %1072
  br label %1079

1079:                                             ; preds = %1078, %1059
  br label %1080

1080:                                             ; preds = %1079, %1052
  br label %1081

1081:                                             ; preds = %1080, %1039
  br label %1082

1082:                                             ; preds = %1081, %1026
  br label %1083

1083:                                             ; preds = %1082, %1013
  %1084 = load i32, ptr %49, align 4, !tbaa !11
  %1085 = sext i32 %1084 to i64
  %1086 = getelementptr inbounds [18 x i64], ptr %44, i64 0, i64 %1085
  %1087 = load i64, ptr %1086, align 8, !tbaa !13
  %1088 = add i64 %1087, 1
  store i64 %1088, ptr %1086, align 8, !tbaa !13
  br label %1089

1089:                                             ; preds = %1083
  %1090 = load i32, ptr %50, align 4, !tbaa !11
  %1091 = add nsw i32 %1090, 1
  store i32 %1091, ptr %50, align 4, !tbaa !11
  br label %941, !llvm.loop !61

1092:                                             ; preds = %941
  %1093 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %3, i32 0, i32 1
  store i32 0, ptr %1093, align 8, !tbaa !62
  br label %1094

1094:                                             ; preds = %1244, %1092
  %1095 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %3, i32 0, i32 1
  %1096 = load i32, ptr %1095, align 8, !tbaa !62
  %1097 = icmp slt i32 %1096, 4
  br i1 %1097, label %1098, label %1248

1098:                                             ; preds = %1094
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef nonnull align 8 dereferenceable(12) %3, ptr noundef nonnull align 8 dereferenceable(12) %4)
  %1099 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %4, i32 0, i32 0
  %1100 = load ptr, ptr %1099, align 8, !tbaa !31
  %1101 = getelementptr inbounds ptr, ptr %1100, i64 7
  %1102 = load ptr, ptr %1101, align 8, !tbaa !5
  %1103 = getelementptr inbounds %class.tetgenmesh, ptr %53, i32 0, i32 35
  %1104 = load ptr, ptr %1103, align 8, !tbaa !63
  %1105 = icmp eq ptr %1102, %1104
  br i1 %1105, label %1112, label %1106

1106:                                             ; preds = %1098
  %1107 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %3, i32 0, i32 0
  %1108 = load ptr, ptr %1107, align 8, !tbaa !31
  %1109 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %4, i32 0, i32 0
  %1110 = load ptr, ptr %1109, align 8, !tbaa !31
  %1111 = icmp ult ptr %1108, %1110
  br i1 %1111, label %1112, label %1243

1112:                                             ; preds = %1106, %1098
  %1113 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %1114 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 0
  store ptr %1113, ptr %1114, align 16, !tbaa !5
  %1115 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %1116 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 1
  store ptr %1115, ptr %1116, align 8, !tbaa !5
  %1117 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef nonnull align 8 dereferenceable(12) %3)
  %1118 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 2
  store ptr %1117, ptr %1118, align 16, !tbaa !5
  %1119 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 0
  %1120 = load ptr, ptr %1119, align 16, !tbaa !5
  %1121 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 1
  %1122 = load ptr, ptr %1121, align 8, !tbaa !5
  %1123 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 2
  %1124 = load ptr, ptr %1123, align 16, !tbaa !5
  %1125 = call noundef double @_ZN10tetgenmesh13interiorangleEPdS0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %1120, ptr noundef %1122, ptr noundef %1124, ptr noundef null)
  %1126 = getelementptr inbounds [3 x double], ptr %17, i64 0, i64 0
  store double %1125, ptr %1126, align 16, !tbaa !9
  %1127 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 1
  %1128 = load ptr, ptr %1127, align 8, !tbaa !5
  %1129 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 2
  %1130 = load ptr, ptr %1129, align 16, !tbaa !5
  %1131 = getelementptr inbounds [4 x ptr], ptr %5, i64 0, i64 0
  %1132 = load ptr, ptr %1131, align 16, !tbaa !5
  %1133 = call noundef double @_ZN10tetgenmesh13interiorangleEPdS0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(1536) %53, ptr noundef %1128, ptr noundef %1130, ptr noundef %1132, ptr noundef null)
  %1134 = getelementptr inbounds [3 x double], ptr %17, i64 0, i64 1
  store double %1133, ptr %1134, align 8, !tbaa !9
  %1135 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !9
  %1136 = getelementptr inbounds [3 x double], ptr %17, i64 0, i64 0
  %1137 = load double, ptr %1136, align 16, !tbaa !9
  %1138 = getelementptr inbounds [3 x double], ptr %17, i64 0, i64 1
  %1139 = load double, ptr %1138, align 8, !tbaa !9
  %1140 = fadd double %1137, %1139
  %1141 = fsub double %1135, %1140
  %1142 = getelementptr inbounds [3 x double], ptr %17, i64 0, i64 2
  store double %1141, ptr %1142, align 16, !tbaa !9
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %1143

1143:                                             ; preds = %1157, %1112
  %1144 = load i32, ptr %50, align 4, !tbaa !11
  %1145 = icmp slt i32 %1144, 3
  br i1 %1145, label %1146, label %1160

1146:                                             ; preds = %1143
  %1147 = load i32, ptr %50, align 4, !tbaa !11
  %1148 = sext i32 %1147 to i64
  %1149 = getelementptr inbounds [3 x double], ptr %17, i64 0, i64 %1148
  %1150 = load double, ptr %1149, align 8, !tbaa !9
  %1151 = fmul double %1150, 1.800000e+02
  %1152 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !9
  %1153 = fdiv double %1151, %1152
  %1154 = load i32, ptr %50, align 4, !tbaa !11
  %1155 = sext i32 %1154 to i64
  %1156 = getelementptr inbounds [3 x double], ptr %17, i64 0, i64 %1155
  store double %1153, ptr %1156, align 8, !tbaa !9
  br label %1157

1157:                                             ; preds = %1146
  %1158 = load i32, ptr %50, align 4, !tbaa !11
  %1159 = add nsw i32 %1158, 1
  store i32 %1159, ptr %50, align 4, !tbaa !11
  br label %1143, !llvm.loop !64

1160:                                             ; preds = %1143
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %1161

1161:                                             ; preds = %1239, %1160
  %1162 = load i32, ptr %50, align 4, !tbaa !11
  %1163 = icmp slt i32 %1162, 3
  br i1 %1163, label %1164, label %1242

1164:                                             ; preds = %1161
  %1165 = load i32, ptr %50, align 4, !tbaa !11
  %1166 = icmp eq i32 %1165, 0
  br i1 %1166, label %1167, label %1172

1167:                                             ; preds = %1164
  %1168 = load i32, ptr %50, align 4, !tbaa !11
  %1169 = sext i32 %1168 to i64
  %1170 = getelementptr inbounds [3 x double], ptr %17, i64 0, i64 %1169
  %1171 = load double, ptr %1170, align 8, !tbaa !9
  store double %1171, ptr %41, align 8, !tbaa !9
  store double %1171, ptr %40, align 8, !tbaa !9
  br label %1203

1172:                                             ; preds = %1164
  %1173 = load i32, ptr %50, align 4, !tbaa !11
  %1174 = sext i32 %1173 to i64
  %1175 = getelementptr inbounds [3 x double], ptr %17, i64 0, i64 %1174
  %1176 = load double, ptr %1175, align 8, !tbaa !9
  %1177 = load double, ptr %40, align 8, !tbaa !9
  %1178 = fcmp olt double %1176, %1177
  br i1 %1178, label %1179, label %1184

1179:                                             ; preds = %1172
  %1180 = load i32, ptr %50, align 4, !tbaa !11
  %1181 = sext i32 %1180 to i64
  %1182 = getelementptr inbounds [3 x double], ptr %17, i64 0, i64 %1181
  %1183 = load double, ptr %1182, align 8, !tbaa !9
  br label %1186

1184:                                             ; preds = %1172
  %1185 = load double, ptr %40, align 8, !tbaa !9
  br label %1186

1186:                                             ; preds = %1184, %1179
  %1187 = phi double [ %1183, %1179 ], [ %1185, %1184 ]
  store double %1187, ptr %40, align 8, !tbaa !9
  %1188 = load i32, ptr %50, align 4, !tbaa !11
  %1189 = sext i32 %1188 to i64
  %1190 = getelementptr inbounds [3 x double], ptr %17, i64 0, i64 %1189
  %1191 = load double, ptr %1190, align 8, !tbaa !9
  %1192 = load double, ptr %41, align 8, !tbaa !9
  %1193 = fcmp ogt double %1191, %1192
  br i1 %1193, label %1194, label %1199

1194:                                             ; preds = %1186
  %1195 = load i32, ptr %50, align 4, !tbaa !11
  %1196 = sext i32 %1195 to i64
  %1197 = getelementptr inbounds [3 x double], ptr %17, i64 0, i64 %1196
  %1198 = load double, ptr %1197, align 8, !tbaa !9
  br label %1201

1199:                                             ; preds = %1186
  %1200 = load double, ptr %41, align 8, !tbaa !9
  br label %1201

1201:                                             ; preds = %1199, %1194
  %1202 = phi double [ %1198, %1194 ], [ %1200, %1199 ]
  store double %1202, ptr %41, align 8, !tbaa !9
  br label %1203

1203:                                             ; preds = %1201, %1167
  %1204 = load i32, ptr %50, align 4, !tbaa !11
  %1205 = sext i32 %1204 to i64
  %1206 = getelementptr inbounds [3 x double], ptr %17, i64 0, i64 %1205
  %1207 = load double, ptr %1206, align 8, !tbaa !9
  %1208 = load double, ptr %26, align 8, !tbaa !9
  %1209 = fcmp olt double %1207, %1208
  br i1 %1209, label %1210, label %1215

1210:                                             ; preds = %1203
  %1211 = load i32, ptr %50, align 4, !tbaa !11
  %1212 = sext i32 %1211 to i64
  %1213 = getelementptr inbounds [3 x double], ptr %17, i64 0, i64 %1212
  %1214 = load double, ptr %1213, align 8, !tbaa !9
  store double %1214, ptr %26, align 8, !tbaa !9
  br label %1215

1215:                                             ; preds = %1210, %1203
  %1216 = load i32, ptr %50, align 4, !tbaa !11
  %1217 = sext i32 %1216 to i64
  %1218 = getelementptr inbounds [3 x double], ptr %17, i64 0, i64 %1217
  %1219 = load double, ptr %1218, align 8, !tbaa !9
  %1220 = load double, ptr %27, align 8, !tbaa !9
  %1221 = fcmp ogt double %1219, %1220
  br i1 %1221, label %1222, label %1227

1222:                                             ; preds = %1215
  %1223 = load i32, ptr %50, align 4, !tbaa !11
  %1224 = sext i32 %1223 to i64
  %1225 = getelementptr inbounds [3 x double], ptr %17, i64 0, i64 %1224
  %1226 = load double, ptr %1225, align 8, !tbaa !9
  store double %1226, ptr %27, align 8, !tbaa !9
  br label %1227

1227:                                             ; preds = %1222, %1215
  %1228 = load i32, ptr %50, align 4, !tbaa !11
  %1229 = sext i32 %1228 to i64
  %1230 = getelementptr inbounds [3 x double], ptr %17, i64 0, i64 %1229
  %1231 = load double, ptr %1230, align 8, !tbaa !9
  %1232 = fdiv double %1231, 1.000000e+01
  %1233 = fptosi double %1232 to i32
  store i32 %1233, ptr %49, align 4, !tbaa !11
  %1234 = load i32, ptr %49, align 4, !tbaa !11
  %1235 = sext i32 %1234 to i64
  %1236 = getelementptr inbounds [18 x i64], ptr %45, i64 0, i64 %1235
  %1237 = load i64, ptr %1236, align 8, !tbaa !13
  %1238 = add i64 %1237, 1
  store i64 %1238, ptr %1236, align 8, !tbaa !13
  br label %1239

1239:                                             ; preds = %1227
  %1240 = load i32, ptr %50, align 4, !tbaa !11
  %1241 = add nsw i32 %1240, 1
  store i32 %1241, ptr %50, align 4, !tbaa !11
  br label %1161, !llvm.loop !65

1242:                                             ; preds = %1161
  br label %1243

1243:                                             ; preds = %1242, %1106
  br label %1244

1244:                                             ; preds = %1243
  %1245 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %3, i32 0, i32 1
  %1246 = load i32, ptr %1245, align 8, !tbaa !62
  %1247 = add nsw i32 %1246, 1
  store i32 %1247, ptr %1245, align 8, !tbaa !62
  br label %1094, !llvm.loop !66

1248:                                             ; preds = %1094
  %1249 = load double, ptr %32, align 8, !tbaa !9
  %1250 = load double, ptr %34, align 8, !tbaa !9
  %1251 = call double @sqrt(double noundef %1250) #8
  %1252 = fdiv double %1249, %1251
  store double %1252, ptr %37, align 8, !tbaa !9
  %1253 = load double, ptr %35, align 8, !tbaa !9
  %1254 = call double @sqrt(double noundef %1253) #8
  %1255 = load double, ptr %33, align 8, !tbaa !9
  %1256 = fmul double %1254, %1255
  store double %1256, ptr %36, align 8, !tbaa !9
  %1257 = load double, ptr %36, align 8, !tbaa !9
  %1258 = load double, ptr %22, align 8, !tbaa !9
  %1259 = fcmp olt double %1257, %1258
  br i1 %1259, label %1260, label %1262

1260:                                             ; preds = %1248
  %1261 = load double, ptr %36, align 8, !tbaa !9
  store double %1261, ptr %22, align 8, !tbaa !9
  br label %1262

1262:                                             ; preds = %1260, %1248
  %1263 = load double, ptr %36, align 8, !tbaa !9
  %1264 = load double, ptr %23, align 8, !tbaa !9
  %1265 = fcmp ogt double %1263, %1264
  br i1 %1265, label %1266, label %1268

1266:                                             ; preds = %1262
  %1267 = load double, ptr %36, align 8, !tbaa !9
  store double %1267, ptr %23, align 8, !tbaa !9
  br label %1268

1268:                                             ; preds = %1266, %1262
  store i32 0, ptr %48, align 4, !tbaa !11
  br label %1269

1269:                                             ; preds = %1281, %1268
  %1270 = load double, ptr %36, align 8, !tbaa !9
  %1271 = load i32, ptr %48, align 4, !tbaa !11
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 %1272
  %1274 = load double, ptr %1273, align 8, !tbaa !9
  %1275 = fcmp ogt double %1270, %1274
  br i1 %1275, label %1276, label %1279

1276:                                             ; preds = %1269
  %1277 = load i32, ptr %48, align 4, !tbaa !11
  %1278 = icmp slt i32 %1277, 11
  br label %1279

1279:                                             ; preds = %1276, %1269
  %1280 = phi i1 [ false, %1269 ], [ %1278, %1276 ]
  br i1 %1280, label %1281, label %1284

1281:                                             ; preds = %1279
  %1282 = load i32, ptr %48, align 4, !tbaa !11
  %1283 = add nsw i32 %1282, 1
  store i32 %1283, ptr %48, align 4, !tbaa !11
  br label %1269, !llvm.loop !67

1284:                                             ; preds = %1279
  %1285 = load i32, ptr %48, align 4, !tbaa !11
  %1286 = sext i32 %1285 to i64
  %1287 = getelementptr inbounds [16 x i64], ptr %43, i64 0, i64 %1286
  %1288 = load i64, ptr %1287, align 8, !tbaa !13
  %1289 = add i64 %1288, 1
  store i64 %1289, ptr %1287, align 8, !tbaa !13
  store i32 0, ptr %47, align 4, !tbaa !11
  br label %1290

1290:                                             ; preds = %1302, %1284
  %1291 = load double, ptr %37, align 8, !tbaa !9
  %1292 = load i32, ptr %47, align 4, !tbaa !11
  %1293 = sext i32 %1292 to i64
  %1294 = getelementptr inbounds [12 x double], ptr %7, i64 0, i64 %1293
  %1295 = load double, ptr %1294, align 8, !tbaa !9
  %1296 = fcmp ogt double %1291, %1295
  br i1 %1296, label %1297, label %1300

1297:                                             ; preds = %1290
  %1298 = load i32, ptr %47, align 4, !tbaa !11
  %1299 = icmp slt i32 %1298, 11
  br label %1300

1300:                                             ; preds = %1297, %1290
  %1301 = phi i1 [ false, %1290 ], [ %1299, %1297 ]
  br i1 %1301, label %1302, label %1305

1302:                                             ; preds = %1300
  %1303 = load i32, ptr %47, align 4, !tbaa !11
  %1304 = add nsw i32 %1303, 1
  store i32 %1304, ptr %47, align 4, !tbaa !11
  br label %1290, !llvm.loop !68

1305:                                             ; preds = %1300
  %1306 = load i32, ptr %47, align 4, !tbaa !11
  %1307 = sext i32 %1306 to i64
  %1308 = getelementptr inbounds [12 x i64], ptr %42, i64 0, i64 %1307
  %1309 = load i64, ptr %1308, align 8, !tbaa !13
  %1310 = add i64 %1309, 1
  store i64 %1310, ptr %1308, align 8, !tbaa !13
  %1311 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %53)
  %1312 = getelementptr inbounds %"class.tetgenmesh::triface", ptr %3, i32 0, i32 0
  store ptr %1311, ptr %1312, align 8, !tbaa !31
  br label %152, !llvm.loop !36

1313:                                             ; preds = %152
  %1314 = load double, ptr %18, align 8, !tbaa !9
  %1315 = call double @sqrt(double noundef %1314) #8
  store double %1315, ptr %18, align 8, !tbaa !9
  %1316 = load double, ptr %19, align 8, !tbaa !9
  %1317 = call double @sqrt(double noundef %1316) #8
  store double %1317, ptr %19, align 8, !tbaa !9
  %1318 = load double, ptr %31, align 8, !tbaa !9
  %1319 = call double @sqrt(double noundef %1318) #8
  store double %1319, ptr %31, align 8, !tbaa !9
  %1320 = load double, ptr %20, align 8, !tbaa !9
  %1321 = load double, ptr %21, align 8, !tbaa !9
  %1322 = call i32 (ptr, ...) @printf(ptr noundef @.str.620, double noundef %1320, double noundef %1321)
  %1323 = load double, ptr %18, align 8, !tbaa !9
  %1324 = load double, ptr %19, align 8, !tbaa !9
  %1325 = call i32 (ptr, ...) @printf(ptr noundef @.str.621, double noundef %1323, double noundef %1324)
  %1326 = load double, ptr %22, align 8, !tbaa !9
  %1327 = load double, ptr %23, align 8, !tbaa !9
  %1328 = call i32 (ptr, ...) @printf(ptr noundef @.str.622, double noundef %1326, double noundef %1327)
  %1329 = getelementptr inbounds [128 x i8], ptr %6, i64 0, i64 0
  %1330 = load double, ptr %27, align 8, !tbaa !9
  %1331 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1329, ptr noundef @.str.623, double noundef %1330) #8
  %1332 = getelementptr inbounds [128 x i8], ptr %6, i64 0, i64 0
  %1333 = call i64 @strlen(ptr noundef %1332) #9
  %1334 = icmp ugt i64 %1333, 8
  br i1 %1334, label %1335, label %1337

1335:                                             ; preds = %1313
  %1336 = getelementptr inbounds [128 x i8], ptr %6, i64 0, i64 8
  store i8 0, ptr %1336, align 8, !tbaa !69
  br label %1337

1337:                                             ; preds = %1335, %1313
  %1338 = load double, ptr %26, align 8, !tbaa !9
  %1339 = getelementptr inbounds [128 x i8], ptr %6, i64 0, i64 0
  %1340 = call i32 (ptr, ...) @printf(ptr noundef @.str.624, double noundef %1338, ptr noundef %1339)
  %1341 = getelementptr inbounds [128 x i8], ptr %6, i64 0, i64 0
  %1342 = load double, ptr %25, align 8, !tbaa !9
  %1343 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1341, ptr noundef @.str.623, double noundef %1342) #8
  %1344 = getelementptr inbounds [128 x i8], ptr %6, i64 0, i64 0
  %1345 = call i64 @strlen(ptr noundef %1344) #9
  %1346 = icmp ugt i64 %1345, 8
  br i1 %1346, label %1347, label %1349

1347:                                             ; preds = %1337
  %1348 = getelementptr inbounds [128 x i8], ptr %6, i64 0, i64 8
  store i8 0, ptr %1348, align 8, !tbaa !69
  br label %1349

1349:                                             ; preds = %1347, %1337
  %1350 = load double, ptr %24, align 8, !tbaa !9
  %1351 = getelementptr inbounds [128 x i8], ptr %6, i64 0, i64 0
  %1352 = call i32 (ptr, ...) @printf(ptr noundef @.str.625, double noundef %1350, ptr noundef %1351)
  %1353 = call i32 (ptr, ...) @printf(ptr noundef @.str.626)
  %1354 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 0
  %1355 = load double, ptr %1354, align 16, !tbaa !9
  %1356 = getelementptr inbounds [16 x i64], ptr %43, i64 0, i64 0
  %1357 = load i64, ptr %1356, align 16, !tbaa !13
  %1358 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 5
  %1359 = load double, ptr %1358, align 8, !tbaa !9
  %1360 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 6
  %1361 = load double, ptr %1360, align 16, !tbaa !9
  %1362 = getelementptr inbounds [16 x i64], ptr %43, i64 0, i64 6
  %1363 = load i64, ptr %1362, align 16, !tbaa !13
  %1364 = call i32 (ptr, ...) @printf(ptr noundef @.str.627, double noundef %1355, i64 noundef %1357, double noundef %1359, double noundef %1361, i64 noundef %1363)
  store i32 1, ptr %50, align 4, !tbaa !11
  br label %1365

1365:                                             ; preds = %1398, %1349
  %1366 = load i32, ptr %50, align 4, !tbaa !11
  %1367 = icmp slt i32 %1366, 5
  br i1 %1367, label %1368, label %1401

1368:                                             ; preds = %1365
  %1369 = load i32, ptr %50, align 4, !tbaa !11
  %1370 = sub nsw i32 %1369, 1
  %1371 = sext i32 %1370 to i64
  %1372 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 %1371
  %1373 = load double, ptr %1372, align 8, !tbaa !9
  %1374 = load i32, ptr %50, align 4, !tbaa !11
  %1375 = sext i32 %1374 to i64
  %1376 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 %1375
  %1377 = load double, ptr %1376, align 8, !tbaa !9
  %1378 = load i32, ptr %50, align 4, !tbaa !11
  %1379 = sext i32 %1378 to i64
  %1380 = getelementptr inbounds [16 x i64], ptr %43, i64 0, i64 %1379
  %1381 = load i64, ptr %1380, align 8, !tbaa !13
  %1382 = load i32, ptr %50, align 4, !tbaa !11
  %1383 = add nsw i32 %1382, 5
  %1384 = sext i32 %1383 to i64
  %1385 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 %1384
  %1386 = load double, ptr %1385, align 8, !tbaa !9
  %1387 = load i32, ptr %50, align 4, !tbaa !11
  %1388 = add nsw i32 %1387, 6
  %1389 = sext i32 %1388 to i64
  %1390 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 %1389
  %1391 = load double, ptr %1390, align 8, !tbaa !9
  %1392 = load i32, ptr %50, align 4, !tbaa !11
  %1393 = add nsw i32 %1392, 6
  %1394 = sext i32 %1393 to i64
  %1395 = getelementptr inbounds [16 x i64], ptr %43, i64 0, i64 %1394
  %1396 = load i64, ptr %1395, align 8, !tbaa !13
  %1397 = call i32 (ptr, ...) @printf(ptr noundef @.str.628, double noundef %1373, double noundef %1377, i64 noundef %1381, double noundef %1386, double noundef %1391, i64 noundef %1396)
  br label %1398

1398:                                             ; preds = %1368
  %1399 = load i32, ptr %50, align 4, !tbaa !11
  %1400 = add nsw i32 %1399, 1
  store i32 %1400, ptr %50, align 4, !tbaa !11
  br label %1365, !llvm.loop !70

1401:                                             ; preds = %1365
  %1402 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 4
  %1403 = load double, ptr %1402, align 16, !tbaa !9
  %1404 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 5
  %1405 = load double, ptr %1404, align 8, !tbaa !9
  %1406 = getelementptr inbounds [16 x i64], ptr %43, i64 0, i64 5
  %1407 = load i64, ptr %1406, align 8, !tbaa !13
  %1408 = getelementptr inbounds [12 x double], ptr %8, i64 0, i64 10
  %1409 = load double, ptr %1408, align 16, !tbaa !9
  %1410 = getelementptr inbounds [16 x i64], ptr %43, i64 0, i64 11
  %1411 = load i64, ptr %1410, align 8, !tbaa !13
  %1412 = call i32 (ptr, ...) @printf(ptr noundef @.str.629, double noundef %1403, double noundef %1405, i64 noundef %1407, double noundef %1409, i64 noundef %1411)
  %1413 = call i32 (ptr, ...) @printf(ptr noundef @.str.630)
  %1414 = call i32 (ptr, ...) @printf(ptr noundef @.str.631)
  %1415 = call i32 (ptr, ...) @printf(ptr noundef @.str.632)
  %1416 = call i32 (ptr, ...) @printf(ptr noundef @.str.633)
  store i32 0, ptr %50, align 4, !tbaa !11
  br label %1417

1417:                                             ; preds = %1442, %1401
  %1418 = load i32, ptr %50, align 4, !tbaa !11
  %1419 = icmp slt i32 %1418, 9
  br i1 %1419, label %1420, label %1445

1420:                                             ; preds = %1417
  %1421 = load i32, ptr %50, align 4, !tbaa !11
  %1422 = mul nsw i32 %1421, 10
  %1423 = load i32, ptr %50, align 4, !tbaa !11
  %1424 = mul nsw i32 %1423, 10
  %1425 = add nsw i32 %1424, 10
  %1426 = load i32, ptr %50, align 4, !tbaa !11
  %1427 = sext i32 %1426 to i64
  %1428 = getelementptr inbounds [18 x i64], ptr %45, i64 0, i64 %1427
  %1429 = load i64, ptr %1428, align 8, !tbaa !13
  %1430 = load i32, ptr %50, align 4, !tbaa !11
  %1431 = mul nsw i32 %1430, 10
  %1432 = add nsw i32 %1431, 90
  %1433 = load i32, ptr %50, align 4, !tbaa !11
  %1434 = mul nsw i32 %1433, 10
  %1435 = add nsw i32 %1434, 100
  %1436 = load i32, ptr %50, align 4, !tbaa !11
  %1437 = add nsw i32 %1436, 9
  %1438 = sext i32 %1437 to i64
  %1439 = getelementptr inbounds [18 x i64], ptr %45, i64 0, i64 %1438
  %1440 = load i64, ptr %1439, align 8, !tbaa !13
  %1441 = call i32 (ptr, ...) @printf(ptr noundef @.str.634, i32 noundef %1422, i32 noundef %1425, i64 noundef %1429, i32 noundef %1432, i32 noundef %1435, i64 noundef %1440)
  br label %1442

1442:                                             ; preds = %1420
  %1443 = load i32, ptr %50, align 4, !tbaa !11
  %1444 = add nsw i32 %1443, 1
  store i32 %1444, ptr %50, align 4, !tbaa !11
  br label %1417, !llvm.loop !71

1445:                                             ; preds = %1417
  %1446 = getelementptr inbounds %class.tetgenmesh, ptr %53, i32 0, i32 64
  %1447 = load double, ptr %1446, align 8, !tbaa !72
  %1448 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !9
  %1449 = fcmp une double %1447, %1448
  br i1 %1449, label %1450, label %1457

1450:                                             ; preds = %1445
  %1451 = getelementptr inbounds %class.tetgenmesh, ptr %53, i32 0, i32 64
  %1452 = load double, ptr %1451, align 8, !tbaa !72
  %1453 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !9
  %1454 = fdiv double %1452, %1453
  %1455 = fmul double %1454, 1.800000e+02
  %1456 = call i32 (ptr, ...) @printf(ptr noundef @.str.635, double noundef %1455)
  br label %1457

1457:                                             ; preds = %1450, %1445
  %1458 = call i32 (ptr, ...) @printf(ptr noundef @.str.142)
  %1459 = call i32 (ptr, ...) @printf(ptr noundef @.str.636)
  %1460 = getelementptr inbounds [18 x i64], ptr %44, i64 0, i64 0
  %1461 = load i64, ptr %1460, align 16, !tbaa !13
  %1462 = getelementptr inbounds [18 x i64], ptr %44, i64 0, i64 9
  %1463 = load i64, ptr %1462, align 8, !tbaa !13
  %1464 = call i32 (ptr, ...) @printf(ptr noundef @.str.637, i32 noundef 0, i32 noundef 5, i64 noundef %1461, i32 noundef 80, i32 noundef 110, i64 noundef %1463)
  %1465 = getelementptr inbounds [18 x i64], ptr %44, i64 0, i64 1
  %1466 = load i64, ptr %1465, align 8, !tbaa !13
  %1467 = getelementptr inbounds [18 x i64], ptr %44, i64 0, i64 10
  %1468 = load i64, ptr %1467, align 16, !tbaa !13
  %1469 = call i32 (ptr, ...) @printf(ptr noundef @.str.637, i32 noundef 5, i32 noundef 10, i64 noundef %1466, i32 noundef 110, i32 noundef 120, i64 noundef %1468)
  store i32 2, ptr %50, align 4, !tbaa !11
  br label %1470

1470:                                             ; preds = %1499, %1457
  %1471 = load i32, ptr %50, align 4, !tbaa !11
  %1472 = icmp slt i32 %1471, 7
  br i1 %1472, label %1473, label %1502

1473:                                             ; preds = %1470
  %1474 = load i32, ptr %50, align 4, !tbaa !11
  %1475 = sub nsw i32 %1474, 1
  %1476 = mul nsw i32 %1475, 10
  %1477 = load i32, ptr %50, align 4, !tbaa !11
  %1478 = sub nsw i32 %1477, 1
  %1479 = mul nsw i32 %1478, 10
  %1480 = add nsw i32 %1479, 10
  %1481 = load i32, ptr %50, align 4, !tbaa !11
  %1482 = sext i32 %1481 to i64
  %1483 = getelementptr inbounds [18 x i64], ptr %44, i64 0, i64 %1482
  %1484 = load i64, ptr %1483, align 8, !tbaa !13
  %1485 = load i32, ptr %50, align 4, !tbaa !11
  %1486 = sub nsw i32 %1485, 1
  %1487 = mul nsw i32 %1486, 10
  %1488 = add nsw i32 %1487, 110
  %1489 = load i32, ptr %50, align 4, !tbaa !11
  %1490 = sub nsw i32 %1489, 1
  %1491 = mul nsw i32 %1490, 10
  %1492 = add nsw i32 %1491, 120
  %1493 = load i32, ptr %50, align 4, !tbaa !11
  %1494 = add nsw i32 %1493, 9
  %1495 = sext i32 %1494 to i64
  %1496 = getelementptr inbounds [18 x i64], ptr %44, i64 0, i64 %1495
  %1497 = load i64, ptr %1496, align 8, !tbaa !13
  %1498 = call i32 (ptr, ...) @printf(ptr noundef @.str.637, i32 noundef %1476, i32 noundef %1480, i64 noundef %1484, i32 noundef %1488, i32 noundef %1492, i64 noundef %1497)
  br label %1499

1499:                                             ; preds = %1473
  %1500 = load i32, ptr %50, align 4, !tbaa !11
  %1501 = add nsw i32 %1500, 1
  store i32 %1501, ptr %50, align 4, !tbaa !11
  br label %1470, !llvm.loop !73

1502:                                             ; preds = %1470
  %1503 = getelementptr inbounds [18 x i64], ptr %44, i64 0, i64 7
  %1504 = load i64, ptr %1503, align 8, !tbaa !13
  %1505 = getelementptr inbounds [18 x i64], ptr %44, i64 0, i64 16
  %1506 = load i64, ptr %1505, align 16, !tbaa !13
  %1507 = call i32 (ptr, ...) @printf(ptr noundef @.str.637, i32 noundef 60, i32 noundef 70, i64 noundef %1504, i32 noundef 170, i32 noundef 175, i64 noundef %1506)
  %1508 = getelementptr inbounds [18 x i64], ptr %44, i64 0, i64 8
  %1509 = load i64, ptr %1508, align 16, !tbaa !13
  %1510 = getelementptr inbounds [18 x i64], ptr %44, i64 0, i64 17
  %1511 = load i64, ptr %1510, align 8, !tbaa !13
  %1512 = call i32 (ptr, ...) @printf(ptr noundef @.str.637, i32 noundef 70, i32 noundef 80, i64 noundef %1509, i32 noundef 175, i32 noundef 180, i64 noundef %1511)
  %1513 = getelementptr inbounds %class.tetgenmesh, ptr %53, i32 0, i32 65
  %1514 = load double, ptr %1513, align 8, !tbaa !74
  %1515 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !9
  %1516 = fcmp une double %1514, %1515
  br i1 %1516, label %1517, label %1524

1517:                                             ; preds = %1502
  %1518 = getelementptr inbounds %class.tetgenmesh, ptr %53, i32 0, i32 65
  %1519 = load double, ptr %1518, align 8, !tbaa !74
  %1520 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !9
  %1521 = fdiv double %1519, %1520
  %1522 = fmul double %1521, 1.800000e+02
  %1523 = call i32 (ptr, ...) @printf(ptr noundef @.str.638, double noundef %1522)
  br label %1524

1524:                                             ; preds = %1517, %1502
  %1525 = call i32 (ptr, ...) @printf(ptr noundef @.str.142)
  %1526 = call i32 (ptr, ...) @printf(ptr noundef @.str.142)
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %4) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #8
  ret void
}

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

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


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

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

@.str.142 = external hidden unnamed_addr constant [2 x i8], align 1
@_ZN10tetgenmesh2PIE = external dso_local local_unnamed_addr global double, align 8
@.str.616 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.617 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.618 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.619 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.620 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.621 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.622 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.623 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.624 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.625 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.626 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.627 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.628 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.629 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.630 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.631 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.632 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.633 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.634 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.635 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.636 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.637 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.638 = external hidden unnamed_addr constant [48 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: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #1

; 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 nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #2

; Function Attrs: nofree nounwind
declare noundef i32 @sprintf(ptr noalias nocapture noundef writeonly, ptr nocapture noundef readonly, ...) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10tetgenmesh17qualitystatisticsEv(ptr noundef nonnull align 8 dereferenceable(1536) %0) local_unnamed_addr #5 align 2 {
.preheader426.preheader:
  %1 = alloca %"class.tetgenmesh::triface", align 8
  %2 = alloca %"class.tetgenmesh::triface", align 8
  %3 = alloca [128 x i8], align 16
  %4 = alloca [12 x double], align 16
  %5 = alloca [12 x double], align 16
  %6 = alloca [4 x [4 x double]], align 16
  %7 = alloca [4 x double], align 16
  %8 = alloca double, align 8
  %9 = alloca [6 x [3 x double]], align 16
  %10 = alloca [4 x [3 x double]], align 16
  %11 = alloca [12 x i64], align 16
  %12 = alloca [16 x i64], align 16
  %13 = alloca [18 x i64], align 16
  %14 = alloca [18 x i64], align 16
  %15 = alloca [4 x i32], align 16
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %1) #10
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %1)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #10
  call void @_ZN10tetgenmesh7trifaceC2Ev(ptr noundef nonnull align 8 dereferenceable(12) %2)
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %3) #10
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %4) #10
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %5) #10
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %6) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #10
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %9) #10
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %10) #10
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %11) #10
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %12) #10
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %13) #10
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %14) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #10
  %16 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.616)
  store <2 x double> <double 7.070000e-01, double 1.000000e+00>, ptr %4, align 16, !tbaa !5
  %17 = getelementptr inbounds i8, ptr %4, i64 16
  store <2 x double> <double 1.100000e+00, double 1.200000e+00>, ptr %17, align 16, !tbaa !5
  %18 = getelementptr inbounds i8, ptr %4, i64 32
  store <2 x double> <double 1.400000e+00, double 1.600000e+00>, ptr %18, align 16, !tbaa !5
  %19 = getelementptr inbounds i8, ptr %4, i64 48
  store <2 x double> <double 1.800000e+00, double 2.000000e+00>, ptr %19, align 16, !tbaa !5
  %20 = getelementptr inbounds i8, ptr %4, i64 64
  store <2 x double> <double 2.500000e+00, double 3.000000e+00>, ptr %20, align 16, !tbaa !5
  %21 = getelementptr inbounds i8, ptr %4, i64 80
  store <2 x double> <double 1.000000e+01, double 0.000000e+00>, ptr %21, align 16, !tbaa !5
  %22 = getelementptr inbounds i8, ptr %5, i64 8
  store <2 x double> <double 1.500000e+00, double 2.000000e+00>, ptr %5, align 16, !tbaa !5
  %23 = getelementptr inbounds i8, ptr %5, i64 16
  %24 = getelementptr inbounds i8, ptr %5, i64 24
  store <2 x double> <double 2.500000e+00, double 3.000000e+00>, ptr %23, align 16, !tbaa !5
  %25 = getelementptr inbounds i8, ptr %5, i64 32
  %26 = getelementptr inbounds i8, ptr %5, i64 40
  store <2 x double> <double 4.000000e+00, double 6.000000e+00>, ptr %25, align 16, !tbaa !5
  %27 = getelementptr inbounds i8, ptr %5, i64 48
  %28 = getelementptr inbounds i8, ptr %5, i64 56
  store <2 x double> <double 1.000000e+01, double 1.500000e+01>, ptr %27, align 16, !tbaa !5
  %29 = getelementptr inbounds i8, ptr %5, i64 64
  %30 = getelementptr inbounds i8, ptr %5, i64 72
  store <2 x double> <double 2.500000e+01, double 5.000000e+01>, ptr %29, align 16, !tbaa !5
  %31 = getelementptr inbounds i8, ptr %5, i64 80
  store <2 x double> <double 1.000000e+02, double 0.000000e+00>, ptr %31, align 16, !tbaa !5
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %11, i8 0, i64 96, i1 false), !tbaa !9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %12, i8 0, i64 96, i1 false), !tbaa !9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(144) %13, i8 0, i64 144, i1 false), !tbaa !9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(144) %14, i8 0, i64 144, i1 false), !tbaa !9
  %32 = getelementptr inbounds i8, ptr %0, i64 496
  %33 = load double, ptr %32, align 8, !tbaa !11
  %34 = getelementptr inbounds i8, ptr %0, i64 504
  %35 = load double, ptr %34, align 8, !tbaa !17
  %36 = fsub double %33, %35
  %37 = getelementptr inbounds i8, ptr %0, i64 512
  %38 = load double, ptr %37, align 8, !tbaa !18
  %39 = fadd double %36, %38
  %40 = getelementptr inbounds i8, ptr %0, i64 520
  %41 = load double, ptr %40, align 8, !tbaa !19
  %42 = fsub double %39, %41
  %43 = getelementptr inbounds i8, ptr %0, i64 528
  %44 = load double, ptr %43, align 8, !tbaa !20
  %45 = fadd double %42, %44
  %46 = getelementptr inbounds i8, ptr %0, i64 536
  %47 = load double, ptr %46, align 8, !tbaa !21
  %48 = fsub double %45, %47
  %49 = fmul double %48, %48
  %50 = getelementptr inbounds i8, ptr %0, i64 332
  %51 = load i32, ptr %50, align 4, !tbaa !22
  %52 = add nsw i32 %51, -1
  %53 = getelementptr inbounds i8, ptr %0, i64 32
  %54 = load ptr, ptr %53, align 8, !tbaa !23
  call void @_ZN10tetgenmesh10memorypool13traversalinitEv(ptr noundef nonnull align 8 dereferenceable(88) %54)
  %55 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  store ptr %55, ptr %1, align 8, !tbaa !24
  %.not470505567 = icmp eq ptr %55, null
  br i1 %.not470505567, label %.outer411._crit_edge, label %.lr.ph.lr.ph.lr.ph

.lr.ph.lr.ph.lr.ph:                               ; preds = %.preheader426.preheader
  %56 = getelementptr inbounds i8, ptr %0, i64 16
  %57 = getelementptr inbounds i8, ptr %9, i64 24
  %58 = getelementptr inbounds i8, ptr %9, i64 48
  %59 = getelementptr inbounds i8, ptr %9, i64 72
  %60 = getelementptr inbounds i8, ptr %9, i64 96
  %61 = getelementptr inbounds i8, ptr %9, i64 120
  %62 = getelementptr inbounds i8, ptr %10, i64 24
  %63 = getelementptr inbounds i8, ptr %10, i64 48
  %64 = getelementptr inbounds i8, ptr %10, i64 72
  %65 = getelementptr inbounds i8, ptr %1, i64 8
  %66 = getelementptr inbounds i8, ptr %0, i64 280
  %67 = getelementptr inbounds i8, ptr %9, i64 16
  %68 = getelementptr inbounds i8, ptr %9, i64 32
  %69 = getelementptr inbounds i8, ptr %9, i64 40
  %70 = getelementptr inbounds i8, ptr %9, i64 56
  %71 = getelementptr inbounds i8, ptr %9, i64 64
  %72 = getelementptr inbounds i8, ptr %9, i64 80
  %73 = getelementptr inbounds i8, ptr %9, i64 88
  %74 = getelementptr inbounds i8, ptr %9, i64 104
  %75 = getelementptr inbounds i8, ptr %9, i64 112
  %76 = getelementptr inbounds i8, ptr %9, i64 128
  %77 = getelementptr inbounds i8, ptr %9, i64 136
  %scevgep681.1 = getelementptr inbounds i8, ptr %6, i64 32
  %scevgep681.2 = getelementptr inbounds i8, ptr %6, i64 64
  %78 = getelementptr inbounds i8, ptr %10, i64 16
  %79 = getelementptr inbounds i8, ptr %10, i64 40
  %80 = getelementptr inbounds i8, ptr %10, i64 64
  %81 = getelementptr inbounds i8, ptr %10, i64 88
  %82 = getelementptr inbounds i8, ptr %7, i64 8
  %83 = getelementptr inbounds i8, ptr %7, i64 16
  %84 = getelementptr inbounds i8, ptr %10, i64 16
  %85 = getelementptr inbounds i8, ptr %10, i64 40
  %86 = getelementptr inbounds i8, ptr %10, i64 64
  %87 = getelementptr inbounds i8, ptr %10, i64 88
  %88 = getelementptr inbounds i8, ptr %10, i64 40
  %89 = getelementptr inbounds i8, ptr %10, i64 64
  %90 = getelementptr inbounds i8, ptr %10, i64 88
  br label %.lr.ph.lr.ph

.lr.ph.lr.ph:                                     ; preds = %.lr.ph.lr.ph.lr.ph, %.outer
  %91 = phi ptr [ %55, %.lr.ph.lr.ph.lr.ph ], [ %639, %.outer ]
  %.0.ph585 = phi double [ %49, %.lr.ph.lr.ph.lr.ph ], [ %.2.5, %.outer ]
  %.0318.ph580 = phi double [ 0.000000e+00, %.lr.ph.lr.ph.lr.ph ], [ %.2320.5, %.outer ]
  %.0321.ph579 = phi double [ %49, %.lr.ph.lr.ph.lr.ph ], [ %.1322, %.outer ]
  %.0335.ph576 = phi double [ 0.000000e+00, %.lr.ph.lr.ph.lr.ph ], [ %.1336, %.outer ]
  %.0339.ph573 = phi double [ 0.000000e+00, %.lr.ph.lr.ph.lr.ph ], [ %.4343, %.outer ]
  %.0344.ph572 = phi double [ 1.800000e+02, %.lr.ph.lr.ph.lr.ph ], [ %.4348, %.outer ]
  %.0349.ph571 = phi double [ 0.000000e+00, %.lr.ph.lr.ph.lr.ph ], [ %.2351.5, %.outer ]
  %.0352.ph570 = phi double [ 1.800000e+02, %.lr.ph.lr.ph.lr.ph ], [ %.2354.5, %.outer ]
  %.0355.ph569 = phi double [ 0.000000e+00, %.lr.ph.lr.ph.lr.ph ], [ %.1356, %.outer ]
  %.0357.ph568 = phi double [ 1.000000e+16, %.lr.ph.lr.ph.lr.ph ], [ %.1358, %.outer ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.lr.ph, %.outer411
  %92 = phi ptr [ %91, %.lr.ph.lr.ph ], [ %271, %.outer411 ]
  %.0.ph423513 = phi double [ %.0.ph585, %.lr.ph.lr.ph ], [ %.2.5, %.outer411 ]
  %.0318.ph418512 = phi double [ %.0318.ph580, %.lr.ph.lr.ph ], [ %.2320.5, %.outer411 ]
  %.0321.ph417511 = phi double [ %.0321.ph579, %.lr.ph.lr.ph ], [ %.1322, %.outer411 ]
  %.0335.ph414508 = phi double [ %.0335.ph576, %.lr.ph.lr.ph ], [ %.1336, %.outer411 ]
  br label %93

93:                                               ; preds = %.lr.ph, %101
  %94 = phi ptr [ %92, %.lr.ph ], [ %102, %101 ]
  %95 = load ptr, ptr %56, align 8, !tbaa !25
  %96 = getelementptr inbounds i8, ptr %95, i64 68
  %97 = load i32, ptr %96, align 4, !tbaa !26
  %.not391 = icmp eq i32 %97, 0
  br i1 %.not391, label %.preheader403, label %98

98:                                               ; preds = %93
  %99 = call noundef double @_ZN10tetgenmesh13elemattributeEPPPdi(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %94, i32 noundef %52)
  %100 = fcmp oeq double %99, -1.000000e+00
  br i1 %100, label %101, label %..preheader410.preheader_crit_edge

..preheader410.preheader_crit_edge:               ; preds = %98
  %.pre = load ptr, ptr %1, align 8, !tbaa !24
  br label %.preheader403

101:                                              ; preds = %98
  %102 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  store ptr %102, ptr %1, align 8, !tbaa !24
  %.not = icmp eq ptr %102, null
  br i1 %.not, label %.outer411._crit_edge, label %93, !llvm.loop !29

.preheader403:                                    ; preds = %93, %..preheader410.preheader_crit_edge
  %103 = phi ptr [ %.pre, %..preheader410.preheader_crit_edge ], [ %94, %93 ]
  %scevgep = getelementptr i8, ptr %103, i64 32
  %.sroa.0759.0.copyload = load ptr, ptr %scevgep, align 8, !tbaa !31
  %.sroa.6760.0.scevgep.sroa_idx = getelementptr i8, ptr %103, i64 40
  %.sroa.6760.0.copyload = load ptr, ptr %.sroa.6760.0.scevgep.sroa_idx, align 8, !tbaa !31
  %.sroa.9761.0.scevgep.sroa_idx = getelementptr i8, ptr %103, i64 48
  %.sroa.9761.0.copyload = load ptr, ptr %.sroa.9761.0.scevgep.sroa_idx, align 8, !tbaa !31
  %.sroa.12762.0.scevgep.sroa_idx = getelementptr i8, ptr %103, i64 56
  %.sroa.12762.0.copyload = load ptr, ptr %.sroa.12762.0.scevgep.sroa_idx, align 8, !tbaa !31
  %104 = call noundef double @_ZN10tetgenmesh12orient3dfastEPdS0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %.sroa.6760.0.copyload, ptr noundef %.sroa.0759.0.copyload, ptr noundef %.sroa.9761.0.copyload, ptr noundef %.sroa.12762.0.copyload)
  %105 = fdiv double %104, 6.000000e+00
  %106 = call noundef double @_ZN10tetgenmesh11tetprismvolEPdS0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %.sroa.0759.0.copyload, ptr noundef %.sroa.6760.0.copyload, ptr noundef %.sroa.9761.0.copyload, ptr noundef %.sroa.12762.0.copyload)
  %107 = fcmp olt double %105, %.0321.ph417511
  %108 = fcmp ogt double %105, %.0335.ph414508
  %109 = getelementptr inbounds i8, ptr %.sroa.0759.0.copyload, i64 8
  %110 = getelementptr inbounds i8, ptr %.sroa.12762.0.copyload, i64 8
  %111 = load <2 x double>, ptr %.sroa.0759.0.copyload, align 8, !tbaa !5
  %112 = load <2 x double>, ptr %.sroa.12762.0.copyload, align 8, !tbaa !5
  %113 = fsub <2 x double> %111, %112
  store <2 x double> %113, ptr %9, align 16, !tbaa !5
  %114 = getelementptr inbounds i8, ptr %.sroa.0759.0.copyload, i64 16
  %115 = load double, ptr %114, align 8, !tbaa !5
  %116 = getelementptr inbounds i8, ptr %.sroa.12762.0.copyload, i64 16
  %117 = load double, ptr %116, align 8, !tbaa !5
  %118 = fsub double %115, %117
  store double %118, ptr %67, align 16, !tbaa !5
  %.1322 = select i1 %107, double %105, double %.0321.ph417511
  %119 = load double, ptr %.sroa.6760.0.copyload, align 8, !tbaa !5
  %120 = load double, ptr %.sroa.12762.0.copyload, align 8, !tbaa !5
  %121 = fsub double %119, %120
  store double %121, ptr %57, align 8, !tbaa !5
  %122 = getelementptr inbounds i8, ptr %.sroa.6760.0.copyload, i64 8
  %123 = load double, ptr %122, align 8, !tbaa !5
  %124 = load double, ptr %110, align 8, !tbaa !5
  %125 = fsub double %123, %124
  store double %125, ptr %68, align 16, !tbaa !5
  %126 = getelementptr inbounds i8, ptr %.sroa.6760.0.copyload, i64 16
  %127 = load double, ptr %126, align 8, !tbaa !5
  %128 = load double, ptr %116, align 8, !tbaa !5
  %129 = fsub double %127, %128
  store double %129, ptr %69, align 8, !tbaa !5
  %130 = load double, ptr %.sroa.9761.0.copyload, align 8, !tbaa !5
  %131 = load double, ptr %.sroa.12762.0.copyload, align 8, !tbaa !5
  %132 = fsub double %130, %131
  store double %132, ptr %58, align 16, !tbaa !5
  %133 = getelementptr inbounds i8, ptr %.sroa.9761.0.copyload, i64 8
  %134 = load double, ptr %133, align 8, !tbaa !5
  %135 = load double, ptr %110, align 8, !tbaa !5
  %136 = fsub double %134, %135
  store double %136, ptr %70, align 8, !tbaa !5
  %137 = getelementptr inbounds i8, ptr %.sroa.9761.0.copyload, i64 16
  %138 = load double, ptr %137, align 8, !tbaa !5
  %139 = load double, ptr %116, align 8, !tbaa !5
  %140 = fsub double %138, %139
  store double %140, ptr %71, align 16, !tbaa !5
  %141 = load double, ptr %.sroa.6760.0.copyload, align 8, !tbaa !5
  %142 = load double, ptr %.sroa.0759.0.copyload, align 8, !tbaa !5
  %143 = fsub double %141, %142
  store double %143, ptr %59, align 8, !tbaa !5
  %144 = load double, ptr %122, align 8, !tbaa !5
  %145 = load double, ptr %109, align 8, !tbaa !5
  %146 = fsub double %144, %145
  store double %146, ptr %72, align 16, !tbaa !5
  %147 = load double, ptr %126, align 8, !tbaa !5
  %148 = load double, ptr %114, align 8, !tbaa !5
  %149 = fsub double %147, %148
  store double %149, ptr %73, align 8, !tbaa !5
  %150 = load double, ptr %.sroa.9761.0.copyload, align 8, !tbaa !5
  %151 = load double, ptr %.sroa.6760.0.copyload, align 8, !tbaa !5
  %152 = fsub double %150, %151
  store double %152, ptr %60, align 16, !tbaa !5
  %153 = load double, ptr %133, align 8, !tbaa !5
  %154 = load double, ptr %122, align 8, !tbaa !5
  %155 = fsub double %153, %154
  store double %155, ptr %74, align 8, !tbaa !5
  %156 = load double, ptr %137, align 8, !tbaa !5
  %157 = load double, ptr %126, align 8, !tbaa !5
  %158 = fsub double %156, %157
  store double %158, ptr %75, align 16, !tbaa !5
  %159 = load double, ptr %.sroa.0759.0.copyload, align 8, !tbaa !5
  %160 = load double, ptr %.sroa.9761.0.copyload, align 8, !tbaa !5
  %161 = fsub double %159, %160
  store double %161, ptr %61, align 8, !tbaa !5
  %162 = load double, ptr %109, align 8, !tbaa !5
  %163 = load double, ptr %133, align 8, !tbaa !5
  %164 = fsub double %162, %163
  store double %164, ptr %76, align 16, !tbaa !5
  %165 = load double, ptr %114, align 8, !tbaa !5
  %166 = load double, ptr %137, align 8, !tbaa !5
  %167 = fsub double %165, %166
  store double %167, ptr %77, align 8, !tbaa !5
  %168 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %9, ptr noundef nonnull %9)
  %169 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %57, ptr noundef nonnull %57)
  %170 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %58, ptr noundef nonnull %58)
  %171 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %59, ptr noundef nonnull %59)
  %172 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %60, ptr noundef nonnull %60)
  %173 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %61, ptr noundef nonnull %61)
  %174 = fcmp ogt double %168, %.0318.ph418512
  %.2320 = select i1 %174, double %168, double %.0318.ph418512
  %175 = fcmp olt double %168, %.0.ph423513
  %.2 = select i1 %175, double %168, double %.0.ph423513
  %176 = fcmp ogt double %169, %.2320
  %.2320.1 = select i1 %176, double %169, double %.2320
  %177 = fcmp olt double %169, %.2
  %.2.1 = select i1 %177, double %169, double %.2
  %178 = fcmp ogt double %170, %.2320.1
  %.2320.2 = select i1 %178, double %170, double %.2320.1
  %179 = fcmp olt double %170, %.2.1
  %.2.2 = select i1 %179, double %170, double %.2.1
  %180 = fcmp ogt double %171, %.2320.2
  %.2320.3 = select i1 %180, double %171, double %.2320.2
  %181 = fcmp olt double %171, %.2.2
  %.2.3 = select i1 %181, double %171, double %.2.2
  %182 = fcmp ogt double %172, %.2320.3
  %.2320.4 = select i1 %182, double %172, double %.2320.3
  %183 = fcmp olt double %172, %.2.3
  %.2.4 = select i1 %183, double %172, double %.2.3
  %184 = fcmp ogt double %173, %.2320.4
  %185 = fcmp olt double %173, %.2.4
  %.2.5 = select i1 %185, double %173, double %.2.4
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %6, ptr noundef nonnull align 16 dereferenceable(24) %9, i64 24, i1 false), !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %scevgep681.1, ptr noundef nonnull align 8 dereferenceable(24) %57, i64 24, i1 false), !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %scevgep681.2, ptr noundef nonnull align 16 dereferenceable(24) %58, i64 24, i1 false), !tbaa !5
  %.2320.5 = select i1 %184, double %173, double %.2320.4
  %.1336 = select i1 %108, double %105, double %.0335.ph414508
  %186 = call noundef zeroext i1 @_ZN10tetgenmesh8lu_decmpEPA4_diPiPdi(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %6, i32 noundef 3, ptr noundef nonnull %15, ptr noundef nonnull %8, i32 noundef 0)
  br i1 %186, label %.preheader402, label %262

.preheader402:                                    ; preds = %.preheader403
  %187 = fcmp olt double %169, %168
  %..1327.1.le922 = select i1 %187, double %169, double %168
  %188 = fcmp ogt double %169, %168
  %189 = select i1 %188, double %169, double %168
  %190 = fcmp olt double %170, %..1327.1.le922
  %..1327.2.le901 = select i1 %190, double %170, double %..1327.1.le922
  %191 = fcmp ogt double %170, %189
  %192 = select i1 %191, double %170, double %189
  %193 = fcmp olt double %171, %..1327.2.le901
  %..1327.3.le881 = select i1 %193, double %171, double %..1327.2.le901
  %194 = fcmp olt double %172, %..1327.3.le881
  %..1327.4.le861 = select i1 %194, double %172, double %..1327.3.le881
  %195 = fcmp olt double %173, %..1327.4.le861
  %..1327.5.le841 = select i1 %195, double %173, double %..1327.4.le861
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %7, i8 0, i64 24, i1 false), !tbaa !5
  store double 1.000000e+00, ptr %7, align 16, !tbaa !5
  call void @_ZN10tetgenmesh8lu_solveEPA4_diPiPdi(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %6, i32 noundef 3, ptr noundef nonnull %15, ptr noundef nonnull %7, i32 noundef 0)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %10, ptr noundef nonnull align 16 dereferenceable(24) %7, i64 24, i1 false), !tbaa !5
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %7, i8 0, i64 24, i1 false), !tbaa !5
  store double 1.000000e+00, ptr %82, align 8, !tbaa !5
  call void @_ZN10tetgenmesh8lu_solveEPA4_diPiPdi(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %6, i32 noundef 3, ptr noundef nonnull %15, ptr noundef nonnull %7, i32 noundef 0)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %62, ptr noundef nonnull align 16 dereferenceable(24) %7, i64 24, i1 false), !tbaa !5
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %7, i8 0, i64 16, i1 false), !tbaa !5
  store double 1.000000e+00, ptr %83, align 16, !tbaa !5
  call void @_ZN10tetgenmesh8lu_solveEPA4_diPiPdi(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %6, i32 noundef 3, ptr noundef nonnull %15, ptr noundef nonnull %7, i32 noundef 0)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %63, ptr noundef nonnull align 16 dereferenceable(24) %7, i64 24, i1 false), !tbaa !5
  %196 = load <2 x double>, ptr %10, align 16, !tbaa !5
  %197 = fneg <2 x double> %196
  %198 = load <2 x double>, ptr %62, align 8, !tbaa !5
  %199 = fsub <2 x double> %197, %198
  %200 = load <2 x double>, ptr %63, align 16, !tbaa !5
  %201 = fsub <2 x double> %199, %200
  store <2 x double> %201, ptr %64, align 8, !tbaa !5
  %202 = load double, ptr %84, align 16, !tbaa !5
  %203 = fneg double %202
  %204 = load double, ptr %85, align 8, !tbaa !5
  %205 = fsub double %203, %204
  %206 = load double, ptr %86, align 16, !tbaa !5
  %207 = fsub double %205, %206
  store double %207, ptr %87, align 8, !tbaa !5
  %208 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %9, ptr noundef nonnull %9)
  %209 = fmul double %208, 5.000000e-01
  store double %209, ptr %7, align 16, !tbaa !5
  %210 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %57, ptr noundef nonnull %57)
  %211 = fmul double %210, 5.000000e-01
  store double %211, ptr %82, align 8, !tbaa !5
  %212 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %58, ptr noundef nonnull %58)
  %213 = fmul double %212, 5.000000e-01
  store double %213, ptr %83, align 16, !tbaa !5
  call void @_ZN10tetgenmesh8lu_solveEPA4_diPiPdi(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %6, i32 noundef 3, ptr noundef nonnull %15, ptr noundef nonnull %7, i32 noundef 0)
  %214 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %7, ptr noundef nonnull %7)
  %215 = call double @sqrt(double noundef %214) #10
  %216 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %10, ptr noundef nonnull %10)
  %217 = call double @sqrt(double noundef %216) #10
  %218 = load <2 x double>, ptr %10, align 16, !tbaa !5
  %219 = insertelement <2 x double> poison, double %217, i64 0
  %220 = shufflevector <2 x double> %219, <2 x double> poison, <2 x i32> zeroinitializer
  %221 = fdiv <2 x double> %218, %220
  store <2 x double> %221, ptr %10, align 16, !tbaa !5
  %222 = load double, ptr %84, align 16, !tbaa !5
  %223 = fdiv double %222, %217
  store double %223, ptr %84, align 16, !tbaa !5
  %224 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %62, ptr noundef nonnull %62)
  %225 = call double @sqrt(double noundef %224) #10
  %226 = load <2 x double>, ptr %62, align 8, !tbaa !5
  %227 = insertelement <2 x double> poison, double %225, i64 0
  %228 = shufflevector <2 x double> %227, <2 x double> poison, <2 x i32> zeroinitializer
  %229 = fdiv <2 x double> %226, %228
  store <2 x double> %229, ptr %62, align 8, !tbaa !5
  %230 = load double, ptr %88, align 8, !tbaa !5
  %231 = fdiv double %230, %225
  store double %231, ptr %88, align 8, !tbaa !5
  %232 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %63, ptr noundef nonnull %63)
  %233 = call double @sqrt(double noundef %232) #10
  %234 = load <2 x double>, ptr %63, align 16, !tbaa !5
  %235 = insertelement <2 x double> poison, double %233, i64 0
  %236 = shufflevector <2 x double> %235, <2 x double> poison, <2 x i32> zeroinitializer
  %237 = fdiv <2 x double> %234, %236
  store <2 x double> %237, ptr %63, align 16, !tbaa !5
  %238 = load double, ptr %89, align 16, !tbaa !5
  %239 = fdiv double %238, %233
  store double %239, ptr %89, align 16, !tbaa !5
  %240 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %64, ptr noundef nonnull %64)
  %241 = call double @sqrt(double noundef %240) #10
  %242 = load <2 x double>, ptr %64, align 8, !tbaa !5
  %243 = insertelement <2 x double> poison, double %241, i64 0
  %244 = shufflevector <2 x double> %243, <2 x double> poison, <2 x i32> zeroinitializer
  %245 = fdiv <2 x double> %242, %244
  store <2 x double> %245, ptr %64, align 8, !tbaa !5
  %246 = load double, ptr %90, align 8, !tbaa !5
  %247 = fdiv double %246, %241
  store double %247, ptr %90, align 8, !tbaa !5
  %248 = insertelement <2 x double> poison, double %171, i64 0
  %249 = insertelement <2 x double> %248, double %225, i64 1
  %250 = insertelement <2 x double> poison, double %192, i64 0
  %251 = insertelement <2 x double> %250, double %217, i64 1
  %252 = fcmp ogt <2 x double> %249, %251
  %253 = select <2 x i1> %252, <2 x double> %249, <2 x double> %251
  %254 = insertelement <2 x double> poison, double %172, i64 0
  %255 = insertelement <2 x double> %254, double %233, i64 1
  %256 = fcmp ogt <2 x double> %255, %253
  %257 = select <2 x i1> %256, <2 x double> %255, <2 x double> %253
  %258 = insertelement <2 x double> poison, double %173, i64 0
  %259 = insertelement <2 x double> %258, double %241, i64 1
  %260 = fcmp ogt <2 x double> %259, %257
  %261 = select <2 x i1> %260, <2 x double> %259, <2 x double> %257
  br label %.loopexit399

262:                                              ; preds = %.preheader403
  %263 = fcmp ugt double %105, 0.000000e+00
  br i1 %263, label %272, label %.outer411

.outer411:                                        ; preds = %262
  %264 = fcmp olt double %105, 0.000000e+00
  %265 = select i1 %264, ptr @.str.618, ptr @.str.619
  %266 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.sroa.0759.0.copyload)
  %267 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.sroa.6760.0.copyload)
  %268 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.sroa.9761.0.copyload)
  %269 = call noundef i32 @_ZN10tetgenmesh9pointmarkEPd(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.sroa.12762.0.copyload)
  %270 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.617, ptr noundef nonnull %265, i32 noundef %266, i32 noundef %267, i32 noundef %268, i32 noundef %269)
  %271 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  store ptr %271, ptr %1, align 8, !tbaa !24
  %.not470 = icmp eq ptr %271, null
  br i1 %.not470, label %.outer411._crit_edge, label %.lr.ph, !llvm.loop !29

272:                                              ; preds = %262
  %273 = fcmp olt double %169, %168
  %..1327.1.le = select i1 %273, double %169, double %168
  %274 = fcmp ogt double %169, %168
  %275 = select i1 %274, double %169, double %168
  %276 = fcmp olt double %170, %..1327.1.le
  %..1327.2.le = select i1 %276, double %170, double %..1327.1.le
  %277 = fcmp ogt double %170, %275
  %278 = select i1 %277, double %170, double %275
  %279 = fcmp olt double %171, %..1327.2.le
  %..1327.3.le = select i1 %279, double %171, double %..1327.2.le
  %280 = fcmp olt double %172, %..1327.3.le
  %..1327.4.le = select i1 %280, double %172, double %..1327.3.le
  %281 = fcmp olt double %173, %..1327.4.le
  %..1327.5.le = select i1 %281, double %173, double %..1327.4.le
  call void @_ZN10tetgenmesh10facenormalEPdS0_S0_S0_iS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.sroa.9761.0.copyload, ptr noundef nonnull %.sroa.6760.0.copyload, ptr noundef nonnull %.sroa.12762.0.copyload, ptr noundef nonnull %10, i32 noundef 1, ptr noundef null)
  call void @_ZN10tetgenmesh10facenormalEPdS0_S0_S0_iS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.sroa.0759.0.copyload, ptr noundef nonnull %.sroa.9761.0.copyload, ptr noundef nonnull %.sroa.12762.0.copyload, ptr noundef nonnull %62, i32 noundef 1, ptr noundef null)
  call void @_ZN10tetgenmesh10facenormalEPdS0_S0_S0_iS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.sroa.6760.0.copyload, ptr noundef nonnull %.sroa.0759.0.copyload, ptr noundef nonnull %.sroa.12762.0.copyload, ptr noundef nonnull %63, i32 noundef 1, ptr noundef null)
  call void @_ZN10tetgenmesh10facenormalEPdS0_S0_S0_iS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %.sroa.0759.0.copyload, ptr noundef nonnull %.sroa.6760.0.copyload, ptr noundef nonnull %.sroa.9761.0.copyload, ptr noundef nonnull %64, i32 noundef 1, ptr noundef null)
  %282 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %10, ptr noundef nonnull %10)
  %283 = call double @sqrt(double noundef %282) #10
  %284 = load <2 x double>, ptr %10, align 16, !tbaa !5
  %285 = insertelement <2 x double> poison, double %283, i64 0
  %286 = shufflevector <2 x double> %285, <2 x double> poison, <2 x i32> zeroinitializer
  %287 = fdiv <2 x double> %284, %286
  store <2 x double> %287, ptr %10, align 16, !tbaa !5
  %288 = load double, ptr %78, align 16, !tbaa !5
  %289 = fdiv double %288, %283
  store double %289, ptr %78, align 16, !tbaa !5
  %290 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %62, ptr noundef nonnull %62)
  %291 = call double @sqrt(double noundef %290) #10
  %292 = load <2 x double>, ptr %62, align 8, !tbaa !5
  %293 = insertelement <2 x double> poison, double %291, i64 0
  %294 = shufflevector <2 x double> %293, <2 x double> poison, <2 x i32> zeroinitializer
  %295 = fdiv <2 x double> %292, %294
  store <2 x double> %295, ptr %62, align 8, !tbaa !5
  %296 = load double, ptr %79, align 8, !tbaa !5
  %297 = fdiv double %296, %291
  store double %297, ptr %79, align 8, !tbaa !5
  %298 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %63, ptr noundef nonnull %63)
  %299 = call double @sqrt(double noundef %298) #10
  %300 = load <2 x double>, ptr %63, align 16, !tbaa !5
  %301 = insertelement <2 x double> poison, double %299, i64 0
  %302 = shufflevector <2 x double> %301, <2 x double> poison, <2 x i32> zeroinitializer
  %303 = fdiv <2 x double> %300, %302
  store <2 x double> %303, ptr %63, align 16, !tbaa !5
  %304 = load double, ptr %80, align 16, !tbaa !5
  %305 = fdiv double %304, %299
  store double %305, ptr %80, align 16, !tbaa !5
  %306 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %64, ptr noundef nonnull %64)
  %307 = call double @sqrt(double noundef %306) #10
  %308 = load <2 x double>, ptr %64, align 8, !tbaa !5
  %309 = insertelement <2 x double> poison, double %307, i64 0
  %310 = shufflevector <2 x double> %309, <2 x double> poison, <2 x i32> zeroinitializer
  %311 = fdiv <2 x double> %308, %310
  store <2 x double> %311, ptr %64, align 8, !tbaa !5
  %312 = load double, ptr %81, align 8, !tbaa !5
  %313 = fdiv double %312, %307
  store double %313, ptr %81, align 8, !tbaa !5
  %314 = fdiv double %283, %105
  %315 = fdiv double %291, %105
  %316 = fdiv double %299, %105
  %317 = fdiv double %307, %105
  %318 = insertelement <2 x double> poison, double %171, i64 0
  %319 = insertelement <2 x double> %318, double %315, i64 1
  %320 = insertelement <2 x double> poison, double %278, i64 0
  %321 = insertelement <2 x double> %320, double %314, i64 1
  %322 = fcmp ogt <2 x double> %319, %321
  %323 = select <2 x i1> %322, <2 x double> %319, <2 x double> %321
  %324 = insertelement <2 x double> poison, double %172, i64 0
  %325 = insertelement <2 x double> %324, double %316, i64 1
  %326 = fcmp ogt <2 x double> %325, %323
  %327 = select <2 x i1> %326, <2 x double> %325, <2 x double> %323
  %328 = insertelement <2 x double> poison, double %173, i64 0
  %329 = insertelement <2 x double> %328, double %317, i64 1
  %330 = fcmp ogt <2 x double> %329, %327
  %331 = select <2 x i1> %330, <2 x double> %329, <2 x double> %327
  %332 = extractelement <2 x double> %331, i64 0
  %333 = call double @sqrt(double noundef %332) #10
  %334 = fmul double %333, 5.000000e-01
  br label %.loopexit399

.loopexit399:                                     ; preds = %.preheader402, %272
  %..1327.5802 = phi double [ %..1327.5.le, %272 ], [ %..1327.5.le841, %.preheader402 ]
  %.0334 = phi double [ %334, %272 ], [ %215, %.preheader402 ]
  %335 = phi <2 x double> [ %331, %272 ], [ %261, %.preheader402 ]
  %336 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %10, ptr noundef nonnull %62)
  %337 = fcmp ogt double %336, 1.000000e+00
  br i1 %337, label %342, label %338

338:                                              ; preds = %.loopexit399
  %339 = fneg double %336
  %340 = fcmp olt double %336, -1.000000e+00
  br i1 %340, label %341, label %342

341:                                              ; preds = %338
  br label %342

342:                                              ; preds = %.loopexit399, %338, %341
  %.sroa.0730.0 = phi double [ 1.000000e+00, %341 ], [ %339, %338 ], [ -1.000000e+00, %.loopexit399 ]
  %343 = call double @acos(double noundef %.sroa.0730.0) #10
  %344 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !5
  %345 = fdiv double %343, %344
  %346 = fmul double %345, 1.800000e+02
  %347 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %10, ptr noundef nonnull %63)
  %348 = fcmp ogt double %347, 1.000000e+00
  br i1 %348, label %353, label %349

349:                                              ; preds = %342
  %350 = fneg double %347
  %351 = fcmp olt double %347, -1.000000e+00
  br i1 %351, label %352, label %353

352:                                              ; preds = %349
  br label %353

353:                                              ; preds = %342, %352, %349
  %.sroa.10.0 = phi double [ 1.000000e+00, %352 ], [ %350, %349 ], [ -1.000000e+00, %342 ]
  %354 = call double @acos(double noundef %.sroa.10.0) #10
  %355 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !5
  %356 = fdiv double %354, %355
  %357 = fmul double %356, 1.800000e+02
  %358 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %10, ptr noundef nonnull %64)
  %359 = fcmp ogt double %358, 1.000000e+00
  br i1 %359, label %.preheader398.preheader, label %360

360:                                              ; preds = %353
  %361 = fneg double %358
  %362 = fcmp olt double %358, -1.000000e+00
  br i1 %362, label %363, label %.preheader398.preheader

363:                                              ; preds = %360
  br label %.preheader398.preheader

.preheader398.preheader:                          ; preds = %353, %363, %360
  %.sroa.17.0 = phi double [ 1.000000e+00, %363 ], [ %361, %360 ], [ -1.000000e+00, %353 ]
  %364 = call double @acos(double noundef %.sroa.17.0) #10
  %365 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !5
  %366 = fdiv double %364, %365
  %367 = fmul double %366, 1.800000e+02
  %368 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %62, ptr noundef nonnull %63)
  %369 = fcmp ogt double %368, 1.000000e+00
  br i1 %369, label %.preheader398.1, label %370

370:                                              ; preds = %.preheader398.preheader
  %371 = fneg double %368
  %372 = fcmp olt double %368, -1.000000e+00
  br i1 %372, label %373, label %.preheader398.1

373:                                              ; preds = %370
  br label %.preheader398.1

.preheader398.1:                                  ; preds = %.preheader398.preheader, %370, %373
  %.sroa.24.0 = phi double [ 1.000000e+00, %373 ], [ %371, %370 ], [ -1.000000e+00, %.preheader398.preheader ]
  %374 = call double @acos(double noundef %.sroa.24.0) #10
  %375 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !5
  %376 = fdiv double %374, %375
  %377 = fmul double %376, 1.800000e+02
  %378 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %62, ptr noundef nonnull %64)
  %379 = fcmp ogt double %378, 1.000000e+00
  br i1 %379, label %384, label %380

380:                                              ; preds = %.preheader398.1
  %381 = fneg double %378
  %382 = fcmp olt double %378, -1.000000e+00
  br i1 %382, label %383, label %384

383:                                              ; preds = %380
  br label %384

384:                                              ; preds = %.preheader398.1, %383, %380
  %.sroa.31.0 = phi double [ 1.000000e+00, %383 ], [ %381, %380 ], [ -1.000000e+00, %.preheader398.1 ]
  %385 = call double @acos(double noundef %.sroa.31.0) #10
  %386 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !5
  %387 = fdiv double %385, %386
  %388 = fmul double %387, 1.800000e+02
  %389 = call noundef double @_ZN10tetgenmesh3dotEPdS0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull %63, ptr noundef nonnull %64)
  %390 = fcmp ogt double %389, 1.000000e+00
  br i1 %390, label %395, label %391

391:                                              ; preds = %384
  %392 = fneg double %389
  %393 = fcmp olt double %389, -1.000000e+00
  br i1 %393, label %394, label %395

394:                                              ; preds = %391
  br label %395

395:                                              ; preds = %394, %391, %384
  %.sroa.38.0 = phi double [ 1.000000e+00, %394 ], [ %392, %391 ], [ -1.000000e+00, %384 ]
  %396 = call double @acos(double noundef %.sroa.38.0) #10
  %397 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !5
  %398 = fdiv double %396, %397
  %399 = fmul double %398, 1.800000e+02
  %400 = fcmp olt double %346, %.0352.ph570
  %.2354 = select i1 %400, double %346, double %.0352.ph570
  %401 = fcmp ogt double %346, %.0349.ph571
  %.2351 = select i1 %401, double %346, double %.0349.ph571
  %402 = fcmp olt double %346, 5.000000e+00
  br i1 %402, label %422, label %403

403:                                              ; preds = %395
  %404 = fcmp oge double %346, 5.000000e+00
  %405 = fcmp olt double %346, 1.000000e+01
  %or.cond = and i1 %404, %405
  br i1 %or.cond, label %422, label %406

406:                                              ; preds = %403
  %407 = fcmp oge double %346, 8.000000e+01
  %408 = fcmp olt double %346, 1.100000e+02
  %or.cond392 = and i1 %407, %408
  br i1 %or.cond392, label %422, label %409

409:                                              ; preds = %406
  %410 = fcmp oge double %346, 1.700000e+02
  %411 = fcmp olt double %346, 1.750000e+02
  %or.cond393 = and i1 %410, %411
  br i1 %or.cond393, label %422, label %412

412:                                              ; preds = %409
  %413 = fcmp ult double %346, 1.750000e+02
  br i1 %413, label %414, label %422

414:                                              ; preds = %412
  %415 = fdiv double %346, 1.000000e+01
  %416 = fptosi double %415 to i32
  %417 = fcmp olt double %346, 8.000000e+01
  br i1 %417, label %418, label %420

418:                                              ; preds = %414
  %419 = add nsw i32 %416, 1
  br label %422

420:                                              ; preds = %414
  %421 = add nsw i32 %416, -1
  br label %422

422:                                              ; preds = %412, %409, %406, %403, %395, %418, %420
  %.0299 = phi i32 [ %419, %418 ], [ %421, %420 ], [ 0, %395 ], [ 1, %403 ], [ 9, %406 ], [ 16, %409 ], [ 17, %412 ]
  %423 = sext i32 %.0299 to i64
  %424 = getelementptr inbounds [18 x i64], ptr %13, i64 0, i64 %423
  %425 = load i64, ptr %424, align 8, !tbaa !9
  %426 = add i64 %425, 1
  store i64 %426, ptr %424, align 8, !tbaa !9
  %427 = fcmp olt double %357, %.2354
  %.2354.1 = select i1 %427, double %357, double %.2354
  %428 = fcmp ogt double %357, %.2351
  %.2351.1 = select i1 %428, double %357, double %.2351
  %429 = fcmp olt double %357, 5.000000e+00
  br i1 %429, label %449, label %430

430:                                              ; preds = %422
  %431 = fcmp oge double %357, 5.000000e+00
  %432 = fcmp olt double %357, 1.000000e+01
  %or.cond.1 = and i1 %431, %432
  br i1 %or.cond.1, label %449, label %433

433:                                              ; preds = %430
  %434 = fcmp oge double %357, 8.000000e+01
  %435 = fcmp olt double %357, 1.100000e+02
  %or.cond392.1 = and i1 %434, %435
  br i1 %or.cond392.1, label %449, label %436

436:                                              ; preds = %433
  %437 = fcmp oge double %357, 1.700000e+02
  %438 = fcmp olt double %357, 1.750000e+02
  %or.cond393.1 = and i1 %437, %438
  br i1 %or.cond393.1, label %449, label %439

439:                                              ; preds = %436
  %440 = fcmp ult double %357, 1.750000e+02
  br i1 %440, label %441, label %449

441:                                              ; preds = %439
  %442 = fdiv double %357, 1.000000e+01
  %443 = fptosi double %442 to i32
  %444 = fcmp olt double %357, 8.000000e+01
  br i1 %444, label %447, label %445

445:                                              ; preds = %441
  %446 = add nsw i32 %443, -1
  br label %449

447:                                              ; preds = %441
  %448 = add nsw i32 %443, 1
  br label %449

449:                                              ; preds = %447, %445, %439, %436, %433, %430, %422
  %.0299.1 = phi i32 [ %448, %447 ], [ %446, %445 ], [ 0, %422 ], [ 1, %430 ], [ 9, %433 ], [ 16, %436 ], [ 17, %439 ]
  %450 = sext i32 %.0299.1 to i64
  %451 = getelementptr inbounds [18 x i64], ptr %13, i64 0, i64 %450
  %452 = load i64, ptr %451, align 8, !tbaa !9
  %453 = add i64 %452, 1
  store i64 %453, ptr %451, align 8, !tbaa !9
  %454 = fcmp olt double %367, %.2354.1
  %.2354.2 = select i1 %454, double %367, double %.2354.1
  %455 = fcmp ogt double %367, %.2351.1
  %.2351.2 = select i1 %455, double %367, double %.2351.1
  %456 = fcmp olt double %367, 5.000000e+00
  br i1 %456, label %476, label %457

457:                                              ; preds = %449
  %458 = fcmp oge double %367, 5.000000e+00
  %459 = fcmp olt double %367, 1.000000e+01
  %or.cond.2 = and i1 %458, %459
  br i1 %or.cond.2, label %476, label %460

460:                                              ; preds = %457
  %461 = fcmp oge double %367, 8.000000e+01
  %462 = fcmp olt double %367, 1.100000e+02
  %or.cond392.2 = and i1 %461, %462
  br i1 %or.cond392.2, label %476, label %463

463:                                              ; preds = %460
  %464 = fcmp oge double %367, 1.700000e+02
  %465 = fcmp olt double %367, 1.750000e+02
  %or.cond393.2 = and i1 %464, %465
  br i1 %or.cond393.2, label %476, label %466

466:                                              ; preds = %463
  %467 = fcmp ult double %367, 1.750000e+02
  br i1 %467, label %468, label %476

468:                                              ; preds = %466
  %469 = fdiv double %367, 1.000000e+01
  %470 = fptosi double %469 to i32
  %471 = fcmp olt double %367, 8.000000e+01
  br i1 %471, label %474, label %472

472:                                              ; preds = %468
  %473 = add nsw i32 %470, -1
  br label %476

474:                                              ; preds = %468
  %475 = add nsw i32 %470, 1
  br label %476

476:                                              ; preds = %474, %472, %466, %463, %460, %457, %449
  %.0299.2 = phi i32 [ %475, %474 ], [ %473, %472 ], [ 0, %449 ], [ 1, %457 ], [ 9, %460 ], [ 16, %463 ], [ 17, %466 ]
  %477 = sext i32 %.0299.2 to i64
  %478 = getelementptr inbounds [18 x i64], ptr %13, i64 0, i64 %477
  %479 = load i64, ptr %478, align 8, !tbaa !9
  %480 = add i64 %479, 1
  store i64 %480, ptr %478, align 8, !tbaa !9
  %481 = fcmp olt double %377, %.2354.2
  %.2354.3 = select i1 %481, double %377, double %.2354.2
  %482 = fcmp ogt double %377, %.2351.2
  %.2351.3 = select i1 %482, double %377, double %.2351.2
  %483 = fcmp olt double %377, 5.000000e+00
  br i1 %483, label %503, label %484

484:                                              ; preds = %476
  %485 = fcmp oge double %377, 5.000000e+00
  %486 = fcmp olt double %377, 1.000000e+01
  %or.cond.3 = and i1 %485, %486
  br i1 %or.cond.3, label %503, label %487

487:                                              ; preds = %484
  %488 = fcmp oge double %377, 8.000000e+01
  %489 = fcmp olt double %377, 1.100000e+02
  %or.cond392.3 = and i1 %488, %489
  br i1 %or.cond392.3, label %503, label %490

490:                                              ; preds = %487
  %491 = fcmp oge double %377, 1.700000e+02
  %492 = fcmp olt double %377, 1.750000e+02
  %or.cond393.3 = and i1 %491, %492
  br i1 %or.cond393.3, label %503, label %493

493:                                              ; preds = %490
  %494 = fcmp ult double %377, 1.750000e+02
  br i1 %494, label %495, label %503

495:                                              ; preds = %493
  %496 = fdiv double %377, 1.000000e+01
  %497 = fptosi double %496 to i32
  %498 = fcmp olt double %377, 8.000000e+01
  br i1 %498, label %501, label %499

499:                                              ; preds = %495
  %500 = add nsw i32 %497, -1
  br label %503

501:                                              ; preds = %495
  %502 = add nsw i32 %497, 1
  br label %503

503:                                              ; preds = %501, %499, %493, %490, %487, %484, %476
  %.0299.3 = phi i32 [ %502, %501 ], [ %500, %499 ], [ 0, %476 ], [ 1, %484 ], [ 9, %487 ], [ 16, %490 ], [ 17, %493 ]
  %504 = sext i32 %.0299.3 to i64
  %505 = getelementptr inbounds [18 x i64], ptr %13, i64 0, i64 %504
  %506 = load i64, ptr %505, align 8, !tbaa !9
  %507 = add i64 %506, 1
  store i64 %507, ptr %505, align 8, !tbaa !9
  %508 = fcmp olt double %388, %.2354.3
  %.2354.4 = select i1 %508, double %388, double %.2354.3
  %509 = fcmp ogt double %388, %.2351.3
  %.2351.4 = select i1 %509, double %388, double %.2351.3
  %510 = fcmp olt double %388, 5.000000e+00
  br i1 %510, label %530, label %511

511:                                              ; preds = %503
  %512 = fcmp oge double %388, 5.000000e+00
  %513 = fcmp olt double %388, 1.000000e+01
  %or.cond.4 = and i1 %512, %513
  br i1 %or.cond.4, label %530, label %514

514:                                              ; preds = %511
  %515 = fcmp oge double %388, 8.000000e+01
  %516 = fcmp olt double %388, 1.100000e+02
  %or.cond392.4 = and i1 %515, %516
  br i1 %or.cond392.4, label %530, label %517

517:                                              ; preds = %514
  %518 = fcmp oge double %388, 1.700000e+02
  %519 = fcmp olt double %388, 1.750000e+02
  %or.cond393.4 = and i1 %518, %519
  br i1 %or.cond393.4, label %530, label %520

520:                                              ; preds = %517
  %521 = fcmp ult double %388, 1.750000e+02
  br i1 %521, label %522, label %530

522:                                              ; preds = %520
  %523 = fdiv double %388, 1.000000e+01
  %524 = fptosi double %523 to i32
  %525 = fcmp olt double %388, 8.000000e+01
  br i1 %525, label %528, label %526

526:                                              ; preds = %522
  %527 = add nsw i32 %524, -1
  br label %530

528:                                              ; preds = %522
  %529 = add nsw i32 %524, 1
  br label %530

530:                                              ; preds = %528, %526, %520, %517, %514, %511, %503
  %.0299.4 = phi i32 [ %529, %528 ], [ %527, %526 ], [ 0, %503 ], [ 1, %511 ], [ 9, %514 ], [ 16, %517 ], [ 17, %520 ]
  %531 = sext i32 %.0299.4 to i64
  %532 = getelementptr inbounds [18 x i64], ptr %13, i64 0, i64 %531
  %533 = load i64, ptr %532, align 8, !tbaa !9
  %534 = add i64 %533, 1
  store i64 %534, ptr %532, align 8, !tbaa !9
  %535 = fcmp olt double %399, %.2354.4
  %.2354.5 = select i1 %535, double %399, double %.2354.4
  %536 = fcmp ogt double %399, %.2351.4
  %.2351.5 = select i1 %536, double %399, double %.2351.4
  %537 = fcmp olt double %399, 5.000000e+00
  br i1 %537, label %557, label %538

538:                                              ; preds = %530
  %539 = fcmp oge double %399, 5.000000e+00
  %540 = fcmp olt double %399, 1.000000e+01
  %or.cond.5 = and i1 %539, %540
  br i1 %or.cond.5, label %557, label %541

541:                                              ; preds = %538
  %542 = fcmp oge double %399, 8.000000e+01
  %543 = fcmp olt double %399, 1.100000e+02
  %or.cond392.5 = and i1 %542, %543
  br i1 %or.cond392.5, label %557, label %544

544:                                              ; preds = %541
  %545 = fcmp oge double %399, 1.700000e+02
  %546 = fcmp olt double %399, 1.750000e+02
  %or.cond393.5 = and i1 %545, %546
  br i1 %or.cond393.5, label %557, label %547

547:                                              ; preds = %544
  %548 = fcmp ult double %399, 1.750000e+02
  br i1 %548, label %549, label %557

549:                                              ; preds = %547
  %550 = fdiv double %399, 1.000000e+01
  %551 = fptosi double %550 to i32
  %552 = fcmp olt double %399, 8.000000e+01
  br i1 %552, label %555, label %553

553:                                              ; preds = %549
  %554 = add nsw i32 %551, -1
  br label %557

555:                                              ; preds = %549
  %556 = add nsw i32 %551, 1
  br label %557

557:                                              ; preds = %555, %553, %547, %544, %541, %538, %530
  %.0299.5 = phi i32 [ %556, %555 ], [ %554, %553 ], [ 0, %530 ], [ 1, %538 ], [ 9, %541 ], [ 16, %544 ], [ 17, %547 ]
  %558 = sext i32 %.0299.5 to i64
  %559 = getelementptr inbounds [18 x i64], ptr %13, i64 0, i64 %558
  %560 = load i64, ptr %559, align 8, !tbaa !9
  %561 = add i64 %560, 1
  store i64 %561, ptr %559, align 8, !tbaa !9
  store i32 0, ptr %65, align 8, !tbaa !32
  br label %562

562:                                              ; preds = %557, %.loopexit
  %.1340564 = phi double [ %.0339.ph573, %557 ], [ %.4343, %.loopexit ]
  %.1345563 = phi double [ %.0344.ph572, %557 ], [ %.4348, %.loopexit ]
  call void @_ZN10tetgenmesh4fsymERNS_7trifaceES1_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %1, ptr noundef nonnull align 8 dereferenceable(12) %2)
  %563 = load ptr, ptr %2, align 8, !tbaa !24
  %564 = getelementptr inbounds i8, ptr %563, i64 56
  %565 = load ptr, ptr %564, align 8, !tbaa !31
  %566 = load ptr, ptr %66, align 8, !tbaa !33
  %567 = icmp eq ptr %565, %566
  %568 = load ptr, ptr %1, align 8
  %569 = icmp ult ptr %568, %563
  %or.cond395 = select i1 %567, i1 true, i1 %569
  br i1 %or.cond395, label %.loopexit.loopexit, label %.loopexit

.loopexit.loopexit:                               ; preds = %562
  %570 = call noundef ptr @_ZN10tetgenmesh3orgERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %1)
  %571 = call noundef ptr @_ZN10tetgenmesh4destERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %1)
  %572 = call noundef ptr @_ZN10tetgenmesh4apexERNS_7trifaceE(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef nonnull align 8 dereferenceable(12) %1)
  %573 = call noundef double @_ZN10tetgenmesh13interiorangleEPdS0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %570, ptr noundef %571, ptr noundef %572, ptr noundef null)
  %574 = call noundef double @_ZN10tetgenmesh13interiorangleEPdS0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(1536) %0, ptr noundef %571, ptr noundef %572, ptr noundef %570, ptr noundef null)
  %575 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !5
  %576 = fadd double %573, %574
  %577 = fsub double %575, %576
  %578 = fmul double %573, 1.800000e+02
  %579 = fdiv double %578, %575
  %580 = fmul double %574, 1.800000e+02
  %581 = fdiv double %580, %575
  %582 = fmul double %577, 1.800000e+02
  %583 = fdiv double %582, %575
  %584 = fcmp olt double %579, %.1345563
  %.3347 = select i1 %584, double %579, double %.1345563
  %585 = fcmp ogt double %579, %.1340564
  %.3342 = select i1 %585, double %579, double %.1340564
  %586 = fdiv double %579, 1.000000e+01
  %587 = fptosi double %586 to i32
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds [18 x i64], ptr %14, i64 0, i64 %588
  %590 = load i64, ptr %589, align 8, !tbaa !9
  %591 = add i64 %590, 1
  store i64 %591, ptr %589, align 8, !tbaa !9
  %592 = fcmp olt double %581, %.3347
  %.3347.1 = select i1 %592, double %581, double %.3347
  %593 = fcmp ogt double %581, %.3342
  %.3342.1 = select i1 %593, double %581, double %.3342
  %594 = fdiv double %581, 1.000000e+01
  %595 = fptosi double %594 to i32
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds [18 x i64], ptr %14, i64 0, i64 %596
  %598 = load i64, ptr %597, align 8, !tbaa !9
  %599 = add i64 %598, 1
  store i64 %599, ptr %597, align 8, !tbaa !9
  %600 = fcmp olt double %583, %.3347.1
  %.3347.2 = select i1 %600, double %583, double %.3347.1
  %601 = fcmp ogt double %583, %.3342.1
  %.3342.2 = select i1 %601, double %583, double %.3342.1
  %602 = fdiv double %583, 1.000000e+01
  %603 = fptosi double %602 to i32
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds [18 x i64], ptr %14, i64 0, i64 %604
  %606 = load i64, ptr %605, align 8, !tbaa !9
  %607 = add i64 %606, 1
  store i64 %607, ptr %605, align 8, !tbaa !9
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %562
  %.4348 = phi double [ %.1345563, %562 ], [ %.3347.2, %.loopexit.loopexit ]
  %.4343 = phi double [ %.1340564, %562 ], [ %.3342.2, %.loopexit.loopexit ]
  %608 = load i32, ptr %65, align 8, !tbaa !32
  %609 = add nsw i32 %608, 1
  store i32 %609, ptr %65, align 8, !tbaa !32
  %610 = icmp slt i32 %608, 3
  br i1 %610, label %562, label %611, !llvm.loop !34

611:                                              ; preds = %.loopexit
  %612 = call double @sqrt(double noundef %..1327.5802) #10
  %613 = extractelement <2 x double> %335, i64 0
  %614 = call double @sqrt(double noundef %613) #10
  %615 = extractelement <2 x double> %335, i64 1
  %616 = fmul double %615, %614
  %617 = fcmp olt double %616, %.0357.ph568
  %618 = fcmp ogt double %616, %.0355.ph569
  br label %619

619:                                              ; preds = %619, %611
  %indvars.iv = phi i64 [ %indvars.iv.next, %619 ], [ 0, %611 ]
  %620 = getelementptr inbounds [12 x double], ptr %5, i64 0, i64 %indvars.iv
  %621 = load double, ptr %620, align 8, !tbaa !5
  %622 = fcmp ogt double %616, %621
  %623 = icmp ult i64 %indvars.iv, 11
  %624 = and i1 %623, %622
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  br i1 %624, label %619, label %625, !llvm.loop !35

625:                                              ; preds = %619
  %626 = fdiv double %.0334, %612
  %.1358 = select i1 %617, double %616, double %.0357.ph568
  %627 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %indvars.iv
  %628 = load i64, ptr %627, align 8, !tbaa !9
  %629 = add i64 %628, 1
  store i64 %629, ptr %627, align 8, !tbaa !9
  br label %630

630:                                              ; preds = %630, %625
  %indvars.iv711 = phi i64 [ %indvars.iv.next712, %630 ], [ 0, %625 ]
  %631 = getelementptr inbounds [12 x double], ptr %4, i64 0, i64 %indvars.iv711
  %632 = load double, ptr %631, align 8, !tbaa !5
  %633 = fcmp ogt double %626, %632
  %634 = icmp ult i64 %indvars.iv711, 11
  %635 = and i1 %634, %633
  %indvars.iv.next712 = add nuw nsw i64 %indvars.iv711, 1
  br i1 %635, label %630, label %.outer, !llvm.loop !36

.outer:                                           ; preds = %630
  %.1356 = select i1 %618, double %616, double %.0355.ph569
  %636 = getelementptr inbounds [12 x i64], ptr %11, i64 0, i64 %indvars.iv711
  %637 = load i64, ptr %636, align 8, !tbaa !9
  %638 = add i64 %637, 1
  store i64 %638, ptr %636, align 8, !tbaa !9
  %639 = call noundef ptr @_ZN10tetgenmesh19tetrahedrontraverseEv(ptr noundef nonnull align 8 dereferenceable(1536) %0)
  store ptr %639, ptr %1, align 8, !tbaa !24
  %.not470505 = icmp eq ptr %639, null
  br i1 %.not470505, label %.outer411._crit_edge, label %.lr.ph.lr.ph, !llvm.loop !29

.outer411._crit_edge:                             ; preds = %.outer, %.outer411, %101, %.preheader426.preheader
  %.0357.ph.lcssa = phi double [ 1.000000e+16, %.preheader426.preheader ], [ %.0357.ph568, %101 ], [ %.0357.ph568, %.outer411 ], [ %.1358, %.outer ]
  %.0355.ph.lcssa = phi double [ 0.000000e+00, %.preheader426.preheader ], [ %.0355.ph569, %101 ], [ %.0355.ph569, %.outer411 ], [ %.1356, %.outer ]
  %.0352.ph.lcssa = phi double [ 1.800000e+02, %.preheader426.preheader ], [ %.0352.ph570, %101 ], [ %.0352.ph570, %.outer411 ], [ %.2354.5, %.outer ]
  %.0349.ph.lcssa = phi double [ 0.000000e+00, %.preheader426.preheader ], [ %.0349.ph571, %101 ], [ %.0349.ph571, %.outer411 ], [ %.2351.5, %.outer ]
  %.0344.ph.lcssa = phi double [ 1.800000e+02, %.preheader426.preheader ], [ %.0344.ph572, %101 ], [ %.0344.ph572, %.outer411 ], [ %.4348, %.outer ]
  %.0339.ph.lcssa = phi double [ 0.000000e+00, %.preheader426.preheader ], [ %.0339.ph573, %101 ], [ %.0339.ph573, %.outer411 ], [ %.4343, %.outer ]
  %.0335.ph414.lcssa463 = phi double [ 0.000000e+00, %.preheader426.preheader ], [ %.0335.ph414508, %101 ], [ %.1336, %.outer411 ], [ %.1336, %.outer ]
  %.0321.ph417.lcssa461 = phi double [ %49, %.preheader426.preheader ], [ %.0321.ph417511, %101 ], [ %.1322, %.outer411 ], [ %.1322, %.outer ]
  %.0318.ph418.lcssa459 = phi double [ 0.000000e+00, %.preheader426.preheader ], [ %.0318.ph418512, %101 ], [ %.2320.5, %.outer411 ], [ %.2320.5, %.outer ]
  %.0.ph423.lcssa457 = phi double [ %49, %.preheader426.preheader ], [ %.0.ph423513, %101 ], [ %.2.5, %.outer411 ], [ %.2.5, %.outer ]
  %640 = call double @sqrt(double noundef %.0.ph423.lcssa457) #10
  %641 = call double @sqrt(double noundef %.0318.ph418.lcssa459) #10
  %642 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.620, double noundef %.0321.ph417.lcssa461, double noundef %.0335.ph414.lcssa463)
  %643 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.621, double noundef %640, double noundef %641)
  %644 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.622, double noundef %.0357.ph.lcssa, double noundef %.0355.ph.lcssa)
  %645 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) @.str.623, double noundef %.0339.ph.lcssa) #10
  %646 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %3) #11
  %647 = icmp ugt i64 %646, 8
  br i1 %647, label %648, label %650

648:                                              ; preds = %.outer411._crit_edge
  %649 = getelementptr inbounds i8, ptr %3, i64 8
  store i8 0, ptr %649, align 8, !tbaa !37
  br label %650

650:                                              ; preds = %648, %.outer411._crit_edge
  %651 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.624, double noundef %.0344.ph.lcssa, ptr noundef nonnull %3)
  %652 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) @.str.623, double noundef %.0349.ph.lcssa) #10
  %653 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %3) #11
  %654 = icmp ugt i64 %653, 8
  br i1 %654, label %655, label %657

655:                                              ; preds = %650
  %656 = getelementptr inbounds i8, ptr %3, i64 8
  store i8 0, ptr %656, align 8, !tbaa !37
  br label %657

657:                                              ; preds = %655, %650
  %658 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.625, double noundef %.0352.ph.lcssa, ptr noundef nonnull %3)
  %659 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.626)
  %660 = load double, ptr %5, align 16, !tbaa !5
  %661 = load i64, ptr %12, align 16, !tbaa !9
  %662 = load double, ptr %26, align 8, !tbaa !5
  %663 = load double, ptr %27, align 16, !tbaa !5
  %664 = getelementptr inbounds i8, ptr %12, i64 48
  %665 = load i64, ptr %664, align 16, !tbaa !9
  %666 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.627, double noundef %660, i64 noundef %661, double noundef %662, double noundef %663, i64 noundef %665)
  %667 = load double, ptr %22, align 8, !tbaa !5
  %668 = getelementptr inbounds i8, ptr %12, i64 8
  %669 = load i64, ptr %668, align 8, !tbaa !9
  %670 = load double, ptr %28, align 8, !tbaa !5
  %671 = getelementptr inbounds i8, ptr %12, i64 56
  %672 = load i64, ptr %671, align 8, !tbaa !9
  %673 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.628, double noundef %660, double noundef %667, i64 noundef %669, double noundef %663, double noundef %670, i64 noundef %672)
  %674 = load double, ptr %23, align 16, !tbaa !5
  %675 = getelementptr inbounds i8, ptr %12, i64 16
  %676 = load i64, ptr %675, align 16, !tbaa !9
  %677 = load double, ptr %29, align 16, !tbaa !5
  %678 = getelementptr inbounds i8, ptr %12, i64 64
  %679 = load i64, ptr %678, align 16, !tbaa !9
  %680 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.628, double noundef %667, double noundef %674, i64 noundef %676, double noundef %670, double noundef %677, i64 noundef %679)
  %681 = load double, ptr %24, align 8, !tbaa !5
  %682 = getelementptr inbounds i8, ptr %12, i64 24
  %683 = load i64, ptr %682, align 8, !tbaa !9
  %684 = load double, ptr %30, align 8, !tbaa !5
  %685 = getelementptr inbounds i8, ptr %12, i64 72
  %686 = load i64, ptr %685, align 8, !tbaa !9
  %687 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.628, double noundef %674, double noundef %681, i64 noundef %683, double noundef %677, double noundef %684, i64 noundef %686)
  %688 = load double, ptr %25, align 16, !tbaa !5
  %689 = getelementptr inbounds i8, ptr %12, i64 32
  %690 = load i64, ptr %689, align 16, !tbaa !9
  %691 = load double, ptr %31, align 16, !tbaa !5
  %692 = getelementptr inbounds i8, ptr %12, i64 80
  %693 = load i64, ptr %692, align 16, !tbaa !9
  %694 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.628, double noundef %681, double noundef %688, i64 noundef %690, double noundef %684, double noundef %691, i64 noundef %693)
  %695 = getelementptr inbounds i8, ptr %12, i64 40
  %696 = load i64, ptr %695, align 8, !tbaa !9
  %697 = getelementptr inbounds i8, ptr %12, i64 88
  %698 = load i64, ptr %697, align 8, !tbaa !9
  %699 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.629, double noundef %688, double noundef %662, i64 noundef %696, double noundef %691, i64 noundef %698)
  %700 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.630)
  %701 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.631)
  %702 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.632)
  %703 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.633)
  %704 = load i64, ptr %14, align 16, !tbaa !9
  %705 = getelementptr inbounds i8, ptr %14, i64 72
  %706 = load i64, ptr %705, align 8, !tbaa !9
  %707 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.634, i32 noundef 0, i32 noundef 10, i64 noundef %704, i32 noundef 90, i32 noundef 100, i64 noundef %706)
  %708 = getelementptr inbounds i8, ptr %14, i64 8
  %709 = load i64, ptr %708, align 8, !tbaa !9
  %710 = getelementptr inbounds i8, ptr %14, i64 80
  %711 = load i64, ptr %710, align 16, !tbaa !9
  %712 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.634, i32 noundef 10, i32 noundef 20, i64 noundef %709, i32 noundef 100, i32 noundef 110, i64 noundef %711)
  %713 = getelementptr inbounds i8, ptr %14, i64 16
  %714 = load i64, ptr %713, align 16, !tbaa !9
  %715 = getelementptr inbounds i8, ptr %14, i64 88
  %716 = load i64, ptr %715, align 8, !tbaa !9
  %717 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.634, i32 noundef 20, i32 noundef 30, i64 noundef %714, i32 noundef 110, i32 noundef 120, i64 noundef %716)
  %718 = getelementptr inbounds i8, ptr %14, i64 24
  %719 = load i64, ptr %718, align 8, !tbaa !9
  %720 = getelementptr inbounds i8, ptr %14, i64 96
  %721 = load i64, ptr %720, align 16, !tbaa !9
  %722 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.634, i32 noundef 30, i32 noundef 40, i64 noundef %719, i32 noundef 120, i32 noundef 130, i64 noundef %721)
  %723 = getelementptr inbounds i8, ptr %14, i64 32
  %724 = load i64, ptr %723, align 16, !tbaa !9
  %725 = getelementptr inbounds i8, ptr %14, i64 104
  %726 = load i64, ptr %725, align 8, !tbaa !9
  %727 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.634, i32 noundef 40, i32 noundef 50, i64 noundef %724, i32 noundef 130, i32 noundef 140, i64 noundef %726)
  %728 = getelementptr inbounds i8, ptr %14, i64 40
  %729 = load i64, ptr %728, align 8, !tbaa !9
  %730 = getelementptr inbounds i8, ptr %14, i64 112
  %731 = load i64, ptr %730, align 16, !tbaa !9
  %732 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.634, i32 noundef 50, i32 noundef 60, i64 noundef %729, i32 noundef 140, i32 noundef 150, i64 noundef %731)
  %733 = getelementptr inbounds i8, ptr %14, i64 48
  %734 = load i64, ptr %733, align 16, !tbaa !9
  %735 = getelementptr inbounds i8, ptr %14, i64 120
  %736 = load i64, ptr %735, align 8, !tbaa !9
  %737 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.634, i32 noundef 60, i32 noundef 70, i64 noundef %734, i32 noundef 150, i32 noundef 160, i64 noundef %736)
  %738 = getelementptr inbounds i8, ptr %14, i64 56
  %739 = load i64, ptr %738, align 8, !tbaa !9
  %740 = getelementptr inbounds i8, ptr %14, i64 128
  %741 = load i64, ptr %740, align 16, !tbaa !9
  %742 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.634, i32 noundef 70, i32 noundef 80, i64 noundef %739, i32 noundef 160, i32 noundef 170, i64 noundef %741)
  %743 = getelementptr inbounds i8, ptr %14, i64 64
  %744 = load i64, ptr %743, align 16, !tbaa !9
  %745 = getelementptr inbounds i8, ptr %14, i64 136
  %746 = load i64, ptr %745, align 8, !tbaa !9
  %747 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.634, i32 noundef 80, i32 noundef 90, i64 noundef %744, i32 noundef 170, i32 noundef 180, i64 noundef %746)
  %748 = getelementptr inbounds i8, ptr %0, i64 456
  %749 = load double, ptr %748, align 8, !tbaa !38
  %750 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !5
  %751 = fcmp une double %749, %750
  br i1 %751, label %752, label %756

752:                                              ; preds = %657
  %753 = fdiv double %749, %750
  %754 = fmul double %753, 1.800000e+02
  %755 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.635, double noundef %754)
  br label %756

756:                                              ; preds = %752, %657
  %757 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.142)
  %758 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.636)
  %759 = load i64, ptr %13, align 16, !tbaa !9
  %760 = getelementptr inbounds i8, ptr %13, i64 72
  %761 = load i64, ptr %760, align 8, !tbaa !9
  %762 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.637, i32 noundef 0, i32 noundef 5, i64 noundef %759, i32 noundef 80, i32 noundef 110, i64 noundef %761)
  %763 = getelementptr inbounds i8, ptr %13, i64 8
  %764 = load i64, ptr %763, align 8, !tbaa !9
  %765 = getelementptr inbounds i8, ptr %13, i64 80
  %766 = load i64, ptr %765, align 16, !tbaa !9
  %767 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.637, i32 noundef 5, i32 noundef 10, i64 noundef %764, i32 noundef 110, i32 noundef 120, i64 noundef %766)
  %768 = getelementptr inbounds i8, ptr %13, i64 16
  %769 = load i64, ptr %768, align 16, !tbaa !9
  %770 = getelementptr inbounds i8, ptr %13, i64 88
  %771 = load i64, ptr %770, align 8, !tbaa !9
  %772 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.637, i32 noundef 10, i32 noundef 20, i64 noundef %769, i32 noundef 120, i32 noundef 130, i64 noundef %771)
  %773 = getelementptr inbounds i8, ptr %13, i64 24
  %774 = load i64, ptr %773, align 8, !tbaa !9
  %775 = getelementptr inbounds i8, ptr %13, i64 96
  %776 = load i64, ptr %775, align 16, !tbaa !9
  %777 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.637, i32 noundef 20, i32 noundef 30, i64 noundef %774, i32 noundef 130, i32 noundef 140, i64 noundef %776)
  %778 = getelementptr inbounds i8, ptr %13, i64 32
  %779 = load i64, ptr %778, align 16, !tbaa !9
  %780 = getelementptr inbounds i8, ptr %13, i64 104
  %781 = load i64, ptr %780, align 8, !tbaa !9
  %782 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.637, i32 noundef 30, i32 noundef 40, i64 noundef %779, i32 noundef 140, i32 noundef 150, i64 noundef %781)
  %783 = getelementptr inbounds i8, ptr %13, i64 40
  %784 = load i64, ptr %783, align 8, !tbaa !9
  %785 = getelementptr inbounds i8, ptr %13, i64 112
  %786 = load i64, ptr %785, align 16, !tbaa !9
  %787 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.637, i32 noundef 40, i32 noundef 50, i64 noundef %784, i32 noundef 150, i32 noundef 160, i64 noundef %786)
  %788 = getelementptr inbounds i8, ptr %13, i64 48
  %789 = load i64, ptr %788, align 16, !tbaa !9
  %790 = getelementptr inbounds i8, ptr %13, i64 120
  %791 = load i64, ptr %790, align 8, !tbaa !9
  %792 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.637, i32 noundef 50, i32 noundef 60, i64 noundef %789, i32 noundef 160, i32 noundef 170, i64 noundef %791)
  %793 = getelementptr inbounds i8, ptr %13, i64 56
  %794 = load i64, ptr %793, align 8, !tbaa !9
  %795 = getelementptr inbounds i8, ptr %13, i64 128
  %796 = load i64, ptr %795, align 16, !tbaa !9
  %797 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.637, i32 noundef 60, i32 noundef 70, i64 noundef %794, i32 noundef 170, i32 noundef 175, i64 noundef %796)
  %798 = getelementptr inbounds i8, ptr %13, i64 64
  %799 = load i64, ptr %798, align 16, !tbaa !9
  %800 = getelementptr inbounds i8, ptr %13, i64 136
  %801 = load i64, ptr %800, align 8, !tbaa !9
  %802 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.637, i32 noundef 70, i32 noundef 80, i64 noundef %799, i32 noundef 175, i32 noundef 180, i64 noundef %801)
  %803 = getelementptr inbounds i8, ptr %0, i64 464
  %804 = load double, ptr %803, align 8, !tbaa !39
  %805 = load double, ptr @_ZN10tetgenmesh2PIE, align 8, !tbaa !5
  %806 = fcmp une double %804, %805
  br i1 %806, label %807, label %811

807:                                              ; preds = %756
  %808 = fdiv double %804, %805
  %809 = fmul double %808, 1.800000e+02
  %810 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.638, double noundef %809)
  br label %811

811:                                              ; preds = %807, %756
  %812 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.142)
  %813 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.142)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %14) #10
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %5) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %4) #10
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %3) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %1) #10
  ret void
}

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #9

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

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


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