; LLVM IR from Dimandragon/non-parametric-dsp :: alglib-cpp/src (ap)

; 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::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.13 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.13 = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }
%"class.alglib_impl::rcommv2_request" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.alglib_impl::rcommv2_buffers" = type { %"class.alglib::real_1d_array", %"class.alglib::real_1d_array", %"class.alglib::real_1d_array", %"class.alglib::real_1d_array", %"class.alglib::real_2d_array", %"class.alglib::sparsematrix" }
%"class.alglib::real_1d_array" = type { %"class.alglib::ae_vector_wrapper.base", [7 x i8] }
%"class.alglib::ae_vector_wrapper.base" = type <{ ptr, ptr, %"struct.alglib_impl::ae_vector", i8 }>
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%union.anon.0 = type { ptr }
%"class.alglib::real_2d_array" = type { %"class.alglib::ae_matrix_wrapper.base", [7 x i8] }
%"class.alglib::ae_matrix_wrapper.base" = type <{ ptr, ptr, %"struct.alglib_impl::ae_matrix", i8 }>
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon }
%union.anon = type { ptr }
%"class.alglib::sparsematrix" = type { %"class.alglib::_sparsematrix_owner.base", [7 x i8] }
%"class.alglib::_sparsematrix_owner.base" = type <{ ptr, ptr, i8 }>
%"class.alglib_impl::rcommv2_callbacks" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }

@_ZTIN6alglib8ap_errorE = external dso_local constant { ptr, ptr }, align 8
@.str.127 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [55 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

declare ptr @__cxa_allocate_exception(i64)

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl19process_v2request_4ERNS_15rcommv2_requestElRNS_17rcommv2_callbacksERNS_15rcommv2_buffersE(ptr noundef nonnull align 8 dereferenceable(96) %0, i64 noundef %1, ptr noundef nonnull align 8 dereferenceable(80) %2, ptr noundef nonnull align 8 dereferenceable(480) %3) #4 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca i64, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator", align 1
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i1, align 1
  %18 = alloca i32, align 4
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::allocator", align 1
  %23 = alloca i1, align 1
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator", align 1
  %28 = alloca i1, align 1
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::allocator", align 1
  %33 = alloca i1, align 1
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::allocator", align 1
  %38 = alloca i1, align 1
  store ptr %0, ptr %5, align 8, !tbaa !5
  store i64 %1, ptr %6, align 8, !tbaa !9
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #6
  %39 = load ptr, ptr %5, align 8, !tbaa !5
  %40 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %39, i32 0, i32 2
  %41 = load ptr, ptr %40, align 8, !tbaa !11
  %42 = load ptr, ptr %41, align 8, !tbaa !5
  %43 = load i64, ptr %6, align 8, !tbaa !9
  %44 = load ptr, ptr %5, align 8, !tbaa !5
  %45 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %44, i32 0, i32 6
  %46 = load ptr, ptr %45, align 8, !tbaa !13
  %47 = load i64, ptr %46, align 8, !tbaa !9
  %48 = load ptr, ptr %5, align 8, !tbaa !5
  %49 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %48, i32 0, i32 7
  %50 = load ptr, ptr %49, align 8, !tbaa !14
  %51 = load i64, ptr %50, align 8, !tbaa !9
  %52 = add nsw i64 %47, %51
  %53 = mul nsw i64 %43, %52
  %54 = getelementptr inbounds double, ptr %42, i64 %53
  store ptr %54, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  %55 = load ptr, ptr %5, align 8, !tbaa !5
  %56 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %55, i32 0, i32 9
  %57 = load ptr, ptr %56, align 8, !tbaa !15
  %58 = load ptr, ptr %57, align 8, !tbaa !5
  %59 = load i64, ptr %6, align 8, !tbaa !9
  %60 = load ptr, ptr %5, align 8, !tbaa !5
  %61 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %60, i32 0, i32 5
  %62 = load ptr, ptr %61, align 8, !tbaa !16
  %63 = load i64, ptr %62, align 8, !tbaa !9
  %64 = mul nsw i64 %59, %63
  %65 = getelementptr inbounds double, ptr %58, i64 %64
  store ptr %65, ptr %10, align 8, !tbaa !5
  %66 = load ptr, ptr %8, align 8, !tbaa !5
  %67 = getelementptr inbounds %"class.alglib_impl::rcommv2_buffers", ptr %66, i32 0, i32 0
  %68 = call noundef ptr @_ZN6alglib17ae_vector_wrapper5c_ptrEv(ptr noundef nonnull align 8 dereferenceable(81) %67)
  %69 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %68, i32 0, i32 4
  %70 = load ptr, ptr %69, align 8, !tbaa !17
  %71 = load ptr, ptr %9, align 8, !tbaa !5
  %72 = load ptr, ptr %5, align 8, !tbaa !5
  %73 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %72, i32 0, i32 6
  %74 = load ptr, ptr %73, align 8, !tbaa !13
  %75 = load i64, ptr %74, align 8, !tbaa !9
  %76 = mul i64 %75, 8
  call void @llvm.memmove.p0.p0.i64(ptr align 8 %70, ptr align 8 %71, i64 %76, i1 false)
  %77 = load ptr, ptr %5, align 8, !tbaa !5
  %78 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %77, i32 0, i32 7
  %79 = load ptr, ptr %78, align 8, !tbaa !14
  %80 = load i64, ptr %79, align 8, !tbaa !9
  %81 = icmp sgt i64 %80, 0
  br i1 %81, label %82, label %99

82:                                               ; preds = %4
  %83 = load ptr, ptr %8, align 8, !tbaa !5
  %84 = getelementptr inbounds %"class.alglib_impl::rcommv2_buffers", ptr %83, i32 0, i32 1
  %85 = call noundef ptr @_ZN6alglib17ae_vector_wrapper5c_ptrEv(ptr noundef nonnull align 8 dereferenceable(81) %84)
  %86 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %85, i32 0, i32 4
  %87 = load ptr, ptr %86, align 8, !tbaa !17
  %88 = load ptr, ptr %9, align 8, !tbaa !5
  %89 = load ptr, ptr %5, align 8, !tbaa !5
  %90 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %89, i32 0, i32 6
  %91 = load ptr, ptr %90, align 8, !tbaa !13
  %92 = load i64, ptr %91, align 8, !tbaa !9
  %93 = getelementptr inbounds double, ptr %88, i64 %92
  %94 = load ptr, ptr %5, align 8, !tbaa !5
  %95 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %94, i32 0, i32 7
  %96 = load ptr, ptr %95, align 8, !tbaa !14
  %97 = load i64, ptr %96, align 8, !tbaa !9
  %98 = mul i64 %97, 8
  call void @llvm.memmove.p0.p0.i64(ptr align 8 %87, ptr align 8 %93, i64 %98, i1 false)
  br label %99

99:                                               ; preds = %82, %4
  %100 = load ptr, ptr %7, align 8, !tbaa !5
  %101 = getelementptr inbounds %"class.alglib_impl::rcommv2_callbacks", ptr %100, i32 0, i32 0
  %102 = load ptr, ptr %101, align 8, !tbaa !18
  %103 = icmp ne ptr %102, null
  br i1 %103, label %104, label %157

104:                                              ; preds = %99
  %105 = load ptr, ptr %5, align 8, !tbaa !5
  %106 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %105, i32 0, i32 7
  %107 = load ptr, ptr %106, align 8, !tbaa !14
  %108 = load i64, ptr %107, align 8, !tbaa !9
  %109 = icmp eq i64 %108, 0
  br i1 %109, label %110, label %116

110:                                              ; preds = %104
  %111 = load ptr, ptr %5, align 8, !tbaa !5
  %112 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %111, i32 0, i32 5
  %113 = load ptr, ptr %112, align 8, !tbaa !16
  %114 = load i64, ptr %113, align 8, !tbaa !9
  %115 = icmp eq i64 %114, 1
  br i1 %115, label %147, label %116

116:                                              ; preds = %110, %104
  store i1 true, ptr %17, align 1
  %117 = call ptr @__cxa_allocate_exception(i64 32) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef @.str.127, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %118 unwind label %125

118:                                              ; preds = %116
  %119 = load ptr, ptr %5, align 8, !tbaa !5
  %120 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %119, i32 0, i32 0
  %121 = load ptr, ptr %120, align 8, !tbaa !20
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef %121)
          to label %122 unwind label %129

122:                                              ; preds = %118
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.128)
          to label %123 unwind label %133

123:                                              ; preds = %122
  invoke void @_ZN6alglib8ap_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %117, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %124 unwind label %137

124:                                              ; preds = %123
  store i1 false, ptr %17, align 1
  invoke void @__cxa_throw(ptr %117, ptr @_ZTIN6alglib8ap_errorE, ptr @_ZN6alglib8ap_errorD2Ev) #7
          to label %385 unwind label %137

125:                                              ; preds = %116
  %126 = landingpad { ptr, i32 }
          cleanup
  %127 = extractvalue { ptr, i32 } %126, 0
  store ptr %127, ptr %15, align 8
  %128 = extractvalue { ptr, i32 } %126, 1
  store i32 %128, ptr %16, align 4
  br label %143

129:                                              ; preds = %118
  %130 = landingpad { ptr, i32 }
          cleanup
  %131 = extractvalue { ptr, i32 } %130, 0
  store ptr %131, ptr %15, align 8
  %132 = extractvalue { ptr, i32 } %130, 1
  store i32 %132, ptr %16, align 4
  br label %142

133:                                              ; preds = %122
  %134 = landingpad { ptr, i32 }
          cleanup
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %15, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %16, align 4
  br label %141

137:                                              ; preds = %124, %123
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %15, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  br label %141

141:                                              ; preds = %137, %133
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  br label %142

142:                                              ; preds = %141, %129
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  br label %143

143:                                              ; preds = %142, %125
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #6
  %144 = load i1, ptr %17, align 1
  br i1 %144, label %145, label %146

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

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

147:                                              ; preds = %110
  %148 = load ptr, ptr %7, align 8, !tbaa !5
  %149 = getelementptr inbounds %"class.alglib_impl::rcommv2_callbacks", ptr %148, i32 0, i32 0
  %150 = load ptr, ptr %149, align 8, !tbaa !18
  %151 = load ptr, ptr %8, align 8, !tbaa !5
  %152 = getelementptr inbounds %"class.alglib_impl::rcommv2_buffers", ptr %151, i32 0, i32 0
  %153 = load ptr, ptr %10, align 8, !tbaa !5
  %154 = load ptr, ptr %5, align 8, !tbaa !5
  %155 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %154, i32 0, i32 1
  %156 = load ptr, ptr %155, align 8, !tbaa !21
  call void %150(ptr noundef nonnull align 8 dereferenceable(81) %152, ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef %156)
  store i32 1, ptr %18, align 4
  br label %378

157:                                              ; preds = %99
  %158 = load ptr, ptr %7, align 8, !tbaa !5
  %159 = getelementptr inbounds %"class.alglib_impl::rcommv2_callbacks", ptr %158, i32 0, i32 5
  %160 = load ptr, ptr %159, align 8, !tbaa !22
  %161 = icmp ne ptr %160, null
  br i1 %161, label %162, label %217

162:                                              ; preds = %157
  %163 = load ptr, ptr %5, align 8, !tbaa !5
  %164 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %163, i32 0, i32 7
  %165 = load ptr, ptr %164, align 8, !tbaa !14
  %166 = load i64, ptr %165, align 8, !tbaa !9
  %167 = icmp sgt i64 %166, 0
  br i1 %167, label %168, label %174

168:                                              ; preds = %162
  %169 = load ptr, ptr %5, align 8, !tbaa !5
  %170 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %169, i32 0, i32 5
  %171 = load ptr, ptr %170, align 8, !tbaa !16
  %172 = load i64, ptr %171, align 8, !tbaa !9
  %173 = icmp eq i64 %172, 1
  br i1 %173, label %205, label %174

174:                                              ; preds = %168, %162
  store i1 true, ptr %23, align 1
  %175 = call ptr @__cxa_allocate_exception(i64 32) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef @.str.127, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %176 unwind label %183

176:                                              ; preds = %174
  %177 = load ptr, ptr %5, align 8, !tbaa !5
  %178 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %177, i32 0, i32 0
  %179 = load ptr, ptr %178, align 8, !tbaa !20
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef %179)
          to label %180 unwind label %187

180:                                              ; preds = %176
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef @.str.128)
          to label %181 unwind label %191

181:                                              ; preds = %180
  invoke void @_ZN6alglib8ap_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %175, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %182 unwind label %195

182:                                              ; preds = %181
  store i1 false, ptr %23, align 1
  invoke void @__cxa_throw(ptr %175, ptr @_ZTIN6alglib8ap_errorE, ptr @_ZN6alglib8ap_errorD2Ev) #7
          to label %385 unwind label %195

183:                                              ; preds = %174
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %15, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %16, align 4
  br label %201

187:                                              ; preds = %176
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %15, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %16, align 4
  br label %200

191:                                              ; preds = %180
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %15, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %16, align 4
  br label %199

195:                                              ; preds = %182, %181
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %15, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  br label %199

199:                                              ; preds = %195, %191
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  br label %200

200:                                              ; preds = %199, %187
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  br label %201

201:                                              ; preds = %200, %183
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #6
  %202 = load i1, ptr %23, align 1
  br i1 %202, label %203, label %204

203:                                              ; preds = %201
  call void @__cxa_free_exception(ptr %175) #6
  br label %204

204:                                              ; preds = %203, %201
  br label %379

205:                                              ; preds = %168
  %206 = load ptr, ptr %7, align 8, !tbaa !5
  %207 = getelementptr inbounds %"class.alglib_impl::rcommv2_callbacks", ptr %206, i32 0, i32 5
  %208 = load ptr, ptr %207, align 8, !tbaa !22
  %209 = load ptr, ptr %8, align 8, !tbaa !5
  %210 = getelementptr inbounds %"class.alglib_impl::rcommv2_buffers", ptr %209, i32 0, i32 0
  %211 = load ptr, ptr %8, align 8, !tbaa !5
  %212 = getelementptr inbounds %"class.alglib_impl::rcommv2_buffers", ptr %211, i32 0, i32 1
  %213 = load ptr, ptr %10, align 8, !tbaa !5
  %214 = load ptr, ptr %5, align 8, !tbaa !5
  %215 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %214, i32 0, i32 1
  %216 = load ptr, ptr %215, align 8, !tbaa !21
  call void %208(ptr noundef nonnull align 8 dereferenceable(81) %210, ptr noundef nonnull align 8 dereferenceable(81) %212, ptr noundef nonnull align 8 dereferenceable(8) %213, ptr noundef %216)
  store i32 1, ptr %18, align 4
  br label %378

217:                                              ; preds = %157
  %218 = load ptr, ptr %7, align 8, !tbaa !5
  %219 = getelementptr inbounds %"class.alglib_impl::rcommv2_callbacks", ptr %218, i32 0, i32 2
  %220 = load ptr, ptr %219, align 8, !tbaa !23
  %221 = icmp ne ptr %220, null
  br i1 %221, label %222, label %281

222:                                              ; preds = %217
  %223 = load ptr, ptr %5, align 8, !tbaa !5
  %224 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %223, i32 0, i32 7
  %225 = load ptr, ptr %224, align 8, !tbaa !14
  %226 = load i64, ptr %225, align 8, !tbaa !9
  %227 = icmp eq i64 %226, 0
  br i1 %227, label %259, label %228

228:                                              ; preds = %222
  store i1 true, ptr %28, align 1
  %229 = call ptr @__cxa_allocate_exception(i64 32) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %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 @.str.127, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %230 unwind label %237

230:                                              ; preds = %228
  %231 = load ptr, ptr %5, align 8, !tbaa !5
  %232 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %231, i32 0, i32 0
  %233 = load ptr, ptr %232, align 8, !tbaa !20
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef %233)
          to label %234 unwind label %241

234:                                              ; preds = %230
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.128)
          to label %235 unwind label %245

235:                                              ; preds = %234
  invoke void @_ZN6alglib8ap_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %229, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %236 unwind label %249

236:                                              ; preds = %235
  store i1 false, ptr %28, align 1
  invoke void @__cxa_throw(ptr %229, ptr @_ZTIN6alglib8ap_errorE, ptr @_ZN6alglib8ap_errorD2Ev) #7
          to label %385 unwind label %249

237:                                              ; preds = %228
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %15, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %16, align 4
  br label %255

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

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

249:                                              ; preds = %236, %235
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %15, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #6
  br label %253

253:                                              ; preds = %249, %245
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #6
  br label %254

254:                                              ; preds = %253, %241
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  br label %255

255:                                              ; preds = %254, %237
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #6
  %256 = load i1, ptr %28, align 1
  br i1 %256, label %257, label %258

257:                                              ; preds = %255
  call void @__cxa_free_exception(ptr %229) #6
  br label %258

258:                                              ; preds = %257, %255
  br label %379

259:                                              ; preds = %222
  %260 = load ptr, ptr %7, align 8, !tbaa !5
  %261 = getelementptr inbounds %"class.alglib_impl::rcommv2_callbacks", ptr %260, i32 0, i32 2
  %262 = load ptr, ptr %261, align 8, !tbaa !23
  %263 = load ptr, ptr %8, align 8, !tbaa !5
  %264 = getelementptr inbounds %"class.alglib_impl::rcommv2_buffers", ptr %263, i32 0, i32 0
  %265 = load ptr, ptr %8, align 8, !tbaa !5
  %266 = getelementptr inbounds %"class.alglib_impl::rcommv2_buffers", ptr %265, i32 0, i32 2
  %267 = load ptr, ptr %5, align 8, !tbaa !5
  %268 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %267, i32 0, i32 1
  %269 = load ptr, ptr %268, align 8, !tbaa !21
  call void %262(ptr noundef nonnull align 8 dereferenceable(81) %264, ptr noundef nonnull align 8 dereferenceable(81) %266, ptr noundef %269)
  %270 = load ptr, ptr %10, align 8, !tbaa !5
  %271 = load ptr, ptr %8, align 8, !tbaa !5
  %272 = getelementptr inbounds %"class.alglib_impl::rcommv2_buffers", ptr %271, i32 0, i32 2
  %273 = call noundef ptr @_ZN6alglib17ae_vector_wrapper5c_ptrEv(ptr noundef nonnull align 8 dereferenceable(81) %272)
  %274 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %273, i32 0, i32 4
  %275 = load ptr, ptr %274, align 8, !tbaa !17
  %276 = load ptr, ptr %5, align 8, !tbaa !5
  %277 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %276, i32 0, i32 5
  %278 = load ptr, ptr %277, align 8, !tbaa !16
  %279 = load i64, ptr %278, align 8, !tbaa !9
  %280 = mul i64 %279, 8
  call void @llvm.memmove.p0.p0.i64(ptr align 8 %270, ptr align 8 %275, i64 %280, i1 false)
  store i32 1, ptr %18, align 4
  br label %378

281:                                              ; preds = %217
  %282 = load ptr, ptr %7, align 8, !tbaa !5
  %283 = getelementptr inbounds %"class.alglib_impl::rcommv2_callbacks", ptr %282, i32 0, i32 7
  %284 = load ptr, ptr %283, align 8, !tbaa !24
  %285 = icmp ne ptr %284, null
  br i1 %285, label %286, label %347

286:                                              ; preds = %281
  %287 = load ptr, ptr %5, align 8, !tbaa !5
  %288 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %287, i32 0, i32 7
  %289 = load ptr, ptr %288, align 8, !tbaa !14
  %290 = load i64, ptr %289, align 8, !tbaa !9
  %291 = icmp sgt i64 %290, 0
  br i1 %291, label %323, label %292

292:                                              ; preds = %286
  store i1 true, ptr %33, align 1
  %293 = call ptr @__cxa_allocate_exception(i64 32) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef @.str.127, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %294 unwind label %301

294:                                              ; preds = %292
  %295 = load ptr, ptr %5, align 8, !tbaa !5
  %296 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %295, i32 0, i32 0
  %297 = load ptr, ptr %296, align 8, !tbaa !20
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %30, ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef %297)
          to label %298 unwind label %305

298:                                              ; preds = %294
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef @.str.128)
          to label %299 unwind label %309

299:                                              ; preds = %298
  invoke void @_ZN6alglib8ap_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %293, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %300 unwind label %313

300:                                              ; preds = %299
  store i1 false, ptr %33, align 1
  invoke void @__cxa_throw(ptr %293, ptr @_ZTIN6alglib8ap_errorE, ptr @_ZN6alglib8ap_errorD2Ev) #7
          to label %385 unwind label %313

301:                                              ; preds = %292
  %302 = landingpad { ptr, i32 }
          cleanup
  %303 = extractvalue { ptr, i32 } %302, 0
  store ptr %303, ptr %15, align 8
  %304 = extractvalue { ptr, i32 } %302, 1
  store i32 %304, ptr %16, align 4
  br label %319

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

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

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

317:                                              ; preds = %313, %309
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  br label %318

318:                                              ; preds = %317, %305
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #6
  br label %319

319:                                              ; preds = %318, %301
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #6
  %320 = load i1, ptr %33, align 1
  br i1 %320, label %321, label %322

321:                                              ; preds = %319
  call void @__cxa_free_exception(ptr %293) #6
  br label %322

322:                                              ; preds = %321, %319
  br label %379

323:                                              ; preds = %286
  %324 = load ptr, ptr %7, align 8, !tbaa !5
  %325 = getelementptr inbounds %"class.alglib_impl::rcommv2_callbacks", ptr %324, i32 0, i32 7
  %326 = load ptr, ptr %325, align 8, !tbaa !24
  %327 = load ptr, ptr %8, align 8, !tbaa !5
  %328 = getelementptr inbounds %"class.alglib_impl::rcommv2_buffers", ptr %327, i32 0, i32 0
  %329 = load ptr, ptr %8, align 8, !tbaa !5
  %330 = getelementptr inbounds %"class.alglib_impl::rcommv2_buffers", ptr %329, i32 0, i32 1
  %331 = load ptr, ptr %8, align 8, !tbaa !5
  %332 = getelementptr inbounds %"class.alglib_impl::rcommv2_buffers", ptr %331, i32 0, i32 2
  %333 = load ptr, ptr %5, align 8, !tbaa !5
  %334 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %333, i32 0, i32 1
  %335 = load ptr, ptr %334, align 8, !tbaa !21
  call void %326(ptr noundef nonnull align 8 dereferenceable(81) %328, ptr noundef nonnull align 8 dereferenceable(81) %330, ptr noundef nonnull align 8 dereferenceable(81) %332, ptr noundef %335)
  %336 = load ptr, ptr %10, align 8, !tbaa !5
  %337 = load ptr, ptr %8, align 8, !tbaa !5
  %338 = getelementptr inbounds %"class.alglib_impl::rcommv2_buffers", ptr %337, i32 0, i32 2
  %339 = call noundef ptr @_ZN6alglib17ae_vector_wrapper5c_ptrEv(ptr noundef nonnull align 8 dereferenceable(81) %338)
  %340 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %339, i32 0, i32 4
  %341 = load ptr, ptr %340, align 8, !tbaa !17
  %342 = load ptr, ptr %5, align 8, !tbaa !5
  %343 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %342, i32 0, i32 5
  %344 = load ptr, ptr %343, align 8, !tbaa !16
  %345 = load i64, ptr %344, align 8, !tbaa !9
  %346 = mul i64 %345, 8
  call void @llvm.memmove.p0.p0.i64(ptr align 8 %336, ptr align 8 %341, i64 %346, i1 false)
  store i32 1, ptr %18, align 4
  br label %378

347:                                              ; preds = %281
  store i1 true, ptr %38, align 1
  %348 = call ptr @__cxa_allocate_exception(i64 32) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %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 @.str.127, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %349 unwind label %356

349:                                              ; preds = %347
  %350 = load ptr, ptr %5, align 8, !tbaa !5
  %351 = getelementptr inbounds %"class.alglib_impl::rcommv2_request", ptr %350, i32 0, i32 0
  %352 = load ptr, ptr %351, align 8, !tbaa !20
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef %352)
          to label %353 unwind label %360

353:                                              ; preds = %349
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %34, ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef @.str.132)
          to label %354 unwind label %364

354:                                              ; preds = %353
  invoke void @_ZN6alglib8ap_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %348, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %355 unwind label %368

355:                                              ; preds = %354
  store i1 false, ptr %38, align 1
  invoke void @__cxa_throw(ptr %348, ptr @_ZTIN6alglib8ap_errorE, ptr @_ZN6alglib8ap_errorD2Ev) #7
          to label %385 unwind label %368

356:                                              ; preds = %347
  %357 = landingpad { ptr, i32 }
          cleanup
  %358 = extractvalue { ptr, i32 } %357, 0
  store ptr %358, ptr %15, align 8
  %359 = extractvalue { ptr, i32 } %357, 1
  store i32 %359, ptr %16, align 4
  br label %374

360:                                              ; preds = %349
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %15, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %16, align 4
  br label %373

364:                                              ; preds = %353
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %15, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %16, align 4
  br label %372

368:                                              ; preds = %355, %354
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %15, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #6
  br label %372

372:                                              ; preds = %368, %364
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #6
  br label %373

373:                                              ; preds = %372, %360
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #6
  br label %374

374:                                              ; preds = %373, %356
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #6
  %375 = load i1, ptr %38, align 1
  br i1 %375, label %376, label %377

376:                                              ; preds = %374
  call void @__cxa_free_exception(ptr %348) #6
  br label %377

377:                                              ; preds = %376, %374
  br label %379

378:                                              ; preds = %323, %259, %205, %147
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  ret void

379:                                              ; preds = %377, %322, %258, %204, %146
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  br label %380

380:                                              ; preds = %379
  %381 = load ptr, ptr %15, align 8
  %382 = load i32, ptr %16, align 4
  %383 = insertvalue { ptr, i32 } poison, ptr %381, 0
  %384 = insertvalue { ptr, i32 } %383, i32 %382, 1
  resume { ptr, i32 } %384

385:                                              ; preds = %355, %300, %236, %182, %124
  unreachable
}

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

declare void @_ZN6alglib8ap_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr, ptr)

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { 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 #5 = { 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 #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, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !6, i64 16}
!12 = !{!"_ZTSN11alglib_impl15rcommv2_requestE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88}
!13 = !{!12, !6, i64 48}
!14 = !{!12, !6, i64 56}
!15 = !{!12, !6, i64 72}
!16 = !{!12, !6, i64 40}
!17 = !{!7, !7, i64 0}
!18 = !{!19, !6, i64 0}
!19 = !{!"_ZTSN11alglib_impl17rcommv2_callbacksE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72}
!20 = !{!12, !6, i64 0}
!21 = !{!12, !6, i64 8}
!22 = !{!19, !6, i64 40}
!23 = !{!19, !6, i64 16}
!24 = !{!19, !6, i64 56}


; 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::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.13 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.13 = type { i64, [8 x i8] }
%"class.std::allocator" = type { i8 }

@_ZTIN6alglib8ap_errorE = external dso_local constant { ptr, ptr }, align 8
@.str.127 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.128 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.132 = external hidden unnamed_addr constant [55 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl19process_v2request_4ERNS_15rcommv2_requestElRNS_17rcommv2_callbacksERNS_15rcommv2_buffersE(ptr nocapture noundef nonnull readonly align 8 dereferenceable(96) %0, i64 noundef %1, ptr nocapture noundef nonnull readonly align 8 dereferenceable(80) %2, ptr noundef nonnull align 8 dereferenceable(480) %3) local_unnamed_addr #4 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator", align 1
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator", align 1
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %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::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator", align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::allocator", align 1
  %25 = getelementptr inbounds i8, ptr %0, i64 16
  %26 = load ptr, ptr %25, align 8, !tbaa !5
  %27 = load ptr, ptr %26, align 8, !tbaa !10
  %28 = getelementptr inbounds i8, ptr %0, i64 48
  %29 = load ptr, ptr %28, align 8, !tbaa !11
  %30 = load i64, ptr %29, align 8, !tbaa !12
  %31 = getelementptr inbounds i8, ptr %0, i64 56
  %32 = load ptr, ptr %31, align 8, !tbaa !14
  %33 = load i64, ptr %32, align 8, !tbaa !12
  %34 = add nsw i64 %33, %30
  %35 = mul nsw i64 %34, %1
  %36 = getelementptr inbounds double, ptr %27, i64 %35
  %37 = getelementptr inbounds i8, ptr %0, i64 72
  %38 = load ptr, ptr %37, align 8, !tbaa !15
  %39 = load ptr, ptr %38, align 8, !tbaa !10
  %40 = getelementptr inbounds i8, ptr %0, i64 40
  %41 = load ptr, ptr %40, align 8, !tbaa !16
  %42 = load i64, ptr %41, align 8, !tbaa !12
  %43 = mul nsw i64 %42, %1
  %44 = getelementptr inbounds double, ptr %39, i64 %43
  %45 = tail call noundef ptr @_ZN6alglib17ae_vector_wrapper5c_ptrEv(ptr noundef nonnull align 8 dereferenceable(81) %3)
  %46 = getelementptr inbounds i8, ptr %45, i64 56
  %47 = load ptr, ptr %46, align 8, !tbaa !17
  %48 = load ptr, ptr %28, align 8, !tbaa !11
  %49 = load i64, ptr %48, align 8, !tbaa !12
  %50 = shl i64 %49, 3
  tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %47, ptr align 8 %36, i64 %50, i1 false)
  %51 = load ptr, ptr %31, align 8, !tbaa !14
  %52 = load i64, ptr %51, align 8, !tbaa !12
  %53 = icmp sgt i64 %52, 0
  br i1 %53, label %54, label %65

54:                                               ; preds = %4
  %55 = getelementptr inbounds i8, ptr %3, i64 88
  %56 = tail call noundef ptr @_ZN6alglib17ae_vector_wrapper5c_ptrEv(ptr noundef nonnull align 8 dereferenceable(81) %55)
  %57 = getelementptr inbounds i8, ptr %56, i64 56
  %58 = load ptr, ptr %57, align 8, !tbaa !17
  %59 = load ptr, ptr %28, align 8, !tbaa !11
  %60 = load i64, ptr %59, align 8, !tbaa !12
  %61 = getelementptr inbounds double, ptr %36, i64 %60
  %62 = load ptr, ptr %31, align 8, !tbaa !14
  %63 = load i64, ptr %62, align 8, !tbaa !12
  %64 = shl i64 %63, 3
  tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %58, ptr align 8 %61, i64 %64, i1 false)
  br label %65

65:                                               ; preds = %54, %4
  %66 = load ptr, ptr %2, align 8, !tbaa !18
  %.not = icmp eq ptr %66, null
  br i1 %.not, label %94, label %67

67:                                               ; preds = %65
  %68 = load ptr, ptr %31, align 8, !tbaa !14
  %69 = load i64, ptr %68, align 8, !tbaa !12
  %70 = icmp eq i64 %69, 0
  br i1 %70, label %71, label %75

71:                                               ; preds = %67
  %72 = load ptr, ptr %40, align 8, !tbaa !16
  %73 = load i64, ptr %72, align 8, !tbaa !12
  %74 = icmp eq i64 %73, 1
  br i1 %74, label %91, label %75

75:                                               ; preds = %71, %67
  %76 = tail call ptr @__cxa_allocate_exception(i64 32) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %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 nonnull @.str.127, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %77 unwind label %.thread

77:                                               ; preds = %75
  %78 = load ptr, ptr %0, align 8, !tbaa !20
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef %78)
          to label %79 unwind label %83

79:                                               ; preds = %77
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.128)
          to label %80 unwind label %85

80:                                               ; preds = %79
  invoke void @_ZN6alglib8ap_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %81 unwind label %87

81:                                               ; preds = %80
  invoke void @__cxa_throw(ptr %76, ptr nonnull @_ZTIN6alglib8ap_errorE, ptr nonnull @_ZN6alglib8ap_errorD2Ev) #7
          to label %210 unwind label %87

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

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

85:                                               ; preds = %79
  %86 = landingpad { ptr, i32 }
          cleanup
  br label %89

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

89:                                               ; preds = %87, %85
  %.pn118 = phi { ptr, i32 } [ %88, %87 ], [ %86, %85 ]
  %.173 = phi i1 [ %.072, %87 ], [ true, %85 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  br label %90

90:                                               ; preds = %83, %89
  %.pn118.pn = phi { ptr, i32 } [ %.pn118, %89 ], [ %84, %83 ]
  %.274 = phi i1 [ %.173, %89 ], [ true, %83 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  br i1 %.274, label %.sink.split, label %209

91:                                               ; preds = %71
  %92 = getelementptr inbounds i8, ptr %0, i64 8
  %93 = load ptr, ptr %92, align 8, !tbaa !21
  tail call void %66(ptr noundef nonnull align 8 dereferenceable(81) %3, ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef %93)
  br label %208

94:                                               ; preds = %65
  %95 = getelementptr inbounds i8, ptr %2, i64 40
  %96 = load ptr, ptr %95, align 8, !tbaa !22
  %.not100 = icmp eq ptr %96, null
  br i1 %.not100, label %125, label %97

97:                                               ; preds = %94
  %98 = load ptr, ptr %31, align 8, !tbaa !14
  %99 = load i64, ptr %98, align 8, !tbaa !12
  %100 = icmp sgt i64 %99, 0
  br i1 %100, label %101, label %105

101:                                              ; preds = %97
  %102 = load ptr, ptr %40, align 8, !tbaa !16
  %103 = load i64, ptr %102, align 8, !tbaa !12
  %104 = icmp eq i64 %103, 1
  br i1 %104, label %121, label %105

105:                                              ; preds = %101, %97
  %106 = tail call ptr @__cxa_allocate_exception(i64 32) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull @.str.127, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %107 unwind label %.thread126

107:                                              ; preds = %105
  %108 = load ptr, ptr %0, align 8, !tbaa !20
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef %108)
          to label %109 unwind label %113

109:                                              ; preds = %107
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.128)
          to label %110 unwind label %115

110:                                              ; preds = %109
  invoke void @_ZN6alglib8ap_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %106, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %111 unwind label %117

111:                                              ; preds = %110
  invoke void @__cxa_throw(ptr %106, ptr nonnull @_ZTIN6alglib8ap_errorE, ptr nonnull @_ZN6alglib8ap_errorD2Ev) #7
          to label %210 unwind label %117

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

113:                                              ; preds = %107
  %114 = landingpad { ptr, i32 }
          cleanup
  br label %120

115:                                              ; preds = %109
  %116 = landingpad { ptr, i32 }
          cleanup
  br label %119

117:                                              ; preds = %111, %110
  %.068 = phi i1 [ false, %111 ], [ true, %110 ]
  %118 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  br label %119

119:                                              ; preds = %117, %115
  %.pn114 = phi { ptr, i32 } [ %118, %117 ], [ %116, %115 ]
  %.169 = phi i1 [ %.068, %117 ], [ true, %115 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  br label %120

120:                                              ; preds = %113, %119
  %.pn114.pn = phi { ptr, i32 } [ %.pn114, %119 ], [ %114, %113 ]
  %.270 = phi i1 [ %.169, %119 ], [ true, %113 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  br i1 %.270, label %.sink.split, label %209

121:                                              ; preds = %101
  %122 = getelementptr inbounds i8, ptr %3, i64 88
  %123 = getelementptr inbounds i8, ptr %0, i64 8
  %124 = load ptr, ptr %123, align 8, !tbaa !21
  tail call void %96(ptr noundef nonnull align 8 dereferenceable(81) %3, ptr noundef nonnull align 8 dereferenceable(81) %122, ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef %124)
  br label %208

125:                                              ; preds = %94
  %126 = getelementptr inbounds i8, ptr %2, i64 16
  %127 = load ptr, ptr %126, align 8, !tbaa !23
  %.not101 = icmp eq ptr %127, null
  br i1 %.not101, label %158, label %128

128:                                              ; preds = %125
  %129 = load ptr, ptr %31, align 8, !tbaa !14
  %130 = load i64, ptr %129, align 8, !tbaa !12
  %131 = icmp eq i64 %130, 0
  br i1 %131, label %148, label %132

132:                                              ; preds = %128
  %133 = tail call ptr @__cxa_allocate_exception(i64 32) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %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 nonnull @.str.127, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %134 unwind label %.thread130

134:                                              ; preds = %132
  %135 = load ptr, ptr %0, align 8, !tbaa !20
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef %135)
          to label %136 unwind label %140

136:                                              ; preds = %134
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull @.str.128)
          to label %137 unwind label %142

137:                                              ; preds = %136
  invoke void @_ZN6alglib8ap_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %133, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %138 unwind label %144

138:                                              ; preds = %137
  invoke void @__cxa_throw(ptr %133, ptr nonnull @_ZTIN6alglib8ap_errorE, ptr nonnull @_ZN6alglib8ap_errorD2Ev) #7
          to label %210 unwind label %144

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

140:                                              ; preds = %134
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %147

142:                                              ; preds = %136
  %143 = landingpad { ptr, i32 }
          cleanup
  br label %146

144:                                              ; preds = %138, %137
  %.064 = phi i1 [ false, %138 ], [ true, %137 ]
  %145 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  br label %146

146:                                              ; preds = %144, %142
  %.pn110 = phi { ptr, i32 } [ %145, %144 ], [ %143, %142 ]
  %.165 = phi i1 [ %.064, %144 ], [ true, %142 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  br label %147

147:                                              ; preds = %140, %146
  %.pn110.pn = phi { ptr, i32 } [ %.pn110, %146 ], [ %141, %140 ]
  %.266 = phi i1 [ %.165, %146 ], [ true, %140 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  br i1 %.266, label %.sink.split, label %209

148:                                              ; preds = %128
  %149 = getelementptr inbounds i8, ptr %3, i64 176
  %150 = getelementptr inbounds i8, ptr %0, i64 8
  %151 = load ptr, ptr %150, align 8, !tbaa !21
  tail call void %127(ptr noundef nonnull align 8 dereferenceable(81) %3, ptr noundef nonnull align 8 dereferenceable(81) %149, ptr noundef %151)
  %152 = tail call noundef ptr @_ZN6alglib17ae_vector_wrapper5c_ptrEv(ptr noundef nonnull align 8 dereferenceable(81) %149)
  %153 = getelementptr inbounds i8, ptr %152, i64 56
  %154 = load ptr, ptr %153, align 8, !tbaa !17
  %155 = load ptr, ptr %40, align 8, !tbaa !16
  %156 = load i64, ptr %155, align 8, !tbaa !12
  %157 = shl i64 %156, 3
  tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %44, ptr align 8 %154, i64 %157, i1 false)
  br label %208

158:                                              ; preds = %125
  %159 = getelementptr inbounds i8, ptr %2, i64 56
  %160 = load ptr, ptr %159, align 8, !tbaa !24
  %.not102 = icmp eq ptr %160, null
  br i1 %.not102, label %192, label %161

161:                                              ; preds = %158
  %162 = load ptr, ptr %31, align 8, !tbaa !14
  %163 = load i64, ptr %162, align 8, !tbaa !12
  %164 = icmp sgt i64 %163, 0
  br i1 %164, label %181, label %165

165:                                              ; preds = %161
  %166 = tail call ptr @__cxa_allocate_exception(i64 32) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull @.str.127, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %167 unwind label %.thread134

167:                                              ; preds = %165
  %168 = load ptr, ptr %0, align 8, !tbaa !20
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef %168)
          to label %169 unwind label %173

169:                                              ; preds = %167
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull @.str.128)
          to label %170 unwind label %175

170:                                              ; preds = %169
  invoke void @_ZN6alglib8ap_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %166, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %171 unwind label %177

171:                                              ; preds = %170
  invoke void @__cxa_throw(ptr %166, ptr nonnull @_ZTIN6alglib8ap_errorE, ptr nonnull @_ZN6alglib8ap_errorD2Ev) #7
          to label %210 unwind label %177

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

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

175:                                              ; preds = %169
  %176 = landingpad { ptr, i32 }
          cleanup
  br label %179

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

179:                                              ; preds = %177, %175
  %.pn106 = phi { ptr, i32 } [ %178, %177 ], [ %176, %175 ]
  %.161 = phi i1 [ %.060, %177 ], [ true, %175 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  br label %180

180:                                              ; preds = %173, %179
  %.pn106.pn = phi { ptr, i32 } [ %.pn106, %179 ], [ %174, %173 ]
  %.262 = phi i1 [ %.161, %179 ], [ true, %173 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #6
  br i1 %.262, label %.sink.split, label %209

181:                                              ; preds = %161
  %182 = getelementptr inbounds i8, ptr %3, i64 88
  %183 = getelementptr inbounds i8, ptr %3, i64 176
  %184 = getelementptr inbounds i8, ptr %0, i64 8
  %185 = load ptr, ptr %184, align 8, !tbaa !21
  tail call void %160(ptr noundef nonnull align 8 dereferenceable(81) %3, ptr noundef nonnull align 8 dereferenceable(81) %182, ptr noundef nonnull align 8 dereferenceable(81) %183, ptr noundef %185)
  %186 = tail call noundef ptr @_ZN6alglib17ae_vector_wrapper5c_ptrEv(ptr noundef nonnull align 8 dereferenceable(81) %183)
  %187 = getelementptr inbounds i8, ptr %186, i64 56
  %188 = load ptr, ptr %187, align 8, !tbaa !17
  %189 = load ptr, ptr %40, align 8, !tbaa !16
  %190 = load i64, ptr %189, align 8, !tbaa !12
  %191 = shl i64 %190, 3
  tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %44, ptr align 8 %188, i64 %191, i1 false)
  br label %208

192:                                              ; preds = %158
  %193 = tail call ptr @__cxa_allocate_exception(i64 32) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull @.str.127, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %194 unwind label %.thread138

194:                                              ; preds = %192
  %195 = load ptr, ptr %0, align 8, !tbaa !20
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef %195)
          to label %196 unwind label %200

196:                                              ; preds = %194
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull @.str.132)
          to label %197 unwind label %202

197:                                              ; preds = %196
  invoke void @_ZN6alglib8ap_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %193, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %198 unwind label %204

198:                                              ; preds = %197
  invoke void @__cxa_throw(ptr %193, ptr nonnull @_ZTIN6alglib8ap_errorE, ptr nonnull @_ZN6alglib8ap_errorD2Ev) #7
          to label %210 unwind label %204

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

200:                                              ; preds = %194
  %201 = landingpad { ptr, i32 }
          cleanup
  br label %207

202:                                              ; preds = %196
  %203 = landingpad { ptr, i32 }
          cleanup
  br label %206

204:                                              ; preds = %198, %197
  %.0 = phi i1 [ false, %198 ], [ true, %197 ]
  %205 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  br label %206

206:                                              ; preds = %204, %202
  %.pn = phi { ptr, i32 } [ %205, %204 ], [ %203, %202 ]
  %.1 = phi i1 [ %.0, %204 ], [ true, %202 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  br label %207

207:                                              ; preds = %200, %206
  %.pn.pn = phi { ptr, i32 } [ %.pn, %206 ], [ %201, %200 ]
  %.2 = phi i1 [ %.1, %206 ], [ true, %200 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #6
  br i1 %.2, label %.sink.split, label %209

208:                                              ; preds = %181, %148, %121, %91
  ret void

.sink.split:                                      ; preds = %207, %.thread138, %180, %.thread134, %147, %.thread130, %120, %.thread126, %90, %.thread
  %.sink = phi ptr [ %76, %.thread ], [ %76, %90 ], [ %106, %.thread126 ], [ %106, %120 ], [ %133, %.thread130 ], [ %133, %147 ], [ %166, %.thread134 ], [ %166, %180 ], [ %193, %.thread138 ], [ %193, %207 ]
  %.pn118.pn.pn.pn.ph = phi { ptr, i32 } [ %82, %.thread ], [ %.pn118.pn, %90 ], [ %112, %.thread126 ], [ %.pn114.pn, %120 ], [ %139, %.thread130 ], [ %.pn110.pn, %147 ], [ %172, %.thread134 ], [ %.pn106.pn, %180 ], [ %199, %.thread138 ], [ %.pn.pn, %207 ]
  call void @__cxa_free_exception(ptr %.sink) #6
  br label %209

209:                                              ; preds = %.sink.split, %207, %180, %147, %120, %90
  %.pn118.pn.pn.pn = phi { ptr, i32 } [ %.pn118.pn, %90 ], [ %.pn114.pn, %120 ], [ %.pn110.pn, %147 ], [ %.pn106.pn, %180 ], [ %.pn.pn, %207 ], [ %.pn118.pn.pn.pn.ph, %.sink.split ]
  resume { ptr, i32 } %.pn118.pn.pn.pn

210:                                              ; preds = %198, %171, %138, %111, %81
  unreachable
}

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

declare void @_ZN6alglib8ap_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr, ptr) local_unnamed_addr

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { 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 #5 = { 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 #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 16}
!6 = !{!"_ZTSN11alglib_impl15rcommv2_requestE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!7, !7, i64 0}
!11 = !{!6, !7, i64 48}
!12 = !{!13, !13, i64 0}
!13 = !{!"long", !8, i64 0}
!14 = !{!6, !7, i64 56}
!15 = !{!6, !7, i64 72}
!16 = !{!6, !7, i64 40}
!17 = !{!8, !8, i64 0}
!18 = !{!19, !7, i64 0}
!19 = !{!"_ZTSN11alglib_impl17rcommv2_callbacksE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72}
!20 = !{!6, !7, i64 0}
!21 = !{!6, !7, i64 8}
!22 = !{!19, !7, i64 40}
!23 = !{!19, !7, i64 16}
!24 = !{!19, !7, i64 56}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass