; LLVM IR from buresjan/optim_lbm :: nomad/ext/sgtelib/src/Surrogate_Parameters.ll (ZN7SGTELIB20Surrogate_Parameters5checkEv)

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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"class.SGTELIB::Surrogate_Parameters" = type { ptr, i32, i32, i32, i32, i32, double, i32, double, i32, i32, i32, %"class.SGTELIB::Matrix", i32, i32, i32, double, double, double, double, %"class.SGTELIB::Matrix", i32, i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, i32 }
%"class.SGTELIB::Matrix" = type { ptr, %"class.std::__cxx11::basic_string", i32, i32, ptr }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [99 x i8], align 1
@_ZTIN7SGTELIB9ExceptionE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.68 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [15 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7SGTELIB20Surrogate_Parameters5checkEv(ptr noundef nonnull align 8 dereferenceable(312) %0) #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::allocator", align 1
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator", align 1
  %9 = alloca i1, align 1
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator", align 1
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator", align 1
  %14 = alloca i1, align 1
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator", align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator", align 1
  %19 = alloca i1, align 1
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator", align 1
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator", align 1
  %24 = alloca i1, 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 i1, align 1
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator", align 1
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator", align 1
  %34 = alloca i1, align 1
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::allocator", align 1
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::allocator", align 1
  %39 = alloca i1, align 1
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator", align 1
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::allocator", align 1
  %44 = alloca i1, align 1
  %45 = alloca %"class.std::__cxx11::basic_string", align 8
  %46 = alloca %"class.std::allocator", 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 %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::allocator", align 1
  %54 = alloca i1, align 1
  %55 = alloca %"class.std::__cxx11::basic_string", align 8
  %56 = alloca %"class.std::allocator", align 1
  %57 = alloca %"class.std::__cxx11::basic_string", align 8
  %58 = alloca %"class.std::allocator", align 1
  %59 = alloca i1, align 1
  %60 = alloca %"class.std::__cxx11::basic_string", align 8
  %61 = alloca %"class.std::allocator", align 1
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.std::allocator", align 1
  %64 = alloca i1, align 1
  %65 = alloca %"class.std::__cxx11::basic_string", align 8
  %66 = alloca %"class.std::allocator", align 1
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::allocator", align 1
  %69 = alloca i1, align 1
  store ptr %0, ptr %2, align 8, !tbaa !5
  %70 = load ptr, ptr %2, align 8
  %71 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 1
  %72 = load i32, ptr %71, align 8, !tbaa !9
  switch i32 %72, label %423 [
    i32 0, label %73
    i32 1, label %73
    i32 9, label %73
    i32 3, label %95
    i32 4, label %95
    i32 5, label %95
    i32 8, label %148
    i32 6, label %175
    i32 10, label %228
    i32 11, label %292
    i32 12, label %445
    i32 13, label %445
    i32 7, label %445
  ]

73:                                               ; preds = %1, %1, %1
  store i1 true, ptr %9, align 1
  %74 = call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %3) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %4) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %75 unwind label %78

75:                                               ; preds = %73
  call void @llvm.lifetime.start.p0(i64 32, ptr %7) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef @.str.68, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %76 unwind label %82

76:                                               ; preds = %75
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %74, ptr noundef nonnull align 8 dereferenceable(32) %3, i32 noundef 463, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %77 unwind label %86

77:                                               ; preds = %76
  store i1 false, ptr %9, align 1
  invoke void @__cxa_throw(ptr %74, ptr @_ZTIN7SGTELIB9ExceptionE, ptr @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %512 unwind label %86

78:                                               ; preds = %73
  %79 = landingpad { ptr, i32 }
          cleanup
  %80 = extractvalue { ptr, i32 } %79, 0
  store ptr %80, ptr %5, align 8
  %81 = extractvalue { ptr, i32 } %79, 1
  store i32 %81, ptr %6, align 4
  br label %91

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

86:                                               ; preds = %77, %76
  %87 = landingpad { ptr, i32 }
          cleanup
  %88 = extractvalue { ptr, i32 } %87, 0
  store ptr %88, ptr %5, align 8
  %89 = extractvalue { ptr, i32 } %87, 1
  store i32 %89, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  br label %90

90:                                               ; preds = %86, %82
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #6
  br label %91

91:                                               ; preds = %90, %78
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %4) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %3) #6
  %92 = load i1, ptr %9, align 1
  br i1 %92, label %93, label %94

93:                                               ; preds = %91
  call void @__cxa_free_exception(ptr %74) #6
  br label %94

94:                                               ; preds = %93, %91
  br label %507

95:                                               ; preds = %1, %1, %1
  %96 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 2
  %97 = load i32, ptr %96, align 4, !tbaa !24
  %98 = icmp slt i32 %97, 0
  br i1 %98, label %99, label %121

99:                                               ; preds = %95
  store i1 true, ptr %14, align 1
  %100 = call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %101 unwind label %104

101:                                              ; preds = %99
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.69, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %102 unwind label %108

102:                                              ; preds = %101
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %100, ptr noundef nonnull align 8 dereferenceable(32) %10, i32 noundef 470, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %103 unwind label %112

103:                                              ; preds = %102
  store i1 false, ptr %14, align 1
  invoke void @__cxa_throw(ptr %100, ptr @_ZTIN7SGTELIB9ExceptionE, ptr @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %512 unwind label %112

104:                                              ; preds = %99
  %105 = landingpad { ptr, i32 }
          cleanup
  %106 = extractvalue { ptr, i32 } %105, 0
  store ptr %106, ptr %5, align 8
  %107 = extractvalue { ptr, i32 } %105, 1
  store i32 %107, ptr %6, align 4
  br label %117

108:                                              ; preds = %101
  %109 = landingpad { ptr, i32 }
          cleanup
  %110 = extractvalue { ptr, i32 } %109, 0
  store ptr %110, ptr %5, align 8
  %111 = extractvalue { ptr, i32 } %109, 1
  store i32 %111, ptr %6, align 4
  br label %116

112:                                              ; preds = %103, %102
  %113 = landingpad { ptr, i32 }
          cleanup
  %114 = extractvalue { ptr, i32 } %113, 0
  store ptr %114, ptr %5, align 8
  %115 = extractvalue { ptr, i32 } %113, 1
  store i32 %115, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  br label %116

116:                                              ; preds = %112, %108
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  br label %117

117:                                              ; preds = %116, %104
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #6
  %118 = load i1, ptr %14, align 1
  br i1 %118, label %119, label %120

119:                                              ; preds = %117
  call void @__cxa_free_exception(ptr %100) #6
  br label %120

120:                                              ; preds = %119, %117
  br label %507

121:                                              ; preds = %95
  %122 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 8
  %123 = load double, ptr %122, align 8, !tbaa !25
  %124 = fcmp olt double %123, 0.000000e+00
  br i1 %124, label %125, label %147

125:                                              ; preds = %121
  store i1 true, ptr %19, align 1
  %126 = call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %127 unwind label %130

127:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef @.str.70, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %128 unwind label %134

128:                                              ; preds = %127
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %126, ptr noundef nonnull align 8 dereferenceable(32) %15, i32 noundef 472, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %129 unwind label %138

129:                                              ; preds = %128
  store i1 false, ptr %19, align 1
  invoke void @__cxa_throw(ptr %126, ptr @_ZTIN7SGTELIB9ExceptionE, ptr @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %512 unwind label %138

130:                                              ; preds = %125
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %5, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %6, align 4
  br label %143

134:                                              ; preds = %127
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %5, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %6, align 4
  br label %142

138:                                              ; preds = %129, %128
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %5, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  br label %142

142:                                              ; preds = %138, %134
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  br label %143

143:                                              ; preds = %142, %130
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #6
  %144 = load i1, ptr %19, align 1
  br i1 %144, label %145, label %146

145:                                              ; preds = %143
  call void @__cxa_free_exception(ptr %126) #6
  br label %146

146:                                              ; preds = %145, %143
  br label %507

147:                                              ; preds = %121
  br label %445

148:                                              ; preds = %1
  %149 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 4
  %150 = load i32, ptr %149, align 4, !tbaa !26
  %151 = call noundef zeroext i1 @_ZN7SGTELIB20kernel_is_decreasingENS_8kernel_tE(i32 noundef %150)
  br i1 %151, label %174, label %152

152:                                              ; preds = %148
  store i1 true, ptr %24, align 1
  %153 = call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %154 unwind label %157

154:                                              ; preds = %152
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef @.str.71, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %155 unwind label %161

155:                                              ; preds = %154
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %153, ptr noundef nonnull align 8 dereferenceable(32) %20, i32 noundef 477, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %156 unwind label %165

156:                                              ; preds = %155
  store i1 false, ptr %24, align 1
  invoke void @__cxa_throw(ptr %153, ptr @_ZTIN7SGTELIB9ExceptionE, ptr @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %512 unwind label %165

157:                                              ; preds = %152
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %5, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %6, align 4
  br label %170

161:                                              ; preds = %154
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %5, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %6, align 4
  br label %169

165:                                              ; preds = %156, %155
  %166 = landingpad { ptr, i32 }
          cleanup
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %5, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  br label %169

169:                                              ; preds = %165, %161
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  br label %170

170:                                              ; preds = %169, %157
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #6
  %171 = load i1, ptr %24, align 1
  br i1 %171, label %172, label %173

172:                                              ; preds = %170
  call void @__cxa_free_exception(ptr %153) #6
  br label %173

173:                                              ; preds = %172, %170
  br label %507

174:                                              ; preds = %148
  br label %445

175:                                              ; preds = %1
  %176 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 6
  %177 = load double, ptr %176, align 8, !tbaa !27
  %178 = fcmp ole double %177, 0.000000e+00
  br i1 %178, label %179, label %201

179:                                              ; preds = %175
  store i1 true, ptr %29, align 1
  %180 = call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %181 unwind label %184

181:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 32, ptr %27) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef @.str.72, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %182 unwind label %188

182:                                              ; preds = %181
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %180, ptr noundef nonnull align 8 dereferenceable(32) %25, i32 noundef 483, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %183 unwind label %192

183:                                              ; preds = %182
  store i1 false, ptr %29, align 1
  invoke void @__cxa_throw(ptr %180, ptr @_ZTIN7SGTELIB9ExceptionE, ptr @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %512 unwind label %192

184:                                              ; preds = %179
  %185 = landingpad { ptr, i32 }
          cleanup
  %186 = extractvalue { ptr, i32 } %185, 0
  store ptr %186, ptr %5, align 8
  %187 = extractvalue { ptr, i32 } %185, 1
  store i32 %187, ptr %6, align 4
  br label %197

188:                                              ; preds = %181
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %5, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %6, align 4
  br label %196

192:                                              ; preds = %183, %182
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %5, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #6
  br label %196

196:                                              ; preds = %192, %188
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %27) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #6
  br label %197

197:                                              ; preds = %196, %184
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #6
  %198 = load i1, ptr %29, align 1
  br i1 %198, label %199, label %200

199:                                              ; preds = %197
  call void @__cxa_free_exception(ptr %180) #6
  br label %200

200:                                              ; preds = %199, %197
  br label %507

201:                                              ; preds = %175
  %202 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 4
  %203 = load i32, ptr %202, align 4, !tbaa !26
  %204 = call noundef zeroext i1 @_ZN7SGTELIB20kernel_is_decreasingENS_8kernel_tE(i32 noundef %203)
  br i1 %204, label %227, label %205

205:                                              ; preds = %201
  store i1 true, ptr %34, align 1
  %206 = call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %207 unwind label %210

207:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef @.str.71, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %208 unwind label %214

208:                                              ; preds = %207
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %206, ptr noundef nonnull align 8 dereferenceable(32) %30, i32 noundef 485, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %209 unwind label %218

209:                                              ; preds = %208
  store i1 false, ptr %34, align 1
  invoke void @__cxa_throw(ptr %206, ptr @_ZTIN7SGTELIB9ExceptionE, ptr @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %512 unwind label %218

210:                                              ; preds = %205
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %5, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %6, align 4
  br label %223

214:                                              ; preds = %207
  %215 = landingpad { ptr, i32 }
          cleanup
  %216 = extractvalue { ptr, i32 } %215, 0
  store ptr %216, ptr %5, align 8
  %217 = extractvalue { ptr, i32 } %215, 1
  store i32 %217, ptr %6, align 4
  br label %222

218:                                              ; preds = %209, %208
  %219 = landingpad { ptr, i32 }
          cleanup
  %220 = extractvalue { ptr, i32 } %219, 0
  store ptr %220, ptr %5, align 8
  %221 = extractvalue { ptr, i32 } %219, 1
  store i32 %221, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #6
  br label %222

222:                                              ; preds = %218, %214
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  br label %223

223:                                              ; preds = %222, %210
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #6
  %224 = load i1, ptr %34, align 1
  br i1 %224, label %225, label %226

225:                                              ; preds = %223
  call void @__cxa_free_exception(ptr %206) #6
  br label %226

226:                                              ; preds = %225, %223
  br label %507

227:                                              ; preds = %201
  br label %445

228:                                              ; preds = %1
  %229 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 6
  %230 = load double, ptr %229, align 8, !tbaa !27
  %231 = fcmp ole double %230, 0.000000e+00
  br i1 %231, label %232, label %254

232:                                              ; preds = %228
  store i1 true, ptr %39, align 1
  %233 = call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %234 unwind label %237

234:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef @.str.72, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %235 unwind label %241

235:                                              ; preds = %234
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %233, ptr noundef nonnull align 8 dereferenceable(32) %35, i32 noundef 490, ptr noundef nonnull align 8 dereferenceable(32) %37)
          to label %236 unwind label %245

236:                                              ; preds = %235
  store i1 false, ptr %39, align 1
  invoke void @__cxa_throw(ptr %233, ptr @_ZTIN7SGTELIB9ExceptionE, ptr @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %512 unwind label %245

237:                                              ; preds = %232
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %5, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %6, align 4
  br label %250

241:                                              ; preds = %234
  %242 = landingpad { ptr, i32 }
          cleanup
  %243 = extractvalue { ptr, i32 } %242, 0
  store ptr %243, ptr %5, align 8
  %244 = extractvalue { ptr, i32 } %242, 1
  store i32 %244, ptr %6, align 4
  br label %249

245:                                              ; preds = %236, %235
  %246 = landingpad { ptr, i32 }
          cleanup
  %247 = extractvalue { ptr, i32 } %246, 0
  store ptr %247, ptr %5, align 8
  %248 = extractvalue { ptr, i32 } %246, 1
  store i32 %248, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #6
  br label %249

249:                                              ; preds = %245, %241
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #6
  br label %250

250:                                              ; preds = %249, %237
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #6
  %251 = load i1, ptr %39, align 1
  br i1 %251, label %252, label %253

252:                                              ; preds = %250
  call void @__cxa_free_exception(ptr %233) #6
  br label %253

253:                                              ; preds = %252, %250
  br label %507

254:                                              ; preds = %228
  %255 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 8
  %256 = load double, ptr %255, align 8, !tbaa !25
  %257 = fcmp olt double %256, 0.000000e+00
  br i1 %257, label %258, label %280

258:                                              ; preds = %254
  store i1 true, ptr %44, align 1
  %259 = call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %260 unwind label %263

260:                                              ; preds = %258
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef @.str.70, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %261 unwind label %267

261:                                              ; preds = %260
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %259, ptr noundef nonnull align 8 dereferenceable(32) %40, i32 noundef 492, ptr noundef nonnull align 8 dereferenceable(32) %42)
          to label %262 unwind label %271

262:                                              ; preds = %261
  store i1 false, ptr %44, align 1
  invoke void @__cxa_throw(ptr %259, ptr @_ZTIN7SGTELIB9ExceptionE, ptr @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %512 unwind label %271

263:                                              ; preds = %258
  %264 = landingpad { ptr, i32 }
          cleanup
  %265 = extractvalue { ptr, i32 } %264, 0
  store ptr %265, ptr %5, align 8
  %266 = extractvalue { ptr, i32 } %264, 1
  store i32 %266, ptr %6, align 4
  br label %276

267:                                              ; preds = %260
  %268 = landingpad { ptr, i32 }
          cleanup
  %269 = extractvalue { ptr, i32 } %268, 0
  store ptr %269, ptr %5, align 8
  %270 = extractvalue { ptr, i32 } %268, 1
  store i32 %270, ptr %6, align 4
  br label %275

271:                                              ; preds = %262, %261
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %5, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #6
  br label %275

275:                                              ; preds = %271, %267
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #6
  br label %276

276:                                              ; preds = %275, %263
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %40) #6
  %277 = load i1, ptr %44, align 1
  br i1 %277, label %278, label %279

278:                                              ; preds = %276
  call void @__cxa_free_exception(ptr %259) #6
  br label %279

279:                                              ; preds = %278, %276
  br label %507

280:                                              ; preds = %254
  %281 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 4
  %282 = load i32, ptr %281, align 4, !tbaa !26
  %283 = call noundef zeroext i1 @_ZN7SGTELIB20kernel_has_parameterENS_8kernel_tE(i32 noundef %282)
  br i1 %283, label %291, label %284

284:                                              ; preds = %280
  %285 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 5
  %286 = load i32, ptr %285, align 8, !tbaa !28
  %287 = icmp eq i32 %286, 0
  br i1 %287, label %288, label %291

288:                                              ; preds = %284
  %289 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 6
  store double 1.000000e+00, ptr %289, align 8, !tbaa !27
  %290 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 7
  store i32 0, ptr %290, align 8, !tbaa !29
  br label %291

291:                                              ; preds = %288, %284, %280
  br label %445

292:                                              ; preds = %1
  %293 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 2
  %294 = load i32, ptr %293, align 4, !tbaa !24
  %295 = icmp slt i32 %294, 0
  br i1 %295, label %300, label %296

296:                                              ; preds = %292
  %297 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 2
  %298 = load i32, ptr %297, align 4, !tbaa !24
  %299 = icmp sgt i32 %298, 2
  br i1 %299, label %300, label %322

300:                                              ; preds = %296, %292
  store i1 true, ptr %49, align 1
  %301 = call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %302 unwind label %305

302:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef @.str.73, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %303 unwind label %309

303:                                              ; preds = %302
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %301, ptr noundef nonnull align 8 dereferenceable(32) %45, i32 noundef 505, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %304 unwind label %313

304:                                              ; preds = %303
  store i1 false, ptr %49, align 1
  invoke void @__cxa_throw(ptr %301, ptr @_ZTIN7SGTELIB9ExceptionE, ptr @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %512 unwind label %313

305:                                              ; preds = %300
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %5, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %6, align 4
  br label %318

309:                                              ; preds = %302
  %310 = landingpad { ptr, i32 }
          cleanup
  %311 = extractvalue { ptr, i32 } %310, 0
  store ptr %311, ptr %5, align 8
  %312 = extractvalue { ptr, i32 } %310, 1
  store i32 %312, ptr %6, align 4
  br label %317

313:                                              ; preds = %304, %303
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %5, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #6
  br label %317

317:                                              ; preds = %313, %309
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %48) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #6
  br label %318

318:                                              ; preds = %317, %305
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %46) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #6
  %319 = load i1, ptr %49, align 1
  br i1 %319, label %320, label %321

320:                                              ; preds = %318
  call void @__cxa_free_exception(ptr %301) #6
  br label %321

321:                                              ; preds = %320, %318
  br label %507

322:                                              ; preds = %296
  %323 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 8
  %324 = load double, ptr %323, align 8, !tbaa !25
  %325 = fcmp olt double %324, 0.000000e+00
  br i1 %325, label %326, label %348

326:                                              ; preds = %322
  store i1 true, ptr %54, align 1
  %327 = call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %328 unwind label %331

328:                                              ; preds = %326
  call void @llvm.lifetime.start.p0(i64 32, ptr %52) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef @.str.70, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %329 unwind label %335

329:                                              ; preds = %328
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %327, ptr noundef nonnull align 8 dereferenceable(32) %50, i32 noundef 507, ptr noundef nonnull align 8 dereferenceable(32) %52)
          to label %330 unwind label %339

330:                                              ; preds = %329
  store i1 false, ptr %54, align 1
  invoke void @__cxa_throw(ptr %327, ptr @_ZTIN7SGTELIB9ExceptionE, ptr @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %512 unwind label %339

331:                                              ; preds = %326
  %332 = landingpad { ptr, i32 }
          cleanup
  %333 = extractvalue { ptr, i32 } %332, 0
  store ptr %333, ptr %5, align 8
  %334 = extractvalue { ptr, i32 } %332, 1
  store i32 %334, ptr %6, align 4
  br label %344

335:                                              ; preds = %328
  %336 = landingpad { ptr, i32 }
          cleanup
  %337 = extractvalue { ptr, i32 } %336, 0
  store ptr %337, ptr %5, align 8
  %338 = extractvalue { ptr, i32 } %336, 1
  store i32 %338, ptr %6, align 4
  br label %343

339:                                              ; preds = %330, %329
  %340 = landingpad { ptr, i32 }
          cleanup
  %341 = extractvalue { ptr, i32 } %340, 0
  store ptr %341, ptr %5, align 8
  %342 = extractvalue { ptr, i32 } %340, 1
  store i32 %342, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #6
  br label %343

343:                                              ; preds = %339, %335
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #6
  br label %344

344:                                              ; preds = %343, %331
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #6
  %345 = load i1, ptr %54, align 1
  br i1 %345, label %346, label %347

346:                                              ; preds = %344
  call void @__cxa_free_exception(ptr %327) #6
  br label %347

347:                                              ; preds = %346, %344
  br label %507

348:                                              ; preds = %322
  %349 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 23
  %350 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %349, ptr noundef @.str.74)
  br i1 %350, label %351, label %396

351:                                              ; preds = %348
  %352 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 23
  %353 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %352, ptr noundef @.str.75)
  br i1 %353, label %354, label %396

354:                                              ; preds = %351
  %355 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 23
  %356 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %355, ptr noundef @.str.76)
  br i1 %356, label %357, label %396

357:                                              ; preds = %354
  %358 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 23
  %359 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %358, ptr noundef @.str.77)
  br i1 %359, label %360, label %396

360:                                              ; preds = %357
  %361 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 23
  %362 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %361, ptr noundef @.str.78)
  br i1 %362, label %363, label %396

363:                                              ; preds = %360
  %364 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 23
  %365 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %364, ptr noundef @.str.79)
  br i1 %365, label %366, label %396

366:                                              ; preds = %363
  %367 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 23
  %368 = call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %367, ptr noundef @.str.80)
  br i1 %368, label %369, label %396

369:                                              ; preds = %366
  %370 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.81)
  %371 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 23
  %372 = 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) %370, ptr noundef nonnull align 8 dereferenceable(32) %371)
  %373 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %372, ptr noundef @.str.2)
  %374 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.82)
  store i1 true, ptr %59, align 1
  %375 = call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %55) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %376 unwind label %379

376:                                              ; preds = %369
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %377 unwind label %383

377:                                              ; preds = %376
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %375, ptr noundef nonnull align 8 dereferenceable(32) %55, i32 noundef 529, ptr noundef nonnull align 8 dereferenceable(32) %57)
          to label %378 unwind label %387

378:                                              ; preds = %377
  store i1 false, ptr %59, align 1
  invoke void @__cxa_throw(ptr %375, ptr @_ZTIN7SGTELIB9ExceptionE, ptr @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %512 unwind label %387

379:                                              ; preds = %369
  %380 = landingpad { ptr, i32 }
          cleanup
  %381 = extractvalue { ptr, i32 } %380, 0
  store ptr %381, ptr %5, align 8
  %382 = extractvalue { ptr, i32 } %380, 1
  store i32 %382, ptr %6, align 4
  br label %392

383:                                              ; preds = %376
  %384 = landingpad { ptr, i32 }
          cleanup
  %385 = extractvalue { ptr, i32 } %384, 0
  store ptr %385, ptr %5, align 8
  %386 = extractvalue { ptr, i32 } %384, 1
  store i32 %386, ptr %6, align 4
  br label %391

387:                                              ; preds = %378, %377
  %388 = landingpad { ptr, i32 }
          cleanup
  %389 = extractvalue { ptr, i32 } %388, 0
  store ptr %389, ptr %5, align 8
  %390 = extractvalue { ptr, i32 } %388, 1
  store i32 %390, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #6
  br label %391

391:                                              ; preds = %387, %383
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #6
  br label %392

392:                                              ; preds = %391, %379
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #6
  %393 = load i1, ptr %59, align 1
  br i1 %393, label %394, label %395

394:                                              ; preds = %392
  call void @__cxa_free_exception(ptr %375) #6
  br label %395

395:                                              ; preds = %394, %392
  br label %507

396:                                              ; preds = %366, %363, %360, %357, %354, %351, %348
  %397 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 4
  %398 = load i32, ptr %397, align 4, !tbaa !26
  %399 = call noundef zeroext i1 @_ZN7SGTELIB20kernel_is_decreasingENS_8kernel_tE(i32 noundef %398)
  br i1 %399, label %422, label %400

400:                                              ; preds = %396
  store i1 true, ptr %64, align 1
  %401 = call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %402 unwind label %405

402:                                              ; preds = %400
  call void @llvm.lifetime.start.p0(i64 32, ptr %62) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef @.str.71, ptr noundef nonnull align 1 dereferenceable(1) %63)
          to label %403 unwind label %409

403:                                              ; preds = %402
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %401, ptr noundef nonnull align 8 dereferenceable(32) %60, i32 noundef 532, ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %404 unwind label %413

404:                                              ; preds = %403
  store i1 false, ptr %64, align 1
  invoke void @__cxa_throw(ptr %401, ptr @_ZTIN7SGTELIB9ExceptionE, ptr @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %512 unwind label %413

405:                                              ; preds = %400
  %406 = landingpad { ptr, i32 }
          cleanup
  %407 = extractvalue { ptr, i32 } %406, 0
  store ptr %407, ptr %5, align 8
  %408 = extractvalue { ptr, i32 } %406, 1
  store i32 %408, ptr %6, align 4
  br label %418

409:                                              ; preds = %402
  %410 = landingpad { ptr, i32 }
          cleanup
  %411 = extractvalue { ptr, i32 } %410, 0
  store ptr %411, ptr %5, align 8
  %412 = extractvalue { ptr, i32 } %410, 1
  store i32 %412, ptr %6, align 4
  br label %417

413:                                              ; preds = %404, %403
  %414 = landingpad { ptr, i32 }
          cleanup
  %415 = extractvalue { ptr, i32 } %414, 0
  store ptr %415, ptr %5, align 8
  %416 = extractvalue { ptr, i32 } %414, 1
  store i32 %416, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #6
  br label %417

417:                                              ; preds = %413, %409
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %63) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #6
  br label %418

418:                                              ; preds = %417, %405
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %61) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #6
  %419 = load i1, ptr %64, align 1
  br i1 %419, label %420, label %421

420:                                              ; preds = %418
  call void @__cxa_free_exception(ptr %401) #6
  br label %421

421:                                              ; preds = %420, %418
  br label %507

422:                                              ; preds = %396
  br label %445

423:                                              ; preds = %1
  store i1 true, ptr %69, align 1
  %424 = call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %65) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %66)
          to label %425 unwind label %428

425:                                              ; preds = %423
  call void @llvm.lifetime.start.p0(i64 32, ptr %67) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef @.str.84, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %426 unwind label %432

426:                                              ; preds = %425
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %424, ptr noundef nonnull align 8 dereferenceable(32) %65, i32 noundef 545, ptr noundef nonnull align 8 dereferenceable(32) %67)
          to label %427 unwind label %436

427:                                              ; preds = %426
  store i1 false, ptr %69, align 1
  invoke void @__cxa_throw(ptr %424, ptr @_ZTIN7SGTELIB9ExceptionE, ptr @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %512 unwind label %436

428:                                              ; preds = %423
  %429 = landingpad { ptr, i32 }
          cleanup
  %430 = extractvalue { ptr, i32 } %429, 0
  store ptr %430, ptr %5, align 8
  %431 = extractvalue { ptr, i32 } %429, 1
  store i32 %431, ptr %6, align 4
  br label %441

432:                                              ; preds = %425
  %433 = landingpad { ptr, i32 }
          cleanup
  %434 = extractvalue { ptr, i32 } %433, 0
  store ptr %434, ptr %5, align 8
  %435 = extractvalue { ptr, i32 } %433, 1
  store i32 %435, ptr %6, align 4
  br label %440

436:                                              ; preds = %427, %426
  %437 = landingpad { ptr, i32 }
          cleanup
  %438 = extractvalue { ptr, i32 } %437, 0
  store ptr %438, ptr %5, align 8
  %439 = extractvalue { ptr, i32 } %437, 1
  store i32 %439, ptr %6, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #6
  br label %440

440:                                              ; preds = %436, %432
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #6
  br label %441

441:                                              ; preds = %440, %428
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %66) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %65) #6
  %442 = load i1, ptr %69, align 1
  br i1 %442, label %443, label %444

443:                                              ; preds = %441
  call void @__cxa_free_exception(ptr %424) #6
  br label %444

444:                                              ; preds = %443, %441
  br label %507

445:                                              ; preds = %422, %291, %227, %174, %147, %1, %1, %1
  %446 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 26
  store i32 0, ptr %446, align 4, !tbaa !30
  %447 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 3
  %448 = load i32, ptr %447, align 8, !tbaa !31
  %449 = icmp eq i32 %448, 1
  br i1 %449, label %450, label %454

450:                                              ; preds = %445
  %451 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 26
  %452 = load i32, ptr %451, align 4, !tbaa !30
  %453 = add nsw i32 %452, 1
  store i32 %453, ptr %451, align 4, !tbaa !30
  br label %454

454:                                              ; preds = %450, %445
  %455 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 5
  %456 = load i32, ptr %455, align 8, !tbaa !28
  %457 = icmp eq i32 %456, 1
  br i1 %457, label %458, label %462

458:                                              ; preds = %454
  %459 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 26
  %460 = load i32, ptr %459, align 4, !tbaa !30
  %461 = add nsw i32 %460, 1
  store i32 %461, ptr %459, align 4, !tbaa !30
  br label %462

462:                                              ; preds = %458, %454
  %463 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 7
  %464 = load i32, ptr %463, align 8, !tbaa !29
  %465 = icmp eq i32 %464, 1
  br i1 %465, label %466, label %470

466:                                              ; preds = %462
  %467 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 26
  %468 = load i32, ptr %467, align 4, !tbaa !30
  %469 = add nsw i32 %468, 1
  store i32 %469, ptr %467, align 4, !tbaa !30
  br label %470

470:                                              ; preds = %466, %462
  %471 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 9
  %472 = load i32, ptr %471, align 8, !tbaa !32
  %473 = icmp eq i32 %472, 1
  br i1 %473, label %474, label %478

474:                                              ; preds = %470
  %475 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 26
  %476 = load i32, ptr %475, align 4, !tbaa !30
  %477 = add nsw i32 %476, 1
  store i32 %477, ptr %475, align 4, !tbaa !30
  br label %478

478:                                              ; preds = %474, %470
  %479 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 11
  %480 = load i32, ptr %479, align 8, !tbaa !33
  %481 = icmp eq i32 %480, 1
  br i1 %481, label %482, label %486

482:                                              ; preds = %478
  %483 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 26
  %484 = load i32, ptr %483, align 4, !tbaa !30
  %485 = add nsw i32 %484, 1
  store i32 %485, ptr %483, align 4, !tbaa !30
  br label %486

486:                                              ; preds = %482, %478
  %487 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 21
  %488 = load i32, ptr %487, align 8, !tbaa !34
  %489 = icmp eq i32 %488, 1
  br i1 %489, label %490, label %496

490:                                              ; preds = %486
  %491 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 20
  %492 = call noundef i32 @_ZNK7SGTELIB6Matrix9get_numelEv(ptr noundef nonnull align 8 dereferenceable(56) %491)
  %493 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 26
  %494 = load i32, ptr %493, align 4, !tbaa !30
  %495 = add nsw i32 %494, %492
  store i32 %495, ptr %493, align 4, !tbaa !30
  br label %496

496:                                              ; preds = %490, %486
  %497 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 14
  %498 = load i32, ptr %497, align 4, !tbaa !35
  %499 = icmp eq i32 %498, 1
  br i1 %499, label %500, label %506

500:                                              ; preds = %496
  %501 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 12
  %502 = call noundef i32 @_ZNK7SGTELIB6Matrix9get_numelEv(ptr noundef nonnull align 8 dereferenceable(56) %501)
  %503 = getelementptr inbounds %"class.SGTELIB::Surrogate_Parameters", ptr %70, i32 0, i32 26
  %504 = load i32, ptr %503, align 4, !tbaa !30
  %505 = add nsw i32 %504, %502
  store i32 %505, ptr %503, align 4, !tbaa !30
  br label %506

506:                                              ; preds = %500, %496
  ret void

507:                                              ; preds = %444, %421, %395, %347, %321, %279, %253, %226, %200, %173, %146, %120, %94
  %508 = load ptr, ptr %5, align 8
  %509 = load i32, ptr %6, align 4
  %510 = insertvalue { ptr, i32 } poison, ptr %508, 0
  %511 = insertvalue { ptr, i32 } %510, i32 %509, 1
  resume { ptr, i32 } %511

512:                                              ; preds = %427, %404, %378, %330, %304, %262, %236, %209, %183, %156, %129, %103, %77
  unreachable
}

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

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

declare void @__cxa_throw(ptr, ptr, ptr)

declare void @__cxa_free_exception(ptr)

declare noundef zeroext i1 @_ZN7SGTELIB20kernel_is_decreasingENS_8kernel_tE(i32 noundef) #4

declare noundef zeroext i1 @_ZN7SGTELIB20kernel_has_parameterENS_8kernel_tE(i32 noundef) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #3

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

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

!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, !11, i64 8}
!10 = !{!"_ZTSN7SGTELIB20Surrogate_ParametersE", !11, i64 8, !12, i64 12, !13, i64 16, !14, i64 20, !13, i64 24, !15, i64 32, !13, i64 40, !15, i64 48, !13, i64 56, !16, i64 60, !13, i64 64, !17, i64 72, !21, i64 128, !13, i64 132, !22, i64 136, !15, i64 144, !15, i64 152, !15, i64 160, !15, i64 168, !17, i64 176, !13, i64 232, !23, i64 236, !18, i64 240, !18, i64 272, !12, i64 304, !12, i64 308}
!11 = !{!"_ZTSN7SGTELIB7model_tE", !7, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!"_ZTSN7SGTELIB14param_status_tE", !7, i64 0}
!14 = !{!"_ZTSN7SGTELIB8kernel_tE", !7, i64 0}
!15 = !{!"double", !7, i64 0}
!16 = !{!"_ZTSN7SGTELIB10distance_tE", !7, i64 0}
!17 = !{!"_ZTSN7SGTELIB6MatrixE", !18, i64 8, !12, i64 40, !12, i64 44, !6, i64 48}
!18 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !19, i64 0, !20, i64 8, !7, i64 16}
!19 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!20 = !{!"long", !7, i64 0}
!21 = !{!"_ZTSN7SGTELIB8weight_tE", !7, i64 0}
!22 = !{!"_ZTSN7SGTELIB13uncertainty_tE", !7, i64 0}
!23 = !{!"_ZTSN7SGTELIB8metric_tE", !7, i64 0}
!24 = !{!10, !12, i64 12}
!25 = !{!10, !15, i64 48}
!26 = !{!10, !14, i64 20}
!27 = !{!10, !15, i64 32}
!28 = !{!10, !13, i64 24}
!29 = !{!10, !13, i64 40}
!30 = !{!10, !12, i64 308}
!31 = !{!10, !13, i64 16}
!32 = !{!10, !13, i64 56}
!33 = !{!10, !13, i64 64}
!34 = !{!10, !13, i64 232}
!35 = !{!10, !13, i64 132}


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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [99 x i8], align 1
@_ZTIN7SGTELIB9ExceptionE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.68 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [15 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7SGTELIB20Surrogate_Parameters5checkEv(ptr noundef nonnull align 8 dereferenceable(312) %0) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::__cxx11::basic_string", align 8
  %3 = alloca %"class.std::allocator", align 1
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::allocator", align 1
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::allocator", align 1
  %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::allocator", align 1
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator", align 1
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::allocator", align 1
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator", align 1
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator", align 1
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator", align 1
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator", align 1
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::allocator", align 1
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator", align 1
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"class.std::allocator", align 1
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator", align 1
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca %"class.std::allocator", align 1
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::allocator", align 1
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::allocator", align 1
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %"class.std::allocator", align 1
  %40 = alloca %"class.std::__cxx11::basic_string", align 8
  %41 = alloca %"class.std::allocator", align 1
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::allocator", align 1
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  %45 = alloca %"class.std::allocator", align 1
  %46 = alloca %"class.std::__cxx11::basic_string", align 8
  %47 = alloca %"class.std::allocator", align 1
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca %"class.std::allocator", align 1
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::allocator", align 1
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca %"class.std::allocator", align 1
  %54 = getelementptr inbounds i8, ptr %0, i64 8
  %55 = load i32, ptr %54, align 8, !tbaa !5
  switch i32 %55, label %255 [
    i32 0, label %56
    i32 1, label %56
    i32 9, label %56
    i32 3, label %67
    i32 4, label %67
    i32 5, label %67
    i32 8, label %97
    i32 6, label %112
    i32 10, label %142
    i32 11, label %181
    i32 12, label %266
    i32 13, label %266
    i32 7, label %266
  ]

56:                                               ; preds = %1, %1, %1
  %57 = tail call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %3) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %2, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %3)
          to label %58 unwind label %.thread

58:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @.str.68, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %59 unwind label %62

59:                                               ; preds = %58
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %57, ptr noundef nonnull align 8 dereferenceable(32) %2, i32 noundef 463, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %60 unwind label %64

60:                                               ; preds = %59
  invoke void @__cxa_throw(ptr nonnull %57, ptr nonnull @_ZTIN7SGTELIB9ExceptionE, ptr nonnull @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %317 unwind label %64

.thread:                                          ; preds = %56
  %61 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #6
  br label %.sink.split

62:                                               ; preds = %58
  %63 = landingpad { ptr, i32 }
          cleanup
  br label %66

64:                                               ; preds = %60, %59
  %.048 = phi i1 [ false, %60 ], [ true, %59 ]
  %65 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #6
  br label %66

66:                                               ; preds = %62, %64
  %.pn114 = phi { ptr, i32 } [ %65, %64 ], [ %63, %62 ]
  %.149 = phi i1 [ %.048, %64 ], [ true, %62 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #6
  br i1 %.149, label %.sink.split, label %316

67:                                               ; preds = %1, %1, %1
  %68 = getelementptr inbounds i8, ptr %0, i64 12
  %69 = load i32, ptr %68, align 4, !tbaa !23
  %70 = icmp slt i32 %69, 0
  br i1 %70, label %71, label %82

71:                                               ; preds = %67
  %72 = tail call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %73 unwind label %.thread127

73:                                               ; preds = %71
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.69, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %74 unwind label %77

74:                                               ; preds = %73
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %72, ptr noundef nonnull align 8 dereferenceable(32) %6, i32 noundef 470, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %75 unwind label %79

75:                                               ; preds = %74
  invoke void @__cxa_throw(ptr nonnull %72, ptr nonnull @_ZTIN7SGTELIB9ExceptionE, ptr nonnull @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %317 unwind label %79

.thread127:                                       ; preds = %71
  %76 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  br label %.sink.split

77:                                               ; preds = %73
  %78 = landingpad { ptr, i32 }
          cleanup
  br label %81

79:                                               ; preds = %75, %74
  %.045 = phi i1 [ false, %75 ], [ true, %74 ]
  %80 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  br label %81

81:                                               ; preds = %77, %79
  %.pn111 = phi { ptr, i32 } [ %80, %79 ], [ %78, %77 ]
  %.146 = phi i1 [ %.045, %79 ], [ true, %77 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  br i1 %.146, label %.sink.split, label %316

82:                                               ; preds = %67
  %83 = getelementptr inbounds i8, ptr %0, i64 48
  %84 = load double, ptr %83, align 8, !tbaa !24
  %85 = fcmp olt double %84, 0.000000e+00
  br i1 %85, label %86, label %266

86:                                               ; preds = %82
  %87 = tail call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %88 unwind label %.thread131

88:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull @.str.70, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %89 unwind label %92

89:                                               ; preds = %88
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %87, ptr noundef nonnull align 8 dereferenceable(32) %10, i32 noundef 472, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %90 unwind label %94

90:                                               ; preds = %89
  invoke void @__cxa_throw(ptr nonnull %87, ptr nonnull @_ZTIN7SGTELIB9ExceptionE, ptr nonnull @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %317 unwind label %94

.thread131:                                       ; preds = %86
  %91 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  br label %.sink.split

92:                                               ; preds = %88
  %93 = landingpad { ptr, i32 }
          cleanup
  br label %96

94:                                               ; preds = %90, %89
  %.042 = phi i1 [ false, %90 ], [ true, %89 ]
  %95 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  br label %96

96:                                               ; preds = %92, %94
  %.pn108 = phi { ptr, i32 } [ %95, %94 ], [ %93, %92 ]
  %.143 = phi i1 [ %.042, %94 ], [ true, %92 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  br i1 %.143, label %.sink.split, label %316

97:                                               ; preds = %1
  %98 = getelementptr inbounds i8, ptr %0, i64 20
  %99 = load i32, ptr %98, align 4, !tbaa !25
  %100 = tail call noundef zeroext i1 @_ZN7SGTELIB20kernel_is_decreasingENS_8kernel_tE(i32 noundef %99)
  br i1 %100, label %266, label %101

101:                                              ; preds = %97
  %102 = tail call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %103 unwind label %.thread135

103:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @.str.71, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %104 unwind label %107

104:                                              ; preds = %103
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %102, ptr noundef nonnull align 8 dereferenceable(32) %14, i32 noundef 477, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %105 unwind label %109

105:                                              ; preds = %104
  invoke void @__cxa_throw(ptr nonnull %102, ptr nonnull @_ZTIN7SGTELIB9ExceptionE, ptr nonnull @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %317 unwind label %109

.thread135:                                       ; preds = %101
  %106 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  br label %.sink.split

107:                                              ; preds = %103
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %111

109:                                              ; preds = %105, %104
  %.039 = phi i1 [ false, %105 ], [ true, %104 ]
  %110 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  br label %111

111:                                              ; preds = %107, %109
  %.pn105 = phi { ptr, i32 } [ %110, %109 ], [ %108, %107 ]
  %.140 = phi i1 [ %.039, %109 ], [ true, %107 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  br i1 %.140, label %.sink.split, label %316

112:                                              ; preds = %1
  %113 = getelementptr inbounds i8, ptr %0, i64 32
  %114 = load double, ptr %113, align 8, !tbaa !26
  %115 = fcmp ugt double %114, 0.000000e+00
  br i1 %115, label %127, label %116

116:                                              ; preds = %112
  %117 = tail call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %118 unwind label %.thread139

118:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull @.str.72, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %119 unwind label %122

119:                                              ; preds = %118
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %117, ptr noundef nonnull align 8 dereferenceable(32) %18, i32 noundef 483, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %120 unwind label %124

120:                                              ; preds = %119
  invoke void @__cxa_throw(ptr nonnull %117, ptr nonnull @_ZTIN7SGTELIB9ExceptionE, ptr nonnull @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %317 unwind label %124

.thread139:                                       ; preds = %116
  %121 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #6
  br label %.sink.split

122:                                              ; preds = %118
  %123 = landingpad { ptr, i32 }
          cleanup
  br label %126

124:                                              ; preds = %120, %119
  %.036 = phi i1 [ false, %120 ], [ true, %119 ]
  %125 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  br label %126

126:                                              ; preds = %122, %124
  %.pn102 = phi { ptr, i32 } [ %125, %124 ], [ %123, %122 ]
  %.137 = phi i1 [ %.036, %124 ], [ true, %122 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #6
  br i1 %.137, label %.sink.split, label %316

127:                                              ; preds = %112
  %128 = getelementptr inbounds i8, ptr %0, i64 20
  %129 = load i32, ptr %128, align 4, !tbaa !25
  %130 = tail call noundef zeroext i1 @_ZN7SGTELIB20kernel_is_decreasingENS_8kernel_tE(i32 noundef %129)
  br i1 %130, label %266, label %131

131:                                              ; preds = %127
  %132 = tail call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %133 unwind label %.thread143

133:                                              ; preds = %131
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull @.str.71, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %134 unwind label %137

134:                                              ; preds = %133
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %132, ptr noundef nonnull align 8 dereferenceable(32) %22, i32 noundef 485, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %135 unwind label %139

135:                                              ; preds = %134
  invoke void @__cxa_throw(ptr nonnull %132, ptr nonnull @_ZTIN7SGTELIB9ExceptionE, ptr nonnull @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %317 unwind label %139

.thread143:                                       ; preds = %131
  %136 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #6
  br label %.sink.split

137:                                              ; preds = %133
  %138 = landingpad { ptr, i32 }
          cleanup
  br label %141

139:                                              ; preds = %135, %134
  %.033 = phi i1 [ false, %135 ], [ true, %134 ]
  %140 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #6
  br label %141

141:                                              ; preds = %137, %139
  %.pn99 = phi { ptr, i32 } [ %140, %139 ], [ %138, %137 ]
  %.134 = phi i1 [ %.033, %139 ], [ true, %137 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #6
  br i1 %.134, label %.sink.split, label %316

142:                                              ; preds = %1
  %143 = getelementptr inbounds i8, ptr %0, i64 32
  %144 = load double, ptr %143, align 8, !tbaa !26
  %145 = fcmp ugt double %144, 0.000000e+00
  br i1 %145, label %157, label %146

146:                                              ; preds = %142
  %147 = tail call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %148 unwind label %.thread147

148:                                              ; preds = %146
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull @.str.72, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %149 unwind label %152

149:                                              ; preds = %148
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %147, ptr noundef nonnull align 8 dereferenceable(32) %26, i32 noundef 490, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %150 unwind label %154

150:                                              ; preds = %149
  invoke void @__cxa_throw(ptr nonnull %147, ptr nonnull @_ZTIN7SGTELIB9ExceptionE, ptr nonnull @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %317 unwind label %154

.thread147:                                       ; preds = %146
  %151 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #6
  br label %.sink.split

152:                                              ; preds = %148
  %153 = landingpad { ptr, i32 }
          cleanup
  br label %156

154:                                              ; preds = %150, %149
  %.030 = phi i1 [ false, %150 ], [ true, %149 ]
  %155 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #6
  br label %156

156:                                              ; preds = %152, %154
  %.pn96 = phi { ptr, i32 } [ %155, %154 ], [ %153, %152 ]
  %.131 = phi i1 [ %.030, %154 ], [ true, %152 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #6
  br i1 %.131, label %.sink.split, label %316

157:                                              ; preds = %142
  %158 = getelementptr inbounds i8, ptr %0, i64 48
  %159 = load double, ptr %158, align 8, !tbaa !24
  %160 = fcmp olt double %159, 0.000000e+00
  br i1 %160, label %161, label %172

161:                                              ; preds = %157
  %162 = tail call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %163 unwind label %.thread151

163:                                              ; preds = %161
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull @.str.70, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %164 unwind label %167

164:                                              ; preds = %163
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %162, ptr noundef nonnull align 8 dereferenceable(32) %30, i32 noundef 492, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %165 unwind label %169

165:                                              ; preds = %164
  invoke void @__cxa_throw(ptr nonnull %162, ptr nonnull @_ZTIN7SGTELIB9ExceptionE, ptr nonnull @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %317 unwind label %169

.thread151:                                       ; preds = %161
  %166 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #6
  br label %.sink.split

167:                                              ; preds = %163
  %168 = landingpad { ptr, i32 }
          cleanup
  br label %171

169:                                              ; preds = %165, %164
  %.027 = phi i1 [ false, %165 ], [ true, %164 ]
  %170 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #6
  br label %171

171:                                              ; preds = %167, %169
  %.pn93 = phi { ptr, i32 } [ %170, %169 ], [ %168, %167 ]
  %.128 = phi i1 [ %.027, %169 ], [ true, %167 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #6
  br i1 %.128, label %.sink.split, label %316

172:                                              ; preds = %157
  %173 = getelementptr inbounds i8, ptr %0, i64 20
  %174 = load i32, ptr %173, align 4, !tbaa !25
  %175 = tail call noundef zeroext i1 @_ZN7SGTELIB20kernel_has_parameterENS_8kernel_tE(i32 noundef %174)
  %176 = getelementptr inbounds i8, ptr %0, i64 24
  %177 = load i32, ptr %176, align 8
  %178 = icmp ne i32 %177, 0
  %or.cond.not = select i1 %175, i1 true, i1 %178
  br i1 %or.cond.not, label %266, label %179

179:                                              ; preds = %172
  store double 1.000000e+00, ptr %143, align 8, !tbaa !26
  %180 = getelementptr inbounds i8, ptr %0, i64 40
  store i32 0, ptr %180, align 8, !tbaa !27
  br label %266

181:                                              ; preds = %1
  %182 = getelementptr inbounds i8, ptr %0, i64 12
  %183 = load i32, ptr %182, align 4, !tbaa !23
  %or.cond123 = icmp ugt i32 %183, 2
  br i1 %or.cond123, label %184, label %195

184:                                              ; preds = %181
  %185 = tail call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %186 unwind label %.thread155

186:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull @.str.73, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %187 unwind label %190

187:                                              ; preds = %186
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %185, ptr noundef nonnull align 8 dereferenceable(32) %34, i32 noundef 505, ptr noundef nonnull align 8 dereferenceable(32) %36)
          to label %188 unwind label %192

188:                                              ; preds = %187
  invoke void @__cxa_throw(ptr nonnull %185, ptr nonnull @_ZTIN7SGTELIB9ExceptionE, ptr nonnull @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %317 unwind label %192

.thread155:                                       ; preds = %184
  %189 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #6
  br label %.sink.split

190:                                              ; preds = %186
  %191 = landingpad { ptr, i32 }
          cleanup
  br label %194

192:                                              ; preds = %188, %187
  %.024 = phi i1 [ false, %188 ], [ true, %187 ]
  %193 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #6
  br label %194

194:                                              ; preds = %190, %192
  %.pn90 = phi { ptr, i32 } [ %193, %192 ], [ %191, %190 ]
  %.125 = phi i1 [ %.024, %192 ], [ true, %190 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #6
  br i1 %.125, label %.sink.split, label %316

195:                                              ; preds = %181
  %196 = getelementptr inbounds i8, ptr %0, i64 48
  %197 = load double, ptr %196, align 8, !tbaa !24
  %198 = fcmp olt double %197, 0.000000e+00
  br i1 %198, label %199, label %210

199:                                              ; preds = %195
  %200 = tail call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %39) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %201 unwind label %.thread159

201:                                              ; preds = %199
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull @.str.70, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %202 unwind label %205

202:                                              ; preds = %201
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %200, ptr noundef nonnull align 8 dereferenceable(32) %38, i32 noundef 507, ptr noundef nonnull align 8 dereferenceable(32) %40)
          to label %203 unwind label %207

203:                                              ; preds = %202
  invoke void @__cxa_throw(ptr nonnull %200, ptr nonnull @_ZTIN7SGTELIB9ExceptionE, ptr nonnull @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %317 unwind label %207

.thread159:                                       ; preds = %199
  %204 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #6
  br label %.sink.split

205:                                              ; preds = %201
  %206 = landingpad { ptr, i32 }
          cleanup
  br label %209

207:                                              ; preds = %203, %202
  %.021 = phi i1 [ false, %203 ], [ true, %202 ]
  %208 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #6
  br label %209

209:                                              ; preds = %205, %207
  %.pn87 = phi { ptr, i32 } [ %208, %207 ], [ %206, %205 ]
  %.122 = phi i1 [ %.021, %207 ], [ true, %205 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %39) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #6
  br i1 %.122, label %.sink.split, label %316

210:                                              ; preds = %195
  %211 = getelementptr inbounds i8, ptr %0, i64 240
  %212 = tail call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %211, ptr noundef nonnull @.str.74)
  br i1 %212, label %213, label %240

213:                                              ; preds = %210
  %214 = tail call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %211, ptr noundef nonnull @.str.75)
  br i1 %214, label %215, label %240

215:                                              ; preds = %213
  %216 = tail call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %211, ptr noundef nonnull @.str.76)
  br i1 %216, label %217, label %240

217:                                              ; preds = %215
  %218 = tail call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %211, ptr noundef nonnull @.str.77)
  br i1 %218, label %219, label %240

219:                                              ; preds = %217
  %220 = tail call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %211, ptr noundef nonnull @.str.78)
  br i1 %220, label %221, label %240

221:                                              ; preds = %219
  %222 = tail call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %211, ptr noundef nonnull @.str.79)
  br i1 %222, label %223, label %240

223:                                              ; preds = %221
  %224 = tail call noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %211, ptr noundef nonnull @.str.80)
  br i1 %224, label %225, label %240

225:                                              ; preds = %223
  %226 = 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.81)
  %227 = 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) %226, ptr noundef nonnull align 8 dereferenceable(32) %211)
  %228 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %227, ptr noundef nonnull @.str.2)
  %229 = 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.82)
  %230 = tail call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %43) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %231 unwind label %.thread163

231:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %45) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull @.str.83, ptr noundef nonnull align 1 dereferenceable(1) %45)
          to label %232 unwind label %235

232:                                              ; preds = %231
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %230, ptr noundef nonnull align 8 dereferenceable(32) %42, i32 noundef 529, ptr noundef nonnull align 8 dereferenceable(32) %44)
          to label %233 unwind label %237

233:                                              ; preds = %232
  invoke void @__cxa_throw(ptr nonnull %230, ptr nonnull @_ZTIN7SGTELIB9ExceptionE, ptr nonnull @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %317 unwind label %237

.thread163:                                       ; preds = %225
  %234 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #6
  br label %.sink.split

235:                                              ; preds = %231
  %236 = landingpad { ptr, i32 }
          cleanup
  br label %239

237:                                              ; preds = %233, %232
  %.018 = phi i1 [ false, %233 ], [ true, %232 ]
  %238 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #6
  br label %239

239:                                              ; preds = %235, %237
  %.pn84 = phi { ptr, i32 } [ %238, %237 ], [ %236, %235 ]
  %.119 = phi i1 [ %.018, %237 ], [ true, %235 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %45) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %45) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #6
  br i1 %.119, label %.sink.split, label %316

240:                                              ; preds = %223, %221, %219, %217, %215, %213, %210
  %241 = getelementptr inbounds i8, ptr %0, i64 20
  %242 = load i32, ptr %241, align 4, !tbaa !25
  %243 = tail call noundef zeroext i1 @_ZN7SGTELIB20kernel_is_decreasingENS_8kernel_tE(i32 noundef %242)
  br i1 %243, label %266, label %244

244:                                              ; preds = %240
  %245 = tail call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %46) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %47) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %246 unwind label %.thread167

246:                                              ; preds = %244
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %48) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %49) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull @.str.71, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %247 unwind label %250

247:                                              ; preds = %246
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %245, ptr noundef nonnull align 8 dereferenceable(32) %46, i32 noundef 532, ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %248 unwind label %252

248:                                              ; preds = %247
  invoke void @__cxa_throw(ptr nonnull %245, ptr nonnull @_ZTIN7SGTELIB9ExceptionE, ptr nonnull @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %317 unwind label %252

.thread167:                                       ; preds = %244
  %249 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #6
  br label %.sink.split

250:                                              ; preds = %246
  %251 = landingpad { ptr, i32 }
          cleanup
  br label %254

252:                                              ; preds = %248, %247
  %.015 = phi i1 [ false, %248 ], [ true, %247 ]
  %253 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #6
  br label %254

254:                                              ; preds = %250, %252
  %.pn = phi { ptr, i32 } [ %253, %252 ], [ %251, %250 ]
  %.116 = phi i1 [ %.015, %252 ], [ true, %250 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %49) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %47) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #6
  br i1 %.116, label %.sink.split, label %316

255:                                              ; preds = %1
  %256 = tail call ptr @__cxa_allocate_exception(i64 112) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %50) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %51) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %257 unwind label %.thread171

257:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %52) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %53) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %52, ptr noundef nonnull @.str.84, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %258 unwind label %261

258:                                              ; preds = %257
  invoke void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112) %256, ptr noundef nonnull align 8 dereferenceable(32) %50, i32 noundef 545, ptr noundef nonnull align 8 dereferenceable(32) %52)
          to label %259 unwind label %263

259:                                              ; preds = %258
  invoke void @__cxa_throw(ptr nonnull %256, ptr nonnull @_ZTIN7SGTELIB9ExceptionE, ptr nonnull @_ZN7SGTELIB9ExceptionD2Ev) #7
          to label %317 unwind label %263

.thread171:                                       ; preds = %255
  %260 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #6
  br label %.sink.split

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

263:                                              ; preds = %259, %258
  %.0 = phi i1 [ false, %259 ], [ true, %258 ]
  %264 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #6
  br label %265

265:                                              ; preds = %261, %263
  %.pn117 = phi { ptr, i32 } [ %264, %263 ], [ %262, %261 ]
  %.1 = phi i1 [ %.0, %263 ], [ true, %261 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %53) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %53) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %51) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %51) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50) #6
  br i1 %.1, label %.sink.split, label %316

266:                                              ; preds = %240, %172, %179, %127, %97, %82, %1, %1, %1
  %267 = getelementptr inbounds i8, ptr %0, i64 308
  %268 = getelementptr inbounds i8, ptr %0, i64 16
  %269 = load i32, ptr %268, align 8, !tbaa !28
  %270 = icmp eq i32 %269, 1
  %spec.store.select = zext i1 %270 to i32
  store i32 %spec.store.select, ptr %267, align 4
  %271 = getelementptr inbounds i8, ptr %0, i64 24
  %272 = load i32, ptr %271, align 8, !tbaa !29
  %273 = icmp eq i32 %272, 1
  br i1 %273, label %274, label %276

274:                                              ; preds = %266
  %275 = select i1 %270, i32 2, i32 1
  store i32 %275, ptr %267, align 4, !tbaa !30
  br label %276

276:                                              ; preds = %274, %266
  %277 = phi i32 [ %275, %274 ], [ %spec.store.select, %266 ]
  %278 = getelementptr inbounds i8, ptr %0, i64 40
  %279 = load i32, ptr %278, align 8, !tbaa !27
  %280 = icmp eq i32 %279, 1
  br i1 %280, label %281, label %283

281:                                              ; preds = %276
  %282 = add nuw nsw i32 %277, 1
  store i32 %282, ptr %267, align 4, !tbaa !30
  br label %283

283:                                              ; preds = %281, %276
  %284 = phi i32 [ %282, %281 ], [ %277, %276 ]
  %285 = getelementptr inbounds i8, ptr %0, i64 56
  %286 = load i32, ptr %285, align 8, !tbaa !31
  %287 = icmp eq i32 %286, 1
  br i1 %287, label %288, label %290

288:                                              ; preds = %283
  %289 = add nuw nsw i32 %284, 1
  store i32 %289, ptr %267, align 4, !tbaa !30
  br label %290

290:                                              ; preds = %288, %283
  %291 = phi i32 [ %289, %288 ], [ %284, %283 ]
  %292 = getelementptr inbounds i8, ptr %0, i64 64
  %293 = load i32, ptr %292, align 8, !tbaa !32
  %294 = icmp eq i32 %293, 1
  br i1 %294, label %295, label %297

295:                                              ; preds = %290
  %296 = add nuw nsw i32 %291, 1
  store i32 %296, ptr %267, align 4, !tbaa !30
  br label %297

297:                                              ; preds = %295, %290
  %298 = getelementptr inbounds i8, ptr %0, i64 232
  %299 = load i32, ptr %298, align 8, !tbaa !33
  %300 = icmp eq i32 %299, 1
  br i1 %300, label %301, label %306

301:                                              ; preds = %297
  %302 = getelementptr inbounds i8, ptr %0, i64 176
  %303 = tail call noundef i32 @_ZNK7SGTELIB6Matrix9get_numelEv(ptr noundef nonnull align 8 dereferenceable(56) %302)
  %304 = load i32, ptr %267, align 4, !tbaa !30
  %305 = add nsw i32 %304, %303
  store i32 %305, ptr %267, align 4, !tbaa !30
  br label %306

306:                                              ; preds = %301, %297
  %307 = getelementptr inbounds i8, ptr %0, i64 132
  %308 = load i32, ptr %307, align 4, !tbaa !34
  %309 = icmp eq i32 %308, 1
  br i1 %309, label %310, label %315

310:                                              ; preds = %306
  %311 = getelementptr inbounds i8, ptr %0, i64 72
  %312 = tail call noundef i32 @_ZNK7SGTELIB6Matrix9get_numelEv(ptr noundef nonnull align 8 dereferenceable(56) %311)
  %313 = load i32, ptr %267, align 4, !tbaa !30
  %314 = add nsw i32 %313, %312
  store i32 %314, ptr %267, align 4, !tbaa !30
  br label %315

315:                                              ; preds = %310, %306
  ret void

.sink.split:                                      ; preds = %265, %.thread171, %254, %.thread167, %239, %.thread163, %209, %.thread159, %194, %.thread155, %171, %.thread151, %156, %.thread147, %141, %.thread143, %126, %.thread139, %111, %.thread135, %96, %.thread131, %81, %.thread127, %66, %.thread
  %.sink = phi ptr [ %57, %.thread ], [ %57, %66 ], [ %72, %.thread127 ], [ %72, %81 ], [ %87, %.thread131 ], [ %87, %96 ], [ %102, %.thread135 ], [ %102, %111 ], [ %117, %.thread139 ], [ %117, %126 ], [ %132, %.thread143 ], [ %132, %141 ], [ %147, %.thread147 ], [ %147, %156 ], [ %162, %.thread151 ], [ %162, %171 ], [ %185, %.thread155 ], [ %185, %194 ], [ %200, %.thread159 ], [ %200, %209 ], [ %230, %.thread163 ], [ %230, %239 ], [ %245, %.thread167 ], [ %245, %254 ], [ %256, %.thread171 ], [ %256, %265 ]
  %.pn117.pn.pn.ph = phi { ptr, i32 } [ %61, %.thread ], [ %.pn114, %66 ], [ %76, %.thread127 ], [ %.pn111, %81 ], [ %91, %.thread131 ], [ %.pn108, %96 ], [ %106, %.thread135 ], [ %.pn105, %111 ], [ %121, %.thread139 ], [ %.pn102, %126 ], [ %136, %.thread143 ], [ %.pn99, %141 ], [ %151, %.thread147 ], [ %.pn96, %156 ], [ %166, %.thread151 ], [ %.pn93, %171 ], [ %189, %.thread155 ], [ %.pn90, %194 ], [ %204, %.thread159 ], [ %.pn87, %209 ], [ %234, %.thread163 ], [ %.pn84, %239 ], [ %249, %.thread167 ], [ %.pn, %254 ], [ %260, %.thread171 ], [ %.pn117, %265 ]
  call void @__cxa_free_exception(ptr %.sink) #6
  br label %316

316:                                              ; preds = %.sink.split, %265, %254, %239, %209, %194, %171, %156, %141, %126, %111, %96, %81, %66
  %.pn117.pn.pn = phi { ptr, i32 } [ %.pn117, %265 ], [ %.pn90, %194 ], [ %.pn87, %209 ], [ %.pn84, %239 ], [ %.pn, %254 ], [ %.pn96, %156 ], [ %.pn93, %171 ], [ %.pn102, %126 ], [ %.pn99, %141 ], [ %.pn105, %111 ], [ %.pn111, %81 ], [ %.pn108, %96 ], [ %.pn114, %66 ], [ %.pn117.pn.pn.ph, %.sink.split ]
  resume { ptr, i32 } %.pn117.pn.pn

317:                                              ; preds = %259, %248, %233, %203, %188, %165, %150, %135, %120, %105, %90, %75, %60
  unreachable
}

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7SGTELIB9ExceptionC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #0 align 2

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

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

declare void @__cxa_free_exception(ptr) local_unnamed_addr

declare noundef zeroext i1 @_ZN7SGTELIB20kernel_is_decreasingENS_8kernel_tE(i32 noundef) local_unnamed_addr #4

declare noundef zeroext i1 @_ZN7SGTELIB20kernel_has_parameterENS_8kernel_tE(i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZStneIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #3

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

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

!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, !7, i64 8}
!6 = !{!"_ZTSN7SGTELIB20Surrogate_ParametersE", !7, i64 8, !10, i64 12, !11, i64 16, !12, i64 20, !11, i64 24, !13, i64 32, !11, i64 40, !13, i64 48, !11, i64 56, !14, i64 60, !11, i64 64, !15, i64 72, !20, i64 128, !11, i64 132, !21, i64 136, !13, i64 144, !13, i64 152, !13, i64 160, !13, i64 168, !15, i64 176, !11, i64 232, !22, i64 236, !16, i64 240, !16, i64 272, !10, i64 304, !10, i64 308}
!7 = !{!"_ZTSN7SGTELIB7model_tE", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"_ZTSN7SGTELIB14param_status_tE", !8, i64 0}
!12 = !{!"_ZTSN7SGTELIB8kernel_tE", !8, i64 0}
!13 = !{!"double", !8, i64 0}
!14 = !{!"_ZTSN7SGTELIB10distance_tE", !8, i64 0}
!15 = !{!"_ZTSN7SGTELIB6MatrixE", !16, i64 8, !10, i64 40, !10, i64 44, !18, i64 48}
!16 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !17, i64 0, !19, i64 8, !8, i64 16}
!17 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !18, i64 0}
!18 = !{!"any pointer", !8, i64 0}
!19 = !{!"long", !8, i64 0}
!20 = !{!"_ZTSN7SGTELIB8weight_tE", !8, i64 0}
!21 = !{!"_ZTSN7SGTELIB13uncertainty_tE", !8, i64 0}
!22 = !{!"_ZTSN7SGTELIB8metric_tE", !8, i64 0}
!23 = !{!6, !10, i64 12}
!24 = !{!6, !13, i64 48}
!25 = !{!6, !12, i64 20}
!26 = !{!6, !13, i64 32}
!27 = !{!6, !11, i64 40}
!28 = !{!6, !11, i64 16}
!29 = !{!6, !11, i64 24}
!30 = !{!6, !10, i64 308}
!31 = !{!6, !11, i64 56}
!32 = !{!6, !11, i64 64}
!33 = !{!6, !11, i64 232}
!34 = !{!6, !11, i64 132}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass