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

; 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.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::basic_ifstream" = type { %"class.std::basic_istream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon }
%union.anon = type { i32 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.3 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.3 = type { i64, [8 x i8] }
%class.tetgenio = type { i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, ptr, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"struct.tetgenio::facet" = type { ptr, i32, ptr, i32 }
%"struct.tetgenio::polygon" = type { ptr, i32 }
%"class.tetgenmesh::arraypool" = type { i32, i32, i32, i32, i32, ptr, i64, i64 }

@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [5 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.91 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [47 x i8], align 1

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN8tetgenio14findnextnumberEPc(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef) #3 align 2

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

; Function Attrs: nounwind
declare double @strtod(ptr noundef, ptr noundef) #5

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

; Function Attrs: nounwind
declare ptr @strcat(ptr noundef, ptr noundef) #5

declare noalias ptr @fopen(ptr noundef, ptr noundef) #4

; Function Attrs: nounwind willreturn memory(read)
declare noundef ptr @strstr(ptr noundef, ptr noundef) #6

declare i32 @fclose(ptr noundef) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8tetgenio4initEPNS_5facetE(ptr noundef) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8tetgenio4initEPNS_7polygonE(ptr noundef) #3 align 2

; Function Attrs: nounwind
declare ptr @strncpy(ptr noundef, ptr noundef, i64 noundef) #5

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #6

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN8tetgenio8load_stlEPc(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef %1) #7 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i1, align 1
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca [1024 x i8], align 16
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca [2048 x i8], align 16
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca %"class.std::basic_ifstream", align 8
  %23 = alloca %"class.std::vector", align 8
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca [80 x i8], align 16
  %28 = alloca %"class.std::basic_ifstream", align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca [12 x float], align 16
  %32 = alloca i32, align 4
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %36 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 1024, ptr %6) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #11
  call void @llvm.lifetime.start.p0(i64 2048, ptr %11) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #11
  store i32 0, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #11
  store i32 0, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #11
  store i32 0, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #11
  store i32 0, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #11
  store i32 0, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #11
  %37 = getelementptr inbounds [1024 x i8], ptr %6, i64 0, i64 0
  %38 = load ptr, ptr %5, align 8, !tbaa !5
  %39 = call ptr @strncpy(ptr noundef %37, ptr noundef %38, i64 noundef 1023) #11
  %40 = getelementptr inbounds [1024 x i8], ptr %6, i64 0, i64 1023
  store i8 0, ptr %40, align 1, !tbaa !11
  %41 = getelementptr inbounds [1024 x i8], ptr %6, i64 0, i64 0
  %42 = load i8, ptr %41, align 16, !tbaa !11
  %43 = sext i8 %42 to i32
  %44 = icmp eq i32 %43, 0
  br i1 %44, label %45, label %47

45:                                               ; preds = %2
  %46 = call i32 (ptr, ...) @printf(ptr noundef @.str.55)
  store i1 false, ptr %3, align 1
  store i32 1, ptr %21, align 4
  br label %622

47:                                               ; preds = %2
  %48 = getelementptr inbounds [1024 x i8], ptr %6, i64 0, i64 0
  %49 = call i64 @strlen(ptr noundef %48) #12
  %50 = sub i64 %49, 4
  %51 = getelementptr inbounds [1024 x i8], ptr %6, i64 0, i64 %50
  %52 = call i32 @strcmp(ptr noundef %51, ptr noundef @.str.90) #12
  %53 = icmp ne i32 %52, 0
  br i1 %53, label %54, label %57

54:                                               ; preds = %47
  %55 = getelementptr inbounds [1024 x i8], ptr %6, i64 0, i64 0
  %56 = call ptr @strcat(ptr noundef %55, ptr noundef @.str.90) #11
  br label %57

57:                                               ; preds = %54, %47
  call void @llvm.lifetime.start.p0(i64 520, ptr %22) #11
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(256) %22)
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #11
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #11
  %58 = getelementptr inbounds [1024 x i8], ptr %6, i64 0, i64 0
  invoke void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(256) %22, ptr noundef %58, i32 noundef 8)
          to label %59 unwind label %71

59:                                               ; preds = %57
  %60 = load ptr, ptr %22, align 8, !tbaa !12
  %61 = getelementptr i8, ptr %60, i64 -24
  %62 = load i64, ptr %61, align 8
  %63 = getelementptr inbounds i8, ptr %22, i64 %62
  %64 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv(ptr noundef nonnull align 8 dereferenceable(264) %63)
          to label %65 unwind label %71

65:                                               ; preds = %59
  br i1 %64, label %66, label %75

66:                                               ; preds = %65
  %67 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.91)
          to label %68 unwind label %71

68:                                               ; preds = %66
  %69 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %70 unwind label %71

70:                                               ; preds = %68
  store i1 false, ptr %3, align 1
  store i32 1, ptr %21, align 4
  br label %620

71:                                               ; preds = %68, %66, %59, %57
  %72 = landingpad { ptr, i32 }
          cleanup
  %73 = extractvalue { ptr, i32 } %72, 0
  store ptr %73, ptr %24, align 8
  %74 = extractvalue { ptr, i32 } %72, 1
  store i32 %74, ptr %25, align 4
  br label %621

75:                                               ; preds = %65
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #11
  %76 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EES4_(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(32) %26, i8 noundef signext 32)
          to label %77 unwind label %85

77:                                               ; preds = %75
  invoke void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(256) %22)
          to label %78 unwind label %85

78:                                               ; preds = %77
  %79 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %26) #11
  br i1 %79, label %80, label %89

80:                                               ; preds = %78
  %81 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.92)
          to label %82 unwind label %85

82:                                               ; preds = %80
  %83 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %84 unwind label %85

84:                                               ; preds = %82
  store i1 false, ptr %3, align 1
  store i32 1, ptr %21, align 4
  br label %618

85:                                               ; preds = %576, %568, %564, %557, %536, %465, %457, %443, %425, %418, %410, %403, %370, %366, %363, %359, %354, %97, %95, %89, %82, %80, %77, %75
  %86 = landingpad { ptr, i32 }
          cleanup
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %24, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %25, align 4
  br label %619

89:                                               ; preds = %78
  %90 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %26, i64 noundef 0)
          to label %91 unwind label %85

91:                                               ; preds = %89
  %92 = load i8, ptr %90, align 1, !tbaa !11
  %93 = sext i8 %92 to i32
  %94 = icmp ne i32 %93, 115
  br i1 %94, label %95, label %354

95:                                               ; preds = %91
  %96 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.93)
          to label %97 unwind label %85

97:                                               ; preds = %95
  %98 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %99 unwind label %85

99:                                               ; preds = %97
  call void @llvm.lifetime.start.p0(i64 80, ptr %27) #11
  call void @llvm.lifetime.start.p0(i64 520, ptr %28) #11
  %100 = getelementptr inbounds [1024 x i8], ptr %6, i64 0, i64 0
  %101 = invoke noundef i32 @_ZStorSt13_Ios_OpenmodeS_(i32 noundef 8, i32 noundef 4)
          to label %102 unwind label %115

102:                                              ; preds = %99
  invoke void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(256) %28, ptr noundef %100, i32 noundef %101)
          to label %103 unwind label %115

103:                                              ; preds = %102
  %104 = load ptr, ptr %28, align 8, !tbaa !12
  %105 = getelementptr i8, ptr %104, i64 -24
  %106 = load i64, ptr %105, align 8
  %107 = getelementptr inbounds i8, ptr %28, i64 %106
  %108 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv(ptr noundef nonnull align 8 dereferenceable(264) %107)
          to label %109 unwind label %119

109:                                              ; preds = %103
  br i1 %108, label %110, label %123

110:                                              ; preds = %109
  %111 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.91)
          to label %112 unwind label %119

112:                                              ; preds = %110
  %113 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %114 unwind label %119

114:                                              ; preds = %112
  store i1 false, ptr %3, align 1
  store i32 1, ptr %21, align 4
  br label %351

115:                                              ; preds = %102, %99
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %24, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %25, align 4
  br label %353

119:                                              ; preds = %123, %112, %110, %103
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %24, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %25, align 4
  br label %352

123:                                              ; preds = %109
  %124 = getelementptr inbounds [80 x i8], ptr %27, i64 0, i64 0
  %125 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef %124, i64 noundef 80)
          to label %126 unwind label %119

126:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #11
  %127 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef %29, i64 noundef 4)
          to label %128 unwind label %132

128:                                              ; preds = %126
  %129 = load i32, ptr %29, align 4, !tbaa !9
  %130 = icmp eq i32 %129, 0
  br i1 %130, label %131, label %136

131:                                              ; preds = %128
  store i1 false, ptr %3, align 1
  store i32 1, ptr %21, align 4
  br label %349

132:                                              ; preds = %311, %303, %299, %292, %271, %217, %213, %202, %126
  %133 = landingpad { ptr, i32 }
          cleanup
  %134 = extractvalue { ptr, i32 } %133, 0
  store ptr %134, ptr %24, align 8
  %135 = extractvalue { ptr, i32 } %133, 1
  store i32 %135, ptr %25, align 4
  br label %350

136:                                              ; preds = %128
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #11
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %137

137:                                              ; preds = %198, %136
  %138 = load i32, ptr %30, align 4, !tbaa !9
  %139 = load i32, ptr %29, align 4, !tbaa !9
  %140 = icmp slt i32 %138, %139
  br i1 %140, label %142, label %141

141:                                              ; preds = %137
  store i32 2, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #11
  br label %202

142:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 48, ptr %31) #11
  %143 = getelementptr inbounds [12 x float], ptr %31, i64 0, i64 0
  %144 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef %143, i64 noundef 48)
          to label %145 unwind label %150

145:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #11
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %146

146:                                              ; preds = %178, %145
  %147 = load i32, ptr %32, align 4, !tbaa !9
  %148 = icmp slt i32 %147, 4
  br i1 %148, label %154, label %149

149:                                              ; preds = %146
  store i32 5, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #11
  br label %194

150:                                              ; preds = %194, %142
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %24, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %25, align 4
  br label %201

154:                                              ; preds = %146
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #11
  %155 = load i32, ptr %32, align 4, !tbaa !9
  %156 = mul nsw i32 %155, 3
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds [12 x float], ptr %31, i64 0, i64 %157
  %159 = load float, ptr %158, align 4, !tbaa !14
  %160 = fpext float %159 to double
  store double %160, ptr %33, align 8, !tbaa !16
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %161 unwind label %181

161:                                              ; preds = %154
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #11
  %162 = load i32, ptr %32, align 4, !tbaa !9
  %163 = mul nsw i32 %162, 3
  %164 = add nsw i32 %163, 1
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds [12 x float], ptr %31, i64 0, i64 %165
  %167 = load float, ptr %166, align 4, !tbaa !14
  %168 = fpext float %167 to double
  store double %168, ptr %34, align 8, !tbaa !16
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %169 unwind label %185

169:                                              ; preds = %161
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #11
  %170 = load i32, ptr %32, align 4, !tbaa !9
  %171 = mul nsw i32 %170, 3
  %172 = add nsw i32 %171, 2
  %173 = sext i32 %172 to i64
  %174 = getelementptr inbounds [12 x float], ptr %31, i64 0, i64 %173
  %175 = load float, ptr %174, align 4, !tbaa !14
  %176 = fpext float %175 to double
  store double %176, ptr %35, align 8, !tbaa !16
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %177 unwind label %189

177:                                              ; preds = %169
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #11
  br label %178

178:                                              ; preds = %177
  %179 = load i32, ptr %32, align 4, !tbaa !9
  %180 = add nsw i32 %179, 1
  store i32 %180, ptr %32, align 4, !tbaa !9
  br label %146, !llvm.loop !18

181:                                              ; preds = %154
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %24, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #11
  br label %193

185:                                              ; preds = %161
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %24, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #11
  br label %193

189:                                              ; preds = %169
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %24, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #11
  br label %193

193:                                              ; preds = %189, %185, %181
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #11
  br label %201

194:                                              ; preds = %149
  %195 = getelementptr inbounds [12 x float], ptr %31, i64 0, i64 0
  %196 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef %195, i64 noundef 2)
          to label %197 unwind label %150

197:                                              ; preds = %194
  call void @llvm.lifetime.end.p0(i64 48, ptr %31) #11
  br label %198

198:                                              ; preds = %197
  %199 = load i32, ptr %30, align 4, !tbaa !9
  %200 = add nsw i32 %199, 1
  store i32 %200, ptr %30, align 4, !tbaa !9
  br label %137, !llvm.loop !20

201:                                              ; preds = %193, %150
  call void @llvm.lifetime.end.p0(i64 48, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #11
  br label %350

202:                                              ; preds = %141
  invoke void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(256) %28)
          to label %203 unwind label %132

203:                                              ; preds = %202
  %204 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %23) #11
  %205 = udiv i64 %204, 3
  %206 = trunc i64 %205 to i32
  store i32 %206, ptr %16, align 4, !tbaa !9
  %207 = load i32, ptr %16, align 4, !tbaa !9
  %208 = icmp eq i32 %207, 0
  br i1 %208, label %213, label %209

209:                                              ; preds = %203
  %210 = load i32, ptr %16, align 4, !tbaa !9
  %211 = srem i32 %210, 3
  %212 = icmp ne i32 %211, 0
  br i1 %212, label %213, label %217

213:                                              ; preds = %209, %203
  %214 = getelementptr inbounds [1024 x i8], ptr %6, i64 0, i64 0
  %215 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.94, ptr noundef %214)
          to label %216 unwind label %132

216:                                              ; preds = %213
  store i1 false, ptr %3, align 1
  store i32 1, ptr %21, align 4
  br label %349

217:                                              ; preds = %209
  %218 = load i32, ptr %16, align 4, !tbaa !9
  %219 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 9
  store i32 %218, ptr %219, align 8, !tbaa !21
  %220 = load i32, ptr %16, align 4, !tbaa !9
  %221 = mul nsw i32 %220, 3
  %222 = sext i32 %221 to i64
  %223 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %222, i64 8)
  %224 = extractvalue { i64, i1 } %223, 1
  %225 = extractvalue { i64, i1 } %223, 0
  %226 = select i1 %224, i64 -1, i64 %225
  %227 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %226) #13
          to label %228 unwind label %132

228:                                              ; preds = %217
  %229 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 3
  store ptr %227, ptr %229, align 8, !tbaa !23
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %230

230:                                              ; preds = %268, %228
  %231 = load i32, ptr %20, align 4, !tbaa !9
  %232 = load i32, ptr %16, align 4, !tbaa !9
  %233 = icmp slt i32 %231, %232
  br i1 %233, label %234, label %271

234:                                              ; preds = %230
  %235 = load i32, ptr %20, align 4, !tbaa !9
  %236 = mul nsw i32 %235, 3
  store i32 %236, ptr %17, align 4, !tbaa !9
  %237 = load i32, ptr %17, align 4, !tbaa !9
  %238 = sext i32 %237 to i64
  %239 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %238) #11
  %240 = load double, ptr %239, align 8, !tbaa !16
  %241 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 3
  %242 = load ptr, ptr %241, align 8, !tbaa !23
  %243 = load i32, ptr %17, align 4, !tbaa !9
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds double, ptr %242, i64 %244
  store double %240, ptr %245, align 8, !tbaa !16
  %246 = load i32, ptr %17, align 4, !tbaa !9
  %247 = add nsw i32 %246, 1
  %248 = sext i32 %247 to i64
  %249 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %248) #11
  %250 = load double, ptr %249, align 8, !tbaa !16
  %251 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 3
  %252 = load ptr, ptr %251, align 8, !tbaa !23
  %253 = load i32, ptr %17, align 4, !tbaa !9
  %254 = add nsw i32 %253, 1
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds double, ptr %252, i64 %255
  store double %250, ptr %256, align 8, !tbaa !16
  %257 = load i32, ptr %17, align 4, !tbaa !9
  %258 = add nsw i32 %257, 2
  %259 = sext i32 %258 to i64
  %260 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %259) #11
  %261 = load double, ptr %260, align 8, !tbaa !16
  %262 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 3
  %263 = load ptr, ptr %262, align 8, !tbaa !23
  %264 = load i32, ptr %17, align 4, !tbaa !9
  %265 = add nsw i32 %264, 2
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds double, ptr %263, i64 %266
  store double %261, ptr %267, align 8, !tbaa !16
  br label %268

268:                                              ; preds = %234
  %269 = load i32, ptr %20, align 4, !tbaa !9
  %270 = add nsw i32 %269, 1
  store i32 %270, ptr %20, align 4, !tbaa !9
  br label %230, !llvm.loop !24

271:                                              ; preds = %230
  %272 = load i32, ptr %16, align 4, !tbaa !9
  %273 = sdiv i32 %272, 3
  store i32 %273, ptr %18, align 4, !tbaa !9
  %274 = load i32, ptr %18, align 4, !tbaa !9
  %275 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 23
  store i32 %274, ptr %275, align 8, !tbaa !25
  %276 = load i32, ptr %18, align 4, !tbaa !9
  %277 = sext i32 %276 to i64
  %278 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %277, i64 32)
  %279 = extractvalue { i64, i1 } %278, 1
  %280 = extractvalue { i64, i1 } %278, 0
  %281 = select i1 %279, i64 -1, i64 %280
  %282 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %281) #13
          to label %283 unwind label %132

283:                                              ; preds = %271
  %284 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 21
  store ptr %282, ptr %284, align 8, !tbaa !26
  %285 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 0
  store i32 1, ptr %285, align 8, !tbaa !27
  %286 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 0
  %287 = load i32, ptr %286, align 8, !tbaa !27
  store i32 %287, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %288

288:                                              ; preds = %345, %283
  %289 = load i32, ptr %20, align 4, !tbaa !9
  %290 = load i32, ptr %18, align 4, !tbaa !9
  %291 = icmp slt i32 %289, %290
  br i1 %291, label %292, label %348

292:                                              ; preds = %288
  %293 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 21
  %294 = load ptr, ptr %293, align 8, !tbaa !26
  %295 = load i32, ptr %20, align 4, !tbaa !9
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds %"struct.tetgenio::facet", ptr %294, i64 %296
  store ptr %297, ptr %9, align 8, !tbaa !5
  %298 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN8tetgenio4initEPNS_5facetE(ptr noundef %298)
          to label %299 unwind label %132

299:                                              ; preds = %292
  %300 = load ptr, ptr %9, align 8, !tbaa !5
  %301 = getelementptr inbounds %"struct.tetgenio::facet", ptr %300, i32 0, i32 1
  store i32 1, ptr %301, align 8, !tbaa !28
  %302 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef 16) #13
          to label %303 unwind label %132

303:                                              ; preds = %299
  %304 = load ptr, ptr %9, align 8, !tbaa !5
  %305 = getelementptr inbounds %"struct.tetgenio::facet", ptr %304, i32 0, i32 0
  store ptr %302, ptr %305, align 8, !tbaa !30
  %306 = load ptr, ptr %9, align 8, !tbaa !5
  %307 = getelementptr inbounds %"struct.tetgenio::facet", ptr %306, i32 0, i32 0
  %308 = load ptr, ptr %307, align 8, !tbaa !30
  %309 = getelementptr inbounds %"struct.tetgenio::polygon", ptr %308, i64 0
  store ptr %309, ptr %10, align 8, !tbaa !5
  %310 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN8tetgenio4initEPNS_7polygonE(ptr noundef %310)
          to label %311 unwind label %132

311:                                              ; preds = %303
  %312 = load ptr, ptr %10, align 8, !tbaa !5
  %313 = getelementptr inbounds %"struct.tetgenio::polygon", ptr %312, i32 0, i32 1
  store i32 3, ptr %313, align 8, !tbaa !31
  %314 = load ptr, ptr %10, align 8, !tbaa !5
  %315 = getelementptr inbounds %"struct.tetgenio::polygon", ptr %314, i32 0, i32 1
  %316 = load i32, ptr %315, align 8, !tbaa !31
  %317 = sext i32 %316 to i64
  %318 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %317, i64 4)
  %319 = extractvalue { i64, i1 } %318, 1
  %320 = extractvalue { i64, i1 } %318, 0
  %321 = select i1 %319, i64 -1, i64 %320
  %322 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %321) #13
          to label %323 unwind label %132

323:                                              ; preds = %311
  %324 = load ptr, ptr %10, align 8, !tbaa !5
  %325 = getelementptr inbounds %"struct.tetgenio::polygon", ptr %324, i32 0, i32 0
  store ptr %322, ptr %325, align 8, !tbaa !33
  %326 = load i32, ptr %17, align 4, !tbaa !9
  %327 = load ptr, ptr %10, align 8, !tbaa !5
  %328 = getelementptr inbounds %"struct.tetgenio::polygon", ptr %327, i32 0, i32 0
  %329 = load ptr, ptr %328, align 8, !tbaa !33
  %330 = getelementptr inbounds i32, ptr %329, i64 0
  store i32 %326, ptr %330, align 4, !tbaa !9
  %331 = load i32, ptr %17, align 4, !tbaa !9
  %332 = add nsw i32 %331, 1
  %333 = load ptr, ptr %10, align 8, !tbaa !5
  %334 = getelementptr inbounds %"struct.tetgenio::polygon", ptr %333, i32 0, i32 0
  %335 = load ptr, ptr %334, align 8, !tbaa !33
  %336 = getelementptr inbounds i32, ptr %335, i64 1
  store i32 %332, ptr %336, align 4, !tbaa !9
  %337 = load i32, ptr %17, align 4, !tbaa !9
  %338 = add nsw i32 %337, 2
  %339 = load ptr, ptr %10, align 8, !tbaa !5
  %340 = getelementptr inbounds %"struct.tetgenio::polygon", ptr %339, i32 0, i32 0
  %341 = load ptr, ptr %340, align 8, !tbaa !33
  %342 = getelementptr inbounds i32, ptr %341, i64 2
  store i32 %338, ptr %342, align 4, !tbaa !9
  %343 = load i32, ptr %17, align 4, !tbaa !9
  %344 = add nsw i32 %343, 3
  store i32 %344, ptr %17, align 4, !tbaa !9
  br label %345

345:                                              ; preds = %323
  %346 = load i32, ptr %20, align 4, !tbaa !9
  %347 = add nsw i32 %346, 1
  store i32 %347, ptr %20, align 4, !tbaa !9
  br label %288, !llvm.loop !34

348:                                              ; preds = %288
  store i1 true, ptr %3, align 1
  store i32 1, ptr %21, align 4
  br label %349

349:                                              ; preds = %348, %216, %131
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #11
  br label %351

350:                                              ; preds = %201, %132
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #11
  br label %352

351:                                              ; preds = %349, %114
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %28) #11
  call void @llvm.lifetime.end.p0(i64 520, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 80, ptr %27) #11
  br label %618

352:                                              ; preds = %350, %119
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %28) #11
  br label %353

353:                                              ; preds = %352, %115
  call void @llvm.lifetime.end.p0(i64 520, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 80, ptr %27) #11
  br label %619

354:                                              ; preds = %91
  %355 = getelementptr inbounds [1024 x i8], ptr %6, i64 0, i64 0
  %356 = invoke noalias ptr @fopen(ptr noundef %355, ptr noundef @.str.9)
          to label %357 unwind label %85

357:                                              ; preds = %354
  store ptr %356, ptr %7, align 8, !tbaa !5
  %358 = icmp ne ptr %356, null
  br i1 %358, label %363, label %359

359:                                              ; preds = %357
  %360 = getelementptr inbounds [1024 x i8], ptr %6, i64 0, i64 0
  %361 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.68, ptr noundef %360)
          to label %362 unwind label %85

362:                                              ; preds = %359
  store i1 false, ptr %3, align 1
  store i32 1, ptr %21, align 4
  br label %618

363:                                              ; preds = %357
  %364 = getelementptr inbounds [1024 x i8], ptr %6, i64 0, i64 0
  %365 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.11, ptr noundef %364)
          to label %366 unwind label %85

366:                                              ; preds = %363
  %367 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #13
          to label %368 unwind label %85

368:                                              ; preds = %366
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %367, i32 noundef 24, i32 noundef 10)
          to label %369 unwind label %385

369:                                              ; preds = %368
  store ptr %367, ptr %8, align 8, !tbaa !5
  br label %370

370:                                              ; preds = %442, %369
  %371 = getelementptr inbounds [2048 x i8], ptr %11, i64 0, i64 0
  %372 = load ptr, ptr %7, align 8, !tbaa !5
  %373 = invoke noundef ptr @_ZN8tetgenio8readlineEPcP8_IO_FILEPi(ptr noundef nonnull align 8 dereferenceable(424) %36, ptr noundef %371, ptr noundef %372, ptr noundef %19)
          to label %374 unwind label %85

374:                                              ; preds = %370
  store ptr %373, ptr %12, align 8, !tbaa !5
  %375 = icmp ne ptr %373, null
  br i1 %375, label %376, label %443

376:                                              ; preds = %374
  %377 = load i32, ptr %15, align 4, !tbaa !9
  %378 = icmp eq i32 %377, 0
  br i1 %378, label %379, label %390

379:                                              ; preds = %376
  %380 = load ptr, ptr %12, align 8, !tbaa !5
  %381 = call noundef ptr @strstr(ptr noundef %380, ptr noundef @.str.95) #12
  store ptr %381, ptr %12, align 8, !tbaa !5
  %382 = load ptr, ptr %12, align 8, !tbaa !5
  %383 = icmp ne ptr %382, null
  br i1 %383, label %384, label %389

384:                                              ; preds = %379
  store i32 1, ptr %15, align 4, !tbaa !9
  br label %389

385:                                              ; preds = %368
  %386 = landingpad { ptr, i32 }
          cleanup
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %24, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %25, align 4
  call void @_ZdlPvm(ptr noundef %367, i64 noundef 48) #14
  br label %619

389:                                              ; preds = %384, %379
  br label %442

390:                                              ; preds = %376
  %391 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %391, ptr %13, align 8, !tbaa !5
  %392 = load ptr, ptr %12, align 8, !tbaa !5
  %393 = call noundef ptr @strstr(ptr noundef %392, ptr noundef @.str.96) #12
  store ptr %393, ptr %12, align 8, !tbaa !5
  %394 = load ptr, ptr %12, align 8, !tbaa !5
  %395 = icmp ne ptr %394, null
  br i1 %395, label %396, label %397

396:                                              ; preds = %390
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %441

397:                                              ; preds = %390
  %398 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %398, ptr %12, align 8, !tbaa !5
  %399 = load ptr, ptr %12, align 8, !tbaa !5
  %400 = call noundef ptr @strstr(ptr noundef %399, ptr noundef @.str.75) #12
  store ptr %400, ptr %12, align 8, !tbaa !5
  %401 = load ptr, ptr %12, align 8, !tbaa !5
  %402 = icmp ne ptr %401, null
  br i1 %402, label %403, label %440

403:                                              ; preds = %397
  %404 = load ptr, ptr %8, align 8, !tbaa !5
  %405 = invoke noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %404, ptr noundef %14)
          to label %406 unwind label %85

406:                                              ; preds = %403
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %407

407:                                              ; preds = %436, %406
  %408 = load i32, ptr %20, align 4, !tbaa !9
  %409 = icmp slt i32 %408, 3
  br i1 %409, label %410, label %439

410:                                              ; preds = %407
  %411 = load ptr, ptr %12, align 8, !tbaa !5
  %412 = invoke noundef ptr @_ZN8tetgenio14findnextnumberEPc(ptr noundef nonnull align 8 dereferenceable(424) %36, ptr noundef %411)
          to label %413 unwind label %85

413:                                              ; preds = %410
  store ptr %412, ptr %12, align 8, !tbaa !5
  %414 = load ptr, ptr %12, align 8, !tbaa !5
  %415 = load i8, ptr %414, align 1, !tbaa !11
  %416 = sext i8 %415 to i32
  %417 = icmp eq i32 %416, 0
  br i1 %417, label %418, label %429

418:                                              ; preds = %413
  %419 = load i32, ptr %19, align 4, !tbaa !9
  %420 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.97, i32 noundef %419)
          to label %421 unwind label %85

421:                                              ; preds = %418
  %422 = load ptr, ptr %8, align 8, !tbaa !5
  %423 = icmp eq ptr %422, null
  br i1 %423, label %425, label %424

424:                                              ; preds = %421
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %422) #11
  call void @_ZdlPvm(ptr noundef %422, i64 noundef 48) #14
  br label %425

425:                                              ; preds = %424, %421
  %426 = load ptr, ptr %7, align 8, !tbaa !5
  %427 = invoke i32 @fclose(ptr noundef %426)
          to label %428 unwind label %85

428:                                              ; preds = %425
  store i1 false, ptr %3, align 1
  store i32 1, ptr %21, align 4
  br label %618

429:                                              ; preds = %413
  %430 = load ptr, ptr %12, align 8, !tbaa !5
  %431 = call double @strtod(ptr noundef %430, ptr noundef %12) #11
  %432 = load ptr, ptr %14, align 8, !tbaa !5
  %433 = load i32, ptr %20, align 4, !tbaa !9
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds double, ptr %432, i64 %434
  store double %431, ptr %435, align 8, !tbaa !16
  br label %436

436:                                              ; preds = %429
  %437 = load i32, ptr %20, align 4, !tbaa !9
  %438 = add nsw i32 %437, 1
  store i32 %438, ptr %20, align 4, !tbaa !9
  br label %407, !llvm.loop !35

439:                                              ; preds = %407
  br label %440

440:                                              ; preds = %439, %397
  br label %441

441:                                              ; preds = %440, %396
  br label %442

442:                                              ; preds = %441, %389
  br label %370, !llvm.loop !36

443:                                              ; preds = %374
  %444 = load ptr, ptr %7, align 8, !tbaa !5
  %445 = invoke i32 @fclose(ptr noundef %444)
          to label %446 unwind label %85

446:                                              ; preds = %443
  %447 = load ptr, ptr %8, align 8, !tbaa !5
  %448 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %447, i32 0, i32 6
  %449 = load i64, ptr %448, align 8, !tbaa !37
  %450 = trunc i64 %449 to i32
  store i32 %450, ptr %16, align 4, !tbaa !9
  %451 = load i32, ptr %16, align 4, !tbaa !9
  %452 = icmp eq i32 %451, 0
  br i1 %452, label %457, label %453

453:                                              ; preds = %446
  %454 = load i32, ptr %16, align 4, !tbaa !9
  %455 = srem i32 %454, 3
  %456 = icmp ne i32 %455, 0
  br i1 %456, label %457, label %465

457:                                              ; preds = %453, %446
  %458 = getelementptr inbounds [1024 x i8], ptr %6, i64 0, i64 0
  %459 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.94, ptr noundef %458)
          to label %460 unwind label %85

460:                                              ; preds = %457
  %461 = load ptr, ptr %8, align 8, !tbaa !5
  %462 = icmp eq ptr %461, null
  br i1 %462, label %464, label %463

463:                                              ; preds = %460
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %461) #11
  call void @_ZdlPvm(ptr noundef %461, i64 noundef 48) #14
  br label %464

464:                                              ; preds = %463, %460
  store i1 false, ptr %3, align 1
  store i32 1, ptr %21, align 4
  br label %618

465:                                              ; preds = %453
  %466 = load i32, ptr %16, align 4, !tbaa !9
  %467 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 9
  store i32 %466, ptr %467, align 8, !tbaa !21
  %468 = load i32, ptr %16, align 4, !tbaa !9
  %469 = mul nsw i32 %468, 3
  %470 = sext i32 %469 to i64
  %471 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %470, i64 8)
  %472 = extractvalue { i64, i1 } %471, 1
  %473 = extractvalue { i64, i1 } %471, 0
  %474 = select i1 %472, i64 -1, i64 %473
  %475 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %474) #13
          to label %476 unwind label %85

476:                                              ; preds = %465
  %477 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 3
  store ptr %475, ptr %477, align 8, !tbaa !23
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %478

478:                                              ; preds = %533, %476
  %479 = load i32, ptr %20, align 4, !tbaa !9
  %480 = load i32, ptr %16, align 4, !tbaa !9
  %481 = icmp slt i32 %479, %480
  br i1 %481, label %482, label %536

482:                                              ; preds = %478
  %483 = load ptr, ptr %8, align 8, !tbaa !5
  %484 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %483, i32 0, i32 5
  %485 = load ptr, ptr %484, align 8, !tbaa !40
  %486 = load i32, ptr %20, align 4, !tbaa !9
  %487 = load ptr, ptr %8, align 8, !tbaa !5
  %488 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %487, i32 0, i32 2
  %489 = load i32, ptr %488, align 8, !tbaa !41
  %490 = ashr i32 %486, %489
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds ptr, ptr %485, i64 %491
  %493 = load ptr, ptr %492, align 8, !tbaa !5
  %494 = load i32, ptr %20, align 4, !tbaa !9
  %495 = load ptr, ptr %8, align 8, !tbaa !5
  %496 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %495, i32 0, i32 3
  %497 = load i32, ptr %496, align 4, !tbaa !42
  %498 = and i32 %494, %497
  %499 = load ptr, ptr %8, align 8, !tbaa !5
  %500 = getelementptr inbounds %"class.tetgenmesh::arraypool", ptr %499, i32 0, i32 0
  %501 = load i32, ptr %500, align 8, !tbaa !43
  %502 = mul nsw i32 %498, %501
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds i8, ptr %493, i64 %503
  store ptr %504, ptr %14, align 8, !tbaa !5
  %505 = load i32, ptr %20, align 4, !tbaa !9
  %506 = mul nsw i32 %505, 3
  store i32 %506, ptr %17, align 4, !tbaa !9
  %507 = load ptr, ptr %14, align 8, !tbaa !5
  %508 = getelementptr inbounds double, ptr %507, i64 0
  %509 = load double, ptr %508, align 8, !tbaa !16
  %510 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 3
  %511 = load ptr, ptr %510, align 8, !tbaa !23
  %512 = load i32, ptr %17, align 4, !tbaa !9
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds double, ptr %511, i64 %513
  store double %509, ptr %514, align 8, !tbaa !16
  %515 = load ptr, ptr %14, align 8, !tbaa !5
  %516 = getelementptr inbounds double, ptr %515, i64 1
  %517 = load double, ptr %516, align 8, !tbaa !16
  %518 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 3
  %519 = load ptr, ptr %518, align 8, !tbaa !23
  %520 = load i32, ptr %17, align 4, !tbaa !9
  %521 = add nsw i32 %520, 1
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds double, ptr %519, i64 %522
  store double %517, ptr %523, align 8, !tbaa !16
  %524 = load ptr, ptr %14, align 8, !tbaa !5
  %525 = getelementptr inbounds double, ptr %524, i64 2
  %526 = load double, ptr %525, align 8, !tbaa !16
  %527 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 3
  %528 = load ptr, ptr %527, align 8, !tbaa !23
  %529 = load i32, ptr %17, align 4, !tbaa !9
  %530 = add nsw i32 %529, 2
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds double, ptr %528, i64 %531
  store double %526, ptr %532, align 8, !tbaa !16
  br label %533

533:                                              ; preds = %482
  %534 = load i32, ptr %20, align 4, !tbaa !9
  %535 = add nsw i32 %534, 1
  store i32 %535, ptr %20, align 4, !tbaa !9
  br label %478, !llvm.loop !44

536:                                              ; preds = %478
  %537 = load i32, ptr %16, align 4, !tbaa !9
  %538 = sdiv i32 %537, 3
  store i32 %538, ptr %18, align 4, !tbaa !9
  %539 = load i32, ptr %18, align 4, !tbaa !9
  %540 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 23
  store i32 %539, ptr %540, align 8, !tbaa !25
  %541 = load i32, ptr %18, align 4, !tbaa !9
  %542 = sext i32 %541 to i64
  %543 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %542, i64 32)
  %544 = extractvalue { i64, i1 } %543, 1
  %545 = extractvalue { i64, i1 } %543, 0
  %546 = select i1 %544, i64 -1, i64 %545
  %547 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %546) #13
          to label %548 unwind label %85

548:                                              ; preds = %536
  %549 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 21
  store ptr %547, ptr %549, align 8, !tbaa !26
  %550 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 0
  store i32 1, ptr %550, align 8, !tbaa !27
  %551 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 0
  %552 = load i32, ptr %551, align 8, !tbaa !27
  store i32 %552, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %553

553:                                              ; preds = %610, %548
  %554 = load i32, ptr %20, align 4, !tbaa !9
  %555 = load i32, ptr %18, align 4, !tbaa !9
  %556 = icmp slt i32 %554, %555
  br i1 %556, label %557, label %613

557:                                              ; preds = %553
  %558 = getelementptr inbounds %class.tetgenio, ptr %36, i32 0, i32 21
  %559 = load ptr, ptr %558, align 8, !tbaa !26
  %560 = load i32, ptr %20, align 4, !tbaa !9
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds %"struct.tetgenio::facet", ptr %559, i64 %561
  store ptr %562, ptr %9, align 8, !tbaa !5
  %563 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN8tetgenio4initEPNS_5facetE(ptr noundef %563)
          to label %564 unwind label %85

564:                                              ; preds = %557
  %565 = load ptr, ptr %9, align 8, !tbaa !5
  %566 = getelementptr inbounds %"struct.tetgenio::facet", ptr %565, i32 0, i32 1
  store i32 1, ptr %566, align 8, !tbaa !28
  %567 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef 16) #13
          to label %568 unwind label %85

568:                                              ; preds = %564
  %569 = load ptr, ptr %9, align 8, !tbaa !5
  %570 = getelementptr inbounds %"struct.tetgenio::facet", ptr %569, i32 0, i32 0
  store ptr %567, ptr %570, align 8, !tbaa !30
  %571 = load ptr, ptr %9, align 8, !tbaa !5
  %572 = getelementptr inbounds %"struct.tetgenio::facet", ptr %571, i32 0, i32 0
  %573 = load ptr, ptr %572, align 8, !tbaa !30
  %574 = getelementptr inbounds %"struct.tetgenio::polygon", ptr %573, i64 0
  store ptr %574, ptr %10, align 8, !tbaa !5
  %575 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN8tetgenio4initEPNS_7polygonE(ptr noundef %575)
          to label %576 unwind label %85

576:                                              ; preds = %568
  %577 = load ptr, ptr %10, align 8, !tbaa !5
  %578 = getelementptr inbounds %"struct.tetgenio::polygon", ptr %577, i32 0, i32 1
  store i32 3, ptr %578, align 8, !tbaa !31
  %579 = load ptr, ptr %10, align 8, !tbaa !5
  %580 = getelementptr inbounds %"struct.tetgenio::polygon", ptr %579, i32 0, i32 1
  %581 = load i32, ptr %580, align 8, !tbaa !31
  %582 = sext i32 %581 to i64
  %583 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %582, i64 4)
  %584 = extractvalue { i64, i1 } %583, 1
  %585 = extractvalue { i64, i1 } %583, 0
  %586 = select i1 %584, i64 -1, i64 %585
  %587 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %586) #13
          to label %588 unwind label %85

588:                                              ; preds = %576
  %589 = load ptr, ptr %10, align 8, !tbaa !5
  %590 = getelementptr inbounds %"struct.tetgenio::polygon", ptr %589, i32 0, i32 0
  store ptr %587, ptr %590, align 8, !tbaa !33
  %591 = load i32, ptr %17, align 4, !tbaa !9
  %592 = load ptr, ptr %10, align 8, !tbaa !5
  %593 = getelementptr inbounds %"struct.tetgenio::polygon", ptr %592, i32 0, i32 0
  %594 = load ptr, ptr %593, align 8, !tbaa !33
  %595 = getelementptr inbounds i32, ptr %594, i64 0
  store i32 %591, ptr %595, align 4, !tbaa !9
  %596 = load i32, ptr %17, align 4, !tbaa !9
  %597 = add nsw i32 %596, 1
  %598 = load ptr, ptr %10, align 8, !tbaa !5
  %599 = getelementptr inbounds %"struct.tetgenio::polygon", ptr %598, i32 0, i32 0
  %600 = load ptr, ptr %599, align 8, !tbaa !33
  %601 = getelementptr inbounds i32, ptr %600, i64 1
  store i32 %597, ptr %601, align 4, !tbaa !9
  %602 = load i32, ptr %17, align 4, !tbaa !9
  %603 = add nsw i32 %602, 2
  %604 = load ptr, ptr %10, align 8, !tbaa !5
  %605 = getelementptr inbounds %"struct.tetgenio::polygon", ptr %604, i32 0, i32 0
  %606 = load ptr, ptr %605, align 8, !tbaa !33
  %607 = getelementptr inbounds i32, ptr %606, i64 2
  store i32 %603, ptr %607, align 4, !tbaa !9
  %608 = load i32, ptr %17, align 4, !tbaa !9
  %609 = add nsw i32 %608, 3
  store i32 %609, ptr %17, align 4, !tbaa !9
  br label %610

610:                                              ; preds = %588
  %611 = load i32, ptr %20, align 4, !tbaa !9
  %612 = add nsw i32 %611, 1
  store i32 %612, ptr %20, align 4, !tbaa !9
  br label %553, !llvm.loop !45

613:                                              ; preds = %553
  %614 = load ptr, ptr %8, align 8, !tbaa !5
  %615 = icmp eq ptr %614, null
  br i1 %615, label %617, label %616

616:                                              ; preds = %613
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %614) #11
  call void @_ZdlPvm(ptr noundef %614, i64 noundef 48) #14
  br label %617

617:                                              ; preds = %616, %613
  store i1 true, ptr %3, align 1
  store i32 1, ptr %21, align 4
  br label %618

618:                                              ; preds = %617, %464, %428, %362, %351, %84
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #11
  br label %620

619:                                              ; preds = %385, %353, %85
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #11
  br label %621

620:                                              ; preds = %618, %70
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #11
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %22) #11
  call void @llvm.lifetime.end.p0(i64 520, ptr %22) #11
  br label %622

621:                                              ; preds = %619, %71
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #11
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %22) #11
  call void @llvm.lifetime.end.p0(i64 520, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 2048, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #11
  call void @llvm.lifetime.end.p0(i64 1024, ptr %6) #11
  br label %624

622:                                              ; preds = %620, %45
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 2048, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #11
  call void @llvm.lifetime.end.p0(i64 1024, ptr %6) #11
  %623 = load i1, ptr %3, align 1
  ret i1 %623

624:                                              ; preds = %621
  %625 = load ptr, ptr %24, align 8
  %626 = load i32, ptr %25, align 4
  %627 = insertvalue { ptr, i32 } poison, ptr %625, 0
  %628 = insertvalue { ptr, i32 } %627, i32 %626, 1
  resume { ptr, i32 } %628
}

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(256)) unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv(ptr noundef nonnull align 8 dereferenceable(264)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #8

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #8

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EES4_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) #4

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(256)) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZStorSt13_Ios_OpenmodeS_(i32 noundef, i32 noundef) #9

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(256), ptr noundef, i32 noundef) unnamed_addr #7 align 2

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i64 noundef) #4

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256)) unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

declare void @_ZN10tetgenmesh9arraypoolC1Eii(ptr, i32, i32)

declare void @_ZN10tetgenmesh9arraypoolD1Ev(ptr)

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"vtable pointer", !8, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"float", !7, i64 0}
!16 = !{!17, !17, i64 0}
!17 = !{!"double", !7, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = distinct !{!20, !19}
!21 = !{!22, !10, i64 64}
!22 = !{!"_ZTS8tetgenio", !10, i64 0, !10, i64 4, !10, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !10, i64 64, !10, i64 68, !10, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !10, i64 128, !10, i64 132, !10, i64 136, !6, i64 144, !6, i64 152, !10, i64 160, !6, i64 168, !10, i64 176, !6, i64 184, !10, i64 192, !6, i64 200, !10, i64 208, !6, i64 216, !10, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !10, i64 272, !6, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !10, i64 312, !6, i64 320, !6, i64 328, !6, i64 336, !6, i64 344, !10, i64 352, !10, i64 356, !10, i64 360, !10, i64 364, !6, i64 368, !6, i64 376, !6, i64 384, !6, i64 392, !6, i64 400, !6, i64 408, !6, i64 416}
!23 = !{!22, !6, i64 16}
!24 = distinct !{!24, !19}
!25 = !{!22, !10, i64 160}
!26 = !{!22, !6, i64 144}
!27 = !{!22, !10, i64 0}
!28 = !{!29, !10, i64 8}
!29 = !{!"_ZTSN8tetgenio5facetE", !6, i64 0, !10, i64 8, !6, i64 16, !10, i64 24}
!30 = !{!29, !6, i64 0}
!31 = !{!32, !10, i64 8}
!32 = !{!"_ZTSN8tetgenio7polygonE", !6, i64 0, !10, i64 8}
!33 = !{!32, !6, i64 0}
!34 = distinct !{!34, !19}
!35 = distinct !{!35, !19}
!36 = distinct !{!36, !19}
!37 = !{!38, !39, i64 32}
!38 = !{!"_ZTSN10tetgenmesh9arraypoolE", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !6, i64 24, !39, i64 32, !39, i64 40}
!39 = !{!"long", !7, i64 0}
!40 = !{!38, !6, i64 24}
!41 = !{!38, !10, i64 8}
!42 = !{!38, !10, i64 12}
!43 = !{!38, !10, i64 0}
!44 = distinct !{!44, !19}
!45 = distinct !{!45, !19}


; 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.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::basic_ifstream" = type { %"class.std::basic_istream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon }
%union.anon = type { i32 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.3 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.3 = type { i64, [8 x i8] }
%"struct.tetgenio::facet" = type { ptr, i32, ptr, i32 }

@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [5 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.91 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [47 x i8], align 1

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn
declare double @strtod(ptr noundef readonly, ptr nocapture noundef) local_unnamed_addr #4

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite)
declare ptr @strcat(ptr noalias noundef returned, ptr noalias nocapture noundef readonly) local_unnamed_addr #5

; Function Attrs: nofree nounwind
declare noalias noundef ptr @fopen(ptr nocapture noundef readonly, ptr nocapture noundef readonly) local_unnamed_addr #3

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare noundef ptr @strstr(ptr noundef, ptr nocapture noundef) local_unnamed_addr #6

; Function Attrs: nofree nounwind
declare noundef i32 @fclose(ptr nocapture noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8tetgenio4initEPNS_5facetE(ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8tetgenio4initEPNS_7polygonE(ptr noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite)
declare ptr @strncpy(ptr noalias noundef returned writeonly, ptr noalias nocapture noundef readonly, i64 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #6

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #6

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN8tetgenio8load_stlEPc(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr nocapture noundef readonly %1) local_unnamed_addr #7 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca [1024 x i8], align 16
  %4 = alloca [2048 x i8], align 16
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::basic_ifstream", align 8
  %9 = alloca %"class.std::vector", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca [80 x i8], align 16
  %12 = alloca %"class.std::basic_ifstream", align 8
  %13 = alloca i32, align 4
  %14 = alloca [12 x float], align 16
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %3) #12
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %4) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #12
  store i32 0, ptr %7, align 4, !tbaa !5
  %18 = call ptr @strncpy(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) %1, i64 noundef 1023) #12
  %19 = getelementptr inbounds i8, ptr %3, i64 1023
  store i8 0, ptr %19, align 1, !tbaa !9
  %20 = load i8, ptr %3, align 16, !tbaa !9
  %21 = icmp eq i8 %20, 0
  br i1 %21, label %22, label %24

22:                                               ; preds = %2
  %23 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.55)
  br label %308

24:                                               ; preds = %2
  %25 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %3) #13
  %26 = add i64 %25, -4
  %27 = getelementptr inbounds [1024 x i8], ptr %3, i64 0, i64 %26
  %28 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %27, ptr noundef nonnull dereferenceable(1) @.str.90) #13
  %.not = icmp eq i32 %28, 0
  br i1 %.not, label %31, label %29

29:                                               ; preds = %24
  %30 = call ptr @strcat(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) @.str.90) #12
  br label %31

31:                                               ; preds = %29, %24
  call void @llvm.lifetime.start.p0(i64 520, ptr nonnull %8) #12
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(256) %8)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #12
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  invoke void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(256) %8, ptr noundef nonnull %3, i32 noundef 8)
          to label %32 unwind label %43

32:                                               ; preds = %31
  %33 = load ptr, ptr %8, align 8, !tbaa !10
  %34 = getelementptr i8, ptr %33, i64 -24
  %35 = load i64, ptr %34, align 8
  %36 = getelementptr inbounds i8, ptr %8, i64 %35
  %37 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv(ptr noundef nonnull align 8 dereferenceable(264) %36)
          to label %38 unwind label %43

38:                                               ; preds = %32
  br i1 %37, label %39, label %45

39:                                               ; preds = %38
  %40 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.91)
          to label %41 unwind label %43

41:                                               ; preds = %39
  %42 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %306 unwind label %43

43:                                               ; preds = %41, %39, %32, %31
  %44 = landingpad { ptr, i32 }
          cleanup
  br label %307

45:                                               ; preds = %38
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #12
  %46 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EES4_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(32) %10, i8 noundef signext 32)
          to label %47 unwind label %.loopexit.split-lp.loopexit.split-lp

47:                                               ; preds = %45
  invoke void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(256) %8)
          to label %48 unwind label %.loopexit.split-lp.loopexit.split-lp

48:                                               ; preds = %47
  %49 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %10) #12
  br i1 %49, label %50, label %54

50:                                               ; preds = %48
  %51 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.92)
          to label %52 unwind label %.loopexit.split-lp.loopexit.split-lp

52:                                               ; preds = %50
  %53 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %305 unwind label %.loopexit.split-lp.loopexit.split-lp

.loopexit:                                        ; preds = %.lr.ph176, %296
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit:                      ; preds = %.preheader
  %lpad.loopexit148 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp:             ; preds = %._crit_edge172, %250, %197, %59, %57, %52, %50, %47, %45
  %lpad.loopexit.split-lp149 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

54:                                               ; preds = %48
  %55 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %10, i64 noundef 0)
  %56 = load i8, ptr %55, align 1, !tbaa !9
  %.not126 = icmp eq i8 %56, 115
  br i1 %.not126, label %193, label %57

57:                                               ; preds = %54
  %58 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.93)
          to label %59 unwind label %.loopexit.split-lp.loopexit.split-lp

59:                                               ; preds = %57
  %60 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %61 unwind label %.loopexit.split-lp.loopexit.split-lp

61:                                               ; preds = %59
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %11) #12
  call void @llvm.lifetime.start.p0(i64 520, ptr nonnull %12) #12
  %62 = call noundef i32 @_ZStorSt13_Ios_OpenmodeS_(i32 noundef 8, i32 noundef 4)
  invoke void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(256) %12, ptr noundef nonnull %3, i32 noundef %62)
          to label %63 unwind label %74

63:                                               ; preds = %61
  %64 = load ptr, ptr %12, align 8, !tbaa !10
  %65 = getelementptr i8, ptr %64, i64 -24
  %66 = load i64, ptr %65, align 8
  %67 = getelementptr inbounds i8, ptr %12, i64 %66
  %68 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv(ptr noundef nonnull align 8 dereferenceable(264) %67)
          to label %69 unwind label %76

69:                                               ; preds = %63
  br i1 %68, label %70, label %78

70:                                               ; preds = %69
  %71 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.91)
          to label %72 unwind label %76

72:                                               ; preds = %70
  %73 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %190 unwind label %76

74:                                               ; preds = %61
  %75 = landingpad { ptr, i32 }
          cleanup
  br label %192

76:                                               ; preds = %78, %72, %70, %63
  %77 = landingpad { ptr, i32 }
          cleanup
  br label %191

78:                                               ; preds = %69
  %79 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull %11, i64 noundef 80)
          to label %80 unwind label %76

80:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #12
  %81 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull %13, i64 noundef 4)
          to label %82 unwind label %.loopexit.split-lp153

82:                                               ; preds = %80
  %83 = load i32, ptr %13, align 4, !tbaa !5
  %84 = icmp eq i32 %83, 0
  br i1 %84, label %.loopexit151, label %.preheader157

.preheader157:                                    ; preds = %82
  %85 = icmp sgt i32 %83, 0
  br i1 %85, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.preheader157
  %86 = getelementptr inbounds i8, ptr %14, i64 12
  %87 = getelementptr inbounds i8, ptr %14, i64 16
  %88 = getelementptr inbounds i8, ptr %14, i64 20
  %89 = getelementptr inbounds i8, ptr %14, i64 24
  %90 = getelementptr inbounds i8, ptr %14, i64 28
  %91 = getelementptr inbounds i8, ptr %14, i64 32
  %92 = getelementptr inbounds i8, ptr %14, i64 36
  %93 = getelementptr inbounds i8, ptr %14, i64 40
  %94 = getelementptr inbounds i8, ptr %14, i64 44
  br label %.lr.ph

.loopexit152:                                     ; preds = %.lr.ph167, %180
  %lpad.loopexit154 = landingpad { ptr, i32 }
          cleanup
  br label %189

.loopexit.split-lp153:                            ; preds = %80, %._crit_edge, %144, %._crit_edge163
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %189

._crit_edge:                                      ; preds = %130, %.preheader157
  invoke void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(256) %12)
          to label %135 unwind label %.loopexit.split-lp153

.lr.ph:                                           ; preds = %.lr.ph.preheader, %130
  %.099159 = phi i32 [ %131, %130 ], [ 0, %.lr.ph.preheader ]
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %14) #12
  %95 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull %14, i64 noundef 48)
          to label %.preheader156.preheader unwind label %98

.preheader156.preheader:                          ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #12
  %96 = load float, ptr %86, align 4, !tbaa !12
  %97 = fpext float %96 to double
  store double %97, ptr %15, align 8, !tbaa !14
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %100 unwind label %124

98:                                               ; preds = %122, %.lr.ph
  %99 = landingpad { ptr, i32 }
          cleanup
  br label %134

100:                                              ; preds = %.preheader156.preheader
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #12
  %101 = load float, ptr %87, align 16, !tbaa !12
  %102 = fpext float %101 to double
  store double %102, ptr %16, align 8, !tbaa !14
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %103 unwind label %126

103:                                              ; preds = %100
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #12
  %104 = load float, ptr %88, align 4, !tbaa !12
  %105 = fpext float %104 to double
  store double %105, ptr %17, align 8, !tbaa !14
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %.preheader156.1 unwind label %128

.preheader156.1:                                  ; preds = %103
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #12
  %106 = load float, ptr %89, align 8, !tbaa !12
  %107 = fpext float %106 to double
  store double %107, ptr %15, align 8, !tbaa !14
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %108 unwind label %124

108:                                              ; preds = %.preheader156.1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #12
  %109 = load float, ptr %90, align 4, !tbaa !12
  %110 = fpext float %109 to double
  store double %110, ptr %16, align 8, !tbaa !14
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %111 unwind label %126

111:                                              ; preds = %108
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #12
  %112 = load float, ptr %91, align 16, !tbaa !12
  %113 = fpext float %112 to double
  store double %113, ptr %17, align 8, !tbaa !14
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %.preheader156.2 unwind label %128

.preheader156.2:                                  ; preds = %111
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #12
  %114 = load float, ptr %92, align 4, !tbaa !12
  %115 = fpext float %114 to double
  store double %115, ptr %15, align 8, !tbaa !14
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %116 unwind label %124

116:                                              ; preds = %.preheader156.2
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #12
  %117 = load float, ptr %93, align 8, !tbaa !12
  %118 = fpext float %117 to double
  store double %118, ptr %16, align 8, !tbaa !14
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %119 unwind label %126

119:                                              ; preds = %116
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #12
  %120 = load float, ptr %94, align 4, !tbaa !12
  %121 = fpext float %120 to double
  store double %121, ptr %17, align 8, !tbaa !14
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %122 unwind label %128

122:                                              ; preds = %119
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #12
  %123 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull %14, i64 noundef 2)
          to label %130 unwind label %98

124:                                              ; preds = %.preheader156.2, %.preheader156.1, %.preheader156.preheader
  %125 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #12
  br label %134

126:                                              ; preds = %116, %108, %100
  %127 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #12
  br label %134

128:                                              ; preds = %119, %111, %103
  %129 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #12
  br label %134

130:                                              ; preds = %122
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) #12
  %131 = add nuw nsw i32 %.099159, 1
  %132 = load i32, ptr %13, align 4, !tbaa !5
  %133 = icmp slt i32 %131, %132
  br i1 %133, label %.lr.ph, label %._crit_edge, !llvm.loop !16

134:                                              ; preds = %124, %126, %128, %98
  %.pn.pn = phi { ptr, i32 } [ %99, %98 ], [ %129, %128 ], [ %127, %126 ], [ %125, %124 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) #12
  br label %189

135:                                              ; preds = %._crit_edge
  %136 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  %137 = udiv i64 %136, 3
  %138 = trunc i64 %137 to i32
  %139 = icmp ne i32 %138, 0
  %140 = srem i32 %138, 3
  %141 = sdiv i32 %138, 3
  %.not133 = icmp eq i32 %140, 0
  %or.cond = and i1 %139, %.not133
  br i1 %or.cond, label %144, label %142

142:                                              ; preds = %135
  %143 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.94, ptr noundef nonnull %3)
  br label %.loopexit151

144:                                              ; preds = %135
  %145 = getelementptr inbounds i8, ptr %0, i64 64
  store i32 %138, ptr %145, align 8, !tbaa !18
  %sext134 = mul i64 %137, 12884901888
  %146 = lshr exact i64 %sext134, 29
  %.inv135 = icmp sgt i64 %sext134, -1
  %147 = select i1 %.inv135, i64 %146, i64 -1
  %148 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %147) #14
          to label %149 unwind label %.loopexit.split-lp153

149:                                              ; preds = %144
  %150 = getelementptr inbounds i8, ptr %0, i64 16
  store ptr %148, ptr %150, align 8, !tbaa !21
  %151 = icmp sgt i32 %138, 0
  br i1 %151, label %.lr.ph162.preheader, label %._crit_edge163

.lr.ph162.preheader:                              ; preds = %149
  %wide.trip.count = and i64 %137, 2147483647
  br label %.lr.ph162

.lr.ph162:                                        ; preds = %.lr.ph162.preheader, %.lr.ph162
  %indvars.iv = phi i64 [ 0, %.lr.ph162.preheader ], [ %indvars.iv.next, %.lr.ph162 ]
  %152 = mul nuw nsw i64 %indvars.iv, 3
  %153 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %152) #12
  %154 = load double, ptr %153, align 8, !tbaa !14
  %155 = load ptr, ptr %150, align 8, !tbaa !21
  %156 = getelementptr inbounds double, ptr %155, i64 %152
  store double %154, ptr %156, align 8, !tbaa !14
  %157 = add nuw nsw i64 %152, 1
  %158 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %157) #12
  %159 = load double, ptr %158, align 8, !tbaa !14
  %160 = load ptr, ptr %150, align 8, !tbaa !21
  %161 = getelementptr inbounds double, ptr %160, i64 %157
  store double %159, ptr %161, align 8, !tbaa !14
  %162 = add nuw nsw i64 %152, 2
  %163 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %162) #12
  %164 = load double, ptr %163, align 8, !tbaa !14
  %165 = load ptr, ptr %150, align 8, !tbaa !21
  %166 = getelementptr inbounds double, ptr %165, i64 %162
  store double %164, ptr %166, align 8, !tbaa !14
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge163, label %.lr.ph162, !llvm.loop !22

._crit_edge163:                                   ; preds = %.lr.ph162, %149
  %167 = getelementptr inbounds i8, ptr %0, i64 160
  store i32 %141, ptr %167, align 8, !tbaa !23
  %168 = sext i32 %141 to i64
  %169 = icmp slt i32 %138, -2
  %170 = shl nsw i64 %168, 5
  %171 = select i1 %169, i64 -1, i64 %170
  %172 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %171) #14
          to label %173 unwind label %.loopexit.split-lp153

173:                                              ; preds = %._crit_edge163
  %174 = getelementptr inbounds i8, ptr %0, i64 144
  store ptr %172, ptr %174, align 8, !tbaa !24
  store i32 1, ptr %0, align 8, !tbaa !25
  %175 = icmp sgt i32 %138, 2
  br i1 %175, label %.lr.ph167.preheader, label %.loopexit151

.lr.ph167.preheader:                              ; preds = %173
  %wide.trip.count183 = zext nneg i32 %141 to i64
  br label %.lr.ph167

.lr.ph167:                                        ; preds = %.lr.ph167.preheader, %183
  %indvars.iv180 = phi i64 [ 0, %.lr.ph167.preheader ], [ %indvars.iv.next181, %183 ]
  %.0113164 = phi i32 [ 1, %.lr.ph167.preheader ], [ %188, %183 ]
  %176 = load ptr, ptr %174, align 8, !tbaa !24
  %177 = getelementptr inbounds %"struct.tetgenio::facet", ptr %176, i64 %indvars.iv180
  call void @_ZN8tetgenio4initEPNS_5facetE(ptr noundef %177)
  %178 = getelementptr inbounds i8, ptr %177, i64 8
  store i32 1, ptr %178, align 8, !tbaa !26
  %179 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znam(i64 noundef 16) #14
          to label %180 unwind label %.loopexit152

180:                                              ; preds = %.lr.ph167
  store ptr %179, ptr %177, align 8, !tbaa !28
  call void @_ZN8tetgenio4initEPNS_7polygonE(ptr noundef nonnull %179)
  %181 = getelementptr inbounds i8, ptr %179, i64 8
  store i32 3, ptr %181, align 8, !tbaa !29
  %182 = invoke noalias noundef nonnull dereferenceable(12) ptr @_Znam(i64 noundef 12) #14
          to label %183 unwind label %.loopexit152

183:                                              ; preds = %180
  store ptr %182, ptr %179, align 8, !tbaa !31
  store i32 %.0113164, ptr %182, align 4, !tbaa !5
  %184 = add nuw nsw i32 %.0113164, 1
  %185 = getelementptr inbounds i8, ptr %182, i64 4
  store i32 %184, ptr %185, align 4, !tbaa !5
  %186 = add nuw nsw i32 %.0113164, 2
  %187 = getelementptr inbounds i8, ptr %182, i64 8
  store i32 %186, ptr %187, align 4, !tbaa !5
  %188 = add nuw nsw i32 %.0113164, 3
  %indvars.iv.next181 = add nuw nsw i64 %indvars.iv180, 1
  %exitcond184.not = icmp eq i64 %indvars.iv.next181, %wide.trip.count183
  br i1 %exitcond184.not, label %.loopexit151, label %.lr.ph167, !llvm.loop !32

.loopexit151:                                     ; preds = %183, %173, %82, %142
  %.0117 = phi i1 [ false, %142 ], [ false, %82 ], [ true, %173 ], [ true, %183 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #12
  br label %190

189:                                              ; preds = %.loopexit152, %.loopexit.split-lp153, %134
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %134 ], [ %lpad.loopexit154, %.loopexit152 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp153 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #12
  br label %191

190:                                              ; preds = %72, %.loopexit151
  %.1118 = phi i1 [ %.0117, %.loopexit151 ], [ false, %72 ]
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %12) #12
  call void @llvm.lifetime.end.p0(i64 520, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %11) #12
  br label %305

191:                                              ; preds = %189, %76
  %.pn139 = phi { ptr, i32 } [ %77, %76 ], [ %.pn.pn.pn, %189 ]
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %12) #12
  br label %192

192:                                              ; preds = %191, %74
  %.pn139.pn = phi { ptr, i32 } [ %.pn139, %191 ], [ %75, %74 ]
  call void @llvm.lifetime.end.p0(i64 520, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %11) #12
  br label %.loopexit.split-lp

193:                                              ; preds = %54
  %194 = call noalias ptr @fopen(ptr noundef nonnull %3, ptr noundef nonnull @.str.9)
  %.not127 = icmp eq ptr %194, null
  br i1 %.not127, label %195, label %197

195:                                              ; preds = %193
  %196 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.68, ptr noundef nonnull %3)
  br label %305

197:                                              ; preds = %193
  %198 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.11, ptr noundef nonnull %3)
  %199 = invoke noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #14
          to label %200 unwind label %.loopexit.split-lp.loopexit.split-lp

200:                                              ; preds = %197
  invoke void @_ZN10tetgenmesh9arraypoolC1Eii(ptr noundef nonnull align 8 dereferenceable(48) %199, i32 noundef 24, i32 noundef 10)
          to label %.preheader unwind label %207

.preheader:                                       ; preds = %200, %.preheader.backedge
  %.0115 = phi i32 [ %.0115.be, %.preheader.backedge ], [ 0, %200 ]
  %201 = invoke noundef ptr @_ZN8tetgenio8readlineEPcP8_IO_FILEPi(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull %4, ptr noundef nonnull %194, ptr noundef nonnull %7)
          to label %202 unwind label %.loopexit.split-lp.loopexit

202:                                              ; preds = %.preheader
  %.not128 = icmp eq ptr %201, null
  br i1 %.not128, label %240, label %203

203:                                              ; preds = %202
  %204 = icmp eq i32 %.0115, 0
  br i1 %204, label %205, label %209

205:                                              ; preds = %203
  %206 = call noundef ptr @strstr(ptr noundef nonnull dereferenceable(1) %201, ptr noundef nonnull dereferenceable(1) @.str.95) #13
  store ptr %206, ptr %5, align 8, !tbaa !33
  %.not132 = icmp ne ptr %206, null
  %spec.select = zext i1 %.not132 to i32
  br label %.preheader.backedge

207:                                              ; preds = %200
  %208 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %199, i64 noundef 48) #15
  br label %.loopexit.split-lp

209:                                              ; preds = %203
  %210 = call noundef ptr @strstr(ptr noundef nonnull dereferenceable(1) %201, ptr noundef nonnull dereferenceable(1) @.str.96) #13
  %.not130 = icmp eq ptr %210, null
  br i1 %.not130, label %211, label %.preheader.backedge

211:                                              ; preds = %209
  %212 = call noundef ptr @strstr(ptr noundef nonnull dereferenceable(1) %201, ptr noundef nonnull dereferenceable(1) @.str.75) #13
  store ptr %212, ptr %5, align 8, !tbaa !33
  %.not131 = icmp eq ptr %212, null
  br i1 %.not131, label %.preheader.backedge, label %213

213:                                              ; preds = %211
  %214 = call noundef i32 @_ZN10tetgenmesh9arraypool8newindexEPPv(ptr noundef nonnull align 8 dereferenceable(48) %199, ptr noundef nonnull %6)
  %215 = call noundef ptr @_ZN8tetgenio14findnextnumberEPc(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull %212)
  store ptr %215, ptr %5, align 8, !tbaa !33
  %216 = load i8, ptr %215, align 1, !tbaa !9
  %217 = icmp eq i8 %216, 0
  br i1 %217, label %218, label %222

218:                                              ; preds = %229, %222, %213
  %219 = load i32, ptr %7, align 4, !tbaa !5
  %220 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.97, i32 noundef %219)
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %199) #12
  call void @_ZdlPvm(ptr noundef nonnull %199, i64 noundef 48) #15
  %221 = call i32 @fclose(ptr noundef nonnull %194)
  br label %305

222:                                              ; preds = %213
  %223 = call double @strtod(ptr noundef nonnull %215, ptr noundef nonnull %5) #12
  %224 = load ptr, ptr %6, align 8, !tbaa !33
  store double %223, ptr %224, align 8, !tbaa !14
  %225 = load ptr, ptr %5, align 8, !tbaa !33
  %226 = call noundef ptr @_ZN8tetgenio14findnextnumberEPc(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef %225)
  store ptr %226, ptr %5, align 8, !tbaa !33
  %227 = load i8, ptr %226, align 1, !tbaa !9
  %228 = icmp eq i8 %227, 0
  br i1 %228, label %218, label %229

229:                                              ; preds = %222
  %230 = call double @strtod(ptr noundef nonnull %226, ptr noundef nonnull %5) #12
  %231 = load ptr, ptr %6, align 8, !tbaa !33
  %232 = getelementptr inbounds i8, ptr %231, i64 8
  store double %230, ptr %232, align 8, !tbaa !14
  %233 = load ptr, ptr %5, align 8, !tbaa !33
  %234 = call noundef ptr @_ZN8tetgenio14findnextnumberEPc(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef %233)
  store ptr %234, ptr %5, align 8, !tbaa !33
  %235 = load i8, ptr %234, align 1, !tbaa !9
  %236 = icmp eq i8 %235, 0
  br i1 %236, label %218, label %.loopexit147.loopexit

.loopexit147.loopexit:                            ; preds = %229
  %237 = call double @strtod(ptr noundef nonnull %234, ptr noundef nonnull %5) #12
  %238 = load ptr, ptr %6, align 8, !tbaa !33
  %239 = getelementptr inbounds i8, ptr %238, i64 16
  store double %237, ptr %239, align 8, !tbaa !14
  br label %.preheader.backedge

.preheader.backedge:                              ; preds = %.loopexit147.loopexit, %205, %209, %211
  %.0115.be = phi i32 [ 1, %211 ], [ %spec.select, %205 ], [ 0, %209 ], [ 1, %.loopexit147.loopexit ]
  br label %.preheader, !llvm.loop !34

240:                                              ; preds = %202
  %241 = call i32 @fclose(ptr noundef nonnull %194)
  %242 = getelementptr inbounds i8, ptr %199, i64 32
  %243 = load i64, ptr %242, align 8, !tbaa !35
  %244 = trunc i64 %243 to i32
  %245 = icmp ne i32 %244, 0
  %246 = srem i32 %244, 3
  %247 = sdiv i32 %244, 3
  %.not129 = icmp eq i32 %246, 0
  %or.cond146 = and i1 %245, %.not129
  br i1 %or.cond146, label %250, label %248

248:                                              ; preds = %240
  %249 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.94, ptr noundef nonnull %3)
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %199) #12
  call void @_ZdlPvm(ptr noundef nonnull %199, i64 noundef 48) #15
  br label %305

250:                                              ; preds = %240
  %251 = getelementptr inbounds i8, ptr %0, i64 64
  store i32 %244, ptr %251, align 8, !tbaa !18
  %sext = mul i64 %243, 12884901888
  %252 = ashr exact i64 %sext, 29
  %.inv = icmp sgt i64 %sext, -1
  %253 = select i1 %.inv, i64 %252, i64 -1
  %254 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %253) #14
          to label %255 unwind label %.loopexit.split-lp.loopexit.split-lp

255:                                              ; preds = %250
  %256 = getelementptr inbounds i8, ptr %0, i64 16
  store ptr %254, ptr %256, align 8, !tbaa !21
  %257 = icmp sgt i32 %244, 0
  br i1 %257, label %.lr.ph171, label %._crit_edge172

.lr.ph171:                                        ; preds = %255
  %258 = getelementptr inbounds i8, ptr %199, i64 24
  %259 = load ptr, ptr %258, align 8, !tbaa !38
  %260 = getelementptr inbounds i8, ptr %199, i64 8
  %261 = load i32, ptr %260, align 8, !tbaa !39
  %262 = getelementptr inbounds i8, ptr %199, i64 12
  %263 = load i32, ptr %262, align 4, !tbaa !40
  %264 = load i32, ptr %199, align 8, !tbaa !41
  %wide.trip.count192 = and i64 %243, 2147483647
  br label %265

265:                                              ; preds = %.lr.ph171, %265
  %indvars.iv189 = phi i64 [ 0, %.lr.ph171 ], [ %indvars.iv.next190, %265 ]
  %266 = trunc nuw nsw i64 %indvars.iv189 to i32
  %267 = lshr i32 %266, %261
  %268 = zext nneg i32 %267 to i64
  %269 = getelementptr inbounds ptr, ptr %259, i64 %268
  %270 = load ptr, ptr %269, align 8, !tbaa !33
  %271 = and i32 %263, %266
  %272 = mul nsw i32 %271, %264
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds i8, ptr %270, i64 %273
  store ptr %274, ptr %6, align 8, !tbaa !33
  %275 = load double, ptr %274, align 8, !tbaa !14
  %.idx = mul i64 %indvars.iv189, 24
  %276 = getelementptr inbounds i8, ptr %254, i64 %.idx
  store double %275, ptr %276, align 8, !tbaa !14
  %277 = getelementptr inbounds i8, ptr %274, i64 8
  %278 = load double, ptr %277, align 8, !tbaa !14
  %279 = getelementptr inbounds i8, ptr %276, i64 8
  store double %278, ptr %279, align 8, !tbaa !14
  %280 = getelementptr inbounds i8, ptr %274, i64 16
  %281 = load double, ptr %280, align 8, !tbaa !14
  %282 = getelementptr inbounds i8, ptr %276, i64 16
  store double %281, ptr %282, align 8, !tbaa !14
  %indvars.iv.next190 = add nuw nsw i64 %indvars.iv189, 1
  %exitcond193.not = icmp eq i64 %indvars.iv.next190, %wide.trip.count192
  br i1 %exitcond193.not, label %._crit_edge172, label %265, !llvm.loop !42

._crit_edge172:                                   ; preds = %265, %255
  %283 = getelementptr inbounds i8, ptr %0, i64 160
  store i32 %247, ptr %283, align 8, !tbaa !23
  %284 = sext i32 %247 to i64
  %285 = icmp slt i32 %244, -2
  %286 = shl nsw i64 %284, 5
  %287 = select i1 %285, i64 -1, i64 %286
  %288 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %287) #14
          to label %289 unwind label %.loopexit.split-lp.loopexit.split-lp

289:                                              ; preds = %._crit_edge172
  %290 = getelementptr inbounds i8, ptr %0, i64 144
  store ptr %288, ptr %290, align 8, !tbaa !24
  store i32 1, ptr %0, align 8, !tbaa !25
  %291 = icmp sgt i32 %244, 2
  br i1 %291, label %.lr.ph176.preheader, label %._crit_edge177

.lr.ph176.preheader:                              ; preds = %289
  %wide.trip.count197 = zext nneg i32 %247 to i64
  br label %.lr.ph176

.lr.ph176:                                        ; preds = %.lr.ph176.preheader, %299
  %indvars.iv194 = phi i64 [ 0, %.lr.ph176.preheader ], [ %indvars.iv.next195, %299 ]
  %.1114173 = phi i32 [ 1, %.lr.ph176.preheader ], [ %304, %299 ]
  %292 = load ptr, ptr %290, align 8, !tbaa !24
  %293 = getelementptr inbounds %"struct.tetgenio::facet", ptr %292, i64 %indvars.iv194
  call void @_ZN8tetgenio4initEPNS_5facetE(ptr noundef %293)
  %294 = getelementptr inbounds i8, ptr %293, i64 8
  store i32 1, ptr %294, align 8, !tbaa !26
  %295 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znam(i64 noundef 16) #14
          to label %296 unwind label %.loopexit

296:                                              ; preds = %.lr.ph176
  store ptr %295, ptr %293, align 8, !tbaa !28
  call void @_ZN8tetgenio4initEPNS_7polygonE(ptr noundef nonnull %295)
  %297 = getelementptr inbounds i8, ptr %295, i64 8
  store i32 3, ptr %297, align 8, !tbaa !29
  %298 = invoke noalias noundef nonnull dereferenceable(12) ptr @_Znam(i64 noundef 12) #14
          to label %299 unwind label %.loopexit

299:                                              ; preds = %296
  store ptr %298, ptr %295, align 8, !tbaa !31
  store i32 %.1114173, ptr %298, align 4, !tbaa !5
  %300 = add nuw nsw i32 %.1114173, 1
  %301 = getelementptr inbounds i8, ptr %298, i64 4
  store i32 %300, ptr %301, align 4, !tbaa !5
  %302 = add nuw nsw i32 %.1114173, 2
  %303 = getelementptr inbounds i8, ptr %298, i64 8
  store i32 %302, ptr %303, align 4, !tbaa !5
  %304 = add nuw nsw i32 %.1114173, 3
  %indvars.iv.next195 = add nuw nsw i64 %indvars.iv194, 1
  %exitcond198.not = icmp eq i64 %indvars.iv.next195, %wide.trip.count197
  br i1 %exitcond198.not, label %._crit_edge177, label %.lr.ph176, !llvm.loop !43

._crit_edge177:                                   ; preds = %299, %289
  call void @_ZN10tetgenmesh9arraypoolD1Ev(ptr noundef nonnull align 8 dereferenceable(48) %199) #12
  call void @_ZdlPvm(ptr noundef nonnull %199, i64 noundef 48) #15
  br label %305

305:                                              ; preds = %52, %._crit_edge177, %248, %218, %195, %190
  %.2119 = phi i1 [ %.1118, %190 ], [ false, %218 ], [ false, %248 ], [ true, %._crit_edge177 ], [ false, %195 ], [ false, %52 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #12
  br label %306

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %207, %192
  %.pn142 = phi { ptr, i32 } [ %.pn139.pn, %192 ], [ %208, %207 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit148, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp149, %.loopexit.split-lp.loopexit.split-lp ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #12
  br label %307

306:                                              ; preds = %41, %305
  %.3120 = phi i1 [ %.2119, %305 ], [ false, %41 ]
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #12
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %8) #12
  call void @llvm.lifetime.end.p0(i64 520, ptr nonnull %8) #12
  br label %308

307:                                              ; preds = %.loopexit.split-lp, %43
  %.pn144 = phi { ptr, i32 } [ %44, %43 ], [ %.pn142, %.loopexit.split-lp ]
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #12
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %8) #12
  call void @llvm.lifetime.end.p0(i64 520, ptr nonnull %8) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #12
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %4) #12
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %3) #12
  resume { ptr, i32 } %.pn144

308:                                              ; preds = %306, %22
  %.4121 = phi i1 [ false, %22 ], [ %.3120, %306 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #12
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %4) #12
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %3) #12
  ret i1 %.4121
}

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(256)) unnamed_addr #7 align 2

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv(ptr noundef nonnull align 8 dereferenceable(264)) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #8

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #8

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EES4_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(256)) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZStorSt13_Ios_OpenmodeS_(i32 noundef, i32 noundef) local_unnamed_addr #10

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(256), ptr noundef, i32 noundef) unnamed_addr #7 align 2

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi4readEPcl(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i64 noundef) local_unnamed_addr #9

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256)) unnamed_addr #2 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

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

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

declare void @_ZN10tetgenmesh9arraypoolD1Ev(ptr) local_unnamed_addr

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"vtable pointer", !8, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"float", !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"double", !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = !{!19, !6, i64 64}
!19 = !{!"_ZTS8tetgenio", !6, i64 0, !6, i64 4, !6, i64 8, !20, i64 16, !20, i64 24, !20, i64 32, !20, i64 40, !20, i64 48, !20, i64 56, !6, i64 64, !6, i64 68, !6, i64 72, !20, i64 80, !20, i64 88, !20, i64 96, !20, i64 104, !20, i64 112, !20, i64 120, !6, i64 128, !6, i64 132, !6, i64 136, !20, i64 144, !20, i64 152, !6, i64 160, !20, i64 168, !6, i64 176, !20, i64 184, !6, i64 192, !20, i64 200, !6, i64 208, !20, i64 216, !6, i64 224, !20, i64 232, !20, i64 240, !20, i64 248, !20, i64 256, !20, i64 264, !6, i64 272, !20, i64 280, !20, i64 288, !20, i64 296, !20, i64 304, !6, i64 312, !20, i64 320, !20, i64 328, !20, i64 336, !20, i64 344, !6, i64 352, !6, i64 356, !6, i64 360, !6, i64 364, !20, i64 368, !20, i64 376, !20, i64 384, !20, i64 392, !20, i64 400, !20, i64 408, !20, i64 416}
!20 = !{!"any pointer", !7, i64 0}
!21 = !{!19, !20, i64 16}
!22 = distinct !{!22, !17}
!23 = !{!19, !6, i64 160}
!24 = !{!19, !20, i64 144}
!25 = !{!19, !6, i64 0}
!26 = !{!27, !6, i64 8}
!27 = !{!"_ZTSN8tetgenio5facetE", !20, i64 0, !6, i64 8, !20, i64 16, !6, i64 24}
!28 = !{!27, !20, i64 0}
!29 = !{!30, !6, i64 8}
!30 = !{!"_ZTSN8tetgenio7polygonE", !20, i64 0, !6, i64 8}
!31 = !{!30, !20, i64 0}
!32 = distinct !{!32, !17}
!33 = !{!20, !20, i64 0}
!34 = distinct !{!34, !17}
!35 = !{!36, !37, i64 32}
!36 = !{!"_ZTSN10tetgenmesh9arraypoolE", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !20, i64 24, !37, i64 32, !37, i64 40}
!37 = !{!"long", !7, i64 0}
!38 = !{!36, !20, i64 24}
!39 = !{!36, !6, i64 8}
!40 = !{!36, !6, i64 12}
!41 = !{!36, !6, i64 0}
!42 = distinct !{!42, !17}
!43 = distinct !{!43, !17}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,DivRemPairsPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass