; LLVM IR from buresjan/optim_lbm :: nomad/ext/sgtelib/src (Surrogate_Ensemble_Stat)

; 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.SGTELIB::Matrix" = type { ptr, %"class.std::__cxx11::basic_string", i32, i32, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"class.std::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = type { %"struct.std::_Vector_base<SGTELIB::Matrix *, std::allocator<SGTELIB::Matrix *>>::_Vector_impl" }
%"struct.std::_Vector_base<SGTELIB::Matrix *, std::allocator<SGTELIB::Matrix *>>::_Vector_impl" = type { %"struct.std::_Vector_base<SGTELIB::Matrix *, std::allocator<SGTELIB::Matrix *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SGTELIB::Matrix *, std::allocator<SGTELIB::Matrix *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.SGTELIB::Surrogate" = type <{ ptr, ptr, %"class.SGTELIB::Surrogate_Parameters", i32, i32, i32, i32, i32, i32, i8, [7 x i8], ptr, ptr, ptr, ptr, %"class.std::__cxx11::list", %"class.std::map", double, %"class.std::basic_ofstream", i8, [7 x i8] }>
%"class.SGTELIB::Surrogate_Parameters" = type { ptr, i32, i32, i32, i32, i32, double, i32, double, i32, i32, i32, %"class.SGTELIB::Matrix", i32, i32, i32, double, double, double, double, %"class.SGTELIB::Matrix", i32, i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, i32 }
%"class.std::__cxx11::list" = type { %"class.std::__cxx11::_List_base" }
%"class.std::__cxx11::_List_base" = type { %"struct.std::__cxx11::_List_base<int, std::allocator<int>>::_List_impl" }
%"struct.std::__cxx11::_List_base<int, std::allocator<int>>::_List_impl" = type { %"struct.std::__detail::_List_node_header" }
%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 }
%"struct.std::__detail::_List_node_base" = type { ptr, ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<SGTELIB::metric_t, std::pair<const SGTELIB::metric_t, SGTELIB::Matrix>, std::_Select1st<std::pair<const SGTELIB::metric_t, SGTELIB::Matrix>>, std::less<SGTELIB::metric_t>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<SGTELIB::metric_t, std::pair<const SGTELIB::metric_t, SGTELIB::Matrix>, std::_Select1st<std::pair<const SGTELIB::metric_t, SGTELIB::Matrix>>, std::less<SGTELIB::metric_t>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::basic_ofstream" = type { %"class.std::basic_ostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"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" }
%"class.std::locale" = type { ptr }
%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.6 }
%union.anon.6 = type { i32 }
%"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.SGTELIB::Surrogate_Ensemble_Stat" = type { %"class.SGTELIB::Surrogate.base", i32, i32, %"class.std::vector", ptr, ptr, %"class.SGTELIB::Matrix", i32, double, double, double, double }
%"class.SGTELIB::Surrogate.base" = type <{ ptr, ptr, %"class.SGTELIB::Surrogate_Parameters", i32, i32, i32, i32, i32, i32, i8, [7 x i8], ptr, ptr, ptr, ptr, %"class.std::__cxx11::list", %"class.std::map", double, %"class.std::basic_ofstream", i8 }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<SGTELIB::Surrogate *, std::allocator<SGTELIB::Surrogate *>>::_Vector_impl" }
%"struct.std::_Vector_base<SGTELIB::Surrogate *, std::allocator<SGTELIB::Surrogate *>>::_Vector_impl" = type { %"struct.std::_Vector_base<SGTELIB::Surrogate *, std::allocator<SGTELIB::Surrogate *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SGTELIB::Surrogate *, std::allocator<SGTELIB::Surrogate *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.27 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [10 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

declare void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, i32 noundef) unnamed_addr #3

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

declare void @_ZN7SGTELIB6Matrix4fillEd(ptr noundef nonnull align 8 dereferenceable(56), double noundef) #3

; Function Attrs: nounwind
declare void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #4

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7SGTELIB20Surrogate_Parameters10get_weightEv(ptr dead_on_unwind noalias writable sret(%"class.SGTELIB::Matrix") align 8, ptr noundef nonnull align 8 dereferenceable(312)) #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7SGTELIB20Surrogate_Parameters20get_uncertainty_typeEv(ptr noundef nonnull align 8 dereferenceable(312)) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #7

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, i32 noundef) #6

declare void @_ZN7SGTELIB6Matrix3setEiid(ptr noundef nonnull align 8 dereferenceable(56), i32 noundef, i32 noundef, double noundef) #3

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7SGTELIB23Surrogate_Ensemble_Stat15predict_privateERKNS_6MatrixEPS1_S4_S4_S4_(ptr noundef nonnull align 8 dereferenceable(1136) %0, ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca %"class.SGTELIB::Matrix", align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca double, align 8
  %20 = alloca i8, align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator", align 1
  %23 = alloca i1, align 1
  %24 = alloca %"class.std::vector.11", align 8
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca i1, align 1
  %30 = alloca %"class.std::vector.11", align 8
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca i1, align 1
  %36 = alloca %"class.std::vector.11", align 8
  %37 = alloca i32, align 4
  %38 = alloca ptr, align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca i1, align 1
  %42 = alloca %"class.std::vector.11", align 8
  %43 = alloca i32, align 4
  %44 = alloca ptr, align 8
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca i1, align 1
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca double, align 8
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca double, align 8
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  store ptr %5, ptr %12, align 8, !tbaa !5
  %62 = load ptr, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 56, ptr %13) #10
  %63 = getelementptr inbounds %"class.SGTELIB::Surrogate", ptr %62, i32 0, i32 2
  call void @_ZNK7SGTELIB20Surrogate_Parameters10get_weightEv(ptr dead_on_unwind writable sret(%"class.SGTELIB::Matrix") align 8 %13, ptr noundef nonnull align 8 dereferenceable(312) %63)
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #10
  %64 = getelementptr inbounds %"class.SGTELIB::Surrogate", ptr %62, i32 0, i32 2
  %65 = invoke noundef i32 @_ZNK7SGTELIB20Surrogate_Parameters20get_uncertainty_typeEv(ptr noundef nonnull align 8 dereferenceable(312) %64)
          to label %66 unwind label %82

66:                                               ; preds = %6
  store i32 %65, ptr %14, align 4, !tbaa !9
  %67 = load ptr, ptr %10, align 8, !tbaa !5
  %68 = icmp ne ptr %67, null
  br i1 %68, label %86, label %69

69:                                               ; preds = %66
  %70 = load ptr, ptr %11, align 8, !tbaa !5
  %71 = icmp ne ptr %70, null
  br i1 %71, label %86, label %72

72:                                               ; preds = %69
  %73 = load ptr, ptr %12, align 8, !tbaa !5
  %74 = icmp ne ptr %73, null
  br i1 %74, label %86, label %75

75:                                               ; preds = %72
  %76 = load ptr, ptr %8, align 8, !tbaa !5
  %77 = load ptr, ptr %9, align 8, !tbaa !5
  %78 = load ptr, ptr %62, align 8, !tbaa !11
  %79 = getelementptr inbounds ptr, ptr %78, i64 4
  %80 = load ptr, ptr %79, align 8
  invoke void %80(ptr noundef nonnull align 8 dereferenceable(1136) %62, ptr noundef nonnull align 8 dereferenceable(56) %76, ptr noundef %77)
          to label %81 unwind label %82

81:                                               ; preds = %75
  store i32 1, ptr %17, align 4
  br label %718

82:                                               ; preds = %75, %6
  %83 = landingpad { ptr, i32 }
          cleanup
  %84 = extractvalue { ptr, i32 } %83, 0
  store ptr %84, ptr %15, align 8
  %85 = extractvalue { ptr, i32 } %83, 1
  store i32 %85, ptr %16, align 4
  br label %729

86:                                               ; preds = %72, %69, %66
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #10
  %87 = load ptr, ptr %8, align 8, !tbaa !5
  %88 = invoke noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_rowsEv(ptr noundef nonnull align 8 dereferenceable(56) %87)
          to label %89 unwind label %104

89:                                               ; preds = %86
  store i32 %88, ptr %18, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  %90 = getelementptr inbounds %"class.SGTELIB::Surrogate", ptr %62, i32 0, i32 1
  %91 = load ptr, ptr %90, align 8, !tbaa !15
  %92 = invoke noundef double @_ZNK7SGTELIB11TrainingSet10get_fs_minEv(ptr noundef nonnull align 8 dereferenceable(504) %91)
          to label %93 unwind label %108

93:                                               ; preds = %89
  store double %92, ptr %19, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #10
  store i8 0, ptr %20, align 1, !tbaa !52
  %94 = load ptr, ptr %9, align 8, !tbaa !5
  %95 = icmp ne ptr %94, null
  br i1 %95, label %128, label %96

96:                                               ; preds = %93
  %97 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #11
          to label %98 unwind label %112

98:                                               ; preds = %96
  store i1 true, ptr %23, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef @.str.27, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %99 unwind label %116

99:                                               ; preds = %98
  %100 = load i32, ptr %18, align 4, !tbaa !13
  %101 = getelementptr inbounds %"class.SGTELIB::Surrogate", ptr %62, i32 0, i32 4
  %102 = load i32, ptr %101, align 4, !tbaa !53
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %97, ptr noundef nonnull align 8 dereferenceable(32) %21, i32 noundef %100, i32 noundef %102)
          to label %103 unwind label %120

103:                                              ; preds = %99
  store i1 false, ptr %23, align 1
  store ptr %97, ptr %9, align 8, !tbaa !5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #10
  store i8 1, ptr %20, align 1, !tbaa !52
  br label %128

104:                                              ; preds = %86
  %105 = landingpad { ptr, i32 }
          cleanup
  %106 = extractvalue { ptr, i32 } %105, 0
  store ptr %106, ptr %15, align 8
  %107 = extractvalue { ptr, i32 } %105, 1
  store i32 %107, ptr %16, align 4
  br label %728

108:                                              ; preds = %89
  %109 = landingpad { ptr, i32 }
          cleanup
  %110 = extractvalue { ptr, i32 } %109, 0
  store ptr %110, ptr %15, align 8
  %111 = extractvalue { ptr, i32 } %109, 1
  store i32 %111, ptr %16, align 4
  br label %727

112:                                              ; preds = %145, %139, %133, %128, %96
  %113 = landingpad { ptr, i32 }
          cleanup
  %114 = extractvalue { ptr, i32 } %113, 0
  store ptr %114, ptr %15, align 8
  %115 = extractvalue { ptr, i32 } %113, 1
  store i32 %115, ptr %16, align 4
  br label %726

116:                                              ; preds = %98
  %117 = landingpad { ptr, i32 }
          cleanup
  %118 = extractvalue { ptr, i32 } %117, 0
  store ptr %118, ptr %15, align 8
  %119 = extractvalue { ptr, i32 } %117, 1
  store i32 %119, ptr %16, align 4
  br label %124

120:                                              ; preds = %99
  %121 = landingpad { ptr, i32 }
          cleanup
  %122 = extractvalue { ptr, i32 } %121, 0
  store ptr %122, ptr %15, align 8
  %123 = extractvalue { ptr, i32 } %121, 1
  store i32 %123, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  br label %124

124:                                              ; preds = %120, %116
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #10
  %125 = load i1, ptr %23, align 1
  br i1 %125, label %126, label %127

126:                                              ; preds = %124
  call void @_ZdlPvm(ptr noundef %97, i64 noundef 56) #12
  br label %127

127:                                              ; preds = %126, %124
  br label %726

128:                                              ; preds = %103, %93
  %129 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN7SGTELIB6Matrix4fillEd(ptr noundef nonnull align 8 dereferenceable(56) %129, double noundef 0.000000e+00)
          to label %130 unwind label %112

130:                                              ; preds = %128
  %131 = load ptr, ptr %10, align 8, !tbaa !5
  %132 = icmp ne ptr %131, null
  br i1 %132, label %133, label %136

133:                                              ; preds = %130
  %134 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN7SGTELIB6Matrix4fillEd(ptr noundef nonnull align 8 dereferenceable(56) %134, double noundef 0.000000e+00)
          to label %135 unwind label %112

135:                                              ; preds = %133
  br label %136

136:                                              ; preds = %135, %130
  %137 = load ptr, ptr %11, align 8, !tbaa !5
  %138 = icmp ne ptr %137, null
  br i1 %138, label %139, label %142

139:                                              ; preds = %136
  %140 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZN7SGTELIB6Matrix4fillEd(ptr noundef nonnull align 8 dereferenceable(56) %140, double noundef 0.000000e+00)
          to label %141 unwind label %112

141:                                              ; preds = %139
  br label %142

142:                                              ; preds = %141, %136
  %143 = load ptr, ptr %12, align 8, !tbaa !5
  %144 = icmp ne ptr %143, null
  br i1 %144, label %145, label %148

145:                                              ; preds = %142
  %146 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN7SGTELIB6Matrix4fillEd(ptr noundef nonnull align 8 dereferenceable(56) %146, double noundef 0.000000e+00)
          to label %147 unwind label %112

147:                                              ; preds = %145
  br label %148

148:                                              ; preds = %147, %142
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #10
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #10
  store i32 0, ptr %25, align 4, !tbaa !13
  br label %149

149:                                              ; preds = %165, %148
  %150 = load i32, ptr %25, align 4, !tbaa !13
  %151 = load i32, ptr %18, align 4, !tbaa !13
  %152 = icmp slt i32 %150, %151
  br i1 %152, label %154, label %153

153:                                              ; preds = %149
  store i32 2, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  br label %185

154:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  %155 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #11
          to label %156 unwind label %168

156:                                              ; preds = %154
  store i1 true, ptr %29, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #10
  %157 = load i32, ptr %25, align 4, !tbaa !13
  call void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %28, i32 noundef %157) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef @.str.28, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %158 unwind label %172

158:                                              ; preds = %156
  %159 = getelementptr inbounds %"class.SGTELIB::Surrogate_Ensemble_Stat", ptr %62, i32 0, i32 7
  %160 = load i32, ptr %159, align 8, !tbaa !54
  %161 = getelementptr inbounds %"class.SGTELIB::Surrogate", ptr %62, i32 0, i32 3
  %162 = load i32, ptr %161, align 8, !tbaa !60
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %155, ptr noundef nonnull align 8 dereferenceable(32) %27, i32 noundef %160, i32 noundef %162)
          to label %163 unwind label %176

163:                                              ; preds = %158
  store i1 false, ptr %29, align 1
  store ptr %155, ptr %26, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %164 unwind label %176

164:                                              ; preds = %163
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  br label %165

165:                                              ; preds = %164
  %166 = load i32, ptr %25, align 4, !tbaa !13
  %167 = add nsw i32 %166, 1
  store i32 %167, ptr %25, align 4, !tbaa !13
  br label %149, !llvm.loop !61

168:                                              ; preds = %154
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %15, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %16, align 4
  br label %184

172:                                              ; preds = %156
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %15, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %16, align 4
  br label %180

176:                                              ; preds = %163, %158
  %177 = landingpad { ptr, i32 }
          cleanup
  %178 = extractvalue { ptr, i32 } %177, 0
  store ptr %178, ptr %15, align 8
  %179 = extractvalue { ptr, i32 } %177, 1
  store i32 %179, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #10
  br label %180

180:                                              ; preds = %176, %172
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #10
  %181 = load i1, ptr %29, align 1
  br i1 %181, label %182, label %183

182:                                              ; preds = %180
  call void @_ZdlPvm(ptr noundef %155, i64 noundef 56) #12
  br label %183

183:                                              ; preds = %182, %180
  br label %184

184:                                              ; preds = %183, %168
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  br label %725

185:                                              ; preds = %153
  call void @llvm.lifetime.start.p0(i64 24, ptr %30) #10
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #10
  store i32 0, ptr %31, align 4, !tbaa !13
  br label %186

186:                                              ; preds = %202, %185
  %187 = load i32, ptr %31, align 4, !tbaa !13
  %188 = getelementptr inbounds %"class.SGTELIB::Surrogate_Ensemble_Stat", ptr %62, i32 0, i32 1
  %189 = load i32, ptr %188, align 4, !tbaa !63
  %190 = icmp slt i32 %187, %189
  br i1 %190, label %192, label %191

191:                                              ; preds = %186
  store i32 5, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #10
  br label %222

192:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #10
  %193 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #11
          to label %194 unwind label %205

194:                                              ; preds = %192
  store i1 true, ptr %35, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %33) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #10
  %195 = load i32, ptr %31, align 4, !tbaa !13
  call void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %34, i32 noundef %195) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %33, ptr noundef @.str.29, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %196 unwind label %209

196:                                              ; preds = %194
  %197 = load i32, ptr %18, align 4, !tbaa !13
  %198 = getelementptr inbounds %"class.SGTELIB::Surrogate", ptr %62, i32 0, i32 4
  %199 = load i32, ptr %198, align 4, !tbaa !53
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %193, ptr noundef nonnull align 8 dereferenceable(32) %33, i32 noundef %197, i32 noundef %199)
          to label %200 unwind label %213

200:                                              ; preds = %196
  store i1 false, ptr %35, align 1
  store ptr %193, ptr %32, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %30, ptr noundef nonnull align 8 dereferenceable(8) %32)
          to label %201 unwind label %213

201:                                              ; preds = %200
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  br label %202

202:                                              ; preds = %201
  %203 = load i32, ptr %31, align 4, !tbaa !13
  %204 = add nsw i32 %203, 1
  store i32 %204, ptr %31, align 4, !tbaa !13
  br label %186, !llvm.loop !64

205:                                              ; preds = %192
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %15, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %16, align 4
  br label %221

209:                                              ; preds = %194
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %15, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %16, align 4
  br label %217

213:                                              ; preds = %200, %196
  %214 = landingpad { ptr, i32 }
          cleanup
  %215 = extractvalue { ptr, i32 } %214, 0
  store ptr %215, ptr %15, align 8
  %216 = extractvalue { ptr, i32 } %214, 1
  store i32 %216, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #10
  br label %217

217:                                              ; preds = %213, %209
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %33) #10
  %218 = load i1, ptr %35, align 1
  br i1 %218, label %219, label %220

219:                                              ; preds = %217
  call void @_ZdlPvm(ptr noundef %193, i64 noundef 56) #12
  br label %220

220:                                              ; preds = %219, %217
  br label %221

221:                                              ; preds = %220, %205
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #10
  br label %724

222:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 24, ptr %36) #10
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #10
  store i32 0, ptr %37, align 4, !tbaa !13
  br label %223

223:                                              ; preds = %239, %222
  %224 = load i32, ptr %37, align 4, !tbaa !13
  %225 = getelementptr inbounds %"class.SGTELIB::Surrogate_Ensemble_Stat", ptr %62, i32 0, i32 1
  %226 = load i32, ptr %225, align 4, !tbaa !63
  %227 = icmp slt i32 %224, %226
  br i1 %227, label %229, label %228

228:                                              ; preds = %223
  store i32 8, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  br label %259

229:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #10
  %230 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #11
          to label %231 unwind label %242

231:                                              ; preds = %229
  store i1 true, ptr %41, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #10
  %232 = load i32, ptr %37, align 4, !tbaa !13
  call void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %40, i32 noundef %232) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %39, ptr noundef @.str.30, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %233 unwind label %246

233:                                              ; preds = %231
  %234 = load i32, ptr %18, align 4, !tbaa !13
  %235 = getelementptr inbounds %"class.SGTELIB::Surrogate_Ensemble_Stat", ptr %62, i32 0, i32 7
  %236 = load i32, ptr %235, align 8, !tbaa !54
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %230, ptr noundef nonnull align 8 dereferenceable(32) %39, i32 noundef %234, i32 noundef %236)
          to label %237 unwind label %250

237:                                              ; preds = %233
  store i1 false, ptr %41, align 1
  store ptr %230, ptr %38, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %36, ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %238 unwind label %250

238:                                              ; preds = %237
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  br label %239

239:                                              ; preds = %238
  %240 = load i32, ptr %37, align 4, !tbaa !13
  %241 = add nsw i32 %240, 1
  store i32 %241, ptr %37, align 4, !tbaa !13
  br label %223, !llvm.loop !65

242:                                              ; preds = %229
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %15, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %16, align 4
  br label %258

246:                                              ; preds = %231
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %15, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %16, align 4
  br label %254

250:                                              ; preds = %237, %233
  %251 = landingpad { ptr, i32 }
          cleanup
  %252 = extractvalue { ptr, i32 } %251, 0
  store ptr %252, ptr %15, align 8
  %253 = extractvalue { ptr, i32 } %251, 1
  store i32 %253, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #10
  br label %254

254:                                              ; preds = %250, %246
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #10
  %255 = load i1, ptr %41, align 1
  br i1 %255, label %256, label %257

256:                                              ; preds = %254
  call void @_ZdlPvm(ptr noundef %230, i64 noundef 56) #12
  br label %257

257:                                              ; preds = %256, %254
  br label %258

258:                                              ; preds = %257, %242
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  br label %723

259:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 24, ptr %42) #10
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #10
  store i32 0, ptr %43, align 4, !tbaa !13
  br label %260

260:                                              ; preds = %276, %259
  %261 = load i32, ptr %43, align 4, !tbaa !13
  %262 = getelementptr inbounds %"class.SGTELIB::Surrogate_Ensemble_Stat", ptr %62, i32 0, i32 1
  %263 = load i32, ptr %262, align 4, !tbaa !63
  %264 = icmp slt i32 %261, %263
  br i1 %264, label %266, label %265

265:                                              ; preds = %260
  store i32 11, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  br label %296

266:                                              ; preds = %260
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #10
  %267 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #11
          to label %268 unwind label %279

268:                                              ; preds = %266
  store i1 true, ptr %47, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #10
  %269 = load i32, ptr %43, align 4, !tbaa !13
  call void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %46, i32 noundef %269) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %45, ptr noundef @.str.31, ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %270 unwind label %283

270:                                              ; preds = %268
  %271 = load i32, ptr %18, align 4, !tbaa !13
  %272 = getelementptr inbounds %"class.SGTELIB::Surrogate", ptr %62, i32 0, i32 3
  %273 = load i32, ptr %272, align 8, !tbaa !60
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %267, ptr noundef nonnull align 8 dereferenceable(32) %45, i32 noundef %271, i32 noundef %273)
          to label %274 unwind label %287

274:                                              ; preds = %270
  store i1 false, ptr %47, align 1
  store ptr %267, ptr %44, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %275 unwind label %287

275:                                              ; preds = %274
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  br label %276

276:                                              ; preds = %275
  %277 = load i32, ptr %43, align 4, !tbaa !13
  %278 = add nsw i32 %277, 1
  store i32 %278, ptr %43, align 4, !tbaa !13
  br label %260, !llvm.loop !66

279:                                              ; preds = %266
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %15, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %16, align 4
  br label %295

283:                                              ; preds = %268
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %15, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %16, align 4
  br label %291

287:                                              ; preds = %274, %270
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %15, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #10
  br label %291

291:                                              ; preds = %287, %283
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #10
  %292 = load i1, ptr %47, align 1
  br i1 %292, label %293, label %294

293:                                              ; preds = %291
  call void @_ZdlPvm(ptr noundef %267, i64 noundef 56) #12
  br label %294

294:                                              ; preds = %293, %291
  br label %295

295:                                              ; preds = %294, %279
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  br label %722

296:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #10
  %297 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK7SGTELIB23Surrogate_Ensemble_Stat18build_set_around_xERKNS_6MatrixERSt6vectorIPS1_SaIS5_EE(ptr noundef nonnull align 8 dereferenceable(1136) %62, ptr noundef nonnull align 8 dereferenceable(56) %297, ptr noundef nonnull align 8 dereferenceable(24) %24)
          to label %298 unwind label %305

298:                                              ; preds = %296
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #10
  store i32 0, ptr %50, align 4, !tbaa !13
  br label %299

299:                                              ; preds = %409, %298
  %300 = load i32, ptr %50, align 4, !tbaa !13
  %301 = getelementptr inbounds %"class.SGTELIB::Surrogate_Ensemble_Stat", ptr %62, i32 0, i32 1
  %302 = load i32, ptr %301, align 4, !tbaa !63
  %303 = icmp slt i32 %300, %302
  br i1 %303, label %309, label %304

304:                                              ; preds = %299
  store i32 14, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #10
  br label %413

305:                                              ; preds = %416, %296
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %15, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %16, align 4
  br label %721

309:                                              ; preds = %299
  %310 = getelementptr inbounds %"class.SGTELIB::Surrogate_Ensemble_Stat", ptr %62, i32 0, i32 4
  %311 = load ptr, ptr %310, align 8, !tbaa !67
  %312 = load i32, ptr %50, align 4, !tbaa !13
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds i8, ptr %311, i64 %313
  %315 = load i8, ptr %314, align 1, !tbaa !52, !range !68, !noundef !69
  %316 = trunc i8 %315 to i1
  br i1 %316, label %317, label %408

317:                                              ; preds = %309
  %318 = getelementptr inbounds %"class.SGTELIB::Surrogate_Ensemble_Stat", ptr %62, i32 0, i32 3
  %319 = load i32, ptr %50, align 4, !tbaa !13
  %320 = sext i32 %319 to i64
  %321 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN7SGTELIB9SurrogateESaIS2_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %318, i64 noundef %320)
          to label %322 unwind label %338

322:                                              ; preds = %317
  %323 = load ptr, ptr %321, align 8, !tbaa !5
  %324 = load ptr, ptr %8, align 8, !tbaa !5
  %325 = load i32, ptr %50, align 4, !tbaa !13
  %326 = sext i32 %325 to i64
  %327 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %326) #10
  %328 = load ptr, ptr %327, align 8, !tbaa !5
  %329 = load ptr, ptr %323, align 8, !tbaa !11
  %330 = getelementptr inbounds ptr, ptr %329, i64 4
  %331 = load ptr, ptr %330, align 8
  invoke void %331(ptr noundef nonnull align 8 dereferenceable(985) %323, ptr noundef nonnull align 8 dereferenceable(56) %324, ptr noundef %328)
          to label %332 unwind label %338

332:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #10
  store i32 0, ptr %51, align 4, !tbaa !13
  br label %333

333:                                              ; preds = %390, %332
  %334 = load i32, ptr %51, align 4, !tbaa !13
  %335 = load i32, ptr %18, align 4, !tbaa !13
  %336 = icmp slt i32 %334, %335
  br i1 %336, label %342, label %337

337:                                              ; preds = %333
  store i32 17, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  br label %393

338:                                              ; preds = %398, %393, %322, %317
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %15, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %16, align 4
  br label %412

342:                                              ; preds = %333
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #10
  store i32 0, ptr %52, align 4, !tbaa !13
  br label %343

343:                                              ; preds = %386, %342
  %344 = load i32, ptr %52, align 4, !tbaa !13
  %345 = getelementptr inbounds %"class.SGTELIB::Surrogate", ptr %62, i32 0, i32 4
  %346 = load i32, ptr %345, align 4, !tbaa !53
  %347 = icmp slt i32 %344, %346
  br i1 %347, label %349, label %348

348:                                              ; preds = %343
  store i32 20, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #10
  br label %389

349:                                              ; preds = %343
  %350 = load i32, ptr %50, align 4, !tbaa !13
  %351 = load i32, ptr %52, align 4, !tbaa !13
  %352 = invoke noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %13, i32 noundef %350, i32 noundef %351)
          to label %353 unwind label %381

353:                                              ; preds = %349
  store double %352, ptr %48, align 8, !tbaa !51
  %354 = load double, ptr %48, align 8, !tbaa !51
  %355 = getelementptr inbounds %"class.SGTELIB::Surrogate_Ensemble_Stat", ptr %62, i32 0, i32 1
  %356 = load i32, ptr %355, align 4, !tbaa !63
  %357 = sitofp i32 %356 to double
  %358 = fdiv double 1.000000e-13, %357
  %359 = fcmp ogt double %354, %358
  br i1 %359, label %360, label %385

360:                                              ; preds = %353
  %361 = load i32, ptr %50, align 4, !tbaa !13
  %362 = sext i32 %361 to i64
  %363 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %362) #10
  %364 = load ptr, ptr %363, align 8, !tbaa !5
  %365 = load i32, ptr %51, align 4, !tbaa !13
  %366 = load i32, ptr %52, align 4, !tbaa !13
  %367 = invoke noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %364, i32 noundef %365, i32 noundef %366)
          to label %368 unwind label %381

368:                                              ; preds = %360
  store double %367, ptr %49, align 8, !tbaa !51
  %369 = load ptr, ptr %9, align 8, !tbaa !5
  %370 = load i32, ptr %51, align 4, !tbaa !13
  %371 = load i32, ptr %52, align 4, !tbaa !13
  %372 = load ptr, ptr %9, align 8, !tbaa !5
  %373 = load i32, ptr %51, align 4, !tbaa !13
  %374 = load i32, ptr %52, align 4, !tbaa !13
  %375 = invoke noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %372, i32 noundef %373, i32 noundef %374)
          to label %376 unwind label %381

376:                                              ; preds = %368
  %377 = load double, ptr %48, align 8, !tbaa !51
  %378 = load double, ptr %49, align 8, !tbaa !51
  %379 = call double @llvm.fmuladd.f64(double %377, double %378, double %375)
  invoke void @_ZN7SGTELIB6Matrix3setEiid(ptr noundef nonnull align 8 dereferenceable(56) %369, i32 noundef %370, i32 noundef %371, double noundef %379)
          to label %380 unwind label %381

380:                                              ; preds = %376
  br label %385

381:                                              ; preds = %376, %368, %360, %349
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %15, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  br label %412

385:                                              ; preds = %380, %353
  br label %386

386:                                              ; preds = %385
  %387 = load i32, ptr %52, align 4, !tbaa !13
  %388 = add nsw i32 %387, 1
  store i32 %388, ptr %52, align 4, !tbaa !13
  br label %343, !llvm.loop !70

389:                                              ; preds = %348
  br label %390

390:                                              ; preds = %389
  %391 = load i32, ptr %51, align 4, !tbaa !13
  %392 = add nsw i32 %391, 1
  store i32 %392, ptr %51, align 4, !tbaa !13
  br label %333, !llvm.loop !71

393:                                              ; preds = %337
  %394 = getelementptr inbounds %"class.SGTELIB::Surrogate_Ensemble_Stat", ptr %62, i32 0, i32 3
  %395 = load i32, ptr %50, align 4, !tbaa !13
  %396 = sext i32 %395 to i64
  %397 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN7SGTELIB9SurrogateESaIS2_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %394, i64 noundef %396)
          to label %398 unwind label %338

398:                                              ; preds = %393
  %399 = load ptr, ptr %397, align 8, !tbaa !5
  %400 = load i32, ptr %50, align 4, !tbaa !13
  %401 = sext i32 %400 to i64
  %402 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %401) #10
  %403 = load ptr, ptr %402, align 8, !tbaa !5
  %404 = load ptr, ptr %399, align 8, !tbaa !11
  %405 = getelementptr inbounds ptr, ptr %404, i64 5
  %406 = load ptr, ptr %405, align 8
  invoke void %406(ptr noundef nonnull align 8 dereferenceable(985) %399, ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef %403)
          to label %407 unwind label %338

407:                                              ; preds = %398
  br label %408

408:                                              ; preds = %407, %309
  br label %409

409:                                              ; preds = %408
  %410 = load i32, ptr %50, align 4, !tbaa !13
  %411 = add nsw i32 %410, 1
  store i32 %411, ptr %50, align 4, !tbaa !13
  br label %299, !llvm.loop !72

412:                                              ; preds = %381, %338
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #10
  br label %721

413:                                              ; preds = %304
  %414 = load i32, ptr %14, align 4, !tbaa !9
  %415 = icmp eq i32 %414, 0
  br i1 %415, label %416, label %418

416:                                              ; preds = %413
  invoke void @_ZNK7SGTELIB23Surrogate_Ensemble_Stat24compute_simplex_gradientERKSt6vectorIPNS_6MatrixESaIS3_EES7_RS5_(ptr noundef nonnull align 8 dereferenceable(1136) %62, ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 8 dereferenceable(24) %36, ptr noundef nonnull align 8 dereferenceable(24) %42)
          to label %417 unwind label %305

417:                                              ; preds = %416
  br label %418

418:                                              ; preds = %417, %413
  %419 = load ptr, ptr %10, align 8, !tbaa !5
  %420 = icmp ne ptr %419, null
  br i1 %420, label %427, label %421

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

424:                                              ; preds = %421
  %425 = load ptr, ptr %12, align 8, !tbaa !5
  %426 = icmp ne ptr %425, null
  br i1 %426, label %427, label %645

427:                                              ; preds = %424, %421, %418
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #10
  %428 = load ptr, ptr %10, align 8, !tbaa !5
  %429 = icmp ne ptr %428, null
  br i1 %429, label %430, label %437

430:                                              ; preds = %427
  %431 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN7SGTELIB6Matrix4fillEd(ptr noundef nonnull align 8 dereferenceable(56) %431, double noundef 0xFFEFFFFFFFFFFFFF)
          to label %432 unwind label %433

432:                                              ; preds = %430
  br label %437

433:                                              ; preds = %446, %440, %430
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %15, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %16, align 4
  br label %644

437:                                              ; preds = %432, %427
  %438 = load ptr, ptr %11, align 8, !tbaa !5
  %439 = icmp ne ptr %438, null
  br i1 %439, label %440, label %443

440:                                              ; preds = %437
  %441 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZN7SGTELIB6Matrix4fillEd(ptr noundef nonnull align 8 dereferenceable(56) %441, double noundef 0xFFEFFFFFFFFFFFFF)
          to label %442 unwind label %433

442:                                              ; preds = %440
  br label %443

443:                                              ; preds = %442, %437
  %444 = load ptr, ptr %12, align 8, !tbaa !5
  %445 = icmp ne ptr %444, null
  br i1 %445, label %446, label %449

446:                                              ; preds = %443
  %447 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN7SGTELIB6Matrix4fillEd(ptr noundef nonnull align 8 dereferenceable(56) %447, double noundef 0xFFEFFFFFFFFFFFFF)
          to label %448 unwind label %433

448:                                              ; preds = %446
  br label %449

449:                                              ; preds = %448, %443
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #10
  store i32 0, ptr %54, align 4, !tbaa !13
  br label %450

450:                                              ; preds = %639, %449
  %451 = load i32, ptr %54, align 4, !tbaa !13
  %452 = getelementptr inbounds %"class.SGTELIB::Surrogate", ptr %62, i32 0, i32 4
  %453 = load i32, ptr %452, align 4, !tbaa !53
  %454 = icmp slt i32 %451, %453
  br i1 %454, label %456, label %455

455:                                              ; preds = %450
  store i32 23, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #10
  br label %643

456:                                              ; preds = %450
  %457 = load ptr, ptr %10, align 8, !tbaa !5
  %458 = icmp ne ptr %457, null
  br i1 %458, label %459, label %483

459:                                              ; preds = %456
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #10
  store i32 0, ptr %55, align 4, !tbaa !13
  br label %460

460:                                              ; preds = %475, %459
  %461 = load i32, ptr %55, align 4, !tbaa !13
  %462 = load i32, ptr %18, align 4, !tbaa !13
  %463 = icmp slt i32 %461, %462
  br i1 %463, label %465, label %464

464:                                              ; preds = %460
  store i32 26, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #10
  br label %482

465:                                              ; preds = %460
  %466 = load i32, ptr %55, align 4, !tbaa !13
  %467 = load i32, ptr %54, align 4, !tbaa !13
  %468 = invoke noundef double @_ZNK7SGTELIB23Surrogate_Ensemble_Stat13compute_sigmaEiiRKSt6vectorIPNS_6MatrixESaIS3_EES7_S7_(ptr noundef nonnull align 8 dereferenceable(1136) %62, i32 noundef %466, i32 noundef %467, ptr noundef nonnull align 8 dereferenceable(24) %30, ptr noundef nonnull align 8 dereferenceable(24) %36, ptr noundef nonnull align 8 dereferenceable(24) %42)
          to label %469 unwind label %478

469:                                              ; preds = %465
  store double %468, ptr %53, align 8, !tbaa !51
  %470 = load ptr, ptr %10, align 8, !tbaa !5
  %471 = load i32, ptr %55, align 4, !tbaa !13
  %472 = load i32, ptr %54, align 4, !tbaa !13
  %473 = load double, ptr %53, align 8, !tbaa !51
  invoke void @_ZN7SGTELIB6Matrix3setEiid(ptr noundef nonnull align 8 dereferenceable(56) %470, i32 noundef %471, i32 noundef %472, double noundef %473)
          to label %474 unwind label %478

474:                                              ; preds = %469
  br label %475

475:                                              ; preds = %474
  %476 = load i32, ptr %55, align 4, !tbaa !13
  %477 = add nsw i32 %476, 1
  store i32 %477, ptr %55, align 4, !tbaa !13
  br label %460, !llvm.loop !73

478:                                              ; preds = %469, %465
  %479 = landingpad { ptr, i32 }
          cleanup
  %480 = extractvalue { ptr, i32 } %479, 0
  store ptr %480, ptr %15, align 8
  %481 = extractvalue { ptr, i32 } %479, 1
  store i32 %481, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #10
  br label %642

482:                                              ; preds = %464
  br label %483

483:                                              ; preds = %482, %456
  %484 = getelementptr inbounds %"class.SGTELIB::Surrogate", ptr %62, i32 0, i32 1
  %485 = load ptr, ptr %484, align 8, !tbaa !15
  %486 = load i32, ptr %54, align 4, !tbaa !13
  %487 = invoke noundef i32 @_ZNK7SGTELIB11TrainingSet7get_bboEi(ptr noundef nonnull align 8 dereferenceable(504) %485, i32 noundef %486)
          to label %488 unwind label %499

488:                                              ; preds = %483
  %489 = icmp eq i32 %487, 0
  br i1 %489, label %490, label %577

490:                                              ; preds = %488
  %491 = load ptr, ptr %12, align 8, !tbaa !5
  %492 = icmp ne ptr %491, null
  br i1 %492, label %493, label %536

493:                                              ; preds = %490
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #10
  store i32 0, ptr %56, align 4, !tbaa !13
  br label %494

494:                                              ; preds = %532, %493
  %495 = load i32, ptr %56, align 4, !tbaa !13
  %496 = load i32, ptr %18, align 4, !tbaa !13
  %497 = icmp slt i32 %495, %496
  br i1 %497, label %503, label %498

498:                                              ; preds = %494
  store i32 29, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #10
  br label %535

499:                                              ; preds = %577, %483
  %500 = landingpad { ptr, i32 }
          cleanup
  %501 = extractvalue { ptr, i32 } %500, 0
  store ptr %501, ptr %15, align 8
  %502 = extractvalue { ptr, i32 } %500, 1
  store i32 %502, ptr %16, align 4
  br label %642

503:                                              ; preds = %494
  %504 = load double, ptr %19, align 8, !tbaa !51
  %505 = load ptr, ptr %9, align 8, !tbaa !5
  %506 = load i32, ptr %56, align 4, !tbaa !13
  %507 = load i32, ptr %54, align 4, !tbaa !13
  %508 = invoke noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %505, i32 noundef %506, i32 noundef %507)
          to label %509 unwind label %522

509:                                              ; preds = %503
  %510 = load ptr, ptr %10, align 8, !tbaa !5
  %511 = load i32, ptr %56, align 4, !tbaa !13
  %512 = load i32, ptr %54, align 4, !tbaa !13
  %513 = invoke noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %510, i32 noundef %511, i32 noundef %512)
          to label %514 unwind label %522

514:                                              ; preds = %509
  %515 = getelementptr inbounds %"class.SGTELIB::Surrogate_Ensemble_Stat", ptr %62, i32 0, i32 11
  %516 = load double, ptr %515, align 8, !tbaa !74
  %517 = invoke noundef double @_ZN7SGTELIB7sigmoidEdddd(double noundef %504, double noundef %508, double noundef %513, double noundef %516)
          to label %518 unwind label %522

518:                                              ; preds = %514
  store double %517, ptr %53, align 8, !tbaa !51
  %519 = load double, ptr %53, align 8, !tbaa !51
  %520 = fcmp olt double %519, 0.000000e+00
  br i1 %520, label %521, label %526

521:                                              ; preds = %518
  store double 0.000000e+00, ptr %53, align 8, !tbaa !51
  br label %526

522:                                              ; preds = %526, %514, %509, %503
  %523 = landingpad { ptr, i32 }
          cleanup
  %524 = extractvalue { ptr, i32 } %523, 0
  store ptr %524, ptr %15, align 8
  %525 = extractvalue { ptr, i32 } %523, 1
  store i32 %525, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #10
  br label %642

526:                                              ; preds = %521, %518
  %527 = load ptr, ptr %12, align 8, !tbaa !5
  %528 = load i32, ptr %56, align 4, !tbaa !13
  %529 = load i32, ptr %54, align 4, !tbaa !13
  %530 = load double, ptr %53, align 8, !tbaa !51
  invoke void @_ZN7SGTELIB6Matrix3setEiid(ptr noundef nonnull align 8 dereferenceable(56) %527, i32 noundef %528, i32 noundef %529, double noundef %530)
          to label %531 unwind label %522

531:                                              ; preds = %526
  br label %532

532:                                              ; preds = %531
  %533 = load i32, ptr %56, align 4, !tbaa !13
  %534 = add nsw i32 %533, 1
  store i32 %534, ptr %56, align 4, !tbaa !13
  br label %494, !llvm.loop !75

535:                                              ; preds = %498
  br label %536

536:                                              ; preds = %535, %490
  %537 = load ptr, ptr %11, align 8, !tbaa !5
  %538 = icmp ne ptr %537, null
  br i1 %538, label %539, label %576

539:                                              ; preds = %536
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #10
  store i32 0, ptr %57, align 4, !tbaa !13
  br label %540

540:                                              ; preds = %572, %539
  %541 = load i32, ptr %57, align 4, !tbaa !13
  %542 = load i32, ptr %18, align 4, !tbaa !13
  %543 = icmp slt i32 %541, %542
  br i1 %543, label %545, label %544

544:                                              ; preds = %540
  store i32 32, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #10
  br label %575

545:                                              ; preds = %540
  %546 = load ptr, ptr %9, align 8, !tbaa !5
  %547 = load i32, ptr %57, align 4, !tbaa !13
  %548 = load i32, ptr %54, align 4, !tbaa !13
  %549 = invoke noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %546, i32 noundef %547, i32 noundef %548)
          to label %550 unwind label %562

550:                                              ; preds = %545
  %551 = load ptr, ptr %10, align 8, !tbaa !5
  %552 = load i32, ptr %57, align 4, !tbaa !13
  %553 = load i32, ptr %54, align 4, !tbaa !13
  %554 = invoke noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %551, i32 noundef %552, i32 noundef %553)
          to label %555 unwind label %562

555:                                              ; preds = %550
  %556 = load double, ptr %19, align 8, !tbaa !51
  %557 = invoke noundef double @_ZN7SGTELIB5neweiEddd(double noundef %549, double noundef %554, double noundef %556)
          to label %558 unwind label %562

558:                                              ; preds = %555
  store double %557, ptr %53, align 8, !tbaa !51
  %559 = load double, ptr %53, align 8, !tbaa !51
  %560 = fcmp olt double %559, 0.000000e+00
  br i1 %560, label %561, label %566

561:                                              ; preds = %558
  store double 0.000000e+00, ptr %53, align 8, !tbaa !51
  br label %566

562:                                              ; preds = %566, %555, %550, %545
  %563 = landingpad { ptr, i32 }
          cleanup
  %564 = extractvalue { ptr, i32 } %563, 0
  store ptr %564, ptr %15, align 8
  %565 = extractvalue { ptr, i32 } %563, 1
  store i32 %565, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #10
  br label %642

566:                                              ; preds = %561, %558
  %567 = load ptr, ptr %11, align 8, !tbaa !5
  %568 = load i32, ptr %57, align 4, !tbaa !13
  %569 = load i32, ptr %54, align 4, !tbaa !13
  %570 = load double, ptr %53, align 8, !tbaa !51
  invoke void @_ZN7SGTELIB6Matrix3setEiid(ptr noundef nonnull align 8 dereferenceable(56) %567, i32 noundef %568, i32 noundef %569, double noundef %570)
          to label %571 unwind label %562

571:                                              ; preds = %566
  br label %572

572:                                              ; preds = %571
  %573 = load i32, ptr %57, align 4, !tbaa !13
  %574 = add nsw i32 %573, 1
  store i32 %574, ptr %57, align 4, !tbaa !13
  br label %540, !llvm.loop !76

575:                                              ; preds = %544
  br label %576

576:                                              ; preds = %575, %536
  br label %638

577:                                              ; preds = %488
  %578 = getelementptr inbounds %"class.SGTELIB::Surrogate", ptr %62, i32 0, i32 1
  %579 = load ptr, ptr %578, align 8, !tbaa !15
  %580 = load i32, ptr %54, align 4, !tbaa !13
  %581 = invoke noundef i32 @_ZNK7SGTELIB11TrainingSet7get_bboEi(ptr noundef nonnull align 8 dereferenceable(504) %579, i32 noundef %580)
          to label %582 unwind label %499

582:                                              ; preds = %577
  %583 = icmp eq i32 %581, 1
  br i1 %583, label %584, label %637

584:                                              ; preds = %582
  %585 = load ptr, ptr %12, align 8, !tbaa !5
  %586 = icmp ne ptr %585, null
  br i1 %586, label %587, label %636

587:                                              ; preds = %584
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #10
  %588 = getelementptr inbounds %"class.SGTELIB::Surrogate", ptr %62, i32 0, i32 1
  %589 = load ptr, ptr %588, align 8, !tbaa !15
  %590 = load i32, ptr %54, align 4, !tbaa !13
  %591 = invoke noundef double @_ZNK7SGTELIB11TrainingSet7Z_scaleEdi(ptr noundef nonnull align 8 dereferenceable(504) %589, double noundef 0.000000e+00, i32 noundef %590)
          to label %592 unwind label %598

592:                                              ; preds = %587
  store double %591, ptr %58, align 8, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #10
  store i32 0, ptr %59, align 4, !tbaa !13
  br label %593

593:                                              ; preds = %631, %592
  %594 = load i32, ptr %59, align 4, !tbaa !13
  %595 = load i32, ptr %18, align 4, !tbaa !13
  %596 = icmp slt i32 %594, %595
  br i1 %596, label %602, label %597

597:                                              ; preds = %593
  store i32 35, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #10
  br label %634

598:                                              ; preds = %587
  %599 = landingpad { ptr, i32 }
          cleanup
  %600 = extractvalue { ptr, i32 } %599, 0
  store ptr %600, ptr %15, align 8
  %601 = extractvalue { ptr, i32 } %599, 1
  store i32 %601, ptr %16, align 4
  br label %635

602:                                              ; preds = %593
  %603 = load double, ptr %58, align 8, !tbaa !51
  %604 = load ptr, ptr %9, align 8, !tbaa !5
  %605 = load i32, ptr %59, align 4, !tbaa !13
  %606 = load i32, ptr %54, align 4, !tbaa !13
  %607 = invoke noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %604, i32 noundef %605, i32 noundef %606)
          to label %608 unwind label %621

608:                                              ; preds = %602
  %609 = load ptr, ptr %10, align 8, !tbaa !5
  %610 = load i32, ptr %59, align 4, !tbaa !13
  %611 = load i32, ptr %54, align 4, !tbaa !13
  %612 = invoke noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %609, i32 noundef %610, i32 noundef %611)
          to label %613 unwind label %621

613:                                              ; preds = %608
  %614 = getelementptr inbounds %"class.SGTELIB::Surrogate_Ensemble_Stat", ptr %62, i32 0, i32 10
  %615 = load double, ptr %614, align 8, !tbaa !77
  %616 = invoke noundef double @_ZN7SGTELIB7sigmoidEdddd(double noundef %603, double noundef %607, double noundef %612, double noundef %615)
          to label %617 unwind label %621

617:                                              ; preds = %613
  store double %616, ptr %53, align 8, !tbaa !51
  %618 = load double, ptr %53, align 8, !tbaa !51
  %619 = fcmp olt double %618, 0.000000e+00
  br i1 %619, label %620, label %625

620:                                              ; preds = %617
  store double 0.000000e+00, ptr %53, align 8, !tbaa !51
  br label %625

621:                                              ; preds = %625, %613, %608, %602
  %622 = landingpad { ptr, i32 }
          cleanup
  %623 = extractvalue { ptr, i32 } %622, 0
  store ptr %623, ptr %15, align 8
  %624 = extractvalue { ptr, i32 } %622, 1
  store i32 %624, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #10
  br label %635

625:                                              ; preds = %620, %617
  %626 = load ptr, ptr %12, align 8, !tbaa !5
  %627 = load i32, ptr %59, align 4, !tbaa !13
  %628 = load i32, ptr %54, align 4, !tbaa !13
  %629 = load double, ptr %53, align 8, !tbaa !51
  invoke void @_ZN7SGTELIB6Matrix3setEiid(ptr noundef nonnull align 8 dereferenceable(56) %626, i32 noundef %627, i32 noundef %628, double noundef %629)
          to label %630 unwind label %621

630:                                              ; preds = %625
  br label %631

631:                                              ; preds = %630
  %632 = load i32, ptr %59, align 4, !tbaa !13
  %633 = add nsw i32 %632, 1
  store i32 %633, ptr %59, align 4, !tbaa !13
  br label %593, !llvm.loop !78

634:                                              ; preds = %597
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #10
  br label %636

635:                                              ; preds = %621, %598
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #10
  br label %642

636:                                              ; preds = %634, %584
  br label %637

637:                                              ; preds = %636, %582
  br label %638

638:                                              ; preds = %637, %576
  br label %639

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

642:                                              ; preds = %635, %562, %522, %499, %478
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #10
  br label %644

643:                                              ; preds = %455
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  br label %645

644:                                              ; preds = %642, %433
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  br label %721

645:                                              ; preds = %643, %424
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #10
  store i32 0, ptr %60, align 4, !tbaa !13
  br label %646

646:                                              ; preds = %662, %645
  %647 = load i32, ptr %60, align 4, !tbaa !13
  %648 = load i32, ptr %18, align 4, !tbaa !13
  %649 = icmp slt i32 %647, %648
  br i1 %649, label %651, label %650

650:                                              ; preds = %646
  store i32 38, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #10
  br label %665

651:                                              ; preds = %646
  %652 = load i32, ptr %60, align 4, !tbaa !13
  %653 = sext i32 %652 to i64
  %654 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %653) #10
  %655 = load ptr, ptr %654, align 8, !tbaa !5
  %656 = icmp eq ptr %655, null
  br i1 %656, label %661, label %657

657:                                              ; preds = %651
  %658 = load ptr, ptr %655, align 8, !tbaa !11
  %659 = getelementptr inbounds ptr, ptr %658, i64 1
  %660 = load ptr, ptr %659, align 8
  call void %660(ptr noundef nonnull align 8 dereferenceable(56) %655) #10
  br label %661

661:                                              ; preds = %657, %651
  br label %662

662:                                              ; preds = %661
  %663 = load i32, ptr %60, align 4, !tbaa !13
  %664 = add nsw i32 %663, 1
  store i32 %664, ptr %60, align 4, !tbaa !13
  br label %646, !llvm.loop !80

665:                                              ; preds = %650
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #10
  store i32 0, ptr %61, align 4, !tbaa !13
  br label %666

666:                                              ; preds = %703, %665
  %667 = load i32, ptr %61, align 4, !tbaa !13
  %668 = getelementptr inbounds %"class.SGTELIB::Surrogate_Ensemble_Stat", ptr %62, i32 0, i32 1
  %669 = load i32, ptr %668, align 4, !tbaa !63
  %670 = icmp slt i32 %667, %669
  br i1 %670, label %672, label %671

671:                                              ; preds = %666
  store i32 41, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #10
  br label %706

672:                                              ; preds = %666
  %673 = load i32, ptr %61, align 4, !tbaa !13
  %674 = sext i32 %673 to i64
  %675 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %674) #10
  %676 = load ptr, ptr %675, align 8, !tbaa !5
  %677 = icmp eq ptr %676, null
  br i1 %677, label %682, label %678

678:                                              ; preds = %672
  %679 = load ptr, ptr %676, align 8, !tbaa !11
  %680 = getelementptr inbounds ptr, ptr %679, i64 1
  %681 = load ptr, ptr %680, align 8
  call void %681(ptr noundef nonnull align 8 dereferenceable(56) %676) #10
  br label %682

682:                                              ; preds = %678, %672
  %683 = load i32, ptr %61, align 4, !tbaa !13
  %684 = sext i32 %683 to i64
  %685 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %684) #10
  %686 = load ptr, ptr %685, align 8, !tbaa !5
  %687 = icmp eq ptr %686, null
  br i1 %687, label %692, label %688

688:                                              ; preds = %682
  %689 = load ptr, ptr %686, align 8, !tbaa !11
  %690 = getelementptr inbounds ptr, ptr %689, i64 1
  %691 = load ptr, ptr %690, align 8
  call void %691(ptr noundef nonnull align 8 dereferenceable(56) %686) #10
  br label %692

692:                                              ; preds = %688, %682
  %693 = load i32, ptr %61, align 4, !tbaa !13
  %694 = sext i32 %693 to i64
  %695 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %694) #10
  %696 = load ptr, ptr %695, align 8, !tbaa !5
  %697 = icmp eq ptr %696, null
  br i1 %697, label %702, label %698

698:                                              ; preds = %692
  %699 = load ptr, ptr %696, align 8, !tbaa !11
  %700 = getelementptr inbounds ptr, ptr %699, i64 1
  %701 = load ptr, ptr %700, align 8
  call void %701(ptr noundef nonnull align 8 dereferenceable(56) %696) #10
  br label %702

702:                                              ; preds = %698, %692
  br label %703

703:                                              ; preds = %702
  %704 = load i32, ptr %61, align 4, !tbaa !13
  %705 = add nsw i32 %704, 1
  store i32 %705, ptr %61, align 4, !tbaa !13
  br label %666, !llvm.loop !81

706:                                              ; preds = %671
  %707 = load i8, ptr %20, align 1, !tbaa !52, !range !68, !noundef !69
  %708 = trunc i8 %707 to i1
  br i1 %708, label %709, label %717

709:                                              ; preds = %706
  %710 = load ptr, ptr %9, align 8, !tbaa !5
  %711 = icmp eq ptr %710, null
  br i1 %711, label %716, label %712

712:                                              ; preds = %709
  %713 = load ptr, ptr %710, align 8, !tbaa !11
  %714 = getelementptr inbounds ptr, ptr %713, i64 1
  %715 = load ptr, ptr %714, align 8
  call void %715(ptr noundef nonnull align 8 dereferenceable(56) %710) #10
  br label %716

716:                                              ; preds = %712, %709
  br label %717

717:                                              ; preds = %716, %706
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %42) #10
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #10
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #10
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #10
  store i32 0, ptr %17, align 4
  br label %718

718:                                              ; preds = %717, %81
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #10
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %13) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %13) #10
  %719 = load i32, ptr %17, align 4
  switch i32 %719, label %735 [
    i32 0, label %720
    i32 1, label %720
  ]

720:                                              ; preds = %718, %718
  ret void

721:                                              ; preds = %644, %412, %305
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  br label %722

722:                                              ; preds = %721, %295
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %42) #10
  br label %723

723:                                              ; preds = %722, %258
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #10
  br label %724

724:                                              ; preds = %723, %221
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #10
  br label %725

725:                                              ; preds = %724, %184
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #10
  br label %726

726:                                              ; preds = %725, %127, %112
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #10
  br label %727

727:                                              ; preds = %726, %108
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  br label %728

728:                                              ; preds = %727, %104
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #10
  br label %729

729:                                              ; preds = %728, %82
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #10
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %13) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %13) #10
  br label %730

730:                                              ; preds = %729
  %731 = load ptr, ptr %15, align 8
  %732 = load i32, ptr %16, align 4
  %733 = insertvalue { ptr, i32 } poison, ptr %731, 0
  %734 = insertvalue { ptr, i32 } %733, i32 %732, 1
  resume { ptr, i32 } %734

735:                                              ; preds = %718
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZNK7SGTELIB11TrainingSet10get_fs_minEv(ptr noundef nonnull align 8 dereferenceable(504)) #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZNK7SGTELIB23Surrogate_Ensemble_Stat13compute_sigmaEiiRKSt6vectorIPNS_6MatrixESaIS3_EES7_S7_(ptr noundef nonnull align 8 dereferenceable(1136), i32 noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

declare noundef double @_ZN7SGTELIB7sigmoidEdddd(double noundef, double noundef, double noundef, double noundef) #3

declare noundef double @_ZN7SGTELIB5neweiEddd(double noundef, double noundef, double noundef) #3

declare noundef double @_ZNK7SGTELIB11TrainingSet7Z_scaleEdi(ptr noundef nonnull align 8 dereferenceable(504), double noundef, i32 noundef) #3

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"_ZTSN7SGTELIB13uncertainty_tE", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"vtable pointer", !8, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!16, !6, i64 8}
!16 = !{!"_ZTSN7SGTELIB9SurrogateE", !6, i64 8, !17, i64 16, !14, i64 328, !14, i64 332, !14, i64 336, !14, i64 340, !14, i64 344, !14, i64 348, !29, i64 352, !6, i64 360, !6, i64 368, !6, i64 376, !6, i64 384, !30, i64 392, !35, i64 416, !21, i64 464, !43, i64 472, !29, i64 984}
!17 = !{!"_ZTSN7SGTELIB20Surrogate_ParametersE", !18, i64 8, !14, i64 12, !19, i64 16, !20, i64 20, !19, i64 24, !21, i64 32, !19, i64 40, !21, i64 48, !19, i64 56, !22, i64 60, !19, i64 64, !23, i64 72, !27, i64 128, !19, i64 132, !10, i64 136, !21, i64 144, !21, i64 152, !21, i64 160, !21, i64 168, !23, i64 176, !19, i64 232, !28, i64 236, !24, i64 240, !24, i64 272, !14, i64 304, !14, i64 308}
!18 = !{!"_ZTSN7SGTELIB7model_tE", !7, i64 0}
!19 = !{!"_ZTSN7SGTELIB14param_status_tE", !7, i64 0}
!20 = !{!"_ZTSN7SGTELIB8kernel_tE", !7, i64 0}
!21 = !{!"double", !7, i64 0}
!22 = !{!"_ZTSN7SGTELIB10distance_tE", !7, i64 0}
!23 = !{!"_ZTSN7SGTELIB6MatrixE", !24, i64 8, !14, i64 40, !14, i64 44, !6, i64 48}
!24 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !25, i64 0, !26, i64 8, !7, i64 16}
!25 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!26 = !{!"long", !7, i64 0}
!27 = !{!"_ZTSN7SGTELIB8weight_tE", !7, i64 0}
!28 = !{!"_ZTSN7SGTELIB8metric_tE", !7, i64 0}
!29 = !{!"bool", !7, i64 0}
!30 = !{!"_ZTSNSt7__cxx114listIiSaIiEEE", !31, i64 0}
!31 = !{!"_ZTSNSt7__cxx1110_List_baseIiSaIiEEE", !32, i64 0}
!32 = !{!"_ZTSNSt7__cxx1110_List_baseIiSaIiEE10_List_implE", !33, i64 0}
!33 = !{!"_ZTSNSt8__detail17_List_node_headerE", !34, i64 0, !26, i64 16}
!34 = !{!"_ZTSNSt8__detail15_List_node_baseE", !6, i64 0, !6, i64 8}
!35 = !{!"_ZTSSt3mapIN7SGTELIB8metric_tENS0_6MatrixESt4lessIS1_ESaISt4pairIKS1_S2_EEE", !36, i64 0}
!36 = !{!"_ZTSSt8_Rb_treeIN7SGTELIB8metric_tESt4pairIKS1_NS0_6MatrixEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !37, i64 0}
!37 = !{!"_ZTSNSt8_Rb_treeIN7SGTELIB8metric_tESt4pairIKS1_NS0_6MatrixEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !38, i64 0, !40, i64 8}
!38 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN7SGTELIB8metric_tEEE", !39, i64 0}
!39 = !{!"_ZTSSt4lessIN7SGTELIB8metric_tEE"}
!40 = !{!"_ZTSSt15_Rb_tree_header", !41, i64 0, !26, i64 32}
!41 = !{!"_ZTSSt18_Rb_tree_node_base", !42, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!42 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!43 = !{!"_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE", !44, i64 0, !45, i64 8}
!44 = !{!"_ZTSSo"}
!45 = !{!"_ZTSSt13basic_filebufIcSt11char_traitsIcEE", !46, i64 0, !7, i64 64, !48, i64 104, !49, i64 120, !50, i64 124, !50, i64 132, !50, i64 140, !6, i64 152, !26, i64 160, !29, i64 168, !29, i64 169, !29, i64 170, !7, i64 171, !6, i64 176, !6, i64 184, !29, i64 192, !6, i64 200, !6, i64 208, !26, i64 216, !6, i64 224, !6, i64 232}
!46 = !{!"_ZTSSt15basic_streambufIcSt11char_traitsIcEE", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !47, i64 56}
!47 = !{!"_ZTSSt6locale", !6, i64 0}
!48 = !{!"_ZTSSt12__basic_fileIcE", !6, i64 0, !29, i64 8}
!49 = !{!"_ZTSSt13_Ios_Openmode", !7, i64 0}
!50 = !{!"_ZTS11__mbstate_t", !14, i64 0, !7, i64 4}
!51 = !{!21, !21, i64 0}
!52 = !{!29, !29, i64 0}
!53 = !{!16, !14, i64 332}
!54 = !{!55, !14, i64 1096}
!55 = !{!"_ZTSN7SGTELIB23Surrogate_Ensemble_StatE", !16, i64 0, !14, i64 988, !14, i64 992, !56, i64 1000, !6, i64 1024, !6, i64 1032, !23, i64 1040, !14, i64 1096, !21, i64 1104, !21, i64 1112, !21, i64 1120, !21, i64 1128}
!56 = !{!"_ZTSSt6vectorIPN7SGTELIB9SurrogateESaIS2_EE", !57, i64 0}
!57 = !{!"_ZTSSt12_Vector_baseIPN7SGTELIB9SurrogateESaIS2_EE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIPN7SGTELIB9SurrogateESaIS2_EE12_Vector_implE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIPN7SGTELIB9SurrogateESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!60 = !{!16, !14, i64 328}
!61 = distinct !{!61, !62}
!62 = !{!"llvm.loop.mustprogress"}
!63 = !{!55, !14, i64 988}
!64 = distinct !{!64, !62}
!65 = distinct !{!65, !62}
!66 = distinct !{!66, !62}
!67 = !{!55, !6, i64 1024}
!68 = !{i8 0, i8 2}
!69 = !{}
!70 = distinct !{!70, !62}
!71 = distinct !{!71, !62}
!72 = distinct !{!72, !62}
!73 = distinct !{!73, !62}
!74 = !{!55, !21, i64 1128}
!75 = distinct !{!75, !62}
!76 = distinct !{!76, !62}
!77 = !{!55, !21, i64 1120}
!78 = distinct !{!78, !62}
!79 = distinct !{!79, !62}
!80 = distinct !{!80, !62}
!81 = distinct !{!81, !62}


; 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.SGTELIB::Matrix" = type { ptr, %"class.std::__cxx11::basic_string", i32, i32, ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"class.std::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = type { %"struct.std::_Vector_base<SGTELIB::Matrix *, std::allocator<SGTELIB::Matrix *>>::_Vector_impl" }
%"struct.std::_Vector_base<SGTELIB::Matrix *, std::allocator<SGTELIB::Matrix *>>::_Vector_impl" = type { %"struct.std::_Vector_base<SGTELIB::Matrix *, std::allocator<SGTELIB::Matrix *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SGTELIB::Matrix *, std::allocator<SGTELIB::Matrix *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.27 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [10 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

declare void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, i32 noundef) unnamed_addr #3

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

declare void @_ZN7SGTELIB6Matrix4fillEd(ptr noundef nonnull align 8 dereferenceable(56), double noundef) local_unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #4

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7SGTELIB20Surrogate_Parameters10get_weightEv(ptr dead_on_unwind noalias writable sret(%"class.SGTELIB::Matrix") align 8, ptr noundef nonnull align 8 dereferenceable(312)) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7SGTELIB20Surrogate_Parameters20get_uncertainty_typeEv(ptr noundef nonnull align 8 dereferenceable(312)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, i32 noundef) local_unnamed_addr #6

declare void @_ZN7SGTELIB6Matrix3setEiid(ptr noundef nonnull align 8 dereferenceable(56), i32 noundef, i32 noundef, double noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_rowsEv(ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7SGTELIB23Surrogate_Ensemble_Stat18build_set_around_xERKNS_6MatrixERSt6vectorIPS1_SaIS5_EE(ptr noundef nonnull align 8 dereferenceable(1136), ptr noundef nonnull align 8 dereferenceable(56), 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 @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7SGTELIB23Surrogate_Ensemble_Stat15predict_privateERKNS_6MatrixEPS1_S4_S4_S4_(ptr noundef nonnull align 8 dereferenceable(1136) %0, ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca %"class.SGTELIB::Matrix", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::allocator", align 1
  %10 = alloca %"class.std::vector.11", align 8
  %11 = alloca ptr, align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::vector.11", align 8
  %15 = alloca ptr, align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::vector.11", align 8
  %19 = alloca ptr, align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::vector.11", align 8
  %23 = alloca ptr, align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %7) #10
  %26 = getelementptr inbounds i8, ptr %0, i64 16
  call void @_ZNK7SGTELIB20Surrogate_Parameters10get_weightEv(ptr dead_on_unwind nonnull writable sret(%"class.SGTELIB::Matrix") align 8 %7, ptr noundef nonnull align 8 dereferenceable(312) %26)
  %27 = call noundef i32 @_ZNK7SGTELIB20Surrogate_Parameters20get_uncertainty_typeEv(ptr noundef nonnull align 8 dereferenceable(312) %26)
  %28 = icmp ne ptr %3, null
  %29 = icmp ne ptr %4, null
  %or.cond = or i1 %28, %29
  %30 = icmp ne ptr %5, null
  %or.cond3 = or i1 %or.cond, %30
  br i1 %or.cond3, label %37, label %31

31:                                               ; preds = %6
  %32 = load ptr, ptr %0, align 8, !tbaa !5
  %33 = getelementptr inbounds i8, ptr %32, i64 32
  %34 = load ptr, ptr %33, align 8
  invoke void %34(ptr noundef nonnull align 8 dereferenceable(1136) %0, ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef %2)
          to label %321 unwind label %35

35:                                               ; preds = %31
  %36 = landingpad { ptr, i32 }
          cleanup
  br label %326

37:                                               ; preds = %6
  %38 = call noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_rowsEv(ptr noundef nonnull align 8 dereferenceable(56) %1)
  %39 = getelementptr inbounds i8, ptr %0, i64 8
  %40 = load ptr, ptr %39, align 8, !tbaa !8
  %41 = invoke noundef double @_ZNK7SGTELIB11TrainingSet10get_fs_minEv(ptr noundef nonnull align 8 dereferenceable(504) %40)
          to label %42 unwind label %50

42:                                               ; preds = %37
  %.not = icmp eq ptr %2, null
  br i1 %.not, label %43, label %59

43:                                               ; preds = %42
  %44 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #11
          to label %45 unwind label %52

45:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.27, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %46 unwind label %54

46:                                               ; preds = %45
  %47 = getelementptr inbounds i8, ptr %0, i64 332
  %48 = load i32, ptr %47, align 4, !tbaa !48
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %44, ptr noundef nonnull align 8 dereferenceable(32) %8, i32 noundef %38, i32 noundef %48)
          to label %49 unwind label %56

49:                                               ; preds = %46
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #10
  br label %59

50:                                               ; preds = %37
  %51 = landingpad { ptr, i32 }
          cleanup
  br label %326

52:                                               ; preds = %65, %63, %61, %59, %43
  %53 = landingpad { ptr, i32 }
          cleanup
  br label %326

54:                                               ; preds = %45
  %55 = landingpad { ptr, i32 }
          cleanup
  br label %58

56:                                               ; preds = %46
  %57 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #10
  br label %58

58:                                               ; preds = %56, %54
  %.pn = phi { ptr, i32 } [ %57, %56 ], [ %55, %54 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #10
  call void @_ZdlPvm(ptr noundef nonnull %44, i64 noundef 56) #12
  br label %326

59:                                               ; preds = %49, %42
  %.0161 = phi ptr [ %2, %42 ], [ %44, %49 ]
  invoke void @_ZN7SGTELIB6Matrix4fillEd(ptr noundef nonnull align 8 dereferenceable(56) %.0161, double noundef 0.000000e+00)
          to label %60 unwind label %52

60:                                               ; preds = %59
  br i1 %28, label %61, label %62

61:                                               ; preds = %60
  invoke void @_ZN7SGTELIB6Matrix4fillEd(ptr noundef nonnull align 8 dereferenceable(56) %3, double noundef 0.000000e+00)
          to label %62 unwind label %52

62:                                               ; preds = %61, %60
  br i1 %29, label %63, label %64

63:                                               ; preds = %62
  invoke void @_ZN7SGTELIB6Matrix4fillEd(ptr noundef nonnull align 8 dereferenceable(56) %4, double noundef 0.000000e+00)
          to label %64 unwind label %52

64:                                               ; preds = %63, %62
  br i1 %30, label %65, label %66

65:                                               ; preds = %64
  invoke void @_ZN7SGTELIB6Matrix4fillEd(ptr noundef nonnull align 8 dereferenceable(56) %5, double noundef 0.000000e+00)
          to label %66 unwind label %52

66:                                               ; preds = %65, %64
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #10
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #10
  %67 = icmp sgt i32 %38, 0
  br i1 %67, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %66
  %68 = getelementptr inbounds i8, ptr %0, i64 1096
  %69 = getelementptr inbounds i8, ptr %0, i64 328
  br label %74

._crit_edge:                                      ; preds = %81, %66
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #10
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  %70 = getelementptr inbounds i8, ptr %0, i64 988
  %71 = load i32, ptr %70, align 4, !tbaa !49
  %72 = icmp sgt i32 %71, 0
  br i1 %72, label %.lr.ph295, label %._crit_edge296

.lr.ph295:                                        ; preds = %._crit_edge
  %73 = getelementptr inbounds i8, ptr %0, i64 332
  br label %93

74:                                               ; preds = %.lr.ph, %81
  %.0205292 = phi i32 [ 0, %.lr.ph ], [ %82, %81 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #10
  %75 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #11
          to label %76 unwind label %83

76:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #10
  call void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, i32 noundef %.0205292) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull @.str.28, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %77 unwind label %.thread

77:                                               ; preds = %76
  %78 = load i32, ptr %68, align 8, !tbaa !55
  %79 = load i32, ptr %69, align 8, !tbaa !56
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %75, ptr noundef nonnull align 8 dereferenceable(32) %12, i32 noundef %78, i32 noundef %79)
          to label %80 unwind label %86

80:                                               ; preds = %77
  store ptr %75, ptr %11, align 8, !tbaa !57
  invoke void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %81 unwind label %86

81:                                               ; preds = %80
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #10
  %82 = add nuw nsw i32 %.0205292, 1
  %exitcond.not = icmp eq i32 %82, %38
  br i1 %exitcond.not, label %._crit_edge, label %74, !llvm.loop !58

83:                                               ; preds = %74
  %84 = landingpad { ptr, i32 }
          cleanup
  br label %89

.thread:                                          ; preds = %76
  %85 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #10
  br label %88

86:                                               ; preds = %77, %80
  %.0203 = phi i1 [ false, %80 ], [ true, %77 ]
  %87 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #10
  br i1 %.0203, label %88, label %89

88:                                               ; preds = %.thread, %86
  %.pn248257 = phi { ptr, i32 } [ %85, %.thread ], [ %87, %86 ]
  call void @_ZdlPvm(ptr noundef nonnull %75, i64 noundef 56) #12
  br label %89

89:                                               ; preds = %86, %88, %83
  %.pn248.pn = phi { ptr, i32 } [ %.pn248257, %88 ], [ %87, %86 ], [ %84, %83 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #10
  br label %325

._crit_edge296:                                   ; preds = %99, %._crit_edge
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #10
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #10
  %90 = load i32, ptr %70, align 4, !tbaa !49
  %91 = icmp sgt i32 %90, 0
  br i1 %91, label %.lr.ph299, label %._crit_edge300

.lr.ph299:                                        ; preds = %._crit_edge296
  %92 = getelementptr inbounds i8, ptr %0, i64 1096
  br label %113

93:                                               ; preds = %.lr.ph295, %99
  %.0202293 = phi i32 [ 0, %.lr.ph295 ], [ %100, %99 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #10
  %94 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #11
          to label %95 unwind label %103

95:                                               ; preds = %93
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #10
  call void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, i32 noundef %.0202293) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull @.str.29, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %96 unwind label %.thread258

96:                                               ; preds = %95
  %97 = load i32, ptr %73, align 4, !tbaa !48
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %94, ptr noundef nonnull align 8 dereferenceable(32) %16, i32 noundef %38, i32 noundef %97)
          to label %98 unwind label %106

98:                                               ; preds = %96
  store ptr %94, ptr %15, align 8, !tbaa !57
  invoke void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %99 unwind label %106

99:                                               ; preds = %98
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  %100 = add nuw nsw i32 %.0202293, 1
  %101 = load i32, ptr %70, align 4, !tbaa !49
  %102 = icmp slt i32 %100, %101
  br i1 %102, label %93, label %._crit_edge296, !llvm.loop !60

103:                                              ; preds = %93
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %109

.thread258:                                       ; preds = %95
  %105 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #10
  br label %108

106:                                              ; preds = %96, %98
  %.0200 = phi i1 [ false, %98 ], [ true, %96 ]
  %107 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #10
  br i1 %.0200, label %108, label %109

108:                                              ; preds = %.thread258, %106
  %.pn244261 = phi { ptr, i32 } [ %105, %.thread258 ], [ %107, %106 ]
  call void @_ZdlPvm(ptr noundef nonnull %94, i64 noundef 56) #12
  br label %109

109:                                              ; preds = %106, %108, %103
  %.pn244.pn = phi { ptr, i32 } [ %.pn244261, %108 ], [ %107, %106 ], [ %104, %103 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  br label %324

._crit_edge300:                                   ; preds = %119, %._crit_edge296
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #10
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #10
  %110 = load i32, ptr %70, align 4, !tbaa !49
  %111 = icmp sgt i32 %110, 0
  br i1 %111, label %.lr.ph303, label %._crit_edge304

.lr.ph303:                                        ; preds = %._crit_edge300
  %112 = getelementptr inbounds i8, ptr %0, i64 328
  br label %135

113:                                              ; preds = %.lr.ph299, %119
  %.0199297 = phi i32 [ 0, %.lr.ph299 ], [ %120, %119 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #10
  %114 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #11
          to label %115 unwind label %123

115:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #10
  call void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, i32 noundef %.0199297) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull @.str.30, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %116 unwind label %.thread262

116:                                              ; preds = %115
  %117 = load i32, ptr %92, align 8, !tbaa !55
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %114, ptr noundef nonnull align 8 dereferenceable(32) %20, i32 noundef %38, i32 noundef %117)
          to label %118 unwind label %126

118:                                              ; preds = %116
  store ptr %114, ptr %19, align 8, !tbaa !57
  invoke void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %119 unwind label %126

119:                                              ; preds = %118
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  %120 = add nuw nsw i32 %.0199297, 1
  %121 = load i32, ptr %70, align 4, !tbaa !49
  %122 = icmp slt i32 %120, %121
  br i1 %122, label %113, label %._crit_edge300, !llvm.loop !61

123:                                              ; preds = %113
  %124 = landingpad { ptr, i32 }
          cleanup
  br label %129

.thread262:                                       ; preds = %115
  %125 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #10
  br label %128

126:                                              ; preds = %116, %118
  %.0197 = phi i1 [ false, %118 ], [ true, %116 ]
  %127 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #10
  br i1 %.0197, label %128, label %129

128:                                              ; preds = %.thread262, %126
  %.pn240265 = phi { ptr, i32 } [ %125, %.thread262 ], [ %127, %126 ]
  call void @_ZdlPvm(ptr noundef nonnull %114, i64 noundef 56) #12
  br label %129

129:                                              ; preds = %126, %128, %123
  %.pn240.pn = phi { ptr, i32 } [ %.pn240265, %128 ], [ %127, %126 ], [ %124, %123 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  br label %323

._crit_edge304:                                   ; preds = %141, %._crit_edge300
  invoke void @_ZNK7SGTELIB23Surrogate_Ensemble_Stat18build_set_around_xERKNS_6MatrixERSt6vectorIPS1_SaIS5_EE(ptr noundef nonnull align 8 dereferenceable(1136) %0, ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef nonnull align 8 dereferenceable(24) %10)
          to label %.preheader280 unwind label %153

.preheader280:                                    ; preds = %._crit_edge304
  %130 = load i32, ptr %70, align 4, !tbaa !49
  %131 = icmp sgt i32 %130, 0
  br i1 %131, label %.lr.ph313, label %._crit_edge314

.lr.ph313:                                        ; preds = %.preheader280
  %132 = getelementptr inbounds i8, ptr %0, i64 1024
  %133 = getelementptr inbounds i8, ptr %0, i64 1000
  %134 = getelementptr inbounds i8, ptr %0, i64 332
  br label %155

135:                                              ; preds = %.lr.ph303, %141
  %.0196301 = phi i32 [ 0, %.lr.ph303 ], [ %142, %141 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #10
  %136 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #11
          to label %137 unwind label %145

137:                                              ; preds = %135
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #10
  call void @_ZNSt7__cxx119to_stringEi(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %25, i32 noundef %.0196301) #10
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_OS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull @.str.31, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %138 unwind label %.thread266

138:                                              ; preds = %137
  %139 = load i32, ptr %112, align 8, !tbaa !56
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %136, ptr noundef nonnull align 8 dereferenceable(32) %24, i32 noundef %38, i32 noundef %139)
          to label %140 unwind label %148

140:                                              ; preds = %138
  store ptr %136, ptr %23, align 8, !tbaa !57
  invoke void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %141 unwind label %148

141:                                              ; preds = %140
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #10
  %142 = add nuw nsw i32 %.0196301, 1
  %143 = load i32, ptr %70, align 4, !tbaa !49
  %144 = icmp slt i32 %142, %143
  br i1 %144, label %135, label %._crit_edge304, !llvm.loop !62

145:                                              ; preds = %135
  %146 = landingpad { ptr, i32 }
          cleanup
  br label %151

.thread266:                                       ; preds = %137
  %147 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #10
  br label %150

148:                                              ; preds = %138, %140
  %.0194 = phi i1 [ false, %140 ], [ true, %138 ]
  %149 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #10
  br i1 %.0194, label %150, label %151

150:                                              ; preds = %.thread266, %148
  %.pn236269 = phi { ptr, i32 } [ %147, %.thread266 ], [ %149, %148 ]
  call void @_ZdlPvm(ptr noundef nonnull %136, i64 noundef 56) #12
  br label %151

151:                                              ; preds = %148, %150, %145
  %.pn236.pn = phi { ptr, i32 } [ %.pn236269, %150 ], [ %149, %148 ], [ %146, %145 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #10
  br label %322

._crit_edge314:                                   ; preds = %204, %.preheader280
  %152 = icmp eq i32 %27, 0
  br i1 %152, label %208, label %209

153:                                              ; preds = %208, %._crit_edge304
  %154 = landingpad { ptr, i32 }
          cleanup
  br label %322

155:                                              ; preds = %.lr.ph313, %204
  %156 = phi i32 [ %130, %.lr.ph313 ], [ %205, %204 ]
  %indvars.iv = phi i64 [ 0, %.lr.ph313 ], [ %indvars.iv.next, %204 ]
  %157 = load ptr, ptr %132, align 8, !tbaa !63
  %158 = getelementptr inbounds i8, ptr %157, i64 %indvars.iv
  %159 = load i8, ptr %158, align 1, !tbaa !64, !range !65, !noundef !66
  %160 = trunc nuw i8 %159 to i1
  br i1 %160, label %161, label %204

161:                                              ; preds = %155
  %162 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN7SGTELIB9SurrogateESaIS2_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %133, i64 noundef %indvars.iv)
          to label %163 unwind label %176

163:                                              ; preds = %161
  %164 = load ptr, ptr %162, align 8, !tbaa !57
  %165 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %indvars.iv) #10
  %166 = load ptr, ptr %165, align 8, !tbaa !57
  %167 = load ptr, ptr %164, align 8, !tbaa !5
  %168 = getelementptr inbounds i8, ptr %167, i64 32
  %169 = load ptr, ptr %168, align 8
  invoke void %169(ptr noundef nonnull align 8 dereferenceable(985) %164, ptr noundef nonnull align 8 dereferenceable(56) %1, ptr noundef %166)
          to label %.preheader279 unwind label %176

.preheader279:                                    ; preds = %163
  br i1 %67, label %.preheader278.lr.ph, label %._crit_edge309

.preheader278.lr.ph:                              ; preds = %.preheader279
  %170 = load i32, ptr %134, align 4, !tbaa !48
  %171 = icmp sgt i32 %170, 0
  br i1 %171, label %.preheader278.preheader, label %._crit_edge309

.preheader278.preheader:                          ; preds = %.preheader278.lr.ph
  %172 = trunc nuw nsw i64 %indvars.iv to i32
  br label %.preheader278

.preheader278:                                    ; preds = %.preheader278.preheader, %._crit_edge307
  %173 = phi i32 [ %178, %._crit_edge307 ], [ %170, %.preheader278.preheader ]
  %.0168308 = phi i32 [ %179, %._crit_edge307 ], [ 0, %.preheader278.preheader ]
  %174 = icmp sgt i32 %173, 0
  br i1 %174, label %.lr.ph306, label %._crit_edge307

._crit_edge309:                                   ; preds = %._crit_edge307, %.preheader278.lr.ph, %.preheader279
  %175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN7SGTELIB9SurrogateESaIS2_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %133, i64 noundef %indvars.iv)
          to label %197 unwind label %176

176:                                              ; preds = %197, %._crit_edge309, %163, %161
  %177 = landingpad { ptr, i32 }
          cleanup
  br label %322

._crit_edge307:                                   ; preds = %193, %.preheader278
  %178 = phi i32 [ %173, %.preheader278 ], [ %195, %193 ]
  %179 = add nuw nsw i32 %.0168308, 1
  %exitcond358.not = icmp eq i32 %179, %38
  br i1 %exitcond358.not, label %._crit_edge309, label %.preheader278, !llvm.loop !67

.lr.ph306:                                        ; preds = %.preheader278, %193
  %.0167305 = phi i32 [ %194, %193 ], [ 0, %.preheader278 ]
  %180 = call noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %7, i32 noundef %172, i32 noundef %.0167305)
  %181 = load i32, ptr %70, align 4, !tbaa !49
  %182 = sitofp i32 %181 to double
  %183 = fdiv double 1.000000e-13, %182
  %184 = fcmp ogt double %180, %183
  br i1 %184, label %185, label %193

185:                                              ; preds = %.lr.ph306
  %186 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %indvars.iv) #10
  %187 = load ptr, ptr %186, align 8, !tbaa !57
  %188 = call noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %187, i32 noundef %.0168308, i32 noundef %.0167305)
  %189 = call noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %.0161, i32 noundef %.0168308, i32 noundef %.0167305)
  %190 = call double @llvm.fmuladd.f64(double %180, double %188, double %189)
  invoke void @_ZN7SGTELIB6Matrix3setEiid(ptr noundef nonnull align 8 dereferenceable(56) %.0161, i32 noundef %.0168308, i32 noundef %.0167305, double noundef %190)
          to label %193 unwind label %191

191:                                              ; preds = %185
  %192 = landingpad { ptr, i32 }
          cleanup
  br label %322

193:                                              ; preds = %.lr.ph306, %185
  %194 = add nuw nsw i32 %.0167305, 1
  %195 = load i32, ptr %134, align 4, !tbaa !48
  %196 = icmp slt i32 %194, %195
  br i1 %196, label %.lr.ph306, label %._crit_edge307, !llvm.loop !69

197:                                              ; preds = %._crit_edge309
  %198 = load ptr, ptr %175, align 8, !tbaa !57
  %199 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %indvars.iv) #10
  %200 = load ptr, ptr %199, align 8, !tbaa !57
  %201 = load ptr, ptr %198, align 8, !tbaa !5
  %202 = getelementptr inbounds i8, ptr %201, i64 40
  %203 = load ptr, ptr %202, align 8
  invoke void %203(ptr noundef nonnull align 8 dereferenceable(985) %198, ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef %200)
          to label %._crit_edge371 unwind label %176

._crit_edge371:                                   ; preds = %197
  %.pre = load i32, ptr %70, align 4, !tbaa !49
  br label %204

204:                                              ; preds = %._crit_edge371, %155
  %205 = phi i32 [ %.pre, %._crit_edge371 ], [ %156, %155 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %206 = sext i32 %205 to i64
  %207 = icmp slt i64 %indvars.iv.next, %206
  br i1 %207, label %155, label %._crit_edge314, !llvm.loop !70

208:                                              ; preds = %._crit_edge314
  invoke void @_ZNK7SGTELIB23Surrogate_Ensemble_Stat24compute_simplex_gradientERKSt6vectorIPNS_6MatrixESaIS3_EES7_RS5_(ptr noundef nonnull align 8 dereferenceable(1136) %0, ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %209 unwind label %153

209:                                              ; preds = %._crit_edge314, %208
  br i1 %28, label %210, label %213

210:                                              ; preds = %209
  invoke void @_ZN7SGTELIB6Matrix4fillEd(ptr noundef nonnull align 8 dereferenceable(56) %3, double noundef 0xFFEFFFFFFFFFFFFF)
          to label %213 unwind label %211

211:                                              ; preds = %216, %214, %210
  %212 = landingpad { ptr, i32 }
          cleanup
  br label %322

213:                                              ; preds = %210, %209
  br i1 %29, label %214, label %215

214:                                              ; preds = %213
  invoke void @_ZN7SGTELIB6Matrix4fillEd(ptr noundef nonnull align 8 dereferenceable(56) %4, double noundef 0xFFEFFFFFFFFFFFFF)
          to label %215 unwind label %211

215:                                              ; preds = %214, %213
  br i1 %30, label %216, label %217

216:                                              ; preds = %215
  invoke void @_ZN7SGTELIB6Matrix4fillEd(ptr noundef nonnull align 8 dereferenceable(56) %5, double noundef 0xFFEFFFFFFFFFFFFF)
          to label %217 unwind label %211

217:                                              ; preds = %216, %215
  %218 = getelementptr inbounds i8, ptr %0, i64 332
  %219 = load i32, ptr %218, align 4, !tbaa !48
  %220 = icmp sgt i32 %219, 0
  br i1 %220, label %.lr.ph328, label %.preheader270

.lr.ph328:                                        ; preds = %217
  %221 = getelementptr inbounds i8, ptr %0, i64 1120
  %222 = getelementptr inbounds i8, ptr %0, i64 1128
  %brmerge.not = and i1 %67, %28
  %brmerge338.not = and i1 %67, %30
  %brmerge341.not = and i1 %67, %29
  br label %223

.preheader270:                                    ; preds = %.loopexit, %217
  br i1 %67, label %.lr.ph330.preheader, label %.preheader

.lr.ph330.preheader:                              ; preds = %.preheader270
  %wide.trip.count = zext nneg i32 %38 to i64
  br label %.lr.ph330

223:                                              ; preds = %.lr.ph328, %.loopexit
  %.0165323 = phi i32 [ 0, %.lr.ph328 ], [ %276, %.loopexit ]
  br i1 %brmerge.not, label %.lr.ph316, label %.loopexit277

.lr.ph316:                                        ; preds = %223, %226
  %.0164315 = phi i32 [ %227, %226 ], [ 0, %223 ]
  %224 = invoke noundef double @_ZNK7SGTELIB23Surrogate_Ensemble_Stat13compute_sigmaEiiRKSt6vectorIPNS_6MatrixESaIS3_EES7_S7_(ptr noundef nonnull align 8 dereferenceable(1136) %0, i32 noundef %.0164315, i32 noundef %.0165323, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %225 unwind label %228

225:                                              ; preds = %.lr.ph316
  invoke void @_ZN7SGTELIB6Matrix3setEiid(ptr noundef nonnull align 8 dereferenceable(56) %3, i32 noundef %.0164315, i32 noundef %.0165323, double noundef %224)
          to label %226 unwind label %228

226:                                              ; preds = %225
  %227 = add nuw nsw i32 %.0164315, 1
  %exitcond360.not = icmp eq i32 %227, %38
  br i1 %exitcond360.not, label %.loopexit277, label %.lr.ph316, !llvm.loop !71

228:                                              ; preds = %225, %.lr.ph316
  %229 = landingpad { ptr, i32 }
          cleanup
  br label %322

.loopexit277:                                     ; preds = %226, %223
  %230 = load ptr, ptr %39, align 8, !tbaa !8
  %231 = invoke noundef i32 @_ZNK7SGTELIB11TrainingSet7get_bboEi(ptr noundef nonnull align 8 dereferenceable(504) %230, i32 noundef %.0165323)
          to label %232 unwind label %235

232:                                              ; preds = %.loopexit277
  %233 = icmp eq i32 %231, 0
  br i1 %233, label %234, label %256

234:                                              ; preds = %232
  br i1 %brmerge338.not, label %.lr.ph320, label %.loopexit273

235:                                              ; preds = %256, %.loopexit277
  %236 = landingpad { ptr, i32 }
          cleanup
  br label %322

.lr.ph320:                                        ; preds = %234, %245
  %.0163319 = phi i32 [ %246, %245 ], [ 0, %234 ]
  %237 = call noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %.0161, i32 noundef %.0163319, i32 noundef %.0165323)
  %238 = call noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %3, i32 noundef %.0163319, i32 noundef %.0165323)
  %239 = load double, ptr %222, align 8, !tbaa !72
  %240 = invoke noundef double @_ZN7SGTELIB7sigmoidEdddd(double noundef %41, double noundef %237, double noundef %238, double noundef %239)
          to label %241 unwind label %243

241:                                              ; preds = %.lr.ph320
  %242 = fcmp olt double %240, 0.000000e+00
  %.0166 = select i1 %242, double 0.000000e+00, double %240
  invoke void @_ZN7SGTELIB6Matrix3setEiid(ptr noundef nonnull align 8 dereferenceable(56) %5, i32 noundef %.0163319, i32 noundef %.0165323, double noundef %.0166)
          to label %245 unwind label %243

243:                                              ; preds = %241, %.lr.ph320
  %244 = landingpad { ptr, i32 }
          cleanup
  br label %322

245:                                              ; preds = %241
  %246 = add nuw nsw i32 %.0163319, 1
  %exitcond362.not = icmp eq i32 %246, %38
  br i1 %exitcond362.not, label %.loopexit273, label %.lr.ph320, !llvm.loop !73

.loopexit273:                                     ; preds = %245, %234
  br i1 %brmerge341.not, label %.lr.ph322, label %.loopexit

.lr.ph322:                                        ; preds = %.loopexit273, %254
  %.0162321 = phi i32 [ %255, %254 ], [ 0, %.loopexit273 ]
  %247 = call noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %.0161, i32 noundef %.0162321, i32 noundef %.0165323)
  %248 = call noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %3, i32 noundef %.0162321, i32 noundef %.0165323)
  %249 = invoke noundef double @_ZN7SGTELIB5neweiEddd(double noundef %247, double noundef %248, double noundef %41)
          to label %250 unwind label %252

250:                                              ; preds = %.lr.ph322
  %251 = fcmp olt double %249, 0.000000e+00
  %.1 = select i1 %251, double 0.000000e+00, double %249
  invoke void @_ZN7SGTELIB6Matrix3setEiid(ptr noundef nonnull align 8 dereferenceable(56) %4, i32 noundef %.0162321, i32 noundef %.0165323, double noundef %.1)
          to label %254 unwind label %252

252:                                              ; preds = %250, %.lr.ph322
  %253 = landingpad { ptr, i32 }
          cleanup
  br label %322

254:                                              ; preds = %250
  %255 = add nuw nsw i32 %.0162321, 1
  %exitcond363.not = icmp eq i32 %255, %38
  br i1 %exitcond363.not, label %.loopexit, label %.lr.ph322, !llvm.loop !74

256:                                              ; preds = %232
  %257 = load ptr, ptr %39, align 8, !tbaa !8
  %258 = invoke noundef i32 @_ZNK7SGTELIB11TrainingSet7get_bboEi(ptr noundef nonnull align 8 dereferenceable(504) %257, i32 noundef %.0165323)
          to label %259 unwind label %235

259:                                              ; preds = %256
  %260 = icmp eq i32 %258, 1
  %or.cond9 = and i1 %30, %260
  br i1 %or.cond9, label %261, label %.loopexit

261:                                              ; preds = %259
  %262 = load ptr, ptr %39, align 8, !tbaa !8
  %263 = invoke noundef double @_ZNK7SGTELIB11TrainingSet7Z_scaleEdi(ptr noundef nonnull align 8 dereferenceable(504) %262, double noundef 0.000000e+00, i32 noundef %.0165323)
          to label %.preheader274 unwind label %264

.preheader274:                                    ; preds = %261
  br i1 %67, label %.lr.ph318, label %.loopexit

264:                                              ; preds = %261
  %265 = landingpad { ptr, i32 }
          cleanup
  br label %322

.lr.ph318:                                        ; preds = %.preheader274, %274
  %.0160317 = phi i32 [ %275, %274 ], [ 0, %.preheader274 ]
  %266 = call noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %.0161, i32 noundef %.0160317, i32 noundef %.0165323)
  %267 = call noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %3, i32 noundef %.0160317, i32 noundef %.0165323)
  %268 = load double, ptr %221, align 8, !tbaa !75
  %269 = invoke noundef double @_ZN7SGTELIB7sigmoidEdddd(double noundef %263, double noundef %266, double noundef %267, double noundef %268)
          to label %270 unwind label %272

270:                                              ; preds = %.lr.ph318
  %271 = fcmp olt double %269, 0.000000e+00
  %.2 = select i1 %271, double 0.000000e+00, double %269
  invoke void @_ZN7SGTELIB6Matrix3setEiid(ptr noundef nonnull align 8 dereferenceable(56) %5, i32 noundef %.0160317, i32 noundef %.0165323, double noundef %.2)
          to label %274 unwind label %272

272:                                              ; preds = %270, %.lr.ph318
  %273 = landingpad { ptr, i32 }
          cleanup
  br label %322

274:                                              ; preds = %270
  %275 = add nuw nsw i32 %.0160317, 1
  %exitcond361.not = icmp eq i32 %275, %38
  br i1 %exitcond361.not, label %.loopexit, label %.lr.ph318, !llvm.loop !76

.loopexit:                                        ; preds = %274, %254, %.loopexit273, %.preheader274, %259
  %276 = add nuw nsw i32 %.0165323, 1
  %277 = load i32, ptr %218, align 4, !tbaa !48
  %278 = icmp slt i32 %276, %277
  br i1 %278, label %223, label %.preheader270, !llvm.loop !77

.preheader:                                       ; preds = %288, %.preheader270
  %279 = load i32, ptr %70, align 4, !tbaa !49
  %280 = icmp sgt i32 %279, 0
  br i1 %280, label %.lr.ph332, label %._crit_edge333

.lr.ph330:                                        ; preds = %.lr.ph330.preheader, %288
  %indvars.iv364 = phi i64 [ 0, %.lr.ph330.preheader ], [ %indvars.iv.next365, %288 ]
  %281 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %indvars.iv364) #10
  %282 = load ptr, ptr %281, align 8, !tbaa !57
  %283 = icmp eq ptr %282, null
  br i1 %283, label %288, label %284

284:                                              ; preds = %.lr.ph330
  %285 = load ptr, ptr %282, align 8, !tbaa !5
  %286 = getelementptr inbounds i8, ptr %285, i64 8
  %287 = load ptr, ptr %286, align 8
  call void %287(ptr noundef nonnull align 8 dereferenceable(56) %282) #10
  br label %288

288:                                              ; preds = %.lr.ph330, %284
  %indvars.iv.next365 = add nuw nsw i64 %indvars.iv364, 1
  %exitcond367.not = icmp eq i64 %indvars.iv.next365, %wide.trip.count
  br i1 %exitcond367.not, label %.preheader, label %.lr.ph330, !llvm.loop !78

._crit_edge333:                                   ; preds = %312, %.preheader
  br i1 %.not, label %316, label %320

.lr.ph332:                                        ; preds = %.preheader, %312
  %indvars.iv368 = phi i64 [ %indvars.iv.next369, %312 ], [ 0, %.preheader ]
  %289 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %indvars.iv368) #10
  %290 = load ptr, ptr %289, align 8, !tbaa !57
  %291 = icmp eq ptr %290, null
  br i1 %291, label %296, label %292

292:                                              ; preds = %.lr.ph332
  %293 = load ptr, ptr %290, align 8, !tbaa !5
  %294 = getelementptr inbounds i8, ptr %293, i64 8
  %295 = load ptr, ptr %294, align 8
  call void %295(ptr noundef nonnull align 8 dereferenceable(56) %290) #10
  br label %296

296:                                              ; preds = %292, %.lr.ph332
  %297 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %indvars.iv368) #10
  %298 = load ptr, ptr %297, align 8, !tbaa !57
  %299 = icmp eq ptr %298, null
  br i1 %299, label %304, label %300

300:                                              ; preds = %296
  %301 = load ptr, ptr %298, align 8, !tbaa !5
  %302 = getelementptr inbounds i8, ptr %301, i64 8
  %303 = load ptr, ptr %302, align 8
  call void %303(ptr noundef nonnull align 8 dereferenceable(56) %298) #10
  br label %304

304:                                              ; preds = %300, %296
  %305 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %indvars.iv368) #10
  %306 = load ptr, ptr %305, align 8, !tbaa !57
  %307 = icmp eq ptr %306, null
  br i1 %307, label %312, label %308

308:                                              ; preds = %304
  %309 = load ptr, ptr %306, align 8, !tbaa !5
  %310 = getelementptr inbounds i8, ptr %309, i64 8
  %311 = load ptr, ptr %310, align 8
  call void %311(ptr noundef nonnull align 8 dereferenceable(56) %306) #10
  br label %312

312:                                              ; preds = %304, %308
  %indvars.iv.next369 = add nuw nsw i64 %indvars.iv368, 1
  %313 = load i32, ptr %70, align 4, !tbaa !49
  %314 = sext i32 %313 to i64
  %315 = icmp slt i64 %indvars.iv.next369, %314
  br i1 %315, label %.lr.ph332, label %._crit_edge333, !llvm.loop !79

316:                                              ; preds = %._crit_edge333
  %317 = load ptr, ptr %.0161, align 8, !tbaa !5
  %318 = getelementptr inbounds i8, ptr %317, i64 8
  %319 = load ptr, ptr %318, align 8
  call void %319(ptr noundef nonnull align 8 dereferenceable(56) %.0161) #10
  br label %320

320:                                              ; preds = %316, %._crit_edge333
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #10
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #10
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #10
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #10
  br label %321

321:                                              ; preds = %31, %320
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %7) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %7) #10
  ret void

322:                                              ; preds = %153, %191, %176, %228, %235, %243, %252, %272, %264, %211, %151
  %.pn236.pn.pn = phi { ptr, i32 } [ %.pn236.pn, %151 ], [ %154, %153 ], [ %192, %191 ], [ %177, %176 ], [ %212, %211 ], [ %229, %228 ], [ %244, %243 ], [ %253, %252 ], [ %236, %235 ], [ %273, %272 ], [ %265, %264 ]
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #10
  br label %323

323:                                              ; preds = %322, %129
  %.pn240.pn.pn = phi { ptr, i32 } [ %.pn240.pn, %129 ], [ %.pn236.pn.pn, %322 ]
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #10
  br label %324

324:                                              ; preds = %323, %109
  %.pn244.pn.pn = phi { ptr, i32 } [ %.pn244.pn, %109 ], [ %.pn240.pn.pn, %323 ]
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #10
  br label %325

325:                                              ; preds = %324, %89
  %.pn248.pn.pn = phi { ptr, i32 } [ %.pn248.pn, %89 ], [ %.pn244.pn.pn, %324 ]
  call void @_ZNSt6vectorIPN7SGTELIB6MatrixESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #10
  br label %326

326:                                              ; preds = %50, %58, %325, %52, %35
  %.pn248.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %36, %35 ], [ %51, %50 ], [ %.pn248.pn.pn, %325 ], [ %53, %52 ], [ %.pn, %58 ]
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %7) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %7) #10
  resume { ptr, i32 } %.pn248.pn.pn.pn.pn.pn
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZNK7SGTELIB11TrainingSet10get_fs_minEv(ptr noundef nonnull align 8 dereferenceable(504)) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZNK7SGTELIB23Surrogate_Ensemble_Stat13compute_sigmaEiiRKSt6vectorIPNS_6MatrixESaIS3_EES7_S7_(ptr noundef nonnull align 8 dereferenceable(1136), i32 noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

declare noundef double @_ZN7SGTELIB7sigmoidEdddd(double noundef, double noundef, double noundef, double noundef) local_unnamed_addr #3

declare noundef double @_ZN7SGTELIB5neweiEddd(double noundef, double noundef, double noundef) local_unnamed_addr #3

declare noundef double @_ZNK7SGTELIB11TrainingSet7Z_scaleEdi(ptr noundef nonnull align 8 dereferenceable(504), double noundef, i32 noundef) local_unnamed_addr #3

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !10, i64 8}
!9 = !{!"_ZTSN7SGTELIB9SurrogateE", !10, i64 8, !12, i64 16, !14, i64 328, !14, i64 332, !14, i64 336, !14, i64 340, !14, i64 344, !14, i64 348, !26, i64 352, !10, i64 360, !10, i64 368, !10, i64 376, !10, i64 384, !27, i64 392, !32, i64 416, !17, i64 464, !40, i64 472, !26, i64 984}
!10 = !{!"any pointer", !11, i64 0}
!11 = !{!"omnipotent char", !7, i64 0}
!12 = !{!"_ZTSN7SGTELIB20Surrogate_ParametersE", !13, i64 8, !14, i64 12, !15, i64 16, !16, i64 20, !15, i64 24, !17, i64 32, !15, i64 40, !17, i64 48, !15, i64 56, !18, i64 60, !15, i64 64, !19, i64 72, !23, i64 128, !15, i64 132, !24, i64 136, !17, i64 144, !17, i64 152, !17, i64 160, !17, i64 168, !19, i64 176, !15, i64 232, !25, i64 236, !20, i64 240, !20, i64 272, !14, i64 304, !14, i64 308}
!13 = !{!"_ZTSN7SGTELIB7model_tE", !11, i64 0}
!14 = !{!"int", !11, i64 0}
!15 = !{!"_ZTSN7SGTELIB14param_status_tE", !11, i64 0}
!16 = !{!"_ZTSN7SGTELIB8kernel_tE", !11, i64 0}
!17 = !{!"double", !11, i64 0}
!18 = !{!"_ZTSN7SGTELIB10distance_tE", !11, i64 0}
!19 = !{!"_ZTSN7SGTELIB6MatrixE", !20, i64 8, !14, i64 40, !14, i64 44, !10, i64 48}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !21, i64 0, !22, i64 8, !11, i64 16}
!21 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!22 = !{!"long", !11, i64 0}
!23 = !{!"_ZTSN7SGTELIB8weight_tE", !11, i64 0}
!24 = !{!"_ZTSN7SGTELIB13uncertainty_tE", !11, i64 0}
!25 = !{!"_ZTSN7SGTELIB8metric_tE", !11, i64 0}
!26 = !{!"bool", !11, i64 0}
!27 = !{!"_ZTSNSt7__cxx114listIiSaIiEEE", !28, i64 0}
!28 = !{!"_ZTSNSt7__cxx1110_List_baseIiSaIiEEE", !29, i64 0}
!29 = !{!"_ZTSNSt7__cxx1110_List_baseIiSaIiEE10_List_implE", !30, i64 0}
!30 = !{!"_ZTSNSt8__detail17_List_node_headerE", !31, i64 0, !22, i64 16}
!31 = !{!"_ZTSNSt8__detail15_List_node_baseE", !10, i64 0, !10, i64 8}
!32 = !{!"_ZTSSt3mapIN7SGTELIB8metric_tENS0_6MatrixESt4lessIS1_ESaISt4pairIKS1_S2_EEE", !33, i64 0}
!33 = !{!"_ZTSSt8_Rb_treeIN7SGTELIB8metric_tESt4pairIKS1_NS0_6MatrixEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !34, i64 0}
!34 = !{!"_ZTSNSt8_Rb_treeIN7SGTELIB8metric_tESt4pairIKS1_NS0_6MatrixEESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !35, i64 0, !37, i64 8}
!35 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN7SGTELIB8metric_tEEE", !36, i64 0}
!36 = !{!"_ZTSSt4lessIN7SGTELIB8metric_tEE"}
!37 = !{!"_ZTSSt15_Rb_tree_header", !38, i64 0, !22, i64 32}
!38 = !{!"_ZTSSt18_Rb_tree_node_base", !39, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!39 = !{!"_ZTSSt14_Rb_tree_color", !11, i64 0}
!40 = !{!"_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE", !41, i64 0, !42, i64 8}
!41 = !{!"_ZTSSo"}
!42 = !{!"_ZTSSt13basic_filebufIcSt11char_traitsIcEE", !43, i64 0, !11, i64 64, !45, i64 104, !46, i64 120, !47, i64 124, !47, i64 132, !47, i64 140, !10, i64 152, !22, i64 160, !26, i64 168, !26, i64 169, !26, i64 170, !11, i64 171, !10, i64 176, !10, i64 184, !26, i64 192, !10, i64 200, !10, i64 208, !22, i64 216, !10, i64 224, !10, i64 232}
!43 = !{!"_ZTSSt15basic_streambufIcSt11char_traitsIcEE", !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !44, i64 56}
!44 = !{!"_ZTSSt6locale", !10, i64 0}
!45 = !{!"_ZTSSt12__basic_fileIcE", !10, i64 0, !26, i64 8}
!46 = !{!"_ZTSSt13_Ios_Openmode", !11, i64 0}
!47 = !{!"_ZTS11__mbstate_t", !14, i64 0, !11, i64 4}
!48 = !{!9, !14, i64 332}
!49 = !{!50, !14, i64 988}
!50 = !{!"_ZTSN7SGTELIB23Surrogate_Ensemble_StatE", !9, i64 0, !14, i64 988, !14, i64 992, !51, i64 1000, !10, i64 1024, !10, i64 1032, !19, i64 1040, !14, i64 1096, !17, i64 1104, !17, i64 1112, !17, i64 1120, !17, i64 1128}
!51 = !{!"_ZTSSt6vectorIPN7SGTELIB9SurrogateESaIS2_EE", !52, i64 0}
!52 = !{!"_ZTSSt12_Vector_baseIPN7SGTELIB9SurrogateESaIS2_EE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIPN7SGTELIB9SurrogateESaIS2_EE12_Vector_implE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIPN7SGTELIB9SurrogateESaIS2_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!55 = !{!50, !14, i64 1096}
!56 = !{!9, !14, i64 328}
!57 = !{!10, !10, i64 0}
!58 = distinct !{!58, !59}
!59 = !{!"llvm.loop.mustprogress"}
!60 = distinct !{!60, !59}
!61 = distinct !{!61, !59}
!62 = distinct !{!62, !59}
!63 = !{!50, !10, i64 1024}
!64 = !{!26, !26, i64 0}
!65 = !{i8 0, i8 2}
!66 = !{}
!67 = distinct !{!67, !59, !68}
!68 = !{!"llvm.loop.unswitch.partial.disable"}
!69 = distinct !{!69, !59}
!70 = distinct !{!70, !59}
!71 = distinct !{!71, !59}
!72 = !{!50, !17, i64 1128}
!73 = distinct !{!73, !59}
!74 = distinct !{!74, !59}
!75 = !{!50, !17, i64 1120}
!76 = distinct !{!76, !59}
!77 = distinct !{!77, !59}
!78 = distinct !{!78, !59}
!79 = distinct !{!79, !59}


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