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

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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.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.SGTELIB::TrainingSet" = type { ptr, i32, i32, i32, i8, ptr, i8, i32, double, double, i32, %"class.SGTELIB::Matrix", %"class.SGTELIB::Matrix", %"class.SGTELIB::Matrix", %"class.SGTELIB::Matrix", %"class.SGTELIB::Matrix", i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, double }
%"class.std::allocator" = type { i8 }
%"class.std::basic_fstream" = type { %"class.std::basic_iostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"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" }
%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 }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [18 x i8], align 1

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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 i32 @__gxx_personality_v0(...)

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 #4

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

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

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

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

declare void @_ZN7SGTELIB11TrainingSetC1ERKNS_6MatrixES3_(ptr noundef nonnull align 8 dereferenceable(504), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #4

declare noundef ptr @_ZN7SGTELIB17Surrogate_FactoryERNS_11TrainingSetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(504), ptr noundef nonnull align 8 dereferenceable(32)) #4

declare noundef zeroext i1 @_ZN7SGTELIB9Surrogate5buildEv(ptr noundef nonnull align 8 dereferenceable(985)) #4

declare noundef nonnull align 8 dereferenceable(56) ptr @_ZN7SGTELIB6MatrixaSERKS0_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) #4

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

; Function Attrs: nounwind
declare void @_ZN7SGTELIB11TrainingSetD1Ev(ptr noundef nonnull align 8 dereferenceable(504)) unnamed_addr #7

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

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

declare void @_ZN7SGTELIB16surrogate_deleteEPNS_9SurrogateE(ptr noundef) #4

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

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

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

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

declare void @_ZN7SGTELIB6MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #4

declare void @_ZN7SGTELIB9Surrogate7predictERKNS_6MatrixEPS1_S4_S4_S4_(ptr noundef nonnull align 8 dereferenceable(985), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef, ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7SGTELIB13test_and_plotERKiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_RKNS_6MatrixE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(56) %4) #2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %"class.SGTELIB::Matrix", align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %"class.SGTELIB::TrainingSet", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator", align 1
  %20 = alloca i32, align 4
  %21 = alloca ptr, align 8
  %22 = alloca i8, align 1
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca i32, align 4
  %27 = alloca %"class.SGTELIB::Matrix", align 8
  %28 = alloca i32, align 4
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca %"class.SGTELIB::Matrix", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::allocator", align 1
  %38 = alloca %"class.SGTELIB::Matrix", align 8
  %39 = alloca %"class.SGTELIB::Matrix", align 8
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator", align 1
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::allocator", align 1
  %46 = alloca i1, align 1
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.std::allocator", align 1
  %49 = alloca i1, align 1
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator", align 1
  %52 = alloca i1, align 1
  %53 = alloca %"class.std::__cxx11::basic_string", align 8
  %54 = alloca %"class.std::allocator", align 1
  %55 = alloca i1, align 1
  %56 = alloca %"class.std::basic_fstream", align 8
  %57 = alloca %"class.std::basic_fstream", align 8
  %58 = alloca %"class.std::basic_fstream", align 8
  %59 = alloca %"class.std::basic_fstream", align 8
  %60 = alloca %"class.std::basic_fstream", align 8
  %61 = alloca %"class.std::basic_fstream", align 8
  %62 = alloca %"class.std::basic_fstream", align 8
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca %"class.std::allocator", align 1
  store ptr %0, ptr %6, align 8
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store ptr %4, ptr %10, align 8, !tbaa !5
  %69 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.15)
  %70 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.54)
  %71 = load ptr, ptr %9, align 8, !tbaa !5
  %72 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(32) %71)
  %73 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef @.str.6)
  call void @llvm.lifetime.start.p0(i64 56, ptr %11) #9
  %74 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZN7SGTELIB14test_functionsERKNS_6MatrixE(ptr dead_on_unwind writable sret(%"class.SGTELIB::Matrix") align 8 %11, ptr noundef nonnull align 8 dereferenceable(56) %74)
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #9
  %75 = load ptr, ptr %10, align 8, !tbaa !5
  %76 = invoke noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_colsEv(ptr noundef nonnull align 8 dereferenceable(56) %75)
          to label %77 unwind label %90

77:                                               ; preds = %5
  store i32 %76, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  %78 = load ptr, ptr %10, align 8, !tbaa !5
  %79 = invoke noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_rowsEv(ptr noundef nonnull align 8 dereferenceable(56) %78)
          to label %80 unwind label %94

80:                                               ; preds = %77
  store i32 %79, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  %81 = invoke noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_colsEv(ptr noundef nonnull align 8 dereferenceable(56) %11)
          to label %82 unwind label %98

82:                                               ; preds = %80
  store i32 %81, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 504, ptr %17) #9
  %83 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN7SGTELIB11TrainingSetC1ERKNS_6MatrixES3_(ptr noundef nonnull align 8 dereferenceable(504) %17, ptr noundef nonnull align 8 dereferenceable(56) %83, ptr noundef nonnull align 8 dereferenceable(56) %11)
          to label %84 unwind label %102

84:                                               ; preds = %82
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.55, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %85 unwind label %106

85:                                               ; preds = %84
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %86

86:                                               ; preds = %133, %85
  %87 = load i32, ptr %20, align 4, !tbaa !9
  %88 = icmp slt i32 %87, 6
  br i1 %88, label %110, label %89

89:                                               ; preds = %86
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  br label %136

90:                                               ; preds = %5
  %91 = landingpad { ptr, i32 }
          cleanup
  %92 = extractvalue { ptr, i32 } %91, 0
  store ptr %92, ptr %13, align 8
  %93 = extractvalue { ptr, i32 } %91, 1
  store i32 %93, ptr %14, align 4
  br label %632

94:                                               ; preds = %77
  %95 = landingpad { ptr, i32 }
          cleanup
  %96 = extractvalue { ptr, i32 } %95, 0
  store ptr %96, ptr %13, align 8
  %97 = extractvalue { ptr, i32 } %95, 1
  store i32 %97, ptr %14, align 4
  br label %631

98:                                               ; preds = %80
  %99 = landingpad { ptr, i32 }
          cleanup
  %100 = extractvalue { ptr, i32 } %99, 0
  store ptr %100, ptr %13, align 8
  %101 = extractvalue { ptr, i32 } %99, 1
  store i32 %101, ptr %14, align 4
  br label %630

102:                                              ; preds = %82
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  store ptr %104, ptr %13, align 8
  %105 = extractvalue { ptr, i32 } %103, 1
  store i32 %105, ptr %14, align 4
  br label %629

106:                                              ; preds = %84
  %107 = landingpad { ptr, i32 }
          cleanup
  %108 = extractvalue { ptr, i32 } %107, 0
  store ptr %108, ptr %13, align 8
  %109 = extractvalue { ptr, i32 } %107, 1
  store i32 %109, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #9
  br label %628

110:                                              ; preds = %86
  %111 = load i32, ptr %20, align 4, !tbaa !9
  %112 = load ptr, ptr %7, align 8, !tbaa !5
  %113 = load i32, ptr %112, align 4, !tbaa !9
  %114 = icmp eq i32 %111, %113
  br i1 %114, label %115, label %123

115:                                              ; preds = %110
  %116 = load ptr, ptr %8, align 8, !tbaa !5
  %117 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(32) %116)
          to label %118 unwind label %119

118:                                              ; preds = %115
  br label %126

119:                                              ; preds = %129, %123, %115
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %13, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  br label %627

123:                                              ; preds = %110
  %124 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.56)
          to label %125 unwind label %119

125:                                              ; preds = %123
  br label %126

126:                                              ; preds = %125, %118
  %127 = load i32, ptr %20, align 4, !tbaa !9
  %128 = icmp slt i32 %127, 5
  br i1 %128, label %129, label %132

129:                                              ; preds = %126
  %130 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.24)
          to label %131 unwind label %119

131:                                              ; preds = %129
  br label %132

132:                                              ; preds = %131, %126
  br label %133

133:                                              ; preds = %132
  %134 = load i32, ptr %20, align 4, !tbaa !9
  %135 = add nsw i32 %134, 1
  store i32 %135, ptr %20, align 4, !tbaa !9
  br label %86, !llvm.loop !11

136:                                              ; preds = %89
  invoke void @_ZN7SGTELIB11TrainingSet12set_bbo_typeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(504) %17, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %137 unwind label %158

137:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  %138 = load ptr, ptr %9, align 8, !tbaa !5
  %139 = invoke noundef ptr @_ZN7SGTELIB17Surrogate_FactoryERNS_11TrainingSetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(504) %17, ptr noundef nonnull align 8 dereferenceable(32) %138)
          to label %140 unwind label %162

140:                                              ; preds = %137
  store ptr %139, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #9
  %141 = load ptr, ptr %21, align 8, !tbaa !5
  %142 = invoke noundef zeroext i1 @_ZN7SGTELIB9Surrogate5buildEv(ptr noundef nonnull align 8 dereferenceable(985) %141)
          to label %143 unwind label %166

143:                                              ; preds = %140
  %144 = zext i1 %142 to i8
  store i8 %144, ptr %22, align 1, !tbaa !13
  %145 = load i8, ptr %22, align 1, !tbaa !13, !range !15, !noundef !16
  %146 = trunc i8 %145 to i1
  br i1 %146, label %193, label %147

147:                                              ; preds = %143
  %148 = load ptr, ptr %21, align 8, !tbaa !5
  invoke void @_ZN7SGTELIB16surrogate_deleteEPNS_9SurrogateE(ptr noundef %148)
          to label %149 unwind label %166

149:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #9
  %150 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef @.str.43, ptr noundef nonnull align 8 dereferenceable(32) %150)
          to label %151 unwind label %170

151:                                              ; preds = %149
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.32)
          to label %152 unwind label %174

152:                                              ; preds = %151
  %153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %154 unwind label %178

154:                                              ; preds = %152
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #9
  %155 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef @.str.43, ptr noundef nonnull align 8 dereferenceable(32) %155)
          to label %156 unwind label %184

156:                                              ; preds = %154
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.32)
          to label %157 unwind label %188

157:                                              ; preds = %156
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #9
  store i32 1, ptr %26, align 4
  br label %624

158:                                              ; preds = %136
  %159 = landingpad { ptr, i32 }
          cleanup
  %160 = extractvalue { ptr, i32 } %159, 0
  store ptr %160, ptr %13, align 8
  %161 = extractvalue { ptr, i32 } %159, 1
  store i32 %161, ptr %14, align 4
  br label %627

162:                                              ; preds = %137
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %13, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %14, align 4
  br label %626

166:                                              ; preds = %147, %140
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  store ptr %168, ptr %13, align 8
  %169 = extractvalue { ptr, i32 } %167, 1
  store i32 %169, ptr %14, align 4
  br label %625

170:                                              ; preds = %149
  %171 = landingpad { ptr, i32 }
          cleanup
  %172 = extractvalue { ptr, i32 } %171, 0
  store ptr %172, ptr %13, align 8
  %173 = extractvalue { ptr, i32 } %171, 1
  store i32 %173, ptr %14, align 4
  br label %183

174:                                              ; preds = %151
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %13, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %14, align 4
  br label %182

178:                                              ; preds = %152
  %179 = landingpad { ptr, i32 }
          cleanup
  %180 = extractvalue { ptr, i32 } %179, 0
  store ptr %180, ptr %13, align 8
  %181 = extractvalue { ptr, i32 } %179, 1
  store i32 %181, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  br label %182

182:                                              ; preds = %178, %174
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  br label %183

183:                                              ; preds = %182, %170
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #9
  br label %625

184:                                              ; preds = %154
  %185 = landingpad { ptr, i32 }
          cleanup
  %186 = extractvalue { ptr, i32 } %185, 0
  store ptr %186, ptr %13, align 8
  %187 = extractvalue { ptr, i32 } %185, 1
  store i32 %187, ptr %14, align 4
  br label %192

188:                                              ; preds = %156
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %13, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  br label %192

192:                                              ; preds = %188, %184
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #9
  br label %625

193:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 56, ptr %27) #9
  invoke void @_ZN7SGTELIB6MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %27)
          to label %194 unwind label %214

194:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #9
  store i32 1500, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  store ptr null, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #9
  store ptr null, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #9
  store ptr null, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #9
  store ptr null, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #9
  store double -1.000000e+01, ptr %33, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  store double 1.000000e+01, ptr %34, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 56, ptr %35) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %195 unwind label %218

195:                                              ; preds = %194
  %196 = load i32, ptr %12, align 4, !tbaa !9
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %35, ptr noundef nonnull align 8 dereferenceable(32) %36, i32 noundef 1, i32 noundef %196)
          to label %197 unwind label %222

197:                                              ; preds = %195
  %198 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN7SGTELIB6MatrixaSERKS0_(ptr noundef nonnull align 8 dereferenceable(56) %27, ptr noundef nonnull align 8 dereferenceable(56) %35)
          to label %199 unwind label %226

199:                                              ; preds = %197
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %35) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %35) #9
  call void @llvm.lifetime.start.p0(i64 56, ptr %38) #9
  invoke void @_ZN7SGTELIB6MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %38)
          to label %200 unwind label %232

200:                                              ; preds = %199
  call void @llvm.lifetime.start.p0(i64 56, ptr %39) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str.57, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %201 unwind label %236

201:                                              ; preds = %200
  %202 = load i32, ptr %12, align 4, !tbaa !9
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %39, ptr noundef nonnull align 8 dereferenceable(32) %40, i32 noundef 1, i32 noundef %202)
          to label %203 unwind label %240

203:                                              ; preds = %201
  %204 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN7SGTELIB6MatrixaSERKS0_(ptr noundef nonnull align 8 dereferenceable(56) %38, ptr noundef nonnull align 8 dereferenceable(56) %39)
          to label %205 unwind label %244

205:                                              ; preds = %203
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %39) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %39) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #9
  store i32 0, ptr %42, align 4, !tbaa !9
  br label %206

206:                                              ; preds = %295, %205
  %207 = load i32, ptr %42, align 4, !tbaa !9
  %208 = sitofp i32 %207 to double
  %209 = load i32, ptr %28, align 4, !tbaa !9
  %210 = sitofp i32 %209 to double
  %211 = call double @sqrt(double noundef %210) #9
  %212 = fcmp olt double %208, %211
  br i1 %212, label %250, label %213

213:                                              ; preds = %206
  store i32 5, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #9
  br label %298

214:                                              ; preds = %193
  %215 = landingpad { ptr, i32 }
          cleanup
  %216 = extractvalue { ptr, i32 } %215, 0
  store ptr %216, ptr %13, align 8
  %217 = extractvalue { ptr, i32 } %215, 1
  store i32 %217, ptr %14, align 4
  br label %623

218:                                              ; preds = %194
  %219 = landingpad { ptr, i32 }
          cleanup
  %220 = extractvalue { ptr, i32 } %219, 0
  store ptr %220, ptr %13, align 8
  %221 = extractvalue { ptr, i32 } %219, 1
  store i32 %221, ptr %14, align 4
  br label %231

222:                                              ; preds = %195
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %13, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %14, align 4
  br label %230

226:                                              ; preds = %197
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %13, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %14, align 4
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %35) #9
  br label %230

230:                                              ; preds = %226, %222
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  br label %231

231:                                              ; preds = %230, %218
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %35) #9
  br label %622

232:                                              ; preds = %199
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %13, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %14, align 4
  br label %621

236:                                              ; preds = %200
  %237 = landingpad { ptr, i32 }
          cleanup
  %238 = extractvalue { ptr, i32 } %237, 0
  store ptr %238, ptr %13, align 8
  %239 = extractvalue { ptr, i32 } %237, 1
  store i32 %239, ptr %14, align 4
  br label %249

240:                                              ; preds = %201
  %241 = landingpad { ptr, i32 }
          cleanup
  %242 = extractvalue { ptr, i32 } %241, 0
  store ptr %242, ptr %13, align 8
  %243 = extractvalue { ptr, i32 } %241, 1
  store i32 %243, ptr %14, align 4
  br label %248

244:                                              ; preds = %203
  %245 = landingpad { ptr, i32 }
          cleanup
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %13, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %14, align 4
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %39) #9
  br label %248

248:                                              ; preds = %244, %240
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  br label %249

249:                                              ; preds = %248, %236
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %39) #9
  br label %620

250:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #9
  store i32 0, ptr %43, align 4, !tbaa !9
  br label %251

251:                                              ; preds = %287, %250
  %252 = load i32, ptr %43, align 4, !tbaa !9
  %253 = sitofp i32 %252 to double
  %254 = load i32, ptr %28, align 4, !tbaa !9
  %255 = sitofp i32 %254 to double
  %256 = call double @sqrt(double noundef %255) #9
  %257 = fcmp olt double %253, %256
  br i1 %257, label %259, label %258

258:                                              ; preds = %251
  store i32 8, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #9
  br label %294

259:                                              ; preds = %251
  %260 = load double, ptr %33, align 8, !tbaa !17
  %261 = load double, ptr %34, align 8, !tbaa !17
  %262 = load double, ptr %33, align 8, !tbaa !17
  %263 = fsub double %261, %262
  %264 = load i32, ptr %42, align 4, !tbaa !9
  %265 = sitofp i32 %264 to double
  %266 = fmul double %263, %265
  %267 = load i32, ptr %28, align 4, !tbaa !9
  %268 = sitofp i32 %267 to double
  %269 = call double @sqrt(double noundef %268) #9
  %270 = fdiv double %266, %269
  %271 = fadd double %260, %270
  invoke void @_ZN7SGTELIB6Matrix3setEiid(ptr noundef nonnull align 8 dereferenceable(56) %38, i32 noundef 0, i32 noundef 0, double noundef %271)
          to label %272 unwind label %290

272:                                              ; preds = %259
  %273 = load double, ptr %33, align 8, !tbaa !17
  %274 = load double, ptr %34, align 8, !tbaa !17
  %275 = load double, ptr %33, align 8, !tbaa !17
  %276 = fsub double %274, %275
  %277 = load i32, ptr %43, align 4, !tbaa !9
  %278 = sitofp i32 %277 to double
  %279 = fmul double %276, %278
  %280 = load i32, ptr %28, align 4, !tbaa !9
  %281 = sitofp i32 %280 to double
  %282 = call double @sqrt(double noundef %281) #9
  %283 = fdiv double %279, %282
  %284 = fadd double %273, %283
  invoke void @_ZN7SGTELIB6Matrix3setEiid(ptr noundef nonnull align 8 dereferenceable(56) %38, i32 noundef 0, i32 noundef 1, double noundef %284)
          to label %285 unwind label %290

285:                                              ; preds = %272
  invoke void @_ZN7SGTELIB6Matrix8add_rowsERKS0_(ptr noundef nonnull align 8 dereferenceable(56) %27, ptr noundef nonnull align 8 dereferenceable(56) %38)
          to label %286 unwind label %290

286:                                              ; preds = %285
  br label %287

287:                                              ; preds = %286
  %288 = load i32, ptr %43, align 4, !tbaa !9
  %289 = add nsw i32 %288, 1
  store i32 %289, ptr %43, align 4, !tbaa !9
  br label %251, !llvm.loop !19

290:                                              ; preds = %285, %272, %259
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %13, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #9
  br label %620

294:                                              ; preds = %258
  br label %295

295:                                              ; preds = %294
  %296 = load i32, ptr %42, align 4, !tbaa !9
  %297 = add nsw i32 %296, 1
  store i32 %297, ptr %42, align 4, !tbaa !9
  br label %206, !llvm.loop !20

298:                                              ; preds = %213
  %299 = invoke noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_rowsEv(ptr noundef nonnull align 8 dereferenceable(56) %27)
          to label %300 unwind label %352

300:                                              ; preds = %298
  store i32 %299, ptr %28, align 4, !tbaa !9
  %301 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #10
          to label %302 unwind label %352

302:                                              ; preds = %300
  store i1 true, ptr %46, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %303 unwind label %356

303:                                              ; preds = %302
  %304 = load i32, ptr %28, align 4, !tbaa !9
  %305 = load i32, ptr %16, align 4, !tbaa !9
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %301, ptr noundef nonnull align 8 dereferenceable(32) %44, i32 noundef %304, i32 noundef %305)
          to label %306 unwind label %360

306:                                              ; preds = %303
  store i1 false, ptr %46, align 1
  store ptr %301, ptr %29, align 8, !tbaa !5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #9
  %307 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #10
          to label %308 unwind label %352

308:                                              ; preds = %306
  store i1 true, ptr %49, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef @.str.49, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %309 unwind label %368

309:                                              ; preds = %308
  %310 = load i32, ptr %28, align 4, !tbaa !9
  %311 = load i32, ptr %16, align 4, !tbaa !9
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %307, ptr noundef nonnull align 8 dereferenceable(32) %47, i32 noundef %310, i32 noundef %311)
          to label %312 unwind label %372

312:                                              ; preds = %309
  store i1 false, ptr %49, align 1
  store ptr %307, ptr %30, align 8, !tbaa !5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #9
  %313 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #10
          to label %314 unwind label %352

314:                                              ; preds = %312
  store i1 true, ptr %52, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef @.str.50, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %315 unwind label %380

315:                                              ; preds = %314
  %316 = load i32, ptr %28, align 4, !tbaa !9
  %317 = load i32, ptr %16, align 4, !tbaa !9
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %313, ptr noundef nonnull align 8 dereferenceable(32) %50, i32 noundef %316, i32 noundef %317)
          to label %318 unwind label %384

318:                                              ; preds = %315
  store i1 false, ptr %52, align 1
  store ptr %313, ptr %31, align 8, !tbaa !5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #9
  %319 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 56) #10
          to label %320 unwind label %352

320:                                              ; preds = %318
  store i1 true, ptr %55, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %53) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef @.str.51, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %321 unwind label %392

321:                                              ; preds = %320
  %322 = load i32, ptr %28, align 4, !tbaa !9
  %323 = load i32, ptr %16, align 4, !tbaa !9
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %319, ptr noundef nonnull align 8 dereferenceable(32) %53, i32 noundef %322, i32 noundef %323)
          to label %324 unwind label %396

324:                                              ; preds = %321
  store i1 false, ptr %55, align 1
  store ptr %319, ptr %32, align 8, !tbaa !5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #9
  %325 = load ptr, ptr %21, align 8, !tbaa !5
  %326 = load ptr, ptr %29, align 8, !tbaa !5
  %327 = load ptr, ptr %30, align 8, !tbaa !5
  %328 = load ptr, ptr %31, align 8, !tbaa !5
  %329 = load ptr, ptr %32, align 8, !tbaa !5
  invoke void @_ZN7SGTELIB9Surrogate7predictERKNS_6MatrixEPS1_S4_S4_S4_(ptr noundef nonnull align 8 dereferenceable(985) %325, ptr noundef nonnull align 8 dereferenceable(56) %27, ptr noundef %326, ptr noundef %327, ptr noundef %328, ptr noundef %329)
          to label %330 unwind label %352

330:                                              ; preds = %324
  call void @llvm.lifetime.start.p0(i64 528, ptr %56) #9
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %56)
          to label %331 unwind label %404

331:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 528, ptr %57) #9
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %57)
          to label %332 unwind label %408

332:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 528, ptr %58) #9
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %58)
          to label %333 unwind label %412

333:                                              ; preds = %332
  call void @llvm.lifetime.start.p0(i64 528, ptr %59) #9
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %59)
          to label %334 unwind label %416

334:                                              ; preds = %333
  call void @llvm.lifetime.start.p0(i64 528, ptr %60) #9
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %60)
          to label %335 unwind label %420

335:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 528, ptr %61) #9
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %61)
          to label %336 unwind label %424

336:                                              ; preds = %335
  call void @llvm.lifetime.start.p0(i64 528, ptr %62) #9
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %62)
          to label %337 unwind label %428

337:                                              ; preds = %336
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %56, ptr noundef @.str.58, i32 noundef 16)
          to label %338 unwind label %432

338:                                              ; preds = %337
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %57, ptr noundef @.str.59, i32 noundef 16)
          to label %339 unwind label %432

339:                                              ; preds = %338
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %58, ptr noundef @.str.60, i32 noundef 16)
          to label %340 unwind label %432

340:                                              ; preds = %339
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %59, ptr noundef @.str.61, i32 noundef 16)
          to label %341 unwind label %432

341:                                              ; preds = %340
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %60, ptr noundef @.str.62, i32 noundef 16)
          to label %342 unwind label %432

342:                                              ; preds = %341
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %61, ptr noundef @.str.63, i32 noundef 16)
          to label %343 unwind label %432

343:                                              ; preds = %342
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %62, ptr noundef @.str.64, i32 noundef 16)
          to label %344 unwind label %432

344:                                              ; preds = %343
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #9
  %345 = load ptr, ptr %7, align 8, !tbaa !5
  %346 = load i32, ptr %345, align 4, !tbaa !9
  store i32 %346, ptr %63, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #9
  store i32 0, ptr %64, align 4, !tbaa !9
  br label %347

347:                                              ; preds = %473, %344
  %348 = load i32, ptr %64, align 4, !tbaa !9
  %349 = load i32, ptr %15, align 4, !tbaa !9
  %350 = icmp slt i32 %348, %349
  br i1 %350, label %436, label %351

351:                                              ; preds = %347
  store i32 11, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #9
  br label %481

352:                                              ; preds = %324, %318, %312, %306, %300, %298
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %13, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %14, align 4
  br label %620

356:                                              ; preds = %302
  %357 = landingpad { ptr, i32 }
          cleanup
  %358 = extractvalue { ptr, i32 } %357, 0
  store ptr %358, ptr %13, align 8
  %359 = extractvalue { ptr, i32 } %357, 1
  store i32 %359, ptr %14, align 4
  br label %364

360:                                              ; preds = %303
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %13, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  br label %364

364:                                              ; preds = %360, %356
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #9
  %365 = load i1, ptr %46, align 1
  br i1 %365, label %366, label %367

366:                                              ; preds = %364
  call void @_ZdlPvm(ptr noundef %301, i64 noundef 56) #11
  br label %367

367:                                              ; preds = %366, %364
  br label %620

368:                                              ; preds = %308
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %13, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %14, align 4
  br label %376

372:                                              ; preds = %309
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %13, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #9
  br label %376

376:                                              ; preds = %372, %368
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #9
  %377 = load i1, ptr %49, align 1
  br i1 %377, label %378, label %379

378:                                              ; preds = %376
  call void @_ZdlPvm(ptr noundef %307, i64 noundef 56) #11
  br label %379

379:                                              ; preds = %378, %376
  br label %620

380:                                              ; preds = %314
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %13, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %14, align 4
  br label %388

384:                                              ; preds = %315
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %13, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  br label %388

388:                                              ; preds = %384, %380
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #9
  %389 = load i1, ptr %52, align 1
  br i1 %389, label %390, label %391

390:                                              ; preds = %388
  call void @_ZdlPvm(ptr noundef %313, i64 noundef 56) #11
  br label %391

391:                                              ; preds = %390, %388
  br label %620

392:                                              ; preds = %320
  %393 = landingpad { ptr, i32 }
          cleanup
  %394 = extractvalue { ptr, i32 } %393, 0
  store ptr %394, ptr %13, align 8
  %395 = extractvalue { ptr, i32 } %393, 1
  store i32 %395, ptr %14, align 4
  br label %400

396:                                              ; preds = %321
  %397 = landingpad { ptr, i32 }
          cleanup
  %398 = extractvalue { ptr, i32 } %397, 0
  store ptr %398, ptr %13, align 8
  %399 = extractvalue { ptr, i32 } %397, 1
  store i32 %399, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #9
  br label %400

400:                                              ; preds = %396, %392
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #9
  %401 = load i1, ptr %55, align 1
  br i1 %401, label %402, label %403

402:                                              ; preds = %400
  call void @_ZdlPvm(ptr noundef %319, i64 noundef 56) #11
  br label %403

403:                                              ; preds = %402, %400
  br label %620

404:                                              ; preds = %330
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %13, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %14, align 4
  br label %619

408:                                              ; preds = %331
  %409 = landingpad { ptr, i32 }
          cleanup
  %410 = extractvalue { ptr, i32 } %409, 0
  store ptr %410, ptr %13, align 8
  %411 = extractvalue { ptr, i32 } %409, 1
  store i32 %411, ptr %14, align 4
  br label %618

412:                                              ; preds = %332
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %13, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %14, align 4
  br label %617

416:                                              ; preds = %333
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %13, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %14, align 4
  br label %616

420:                                              ; preds = %334
  %421 = landingpad { ptr, i32 }
          cleanup
  %422 = extractvalue { ptr, i32 } %421, 0
  store ptr %422, ptr %13, align 8
  %423 = extractvalue { ptr, i32 } %421, 1
  store i32 %423, ptr %14, align 4
  br label %615

424:                                              ; preds = %335
  %425 = landingpad { ptr, i32 }
          cleanup
  %426 = extractvalue { ptr, i32 } %425, 0
  store ptr %426, ptr %13, align 8
  %427 = extractvalue { ptr, i32 } %425, 1
  store i32 %427, ptr %14, align 4
  br label %614

428:                                              ; preds = %336
  %429 = landingpad { ptr, i32 }
          cleanup
  %430 = extractvalue { ptr, i32 } %429, 0
  store ptr %430, ptr %13, align 8
  %431 = extractvalue { ptr, i32 } %429, 1
  store i32 %431, ptr %14, align 4
  br label %613

432:                                              ; preds = %343, %342, %341, %340, %339, %338, %337
  %433 = landingpad { ptr, i32 }
          cleanup
  %434 = extractvalue { ptr, i32 } %433, 0
  store ptr %434, ptr %13, align 8
  %435 = extractvalue { ptr, i32 } %433, 1
  store i32 %435, ptr %14, align 4
  br label %612

436:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #9
  store i32 0, ptr %65, align 4, !tbaa !9
  br label %437

437:                                              ; preds = %453, %436
  %438 = load i32, ptr %65, align 4, !tbaa !9
  %439 = load i32, ptr %12, align 4, !tbaa !9
  %440 = icmp slt i32 %438, %439
  br i1 %440, label %442, label %441

441:                                              ; preds = %437
  store i32 14, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #9
  br label %460

442:                                              ; preds = %437
  %443 = getelementptr inbounds i8, ptr %56, i64 16
  %444 = load ptr, ptr %10, align 8, !tbaa !5
  %445 = load i32, ptr %64, align 4, !tbaa !9
  %446 = load i32, ptr %65, align 4, !tbaa !9
  %447 = invoke noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %444, i32 noundef %445, i32 noundef %446)
          to label %448 unwind label %456

448:                                              ; preds = %442
  %449 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %443, double noundef %447)
          to label %450 unwind label %456

450:                                              ; preds = %448
  %451 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %449, ptr noundef @.str.65)
          to label %452 unwind label %456

452:                                              ; preds = %450
  br label %453

453:                                              ; preds = %452
  %454 = load i32, ptr %65, align 4, !tbaa !9
  %455 = add nsw i32 %454, 1
  store i32 %455, ptr %65, align 4, !tbaa !9
  br label %437, !llvm.loop !21

456:                                              ; preds = %450, %448, %442
  %457 = landingpad { ptr, i32 }
          cleanup
  %458 = extractvalue { ptr, i32 } %457, 0
  store ptr %458, ptr %13, align 8
  %459 = extractvalue { ptr, i32 } %457, 1
  store i32 %459, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #9
  br label %480

460:                                              ; preds = %441
  %461 = getelementptr inbounds i8, ptr %56, i64 16
  %462 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %461, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %463 unwind label %476

463:                                              ; preds = %460
  %464 = getelementptr inbounds i8, ptr %57, i64 16
  %465 = load i32, ptr %64, align 4, !tbaa !9
  %466 = load i32, ptr %63, align 4, !tbaa !9
  %467 = invoke noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %11, i32 noundef %465, i32 noundef %466)
          to label %468 unwind label %476

468:                                              ; preds = %463
  %469 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %464, double noundef %467)
          to label %470 unwind label %476

470:                                              ; preds = %468
  %471 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %469, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %472 unwind label %476

472:                                              ; preds = %470
  br label %473

473:                                              ; preds = %472
  %474 = load i32, ptr %64, align 4, !tbaa !9
  %475 = add nsw i32 %474, 1
  store i32 %475, ptr %64, align 4, !tbaa !9
  br label %347, !llvm.loop !22

476:                                              ; preds = %470, %468, %463, %460
  %477 = landingpad { ptr, i32 }
          cleanup
  %478 = extractvalue { ptr, i32 } %477, 0
  store ptr %478, ptr %13, align 8
  %479 = extractvalue { ptr, i32 } %477, 1
  store i32 %479, ptr %14, align 4
  br label %480

480:                                              ; preds = %476, %456
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #9
  br label %611

481:                                              ; preds = %351
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #9
  store i32 0, ptr %66, align 4, !tbaa !9
  br label %482

482:                                              ; preds = %554, %481
  %483 = load i32, ptr %66, align 4, !tbaa !9
  %484 = load i32, ptr %28, align 4, !tbaa !9
  %485 = icmp slt i32 %483, %484
  br i1 %485, label %487, label %486

486:                                              ; preds = %482
  store i32 17, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #9
  br label %562

487:                                              ; preds = %482
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #9
  store i32 0, ptr %67, align 4, !tbaa !9
  br label %488

488:                                              ; preds = %503, %487
  %489 = load i32, ptr %67, align 4, !tbaa !9
  %490 = load i32, ptr %12, align 4, !tbaa !9
  %491 = icmp slt i32 %489, %490
  br i1 %491, label %493, label %492

492:                                              ; preds = %488
  store i32 20, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #9
  br label %510

493:                                              ; preds = %488
  %494 = getelementptr inbounds i8, ptr %58, i64 16
  %495 = load i32, ptr %66, align 4, !tbaa !9
  %496 = load i32, ptr %67, align 4, !tbaa !9
  %497 = invoke noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %27, i32 noundef %495, i32 noundef %496)
          to label %498 unwind label %506

498:                                              ; preds = %493
  %499 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %494, double noundef %497)
          to label %500 unwind label %506

500:                                              ; preds = %498
  %501 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %499, ptr noundef @.str.65)
          to label %502 unwind label %506

502:                                              ; preds = %500
  br label %503

503:                                              ; preds = %502
  %504 = load i32, ptr %67, align 4, !tbaa !9
  %505 = add nsw i32 %504, 1
  store i32 %505, ptr %67, align 4, !tbaa !9
  br label %488, !llvm.loop !23

506:                                              ; preds = %500, %498, %493
  %507 = landingpad { ptr, i32 }
          cleanup
  %508 = extractvalue { ptr, i32 } %507, 0
  store ptr %508, ptr %13, align 8
  %509 = extractvalue { ptr, i32 } %507, 1
  store i32 %509, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #9
  br label %561

510:                                              ; preds = %492
  %511 = getelementptr inbounds i8, ptr %58, i64 16
  %512 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %511, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %513 unwind label %557

513:                                              ; preds = %510
  %514 = getelementptr inbounds i8, ptr %59, i64 16
  %515 = load ptr, ptr %29, align 8, !tbaa !5
  %516 = load i32, ptr %66, align 4, !tbaa !9
  %517 = load i32, ptr %63, align 4, !tbaa !9
  %518 = invoke noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %515, i32 noundef %516, i32 noundef %517)
          to label %519 unwind label %557

519:                                              ; preds = %513
  %520 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %514, double noundef %518)
          to label %521 unwind label %557

521:                                              ; preds = %519
  %522 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %520, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %523 unwind label %557

523:                                              ; preds = %521
  %524 = getelementptr inbounds i8, ptr %60, i64 16
  %525 = load ptr, ptr %30, align 8, !tbaa !5
  %526 = load i32, ptr %66, align 4, !tbaa !9
  %527 = load i32, ptr %63, align 4, !tbaa !9
  %528 = invoke noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %525, i32 noundef %526, i32 noundef %527)
          to label %529 unwind label %557

529:                                              ; preds = %523
  %530 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %524, double noundef %528)
          to label %531 unwind label %557

531:                                              ; preds = %529
  %532 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %530, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %533 unwind label %557

533:                                              ; preds = %531
  %534 = getelementptr inbounds i8, ptr %61, i64 16
  %535 = load ptr, ptr %31, align 8, !tbaa !5
  %536 = load i32, ptr %66, align 4, !tbaa !9
  %537 = load i32, ptr %63, align 4, !tbaa !9
  %538 = invoke noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %535, i32 noundef %536, i32 noundef %537)
          to label %539 unwind label %557

539:                                              ; preds = %533
  %540 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %534, double noundef %538)
          to label %541 unwind label %557

541:                                              ; preds = %539
  %542 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %540, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %543 unwind label %557

543:                                              ; preds = %541
  %544 = getelementptr inbounds i8, ptr %62, i64 16
  %545 = load ptr, ptr %32, align 8, !tbaa !5
  %546 = load i32, ptr %66, align 4, !tbaa !9
  %547 = load i32, ptr %63, align 4, !tbaa !9
  %548 = invoke noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %545, i32 noundef %546, i32 noundef %547)
          to label %549 unwind label %557

549:                                              ; preds = %543
  %550 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %544, double noundef %548)
          to label %551 unwind label %557

551:                                              ; preds = %549
  %552 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %550, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %553 unwind label %557

553:                                              ; preds = %551
  br label %554

554:                                              ; preds = %553
  %555 = load i32, ptr %66, align 4, !tbaa !9
  %556 = add nsw i32 %555, 1
  store i32 %556, ptr %66, align 4, !tbaa !9
  br label %482, !llvm.loop !24

557:                                              ; preds = %551, %549, %543, %541, %539, %533, %531, %529, %523, %521, %519, %513, %510
  %558 = landingpad { ptr, i32 }
          cleanup
  %559 = extractvalue { ptr, i32 } %558, 0
  store ptr %559, ptr %13, align 8
  %560 = extractvalue { ptr, i32 } %558, 1
  store i32 %560, ptr %14, align 4
  br label %561

561:                                              ; preds = %557, %506
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #9
  br label %611

562:                                              ; preds = %486
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(264) %56)
          to label %563 unwind label %603

563:                                              ; preds = %562
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(264) %57)
          to label %564 unwind label %603

564:                                              ; preds = %563
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(264) %58)
          to label %565 unwind label %603

565:                                              ; preds = %564
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(264) %59)
          to label %566 unwind label %603

566:                                              ; preds = %565
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(264) %60)
          to label %567 unwind label %603

567:                                              ; preds = %566
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(264) %61)
          to label %568 unwind label %603

568:                                              ; preds = %567
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(264) %62)
          to label %569 unwind label %603

569:                                              ; preds = %568
  %570 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.66)
          to label %571 unwind label %603

571:                                              ; preds = %569
  %572 = load ptr, ptr %29, align 8, !tbaa !5
  %573 = icmp eq ptr %572, null
  br i1 %573, label %578, label %574

574:                                              ; preds = %571
  %575 = load ptr, ptr %572, align 8, !tbaa !25
  %576 = getelementptr inbounds ptr, ptr %575, i64 1
  %577 = load ptr, ptr %576, align 8
  call void %577(ptr noundef nonnull align 8 dereferenceable(56) %572) #9
  br label %578

578:                                              ; preds = %574, %571
  %579 = load ptr, ptr %30, align 8, !tbaa !5
  %580 = icmp eq ptr %579, null
  br i1 %580, label %585, label %581

581:                                              ; preds = %578
  %582 = load ptr, ptr %579, align 8, !tbaa !25
  %583 = getelementptr inbounds ptr, ptr %582, i64 1
  %584 = load ptr, ptr %583, align 8
  call void %584(ptr noundef nonnull align 8 dereferenceable(56) %579) #9
  br label %585

585:                                              ; preds = %581, %578
  %586 = load ptr, ptr %31, align 8, !tbaa !5
  %587 = icmp eq ptr %586, null
  br i1 %587, label %592, label %588

588:                                              ; preds = %585
  %589 = load ptr, ptr %586, align 8, !tbaa !25
  %590 = getelementptr inbounds ptr, ptr %589, i64 1
  %591 = load ptr, ptr %590, align 8
  call void %591(ptr noundef nonnull align 8 dereferenceable(56) %586) #9
  br label %592

592:                                              ; preds = %588, %585
  %593 = load ptr, ptr %32, align 8, !tbaa !5
  %594 = icmp eq ptr %593, null
  br i1 %594, label %599, label %595

595:                                              ; preds = %592
  %596 = load ptr, ptr %593, align 8, !tbaa !25
  %597 = getelementptr inbounds ptr, ptr %596, i64 1
  %598 = load ptr, ptr %597, align 8
  call void %598(ptr noundef nonnull align 8 dereferenceable(56) %593) #9
  br label %599

599:                                              ; preds = %595, %592
  %600 = load ptr, ptr %21, align 8, !tbaa !5
  invoke void @_ZN7SGTELIB16surrogate_deleteEPNS_9SurrogateE(ptr noundef %600)
          to label %601 unwind label %603

601:                                              ; preds = %599
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef @.str.53, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %602 unwind label %607

602:                                              ; preds = %601
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #9
  store i32 1, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %62) #9
  call void @llvm.lifetime.end.p0(i64 528, ptr %62) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %61) #9
  call void @llvm.lifetime.end.p0(i64 528, ptr %61) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %60) #9
  call void @llvm.lifetime.end.p0(i64 528, ptr %60) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %59) #9
  call void @llvm.lifetime.end.p0(i64 528, ptr %59) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %58) #9
  call void @llvm.lifetime.end.p0(i64 528, ptr %58) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %57) #9
  call void @llvm.lifetime.end.p0(i64 528, ptr %57) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %56) #9
  call void @llvm.lifetime.end.p0(i64 528, ptr %56) #9
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %38) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #9
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %27) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %27) #9
  br label %624

603:                                              ; preds = %599, %569, %568, %567, %566, %565, %564, %563, %562
  %604 = landingpad { ptr, i32 }
          cleanup
  %605 = extractvalue { ptr, i32 } %604, 0
  store ptr %605, ptr %13, align 8
  %606 = extractvalue { ptr, i32 } %604, 1
  store i32 %606, ptr %14, align 4
  br label %611

607:                                              ; preds = %601
  %608 = landingpad { ptr, i32 }
          cleanup
  %609 = extractvalue { ptr, i32 } %608, 0
  store ptr %609, ptr %13, align 8
  %610 = extractvalue { ptr, i32 } %608, 1
  store i32 %610, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #9
  br label %611

611:                                              ; preds = %607, %603, %561, %480
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #9
  br label %612

612:                                              ; preds = %611, %432
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %62) #9
  br label %613

613:                                              ; preds = %612, %428
  call void @llvm.lifetime.end.p0(i64 528, ptr %62) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %61) #9
  br label %614

614:                                              ; preds = %613, %424
  call void @llvm.lifetime.end.p0(i64 528, ptr %61) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %60) #9
  br label %615

615:                                              ; preds = %614, %420
  call void @llvm.lifetime.end.p0(i64 528, ptr %60) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %59) #9
  br label %616

616:                                              ; preds = %615, %416
  call void @llvm.lifetime.end.p0(i64 528, ptr %59) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %58) #9
  br label %617

617:                                              ; preds = %616, %412
  call void @llvm.lifetime.end.p0(i64 528, ptr %58) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %57) #9
  br label %618

618:                                              ; preds = %617, %408
  call void @llvm.lifetime.end.p0(i64 528, ptr %57) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %56) #9
  br label %619

619:                                              ; preds = %618, %404
  call void @llvm.lifetime.end.p0(i64 528, ptr %56) #9
  br label %620

620:                                              ; preds = %619, %403, %391, %379, %367, %352, %290, %249
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %38) #9
  br label %621

621:                                              ; preds = %620, %232
  call void @llvm.lifetime.end.p0(i64 56, ptr %38) #9
  br label %622

622:                                              ; preds = %621, %231
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #9
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %27) #9
  br label %623

623:                                              ; preds = %622, %214
  call void @llvm.lifetime.end.p0(i64 56, ptr %27) #9
  br label %625

624:                                              ; preds = %602, %157
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #9
  call void @_ZN7SGTELIB11TrainingSetD1Ev(ptr noundef nonnull align 8 dereferenceable(504) %17) #9
  call void @llvm.lifetime.end.p0(i64 504, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %11) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %11) #9
  ret void

625:                                              ; preds = %623, %192, %183, %166
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #9
  br label %626

626:                                              ; preds = %625, %162
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  br label %627

627:                                              ; preds = %626, %158, %119
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  br label %628

628:                                              ; preds = %627, %106
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #9
  call void @_ZN7SGTELIB11TrainingSetD1Ev(ptr noundef nonnull align 8 dereferenceable(504) %17) #9
  br label %629

629:                                              ; preds = %628, %102
  call void @llvm.lifetime.end.p0(i64 504, ptr %17) #9
  br label %630

630:                                              ; preds = %629, %98
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  br label %631

631:                                              ; preds = %630, %94
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  br label %632

632:                                              ; preds = %631, %90
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %11) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %11) #9
  br label %633

633:                                              ; preds = %632
  %634 = load ptr, ptr %13, align 8
  %635 = load i32, ptr %14, align 4
  %636 = insertvalue { ptr, i32 } poison, ptr %634, 0
  %637 = insertvalue { ptr, i32 } %636, i32 %635, 1
  resume { ptr, i32 } %637
}

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

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

declare void @_ZN7SGTELIB11TrainingSet12set_bbo_typeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(504), ptr noundef nonnull align 8 dereferenceable(32)) #4

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

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

declare void @_ZN7SGTELIB6Matrix8add_rowsERKS0_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) #4

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

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

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(264)) #2 align 2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !14, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{i8 0, i8 2}
!16 = !{}
!17 = !{!18, !18, i64 0}
!18 = !{!"double", !7, i64 0}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = !{!26, !26, i64 0}
!26 = !{!"vtable pointer", !8, i64 0}


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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.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.SGTELIB::TrainingSet" = type { ptr, i32, i32, i32, i8, ptr, i8, i32, double, double, i32, %"class.SGTELIB::Matrix", %"class.SGTELIB::Matrix", %"class.SGTELIB::Matrix", %"class.SGTELIB::Matrix", %"class.SGTELIB::Matrix", i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, double }
%"class.std::allocator" = type { i8 }
%"class.std::basic_fstream" = type { %"class.std::basic_iostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"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" }
%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 }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [18 x i8], align 1

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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 i32 @__gxx_personality_v0(...)

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 #4

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

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

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

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

declare void @_ZN7SGTELIB11TrainingSetC1ERKNS_6MatrixES3_(ptr noundef nonnull align 8 dereferenceable(504), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #4

declare noundef ptr @_ZN7SGTELIB17Surrogate_FactoryERNS_11TrainingSetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(504), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4

declare noundef zeroext i1 @_ZN7SGTELIB9Surrogate5buildEv(ptr noundef nonnull align 8 dereferenceable(985)) local_unnamed_addr #4

declare noundef nonnull align 8 dereferenceable(56) ptr @_ZN7SGTELIB6MatrixaSERKS0_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #4

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

; Function Attrs: nounwind
declare void @_ZN7SGTELIB11TrainingSetD1Ev(ptr noundef nonnull align 8 dereferenceable(504)) unnamed_addr #7

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

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

declare void @_ZN7SGTELIB16surrogate_deleteEPNS_9SurrogateE(ptr noundef) local_unnamed_addr #4

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(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 #2

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

declare void @_ZN7SGTELIB6MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #4

declare void @_ZN7SGTELIB9Surrogate7predictERKNS_6MatrixEPS1_S4_S4_S4_(ptr noundef nonnull align 8 dereferenceable(985), ptr noundef nonnull align 8 dereferenceable(56), ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7SGTELIB13test_and_plotERKiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_RKNS_6MatrixE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr nocapture noundef nonnull readonly align 4 dereferenceable(4) %1, ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(56) %4) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %"class.SGTELIB::Matrix", align 8
  %7 = alloca %"class.SGTELIB::TrainingSet", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::allocator", align 1
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.SGTELIB::Matrix", align 8
  %14 = alloca %"class.SGTELIB::Matrix", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator", align 1
  %17 = alloca %"class.SGTELIB::Matrix", align 8
  %18 = alloca %"class.SGTELIB::Matrix", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator", align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator", align 1
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator", align 1
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator", align 1
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::allocator", align 1
  %29 = alloca %"class.std::basic_fstream", align 8
  %30 = alloca %"class.std::basic_fstream", align 8
  %31 = alloca %"class.std::basic_fstream", align 8
  %32 = alloca %"class.std::basic_fstream", align 8
  %33 = alloca %"class.std::basic_fstream", align 8
  %34 = alloca %"class.std::basic_fstream", align 8
  %35 = alloca %"class.std::basic_fstream", align 8
  %36 = alloca %"class.std::allocator", align 1
  %37 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.15)
  %38 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.54)
  %39 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(32) %3)
  %40 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull @.str.6)
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %6) #9
  call void @_ZN7SGTELIB14test_functionsERKNS_6MatrixE(ptr dead_on_unwind nonnull writable sret(%"class.SGTELIB::Matrix") align 8 %6, ptr noundef nonnull align 8 dereferenceable(56) %4)
  %41 = call noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_colsEv(ptr noundef nonnull align 8 dereferenceable(56) %4)
  %42 = call noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_rowsEv(ptr noundef nonnull align 8 dereferenceable(56) %4)
  %43 = call noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_colsEv(ptr noundef nonnull align 8 dereferenceable(56) %6)
  call void @llvm.lifetime.start.p0(i64 504, ptr nonnull %7) #9
  invoke void @_ZN7SGTELIB11TrainingSetC1ERKNS_6MatrixES3_(ptr noundef nonnull align 8 dereferenceable(504) %7, ptr noundef nonnull align 8 dereferenceable(56) %4, ptr noundef nonnull align 8 dereferenceable(56) %6)
          to label %44 unwind label %48

44:                                               ; preds = %5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.55, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %45 unwind label %50

45:                                               ; preds = %44
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #9
  %46 = load i32, ptr %1, align 4, !tbaa !5
  %47 = icmp eq i32 %46, 0
  br i1 %47, label %52, label %56

48:                                               ; preds = %5
  %49 = landingpad { ptr, i32 }
          cleanup
  br label %368

50:                                               ; preds = %44
  %51 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #9
  br label %367

52:                                               ; preds = %45
  %53 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %58 unwind label %54

54:                                               ; preds = %101, %99, %94, %92, %90, %85, %83, %81, %76, %74, %72, %67, %65, %63, %58, %56, %52
  %55 = landingpad { ptr, i32 }
          cleanup
  br label %366

56:                                               ; preds = %45
  %57 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.56)
          to label %58 unwind label %54

58:                                               ; preds = %52, %56
  %59 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.24)
          to label %60 unwind label %54

60:                                               ; preds = %58
  %61 = load i32, ptr %1, align 4, !tbaa !5
  %62 = icmp eq i32 %61, 1
  br i1 %62, label %65, label %63

63:                                               ; preds = %60
  %64 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.56)
          to label %67 unwind label %54

65:                                               ; preds = %60
  %66 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %67 unwind label %54

67:                                               ; preds = %63, %65
  %68 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.24)
          to label %69 unwind label %54

69:                                               ; preds = %67
  %70 = load i32, ptr %1, align 4, !tbaa !5
  %71 = icmp eq i32 %70, 2
  br i1 %71, label %74, label %72

72:                                               ; preds = %69
  %73 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.56)
          to label %76 unwind label %54

74:                                               ; preds = %69
  %75 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %76 unwind label %54

76:                                               ; preds = %72, %74
  %77 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.24)
          to label %78 unwind label %54

78:                                               ; preds = %76
  %79 = load i32, ptr %1, align 4, !tbaa !5
  %80 = icmp eq i32 %79, 3
  br i1 %80, label %83, label %81

81:                                               ; preds = %78
  %82 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.56)
          to label %85 unwind label %54

83:                                               ; preds = %78
  %84 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %85 unwind label %54

85:                                               ; preds = %81, %83
  %86 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.24)
          to label %87 unwind label %54

87:                                               ; preds = %85
  %88 = load i32, ptr %1, align 4, !tbaa !5
  %89 = icmp eq i32 %88, 4
  br i1 %89, label %92, label %90

90:                                               ; preds = %87
  %91 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.56)
          to label %94 unwind label %54

92:                                               ; preds = %87
  %93 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %94 unwind label %54

94:                                               ; preds = %90, %92
  %95 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.24)
          to label %96 unwind label %54

96:                                               ; preds = %94
  %97 = load i32, ptr %1, align 4, !tbaa !5
  %98 = icmp eq i32 %97, 5
  br i1 %98, label %101, label %99

99:                                               ; preds = %96
  %100 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.56)
          to label %103 unwind label %54

101:                                              ; preds = %96
  %102 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %103 unwind label %54

103:                                              ; preds = %99, %101
  invoke void @_ZN7SGTELIB11TrainingSet12set_bbo_typeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(504) %7, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %104 unwind label %117

104:                                              ; preds = %103
  %105 = invoke noundef ptr @_ZN7SGTELIB17Surrogate_FactoryERNS_11TrainingSetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(504) %7, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %106 unwind label %119

106:                                              ; preds = %104
  %107 = invoke noundef zeroext i1 @_ZN7SGTELIB9Surrogate5buildEv(ptr noundef nonnull align 8 dereferenceable(985) %105)
          to label %108 unwind label %121

108:                                              ; preds = %106
  br i1 %107, label %136, label %109

109:                                              ; preds = %108
  invoke void @_ZN7SGTELIB16surrogate_deleteEPNS_9SurrogateE(ptr noundef nonnull %105)
          to label %110 unwind label %121

110:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull @.str.43, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %111 unwind label %123

111:                                              ; preds = %110
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.32)
          to label %112 unwind label %125

112:                                              ; preds = %111
  %113 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %114 unwind label %127

114:                                              ; preds = %112
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #9
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull @.str.43, ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %115 unwind label %131

115:                                              ; preds = %114
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.32)
          to label %116 unwind label %133

116:                                              ; preds = %115
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  br label %365

117:                                              ; preds = %103
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %366

119:                                              ; preds = %104
  %120 = landingpad { ptr, i32 }
          cleanup
  br label %366

121:                                              ; preds = %109, %106
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %366

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

125:                                              ; preds = %111
  %126 = landingpad { ptr, i32 }
          cleanup
  br label %129

127:                                              ; preds = %112
  %128 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  br label %129

129:                                              ; preds = %127, %125
  %.pn = phi { ptr, i32 } [ %128, %127 ], [ %126, %125 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  br label %130

130:                                              ; preds = %129, %123
  %.pn.pn = phi { ptr, i32 } [ %.pn, %129 ], [ %124, %123 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  br label %366

131:                                              ; preds = %114
  %132 = landingpad { ptr, i32 }
          cleanup
  br label %135

133:                                              ; preds = %115
  %134 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  br label %135

135:                                              ; preds = %133, %131
  %.pn132 = phi { ptr, i32 } [ %134, %133 ], [ %132, %131 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  br label %366

136:                                              ; preds = %108
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %13) #9
  invoke void @_ZN7SGTELIB6MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %13)
          to label %137 unwind label %154

137:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %14) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.9, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %138 unwind label %156

138:                                              ; preds = %137
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %14, ptr noundef nonnull align 8 dereferenceable(32) %15, i32 noundef 1, i32 noundef %41)
          to label %139 unwind label %158

139:                                              ; preds = %138
  %140 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN7SGTELIB6MatrixaSERKS0_(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(56) %14)
          to label %141 unwind label %160

141:                                              ; preds = %139
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %14) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %14) #9
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %17) #9
  invoke void @_ZN7SGTELIB6MatrixC1Ev(ptr noundef nonnull align 8 dereferenceable(56) %17)
          to label %142 unwind label %164

142:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %18) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.57, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %143 unwind label %166

143:                                              ; preds = %142
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %18, ptr noundef nonnull align 8 dereferenceable(32) %19, i32 noundef 1, i32 noundef %41)
          to label %144 unwind label %168

144:                                              ; preds = %143
  %145 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN7SGTELIB6MatrixaSERKS0_(ptr noundef nonnull align 8 dereferenceable(56) %17, ptr noundef nonnull align 8 dereferenceable(56) %18)
          to label %146 unwind label %170

146:                                              ; preds = %144
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %18) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %18) #9
  br label %.preheader174

.preheader174:                                    ; preds = %146, %174
  %.095177 = phi i32 [ 0, %146 ], [ %175, %174 ]
  %147 = mul nuw nsw i32 %.095177, 20
  %148 = uitofp nneg i32 %147 to double
  %149 = fdiv double %148, 0x40435D6B2ED19148
  %150 = fadd double %149, -1.000000e+01
  br label %176

151:                                              ; preds = %174
  %152 = call noundef i32 @_ZNK7SGTELIB6Matrix11get_nb_rowsEv(ptr noundef nonnull align 8 dereferenceable(56) %13)
  %153 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #10
          to label %187 unwind label %247

154:                                              ; preds = %136
  %155 = landingpad { ptr, i32 }
          cleanup
  br label %364

156:                                              ; preds = %137
  %157 = landingpad { ptr, i32 }
          cleanup
  br label %163

158:                                              ; preds = %138
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %162

160:                                              ; preds = %139
  %161 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %14) #9
  br label %162

162:                                              ; preds = %160, %158
  %.pn134 = phi { ptr, i32 } [ %161, %160 ], [ %159, %158 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  br label %163

163:                                              ; preds = %162, %156
  %.pn134.pn = phi { ptr, i32 } [ %.pn134, %162 ], [ %157, %156 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %14) #9
  br label %363

164:                                              ; preds = %141
  %165 = landingpad { ptr, i32 }
          cleanup
  br label %362

166:                                              ; preds = %142
  %167 = landingpad { ptr, i32 }
          cleanup
  br label %173

168:                                              ; preds = %143
  %169 = landingpad { ptr, i32 }
          cleanup
  br label %172

170:                                              ; preds = %144
  %171 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %18) #9
  br label %172

172:                                              ; preds = %170, %168
  %.pn137 = phi { ptr, i32 } [ %171, %170 ], [ %169, %168 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #9
  br label %173

173:                                              ; preds = %172, %166
  %.pn137.pn = phi { ptr, i32 } [ %.pn137, %172 ], [ %167, %166 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %18) #9
  br label %361

174:                                              ; preds = %183
  %175 = add nuw nsw i32 %.095177, 1
  %exitcond187.not = icmp eq i32 %175, 39
  br i1 %exitcond187.not, label %151, label %.preheader174, !llvm.loop !9

176:                                              ; preds = %.preheader174, %183
  %.094176 = phi i32 [ 0, %.preheader174 ], [ %184, %183 ]
  invoke void @_ZN7SGTELIB6Matrix3setEiid(ptr noundef nonnull align 8 dereferenceable(56) %17, i32 noundef 0, i32 noundef 0, double noundef %150)
          to label %177 unwind label %185

177:                                              ; preds = %176
  %178 = mul nuw nsw i32 %.094176, 20
  %179 = uitofp nneg i32 %178 to double
  %180 = fdiv double %179, 0x40435D6B2ED19148
  %181 = fadd double %180, -1.000000e+01
  invoke void @_ZN7SGTELIB6Matrix3setEiid(ptr noundef nonnull align 8 dereferenceable(56) %17, i32 noundef 0, i32 noundef 1, double noundef %181)
          to label %182 unwind label %185

182:                                              ; preds = %177
  invoke void @_ZN7SGTELIB6Matrix8add_rowsERKS0_(ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull align 8 dereferenceable(56) %17)
          to label %183 unwind label %185

183:                                              ; preds = %182
  %184 = add nuw nsw i32 %.094176, 1
  %exitcond.not = icmp eq i32 %184, 39
  br i1 %exitcond.not, label %174, label %176, !llvm.loop !11

185:                                              ; preds = %182, %177, %176
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %361

187:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %188 unwind label %249

188:                                              ; preds = %187
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %153, ptr noundef nonnull align 8 dereferenceable(32) %21, i32 noundef %152, i32 noundef %43)
          to label %189 unwind label %251

189:                                              ; preds = %188
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #9
  %190 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #10
          to label %191 unwind label %247

191:                                              ; preds = %189
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull @.str.49, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %192 unwind label %254

192:                                              ; preds = %191
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %190, ptr noundef nonnull align 8 dereferenceable(32) %23, i32 noundef %152, i32 noundef %43)
          to label %193 unwind label %256

193:                                              ; preds = %192
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #9
  %194 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #10
          to label %195 unwind label %247

195:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull @.str.50, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %196 unwind label %259

196:                                              ; preds = %195
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %194, ptr noundef nonnull align 8 dereferenceable(32) %25, i32 noundef %152, i32 noundef %43)
          to label %197 unwind label %261

197:                                              ; preds = %196
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #9
  %198 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #10
          to label %199 unwind label %247

199:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull @.str.51, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %200 unwind label %264

200:                                              ; preds = %199
  invoke void @_ZN7SGTELIB6MatrixC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii(ptr noundef nonnull align 8 dereferenceable(56) %198, ptr noundef nonnull align 8 dereferenceable(32) %27, i32 noundef %152, i32 noundef %43)
          to label %201 unwind label %266

201:                                              ; preds = %200
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  invoke void @_ZN7SGTELIB9Surrogate7predictERKNS_6MatrixEPS1_S4_S4_S4_(ptr noundef nonnull align 8 dereferenceable(985) %105, ptr noundef nonnull align 8 dereferenceable(56) %13, ptr noundef nonnull %153, ptr noundef nonnull %190, ptr noundef nonnull %194, ptr noundef nonnull %198)
          to label %202 unwind label %247

202:                                              ; preds = %201
  call void @llvm.lifetime.start.p0(i64 528, ptr nonnull %29) #9
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %29)
          to label %203 unwind label %269

203:                                              ; preds = %202
  call void @llvm.lifetime.start.p0(i64 528, ptr nonnull %30) #9
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %30)
          to label %204 unwind label %271

204:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 528, ptr nonnull %31) #9
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %31)
          to label %205 unwind label %273

205:                                              ; preds = %204
  call void @llvm.lifetime.start.p0(i64 528, ptr nonnull %32) #9
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %32)
          to label %206 unwind label %275

206:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 528, ptr nonnull %33) #9
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %33)
          to label %207 unwind label %277

207:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 528, ptr nonnull %34) #9
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %34)
          to label %208 unwind label %279

208:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 528, ptr nonnull %35) #9
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(264) %35)
          to label %209 unwind label %281

209:                                              ; preds = %208
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %29, ptr noundef nonnull @.str.58, i32 noundef 16)
          to label %210 unwind label %283

210:                                              ; preds = %209
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %30, ptr noundef nonnull @.str.59, i32 noundef 16)
          to label %211 unwind label %283

211:                                              ; preds = %210
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %31, ptr noundef nonnull @.str.60, i32 noundef 16)
          to label %212 unwind label %283

212:                                              ; preds = %211
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %32, ptr noundef nonnull @.str.61, i32 noundef 16)
          to label %213 unwind label %283

213:                                              ; preds = %212
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %33, ptr noundef nonnull @.str.62, i32 noundef 16)
          to label %214 unwind label %283

214:                                              ; preds = %213
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %34, ptr noundef nonnull @.str.63, i32 noundef 16)
          to label %215 unwind label %283

215:                                              ; preds = %214
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(264) %35, ptr noundef nonnull @.str.64, i32 noundef 16)
          to label %216 unwind label %283

216:                                              ; preds = %215
  %217 = load i32, ptr %1, align 4, !tbaa !5
  %218 = icmp sgt i32 %42, 0
  br i1 %218, label %.preheader173.lr.ph, label %.preheader172

.preheader173.lr.ph:                              ; preds = %216
  %219 = icmp sgt i32 %41, 0
  %220 = getelementptr inbounds i8, ptr %29, i64 16
  %221 = getelementptr inbounds i8, ptr %30, i64 16
  br i1 %219, label %.preheader173.us, label %.preheader173

.preheader173.us:                                 ; preds = %.preheader173.lr.ph, %227
  %.092179.us = phi i32 [ %228, %227 ], [ 0, %.preheader173.lr.ph ]
  br label %229

222:                                              ; preds = %._crit_edge.us
  %223 = call noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %6, i32 noundef %.092179.us, i32 noundef %217)
  %224 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %221, double noundef %223)
          to label %225 unwind label %.split.us

225:                                              ; preds = %222
  %226 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %224, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %227 unwind label %.split.us

227:                                              ; preds = %225
  %228 = add nuw nsw i32 %.092179.us, 1
  %exitcond190.not = icmp eq i32 %228, %42
  br i1 %exitcond190.not, label %.preheader172, label %.preheader173.us, !llvm.loop !12

229:                                              ; preds = %.preheader173.us, %234
  %.091178.us = phi i32 [ 0, %.preheader173.us ], [ %235, %234 ]
  %230 = call noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %4, i32 noundef %.092179.us, i32 noundef %.091178.us)
  %231 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %220, double noundef %230)
          to label %232 unwind label %.split181.us

232:                                              ; preds = %229
  %233 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %231, ptr noundef nonnull @.str.65)
          to label %234 unwind label %.split181.us

234:                                              ; preds = %232
  %235 = add nuw nsw i32 %.091178.us, 1
  %exitcond189.not = icmp eq i32 %235, %41
  br i1 %exitcond189.not, label %._crit_edge.us, label %229, !llvm.loop !13

._crit_edge.us:                                   ; preds = %234
  %236 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %220, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %222 unwind label %.split.us

.split.us:                                        ; preds = %225, %222, %._crit_edge.us
  %237 = landingpad { ptr, i32 }
          cleanup
  br label %353

.split181.us:                                     ; preds = %232, %229
  %238 = landingpad { ptr, i32 }
          cleanup
  br label %353

.preheader173:                                    ; preds = %.preheader173.lr.ph, %290
  %.092179 = phi i32 [ %291, %290 ], [ 0, %.preheader173.lr.ph ]
  %239 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %220, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %285 unwind label %.split

.preheader172:                                    ; preds = %290, %227, %216
  %240 = icmp sgt i32 %152, 0
  br i1 %240, label %.preheader.lr.ph, label %._crit_edge185

.preheader.lr.ph:                                 ; preds = %.preheader172
  %241 = icmp sgt i32 %41, 0
  %242 = getelementptr inbounds i8, ptr %31, i64 16
  %243 = getelementptr inbounds i8, ptr %32, i64 16
  %244 = getelementptr inbounds i8, ptr %33, i64 16
  %245 = getelementptr inbounds i8, ptr %34, i64 16
  %246 = getelementptr inbounds i8, ptr %35, i64 16
  br label %.preheader

247:                                              ; preds = %201, %197, %193, %189, %151
  %248 = landingpad { ptr, i32 }
          cleanup
  br label %361

249:                                              ; preds = %187
  %250 = landingpad { ptr, i32 }
          cleanup
  br label %253

251:                                              ; preds = %188
  %252 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #9
  br label %253

253:                                              ; preds = %251, %249
  %.pn140 = phi { ptr, i32 } [ %252, %251 ], [ %250, %249 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #9
  call void @_ZdlPvm(ptr noundef nonnull %153, i64 noundef 56) #11
  br label %361

254:                                              ; preds = %191
  %255 = landingpad { ptr, i32 }
          cleanup
  br label %258

256:                                              ; preds = %192
  %257 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #9
  br label %258

258:                                              ; preds = %256, %254
  %.pn142 = phi { ptr, i32 } [ %257, %256 ], [ %255, %254 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #9
  call void @_ZdlPvm(ptr noundef nonnull %190, i64 noundef 56) #11
  br label %361

259:                                              ; preds = %195
  %260 = landingpad { ptr, i32 }
          cleanup
  br label %263

261:                                              ; preds = %196
  %262 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  br label %263

263:                                              ; preds = %261, %259
  %.pn144 = phi { ptr, i32 } [ %262, %261 ], [ %260, %259 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #9
  call void @_ZdlPvm(ptr noundef nonnull %194, i64 noundef 56) #11
  br label %361

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

266:                                              ; preds = %200
  %267 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  br label %268

268:                                              ; preds = %266, %264
  %.pn146 = phi { ptr, i32 } [ %267, %266 ], [ %265, %264 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  call void @_ZdlPvm(ptr noundef nonnull %198, i64 noundef 56) #11
  br label %361

269:                                              ; preds = %202
  %270 = landingpad { ptr, i32 }
          cleanup
  br label %360

271:                                              ; preds = %203
  %272 = landingpad { ptr, i32 }
          cleanup
  br label %359

273:                                              ; preds = %204
  %274 = landingpad { ptr, i32 }
          cleanup
  br label %358

275:                                              ; preds = %205
  %276 = landingpad { ptr, i32 }
          cleanup
  br label %357

277:                                              ; preds = %206
  %278 = landingpad { ptr, i32 }
          cleanup
  br label %356

279:                                              ; preds = %207
  %280 = landingpad { ptr, i32 }
          cleanup
  br label %355

281:                                              ; preds = %208
  %282 = landingpad { ptr, i32 }
          cleanup
  br label %354

283:                                              ; preds = %215, %214, %213, %212, %211, %210, %209
  %284 = landingpad { ptr, i32 }
          cleanup
  br label %353

285:                                              ; preds = %.preheader173
  %286 = call noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %6, i32 noundef %.092179, i32 noundef %217)
  %287 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %221, double noundef %286)
          to label %288 unwind label %.split

288:                                              ; preds = %285
  %289 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %287, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %290 unwind label %.split

290:                                              ; preds = %288
  %291 = add nuw nsw i32 %.092179, 1
  %exitcond188.not = icmp eq i32 %291, %42
  br i1 %exitcond188.not, label %.preheader172, label %.preheader173, !llvm.loop !12

.split:                                           ; preds = %288, %285, %.preheader173
  %292 = landingpad { ptr, i32 }
          cleanup
  br label %353

.preheader:                                       ; preds = %.preheader.lr.ph, %322
  %.090184 = phi i32 [ 0, %.preheader.lr.ph ], [ %323, %322 ]
  br i1 %241, label %.lr.ph, label %._crit_edge

._crit_edge185:                                   ; preds = %322, %.preheader172
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(264) %29)
          to label %326 unwind label %349

._crit_edge:                                      ; preds = %298, %.preheader
  %293 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %242, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %302 unwind label %324

.lr.ph:                                           ; preds = %.preheader, %298
  %.0183 = phi i32 [ %299, %298 ], [ 0, %.preheader ]
  %294 = call noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %13, i32 noundef %.090184, i32 noundef %.0183)
  %295 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %242, double noundef %294)
          to label %296 unwind label %300

296:                                              ; preds = %.lr.ph
  %297 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %295, ptr noundef nonnull @.str.65)
          to label %298 unwind label %300

298:                                              ; preds = %296
  %299 = add nuw nsw i32 %.0183, 1
  %exitcond191.not = icmp eq i32 %299, %41
  br i1 %exitcond191.not, label %._crit_edge, label %.lr.ph, !llvm.loop !14

300:                                              ; preds = %296, %.lr.ph
  %301 = landingpad { ptr, i32 }
          cleanup
  br label %353

302:                                              ; preds = %._crit_edge
  %303 = call noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %153, i32 noundef %.090184, i32 noundef %217)
  %304 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %243, double noundef %303)
          to label %305 unwind label %324

305:                                              ; preds = %302
  %306 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %304, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %307 unwind label %324

307:                                              ; preds = %305
  %308 = call noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %190, i32 noundef %.090184, i32 noundef %217)
  %309 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %244, double noundef %308)
          to label %310 unwind label %324

310:                                              ; preds = %307
  %311 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %309, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %312 unwind label %324

312:                                              ; preds = %310
  %313 = call noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %194, i32 noundef %.090184, i32 noundef %217)
  %314 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %245, double noundef %313)
          to label %315 unwind label %324

315:                                              ; preds = %312
  %316 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %314, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %317 unwind label %324

317:                                              ; preds = %315
  %318 = call noundef double @_ZNK7SGTELIB6Matrix3getEii(ptr noundef nonnull align 8 dereferenceable(56) %198, i32 noundef %.090184, i32 noundef %217)
  %319 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %246, double noundef %318)
          to label %320 unwind label %324

320:                                              ; preds = %317
  %321 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %319, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %322 unwind label %324

322:                                              ; preds = %320
  %323 = add nuw nsw i32 %.090184, 1
  %exitcond192.not = icmp eq i32 %323, %152
  br i1 %exitcond192.not, label %._crit_edge185, label %.preheader, !llvm.loop !15

324:                                              ; preds = %320, %317, %315, %312, %310, %307, %305, %302, %._crit_edge
  %325 = landingpad { ptr, i32 }
          cleanup
  br label %353

326:                                              ; preds = %._crit_edge185
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(264) %30)
          to label %327 unwind label %349

327:                                              ; preds = %326
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(264) %31)
          to label %328 unwind label %349

328:                                              ; preds = %327
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(264) %32)
          to label %329 unwind label %349

329:                                              ; preds = %328
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(264) %33)
          to label %330 unwind label %349

330:                                              ; preds = %329
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(264) %34)
          to label %331 unwind label %349

331:                                              ; preds = %330
  invoke void @_ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(264) %35)
          to label %332 unwind label %349

332:                                              ; preds = %331
  %333 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.66)
          to label %334 unwind label %349

334:                                              ; preds = %332
  %335 = load ptr, ptr %153, align 8, !tbaa !16
  %336 = getelementptr inbounds i8, ptr %335, i64 8
  %337 = load ptr, ptr %336, align 8
  call void %337(ptr noundef nonnull align 8 dereferenceable(56) %153) #9
  %338 = load ptr, ptr %190, align 8, !tbaa !16
  %339 = getelementptr inbounds i8, ptr %338, i64 8
  %340 = load ptr, ptr %339, align 8
  call void %340(ptr noundef nonnull align 8 dereferenceable(56) %190) #9
  %341 = load ptr, ptr %194, align 8, !tbaa !16
  %342 = getelementptr inbounds i8, ptr %341, i64 8
  %343 = load ptr, ptr %342, align 8
  call void %343(ptr noundef nonnull align 8 dereferenceable(56) %194) #9
  %344 = load ptr, ptr %198, align 8, !tbaa !16
  %345 = getelementptr inbounds i8, ptr %344, i64 8
  %346 = load ptr, ptr %345, align 8
  call void %346(ptr noundef nonnull align 8 dereferenceable(56) %198) #9
  invoke void @_ZN7SGTELIB16surrogate_deleteEPNS_9SurrogateE(ptr noundef nonnull %105)
          to label %347 unwind label %349

347:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %36) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.53, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %348 unwind label %351

348:                                              ; preds = %347
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %35) #9
  call void @llvm.lifetime.end.p0(i64 528, ptr nonnull %35) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %34) #9
  call void @llvm.lifetime.end.p0(i64 528, ptr nonnull %34) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %33) #9
  call void @llvm.lifetime.end.p0(i64 528, ptr nonnull %33) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %32) #9
  call void @llvm.lifetime.end.p0(i64 528, ptr nonnull %32) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %31) #9
  call void @llvm.lifetime.end.p0(i64 528, ptr nonnull %31) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %30) #9
  call void @llvm.lifetime.end.p0(i64 528, ptr nonnull %30) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %29) #9
  call void @llvm.lifetime.end.p0(i64 528, ptr nonnull %29) #9
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %17) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %17) #9
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %13) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %13) #9
  br label %365

349:                                              ; preds = %334, %332, %331, %330, %329, %328, %327, %326, %._crit_edge185
  %350 = landingpad { ptr, i32 }
          cleanup
  br label %353

351:                                              ; preds = %347
  %352 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #9
  br label %353

353:                                              ; preds = %.split, %.split.us, %349, %351, %.split181.us, %324, %300, %283
  %.pn150.pn.pn = phi { ptr, i32 } [ %284, %283 ], [ %352, %351 ], [ %350, %349 ], [ %238, %.split181.us ], [ %301, %300 ], [ %325, %324 ], [ %292, %.split ], [ %237, %.split.us ]
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %35) #9
  br label %354

354:                                              ; preds = %353, %281
  %.pn150.pn.pn.pn = phi { ptr, i32 } [ %.pn150.pn.pn, %353 ], [ %282, %281 ]
  call void @llvm.lifetime.end.p0(i64 528, ptr nonnull %35) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %34) #9
  br label %355

355:                                              ; preds = %354, %279
  %.pn150.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn150.pn.pn.pn, %354 ], [ %280, %279 ]
  call void @llvm.lifetime.end.p0(i64 528, ptr nonnull %34) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %33) #9
  br label %356

356:                                              ; preds = %355, %277
  %.pn150.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn150.pn.pn.pn.pn, %355 ], [ %278, %277 ]
  call void @llvm.lifetime.end.p0(i64 528, ptr nonnull %33) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %32) #9
  br label %357

357:                                              ; preds = %356, %275
  %.pn150.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn150.pn.pn.pn.pn.pn, %356 ], [ %276, %275 ]
  call void @llvm.lifetime.end.p0(i64 528, ptr nonnull %32) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %31) #9
  br label %358

358:                                              ; preds = %357, %273
  %.pn150.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn150.pn.pn.pn.pn.pn.pn, %357 ], [ %274, %273 ]
  call void @llvm.lifetime.end.p0(i64 528, ptr nonnull %31) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %30) #9
  br label %359

359:                                              ; preds = %358, %271
  %.pn150.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn150.pn.pn.pn.pn.pn.pn.pn, %358 ], [ %272, %271 ]
  call void @llvm.lifetime.end.p0(i64 528, ptr nonnull %30) #9
  call void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(264) %29) #9
  br label %360

360:                                              ; preds = %359, %269
  %.pn150.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn150.pn.pn.pn.pn.pn.pn.pn.pn, %359 ], [ %270, %269 ]
  call void @llvm.lifetime.end.p0(i64 528, ptr nonnull %29) #9
  br label %361

361:                                              ; preds = %268, %263, %258, %253, %360, %247, %185, %173
  %.pn161 = phi { ptr, i32 } [ %186, %185 ], [ %.pn150.pn.pn.pn.pn.pn.pn.pn.pn.pn, %360 ], [ %248, %247 ], [ %.pn146, %268 ], [ %.pn144, %263 ], [ %.pn142, %258 ], [ %.pn140, %253 ], [ %.pn137.pn, %173 ]
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %17) #9
  br label %362

362:                                              ; preds = %361, %164
  %.pn161.pn = phi { ptr, i32 } [ %.pn161, %361 ], [ %165, %164 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %17) #9
  br label %363

363:                                              ; preds = %362, %163
  %.pn161.pn.pn = phi { ptr, i32 } [ %.pn161.pn, %362 ], [ %.pn134.pn, %163 ]
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %13) #9
  br label %364

364:                                              ; preds = %363, %154
  %.pn161.pn.pn.pn = phi { ptr, i32 } [ %.pn161.pn.pn, %363 ], [ %155, %154 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %13) #9
  br label %366

365:                                              ; preds = %348, %116
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  call void @_ZN7SGTELIB11TrainingSetD1Ev(ptr noundef nonnull align 8 dereferenceable(504) %7) #9
  call void @llvm.lifetime.end.p0(i64 504, ptr nonnull %7) #9
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %6) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6) #9
  ret void

366:                                              ; preds = %119, %364, %135, %130, %121, %117, %54
  %.pn168 = phi { ptr, i32 } [ %55, %54 ], [ %118, %117 ], [ %120, %119 ], [ %.pn161.pn.pn.pn, %364 ], [ %.pn132, %135 ], [ %.pn.pn, %130 ], [ %122, %121 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  br label %367

367:                                              ; preds = %366, %50
  %.pn168.pn = phi { ptr, i32 } [ %.pn168, %366 ], [ %51, %50 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  call void @_ZN7SGTELIB11TrainingSetD1Ev(ptr noundef nonnull align 8 dereferenceable(504) %7) #9
  br label %368

368:                                              ; preds = %367, %48
  %.pn168.pn.pn = phi { ptr, i32 } [ %.pn168.pn, %367 ], [ %49, %48 ]
  call void @llvm.lifetime.end.p0(i64 504, ptr nonnull %7) #9
  call void @_ZN7SGTELIB6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(56) %6) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6) #9
  resume { ptr, i32 } %.pn168.pn.pn
}

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

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

declare void @_ZN7SGTELIB11TrainingSet12set_bbo_typeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(504), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4

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

declare void @_ZN7SGTELIB6Matrix8add_rowsERKS0_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #4

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = distinct !{!12, !10}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = !{!17, !17, i64 0}
!17 = !{!"vtable pointer", !8, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass