; LLVM IR from venumb/ZSPACE :: cpp/depends/alglib/cpp/src (optimization)

; 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"

%"struct.alglib_impl::minlbfgsstate" = type { i64, i64, double, double, double, i64, i8, double, %"struct.alglib_impl::ae_vector", double, i64, i64, i64, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", double, double, %"struct.alglib_impl::ae_vector", i64, double, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", i64, %"struct.alglib_impl::precbuflbfgs", %"struct.alglib_impl::precbuflowrank", double, double, double, double, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", i8, i8, i8, i8, double, %"struct.alglib_impl::rcommstate", i64, i64, i64, %"struct.alglib_impl::linminstate", i64, %"struct.alglib_impl::smoothnessmonitor", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.1 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%union.anon.1 = type { ptr }
%"struct.alglib_impl::precbuflbfgs" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::precbuflowrank" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::rcommstate" = type { i32, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::linminstate" = type { i8, i8, i64, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double }
%"struct.alglib_impl::smoothnessmonitor" = type { i64, i64, i8, %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i8, i8, double, double, i8, %"struct.alglib_impl::optguardreport", double, double, %"struct.alglib_impl::optguardnonc1test0report", %"struct.alglib_impl::optguardnonc1test0report", double, double, %"struct.alglib_impl::optguardnonc1test1report", %"struct.alglib_impl::optguardnonc1test1report", i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::rcommstate", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::optguardreport" = type { i8, i8, i64, double, i8, i8, i8, i64, double, i8, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::optguardnonc1test0report" = type { i8, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64 }
%"struct.alglib_impl::optguardnonc1test1report" = type { i8, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64 }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }

@_ZN11alglib_implL13minlbfgs_gtolE = external hidden global double, align 8

; 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: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) #1 {
  %3 = alloca i1, align 1
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i64, align 8
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca i8, align 1
  %15 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #5
  %16 = load ptr, ptr %4, align 8, !tbaa !5
  %17 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %16, i32 0, i32 51
  %18 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %17, i32 0, i32 0
  %19 = load i32, ptr %18, align 8, !tbaa !9
  %20 = icmp sge i32 %19, 0
  br i1 %20, label %21, label %78

21:                                               ; preds = %2
  %22 = load ptr, ptr %4, align 8, !tbaa !5
  %23 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %22, i32 0, i32 51
  %24 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %23, i32 0, i32 1
  %25 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %26 = load ptr, ptr %25, align 8, !tbaa !26
  %27 = getelementptr inbounds i64, ptr %26, i64 0
  %28 = load i64, ptr %27, align 8, !tbaa !27
  store i64 %28, ptr %6, align 8, !tbaa !27
  %29 = load ptr, ptr %4, align 8, !tbaa !5
  %30 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %29, i32 0, i32 51
  %31 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %30, i32 0, i32 1
  %32 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %31, i32 0, i32 4
  %33 = load ptr, ptr %32, align 8, !tbaa !26
  %34 = getelementptr inbounds i64, ptr %33, i64 1
  %35 = load i64, ptr %34, align 8, !tbaa !27
  store i64 %35, ptr %7, align 8, !tbaa !27
  %36 = load ptr, ptr %4, align 8, !tbaa !5
  %37 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %36, i32 0, i32 51
  %38 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %37, i32 0, i32 1
  %39 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %38, i32 0, i32 4
  %40 = load ptr, ptr %39, align 8, !tbaa !26
  %41 = getelementptr inbounds i64, ptr %40, i64 2
  %42 = load i64, ptr %41, align 8, !tbaa !27
  store i64 %42, ptr %8, align 8, !tbaa !27
  %43 = load ptr, ptr %4, align 8, !tbaa !5
  %44 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %43, i32 0, i32 51
  %45 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %44, i32 0, i32 1
  %46 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %45, i32 0, i32 4
  %47 = load ptr, ptr %46, align 8, !tbaa !26
  %48 = getelementptr inbounds i64, ptr %47, i64 3
  %49 = load i64, ptr %48, align 8, !tbaa !27
  store i64 %49, ptr %9, align 8, !tbaa !27
  %50 = load ptr, ptr %4, align 8, !tbaa !5
  %51 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %50, i32 0, i32 51
  %52 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %51, i32 0, i32 1
  %53 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %52, i32 0, i32 4
  %54 = load ptr, ptr %53, align 8, !tbaa !26
  %55 = getelementptr inbounds i64, ptr %54, i64 4
  %56 = load i64, ptr %55, align 8, !tbaa !27
  store i64 %56, ptr %10, align 8, !tbaa !27
  %57 = load ptr, ptr %4, align 8, !tbaa !5
  %58 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %57, i32 0, i32 51
  %59 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %58, i32 0, i32 1
  %60 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %59, i32 0, i32 4
  %61 = load ptr, ptr %60, align 8, !tbaa !26
  %62 = getelementptr inbounds i64, ptr %61, i64 5
  %63 = load i64, ptr %62, align 8, !tbaa !27
  store i64 %63, ptr %11, align 8, !tbaa !27
  %64 = load ptr, ptr %4, align 8, !tbaa !5
  %65 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %64, i32 0, i32 51
  %66 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %65, i32 0, i32 3
  %67 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %66, i32 0, i32 4
  %68 = load ptr, ptr %67, align 8, !tbaa !26
  %69 = getelementptr inbounds double, ptr %68, i64 0
  %70 = load double, ptr %69, align 8, !tbaa !28
  store double %70, ptr %12, align 8, !tbaa !28
  %71 = load ptr, ptr %4, align 8, !tbaa !5
  %72 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %71, i32 0, i32 51
  %73 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %72, i32 0, i32 3
  %74 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %73, i32 0, i32 4
  %75 = load ptr, ptr %74, align 8, !tbaa !26
  %76 = getelementptr inbounds double, ptr %75, i64 1
  %77 = load double, ptr %76, align 8, !tbaa !28
  store double %77, ptr %13, align 8, !tbaa !28
  br label %79

78:                                               ; preds = %2
  store i64 359, ptr %6, align 8, !tbaa !27
  store i64 -58, ptr %7, align 8, !tbaa !27
  store i64 -919, ptr %8, align 8, !tbaa !27
  store i64 -909, ptr %9, align 8, !tbaa !27
  store i64 81, ptr %10, align 8, !tbaa !27
  store i64 255, ptr %11, align 8, !tbaa !27
  store double 7.400000e+01, ptr %12, align 8, !tbaa !28
  store double -7.880000e+02, ptr %13, align 8, !tbaa !28
  br label %79

79:                                               ; preds = %78, %21
  %80 = load ptr, ptr %4, align 8, !tbaa !5
  %81 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %80, i32 0, i32 51
  %82 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %81, i32 0, i32 0
  %83 = load i32, ptr %82, align 8, !tbaa !9
  %84 = icmp eq i32 %83, 0
  br i1 %84, label %85, label %86

85:                                               ; preds = %79
  br label %310

86:                                               ; preds = %79
  %87 = load ptr, ptr %4, align 8, !tbaa !5
  %88 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %87, i32 0, i32 51
  %89 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %88, i32 0, i32 0
  %90 = load i32, ptr %89, align 8, !tbaa !9
  %91 = icmp eq i32 %90, 1
  br i1 %91, label %92, label %93

92:                                               ; preds = %86
  br label %388

93:                                               ; preds = %86
  %94 = load ptr, ptr %4, align 8, !tbaa !5
  %95 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %94, i32 0, i32 51
  %96 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %95, i32 0, i32 0
  %97 = load i32, ptr %96, align 8, !tbaa !9
  %98 = icmp eq i32 %97, 2
  br i1 %98, label %99, label %100

99:                                               ; preds = %93
  br label %397

100:                                              ; preds = %93
  %101 = load ptr, ptr %4, align 8, !tbaa !5
  %102 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %101, i32 0, i32 51
  %103 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %102, i32 0, i32 0
  %104 = load i32, ptr %103, align 8, !tbaa !9
  %105 = icmp eq i32 %104, 3
  br i1 %105, label %106, label %107

106:                                              ; preds = %100
  br label %439

107:                                              ; preds = %100
  %108 = load ptr, ptr %4, align 8, !tbaa !5
  %109 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %108, i32 0, i32 51
  %110 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %109, i32 0, i32 0
  %111 = load i32, ptr %110, align 8, !tbaa !9
  %112 = icmp eq i32 %111, 4
  br i1 %112, label %113, label %114

113:                                              ; preds = %107
  br label %468

114:                                              ; preds = %107
  %115 = load ptr, ptr %4, align 8, !tbaa !5
  %116 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %115, i32 0, i32 51
  %117 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %116, i32 0, i32 0
  %118 = load i32, ptr %117, align 8, !tbaa !9
  %119 = icmp eq i32 %118, 5
  br i1 %119, label %120, label %121

120:                                              ; preds = %114
  br label %496

121:                                              ; preds = %114
  %122 = load ptr, ptr %4, align 8, !tbaa !5
  %123 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %122, i32 0, i32 51
  %124 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %123, i32 0, i32 0
  %125 = load i32, ptr %124, align 8, !tbaa !9
  %126 = icmp eq i32 %125, 6
  br i1 %126, label %127, label %128

127:                                              ; preds = %121
  br label %523

128:                                              ; preds = %121
  %129 = load ptr, ptr %4, align 8, !tbaa !5
  %130 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %129, i32 0, i32 51
  %131 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %130, i32 0, i32 0
  %132 = load i32, ptr %131, align 8, !tbaa !9
  %133 = icmp eq i32 %132, 7
  br i1 %133, label %134, label %135

134:                                              ; preds = %128
  br label %601

135:                                              ; preds = %128
  %136 = load ptr, ptr %4, align 8, !tbaa !5
  %137 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %136, i32 0, i32 51
  %138 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %137, i32 0, i32 0
  %139 = load i32, ptr %138, align 8, !tbaa !9
  %140 = icmp eq i32 %139, 8
  br i1 %140, label %141, label %142

141:                                              ; preds = %135
  br label %1002

142:                                              ; preds = %135
  %143 = load ptr, ptr %4, align 8, !tbaa !5
  %144 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %143, i32 0, i32 51
  %145 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %144, i32 0, i32 0
  %146 = load i32, ptr %145, align 8, !tbaa !9
  %147 = icmp eq i32 %146, 9
  br i1 %147, label %148, label %149

148:                                              ; preds = %142
  br label %1011

149:                                              ; preds = %142
  %150 = load ptr, ptr %4, align 8, !tbaa !5
  %151 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %150, i32 0, i32 51
  %152 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %151, i32 0, i32 0
  %153 = load i32, ptr %152, align 8, !tbaa !9
  %154 = icmp eq i32 %153, 10
  br i1 %154, label %155, label %156

155:                                              ; preds = %149
  br label %1053

156:                                              ; preds = %149
  %157 = load ptr, ptr %4, align 8, !tbaa !5
  %158 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %157, i32 0, i32 51
  %159 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %158, i32 0, i32 0
  %160 = load i32, ptr %159, align 8, !tbaa !9
  %161 = icmp eq i32 %160, 11
  br i1 %161, label %162, label %163

162:                                              ; preds = %156
  br label %1082

163:                                              ; preds = %156
  %164 = load ptr, ptr %4, align 8, !tbaa !5
  %165 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %164, i32 0, i32 51
  %166 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %165, i32 0, i32 0
  %167 = load i32, ptr %166, align 8, !tbaa !9
  %168 = icmp eq i32 %167, 12
  br i1 %168, label %169, label %170

169:                                              ; preds = %163
  br label %1110

170:                                              ; preds = %163
  %171 = load ptr, ptr %4, align 8, !tbaa !5
  %172 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %171, i32 0, i32 51
  %173 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %172, i32 0, i32 0
  %174 = load i32, ptr %173, align 8, !tbaa !9
  %175 = icmp eq i32 %174, 13
  br i1 %175, label %176, label %177

176:                                              ; preds = %170
  br label %1137

177:                                              ; preds = %170
  %178 = load ptr, ptr %4, align 8, !tbaa !5
  %179 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %178, i32 0, i32 51
  %180 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %179, i32 0, i32 0
  %181 = load i32, ptr %180, align 8, !tbaa !9
  %182 = icmp eq i32 %181, 14
  br i1 %182, label %183, label %184

183:                                              ; preds = %177
  br label %1288

184:                                              ; preds = %177
  %185 = load ptr, ptr %4, align 8, !tbaa !5
  %186 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %185, i32 0, i32 0
  %187 = load i64, ptr %186, align 8, !tbaa !29
  store i64 %187, ptr %6, align 8, !tbaa !27
  %188 = load ptr, ptr %4, align 8, !tbaa !5
  %189 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %188, i32 0, i32 1
  %190 = load i64, ptr %189, align 8, !tbaa !30
  store i64 %190, ptr %7, align 8, !tbaa !27
  %191 = load ptr, ptr %4, align 8, !tbaa !5
  %192 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %191, i32 0, i32 49
  store i8 0, ptr %192, align 1, !tbaa !31
  %193 = load ptr, ptr %4, align 8, !tbaa !5
  %194 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %193, i32 0, i32 54
  store i64 0, ptr %194, align 8, !tbaa !32
  %195 = load ptr, ptr %4, align 8, !tbaa !5
  %196 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %195, i32 0, i32 52
  store i64 0, ptr %196, align 8, !tbaa !33
  %197 = load ptr, ptr %4, align 8, !tbaa !5
  %198 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %197, i32 0, i32 53
  store i64 0, ptr %198, align 8, !tbaa !34
  %199 = load ptr, ptr %4, align 8, !tbaa !5
  %200 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %199, i32 0, i32 57
  %201 = load i64, ptr %6, align 8, !tbaa !27
  %202 = load ptr, ptr %4, align 8, !tbaa !5
  %203 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %202, i32 0, i32 56
  %204 = load i64, ptr %203, align 8, !tbaa !35
  %205 = icmp sgt i64 %204, 0
  %206 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl21smoothnessmonitorinitEPNS_17smoothnessmonitorEllbPNS_8ae_stateE(ptr noundef %200, i64 noundef %201, i64 noundef 1, i1 noundef zeroext %205, ptr noundef %206)
  %207 = load ptr, ptr %4, align 8, !tbaa !5
  %208 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %207, i32 0, i32 42
  %209 = load i64, ptr %6, align 8, !tbaa !27
  %210 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %208, i64 noundef %209, ptr noundef %210)
  store i64 0, ptr %8, align 8, !tbaa !27
  br label %211

211:                                              ; preds = %244, %184
  %212 = load i64, ptr %8, align 8, !tbaa !27
  %213 = load i64, ptr %6, align 8, !tbaa !27
  %214 = sub nsw i64 %213, 1
  %215 = icmp sle i64 %212, %214
  br i1 %215, label %216, label %247

216:                                              ; preds = %211
  %217 = load ptr, ptr %4, align 8, !tbaa !5
  %218 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %217, i32 0, i32 8
  %219 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %218, i32 0, i32 4
  %220 = load ptr, ptr %219, align 8, !tbaa !26
  %221 = load i64, ptr %8, align 8, !tbaa !27
  %222 = getelementptr inbounds double, ptr %220, i64 %221
  %223 = load double, ptr %222, align 8, !tbaa !28
  %224 = load ptr, ptr %4, align 8, !tbaa !5
  %225 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %224, i32 0, i32 58
  %226 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %225, i32 0, i32 4
  %227 = load ptr, ptr %226, align 8, !tbaa !26
  %228 = load i64, ptr %8, align 8, !tbaa !27
  %229 = getelementptr inbounds double, ptr %227, i64 %228
  store double %223, ptr %229, align 8, !tbaa !28
  %230 = load ptr, ptr %4, align 8, !tbaa !5
  %231 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %230, i32 0, i32 8
  %232 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %231, i32 0, i32 4
  %233 = load ptr, ptr %232, align 8, !tbaa !26
  %234 = load i64, ptr %8, align 8, !tbaa !27
  %235 = getelementptr inbounds double, ptr %233, i64 %234
  %236 = load double, ptr %235, align 8, !tbaa !28
  %237 = fdiv double 1.000000e+00, %236
  %238 = load ptr, ptr %4, align 8, !tbaa !5
  %239 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %238, i32 0, i32 42
  %240 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %239, i32 0, i32 4
  %241 = load ptr, ptr %240, align 8, !tbaa !26
  %242 = load i64, ptr %8, align 8, !tbaa !27
  %243 = getelementptr inbounds double, ptr %241, i64 %242
  store double %237, ptr %243, align 8, !tbaa !28
  br label %244

244:                                              ; preds = %216
  %245 = load i64, ptr %8, align 8, !tbaa !27
  %246 = add nsw i64 %245, 1
  store i64 %246, ptr %8, align 8, !tbaa !27
  br label %211, !llvm.loop !36

247:                                              ; preds = %211
  %248 = load ptr, ptr %4, align 8, !tbaa !5
  %249 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %248, i32 0, i32 21
  store double 0.000000e+00, ptr %249, align 8, !tbaa !38
  %250 = load ptr, ptr %4, align 8, !tbaa !5
  %251 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %250, ptr noundef %251)
  %252 = load ptr, ptr %4, align 8, !tbaa !5
  %253 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %252, i32 0, i32 9
  %254 = load double, ptr %253, align 8, !tbaa !39
  %255 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %254, double noundef 0.000000e+00)
  br i1 %255, label %256, label %261

256:                                              ; preds = %247
  %257 = load ptr, ptr %4, align 8, !tbaa !5
  %258 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %257, i32 0, i32 50
  %259 = load double, ptr %258, align 8, !tbaa !40
  %260 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %259, double noundef 0.000000e+00)
  br i1 %260, label %262, label %261

261:                                              ; preds = %256, %247
  br label %349

262:                                              ; preds = %256
  br label %263

263:                                              ; preds = %347, %262
  %264 = load ptr, ptr %4, align 8, !tbaa !5
  %265 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %264, i32 0, i32 57
  %266 = load ptr, ptr %4, align 8, !tbaa !5
  %267 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %266, i32 0, i32 25
  %268 = load ptr, ptr %4, align 8, !tbaa !5
  %269 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %268, i32 0, i32 8
  %270 = load ptr, ptr %4, align 8, !tbaa !5
  %271 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %270, i32 0, i32 8
  %272 = load ptr, ptr %4, align 8, !tbaa !5
  %273 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %272, i32 0, i32 8
  %274 = load ptr, ptr %4, align 8, !tbaa !5
  %275 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %274, i32 0, i32 50
  %276 = load double, ptr %275, align 8, !tbaa !40
  %277 = load ptr, ptr %5, align 8, !tbaa !5
  %278 = call noundef zeroext i1 @_ZN11alglib_impl34smoothnessmonitorcheckgradientatx0EPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_S3_bdPNS_8ae_stateE(ptr noundef %265, ptr noundef %267, ptr noundef %269, ptr noundef %271, ptr noundef %273, i1 noundef zeroext false, double noundef %276, ptr noundef %277)
  br i1 %278, label %280, label %279

279:                                              ; preds = %263
  br label %348

280:                                              ; preds = %263
  store i64 0, ptr %8, align 8, !tbaa !27
  br label %281

281:                                              ; preds = %301, %280
  %282 = load i64, ptr %8, align 8, !tbaa !27
  %283 = load i64, ptr %6, align 8, !tbaa !27
  %284 = sub nsw i64 %283, 1
  %285 = icmp sle i64 %282, %284
  br i1 %285, label %286, label %304

286:                                              ; preds = %281
  %287 = load ptr, ptr %4, align 8, !tbaa !5
  %288 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %287, i32 0, i32 57
  %289 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %288, i32 0, i32 27
  %290 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %289, i32 0, i32 4
  %291 = load ptr, ptr %290, align 8, !tbaa !26
  %292 = load i64, ptr %8, align 8, !tbaa !27
  %293 = getelementptr inbounds double, ptr %291, i64 %292
  %294 = load double, ptr %293, align 8, !tbaa !28
  %295 = load ptr, ptr %4, align 8, !tbaa !5
  %296 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %295, i32 0, i32 43
  %297 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %296, i32 0, i32 4
  %298 = load ptr, ptr %297, align 8, !tbaa !26
  %299 = load i64, ptr %8, align 8, !tbaa !27
  %300 = getelementptr inbounds double, ptr %298, i64 %299
  store double %294, ptr %300, align 8, !tbaa !28
  br label %301

301:                                              ; preds = %286
  %302 = load i64, ptr %8, align 8, !tbaa !27
  %303 = add nsw i64 %302, 1
  store i64 %303, ptr %8, align 8, !tbaa !27
  br label %281, !llvm.loop !41

304:                                              ; preds = %281
  %305 = load ptr, ptr %4, align 8, !tbaa !5
  %306 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %305, i32 0, i32 47
  store i8 1, ptr %306, align 1, !tbaa !42
  %307 = load ptr, ptr %4, align 8, !tbaa !5
  %308 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %307, i32 0, i32 51
  %309 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %308, i32 0, i32 0
  store i32 0, ptr %309, align 8, !tbaa !9
  br label %1924

310:                                              ; preds = %85
  %311 = load ptr, ptr %4, align 8, !tbaa !5
  %312 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %311, i32 0, i32 47
  store i8 0, ptr %312, align 1, !tbaa !42
  %313 = load ptr, ptr %4, align 8, !tbaa !5
  %314 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %313, i32 0, i32 44
  %315 = load double, ptr %314, align 8, !tbaa !43
  %316 = load ptr, ptr %4, align 8, !tbaa !5
  %317 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %316, i32 0, i32 57
  %318 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %317, i32 0, i32 28
  %319 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %318, i32 0, i32 4
  %320 = load ptr, ptr %319, align 8, !tbaa !26
  %321 = getelementptr inbounds double, ptr %320, i64 0
  store double %315, ptr %321, align 8, !tbaa !28
  store i64 0, ptr %8, align 8, !tbaa !27
  br label %322

322:                                              ; preds = %344, %310
  %323 = load i64, ptr %8, align 8, !tbaa !27
  %324 = load i64, ptr %6, align 8, !tbaa !27
  %325 = sub nsw i64 %324, 1
  %326 = icmp sle i64 %323, %325
  br i1 %326, label %327, label %347

327:                                              ; preds = %322
  %328 = load ptr, ptr %4, align 8, !tbaa !5
  %329 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %328, i32 0, i32 45
  %330 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %329, i32 0, i32 4
  %331 = load ptr, ptr %330, align 8, !tbaa !26
  %332 = load i64, ptr %8, align 8, !tbaa !27
  %333 = getelementptr inbounds double, ptr %331, i64 %332
  %334 = load double, ptr %333, align 8, !tbaa !28
  %335 = load ptr, ptr %4, align 8, !tbaa !5
  %336 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %335, i32 0, i32 57
  %337 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %336, i32 0, i32 29
  %338 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %337, i32 0, i32 6
  %339 = load ptr, ptr %338, align 8, !tbaa !26
  %340 = getelementptr inbounds ptr, ptr %339, i64 0
  %341 = load ptr, ptr %340, align 8, !tbaa !5
  %342 = load i64, ptr %8, align 8, !tbaa !27
  %343 = getelementptr inbounds double, ptr %341, i64 %342
  store double %334, ptr %343, align 8, !tbaa !28
  br label %344

344:                                              ; preds = %327
  %345 = load i64, ptr %8, align 8, !tbaa !27
  %346 = add nsw i64 %345, 1
  store i64 %346, ptr %8, align 8, !tbaa !27
  br label %322, !llvm.loop !44

347:                                              ; preds = %322
  br label %263

348:                                              ; preds = %279
  br label %349

349:                                              ; preds = %348, %261
  store i64 0, ptr %8, align 8, !tbaa !27
  br label %350

350:                                              ; preds = %369, %349
  %351 = load i64, ptr %8, align 8, !tbaa !27
  %352 = load i64, ptr %6, align 8, !tbaa !27
  %353 = sub nsw i64 %352, 1
  %354 = icmp sle i64 %351, %353
  br i1 %354, label %355, label %372

355:                                              ; preds = %350
  %356 = load ptr, ptr %4, align 8, !tbaa !5
  %357 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %356, i32 0, i32 25
  %358 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %357, i32 0, i32 4
  %359 = load ptr, ptr %358, align 8, !tbaa !26
  %360 = load i64, ptr %8, align 8, !tbaa !27
  %361 = getelementptr inbounds double, ptr %359, i64 %360
  %362 = load double, ptr %361, align 8, !tbaa !28
  %363 = load ptr, ptr %4, align 8, !tbaa !5
  %364 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %363, i32 0, i32 43
  %365 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %364, i32 0, i32 4
  %366 = load ptr, ptr %365, align 8, !tbaa !26
  %367 = load i64, ptr %8, align 8, !tbaa !27
  %368 = getelementptr inbounds double, ptr %366, i64 %367
  store double %362, ptr %368, align 8, !tbaa !28
  br label %369

369:                                              ; preds = %355
  %370 = load i64, ptr %8, align 8, !tbaa !27
  %371 = add nsw i64 %370, 1
  store i64 %371, ptr %8, align 8, !tbaa !27
  br label %350, !llvm.loop !45

372:                                              ; preds = %350
  %373 = load ptr, ptr %4, align 8, !tbaa !5
  %374 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %373, i32 0, i32 21
  store double 0.000000e+00, ptr %374, align 8, !tbaa !38
  %375 = load ptr, ptr %4, align 8, !tbaa !5
  %376 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %375, ptr noundef %376)
  %377 = load ptr, ptr %4, align 8, !tbaa !5
  %378 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %377, i32 0, i32 9
  %379 = load double, ptr %378, align 8, !tbaa !39
  %380 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %379, double noundef 0.000000e+00)
  br i1 %380, label %381, label %382

381:                                              ; preds = %372
  br label %391

382:                                              ; preds = %372
  %383 = load ptr, ptr %4, align 8, !tbaa !5
  %384 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %383, i32 0, i32 47
  store i8 1, ptr %384, align 1, !tbaa !42
  %385 = load ptr, ptr %4, align 8, !tbaa !5
  %386 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %385, i32 0, i32 51
  %387 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %386, i32 0, i32 0
  store i32 1, ptr %387, align 8, !tbaa !9
  br label %1924

388:                                              ; preds = %92
  %389 = load ptr, ptr %4, align 8, !tbaa !5
  %390 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %389, i32 0, i32 47
  store i8 0, ptr %390, align 1, !tbaa !42
  br label %581

391:                                              ; preds = %381
  %392 = load ptr, ptr %4, align 8, !tbaa !5
  %393 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %392, i32 0, i32 46
  store i8 1, ptr %393, align 8, !tbaa !46
  %394 = load ptr, ptr %4, align 8, !tbaa !5
  %395 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %394, i32 0, i32 51
  %396 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %395, i32 0, i32 0
  store i32 2, ptr %396, align 8, !tbaa !9
  br label %1924

397:                                              ; preds = %99
  %398 = load ptr, ptr %4, align 8, !tbaa !5
  %399 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %398, i32 0, i32 44
  %400 = load double, ptr %399, align 8, !tbaa !43
  %401 = load ptr, ptr %4, align 8, !tbaa !5
  %402 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %401, i32 0, i32 36
  store double %400, ptr %402, align 8, !tbaa !47
  store i64 0, ptr %8, align 8, !tbaa !27
  br label %403

403:                                              ; preds = %523, %397
  %404 = load i64, ptr %8, align 8, !tbaa !27
  %405 = load i64, ptr %6, align 8, !tbaa !27
  %406 = sub nsw i64 %405, 1
  %407 = icmp sgt i64 %404, %406
  br i1 %407, label %408, label %409

408:                                              ; preds = %403
  br label %573

409:                                              ; preds = %403
  %410 = load ptr, ptr %4, align 8, !tbaa !5
  %411 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %410, i32 0, i32 43
  %412 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %411, i32 0, i32 4
  %413 = load ptr, ptr %412, align 8, !tbaa !26
  %414 = load i64, ptr %8, align 8, !tbaa !27
  %415 = getelementptr inbounds double, ptr %413, i64 %414
  %416 = load double, ptr %415, align 8, !tbaa !28
  store double %416, ptr %12, align 8, !tbaa !28
  %417 = load double, ptr %12, align 8, !tbaa !28
  %418 = load ptr, ptr %4, align 8, !tbaa !5
  %419 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %418, i32 0, i32 9
  %420 = load double, ptr %419, align 8, !tbaa !39
  %421 = load ptr, ptr %4, align 8, !tbaa !5
  %422 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %421, i32 0, i32 8
  %423 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %422, i32 0, i32 4
  %424 = load ptr, ptr %423, align 8, !tbaa !26
  %425 = load i64, ptr %8, align 8, !tbaa !27
  %426 = getelementptr inbounds double, ptr %424, i64 %425
  %427 = load double, ptr %426, align 8, !tbaa !28
  %428 = fneg double %420
  %429 = call double @llvm.fmuladd.f64(double %428, double %427, double %417)
  %430 = load ptr, ptr %4, align 8, !tbaa !5
  %431 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %430, i32 0, i32 43
  %432 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %431, i32 0, i32 4
  %433 = load ptr, ptr %432, align 8, !tbaa !26
  %434 = load i64, ptr %8, align 8, !tbaa !27
  %435 = getelementptr inbounds double, ptr %433, i64 %434
  store double %429, ptr %435, align 8, !tbaa !28
  %436 = load ptr, ptr %4, align 8, !tbaa !5
  %437 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %436, i32 0, i32 51
  %438 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %437, i32 0, i32 0
  store i32 3, ptr %438, align 8, !tbaa !9
  br label %1924

439:                                              ; preds = %106
  %440 = load ptr, ptr %4, align 8, !tbaa !5
  %441 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %440, i32 0, i32 44
  %442 = load double, ptr %441, align 8, !tbaa !43
  %443 = load ptr, ptr %4, align 8, !tbaa !5
  %444 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %443, i32 0, i32 37
  store double %442, ptr %444, align 8, !tbaa !48
  %445 = load double, ptr %12, align 8, !tbaa !28
  %446 = load ptr, ptr %4, align 8, !tbaa !5
  %447 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %446, i32 0, i32 9
  %448 = load double, ptr %447, align 8, !tbaa !39
  %449 = fmul double 5.000000e-01, %448
  %450 = load ptr, ptr %4, align 8, !tbaa !5
  %451 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %450, i32 0, i32 8
  %452 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %451, i32 0, i32 4
  %453 = load ptr, ptr %452, align 8, !tbaa !26
  %454 = load i64, ptr %8, align 8, !tbaa !27
  %455 = getelementptr inbounds double, ptr %453, i64 %454
  %456 = load double, ptr %455, align 8, !tbaa !28
  %457 = fneg double %449
  %458 = call double @llvm.fmuladd.f64(double %457, double %456, double %445)
  %459 = load ptr, ptr %4, align 8, !tbaa !5
  %460 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %459, i32 0, i32 43
  %461 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %460, i32 0, i32 4
  %462 = load ptr, ptr %461, align 8, !tbaa !26
  %463 = load i64, ptr %8, align 8, !tbaa !27
  %464 = getelementptr inbounds double, ptr %462, i64 %463
  store double %458, ptr %464, align 8, !tbaa !28
  %465 = load ptr, ptr %4, align 8, !tbaa !5
  %466 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %465, i32 0, i32 51
  %467 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %466, i32 0, i32 0
  store i32 4, ptr %467, align 8, !tbaa !9
  br label %1924

468:                                              ; preds = %113
  %469 = load ptr, ptr %4, align 8, !tbaa !5
  %470 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %469, i32 0, i32 44
  %471 = load double, ptr %470, align 8, !tbaa !43
  %472 = load ptr, ptr %4, align 8, !tbaa !5
  %473 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %472, i32 0, i32 38
  store double %471, ptr %473, align 8, !tbaa !49
  %474 = load double, ptr %12, align 8, !tbaa !28
  %475 = load ptr, ptr %4, align 8, !tbaa !5
  %476 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %475, i32 0, i32 9
  %477 = load double, ptr %476, align 8, !tbaa !39
  %478 = fmul double 5.000000e-01, %477
  %479 = load ptr, ptr %4, align 8, !tbaa !5
  %480 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %479, i32 0, i32 8
  %481 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %480, i32 0, i32 4
  %482 = load ptr, ptr %481, align 8, !tbaa !26
  %483 = load i64, ptr %8, align 8, !tbaa !27
  %484 = getelementptr inbounds double, ptr %482, i64 %483
  %485 = load double, ptr %484, align 8, !tbaa !28
  %486 = call double @llvm.fmuladd.f64(double %478, double %485, double %474)
  %487 = load ptr, ptr %4, align 8, !tbaa !5
  %488 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %487, i32 0, i32 43
  %489 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %488, i32 0, i32 4
  %490 = load ptr, ptr %489, align 8, !tbaa !26
  %491 = load i64, ptr %8, align 8, !tbaa !27
  %492 = getelementptr inbounds double, ptr %490, i64 %491
  store double %486, ptr %492, align 8, !tbaa !28
  %493 = load ptr, ptr %4, align 8, !tbaa !5
  %494 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %493, i32 0, i32 51
  %495 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %494, i32 0, i32 0
  store i32 5, ptr %495, align 8, !tbaa !9
  br label %1924

496:                                              ; preds = %120
  %497 = load ptr, ptr %4, align 8, !tbaa !5
  %498 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %497, i32 0, i32 44
  %499 = load double, ptr %498, align 8, !tbaa !43
  %500 = load ptr, ptr %4, align 8, !tbaa !5
  %501 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %500, i32 0, i32 39
  store double %499, ptr %501, align 8, !tbaa !50
  %502 = load double, ptr %12, align 8, !tbaa !28
  %503 = load ptr, ptr %4, align 8, !tbaa !5
  %504 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %503, i32 0, i32 9
  %505 = load double, ptr %504, align 8, !tbaa !39
  %506 = load ptr, ptr %4, align 8, !tbaa !5
  %507 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %506, i32 0, i32 8
  %508 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %507, i32 0, i32 4
  %509 = load ptr, ptr %508, align 8, !tbaa !26
  %510 = load i64, ptr %8, align 8, !tbaa !27
  %511 = getelementptr inbounds double, ptr %509, i64 %510
  %512 = load double, ptr %511, align 8, !tbaa !28
  %513 = call double @llvm.fmuladd.f64(double %505, double %512, double %502)
  %514 = load ptr, ptr %4, align 8, !tbaa !5
  %515 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %514, i32 0, i32 43
  %516 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %515, i32 0, i32 4
  %517 = load ptr, ptr %516, align 8, !tbaa !26
  %518 = load i64, ptr %8, align 8, !tbaa !27
  %519 = getelementptr inbounds double, ptr %517, i64 %518
  store double %513, ptr %519, align 8, !tbaa !28
  %520 = load ptr, ptr %4, align 8, !tbaa !5
  %521 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %520, i32 0, i32 51
  %522 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %521, i32 0, i32 0
  store i32 6, ptr %522, align 8, !tbaa !9
  br label %1924

523:                                              ; preds = %127
  %524 = load ptr, ptr %4, align 8, !tbaa !5
  %525 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %524, i32 0, i32 44
  %526 = load double, ptr %525, align 8, !tbaa !43
  %527 = load ptr, ptr %4, align 8, !tbaa !5
  %528 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %527, i32 0, i32 40
  store double %526, ptr %528, align 8, !tbaa !51
  %529 = load double, ptr %12, align 8, !tbaa !28
  %530 = load ptr, ptr %4, align 8, !tbaa !5
  %531 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %530, i32 0, i32 43
  %532 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %531, i32 0, i32 4
  %533 = load ptr, ptr %532, align 8, !tbaa !26
  %534 = load i64, ptr %8, align 8, !tbaa !27
  %535 = getelementptr inbounds double, ptr %533, i64 %534
  store double %529, ptr %535, align 8, !tbaa !28
  %536 = load ptr, ptr %4, align 8, !tbaa !5
  %537 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %536, i32 0, i32 39
  %538 = load double, ptr %537, align 8, !tbaa !50
  %539 = load ptr, ptr %4, align 8, !tbaa !5
  %540 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %539, i32 0, i32 38
  %541 = load double, ptr %540, align 8, !tbaa !49
  %542 = fsub double %538, %541
  %543 = load ptr, ptr %4, align 8, !tbaa !5
  %544 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %543, i32 0, i32 40
  %545 = load double, ptr %544, align 8, !tbaa !51
  %546 = load ptr, ptr %4, align 8, !tbaa !5
  %547 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %546, i32 0, i32 37
  %548 = load double, ptr %547, align 8, !tbaa !48
  %549 = fsub double %545, %548
  %550 = fneg double %549
  %551 = call double @llvm.fmuladd.f64(double 8.000000e+00, double %542, double %550)
  %552 = load ptr, ptr %4, align 8, !tbaa !5
  %553 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %552, i32 0, i32 9
  %554 = load double, ptr %553, align 8, !tbaa !39
  %555 = fmul double 6.000000e+00, %554
  %556 = load ptr, ptr %4, align 8, !tbaa !5
  %557 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %556, i32 0, i32 8
  %558 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %557, i32 0, i32 4
  %559 = load ptr, ptr %558, align 8, !tbaa !26
  %560 = load i64, ptr %8, align 8, !tbaa !27
  %561 = getelementptr inbounds double, ptr %559, i64 %560
  %562 = load double, ptr %561, align 8, !tbaa !28
  %563 = fmul double %555, %562
  %564 = fdiv double %551, %563
  %565 = load ptr, ptr %4, align 8, !tbaa !5
  %566 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %565, i32 0, i32 45
  %567 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %566, i32 0, i32 4
  %568 = load ptr, ptr %567, align 8, !tbaa !26
  %569 = load i64, ptr %8, align 8, !tbaa !27
  %570 = getelementptr inbounds double, ptr %568, i64 %569
  store double %564, ptr %570, align 8, !tbaa !28
  %571 = load i64, ptr %8, align 8, !tbaa !27
  %572 = add nsw i64 %571, 1
  store i64 %572, ptr %8, align 8, !tbaa !27
  br label %403

573:                                              ; preds = %408
  %574 = load ptr, ptr %4, align 8, !tbaa !5
  %575 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %574, i32 0, i32 36
  %576 = load double, ptr %575, align 8, !tbaa !47
  %577 = load ptr, ptr %4, align 8, !tbaa !5
  %578 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %577, i32 0, i32 44
  store double %576, ptr %578, align 8, !tbaa !43
  %579 = load ptr, ptr %4, align 8, !tbaa !5
  %580 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %579, i32 0, i32 46
  store i8 0, ptr %580, align 8, !tbaa !46
  br label %581

581:                                              ; preds = %573, %388
  %582 = load ptr, ptr %4, align 8, !tbaa !5
  %583 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %582, i32 0, i32 44
  %584 = load double, ptr %583, align 8, !tbaa !43
  %585 = load ptr, ptr %4, align 8, !tbaa !5
  %586 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %585, i32 0, i32 24
  %587 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11trimprepareEdPdPNS_8ae_stateE(double noundef %584, ptr noundef %586, ptr noundef %587)
  %588 = load ptr, ptr %4, align 8, !tbaa !5
  %589 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %588, i32 0, i32 6
  %590 = load i8, ptr %589, align 8, !tbaa !52, !range !53, !noundef !54
  %591 = trunc i8 %590 to i1
  br i1 %591, label %593, label %592

592:                                              ; preds = %581
  br label %604

593:                                              ; preds = %581
  %594 = load ptr, ptr %4, align 8, !tbaa !5
  %595 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %594, ptr noundef %595)
  %596 = load ptr, ptr %4, align 8, !tbaa !5
  %597 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %596, i32 0, i32 48
  store i8 1, ptr %597, align 2, !tbaa !55
  %598 = load ptr, ptr %4, align 8, !tbaa !5
  %599 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %598, i32 0, i32 51
  %600 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %599, i32 0, i32 0
  store i32 7, ptr %600, align 8, !tbaa !9
  br label %1924

601:                                              ; preds = %134
  %602 = load ptr, ptr %4, align 8, !tbaa !5
  %603 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %602, i32 0, i32 48
  store i8 0, ptr %603, align 2, !tbaa !55
  br label %604

604:                                              ; preds = %601, %592
  %605 = load ptr, ptr %4, align 8, !tbaa !5
  %606 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %605, i32 0, i32 49
  %607 = load i8, ptr %606, align 1, !tbaa !31, !range !53, !noundef !54
  %608 = trunc i8 %607 to i1
  br i1 %608, label %609, label %614

609:                                              ; preds = %604
  %610 = load ptr, ptr %4, align 8, !tbaa !5
  %611 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %610, i32 0, i32 54
  store i64 8, ptr %611, align 8, !tbaa !32
  store i8 0, ptr %14, align 1, !tbaa !56
  %612 = load i8, ptr %14, align 1, !tbaa !56, !range !53, !noundef !54
  %613 = trunc i8 %612 to i1
  store i1 %613, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %1983

614:                                              ; preds = %604
  %615 = load ptr, ptr %4, align 8, !tbaa !5
  %616 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %615, i32 0, i32 53
  store i64 1, ptr %616, align 8, !tbaa !34
  %617 = load ptr, ptr %4, align 8, !tbaa !5
  %618 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %617, i32 0, i32 44
  %619 = load double, ptr %618, align 8, !tbaa !43
  %620 = load ptr, ptr %4, align 8, !tbaa !5
  %621 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %620, i32 0, i32 23
  store double %619, ptr %621, align 8, !tbaa !57
  store double 0.000000e+00, ptr %12, align 8, !tbaa !28
  store i64 0, ptr %8, align 8, !tbaa !27
  br label %622

622:                                              ; preds = %647, %614
  %623 = load i64, ptr %8, align 8, !tbaa !27
  %624 = load i64, ptr %6, align 8, !tbaa !27
  %625 = sub nsw i64 %624, 1
  %626 = icmp sle i64 %623, %625
  br i1 %626, label %627, label %650

627:                                              ; preds = %622
  %628 = load double, ptr %12, align 8, !tbaa !28
  %629 = load ptr, ptr %4, align 8, !tbaa !5
  %630 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %629, i32 0, i32 45
  %631 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %630, i32 0, i32 4
  %632 = load ptr, ptr %631, align 8, !tbaa !26
  %633 = load i64, ptr %8, align 8, !tbaa !27
  %634 = getelementptr inbounds double, ptr %632, i64 %633
  %635 = load double, ptr %634, align 8, !tbaa !28
  %636 = load ptr, ptr %4, align 8, !tbaa !5
  %637 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %636, i32 0, i32 8
  %638 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %637, i32 0, i32 4
  %639 = load ptr, ptr %638, align 8, !tbaa !26
  %640 = load i64, ptr %8, align 8, !tbaa !27
  %641 = getelementptr inbounds double, ptr %639, i64 %640
  %642 = load double, ptr %641, align 8, !tbaa !28
  %643 = fmul double %635, %642
  %644 = load ptr, ptr %5, align 8, !tbaa !5
  %645 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %643, ptr noundef %644)
  %646 = fadd double %628, %645
  store double %646, ptr %12, align 8, !tbaa !28
  br label %647

647:                                              ; preds = %627
  %648 = load i64, ptr %8, align 8, !tbaa !27
  %649 = add nsw i64 %648, 1
  store i64 %649, ptr %8, align 8, !tbaa !27
  br label %622, !llvm.loop !58

650:                                              ; preds = %622
  %651 = load double, ptr %12, align 8, !tbaa !28
  %652 = load ptr, ptr %5, align 8, !tbaa !5
  %653 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %651, ptr noundef %652)
  %654 = load ptr, ptr %4, align 8, !tbaa !5
  %655 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %654, i32 0, i32 2
  %656 = load double, ptr %655, align 8, !tbaa !59
  %657 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %653, double noundef %656)
  br i1 %657, label %658, label %663

658:                                              ; preds = %650
  %659 = load ptr, ptr %4, align 8, !tbaa !5
  %660 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %659, i32 0, i32 54
  store i64 4, ptr %660, align 8, !tbaa !32
  store i8 0, ptr %14, align 1, !tbaa !56
  %661 = load i8, ptr %14, align 1, !tbaa !56, !range !53, !noundef !54
  %662 = trunc i8 %661 to i1
  store i1 %662, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %1983

663:                                              ; preds = %650
  %664 = load ptr, ptr %4, align 8, !tbaa !5
  %665 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %664, i32 0, i32 20
  %666 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %665, i32 0, i32 4
  %667 = load ptr, ptr %666, align 8, !tbaa !26
  %668 = getelementptr inbounds double, ptr %667, i64 0
  %669 = load ptr, ptr %4, align 8, !tbaa !5
  %670 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %669, i32 0, i32 45
  %671 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %670, i32 0, i32 4
  %672 = load ptr, ptr %671, align 8, !tbaa !26
  %673 = getelementptr inbounds double, ptr %672, i64 0
  %674 = load i64, ptr %6, align 8, !tbaa !27
  %675 = sub nsw i64 %674, 1
  %676 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %675)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %668, i64 noundef 1, ptr noundef %673, i64 noundef 1, i64 noundef %676)
  %677 = load ptr, ptr %4, align 8, !tbaa !5
  %678 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %677, i32 0, i32 26
  %679 = load i64, ptr %678, align 8, !tbaa !60
  %680 = icmp eq i64 %679, 0
  br i1 %680, label %681, label %721

681:                                              ; preds = %663
  %682 = load ptr, ptr %4, align 8, !tbaa !5
  %683 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %682, i32 0, i32 45
  %684 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %683, i32 0, i32 4
  %685 = load ptr, ptr %684, align 8, !tbaa !26
  %686 = getelementptr inbounds double, ptr %685, i64 0
  %687 = load ptr, ptr %4, align 8, !tbaa !5
  %688 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %687, i32 0, i32 45
  %689 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %688, i32 0, i32 4
  %690 = load ptr, ptr %689, align 8, !tbaa !26
  %691 = getelementptr inbounds double, ptr %690, i64 0
  %692 = load i64, ptr %6, align 8, !tbaa !27
  %693 = sub nsw i64 %692, 1
  %694 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %693)
  %695 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %686, i64 noundef 1, ptr noundef %691, i64 noundef 1, i64 noundef %694)
  store double %695, ptr %12, align 8, !tbaa !28
  %696 = load double, ptr %12, align 8, !tbaa !28
  %697 = load ptr, ptr %5, align 8, !tbaa !5
  %698 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %696, ptr noundef %697)
  store double %698, ptr %12, align 8, !tbaa !28
  %699 = load ptr, ptr %4, align 8, !tbaa !5
  %700 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %699, i32 0, i32 7
  %701 = load double, ptr %700, align 8, !tbaa !61
  %702 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %701, double noundef 0.000000e+00)
  br i1 %702, label %703, label %710

703:                                              ; preds = %681
  %704 = load double, ptr %12, align 8, !tbaa !28
  %705 = fdiv double 1.000000e+00, %704
  %706 = load ptr, ptr %5, align 8, !tbaa !5
  %707 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %705, double noundef 1.000000e+00, ptr noundef %706)
  %708 = load ptr, ptr %4, align 8, !tbaa !5
  %709 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %708, i32 0, i32 21
  store double %707, ptr %709, align 8, !tbaa !38
  br label %720

710:                                              ; preds = %681
  %711 = load double, ptr %12, align 8, !tbaa !28
  %712 = fdiv double 1.000000e+00, %711
  %713 = load ptr, ptr %4, align 8, !tbaa !5
  %714 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %713, i32 0, i32 7
  %715 = load double, ptr %714, align 8, !tbaa !61
  %716 = load ptr, ptr %5, align 8, !tbaa !5
  %717 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %712, double noundef %715, ptr noundef %716)
  %718 = load ptr, ptr %4, align 8, !tbaa !5
  %719 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %718, i32 0, i32 21
  store double %717, ptr %719, align 8, !tbaa !38
  br label %720

720:                                              ; preds = %710, %703
  br label %721

721:                                              ; preds = %720, %663
  %722 = load ptr, ptr %4, align 8, !tbaa !5
  %723 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %722, i32 0, i32 26
  %724 = load i64, ptr %723, align 8, !tbaa !60
  %725 = icmp eq i64 %724, 1
  br i1 %725, label %726, label %737

726:                                              ; preds = %721
  %727 = load ptr, ptr %4, align 8, !tbaa !5
  %728 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %727, i32 0, i32 28
  %729 = load i64, ptr %6, align 8, !tbaa !27
  %730 = load ptr, ptr %4, align 8, !tbaa !5
  %731 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %730, i32 0, i32 20
  %732 = load ptr, ptr %4, align 8, !tbaa !5
  %733 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %732, i32 0, i32 41
  %734 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl17fblscholeskysolveEPNS_9ae_matrixEdlbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %728, double noundef 1.000000e+00, i64 noundef %729, i1 noundef zeroext true, ptr noundef %731, ptr noundef %733, ptr noundef %734)
  %735 = load ptr, ptr %4, align 8, !tbaa !5
  %736 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %735, i32 0, i32 21
  store double 1.000000e+00, ptr %736, align 8, !tbaa !38
  br label %737

737:                                              ; preds = %726, %721
  %738 = load ptr, ptr %4, align 8, !tbaa !5
  %739 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %738, i32 0, i32 26
  %740 = load i64, ptr %739, align 8, !tbaa !60
  %741 = icmp eq i64 %740, 2
  br i1 %741, label %742, label %776

742:                                              ; preds = %737
  store i64 0, ptr %8, align 8, !tbaa !27
  br label %743

743:                                              ; preds = %770, %742
  %744 = load i64, ptr %8, align 8, !tbaa !27
  %745 = load i64, ptr %6, align 8, !tbaa !27
  %746 = sub nsw i64 %745, 1
  %747 = icmp sle i64 %744, %746
  br i1 %747, label %748, label %773

748:                                              ; preds = %743
  %749 = load ptr, ptr %4, align 8, !tbaa !5
  %750 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %749, i32 0, i32 20
  %751 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %750, i32 0, i32 4
  %752 = load ptr, ptr %751, align 8, !tbaa !26
  %753 = load i64, ptr %8, align 8, !tbaa !27
  %754 = getelementptr inbounds double, ptr %752, i64 %753
  %755 = load double, ptr %754, align 8, !tbaa !28
  %756 = load ptr, ptr %4, align 8, !tbaa !5
  %757 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %756, i32 0, i32 29
  %758 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %757, i32 0, i32 4
  %759 = load ptr, ptr %758, align 8, !tbaa !26
  %760 = load i64, ptr %8, align 8, !tbaa !27
  %761 = getelementptr inbounds double, ptr %759, i64 %760
  %762 = load double, ptr %761, align 8, !tbaa !28
  %763 = fdiv double %755, %762
  %764 = load ptr, ptr %4, align 8, !tbaa !5
  %765 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %764, i32 0, i32 20
  %766 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %765, i32 0, i32 4
  %767 = load ptr, ptr %766, align 8, !tbaa !26
  %768 = load i64, ptr %8, align 8, !tbaa !27
  %769 = getelementptr inbounds double, ptr %767, i64 %768
  store double %763, ptr %769, align 8, !tbaa !28
  br label %770

770:                                              ; preds = %748
  %771 = load i64, ptr %8, align 8, !tbaa !27
  %772 = add nsw i64 %771, 1
  store i64 %772, ptr %8, align 8, !tbaa !27
  br label %743, !llvm.loop !62

773:                                              ; preds = %743
  %774 = load ptr, ptr %4, align 8, !tbaa !5
  %775 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %774, i32 0, i32 21
  store double 1.000000e+00, ptr %775, align 8, !tbaa !38
  br label %776

776:                                              ; preds = %773, %737
  %777 = load ptr, ptr %4, align 8, !tbaa !5
  %778 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %777, i32 0, i32 26
  %779 = load i64, ptr %778, align 8, !tbaa !60
  %780 = icmp eq i64 %779, 3
  br i1 %780, label %781, label %823

781:                                              ; preds = %776
  store i64 0, ptr %8, align 8, !tbaa !27
  br label %782

782:                                              ; preds = %817, %781
  %783 = load i64, ptr %8, align 8, !tbaa !27
  %784 = load i64, ptr %6, align 8, !tbaa !27
  %785 = sub nsw i64 %784, 1
  %786 = icmp sle i64 %783, %785
  br i1 %786, label %787, label %820

787:                                              ; preds = %782
  %788 = load ptr, ptr %4, align 8, !tbaa !5
  %789 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %788, i32 0, i32 20
  %790 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %789, i32 0, i32 4
  %791 = load ptr, ptr %790, align 8, !tbaa !26
  %792 = load i64, ptr %8, align 8, !tbaa !27
  %793 = getelementptr inbounds double, ptr %791, i64 %792
  %794 = load double, ptr %793, align 8, !tbaa !28
  %795 = load ptr, ptr %4, align 8, !tbaa !5
  %796 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %795, i32 0, i32 8
  %797 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %796, i32 0, i32 4
  %798 = load ptr, ptr %797, align 8, !tbaa !26
  %799 = load i64, ptr %8, align 8, !tbaa !27
  %800 = getelementptr inbounds double, ptr %798, i64 %799
  %801 = load double, ptr %800, align 8, !tbaa !28
  %802 = fmul double %794, %801
  %803 = load ptr, ptr %4, align 8, !tbaa !5
  %804 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %803, i32 0, i32 8
  %805 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %804, i32 0, i32 4
  %806 = load ptr, ptr %805, align 8, !tbaa !26
  %807 = load i64, ptr %8, align 8, !tbaa !27
  %808 = getelementptr inbounds double, ptr %806, i64 %807
  %809 = load double, ptr %808, align 8, !tbaa !28
  %810 = fmul double %802, %809
  %811 = load ptr, ptr %4, align 8, !tbaa !5
  %812 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %811, i32 0, i32 20
  %813 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %812, i32 0, i32 4
  %814 = load ptr, ptr %813, align 8, !tbaa !26
  %815 = load i64, ptr %8, align 8, !tbaa !27
  %816 = getelementptr inbounds double, ptr %814, i64 %815
  store double %810, ptr %816, align 8, !tbaa !28
  br label %817

817:                                              ; preds = %787
  %818 = load i64, ptr %8, align 8, !tbaa !27
  %819 = add nsw i64 %818, 1
  store i64 %819, ptr %8, align 8, !tbaa !27
  br label %782, !llvm.loop !63

820:                                              ; preds = %782
  %821 = load ptr, ptr %4, align 8, !tbaa !5
  %822 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %821, i32 0, i32 21
  store double 1.000000e+00, ptr %822, align 8, !tbaa !38
  br label %823

823:                                              ; preds = %820, %776
  %824 = load ptr, ptr %4, align 8, !tbaa !5
  %825 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %824, i32 0, i32 26
  %826 = load i64, ptr %825, align 8, !tbaa !60
  %827 = icmp eq i64 %826, 4
  br i1 %827, label %828, label %846

828:                                              ; preds = %823
  %829 = load ptr, ptr %4, align 8, !tbaa !5
  %830 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %829, i32 0, i32 20
  %831 = load i64, ptr %6, align 8, !tbaa !27
  %832 = load ptr, ptr %4, align 8, !tbaa !5
  %833 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %832, i32 0, i32 31
  %834 = load ptr, ptr %4, align 8, !tbaa !5
  %835 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %834, i32 0, i32 30
  %836 = load ptr, ptr %4, align 8, !tbaa !5
  %837 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %836, i32 0, i32 32
  %838 = load ptr, ptr %4, align 8, !tbaa !5
  %839 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %838, i32 0, i32 33
  %840 = load i64, ptr %839, align 8, !tbaa !64
  %841 = load ptr, ptr %4, align 8, !tbaa !5
  %842 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %841, i32 0, i32 34
  %843 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl26inexactlbfgspreconditionerEPNS_9ae_vectorElS1_S1_PNS_9ae_matrixElPNS_12precbuflbfgsEPNS_8ae_stateE(ptr noundef %830, i64 noundef %831, ptr noundef %833, ptr noundef %835, ptr noundef %837, i64 noundef %840, ptr noundef %842, ptr noundef %843)
  %844 = load ptr, ptr %4, align 8, !tbaa !5
  %845 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %844, i32 0, i32 21
  store double 1.000000e+00, ptr %845, align 8, !tbaa !38
  br label %846

846:                                              ; preds = %828, %823
  %847 = load ptr, ptr %4, align 8, !tbaa !5
  %848 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %847, i32 0, i32 26
  %849 = load i64, ptr %848, align 8, !tbaa !60
  %850 = icmp eq i64 %849, 5
  br i1 %850, label %851, label %859

851:                                              ; preds = %846
  %852 = load ptr, ptr %4, align 8, !tbaa !5
  %853 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %852, i32 0, i32 20
  %854 = load ptr, ptr %4, align 8, !tbaa !5
  %855 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %854, i32 0, i32 35
  %856 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl26applylowrankpreconditionerEPNS_9ae_vectorEPNS_14precbuflowrankEPNS_8ae_stateE(ptr noundef %853, ptr noundef %855, ptr noundef %856)
  %857 = load ptr, ptr %4, align 8, !tbaa !5
  %858 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %857, i32 0, i32 21
  store double 1.000000e+00, ptr %858, align 8, !tbaa !38
  br label %859

859:                                              ; preds = %851, %846
  %860 = load ptr, ptr %4, align 8, !tbaa !5
  %861 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %860, i32 0, i32 12
  store i64 0, ptr %861, align 8, !tbaa !65
  br label %862

862:                                              ; preds = %1920, %859
  %863 = load ptr, ptr %4, align 8, !tbaa !5
  %864 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %863, i32 0, i32 12
  %865 = load i64, ptr %864, align 8, !tbaa !65
  %866 = load i64, ptr %7, align 8, !tbaa !27
  %867 = srem i64 %865, %866
  %868 = load ptr, ptr %4, align 8, !tbaa !5
  %869 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %868, i32 0, i32 14
  store i64 %867, ptr %869, align 8, !tbaa !66
  %870 = load ptr, ptr %4, align 8, !tbaa !5
  %871 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %870, i32 0, i32 12
  %872 = load i64, ptr %871, align 8, !tbaa !65
  %873 = load i64, ptr %7, align 8, !tbaa !27
  %874 = sub nsw i64 %873, 1
  %875 = load ptr, ptr %5, align 8, !tbaa !5
  %876 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %872, i64 noundef %874, ptr noundef %875)
  %877 = load ptr, ptr %4, align 8, !tbaa !5
  %878 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %877, i32 0, i32 13
  store i64 %876, ptr %878, align 8, !tbaa !67
  %879 = load ptr, ptr %4, align 8, !tbaa !5
  %880 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %879, i32 0, i32 18
  %881 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %880, i32 0, i32 4
  %882 = load ptr, ptr %881, align 8, !tbaa !26
  %883 = getelementptr inbounds double, ptr %882, i64 0
  %884 = load ptr, ptr %4, align 8, !tbaa !5
  %885 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %884, i32 0, i32 43
  %886 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %885, i32 0, i32 4
  %887 = load ptr, ptr %886, align 8, !tbaa !26
  %888 = getelementptr inbounds double, ptr %887, i64 0
  %889 = load i64, ptr %6, align 8, !tbaa !27
  %890 = sub nsw i64 %889, 1
  %891 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %890)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %883, i64 noundef 1, ptr noundef %888, i64 noundef 1, i64 noundef %891)
  %892 = load ptr, ptr %4, align 8, !tbaa !5
  %893 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %892, i32 0, i32 17
  %894 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %893, i32 0, i32 6
  %895 = load ptr, ptr %894, align 8, !tbaa !26
  %896 = load ptr, ptr %4, align 8, !tbaa !5
  %897 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %896, i32 0, i32 14
  %898 = load i64, ptr %897, align 8, !tbaa !66
  %899 = getelementptr inbounds ptr, ptr %895, i64 %898
  %900 = load ptr, ptr %899, align 8, !tbaa !5
  %901 = getelementptr inbounds double, ptr %900, i64 0
  %902 = load ptr, ptr %4, align 8, !tbaa !5
  %903 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %902, i32 0, i32 43
  %904 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %903, i32 0, i32 4
  %905 = load ptr, ptr %904, align 8, !tbaa !26
  %906 = getelementptr inbounds double, ptr %905, i64 0
  %907 = load i64, ptr %6, align 8, !tbaa !27
  %908 = sub nsw i64 %907, 1
  %909 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %908)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %901, i64 noundef 1, ptr noundef %906, i64 noundef 1, i64 noundef %909)
  %910 = load ptr, ptr %4, align 8, !tbaa !5
  %911 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %910, i32 0, i32 16
  %912 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %911, i32 0, i32 6
  %913 = load ptr, ptr %912, align 8, !tbaa !26
  %914 = load ptr, ptr %4, align 8, !tbaa !5
  %915 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %914, i32 0, i32 14
  %916 = load i64, ptr %915, align 8, !tbaa !66
  %917 = getelementptr inbounds ptr, ptr %913, i64 %916
  %918 = load ptr, ptr %917, align 8, !tbaa !5
  %919 = getelementptr inbounds double, ptr %918, i64 0
  %920 = load ptr, ptr %4, align 8, !tbaa !5
  %921 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %920, i32 0, i32 45
  %922 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %921, i32 0, i32 4
  %923 = load ptr, ptr %922, align 8, !tbaa !26
  %924 = getelementptr inbounds double, ptr %923, i64 0
  %925 = load i64, ptr %6, align 8, !tbaa !27
  %926 = sub nsw i64 %925, 1
  %927 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %926)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %919, i64 noundef 1, ptr noundef %924, i64 noundef 1, i64 noundef %927)
  %928 = load ptr, ptr %4, align 8, !tbaa !5
  %929 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %928, i32 0, i32 11
  store i64 0, ptr %929, align 8, !tbaa !68
  %930 = load ptr, ptr %4, align 8, !tbaa !5
  %931 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %930, i32 0, i32 12
  %932 = load i64, ptr %931, align 8, !tbaa !65
  %933 = icmp ne i64 %932, 0
  br i1 %933, label %934, label %937

934:                                              ; preds = %862
  %935 = load ptr, ptr %4, align 8, !tbaa !5
  %936 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %935, i32 0, i32 21
  store double 1.000000e+00, ptr %936, align 8, !tbaa !38
  br label %937

937:                                              ; preds = %934, %862
  %938 = load ptr, ptr %4, align 8, !tbaa !5
  %939 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %938, i32 0, i32 20
  %940 = load ptr, ptr %4, align 8, !tbaa !5
  %941 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %940, i32 0, i32 21
  %942 = load i64, ptr %6, align 8, !tbaa !27
  %943 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl16linminnormalizedEPNS_9ae_vectorEPdlPNS_8ae_stateE(ptr noundef %939, ptr noundef %941, i64 noundef %942, ptr noundef %943)
  %944 = load ptr, ptr %4, align 8, !tbaa !5
  %945 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %944, i32 0, i32 57
  %946 = load ptr, ptr %4, align 8, !tbaa !5
  %947 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %946, i32 0, i32 8
  %948 = load ptr, ptr %4, align 8, !tbaa !5
  %949 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %948, i32 0, i32 42
  %950 = load ptr, ptr %4, align 8, !tbaa !5
  %951 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %950, i32 0, i32 43
  %952 = load ptr, ptr %4, align 8, !tbaa !5
  %953 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %952, i32 0, i32 44
  %954 = load double, ptr %953, align 8, !tbaa !43
  %955 = load ptr, ptr %4, align 8, !tbaa !5
  %956 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %955, i32 0, i32 45
  %957 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl34smoothnessmonitorstartlinesearch1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_PNS_8ae_stateE(ptr noundef %945, ptr noundef %947, ptr noundef %949, ptr noundef %951, double noundef %954, ptr noundef %956, ptr noundef %957)
  %958 = load i64, ptr %6, align 8, !tbaa !27
  %959 = load ptr, ptr %4, align 8, !tbaa !5
  %960 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %959, i32 0, i32 43
  %961 = load ptr, ptr %4, align 8, !tbaa !5
  %962 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %961, i32 0, i32 44
  %963 = load ptr, ptr %4, align 8, !tbaa !5
  %964 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %963, i32 0, i32 45
  %965 = load ptr, ptr %4, align 8, !tbaa !5
  %966 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %965, i32 0, i32 20
  %967 = load ptr, ptr %4, align 8, !tbaa !5
  %968 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %967, i32 0, i32 21
  %969 = load ptr, ptr %4, align 8, !tbaa !5
  %970 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %969, i32 0, i32 7
  %971 = load double, ptr %970, align 8, !tbaa !61
  %972 = load double, ptr @_ZN11alglib_implL13minlbfgs_gtolE, align 8, !tbaa !28
  %973 = load ptr, ptr %4, align 8, !tbaa !5
  %974 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %973, i32 0, i32 10
  %975 = load ptr, ptr %4, align 8, !tbaa !5
  %976 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %975, i32 0, i32 22
  %977 = load ptr, ptr %4, align 8, !tbaa !5
  %978 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %977, i32 0, i32 55
  %979 = load ptr, ptr %4, align 8, !tbaa !5
  %980 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %979, i32 0, i32 11
  %981 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_S1_S2_ddPlS3_S1_PNS_11linminstateES3_PNS_8ae_stateE(i64 noundef %958, ptr noundef %960, ptr noundef %962, ptr noundef %964, ptr noundef %966, ptr noundef %968, double noundef %971, double noundef %972, ptr noundef %11, ptr noundef %974, ptr noundef %976, ptr noundef %978, ptr noundef %980, ptr noundef %981)
  br label %982

982:                                              ; preds = %1195, %937
  %983 = load ptr, ptr %4, align 8, !tbaa !5
  %984 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %983, i32 0, i32 11
  %985 = load i64, ptr %984, align 8, !tbaa !68
  %986 = icmp eq i64 %985, 0
  br i1 %986, label %987, label %988

987:                                              ; preds = %982
  br label %1248

988:                                              ; preds = %982
  %989 = load ptr, ptr %4, align 8, !tbaa !5
  %990 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %989, ptr noundef %990)
  %991 = load ptr, ptr %4, align 8, !tbaa !5
  %992 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %991, i32 0, i32 9
  %993 = load double, ptr %992, align 8, !tbaa !39
  %994 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %993, double noundef 0.000000e+00)
  br i1 %994, label %995, label %996

995:                                              ; preds = %988
  br label %1005

996:                                              ; preds = %988
  %997 = load ptr, ptr %4, align 8, !tbaa !5
  %998 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %997, i32 0, i32 47
  store i8 1, ptr %998, align 1, !tbaa !42
  %999 = load ptr, ptr %4, align 8, !tbaa !5
  %1000 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %999, i32 0, i32 51
  %1001 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1000, i32 0, i32 0
  store i32 8, ptr %1001, align 8, !tbaa !9
  br label %1924

1002:                                             ; preds = %141
  %1003 = load ptr, ptr %4, align 8, !tbaa !5
  %1004 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1003, i32 0, i32 47
  store i8 0, ptr %1004, align 1, !tbaa !42
  br label %1195

1005:                                             ; preds = %995
  %1006 = load ptr, ptr %4, align 8, !tbaa !5
  %1007 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1006, i32 0, i32 46
  store i8 1, ptr %1007, align 8, !tbaa !46
  %1008 = load ptr, ptr %4, align 8, !tbaa !5
  %1009 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1008, i32 0, i32 51
  %1010 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1009, i32 0, i32 0
  store i32 9, ptr %1010, align 8, !tbaa !9
  br label %1924

1011:                                             ; preds = %148
  %1012 = load ptr, ptr %4, align 8, !tbaa !5
  %1013 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1012, i32 0, i32 44
  %1014 = load double, ptr %1013, align 8, !tbaa !43
  %1015 = load ptr, ptr %4, align 8, !tbaa !5
  %1016 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1015, i32 0, i32 36
  store double %1014, ptr %1016, align 8, !tbaa !47
  store i64 0, ptr %8, align 8, !tbaa !27
  br label %1017

1017:                                             ; preds = %1137, %1011
  %1018 = load i64, ptr %8, align 8, !tbaa !27
  %1019 = load i64, ptr %6, align 8, !tbaa !27
  %1020 = sub nsw i64 %1019, 1
  %1021 = icmp sgt i64 %1018, %1020
  br i1 %1021, label %1022, label %1023

1022:                                             ; preds = %1017
  br label %1187

1023:                                             ; preds = %1017
  %1024 = load ptr, ptr %4, align 8, !tbaa !5
  %1025 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1024, i32 0, i32 43
  %1026 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1025, i32 0, i32 4
  %1027 = load ptr, ptr %1026, align 8, !tbaa !26
  %1028 = load i64, ptr %8, align 8, !tbaa !27
  %1029 = getelementptr inbounds double, ptr %1027, i64 %1028
  %1030 = load double, ptr %1029, align 8, !tbaa !28
  store double %1030, ptr %12, align 8, !tbaa !28
  %1031 = load double, ptr %12, align 8, !tbaa !28
  %1032 = load ptr, ptr %4, align 8, !tbaa !5
  %1033 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1032, i32 0, i32 9
  %1034 = load double, ptr %1033, align 8, !tbaa !39
  %1035 = load ptr, ptr %4, align 8, !tbaa !5
  %1036 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1035, i32 0, i32 8
  %1037 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1036, i32 0, i32 4
  %1038 = load ptr, ptr %1037, align 8, !tbaa !26
  %1039 = load i64, ptr %8, align 8, !tbaa !27
  %1040 = getelementptr inbounds double, ptr %1038, i64 %1039
  %1041 = load double, ptr %1040, align 8, !tbaa !28
  %1042 = fneg double %1034
  %1043 = call double @llvm.fmuladd.f64(double %1042, double %1041, double %1031)
  %1044 = load ptr, ptr %4, align 8, !tbaa !5
  %1045 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1044, i32 0, i32 43
  %1046 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1045, i32 0, i32 4
  %1047 = load ptr, ptr %1046, align 8, !tbaa !26
  %1048 = load i64, ptr %8, align 8, !tbaa !27
  %1049 = getelementptr inbounds double, ptr %1047, i64 %1048
  store double %1043, ptr %1049, align 8, !tbaa !28
  %1050 = load ptr, ptr %4, align 8, !tbaa !5
  %1051 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1050, i32 0, i32 51
  %1052 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1051, i32 0, i32 0
  store i32 10, ptr %1052, align 8, !tbaa !9
  br label %1924

1053:                                             ; preds = %155
  %1054 = load ptr, ptr %4, align 8, !tbaa !5
  %1055 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1054, i32 0, i32 44
  %1056 = load double, ptr %1055, align 8, !tbaa !43
  %1057 = load ptr, ptr %4, align 8, !tbaa !5
  %1058 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1057, i32 0, i32 37
  store double %1056, ptr %1058, align 8, !tbaa !48
  %1059 = load double, ptr %12, align 8, !tbaa !28
  %1060 = load ptr, ptr %4, align 8, !tbaa !5
  %1061 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1060, i32 0, i32 9
  %1062 = load double, ptr %1061, align 8, !tbaa !39
  %1063 = fmul double 5.000000e-01, %1062
  %1064 = load ptr, ptr %4, align 8, !tbaa !5
  %1065 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1064, i32 0, i32 8
  %1066 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1065, i32 0, i32 4
  %1067 = load ptr, ptr %1066, align 8, !tbaa !26
  %1068 = load i64, ptr %8, align 8, !tbaa !27
  %1069 = getelementptr inbounds double, ptr %1067, i64 %1068
  %1070 = load double, ptr %1069, align 8, !tbaa !28
  %1071 = fneg double %1063
  %1072 = call double @llvm.fmuladd.f64(double %1071, double %1070, double %1059)
  %1073 = load ptr, ptr %4, align 8, !tbaa !5
  %1074 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1073, i32 0, i32 43
  %1075 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1074, i32 0, i32 4
  %1076 = load ptr, ptr %1075, align 8, !tbaa !26
  %1077 = load i64, ptr %8, align 8, !tbaa !27
  %1078 = getelementptr inbounds double, ptr %1076, i64 %1077
  store double %1072, ptr %1078, align 8, !tbaa !28
  %1079 = load ptr, ptr %4, align 8, !tbaa !5
  %1080 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1079, i32 0, i32 51
  %1081 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1080, i32 0, i32 0
  store i32 11, ptr %1081, align 8, !tbaa !9
  br label %1924

1082:                                             ; preds = %162
  %1083 = load ptr, ptr %4, align 8, !tbaa !5
  %1084 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1083, i32 0, i32 44
  %1085 = load double, ptr %1084, align 8, !tbaa !43
  %1086 = load ptr, ptr %4, align 8, !tbaa !5
  %1087 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1086, i32 0, i32 38
  store double %1085, ptr %1087, align 8, !tbaa !49
  %1088 = load double, ptr %12, align 8, !tbaa !28
  %1089 = load ptr, ptr %4, align 8, !tbaa !5
  %1090 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1089, i32 0, i32 9
  %1091 = load double, ptr %1090, align 8, !tbaa !39
  %1092 = fmul double 5.000000e-01, %1091
  %1093 = load ptr, ptr %4, align 8, !tbaa !5
  %1094 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1093, i32 0, i32 8
  %1095 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1094, i32 0, i32 4
  %1096 = load ptr, ptr %1095, align 8, !tbaa !26
  %1097 = load i64, ptr %8, align 8, !tbaa !27
  %1098 = getelementptr inbounds double, ptr %1096, i64 %1097
  %1099 = load double, ptr %1098, align 8, !tbaa !28
  %1100 = call double @llvm.fmuladd.f64(double %1092, double %1099, double %1088)
  %1101 = load ptr, ptr %4, align 8, !tbaa !5
  %1102 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1101, i32 0, i32 43
  %1103 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1102, i32 0, i32 4
  %1104 = load ptr, ptr %1103, align 8, !tbaa !26
  %1105 = load i64, ptr %8, align 8, !tbaa !27
  %1106 = getelementptr inbounds double, ptr %1104, i64 %1105
  store double %1100, ptr %1106, align 8, !tbaa !28
  %1107 = load ptr, ptr %4, align 8, !tbaa !5
  %1108 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1107, i32 0, i32 51
  %1109 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1108, i32 0, i32 0
  store i32 12, ptr %1109, align 8, !tbaa !9
  br label %1924

1110:                                             ; preds = %169
  %1111 = load ptr, ptr %4, align 8, !tbaa !5
  %1112 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1111, i32 0, i32 44
  %1113 = load double, ptr %1112, align 8, !tbaa !43
  %1114 = load ptr, ptr %4, align 8, !tbaa !5
  %1115 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1114, i32 0, i32 39
  store double %1113, ptr %1115, align 8, !tbaa !50
  %1116 = load double, ptr %12, align 8, !tbaa !28
  %1117 = load ptr, ptr %4, align 8, !tbaa !5
  %1118 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1117, i32 0, i32 9
  %1119 = load double, ptr %1118, align 8, !tbaa !39
  %1120 = load ptr, ptr %4, align 8, !tbaa !5
  %1121 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1120, i32 0, i32 8
  %1122 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1121, i32 0, i32 4
  %1123 = load ptr, ptr %1122, align 8, !tbaa !26
  %1124 = load i64, ptr %8, align 8, !tbaa !27
  %1125 = getelementptr inbounds double, ptr %1123, i64 %1124
  %1126 = load double, ptr %1125, align 8, !tbaa !28
  %1127 = call double @llvm.fmuladd.f64(double %1119, double %1126, double %1116)
  %1128 = load ptr, ptr %4, align 8, !tbaa !5
  %1129 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1128, i32 0, i32 43
  %1130 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1129, i32 0, i32 4
  %1131 = load ptr, ptr %1130, align 8, !tbaa !26
  %1132 = load i64, ptr %8, align 8, !tbaa !27
  %1133 = getelementptr inbounds double, ptr %1131, i64 %1132
  store double %1127, ptr %1133, align 8, !tbaa !28
  %1134 = load ptr, ptr %4, align 8, !tbaa !5
  %1135 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1134, i32 0, i32 51
  %1136 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1135, i32 0, i32 0
  store i32 13, ptr %1136, align 8, !tbaa !9
  br label %1924

1137:                                             ; preds = %176
  %1138 = load ptr, ptr %4, align 8, !tbaa !5
  %1139 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1138, i32 0, i32 44
  %1140 = load double, ptr %1139, align 8, !tbaa !43
  %1141 = load ptr, ptr %4, align 8, !tbaa !5
  %1142 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1141, i32 0, i32 40
  store double %1140, ptr %1142, align 8, !tbaa !51
  %1143 = load double, ptr %12, align 8, !tbaa !28
  %1144 = load ptr, ptr %4, align 8, !tbaa !5
  %1145 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1144, i32 0, i32 43
  %1146 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1145, i32 0, i32 4
  %1147 = load ptr, ptr %1146, align 8, !tbaa !26
  %1148 = load i64, ptr %8, align 8, !tbaa !27
  %1149 = getelementptr inbounds double, ptr %1147, i64 %1148
  store double %1143, ptr %1149, align 8, !tbaa !28
  %1150 = load ptr, ptr %4, align 8, !tbaa !5
  %1151 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1150, i32 0, i32 39
  %1152 = load double, ptr %1151, align 8, !tbaa !50
  %1153 = load ptr, ptr %4, align 8, !tbaa !5
  %1154 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1153, i32 0, i32 38
  %1155 = load double, ptr %1154, align 8, !tbaa !49
  %1156 = fsub double %1152, %1155
  %1157 = load ptr, ptr %4, align 8, !tbaa !5
  %1158 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1157, i32 0, i32 40
  %1159 = load double, ptr %1158, align 8, !tbaa !51
  %1160 = load ptr, ptr %4, align 8, !tbaa !5
  %1161 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1160, i32 0, i32 37
  %1162 = load double, ptr %1161, align 8, !tbaa !48
  %1163 = fsub double %1159, %1162
  %1164 = fneg double %1163
  %1165 = call double @llvm.fmuladd.f64(double 8.000000e+00, double %1156, double %1164)
  %1166 = load ptr, ptr %4, align 8, !tbaa !5
  %1167 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1166, i32 0, i32 9
  %1168 = load double, ptr %1167, align 8, !tbaa !39
  %1169 = fmul double 6.000000e+00, %1168
  %1170 = load ptr, ptr %4, align 8, !tbaa !5
  %1171 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1170, i32 0, i32 8
  %1172 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1171, i32 0, i32 4
  %1173 = load ptr, ptr %1172, align 8, !tbaa !26
  %1174 = load i64, ptr %8, align 8, !tbaa !27
  %1175 = getelementptr inbounds double, ptr %1173, i64 %1174
  %1176 = load double, ptr %1175, align 8, !tbaa !28
  %1177 = fmul double %1169, %1176
  %1178 = fdiv double %1165, %1177
  %1179 = load ptr, ptr %4, align 8, !tbaa !5
  %1180 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1179, i32 0, i32 45
  %1181 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1180, i32 0, i32 4
  %1182 = load ptr, ptr %1181, align 8, !tbaa !26
  %1183 = load i64, ptr %8, align 8, !tbaa !27
  %1184 = getelementptr inbounds double, ptr %1182, i64 %1183
  store double %1178, ptr %1184, align 8, !tbaa !28
  %1185 = load i64, ptr %8, align 8, !tbaa !27
  %1186 = add nsw i64 %1185, 1
  store i64 %1186, ptr %8, align 8, !tbaa !27
  br label %1017

1187:                                             ; preds = %1022
  %1188 = load ptr, ptr %4, align 8, !tbaa !5
  %1189 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1188, i32 0, i32 36
  %1190 = load double, ptr %1189, align 8, !tbaa !47
  %1191 = load ptr, ptr %4, align 8, !tbaa !5
  %1192 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1191, i32 0, i32 44
  store double %1190, ptr %1192, align 8, !tbaa !43
  %1193 = load ptr, ptr %4, align 8, !tbaa !5
  %1194 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1193, i32 0, i32 46
  store i8 0, ptr %1194, align 8, !tbaa !46
  br label %1195

1195:                                             ; preds = %1187, %1002
  %1196 = load ptr, ptr %4, align 8, !tbaa !5
  %1197 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1196, i32 0, i32 57
  %1198 = load ptr, ptr %4, align 8, !tbaa !5
  %1199 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1198, i32 0, i32 8
  %1200 = load ptr, ptr %4, align 8, !tbaa !5
  %1201 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1200, i32 0, i32 42
  %1202 = load ptr, ptr %4, align 8, !tbaa !5
  %1203 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1202, i32 0, i32 20
  %1204 = load ptr, ptr %4, align 8, !tbaa !5
  %1205 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1204, i32 0, i32 21
  %1206 = load double, ptr %1205, align 8, !tbaa !38
  %1207 = load ptr, ptr %4, align 8, !tbaa !5
  %1208 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1207, i32 0, i32 43
  %1209 = load ptr, ptr %4, align 8, !tbaa !5
  %1210 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1209, i32 0, i32 44
  %1211 = load double, ptr %1210, align 8, !tbaa !43
  %1212 = load ptr, ptr %4, align 8, !tbaa !5
  %1213 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1212, i32 0, i32 45
  %1214 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl31smoothnessmonitorenqueuepoint1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_dS3_PNS_8ae_stateE(ptr noundef %1197, ptr noundef %1199, ptr noundef %1201, ptr noundef %1203, double noundef %1206, ptr noundef %1208, double noundef %1211, ptr noundef %1213, ptr noundef %1214)
  %1215 = load ptr, ptr %4, align 8, !tbaa !5
  %1216 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1215, i32 0, i32 44
  %1217 = load ptr, ptr %4, align 8, !tbaa !5
  %1218 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1217, i32 0, i32 45
  %1219 = load i64, ptr %6, align 8, !tbaa !27
  %1220 = load ptr, ptr %4, align 8, !tbaa !5
  %1221 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1220, i32 0, i32 24
  %1222 = load double, ptr %1221, align 8, !tbaa !69
  %1223 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl12trimfunctionEPdPNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef %1216, ptr noundef %1218, i64 noundef %1219, double noundef %1222, ptr noundef %1223)
  %1224 = load i64, ptr %6, align 8, !tbaa !27
  %1225 = load ptr, ptr %4, align 8, !tbaa !5
  %1226 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1225, i32 0, i32 43
  %1227 = load ptr, ptr %4, align 8, !tbaa !5
  %1228 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1227, i32 0, i32 44
  %1229 = load ptr, ptr %4, align 8, !tbaa !5
  %1230 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1229, i32 0, i32 45
  %1231 = load ptr, ptr %4, align 8, !tbaa !5
  %1232 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1231, i32 0, i32 20
  %1233 = load ptr, ptr %4, align 8, !tbaa !5
  %1234 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1233, i32 0, i32 21
  %1235 = load ptr, ptr %4, align 8, !tbaa !5
  %1236 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1235, i32 0, i32 7
  %1237 = load double, ptr %1236, align 8, !tbaa !61
  %1238 = load double, ptr @_ZN11alglib_implL13minlbfgs_gtolE, align 8, !tbaa !28
  %1239 = load ptr, ptr %4, align 8, !tbaa !5
  %1240 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1239, i32 0, i32 10
  %1241 = load ptr, ptr %4, align 8, !tbaa !5
  %1242 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1241, i32 0, i32 22
  %1243 = load ptr, ptr %4, align 8, !tbaa !5
  %1244 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1243, i32 0, i32 55
  %1245 = load ptr, ptr %4, align 8, !tbaa !5
  %1246 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1245, i32 0, i32 11
  %1247 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_S1_S2_ddPlS3_S1_PNS_11linminstateES3_PNS_8ae_stateE(i64 noundef %1224, ptr noundef %1226, ptr noundef %1228, ptr noundef %1230, ptr noundef %1232, ptr noundef %1234, double noundef %1237, double noundef %1238, ptr noundef %11, ptr noundef %1240, ptr noundef %1242, ptr noundef %1244, ptr noundef %1246, ptr noundef %1247)
  br label %982

1248:                                             ; preds = %987
  %1249 = load ptr, ptr %4, align 8, !tbaa !5
  %1250 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1249, i32 0, i32 57
  %1251 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl35smoothnessmonitorfinalizelinesearchEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef %1250, ptr noundef %1251)
  %1252 = load ptr, ptr %4, align 8, !tbaa !5
  %1253 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1252, i32 0, i32 49
  %1254 = load i8, ptr %1253, align 1, !tbaa !31, !range !53, !noundef !54
  %1255 = trunc i8 %1254 to i1
  br i1 %1255, label %1256, label %1274

1256:                                             ; preds = %1248
  %1257 = load ptr, ptr %4, align 8, !tbaa !5
  %1258 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1257, i32 0, i32 43
  %1259 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1258, i32 0, i32 4
  %1260 = load ptr, ptr %1259, align 8, !tbaa !26
  %1261 = getelementptr inbounds double, ptr %1260, i64 0
  %1262 = load ptr, ptr %4, align 8, !tbaa !5
  %1263 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1262, i32 0, i32 18
  %1264 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1263, i32 0, i32 4
  %1265 = load ptr, ptr %1264, align 8, !tbaa !26
  %1266 = getelementptr inbounds double, ptr %1265, i64 0
  %1267 = load i64, ptr %6, align 8, !tbaa !27
  %1268 = sub nsw i64 %1267, 1
  %1269 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1268)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1261, i64 noundef 1, ptr noundef %1266, i64 noundef 1, i64 noundef %1269)
  %1270 = load ptr, ptr %4, align 8, !tbaa !5
  %1271 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1270, i32 0, i32 54
  store i64 8, ptr %1271, align 8, !tbaa !32
  store i8 0, ptr %14, align 1, !tbaa !56
  %1272 = load i8, ptr %14, align 1, !tbaa !56, !range !53, !noundef !54
  %1273 = trunc i8 %1272 to i1
  store i1 %1273, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %1983

1274:                                             ; preds = %1248
  %1275 = load ptr, ptr %4, align 8, !tbaa !5
  %1276 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1275, i32 0, i32 6
  %1277 = load i8, ptr %1276, align 8, !tbaa !52, !range !53, !noundef !54
  %1278 = trunc i8 %1277 to i1
  br i1 %1278, label %1280, label %1279

1279:                                             ; preds = %1274
  br label %1291

1280:                                             ; preds = %1274
  %1281 = load ptr, ptr %4, align 8, !tbaa !5
  %1282 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %1281, ptr noundef %1282)
  %1283 = load ptr, ptr %4, align 8, !tbaa !5
  %1284 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1283, i32 0, i32 48
  store i8 1, ptr %1284, align 2, !tbaa !55
  %1285 = load ptr, ptr %4, align 8, !tbaa !5
  %1286 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1285, i32 0, i32 51
  %1287 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1286, i32 0, i32 0
  store i32 14, ptr %1287, align 8, !tbaa !9
  br label %1924

1288:                                             ; preds = %183
  %1289 = load ptr, ptr %4, align 8, !tbaa !5
  %1290 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1289, i32 0, i32 48
  store i8 0, ptr %1290, align 2, !tbaa !55
  br label %1291

1291:                                             ; preds = %1288, %1279
  %1292 = load ptr, ptr %4, align 8, !tbaa !5
  %1293 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1292, i32 0, i32 53
  %1294 = load i64, ptr %1293, align 8, !tbaa !34
  %1295 = load ptr, ptr %4, align 8, !tbaa !5
  %1296 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1295, i32 0, i32 10
  %1297 = load i64, ptr %1296, align 8, !tbaa !70
  %1298 = add nsw i64 %1294, %1297
  %1299 = load ptr, ptr %4, align 8, !tbaa !5
  %1300 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1299, i32 0, i32 53
  store i64 %1298, ptr %1300, align 8, !tbaa !34
  %1301 = load ptr, ptr %4, align 8, !tbaa !5
  %1302 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1301, i32 0, i32 52
  %1303 = load i64, ptr %1302, align 8, !tbaa !33
  %1304 = add nsw i64 %1303, 1
  %1305 = load ptr, ptr %4, align 8, !tbaa !5
  %1306 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1305, i32 0, i32 52
  store i64 %1304, ptr %1306, align 8, !tbaa !33
  %1307 = load ptr, ptr %4, align 8, !tbaa !5
  %1308 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1307, i32 0, i32 17
  %1309 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1308, i32 0, i32 6
  %1310 = load ptr, ptr %1309, align 8, !tbaa !26
  %1311 = load ptr, ptr %4, align 8, !tbaa !5
  %1312 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1311, i32 0, i32 14
  %1313 = load i64, ptr %1312, align 8, !tbaa !66
  %1314 = getelementptr inbounds ptr, ptr %1310, i64 %1313
  %1315 = load ptr, ptr %1314, align 8, !tbaa !5
  %1316 = getelementptr inbounds double, ptr %1315, i64 0
  %1317 = load ptr, ptr %4, align 8, !tbaa !5
  %1318 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1317, i32 0, i32 43
  %1319 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1318, i32 0, i32 4
  %1320 = load ptr, ptr %1319, align 8, !tbaa !26
  %1321 = getelementptr inbounds double, ptr %1320, i64 0
  %1322 = load i64, ptr %6, align 8, !tbaa !27
  %1323 = sub nsw i64 %1322, 1
  %1324 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1323)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %1316, i64 noundef 1, ptr noundef %1321, i64 noundef 1, i64 noundef %1324)
  %1325 = load ptr, ptr %4, align 8, !tbaa !5
  %1326 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1325, i32 0, i32 16
  %1327 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1326, i32 0, i32 6
  %1328 = load ptr, ptr %1327, align 8, !tbaa !26
  %1329 = load ptr, ptr %4, align 8, !tbaa !5
  %1330 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1329, i32 0, i32 14
  %1331 = load i64, ptr %1330, align 8, !tbaa !66
  %1332 = getelementptr inbounds ptr, ptr %1328, i64 %1331
  %1333 = load ptr, ptr %1332, align 8, !tbaa !5
  %1334 = getelementptr inbounds double, ptr %1333, i64 0
  %1335 = load ptr, ptr %4, align 8, !tbaa !5
  %1336 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1335, i32 0, i32 45
  %1337 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1336, i32 0, i32 4
  %1338 = load ptr, ptr %1337, align 8, !tbaa !26
  %1339 = getelementptr inbounds double, ptr %1338, i64 0
  %1340 = load i64, ptr %6, align 8, !tbaa !27
  %1341 = sub nsw i64 %1340, 1
  %1342 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1341)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %1334, i64 noundef 1, ptr noundef %1339, i64 noundef 1, i64 noundef %1342)
  store double 0.000000e+00, ptr %12, align 8, !tbaa !28
  store i64 0, ptr %8, align 8, !tbaa !27
  br label %1343

1343:                                             ; preds = %1368, %1291
  %1344 = load i64, ptr %8, align 8, !tbaa !27
  %1345 = load i64, ptr %6, align 8, !tbaa !27
  %1346 = sub nsw i64 %1345, 1
  %1347 = icmp sle i64 %1344, %1346
  br i1 %1347, label %1348, label %1371

1348:                                             ; preds = %1343
  %1349 = load double, ptr %12, align 8, !tbaa !28
  %1350 = load ptr, ptr %4, align 8, !tbaa !5
  %1351 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1350, i32 0, i32 45
  %1352 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1351, i32 0, i32 4
  %1353 = load ptr, ptr %1352, align 8, !tbaa !26
  %1354 = load i64, ptr %8, align 8, !tbaa !27
  %1355 = getelementptr inbounds double, ptr %1353, i64 %1354
  %1356 = load double, ptr %1355, align 8, !tbaa !28
  %1357 = load ptr, ptr %4, align 8, !tbaa !5
  %1358 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1357, i32 0, i32 8
  %1359 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1358, i32 0, i32 4
  %1360 = load ptr, ptr %1359, align 8, !tbaa !26
  %1361 = load i64, ptr %8, align 8, !tbaa !27
  %1362 = getelementptr inbounds double, ptr %1360, i64 %1361
  %1363 = load double, ptr %1362, align 8, !tbaa !28
  %1364 = fmul double %1356, %1363
  %1365 = load ptr, ptr %5, align 8, !tbaa !5
  %1366 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1364, ptr noundef %1365)
  %1367 = fadd double %1349, %1366
  store double %1367, ptr %12, align 8, !tbaa !28
  br label %1368

1368:                                             ; preds = %1348
  %1369 = load i64, ptr %8, align 8, !tbaa !27
  %1370 = add nsw i64 %1369, 1
  store i64 %1370, ptr %8, align 8, !tbaa !27
  br label %1343, !llvm.loop !71

1371:                                             ; preds = %1343
  %1372 = load double, ptr %12, align 8, !tbaa !28
  %1373 = load ptr, ptr %5, align 8, !tbaa !5
  %1374 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1372, ptr noundef %1373)
  br i1 %1374, label %1375, label %1381

1375:                                             ; preds = %1371
  %1376 = load ptr, ptr %4, align 8, !tbaa !5
  %1377 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1376, i32 0, i32 44
  %1378 = load double, ptr %1377, align 8, !tbaa !43
  %1379 = load ptr, ptr %5, align 8, !tbaa !5
  %1380 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1378, ptr noundef %1379)
  br i1 %1380, label %1386, label %1381

1381:                                             ; preds = %1375, %1371
  %1382 = load ptr, ptr %4, align 8, !tbaa !5
  %1383 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1382, i32 0, i32 54
  store i64 -8, ptr %1383, align 8, !tbaa !32
  store i8 0, ptr %14, align 1, !tbaa !56
  %1384 = load i8, ptr %14, align 1, !tbaa !56, !range !53, !noundef !54
  %1385 = trunc i8 %1384 to i1
  store i1 %1385, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %1983

1386:                                             ; preds = %1375
  %1387 = load ptr, ptr %4, align 8, !tbaa !5
  %1388 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1387, i32 0, i32 52
  %1389 = load i64, ptr %1388, align 8, !tbaa !33
  %1390 = load ptr, ptr %4, align 8, !tbaa !5
  %1391 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1390, i32 0, i32 5
  %1392 = load i64, ptr %1391, align 8, !tbaa !72
  %1393 = icmp sge i64 %1389, %1392
  br i1 %1393, label %1394, label %1404

1394:                                             ; preds = %1386
  %1395 = load ptr, ptr %4, align 8, !tbaa !5
  %1396 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1395, i32 0, i32 5
  %1397 = load i64, ptr %1396, align 8, !tbaa !72
  %1398 = icmp sgt i64 %1397, 0
  br i1 %1398, label %1399, label %1404

1399:                                             ; preds = %1394
  %1400 = load ptr, ptr %4, align 8, !tbaa !5
  %1401 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1400, i32 0, i32 54
  store i64 5, ptr %1401, align 8, !tbaa !32
  store i8 0, ptr %14, align 1, !tbaa !56
  %1402 = load i8, ptr %14, align 1, !tbaa !56, !range !53, !noundef !54
  %1403 = trunc i8 %1402 to i1
  store i1 %1403, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %1983

1404:                                             ; preds = %1394, %1386
  %1405 = load double, ptr %12, align 8, !tbaa !28
  %1406 = load ptr, ptr %5, align 8, !tbaa !5
  %1407 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1405, ptr noundef %1406)
  %1408 = load ptr, ptr %4, align 8, !tbaa !5
  %1409 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1408, i32 0, i32 2
  %1410 = load double, ptr %1409, align 8, !tbaa !59
  %1411 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1407, double noundef %1410)
  br i1 %1411, label %1412, label %1417

1412:                                             ; preds = %1404
  %1413 = load ptr, ptr %4, align 8, !tbaa !5
  %1414 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1413, i32 0, i32 54
  store i64 4, ptr %1414, align 8, !tbaa !32
  store i8 0, ptr %14, align 1, !tbaa !56
  %1415 = load i8, ptr %14, align 1, !tbaa !56, !range !53, !noundef !54
  %1416 = trunc i8 %1415 to i1
  store i1 %1416, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %1983

1417:                                             ; preds = %1404
  %1418 = load ptr, ptr %4, align 8, !tbaa !5
  %1419 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1418, i32 0, i32 23
  %1420 = load double, ptr %1419, align 8, !tbaa !57
  %1421 = load ptr, ptr %4, align 8, !tbaa !5
  %1422 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1421, i32 0, i32 44
  %1423 = load double, ptr %1422, align 8, !tbaa !43
  %1424 = fsub double %1420, %1423
  %1425 = load ptr, ptr %4, align 8, !tbaa !5
  %1426 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1425, i32 0, i32 3
  %1427 = load double, ptr %1426, align 8, !tbaa !73
  %1428 = load ptr, ptr %4, align 8, !tbaa !5
  %1429 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1428, i32 0, i32 23
  %1430 = load double, ptr %1429, align 8, !tbaa !57
  %1431 = load ptr, ptr %5, align 8, !tbaa !5
  %1432 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1430, ptr noundef %1431)
  %1433 = load ptr, ptr %4, align 8, !tbaa !5
  %1434 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1433, i32 0, i32 44
  %1435 = load double, ptr %1434, align 8, !tbaa !43
  %1436 = load ptr, ptr %5, align 8, !tbaa !5
  %1437 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1435, ptr noundef %1436)
  %1438 = load ptr, ptr %5, align 8, !tbaa !5
  %1439 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1437, double noundef 1.000000e+00, ptr noundef %1438)
  %1440 = load ptr, ptr %5, align 8, !tbaa !5
  %1441 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1432, double noundef %1439, ptr noundef %1440)
  %1442 = fmul double %1427, %1441
  %1443 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1424, double noundef %1442)
  br i1 %1443, label %1444, label %1449

1444:                                             ; preds = %1417
  %1445 = load ptr, ptr %4, align 8, !tbaa !5
  %1446 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1445, i32 0, i32 54
  store i64 1, ptr %1446, align 8, !tbaa !32
  store i8 0, ptr %14, align 1, !tbaa !56
  %1447 = load i8, ptr %14, align 1, !tbaa !56, !range !53, !noundef !54
  %1448 = trunc i8 %1447 to i1
  store i1 %1448, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %1983

1449:                                             ; preds = %1417
  store double 0.000000e+00, ptr %12, align 8, !tbaa !28
  store i64 0, ptr %8, align 8, !tbaa !27
  br label %1450

1450:                                             ; preds = %1480, %1449
  %1451 = load i64, ptr %8, align 8, !tbaa !27
  %1452 = load i64, ptr %6, align 8, !tbaa !27
  %1453 = sub nsw i64 %1452, 1
  %1454 = icmp sle i64 %1451, %1453
  br i1 %1454, label %1455, label %1483

1455:                                             ; preds = %1450
  %1456 = load double, ptr %12, align 8, !tbaa !28
  %1457 = load ptr, ptr %4, align 8, !tbaa !5
  %1458 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1457, i32 0, i32 17
  %1459 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1458, i32 0, i32 6
  %1460 = load ptr, ptr %1459, align 8, !tbaa !26
  %1461 = load ptr, ptr %4, align 8, !tbaa !5
  %1462 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1461, i32 0, i32 14
  %1463 = load i64, ptr %1462, align 8, !tbaa !66
  %1464 = getelementptr inbounds ptr, ptr %1460, i64 %1463
  %1465 = load ptr, ptr %1464, align 8, !tbaa !5
  %1466 = load i64, ptr %8, align 8, !tbaa !27
  %1467 = getelementptr inbounds double, ptr %1465, i64 %1466
  %1468 = load double, ptr %1467, align 8, !tbaa !28
  %1469 = load ptr, ptr %4, align 8, !tbaa !5
  %1470 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1469, i32 0, i32 8
  %1471 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1470, i32 0, i32 4
  %1472 = load ptr, ptr %1471, align 8, !tbaa !26
  %1473 = load i64, ptr %8, align 8, !tbaa !27
  %1474 = getelementptr inbounds double, ptr %1472, i64 %1473
  %1475 = load double, ptr %1474, align 8, !tbaa !28
  %1476 = fdiv double %1468, %1475
  %1477 = load ptr, ptr %5, align 8, !tbaa !5
  %1478 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1476, ptr noundef %1477)
  %1479 = fadd double %1456, %1478
  store double %1479, ptr %12, align 8, !tbaa !28
  br label %1480

1480:                                             ; preds = %1455
  %1481 = load i64, ptr %8, align 8, !tbaa !27
  %1482 = add nsw i64 %1481, 1
  store i64 %1482, ptr %8, align 8, !tbaa !27
  br label %1450, !llvm.loop !74

1483:                                             ; preds = %1450
  %1484 = load double, ptr %12, align 8, !tbaa !28
  %1485 = load ptr, ptr %5, align 8, !tbaa !5
  %1486 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1484, ptr noundef %1485)
  %1487 = load ptr, ptr %4, align 8, !tbaa !5
  %1488 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1487, i32 0, i32 4
  %1489 = load double, ptr %1488, align 8, !tbaa !75
  %1490 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1486, double noundef %1489)
  br i1 %1490, label %1491, label %1496

1491:                                             ; preds = %1483
  %1492 = load ptr, ptr %4, align 8, !tbaa !5
  %1493 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1492, i32 0, i32 54
  store i64 2, ptr %1493, align 8, !tbaa !32
  store i8 0, ptr %14, align 1, !tbaa !56
  %1494 = load i8, ptr %14, align 1, !tbaa !56, !range !53, !noundef !54
  %1495 = trunc i8 %1494 to i1
  store i1 %1495, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %1983

1496:                                             ; preds = %1483
  %1497 = load i64, ptr %11, align 8, !tbaa !27
  %1498 = icmp ne i64 %1497, 1
  br i1 %1498, label %1499, label %1518

1499:                                             ; preds = %1496
  %1500 = load ptr, ptr %4, align 8, !tbaa !5
  %1501 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1500, i32 0, i32 44
  %1502 = load double, ptr %1501, align 8, !tbaa !43
  %1503 = load ptr, ptr %4, align 8, !tbaa !5
  %1504 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1503, i32 0, i32 23
  store double %1502, ptr %1504, align 8, !tbaa !57
  %1505 = load ptr, ptr %4, align 8, !tbaa !5
  %1506 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1505, i32 0, i32 20
  %1507 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1506, i32 0, i32 4
  %1508 = load ptr, ptr %1507, align 8, !tbaa !26
  %1509 = getelementptr inbounds double, ptr %1508, i64 0
  %1510 = load ptr, ptr %4, align 8, !tbaa !5
  %1511 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1510, i32 0, i32 45
  %1512 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1511, i32 0, i32 4
  %1513 = load ptr, ptr %1512, align 8, !tbaa !26
  %1514 = getelementptr inbounds double, ptr %1513, i64 0
  %1515 = load i64, ptr %6, align 8, !tbaa !27
  %1516 = sub nsw i64 %1515, 1
  %1517 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1516)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %1509, i64 noundef 1, ptr noundef %1514, i64 noundef 1, i64 noundef %1517)
  br label %1920

1518:                                             ; preds = %1496
  %1519 = load ptr, ptr %4, align 8, !tbaa !5
  %1520 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1519, i32 0, i32 16
  %1521 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1520, i32 0, i32 6
  %1522 = load ptr, ptr %1521, align 8, !tbaa !26
  %1523 = load ptr, ptr %4, align 8, !tbaa !5
  %1524 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1523, i32 0, i32 14
  %1525 = load i64, ptr %1524, align 8, !tbaa !66
  %1526 = getelementptr inbounds ptr, ptr %1522, i64 %1525
  %1527 = load ptr, ptr %1526, align 8, !tbaa !5
  %1528 = getelementptr inbounds double, ptr %1527, i64 0
  %1529 = load ptr, ptr %4, align 8, !tbaa !5
  %1530 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1529, i32 0, i32 17
  %1531 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1530, i32 0, i32 6
  %1532 = load ptr, ptr %1531, align 8, !tbaa !26
  %1533 = load ptr, ptr %4, align 8, !tbaa !5
  %1534 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1533, i32 0, i32 14
  %1535 = load i64, ptr %1534, align 8, !tbaa !66
  %1536 = getelementptr inbounds ptr, ptr %1532, i64 %1535
  %1537 = load ptr, ptr %1536, align 8, !tbaa !5
  %1538 = getelementptr inbounds double, ptr %1537, i64 0
  %1539 = load i64, ptr %6, align 8, !tbaa !27
  %1540 = sub nsw i64 %1539, 1
  %1541 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1540)
  %1542 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1528, i64 noundef 1, ptr noundef %1538, i64 noundef 1, i64 noundef %1541)
  store double %1542, ptr %12, align 8, !tbaa !28
  %1543 = load ptr, ptr %4, align 8, !tbaa !5
  %1544 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1543, i32 0, i32 16
  %1545 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1544, i32 0, i32 6
  %1546 = load ptr, ptr %1545, align 8, !tbaa !26
  %1547 = load ptr, ptr %4, align 8, !tbaa !5
  %1548 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1547, i32 0, i32 14
  %1549 = load i64, ptr %1548, align 8, !tbaa !66
  %1550 = getelementptr inbounds ptr, ptr %1546, i64 %1549
  %1551 = load ptr, ptr %1550, align 8, !tbaa !5
  %1552 = getelementptr inbounds double, ptr %1551, i64 0
  %1553 = load ptr, ptr %4, align 8, !tbaa !5
  %1554 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1553, i32 0, i32 16
  %1555 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1554, i32 0, i32 6
  %1556 = load ptr, ptr %1555, align 8, !tbaa !26
  %1557 = load ptr, ptr %4, align 8, !tbaa !5
  %1558 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1557, i32 0, i32 14
  %1559 = load i64, ptr %1558, align 8, !tbaa !66
  %1560 = getelementptr inbounds ptr, ptr %1556, i64 %1559
  %1561 = load ptr, ptr %1560, align 8, !tbaa !5
  %1562 = getelementptr inbounds double, ptr %1561, i64 0
  %1563 = load i64, ptr %6, align 8, !tbaa !27
  %1564 = sub nsw i64 %1563, 1
  %1565 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1564)
  %1566 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1552, i64 noundef 1, ptr noundef %1562, i64 noundef 1, i64 noundef %1565)
  store double %1566, ptr %13, align 8, !tbaa !28
  %1567 = load double, ptr %12, align 8, !tbaa !28
  %1568 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1567, double noundef 0.000000e+00)
  br i1 %1568, label %1572, label %1569

1569:                                             ; preds = %1518
  %1570 = load double, ptr %13, align 8, !tbaa !28
  %1571 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1570, double noundef 0.000000e+00)
  br i1 %1571, label %1572, label %1577

1572:                                             ; preds = %1569, %1518
  %1573 = load ptr, ptr %4, align 8, !tbaa !5
  %1574 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1573, i32 0, i32 54
  store i64 -2, ptr %1574, align 8, !tbaa !32
  store i8 0, ptr %14, align 1, !tbaa !56
  %1575 = load i8, ptr %14, align 1, !tbaa !56, !range !53, !noundef !54
  %1576 = trunc i8 %1575 to i1
  store i1 %1576, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %1983

1577:                                             ; preds = %1569
  %1578 = load double, ptr %12, align 8, !tbaa !28
  %1579 = fdiv double 1.000000e+00, %1578
  %1580 = load ptr, ptr %4, align 8, !tbaa !5
  %1581 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1580, i32 0, i32 15
  %1582 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1581, i32 0, i32 4
  %1583 = load ptr, ptr %1582, align 8, !tbaa !26
  %1584 = load ptr, ptr %4, align 8, !tbaa !5
  %1585 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1584, i32 0, i32 14
  %1586 = load i64, ptr %1585, align 8, !tbaa !66
  %1587 = getelementptr inbounds double, ptr %1583, i64 %1586
  store double %1579, ptr %1587, align 8, !tbaa !28
  %1588 = load double, ptr %12, align 8, !tbaa !28
  %1589 = load double, ptr %13, align 8, !tbaa !28
  %1590 = fdiv double %1588, %1589
  %1591 = load ptr, ptr %4, align 8, !tbaa !5
  %1592 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1591, i32 0, i32 27
  store double %1590, ptr %1592, align 8, !tbaa !76
  %1593 = load ptr, ptr %4, align 8, !tbaa !5
  %1594 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1593, i32 0, i32 22
  %1595 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1594, i32 0, i32 4
  %1596 = load ptr, ptr %1595, align 8, !tbaa !26
  %1597 = getelementptr inbounds double, ptr %1596, i64 0
  %1598 = load ptr, ptr %4, align 8, !tbaa !5
  %1599 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1598, i32 0, i32 45
  %1600 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1599, i32 0, i32 4
  %1601 = load ptr, ptr %1600, align 8, !tbaa !26
  %1602 = getelementptr inbounds double, ptr %1601, i64 0
  %1603 = load i64, ptr %6, align 8, !tbaa !27
  %1604 = sub nsw i64 %1603, 1
  %1605 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1604)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1597, i64 noundef 1, ptr noundef %1602, i64 noundef 1, i64 noundef %1605)
  %1606 = load ptr, ptr %4, align 8, !tbaa !5
  %1607 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1606, i32 0, i32 12
  %1608 = load i64, ptr %1607, align 8, !tbaa !65
  store i64 %1608, ptr %8, align 8, !tbaa !27
  br label %1609

1609:                                             ; preds = %1673, %1577
  %1610 = load i64, ptr %8, align 8, !tbaa !27
  %1611 = load ptr, ptr %4, align 8, !tbaa !5
  %1612 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1611, i32 0, i32 12
  %1613 = load i64, ptr %1612, align 8, !tbaa !65
  %1614 = load ptr, ptr %4, align 8, !tbaa !5
  %1615 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1614, i32 0, i32 13
  %1616 = load i64, ptr %1615, align 8, !tbaa !67
  %1617 = sub nsw i64 %1613, %1616
  %1618 = icmp sge i64 %1610, %1617
  br i1 %1618, label %1619, label %1676

1619:                                             ; preds = %1609
  %1620 = load i64, ptr %8, align 8, !tbaa !27
  %1621 = load i64, ptr %7, align 8, !tbaa !27
  %1622 = srem i64 %1620, %1621
  store i64 %1622, ptr %10, align 8, !tbaa !27
  %1623 = load ptr, ptr %4, align 8, !tbaa !5
  %1624 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1623, i32 0, i32 17
  %1625 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1624, i32 0, i32 6
  %1626 = load ptr, ptr %1625, align 8, !tbaa !26
  %1627 = load i64, ptr %10, align 8, !tbaa !27
  %1628 = getelementptr inbounds ptr, ptr %1626, i64 %1627
  %1629 = load ptr, ptr %1628, align 8, !tbaa !5
  %1630 = getelementptr inbounds double, ptr %1629, i64 0
  %1631 = load ptr, ptr %4, align 8, !tbaa !5
  %1632 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1631, i32 0, i32 22
  %1633 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1632, i32 0, i32 4
  %1634 = load ptr, ptr %1633, align 8, !tbaa !26
  %1635 = getelementptr inbounds double, ptr %1634, i64 0
  %1636 = load i64, ptr %6, align 8, !tbaa !27
  %1637 = sub nsw i64 %1636, 1
  %1638 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1637)
  %1639 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1630, i64 noundef 1, ptr noundef %1635, i64 noundef 1, i64 noundef %1638)
  store double %1639, ptr %12, align 8, !tbaa !28
  %1640 = load double, ptr %12, align 8, !tbaa !28
  %1641 = load ptr, ptr %4, align 8, !tbaa !5
  %1642 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1641, i32 0, i32 19
  %1643 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1642, i32 0, i32 4
  %1644 = load ptr, ptr %1643, align 8, !tbaa !26
  %1645 = load i64, ptr %10, align 8, !tbaa !27
  %1646 = getelementptr inbounds double, ptr %1644, i64 %1645
  store double %1640, ptr %1646, align 8, !tbaa !28
  %1647 = load double, ptr %12, align 8, !tbaa !28
  %1648 = load ptr, ptr %4, align 8, !tbaa !5
  %1649 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1648, i32 0, i32 15
  %1650 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1649, i32 0, i32 4
  %1651 = load ptr, ptr %1650, align 8, !tbaa !26
  %1652 = load i64, ptr %10, align 8, !tbaa !27
  %1653 = getelementptr inbounds double, ptr %1651, i64 %1652
  %1654 = load double, ptr %1653, align 8, !tbaa !28
  %1655 = fmul double %1647, %1654
  store double %1655, ptr %13, align 8, !tbaa !28
  %1656 = load ptr, ptr %4, align 8, !tbaa !5
  %1657 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1656, i32 0, i32 22
  %1658 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1657, i32 0, i32 4
  %1659 = load ptr, ptr %1658, align 8, !tbaa !26
  %1660 = getelementptr inbounds double, ptr %1659, i64 0
  %1661 = load ptr, ptr %4, align 8, !tbaa !5
  %1662 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1661, i32 0, i32 16
  %1663 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1662, i32 0, i32 6
  %1664 = load ptr, ptr %1663, align 8, !tbaa !26
  %1665 = load i64, ptr %10, align 8, !tbaa !27
  %1666 = getelementptr inbounds ptr, ptr %1664, i64 %1665
  %1667 = load ptr, ptr %1666, align 8, !tbaa !5
  %1668 = getelementptr inbounds double, ptr %1667, i64 0
  %1669 = load i64, ptr %6, align 8, !tbaa !27
  %1670 = sub nsw i64 %1669, 1
  %1671 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1670)
  %1672 = load double, ptr %13, align 8, !tbaa !28
  call void @_ZN11alglib_impl9ae_v_subdEPdlPKdlld(ptr noundef %1660, i64 noundef 1, ptr noundef %1668, i64 noundef 1, i64 noundef %1671, double noundef %1672)
  br label %1673

1673:                                             ; preds = %1619
  %1674 = load i64, ptr %8, align 8, !tbaa !27
  %1675 = add nsw i64 %1674, -1
  store i64 %1675, ptr %8, align 8, !tbaa !27
  br label %1609, !llvm.loop !77

1676:                                             ; preds = %1609
  %1677 = load ptr, ptr %4, align 8, !tbaa !5
  %1678 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1677, i32 0, i32 26
  %1679 = load i64, ptr %1678, align 8, !tbaa !60
  %1680 = icmp eq i64 %1679, 0
  br i1 %1680, label %1681, label %1694

1681:                                             ; preds = %1676
  %1682 = load ptr, ptr %4, align 8, !tbaa !5
  %1683 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1682, i32 0, i32 27
  %1684 = load double, ptr %1683, align 8, !tbaa !76
  store double %1684, ptr %12, align 8, !tbaa !28
  %1685 = load ptr, ptr %4, align 8, !tbaa !5
  %1686 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1685, i32 0, i32 22
  %1687 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1686, i32 0, i32 4
  %1688 = load ptr, ptr %1687, align 8, !tbaa !26
  %1689 = getelementptr inbounds double, ptr %1688, i64 0
  %1690 = load i64, ptr %6, align 8, !tbaa !27
  %1691 = sub nsw i64 %1690, 1
  %1692 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1691)
  %1693 = load double, ptr %12, align 8, !tbaa !28
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %1689, i64 noundef 1, i64 noundef %1692, double noundef %1693)
  br label %1694

1694:                                             ; preds = %1681, %1676
  %1695 = load ptr, ptr %4, align 8, !tbaa !5
  %1696 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1695, i32 0, i32 26
  %1697 = load i64, ptr %1696, align 8, !tbaa !60
  %1698 = icmp eq i64 %1697, 1
  br i1 %1698, label %1699, label %1708

1699:                                             ; preds = %1694
  %1700 = load ptr, ptr %4, align 8, !tbaa !5
  %1701 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1700, i32 0, i32 28
  %1702 = load i64, ptr %6, align 8, !tbaa !27
  %1703 = load ptr, ptr %4, align 8, !tbaa !5
  %1704 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1703, i32 0, i32 22
  %1705 = load ptr, ptr %4, align 8, !tbaa !5
  %1706 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1705, i32 0, i32 41
  %1707 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl17fblscholeskysolveEPNS_9ae_matrixEdlbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %1701, double noundef 1.000000e+00, i64 noundef %1702, i1 noundef zeroext true, ptr noundef %1704, ptr noundef %1706, ptr noundef %1707)
  br label %1708

1708:                                             ; preds = %1699, %1694
  %1709 = load ptr, ptr %4, align 8, !tbaa !5
  %1710 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1709, i32 0, i32 26
  %1711 = load i64, ptr %1710, align 8, !tbaa !60
  %1712 = icmp eq i64 %1711, 2
  br i1 %1712, label %1713, label %1745

1713:                                             ; preds = %1708
  store i64 0, ptr %8, align 8, !tbaa !27
  br label %1714

1714:                                             ; preds = %1741, %1713
  %1715 = load i64, ptr %8, align 8, !tbaa !27
  %1716 = load i64, ptr %6, align 8, !tbaa !27
  %1717 = sub nsw i64 %1716, 1
  %1718 = icmp sle i64 %1715, %1717
  br i1 %1718, label %1719, label %1744

1719:                                             ; preds = %1714
  %1720 = load ptr, ptr %4, align 8, !tbaa !5
  %1721 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1720, i32 0, i32 22
  %1722 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1721, i32 0, i32 4
  %1723 = load ptr, ptr %1722, align 8, !tbaa !26
  %1724 = load i64, ptr %8, align 8, !tbaa !27
  %1725 = getelementptr inbounds double, ptr %1723, i64 %1724
  %1726 = load double, ptr %1725, align 8, !tbaa !28
  %1727 = load ptr, ptr %4, align 8, !tbaa !5
  %1728 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1727, i32 0, i32 29
  %1729 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1728, i32 0, i32 4
  %1730 = load ptr, ptr %1729, align 8, !tbaa !26
  %1731 = load i64, ptr %8, align 8, !tbaa !27
  %1732 = getelementptr inbounds double, ptr %1730, i64 %1731
  %1733 = load double, ptr %1732, align 8, !tbaa !28
  %1734 = fdiv double %1726, %1733
  %1735 = load ptr, ptr %4, align 8, !tbaa !5
  %1736 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1735, i32 0, i32 22
  %1737 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1736, i32 0, i32 4
  %1738 = load ptr, ptr %1737, align 8, !tbaa !26
  %1739 = load i64, ptr %8, align 8, !tbaa !27
  %1740 = getelementptr inbounds double, ptr %1738, i64 %1739
  store double %1734, ptr %1740, align 8, !tbaa !28
  br label %1741

1741:                                             ; preds = %1719
  %1742 = load i64, ptr %8, align 8, !tbaa !27
  %1743 = add nsw i64 %1742, 1
  store i64 %1743, ptr %8, align 8, !tbaa !27
  br label %1714, !llvm.loop !78

1744:                                             ; preds = %1714
  br label %1745

1745:                                             ; preds = %1744, %1708
  %1746 = load ptr, ptr %4, align 8, !tbaa !5
  %1747 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1746, i32 0, i32 26
  %1748 = load i64, ptr %1747, align 8, !tbaa !60
  %1749 = icmp eq i64 %1748, 3
  br i1 %1749, label %1750, label %1790

1750:                                             ; preds = %1745
  store i64 0, ptr %8, align 8, !tbaa !27
  br label %1751

1751:                                             ; preds = %1786, %1750
  %1752 = load i64, ptr %8, align 8, !tbaa !27
  %1753 = load i64, ptr %6, align 8, !tbaa !27
  %1754 = sub nsw i64 %1753, 1
  %1755 = icmp sle i64 %1752, %1754
  br i1 %1755, label %1756, label %1789

1756:                                             ; preds = %1751
  %1757 = load ptr, ptr %4, align 8, !tbaa !5
  %1758 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1757, i32 0, i32 22
  %1759 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1758, i32 0, i32 4
  %1760 = load ptr, ptr %1759, align 8, !tbaa !26
  %1761 = load i64, ptr %8, align 8, !tbaa !27
  %1762 = getelementptr inbounds double, ptr %1760, i64 %1761
  %1763 = load double, ptr %1762, align 8, !tbaa !28
  %1764 = load ptr, ptr %4, align 8, !tbaa !5
  %1765 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1764, i32 0, i32 8
  %1766 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1765, i32 0, i32 4
  %1767 = load ptr, ptr %1766, align 8, !tbaa !26
  %1768 = load i64, ptr %8, align 8, !tbaa !27
  %1769 = getelementptr inbounds double, ptr %1767, i64 %1768
  %1770 = load double, ptr %1769, align 8, !tbaa !28
  %1771 = fmul double %1763, %1770
  %1772 = load ptr, ptr %4, align 8, !tbaa !5
  %1773 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1772, i32 0, i32 8
  %1774 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1773, i32 0, i32 4
  %1775 = load ptr, ptr %1774, align 8, !tbaa !26
  %1776 = load i64, ptr %8, align 8, !tbaa !27
  %1777 = getelementptr inbounds double, ptr %1775, i64 %1776
  %1778 = load double, ptr %1777, align 8, !tbaa !28
  %1779 = fmul double %1771, %1778
  %1780 = load ptr, ptr %4, align 8, !tbaa !5
  %1781 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1780, i32 0, i32 22
  %1782 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1781, i32 0, i32 4
  %1783 = load ptr, ptr %1782, align 8, !tbaa !26
  %1784 = load i64, ptr %8, align 8, !tbaa !27
  %1785 = getelementptr inbounds double, ptr %1783, i64 %1784
  store double %1779, ptr %1785, align 8, !tbaa !28
  br label %1786

1786:                                             ; preds = %1756
  %1787 = load i64, ptr %8, align 8, !tbaa !27
  %1788 = add nsw i64 %1787, 1
  store i64 %1788, ptr %8, align 8, !tbaa !27
  br label %1751, !llvm.loop !79

1789:                                             ; preds = %1751
  br label %1790

1790:                                             ; preds = %1789, %1745
  %1791 = load ptr, ptr %4, align 8, !tbaa !5
  %1792 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1791, i32 0, i32 26
  %1793 = load i64, ptr %1792, align 8, !tbaa !60
  %1794 = icmp eq i64 %1793, 4
  br i1 %1794, label %1795, label %1811

1795:                                             ; preds = %1790
  %1796 = load ptr, ptr %4, align 8, !tbaa !5
  %1797 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1796, i32 0, i32 22
  %1798 = load i64, ptr %6, align 8, !tbaa !27
  %1799 = load ptr, ptr %4, align 8, !tbaa !5
  %1800 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1799, i32 0, i32 31
  %1801 = load ptr, ptr %4, align 8, !tbaa !5
  %1802 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1801, i32 0, i32 30
  %1803 = load ptr, ptr %4, align 8, !tbaa !5
  %1804 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1803, i32 0, i32 32
  %1805 = load ptr, ptr %4, align 8, !tbaa !5
  %1806 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1805, i32 0, i32 33
  %1807 = load i64, ptr %1806, align 8, !tbaa !64
  %1808 = load ptr, ptr %4, align 8, !tbaa !5
  %1809 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1808, i32 0, i32 34
  %1810 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl26inexactlbfgspreconditionerEPNS_9ae_vectorElS1_S1_PNS_9ae_matrixElPNS_12precbuflbfgsEPNS_8ae_stateE(ptr noundef %1797, i64 noundef %1798, ptr noundef %1800, ptr noundef %1802, ptr noundef %1804, i64 noundef %1807, ptr noundef %1809, ptr noundef %1810)
  br label %1811

1811:                                             ; preds = %1795, %1790
  %1812 = load ptr, ptr %4, align 8, !tbaa !5
  %1813 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1812, i32 0, i32 26
  %1814 = load i64, ptr %1813, align 8, !tbaa !60
  %1815 = icmp eq i64 %1814, 5
  br i1 %1815, label %1816, label %1822

1816:                                             ; preds = %1811
  %1817 = load ptr, ptr %4, align 8, !tbaa !5
  %1818 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1817, i32 0, i32 22
  %1819 = load ptr, ptr %4, align 8, !tbaa !5
  %1820 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1819, i32 0, i32 35
  %1821 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl26applylowrankpreconditionerEPNS_9ae_vectorEPNS_14precbuflowrankEPNS_8ae_stateE(ptr noundef %1818, ptr noundef %1820, ptr noundef %1821)
  br label %1822

1822:                                             ; preds = %1816, %1811
  %1823 = load ptr, ptr %4, align 8, !tbaa !5
  %1824 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1823, i32 0, i32 12
  %1825 = load i64, ptr %1824, align 8, !tbaa !65
  %1826 = load ptr, ptr %4, align 8, !tbaa !5
  %1827 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1826, i32 0, i32 13
  %1828 = load i64, ptr %1827, align 8, !tbaa !67
  %1829 = sub nsw i64 %1825, %1828
  store i64 %1829, ptr %8, align 8, !tbaa !27
  br label %1830

1830:                                             ; preds = %1892, %1822
  %1831 = load i64, ptr %8, align 8, !tbaa !27
  %1832 = load ptr, ptr %4, align 8, !tbaa !5
  %1833 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1832, i32 0, i32 12
  %1834 = load i64, ptr %1833, align 8, !tbaa !65
  %1835 = icmp sle i64 %1831, %1834
  br i1 %1835, label %1836, label %1895

1836:                                             ; preds = %1830
  %1837 = load i64, ptr %8, align 8, !tbaa !27
  %1838 = load i64, ptr %7, align 8, !tbaa !27
  %1839 = srem i64 %1837, %1838
  store i64 %1839, ptr %10, align 8, !tbaa !27
  %1840 = load ptr, ptr %4, align 8, !tbaa !5
  %1841 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1840, i32 0, i32 16
  %1842 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1841, i32 0, i32 6
  %1843 = load ptr, ptr %1842, align 8, !tbaa !26
  %1844 = load i64, ptr %10, align 8, !tbaa !27
  %1845 = getelementptr inbounds ptr, ptr %1843, i64 %1844
  %1846 = load ptr, ptr %1845, align 8, !tbaa !5
  %1847 = getelementptr inbounds double, ptr %1846, i64 0
  %1848 = load ptr, ptr %4, align 8, !tbaa !5
  %1849 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1848, i32 0, i32 22
  %1850 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1849, i32 0, i32 4
  %1851 = load ptr, ptr %1850, align 8, !tbaa !26
  %1852 = getelementptr inbounds double, ptr %1851, i64 0
  %1853 = load i64, ptr %6, align 8, !tbaa !27
  %1854 = sub nsw i64 %1853, 1
  %1855 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1854)
  %1856 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1847, i64 noundef 1, ptr noundef %1852, i64 noundef 1, i64 noundef %1855)
  store double %1856, ptr %12, align 8, !tbaa !28
  %1857 = load ptr, ptr %4, align 8, !tbaa !5
  %1858 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1857, i32 0, i32 15
  %1859 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1858, i32 0, i32 4
  %1860 = load ptr, ptr %1859, align 8, !tbaa !26
  %1861 = load i64, ptr %10, align 8, !tbaa !27
  %1862 = getelementptr inbounds double, ptr %1860, i64 %1861
  %1863 = load double, ptr %1862, align 8, !tbaa !28
  %1864 = load double, ptr %12, align 8, !tbaa !28
  %1865 = fneg double %1864
  %1866 = load ptr, ptr %4, align 8, !tbaa !5
  %1867 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1866, i32 0, i32 19
  %1868 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1867, i32 0, i32 4
  %1869 = load ptr, ptr %1868, align 8, !tbaa !26
  %1870 = load i64, ptr %10, align 8, !tbaa !27
  %1871 = getelementptr inbounds double, ptr %1869, i64 %1870
  %1872 = load double, ptr %1871, align 8, !tbaa !28
  %1873 = fadd double %1865, %1872
  %1874 = fmul double %1863, %1873
  store double %1874, ptr %13, align 8, !tbaa !28
  %1875 = load ptr, ptr %4, align 8, !tbaa !5
  %1876 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1875, i32 0, i32 22
  %1877 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1876, i32 0, i32 4
  %1878 = load ptr, ptr %1877, align 8, !tbaa !26
  %1879 = getelementptr inbounds double, ptr %1878, i64 0
  %1880 = load ptr, ptr %4, align 8, !tbaa !5
  %1881 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1880, i32 0, i32 17
  %1882 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1881, i32 0, i32 6
  %1883 = load ptr, ptr %1882, align 8, !tbaa !26
  %1884 = load i64, ptr %10, align 8, !tbaa !27
  %1885 = getelementptr inbounds ptr, ptr %1883, i64 %1884
  %1886 = load ptr, ptr %1885, align 8, !tbaa !5
  %1887 = getelementptr inbounds double, ptr %1886, i64 0
  %1888 = load i64, ptr %6, align 8, !tbaa !27
  %1889 = sub nsw i64 %1888, 1
  %1890 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1889)
  %1891 = load double, ptr %13, align 8, !tbaa !28
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %1879, i64 noundef 1, ptr noundef %1887, i64 noundef 1, i64 noundef %1890, double noundef %1891)
  br label %1892

1892:                                             ; preds = %1836
  %1893 = load i64, ptr %8, align 8, !tbaa !27
  %1894 = add nsw i64 %1893, 1
  store i64 %1894, ptr %8, align 8, !tbaa !27
  br label %1830, !llvm.loop !80

1895:                                             ; preds = %1830
  %1896 = load ptr, ptr %4, align 8, !tbaa !5
  %1897 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1896, i32 0, i32 20
  %1898 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1897, i32 0, i32 4
  %1899 = load ptr, ptr %1898, align 8, !tbaa !26
  %1900 = getelementptr inbounds double, ptr %1899, i64 0
  %1901 = load ptr, ptr %4, align 8, !tbaa !5
  %1902 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1901, i32 0, i32 22
  %1903 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1902, i32 0, i32 4
  %1904 = load ptr, ptr %1903, align 8, !tbaa !26
  %1905 = getelementptr inbounds double, ptr %1904, i64 0
  %1906 = load i64, ptr %6, align 8, !tbaa !27
  %1907 = sub nsw i64 %1906, 1
  %1908 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1907)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %1900, i64 noundef 1, ptr noundef %1905, i64 noundef 1, i64 noundef %1908)
  %1909 = load ptr, ptr %4, align 8, !tbaa !5
  %1910 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1909, i32 0, i32 44
  %1911 = load double, ptr %1910, align 8, !tbaa !43
  %1912 = load ptr, ptr %4, align 8, !tbaa !5
  %1913 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1912, i32 0, i32 23
  store double %1911, ptr %1913, align 8, !tbaa !57
  %1914 = load ptr, ptr %4, align 8, !tbaa !5
  %1915 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1914, i32 0, i32 12
  %1916 = load i64, ptr %1915, align 8, !tbaa !65
  %1917 = add nsw i64 %1916, 1
  %1918 = load ptr, ptr %4, align 8, !tbaa !5
  %1919 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1918, i32 0, i32 12
  store i64 %1917, ptr %1919, align 8, !tbaa !65
  br label %1920

1920:                                             ; preds = %1895, %1499
  br label %862

1921:                                             ; No predecessors!
  store i8 0, ptr %14, align 1, !tbaa !56
  %1922 = load i8, ptr %14, align 1, !tbaa !56, !range !53, !noundef !54
  %1923 = trunc i8 %1922 to i1
  store i1 %1923, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %1983

1924:                                             ; preds = %1280, %1110, %1082, %1053, %1023, %1005, %996, %593, %496, %468, %439, %409, %391, %382, %304
  store i8 1, ptr %14, align 1, !tbaa !56
  %1925 = load i64, ptr %6, align 8, !tbaa !27
  %1926 = load ptr, ptr %4, align 8, !tbaa !5
  %1927 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1926, i32 0, i32 51
  %1928 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1927, i32 0, i32 1
  %1929 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1928, i32 0, i32 4
  %1930 = load ptr, ptr %1929, align 8, !tbaa !26
  %1931 = getelementptr inbounds i64, ptr %1930, i64 0
  store i64 %1925, ptr %1931, align 8, !tbaa !27
  %1932 = load i64, ptr %7, align 8, !tbaa !27
  %1933 = load ptr, ptr %4, align 8, !tbaa !5
  %1934 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1933, i32 0, i32 51
  %1935 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1934, i32 0, i32 1
  %1936 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1935, i32 0, i32 4
  %1937 = load ptr, ptr %1936, align 8, !tbaa !26
  %1938 = getelementptr inbounds i64, ptr %1937, i64 1
  store i64 %1932, ptr %1938, align 8, !tbaa !27
  %1939 = load i64, ptr %8, align 8, !tbaa !27
  %1940 = load ptr, ptr %4, align 8, !tbaa !5
  %1941 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1940, i32 0, i32 51
  %1942 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1941, i32 0, i32 1
  %1943 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1942, i32 0, i32 4
  %1944 = load ptr, ptr %1943, align 8, !tbaa !26
  %1945 = getelementptr inbounds i64, ptr %1944, i64 2
  store i64 %1939, ptr %1945, align 8, !tbaa !27
  %1946 = load i64, ptr %9, align 8, !tbaa !27
  %1947 = load ptr, ptr %4, align 8, !tbaa !5
  %1948 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1947, i32 0, i32 51
  %1949 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1948, i32 0, i32 1
  %1950 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1949, i32 0, i32 4
  %1951 = load ptr, ptr %1950, align 8, !tbaa !26
  %1952 = getelementptr inbounds i64, ptr %1951, i64 3
  store i64 %1946, ptr %1952, align 8, !tbaa !27
  %1953 = load i64, ptr %10, align 8, !tbaa !27
  %1954 = load ptr, ptr %4, align 8, !tbaa !5
  %1955 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1954, i32 0, i32 51
  %1956 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1955, i32 0, i32 1
  %1957 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1956, i32 0, i32 4
  %1958 = load ptr, ptr %1957, align 8, !tbaa !26
  %1959 = getelementptr inbounds i64, ptr %1958, i64 4
  store i64 %1953, ptr %1959, align 8, !tbaa !27
  %1960 = load i64, ptr %11, align 8, !tbaa !27
  %1961 = load ptr, ptr %4, align 8, !tbaa !5
  %1962 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1961, i32 0, i32 51
  %1963 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1962, i32 0, i32 1
  %1964 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1963, i32 0, i32 4
  %1965 = load ptr, ptr %1964, align 8, !tbaa !26
  %1966 = getelementptr inbounds i64, ptr %1965, i64 5
  store i64 %1960, ptr %1966, align 8, !tbaa !27
  %1967 = load double, ptr %12, align 8, !tbaa !28
  %1968 = load ptr, ptr %4, align 8, !tbaa !5
  %1969 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1968, i32 0, i32 51
  %1970 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1969, i32 0, i32 3
  %1971 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1970, i32 0, i32 4
  %1972 = load ptr, ptr %1971, align 8, !tbaa !26
  %1973 = getelementptr inbounds double, ptr %1972, i64 0
  store double %1967, ptr %1973, align 8, !tbaa !28
  %1974 = load double, ptr %13, align 8, !tbaa !28
  %1975 = load ptr, ptr %4, align 8, !tbaa !5
  %1976 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1975, i32 0, i32 51
  %1977 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1976, i32 0, i32 3
  %1978 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1977, i32 0, i32 4
  %1979 = load ptr, ptr %1978, align 8, !tbaa !26
  %1980 = getelementptr inbounds double, ptr %1979, i64 1
  store double %1974, ptr %1980, align 8, !tbaa !28
  %1981 = load i8, ptr %14, align 1, !tbaa !56, !range !53, !noundef !54
  %1982 = trunc i8 %1981 to i1
  store i1 %1982, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %1983

1983:                                             ; preds = %1924, %1921, %1572, %1491, %1444, %1412, %1399, %1381, %1256, %658, %609
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #5
  %1984 = load i1, ptr %3, align 1
  ret i1 %1984
}

declare void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) #2

declare noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef, ptr noundef) #2

declare noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef, double noundef) #2

declare noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef, double noundef) #2

declare noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef, double noundef) #2

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

declare noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef, ptr noundef) #2

declare noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef) #2

declare noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef, i64 noundef) #2

declare noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) #2

declare noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef, ptr noundef) #2

declare void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, double noundef) #2

declare void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef) #2

declare void @_ZN11alglib_impl17fblscholeskysolveEPNS_9ae_matrixEdlbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef, double noundef, i64 noundef, i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef) #2

declare noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl11trimprepareEdPdPNS_8ae_stateE(double noundef, ptr noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl12trimfunctionEPdPNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef, ptr noundef, i64 noundef, double noundef, ptr noundef) #1

declare noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef, double noundef) #2

declare void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef, i64 noundef, i64 noundef, double noundef) #2

declare noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) #2

declare void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef) #2

declare void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef) #2

declare void @_ZN11alglib_impl9ae_v_subdEPdlPKdlld(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, double noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl26inexactlbfgspreconditionerEPNS_9ae_vectorElS1_S1_PNS_9ae_matrixElPNS_12precbuflbfgsEPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl26applylowrankpreconditionerEPNS_9ae_vectorEPNS_14precbuflowrankEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl21smoothnessmonitorinitEPNS_17smoothnessmonitorEllbPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, i1 noundef zeroext, ptr noundef) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11alglib_impl35smoothnessmonitorfinalizelinesearchEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef, ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl34smoothnessmonitorstartlinesearch1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, ptr noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl31smoothnessmonitorenqueuepoint1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_dS3_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, ptr noundef, double noundef, ptr noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN11alglib_impl34smoothnessmonitorcheckgradientatx0EPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_S3_bdPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext, double noundef, ptr noundef) #1

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef, ptr noundef) #4

declare noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef) #2

declare void @_ZN11alglib_impl16linminnormalizedEPNS_9ae_vectorEPdlPNS_8ae_stateE(ptr noundef, ptr noundef, i64 noundef, ptr noundef) #2

declare void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_S1_S2_ddPlS3_S1_PNS_11linminstateES3_PNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { "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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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 #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !20, i64 2352}
!10 = !{!"_ZTSN11alglib_impl13minlbfgsstateE", !11, i64 0, !11, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !11, i64 40, !13, i64 48, !12, i64 56, !14, i64 64, !12, i64 128, !11, i64 136, !11, i64 144, !11, i64 152, !11, i64 160, !11, i64 168, !14, i64 176, !16, i64 240, !16, i64 320, !14, i64 400, !14, i64 464, !14, i64 528, !12, i64 592, !14, i64 600, !12, i64 664, !12, i64 672, !14, i64 680, !11, i64 744, !12, i64 752, !16, i64 760, !14, i64 840, !14, i64 904, !14, i64 968, !16, i64 1032, !11, i64 1112, !17, i64 1120, !18, i64 1584, !12, i64 2032, !12, i64 2040, !12, i64 2048, !12, i64 2056, !12, i64 2064, !14, i64 2072, !14, i64 2136, !14, i64 2200, !12, i64 2264, !14, i64 2272, !13, i64 2336, !13, i64 2337, !13, i64 2338, !13, i64 2339, !12, i64 2344, !19, i64 2352, !11, i64 2616, !11, i64 2624, !11, i64 2632, !21, i64 2640, !11, i64 2832, !22, i64 2840, !14, i64 6808}
!11 = !{!"long", !7, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTSN11alglib_impl9ae_vectorE", !11, i64 0, !11, i64 8, !13, i64 16, !15, i64 24, !7, i64 56}
!15 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!16 = !{!"_ZTSN11alglib_impl9ae_matrixE", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !13, i64 32, !15, i64 40, !7, i64 72}
!17 = !{!"_ZTSN11alglib_impl12precbuflbfgsE", !14, i64 0, !14, i64 64, !14, i64 128, !16, i64 192, !14, i64 272, !14, i64 336, !14, i64 400}
!18 = !{!"_ZTSN11alglib_impl14precbuflowrankE", !11, i64 0, !11, i64 8, !14, i64 16, !16, i64 80, !14, i64 160, !16, i64 224, !16, i64 304, !14, i64 384}
!19 = !{!"_ZTSN11alglib_impl10rcommstateE", !20, i64 0, !14, i64 8, !14, i64 72, !14, i64 136, !14, i64 200}
!20 = !{!"int", !7, i64 0}
!21 = !{!"_ZTSN11alglib_impl11linminstateE", !13, i64 0, !13, i64 1, !11, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !12, i64 56, !12, i64 64, !12, i64 72, !12, i64 80, !12, i64 88, !12, i64 96, !12, i64 104, !12, i64 112, !12, i64 120, !12, i64 128, !12, i64 136, !12, i64 144, !12, i64 152, !12, i64 160, !12, i64 168, !12, i64 176, !12, i64 184}
!22 = !{!"_ZTSN11alglib_impl17smoothnessmonitorE", !11, i64 0, !11, i64 8, !13, i64 16, !14, i64 24, !11, i64 88, !14, i64 96, !14, i64 160, !14, i64 224, !16, i64 288, !14, i64 368, !14, i64 432, !11, i64 496, !13, i64 504, !13, i64 505, !12, i64 512, !12, i64 520, !13, i64 528, !23, i64 536, !12, i64 832, !12, i64 840, !24, i64 848, !24, i64 1152, !12, i64 1456, !12, i64 1464, !25, i64 1472, !25, i64 1784, !13, i64 2096, !14, i64 2104, !14, i64 2168, !16, i64 2232, !19, i64 2312, !14, i64 2576, !14, i64 2640, !14, i64 2704, !14, i64 2768, !14, i64 2832, !14, i64 2896, !14, i64 2960, !14, i64 3024, !16, i64 3088, !16, i64 3168, !14, i64 3248, !14, i64 3312, !14, i64 3376, !14, i64 3440, !14, i64 3504, !14, i64 3568, !14, i64 3632, !14, i64 3696, !14, i64 3760, !14, i64 3824, !16, i64 3888}
!23 = !{!"_ZTSN11alglib_impl14optguardreportE", !13, i64 0, !13, i64 1, !11, i64 8, !12, i64 16, !13, i64 24, !13, i64 25, !13, i64 26, !11, i64 32, !12, i64 40, !13, i64 48, !11, i64 56, !11, i64 64, !14, i64 72, !16, i64 136, !16, i64 216}
!24 = !{!"_ZTSN11alglib_impl24optguardnonc1test0reportE", !13, i64 0, !11, i64 8, !14, i64 16, !14, i64 80, !11, i64 144, !14, i64 152, !14, i64 216, !11, i64 280, !11, i64 288, !11, i64 296}
!25 = !{!"_ZTSN11alglib_impl24optguardnonc1test1reportE", !13, i64 0, !11, i64 8, !11, i64 16, !14, i64 24, !14, i64 88, !11, i64 152, !14, i64 160, !14, i64 224, !11, i64 288, !11, i64 296, !11, i64 304}
!26 = !{!7, !7, i64 0}
!27 = !{!11, !11, i64 0}
!28 = !{!12, !12, i64 0}
!29 = !{!10, !11, i64 0}
!30 = !{!10, !11, i64 8}
!31 = !{!10, !13, i64 2339}
!32 = !{!10, !11, i64 2632}
!33 = !{!10, !11, i64 2616}
!34 = !{!10, !11, i64 2624}
!35 = !{!10, !11, i64 2832}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = !{!10, !12, i64 592}
!39 = !{!10, !12, i64 128}
!40 = !{!10, !12, i64 2344}
!41 = distinct !{!41, !37}
!42 = !{!10, !13, i64 2337}
!43 = !{!10, !12, i64 2264}
!44 = distinct !{!44, !37}
!45 = distinct !{!45, !37}
!46 = !{!10, !13, i64 2336}
!47 = !{!10, !12, i64 2032}
!48 = !{!10, !12, i64 2040}
!49 = !{!10, !12, i64 2048}
!50 = !{!10, !12, i64 2056}
!51 = !{!10, !12, i64 2064}
!52 = !{!10, !13, i64 48}
!53 = !{i8 0, i8 2}
!54 = !{}
!55 = !{!10, !13, i64 2338}
!56 = !{!13, !13, i64 0}
!57 = !{!10, !12, i64 664}
!58 = distinct !{!58, !37}
!59 = !{!10, !12, i64 16}
!60 = !{!10, !11, i64 744}
!61 = !{!10, !12, i64 56}
!62 = distinct !{!62, !37}
!63 = distinct !{!63, !37}
!64 = !{!10, !11, i64 1112}
!65 = !{!10, !11, i64 152}
!66 = !{!10, !11, i64 168}
!67 = !{!10, !11, i64 160}
!68 = !{!10, !11, i64 144}
!69 = !{!10, !12, i64 672}
!70 = !{!10, !11, i64 136}
!71 = distinct !{!71, !37}
!72 = !{!10, !11, i64 40}
!73 = !{!10, !12, i64 24}
!74 = distinct !{!74, !37}
!75 = !{!10, !12, i64 32}
!76 = !{!10, !12, i64 752}
!77 = distinct !{!77, !37}
!78 = distinct !{!78, !37}
!79 = distinct !{!79, !37}
!80 = distinct !{!80, !37}


; 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"

@_ZN11alglib_implL13minlbfgs_gtolE = external hidden local_unnamed_addr global double, align 8

; 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 uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) local_unnamed_addr #1 {
  %3 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  %4 = getelementptr inbounds i8, ptr %0, i64 2352
  %5 = load i32, ptr %4, align 8, !tbaa !5
  %6 = icmp sgt i32 %5, -1
  br i1 %6, label %7, label %26

7:                                                ; preds = %2
  %8 = getelementptr inbounds i8, ptr %0, i64 2416
  %9 = load ptr, ptr %8, align 8, !tbaa !25
  %10 = load i64, ptr %9, align 8, !tbaa !26
  %11 = getelementptr inbounds i8, ptr %9, i64 8
  %12 = load i64, ptr %11, align 8, !tbaa !26
  %13 = getelementptr inbounds i8, ptr %9, i64 16
  %14 = load i64, ptr %13, align 8, !tbaa !26
  %15 = getelementptr inbounds i8, ptr %9, i64 24
  %16 = load i64, ptr %15, align 8, !tbaa !26
  %17 = getelementptr inbounds i8, ptr %9, i64 32
  %18 = load i64, ptr %17, align 8, !tbaa !26
  %19 = getelementptr inbounds i8, ptr %9, i64 40
  %20 = load i64, ptr %19, align 8, !tbaa !26
  %21 = getelementptr inbounds i8, ptr %0, i64 2544
  %22 = load ptr, ptr %21, align 8, !tbaa !25
  %23 = load double, ptr %22, align 8, !tbaa !27
  %24 = getelementptr inbounds i8, ptr %22, i64 8
  %25 = load double, ptr %24, align 8, !tbaa !27
  br label %26

26:                                               ; preds = %2, %7
  %.sink = phi i64 [ %20, %7 ], [ 255, %2 ]
  %.0634 = phi i64 [ %10, %7 ], [ 359, %2 ]
  %.0630 = phi i64 [ %12, %7 ], [ -58, %2 ]
  %.0618 = phi i64 [ %14, %7 ], [ -919, %2 ]
  %.0617 = phi i64 [ %16, %7 ], [ -909, %2 ]
  %.0609 = phi i64 [ %18, %7 ], [ 81, %2 ]
  %.0601 = phi double [ %23, %7 ], [ 7.400000e+01, %2 ]
  %.0 = phi double [ %25, %7 ], [ -7.880000e+02, %2 ]
  store i64 %.sink, ptr %3, align 8
  switch i32 %5, label %27 [
    i32 0, label %133
    i32 1, label %198
    i32 2, label %202
    i32 3, label %220
    i32 4, label %235
    i32 5, label %250
    i32 6, label %264
    i32 7, label %308
    i32 8, label %510
    i32 9, label %514
    i32 10, label %532
    i32 11, label %547
    i32 12, label %562
    i32 13, label %576
    i32 14, label %651
  ]

27:                                               ; preds = %26
  %28 = load i64, ptr %0, align 8, !tbaa !28
  %29 = getelementptr inbounds i8, ptr %0, i64 8
  %30 = load i64, ptr %29, align 8, !tbaa !29
  %31 = getelementptr inbounds i8, ptr %0, i64 2339
  store i8 0, ptr %31, align 1, !tbaa !30
  %32 = getelementptr inbounds i8, ptr %0, i64 2616
  %33 = getelementptr inbounds i8, ptr %0, i64 2840
  %34 = getelementptr inbounds i8, ptr %0, i64 2832
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %32, i8 0, i64 24, i1 false)
  %35 = load i64, ptr %34, align 8, !tbaa !31
  %36 = icmp sgt i64 %35, 0
  tail call void @_ZN11alglib_impl21smoothnessmonitorinitEPNS_17smoothnessmonitorEllbPNS_8ae_stateE(ptr noundef nonnull %33, i64 noundef %28, i64 noundef 1, i1 noundef zeroext %36, ptr noundef %1)
  %37 = getelementptr inbounds i8, ptr %0, i64 2136
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %37, i64 noundef %28, ptr noundef %1)
  %.not.not723 = icmp sgt i64 %28, 0
  br i1 %.not.not723, label %.lr.ph726, label %._crit_edge727

.lr.ph726:                                        ; preds = %27
  %38 = getelementptr inbounds i8, ptr %0, i64 120
  %39 = getelementptr inbounds i8, ptr %0, i64 6864
  %40 = getelementptr inbounds i8, ptr %0, i64 2192
  %xtraiter824 = and i64 %28, 1
  %41 = icmp eq i64 %28, 1
  br i1 %41, label %._crit_edge727.loopexit.unr-lcssa, label %.lr.ph726.new

.lr.ph726.new:                                    ; preds = %.lr.ph726
  %unroll_iter826 = and i64 %28, 9223372036854775806
  br label %42

42:                                               ; preds = %42, %.lr.ph726.new
  %.1619724 = phi i64 [ 0, %.lr.ph726.new ], [ %66, %42 ]
  %niter827 = phi i64 [ 0, %.lr.ph726.new ], [ %niter827.next.1, %42 ]
  %43 = load ptr, ptr %38, align 8, !tbaa !25
  %44 = getelementptr inbounds double, ptr %43, i64 %.1619724
  %45 = load double, ptr %44, align 8, !tbaa !27
  %46 = load ptr, ptr %39, align 8, !tbaa !25
  %47 = getelementptr inbounds double, ptr %46, i64 %.1619724
  store double %45, ptr %47, align 8, !tbaa !27
  %48 = load ptr, ptr %38, align 8, !tbaa !25
  %49 = getelementptr inbounds double, ptr %48, i64 %.1619724
  %50 = load double, ptr %49, align 8, !tbaa !27
  %51 = fdiv double 1.000000e+00, %50
  %52 = load ptr, ptr %40, align 8, !tbaa !25
  %53 = getelementptr inbounds double, ptr %52, i64 %.1619724
  store double %51, ptr %53, align 8, !tbaa !27
  %54 = or disjoint i64 %.1619724, 1
  %55 = load ptr, ptr %38, align 8, !tbaa !25
  %56 = getelementptr inbounds double, ptr %55, i64 %54
  %57 = load double, ptr %56, align 8, !tbaa !27
  %58 = load ptr, ptr %39, align 8, !tbaa !25
  %59 = getelementptr inbounds double, ptr %58, i64 %54
  store double %57, ptr %59, align 8, !tbaa !27
  %60 = load ptr, ptr %38, align 8, !tbaa !25
  %61 = getelementptr inbounds double, ptr %60, i64 %54
  %62 = load double, ptr %61, align 8, !tbaa !27
  %63 = fdiv double 1.000000e+00, %62
  %64 = load ptr, ptr %40, align 8, !tbaa !25
  %65 = getelementptr inbounds double, ptr %64, i64 %54
  store double %63, ptr %65, align 8, !tbaa !27
  %66 = add nuw nsw i64 %.1619724, 2
  %niter827.next.1 = add i64 %niter827, 2
  %niter827.ncmp.1 = icmp eq i64 %niter827.next.1, %unroll_iter826
  br i1 %niter827.ncmp.1, label %._crit_edge727.loopexit.unr-lcssa, label %42, !llvm.loop !32

._crit_edge727.loopexit.unr-lcssa:                ; preds = %42, %.lr.ph726
  %.1619724.unr = phi i64 [ 0, %.lr.ph726 ], [ %66, %42 ]
  %lcmp.mod825.not = icmp eq i64 %xtraiter824, 0
  br i1 %lcmp.mod825.not, label %._crit_edge727, label %._crit_edge727.loopexit.epilog-lcssa

._crit_edge727.loopexit.epilog-lcssa:             ; preds = %._crit_edge727.loopexit.unr-lcssa
  %67 = load ptr, ptr %38, align 8, !tbaa !25
  %68 = getelementptr inbounds double, ptr %67, i64 %.1619724.unr
  %69 = load double, ptr %68, align 8, !tbaa !27
  %70 = load ptr, ptr %39, align 8, !tbaa !25
  %71 = getelementptr inbounds double, ptr %70, i64 %.1619724.unr
  store double %69, ptr %71, align 8, !tbaa !27
  %72 = load ptr, ptr %38, align 8, !tbaa !25
  %73 = getelementptr inbounds double, ptr %72, i64 %.1619724.unr
  %74 = load double, ptr %73, align 8, !tbaa !27
  %75 = fdiv double 1.000000e+00, %74
  %76 = load ptr, ptr %40, align 8, !tbaa !25
  %77 = getelementptr inbounds double, ptr %76, i64 %.1619724.unr
  store double %75, ptr %77, align 8, !tbaa !27
  br label %._crit_edge727

._crit_edge727:                                   ; preds = %._crit_edge727.loopexit.epilog-lcssa, %._crit_edge727.loopexit.unr-lcssa, %27
  %78 = getelementptr inbounds i8, ptr %0, i64 592
  store double 0.000000e+00, ptr %78, align 8, !tbaa !34
  tail call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %79 = getelementptr inbounds i8, ptr %0, i64 128
  %80 = load double, ptr %79, align 8, !tbaa !35
  %81 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %80, double noundef 0.000000e+00)
  br i1 %81, label %82, label %157

82:                                               ; preds = %._crit_edge727
  %83 = getelementptr inbounds i8, ptr %0, i64 2344
  %84 = load double, ptr %83, align 8, !tbaa !36
  %85 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %84, double noundef 0.000000e+00)
  br i1 %85, label %.loopexit, label %157

.loopexit.loopexit.unr-lcssa:                     ; preds = %142, %.lr.ph722
  %.3621720.unr = phi i64 [ 0, %.lr.ph722 ], [ %156, %142 ]
  %lcmp.mod820.not = icmp eq i64 %xtraiter819, 0
  br i1 %lcmp.mod820.not, label %.loopexit, label %.loopexit.loopexit.epilog-lcssa

.loopexit.loopexit.epilog-lcssa:                  ; preds = %.loopexit.loopexit.unr-lcssa
  %86 = load ptr, ptr %139, align 8, !tbaa !25
  %87 = getelementptr inbounds double, ptr %86, i64 %.3621720.unr
  %88 = load double, ptr %87, align 8, !tbaa !27
  %89 = load ptr, ptr %140, align 8, !tbaa !25
  %90 = load ptr, ptr %89, align 8, !tbaa !37
  %91 = getelementptr inbounds double, ptr %90, i64 %.3621720.unr
  store double %88, ptr %91, align 8, !tbaa !27
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit.epilog-lcssa, %.loopexit.loopexit.unr-lcssa, %133, %82
  %.1635 = phi i64 [ %28, %82 ], [ %.0634, %133 ], [ %.0634, %.loopexit.loopexit.unr-lcssa ], [ %.0634, %.loopexit.loopexit.epilog-lcssa ]
  %.1631 = phi i64 [ %30, %82 ], [ %.0630, %133 ], [ %.0630, %.loopexit.loopexit.unr-lcssa ], [ %.0630, %.loopexit.loopexit.epilog-lcssa ]
  %92 = getelementptr inbounds i8, ptr %0, i64 2840
  %93 = getelementptr inbounds i8, ptr %0, i64 680
  %94 = getelementptr inbounds i8, ptr %0, i64 64
  %95 = getelementptr inbounds i8, ptr %0, i64 2344
  %96 = load double, ptr %95, align 8, !tbaa !36
  %97 = tail call noundef zeroext i1 @_ZN11alglib_impl34smoothnessmonitorcheckgradientatx0EPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_S3_bdPNS_8ae_stateE(ptr noundef nonnull %92, ptr noundef nonnull %93, ptr noundef nonnull %94, ptr noundef nonnull %94, ptr noundef nonnull %94, i1 noundef zeroext false, double noundef %96, ptr noundef %1)
  br i1 %97, label %.preheader, label %157

.preheader:                                       ; preds = %.loopexit
  %.not658.not734 = icmp sgt i64 %.1635, 0
  br i1 %.not658.not734, label %.lr.ph736, label %._crit_edge737

.lr.ph736:                                        ; preds = %.preheader
  %98 = getelementptr inbounds i8, ptr %0, i64 5000
  %99 = getelementptr inbounds i8, ptr %0, i64 2256
  %xtraiter834 = and i64 %.1635, 3
  %100 = icmp ult i64 %.1635, 4
  br i1 %100, label %._crit_edge737.loopexit.unr-lcssa, label %.lr.ph736.new

.lr.ph736.new:                                    ; preds = %.lr.ph736
  %unroll_iter837 = and i64 %.1635, 9223372036854775804
  br label %101

101:                                              ; preds = %101, %.lr.ph736.new
  %.2620735 = phi i64 [ 0, %.lr.ph736.new ], [ %125, %101 ]
  %niter838 = phi i64 [ 0, %.lr.ph736.new ], [ %niter838.next.3, %101 ]
  %102 = load ptr, ptr %98, align 8, !tbaa !25
  %103 = getelementptr inbounds double, ptr %102, i64 %.2620735
  %104 = load double, ptr %103, align 8, !tbaa !27
  %105 = load ptr, ptr %99, align 8, !tbaa !25
  %106 = getelementptr inbounds double, ptr %105, i64 %.2620735
  store double %104, ptr %106, align 8, !tbaa !27
  %107 = or disjoint i64 %.2620735, 1
  %108 = load ptr, ptr %98, align 8, !tbaa !25
  %109 = getelementptr inbounds double, ptr %108, i64 %107
  %110 = load double, ptr %109, align 8, !tbaa !27
  %111 = load ptr, ptr %99, align 8, !tbaa !25
  %112 = getelementptr inbounds double, ptr %111, i64 %107
  store double %110, ptr %112, align 8, !tbaa !27
  %113 = or disjoint i64 %.2620735, 2
  %114 = load ptr, ptr %98, align 8, !tbaa !25
  %115 = getelementptr inbounds double, ptr %114, i64 %113
  %116 = load double, ptr %115, align 8, !tbaa !27
  %117 = load ptr, ptr %99, align 8, !tbaa !25
  %118 = getelementptr inbounds double, ptr %117, i64 %113
  store double %116, ptr %118, align 8, !tbaa !27
  %119 = or disjoint i64 %.2620735, 3
  %120 = load ptr, ptr %98, align 8, !tbaa !25
  %121 = getelementptr inbounds double, ptr %120, i64 %119
  %122 = load double, ptr %121, align 8, !tbaa !27
  %123 = load ptr, ptr %99, align 8, !tbaa !25
  %124 = getelementptr inbounds double, ptr %123, i64 %119
  store double %122, ptr %124, align 8, !tbaa !27
  %125 = add nuw nsw i64 %.2620735, 4
  %niter838.next.3 = add i64 %niter838, 4
  %niter838.ncmp.3 = icmp eq i64 %niter838.next.3, %unroll_iter837
  br i1 %niter838.ncmp.3, label %._crit_edge737.loopexit.unr-lcssa, label %101, !llvm.loop !38

._crit_edge737.loopexit.unr-lcssa:                ; preds = %101, %.lr.ph736
  %.2620735.unr = phi i64 [ 0, %.lr.ph736 ], [ %125, %101 ]
  %lcmp.mod836.not = icmp eq i64 %xtraiter834, 0
  br i1 %lcmp.mod836.not, label %._crit_edge737, label %.epil.preheader833

.epil.preheader833:                               ; preds = %._crit_edge737.loopexit.unr-lcssa, %.epil.preheader833
  %.2620735.epil = phi i64 [ %131, %.epil.preheader833 ], [ %.2620735.unr, %._crit_edge737.loopexit.unr-lcssa ]
  %epil.iter835 = phi i64 [ %epil.iter835.next, %.epil.preheader833 ], [ 0, %._crit_edge737.loopexit.unr-lcssa ]
  %126 = load ptr, ptr %98, align 8, !tbaa !25
  %127 = getelementptr inbounds double, ptr %126, i64 %.2620735.epil
  %128 = load double, ptr %127, align 8, !tbaa !27
  %129 = load ptr, ptr %99, align 8, !tbaa !25
  %130 = getelementptr inbounds double, ptr %129, i64 %.2620735.epil
  store double %128, ptr %130, align 8, !tbaa !27
  %131 = add nuw nsw i64 %.2620735.epil, 1
  %epil.iter835.next = add i64 %epil.iter835, 1
  %epil.iter835.cmp.not = icmp eq i64 %epil.iter835.next, %xtraiter834
  br i1 %epil.iter835.cmp.not, label %._crit_edge737, label %.epil.preheader833, !llvm.loop !39

._crit_edge737:                                   ; preds = %._crit_edge737.loopexit.unr-lcssa, %.epil.preheader833, %.preheader
  %.2620.lcssa = phi i64 [ 0, %.preheader ], [ %.1635, %.epil.preheader833 ], [ %.1635, %._crit_edge737.loopexit.unr-lcssa ]
  %132 = getelementptr inbounds i8, ptr %0, i64 2337
  store i8 1, ptr %132, align 1, !tbaa !41
  br label %934

133:                                              ; preds = %26
  %134 = getelementptr inbounds i8, ptr %0, i64 2337
  store i8 0, ptr %134, align 1, !tbaa !41
  %135 = getelementptr inbounds i8, ptr %0, i64 2264
  %136 = load double, ptr %135, align 8, !tbaa !42
  %137 = getelementptr inbounds i8, ptr %0, i64 5064
  %138 = load ptr, ptr %137, align 8, !tbaa !25
  store double %136, ptr %138, align 8, !tbaa !27
  %.not656.not719 = icmp sgt i64 %.0634, 0
  br i1 %.not656.not719, label %.lr.ph722, label %.loopexit

.lr.ph722:                                        ; preds = %133
  %139 = getelementptr inbounds i8, ptr %0, i64 2328
  %140 = getelementptr inbounds i8, ptr %0, i64 5144
  %xtraiter819 = and i64 %.0634, 1
  %141 = icmp eq i64 %.0634, 1
  br i1 %141, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph722.new

.lr.ph722.new:                                    ; preds = %.lr.ph722
  %unroll_iter821 = and i64 %.0634, 9223372036854775806
  br label %142

142:                                              ; preds = %142, %.lr.ph722.new
  %.3621720 = phi i64 [ 0, %.lr.ph722.new ], [ %156, %142 ]
  %niter822 = phi i64 [ 0, %.lr.ph722.new ], [ %niter822.next.1, %142 ]
  %143 = load ptr, ptr %139, align 8, !tbaa !25
  %144 = getelementptr inbounds double, ptr %143, i64 %.3621720
  %145 = load double, ptr %144, align 8, !tbaa !27
  %146 = load ptr, ptr %140, align 8, !tbaa !25
  %147 = load ptr, ptr %146, align 8, !tbaa !37
  %148 = getelementptr inbounds double, ptr %147, i64 %.3621720
  store double %145, ptr %148, align 8, !tbaa !27
  %149 = or disjoint i64 %.3621720, 1
  %150 = load ptr, ptr %139, align 8, !tbaa !25
  %151 = getelementptr inbounds double, ptr %150, i64 %149
  %152 = load double, ptr %151, align 8, !tbaa !27
  %153 = load ptr, ptr %140, align 8, !tbaa !25
  %154 = load ptr, ptr %153, align 8, !tbaa !37
  %155 = getelementptr inbounds double, ptr %154, i64 %149
  store double %152, ptr %155, align 8, !tbaa !27
  %156 = add nuw nsw i64 %.3621720, 2
  %niter822.next.1 = add i64 %niter822, 2
  %niter822.ncmp.1 = icmp eq i64 %niter822.next.1, %unroll_iter821
  br i1 %niter822.ncmp.1, label %.loopexit.loopexit.unr-lcssa, label %142, !llvm.loop !43

157:                                              ; preds = %.loopexit, %._crit_edge727, %82
  %.2636 = phi i64 [ %.1635, %.loopexit ], [ %28, %82 ], [ %28, %._crit_edge727 ]
  %.2632 = phi i64 [ %.1631, %.loopexit ], [ %30, %82 ], [ %30, %._crit_edge727 ]
  %.not657.not728 = icmp sgt i64 %.2636, 0
  br i1 %.not657.not728, label %.lr.ph731, label %._crit_edge732

.lr.ph731:                                        ; preds = %157
  %158 = getelementptr inbounds i8, ptr %0, i64 736
  %159 = getelementptr inbounds i8, ptr %0, i64 2256
  %xtraiter829 = and i64 %.2636, 3
  %160 = icmp ult i64 %.2636, 4
  br i1 %160, label %._crit_edge732.loopexit.unr-lcssa, label %.lr.ph731.new

.lr.ph731.new:                                    ; preds = %.lr.ph731
  %unroll_iter831 = and i64 %.2636, 9223372036854775804
  br label %161

161:                                              ; preds = %161, %.lr.ph731.new
  %.4622729 = phi i64 [ 0, %.lr.ph731.new ], [ %185, %161 ]
  %niter832 = phi i64 [ 0, %.lr.ph731.new ], [ %niter832.next.3, %161 ]
  %162 = load ptr, ptr %158, align 8, !tbaa !25
  %163 = getelementptr inbounds double, ptr %162, i64 %.4622729
  %164 = load double, ptr %163, align 8, !tbaa !27
  %165 = load ptr, ptr %159, align 8, !tbaa !25
  %166 = getelementptr inbounds double, ptr %165, i64 %.4622729
  store double %164, ptr %166, align 8, !tbaa !27
  %167 = or disjoint i64 %.4622729, 1
  %168 = load ptr, ptr %158, align 8, !tbaa !25
  %169 = getelementptr inbounds double, ptr %168, i64 %167
  %170 = load double, ptr %169, align 8, !tbaa !27
  %171 = load ptr, ptr %159, align 8, !tbaa !25
  %172 = getelementptr inbounds double, ptr %171, i64 %167
  store double %170, ptr %172, align 8, !tbaa !27
  %173 = or disjoint i64 %.4622729, 2
  %174 = load ptr, ptr %158, align 8, !tbaa !25
  %175 = getelementptr inbounds double, ptr %174, i64 %173
  %176 = load double, ptr %175, align 8, !tbaa !27
  %177 = load ptr, ptr %159, align 8, !tbaa !25
  %178 = getelementptr inbounds double, ptr %177, i64 %173
  store double %176, ptr %178, align 8, !tbaa !27
  %179 = or disjoint i64 %.4622729, 3
  %180 = load ptr, ptr %158, align 8, !tbaa !25
  %181 = getelementptr inbounds double, ptr %180, i64 %179
  %182 = load double, ptr %181, align 8, !tbaa !27
  %183 = load ptr, ptr %159, align 8, !tbaa !25
  %184 = getelementptr inbounds double, ptr %183, i64 %179
  store double %182, ptr %184, align 8, !tbaa !27
  %185 = add nuw nsw i64 %.4622729, 4
  %niter832.next.3 = add i64 %niter832, 4
  %niter832.ncmp.3 = icmp eq i64 %niter832.next.3, %unroll_iter831
  br i1 %niter832.ncmp.3, label %._crit_edge732.loopexit.unr-lcssa, label %161, !llvm.loop !44

._crit_edge732.loopexit.unr-lcssa:                ; preds = %161, %.lr.ph731
  %.4622729.unr = phi i64 [ 0, %.lr.ph731 ], [ %185, %161 ]
  %lcmp.mod830.not = icmp eq i64 %xtraiter829, 0
  br i1 %lcmp.mod830.not, label %._crit_edge732, label %.epil.preheader828

.epil.preheader828:                               ; preds = %._crit_edge732.loopexit.unr-lcssa, %.epil.preheader828
  %.4622729.epil = phi i64 [ %191, %.epil.preheader828 ], [ %.4622729.unr, %._crit_edge732.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader828 ], [ 0, %._crit_edge732.loopexit.unr-lcssa ]
  %186 = load ptr, ptr %158, align 8, !tbaa !25
  %187 = getelementptr inbounds double, ptr %186, i64 %.4622729.epil
  %188 = load double, ptr %187, align 8, !tbaa !27
  %189 = load ptr, ptr %159, align 8, !tbaa !25
  %190 = getelementptr inbounds double, ptr %189, i64 %.4622729.epil
  store double %188, ptr %190, align 8, !tbaa !27
  %191 = add nuw nsw i64 %.4622729.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter829
  br i1 %epil.iter.cmp.not, label %._crit_edge732, label %.epil.preheader828, !llvm.loop !45

._crit_edge732:                                   ; preds = %._crit_edge732.loopexit.unr-lcssa, %.epil.preheader828, %157
  %.4622.lcssa = phi i64 [ 0, %157 ], [ %.2636, %.epil.preheader828 ], [ %.2636, %._crit_edge732.loopexit.unr-lcssa ]
  %192 = getelementptr inbounds i8, ptr %0, i64 592
  store double 0.000000e+00, ptr %192, align 8, !tbaa !34
  tail call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %193 = getelementptr inbounds i8, ptr %0, i64 128
  %194 = load double, ptr %193, align 8, !tbaa !35
  %195 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %194, double noundef 0.000000e+00)
  br i1 %195, label %200, label %196

196:                                              ; preds = %._crit_edge732
  %197 = getelementptr inbounds i8, ptr %0, i64 2337
  store i8 1, ptr %197, align 1, !tbaa !41
  br label %934

198:                                              ; preds = %26
  %199 = getelementptr inbounds i8, ptr %0, i64 2337
  store i8 0, ptr %199, align 1, !tbaa !41
  %.phi.trans.insert765 = getelementptr inbounds i8, ptr %0, i64 2264
  %.pre766 = load double, ptr %.phi.trans.insert765, align 8, !tbaa !42
  br label %300

200:                                              ; preds = %._crit_edge732
  %201 = getelementptr inbounds i8, ptr %0, i64 2336
  store i8 1, ptr %201, align 8, !tbaa !46
  br label %934

202:                                              ; preds = %26
  %203 = getelementptr inbounds i8, ptr %0, i64 2264
  %204 = load double, ptr %203, align 8, !tbaa !42
  %205 = getelementptr inbounds i8, ptr %0, i64 2032
  store double %204, ptr %205, align 8, !tbaa !47
  br label %206

206:                                              ; preds = %264, %202
  %.5623 = phi i64 [ 0, %202 ], [ %294, %264 ]
  %.not643 = icmp slt i64 %.5623, %.0634
  br i1 %.not643, label %207, label %295

207:                                              ; preds = %206
  %208 = getelementptr inbounds i8, ptr %0, i64 2256
  %209 = load ptr, ptr %208, align 8, !tbaa !25
  %210 = getelementptr inbounds double, ptr %209, i64 %.5623
  %211 = load double, ptr %210, align 8, !tbaa !27
  %212 = getelementptr inbounds i8, ptr %0, i64 128
  %213 = load double, ptr %212, align 8, !tbaa !35
  %214 = getelementptr inbounds i8, ptr %0, i64 120
  %215 = load ptr, ptr %214, align 8, !tbaa !25
  %216 = getelementptr inbounds double, ptr %215, i64 %.5623
  %217 = load double, ptr %216, align 8, !tbaa !27
  %218 = fneg double %213
  %219 = tail call double @llvm.fmuladd.f64(double %218, double %217, double %211)
  store double %219, ptr %210, align 8, !tbaa !27
  br label %934

220:                                              ; preds = %26
  %221 = getelementptr inbounds i8, ptr %0, i64 2264
  %222 = load double, ptr %221, align 8, !tbaa !42
  %223 = getelementptr inbounds i8, ptr %0, i64 2040
  store double %222, ptr %223, align 8, !tbaa !48
  %224 = getelementptr inbounds i8, ptr %0, i64 128
  %225 = load double, ptr %224, align 8, !tbaa !35
  %226 = getelementptr inbounds i8, ptr %0, i64 120
  %227 = load ptr, ptr %226, align 8, !tbaa !25
  %228 = getelementptr inbounds double, ptr %227, i64 %.0618
  %229 = load double, ptr %228, align 8, !tbaa !27
  %230 = fmul double %225, -5.000000e-01
  %231 = tail call double @llvm.fmuladd.f64(double %230, double %229, double %.0601)
  %232 = getelementptr inbounds i8, ptr %0, i64 2256
  %233 = load ptr, ptr %232, align 8, !tbaa !25
  %234 = getelementptr inbounds double, ptr %233, i64 %.0618
  store double %231, ptr %234, align 8, !tbaa !27
  br label %934

235:                                              ; preds = %26
  %236 = getelementptr inbounds i8, ptr %0, i64 2264
  %237 = load double, ptr %236, align 8, !tbaa !42
  %238 = getelementptr inbounds i8, ptr %0, i64 2048
  store double %237, ptr %238, align 8, !tbaa !49
  %239 = getelementptr inbounds i8, ptr %0, i64 128
  %240 = load double, ptr %239, align 8, !tbaa !35
  %241 = fmul double %240, 5.000000e-01
  %242 = getelementptr inbounds i8, ptr %0, i64 120
  %243 = load ptr, ptr %242, align 8, !tbaa !25
  %244 = getelementptr inbounds double, ptr %243, i64 %.0618
  %245 = load double, ptr %244, align 8, !tbaa !27
  %246 = tail call double @llvm.fmuladd.f64(double %241, double %245, double %.0601)
  %247 = getelementptr inbounds i8, ptr %0, i64 2256
  %248 = load ptr, ptr %247, align 8, !tbaa !25
  %249 = getelementptr inbounds double, ptr %248, i64 %.0618
  store double %246, ptr %249, align 8, !tbaa !27
  br label %934

250:                                              ; preds = %26
  %251 = getelementptr inbounds i8, ptr %0, i64 2264
  %252 = load double, ptr %251, align 8, !tbaa !42
  %253 = getelementptr inbounds i8, ptr %0, i64 2056
  store double %252, ptr %253, align 8, !tbaa !50
  %254 = getelementptr inbounds i8, ptr %0, i64 128
  %255 = load double, ptr %254, align 8, !tbaa !35
  %256 = getelementptr inbounds i8, ptr %0, i64 120
  %257 = load ptr, ptr %256, align 8, !tbaa !25
  %258 = getelementptr inbounds double, ptr %257, i64 %.0618
  %259 = load double, ptr %258, align 8, !tbaa !27
  %260 = tail call double @llvm.fmuladd.f64(double %255, double %259, double %.0601)
  %261 = getelementptr inbounds i8, ptr %0, i64 2256
  %262 = load ptr, ptr %261, align 8, !tbaa !25
  %263 = getelementptr inbounds double, ptr %262, i64 %.0618
  store double %260, ptr %263, align 8, !tbaa !27
  br label %934

264:                                              ; preds = %26
  %265 = getelementptr inbounds i8, ptr %0, i64 2264
  %266 = load double, ptr %265, align 8, !tbaa !42
  %267 = getelementptr inbounds i8, ptr %0, i64 2064
  store double %266, ptr %267, align 8, !tbaa !51
  %268 = getelementptr inbounds i8, ptr %0, i64 2256
  %269 = load ptr, ptr %268, align 8, !tbaa !25
  %270 = getelementptr inbounds double, ptr %269, i64 %.0618
  store double %.0601, ptr %270, align 8, !tbaa !27
  %271 = getelementptr inbounds i8, ptr %0, i64 2056
  %272 = load double, ptr %271, align 8, !tbaa !50
  %273 = getelementptr inbounds i8, ptr %0, i64 2048
  %274 = load double, ptr %273, align 8, !tbaa !49
  %275 = fsub double %272, %274
  %276 = load double, ptr %267, align 8, !tbaa !51
  %277 = getelementptr inbounds i8, ptr %0, i64 2040
  %278 = load double, ptr %277, align 8, !tbaa !48
  %279 = fsub double %276, %278
  %280 = fneg double %279
  %281 = tail call double @llvm.fmuladd.f64(double %275, double 8.000000e+00, double %280)
  %282 = getelementptr inbounds i8, ptr %0, i64 128
  %283 = load double, ptr %282, align 8, !tbaa !35
  %284 = fmul double %283, 6.000000e+00
  %285 = getelementptr inbounds i8, ptr %0, i64 120
  %286 = load ptr, ptr %285, align 8, !tbaa !25
  %287 = getelementptr inbounds double, ptr %286, i64 %.0618
  %288 = load double, ptr %287, align 8, !tbaa !27
  %289 = fmul double %284, %288
  %290 = fdiv double %281, %289
  %291 = getelementptr inbounds i8, ptr %0, i64 2328
  %292 = load ptr, ptr %291, align 8, !tbaa !25
  %293 = getelementptr inbounds double, ptr %292, i64 %.0618
  store double %290, ptr %293, align 8, !tbaa !27
  %294 = add nsw i64 %.0618, 1
  br label %206

295:                                              ; preds = %206
  %296 = getelementptr inbounds i8, ptr %0, i64 2032
  %297 = load double, ptr %296, align 8, !tbaa !47
  %298 = getelementptr inbounds i8, ptr %0, i64 2264
  store double %297, ptr %298, align 8, !tbaa !42
  %299 = getelementptr inbounds i8, ptr %0, i64 2336
  store i8 0, ptr %299, align 8, !tbaa !46
  br label %300

300:                                              ; preds = %295, %198
  %301 = phi double [ %.pre766, %198 ], [ %297, %295 ]
  %.6624 = phi i64 [ %.0618, %198 ], [ %.5623, %295 ]
  %302 = getelementptr inbounds i8, ptr %0, i64 672
  tail call void @_ZN11alglib_impl11trimprepareEdPdPNS_8ae_stateE(double noundef %301, ptr noundef nonnull %302, ptr noundef %1)
  %303 = getelementptr inbounds i8, ptr %0, i64 48
  %304 = load i8, ptr %303, align 8, !tbaa !52, !range !53, !noundef !54
  %305 = trunc nuw i8 %304 to i1
  br i1 %305, label %306, label %310

306:                                              ; preds = %300
  tail call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %307 = getelementptr inbounds i8, ptr %0, i64 2338
  store i8 1, ptr %307, align 2, !tbaa !55
  br label %934

308:                                              ; preds = %26
  %309 = getelementptr inbounds i8, ptr %0, i64 2338
  store i8 0, ptr %309, align 2, !tbaa !55
  br label %310

310:                                              ; preds = %300, %308
  %311 = getelementptr inbounds i8, ptr %0, i64 2339
  %312 = load i8, ptr %311, align 1, !tbaa !30, !range !53, !noundef !54
  %313 = trunc nuw i8 %312 to i1
  br i1 %313, label %314, label %316

314:                                              ; preds = %310
  %315 = getelementptr inbounds i8, ptr %0, i64 2632
  store i64 8, ptr %315, align 8, !tbaa !56
  br label %952

316:                                              ; preds = %310
  %317 = getelementptr inbounds i8, ptr %0, i64 2624
  store i64 1, ptr %317, align 8, !tbaa !57
  %318 = getelementptr inbounds i8, ptr %0, i64 2264
  %319 = load double, ptr %318, align 8, !tbaa !42
  %320 = getelementptr inbounds i8, ptr %0, i64 664
  store double %319, ptr %320, align 8, !tbaa !58
  %.not644.not666 = icmp sgt i64 %.0634, 0
  br i1 %.not644.not666, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %316
  %321 = getelementptr inbounds i8, ptr %0, i64 2328
  %322 = getelementptr inbounds i8, ptr %0, i64 120
  br label %323

323:                                              ; preds = %.lr.ph, %323
  %.1602668 = phi double [ 0.000000e+00, %.lr.ph ], [ %332, %323 ]
  %.7625667 = phi i64 [ 0, %.lr.ph ], [ %333, %323 ]
  %324 = load ptr, ptr %321, align 8, !tbaa !25
  %325 = getelementptr inbounds double, ptr %324, i64 %.7625667
  %326 = load double, ptr %325, align 8, !tbaa !27
  %327 = load ptr, ptr %322, align 8, !tbaa !25
  %328 = getelementptr inbounds double, ptr %327, i64 %.7625667
  %329 = load double, ptr %328, align 8, !tbaa !27
  %330 = fmul double %326, %329
  %331 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %330, ptr noundef %1)
  %332 = fadd double %.1602668, %331
  %333 = add nuw nsw i64 %.7625667, 1
  %exitcond.not = icmp eq i64 %333, %.0634
  br i1 %exitcond.not, label %._crit_edge, label %323, !llvm.loop !59

._crit_edge:                                      ; preds = %323, %316
  %.7625.lcssa = phi i64 [ 0, %316 ], [ %.0634, %323 ]
  %.1602.lcssa = phi double [ 0.000000e+00, %316 ], [ %332, %323 ]
  %334 = add nsw i64 %.0634, -1
  %335 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.1602.lcssa, ptr noundef %1)
  %336 = getelementptr inbounds i8, ptr %0, i64 16
  %337 = load double, ptr %336, align 8, !tbaa !60
  %338 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %335, double noundef %337)
  br i1 %338, label %339, label %341

339:                                              ; preds = %._crit_edge
  %340 = getelementptr inbounds i8, ptr %0, i64 2632
  store i64 4, ptr %340, align 8, !tbaa !56
  br label %952

341:                                              ; preds = %._crit_edge
  %342 = getelementptr inbounds i8, ptr %0, i64 528
  %343 = getelementptr inbounds i8, ptr %0, i64 584
  %344 = load ptr, ptr %343, align 8, !tbaa !25
  %345 = getelementptr inbounds i8, ptr %0, i64 2328
  %346 = load ptr, ptr %345, align 8, !tbaa !25
  %347 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %334)
  tail call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %344, i64 noundef 1, ptr noundef %346, i64 noundef 1, i64 noundef %347)
  %348 = getelementptr inbounds i8, ptr %0, i64 744
  %349 = load i64, ptr %348, align 8, !tbaa !61
  %350 = icmp eq i64 %349, 0
  br i1 %350, label %351, label %364

351:                                              ; preds = %341
  %352 = load ptr, ptr %345, align 8, !tbaa !25
  %353 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %334)
  %354 = tail call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %352, i64 noundef 1, ptr noundef %352, i64 noundef 1, i64 noundef %353)
  %355 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %354, ptr noundef %1)
  %356 = getelementptr inbounds i8, ptr %0, i64 56
  %357 = load double, ptr %356, align 8, !tbaa !62
  %358 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %357, double noundef 0.000000e+00)
  %359 = fdiv double 1.000000e+00, %355
  br i1 %358, label %thread-pre-split, label %360

360:                                              ; preds = %351
  %361 = load double, ptr %356, align 8, !tbaa !62
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %351, %360
  %.sink783 = phi double [ %361, %360 ], [ 1.000000e+00, %351 ]
  %362 = tail call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %359, double noundef %.sink783, ptr noundef %1)
  %363 = getelementptr inbounds i8, ptr %0, i64 592
  store double %362, ptr %363, align 8
  %.pr = load i64, ptr %348, align 8, !tbaa !61
  br label %364

364:                                              ; preds = %thread-pre-split, %341
  %365 = phi i64 [ %.pr, %thread-pre-split ], [ %349, %341 ]
  %.2603 = phi double [ %355, %thread-pre-split ], [ %.1602.lcssa, %341 ]
  %366 = icmp eq i64 %365, 1
  br i1 %366, label %367, label %371

367:                                              ; preds = %364
  %368 = getelementptr inbounds i8, ptr %0, i64 760
  %369 = getelementptr inbounds i8, ptr %0, i64 2072
  tail call void @_ZN11alglib_impl17fblscholeskysolveEPNS_9ae_matrixEdlbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %368, double noundef 1.000000e+00, i64 noundef %.0634, i1 noundef zeroext true, ptr noundef nonnull %342, ptr noundef nonnull %369, ptr noundef %1)
  %370 = getelementptr inbounds i8, ptr %0, i64 592
  store double 1.000000e+00, ptr %370, align 8, !tbaa !34
  %.pre767 = load i64, ptr %348, align 8, !tbaa !61
  br label %371

371:                                              ; preds = %367, %364
  %372 = phi i64 [ %.pre767, %367 ], [ %365, %364 ]
  %373 = icmp eq i64 %372, 2
  br i1 %373, label %.preheader664, label %401

.preheader664:                                    ; preds = %371
  br i1 %.not644.not666, label %.lr.ph672, label %._crit_edge673

.lr.ph672:                                        ; preds = %.preheader664
  %374 = getelementptr inbounds i8, ptr %0, i64 896
  %xtraiter = and i64 %.0634, 1
  %375 = icmp eq i64 %.0634, 1
  br i1 %375, label %._crit_edge673.loopexit.unr-lcssa, label %.lr.ph672.new

.lr.ph672.new:                                    ; preds = %.lr.ph672
  %unroll_iter = and i64 %.0634, 9223372036854775806
  br label %376

376:                                              ; preds = %376, %.lr.ph672.new
  %.8626671 = phi i64 [ 0, %.lr.ph672.new ], [ %392, %376 ]
  %niter = phi i64 [ 0, %.lr.ph672.new ], [ %niter.next.1, %376 ]
  %377 = load ptr, ptr %343, align 8, !tbaa !25
  %378 = getelementptr inbounds double, ptr %377, i64 %.8626671
  %379 = load double, ptr %378, align 8, !tbaa !27
  %380 = load ptr, ptr %374, align 8, !tbaa !25
  %381 = getelementptr inbounds double, ptr %380, i64 %.8626671
  %382 = load double, ptr %381, align 8, !tbaa !27
  %383 = fdiv double %379, %382
  store double %383, ptr %378, align 8, !tbaa !27
  %384 = or disjoint i64 %.8626671, 1
  %385 = load ptr, ptr %343, align 8, !tbaa !25
  %386 = getelementptr inbounds double, ptr %385, i64 %384
  %387 = load double, ptr %386, align 8, !tbaa !27
  %388 = load ptr, ptr %374, align 8, !tbaa !25
  %389 = getelementptr inbounds double, ptr %388, i64 %384
  %390 = load double, ptr %389, align 8, !tbaa !27
  %391 = fdiv double %387, %390
  store double %391, ptr %386, align 8, !tbaa !27
  %392 = add nuw nsw i64 %.8626671, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge673.loopexit.unr-lcssa, label %376, !llvm.loop !63

._crit_edge673.loopexit.unr-lcssa:                ; preds = %376, %.lr.ph672
  %.8626671.unr = phi i64 [ 0, %.lr.ph672 ], [ %392, %376 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge673, label %._crit_edge673.loopexit.epilog-lcssa

._crit_edge673.loopexit.epilog-lcssa:             ; preds = %._crit_edge673.loopexit.unr-lcssa
  %393 = load ptr, ptr %343, align 8, !tbaa !25
  %394 = getelementptr inbounds double, ptr %393, i64 %.8626671.unr
  %395 = load double, ptr %394, align 8, !tbaa !27
  %396 = load ptr, ptr %374, align 8, !tbaa !25
  %397 = getelementptr inbounds double, ptr %396, i64 %.8626671.unr
  %398 = load double, ptr %397, align 8, !tbaa !27
  %399 = fdiv double %395, %398
  store double %399, ptr %394, align 8, !tbaa !27
  br label %._crit_edge673

._crit_edge673:                                   ; preds = %._crit_edge673.loopexit.epilog-lcssa, %._crit_edge673.loopexit.unr-lcssa, %.preheader664
  %.8626.lcssa = phi i64 [ 0, %.preheader664 ], [ %.0634, %._crit_edge673.loopexit.unr-lcssa ], [ %.0634, %._crit_edge673.loopexit.epilog-lcssa ]
  %400 = getelementptr inbounds i8, ptr %0, i64 592
  store double 1.000000e+00, ptr %400, align 8, !tbaa !34
  br label %401

401:                                              ; preds = %._crit_edge673, %371
  %.9627 = phi i64 [ %.8626.lcssa, %._crit_edge673 ], [ %.7625.lcssa, %371 ]
  %402 = icmp eq i64 %372, 3
  br i1 %402, label %.preheader663, label %433

.preheader663:                                    ; preds = %401
  br i1 %.not644.not666, label %.lr.ph677, label %._crit_edge678

.lr.ph677:                                        ; preds = %.preheader663
  %403 = getelementptr inbounds i8, ptr %0, i64 120
  %xtraiter804 = and i64 %.0634, 1
  %404 = icmp eq i64 %.0634, 1
  br i1 %404, label %._crit_edge678.loopexit.unr-lcssa, label %.lr.ph677.new

.lr.ph677.new:                                    ; preds = %.lr.ph677
  %unroll_iter806 = and i64 %.0634, 9223372036854775806
  br label %405

405:                                              ; preds = %405, %.lr.ph677.new
  %.10628676 = phi i64 [ 0, %.lr.ph677.new ], [ %423, %405 ]
  %niter807 = phi i64 [ 0, %.lr.ph677.new ], [ %niter807.next.1, %405 ]
  %406 = load ptr, ptr %343, align 8, !tbaa !25
  %407 = getelementptr inbounds double, ptr %406, i64 %.10628676
  %408 = load double, ptr %407, align 8, !tbaa !27
  %409 = load ptr, ptr %403, align 8, !tbaa !25
  %410 = getelementptr inbounds double, ptr %409, i64 %.10628676
  %411 = load double, ptr %410, align 8, !tbaa !27
  %412 = fmul double %408, %411
  %413 = fmul double %411, %412
  store double %413, ptr %407, align 8, !tbaa !27
  %414 = or disjoint i64 %.10628676, 1
  %415 = load ptr, ptr %343, align 8, !tbaa !25
  %416 = getelementptr inbounds double, ptr %415, i64 %414
  %417 = load double, ptr %416, align 8, !tbaa !27
  %418 = load ptr, ptr %403, align 8, !tbaa !25
  %419 = getelementptr inbounds double, ptr %418, i64 %414
  %420 = load double, ptr %419, align 8, !tbaa !27
  %421 = fmul double %417, %420
  %422 = fmul double %420, %421
  store double %422, ptr %416, align 8, !tbaa !27
  %423 = add nuw nsw i64 %.10628676, 2
  %niter807.next.1 = add i64 %niter807, 2
  %niter807.ncmp.1 = icmp eq i64 %niter807.next.1, %unroll_iter806
  br i1 %niter807.ncmp.1, label %._crit_edge678.loopexit.unr-lcssa, label %405, !llvm.loop !64

._crit_edge678.loopexit.unr-lcssa:                ; preds = %405, %.lr.ph677
  %.10628676.unr = phi i64 [ 0, %.lr.ph677 ], [ %423, %405 ]
  %lcmp.mod805.not = icmp eq i64 %xtraiter804, 0
  br i1 %lcmp.mod805.not, label %._crit_edge678, label %._crit_edge678.loopexit.epilog-lcssa

._crit_edge678.loopexit.epilog-lcssa:             ; preds = %._crit_edge678.loopexit.unr-lcssa
  %424 = load ptr, ptr %343, align 8, !tbaa !25
  %425 = getelementptr inbounds double, ptr %424, i64 %.10628676.unr
  %426 = load double, ptr %425, align 8, !tbaa !27
  %427 = load ptr, ptr %403, align 8, !tbaa !25
  %428 = getelementptr inbounds double, ptr %427, i64 %.10628676.unr
  %429 = load double, ptr %428, align 8, !tbaa !27
  %430 = fmul double %426, %429
  %431 = fmul double %429, %430
  store double %431, ptr %425, align 8, !tbaa !27
  br label %._crit_edge678

._crit_edge678:                                   ; preds = %._crit_edge678.loopexit.epilog-lcssa, %._crit_edge678.loopexit.unr-lcssa, %.preheader663
  %.10628.lcssa = phi i64 [ 0, %.preheader663 ], [ %.0634, %._crit_edge678.loopexit.unr-lcssa ], [ %.0634, %._crit_edge678.loopexit.epilog-lcssa ]
  %432 = getelementptr inbounds i8, ptr %0, i64 592
  store double 1.000000e+00, ptr %432, align 8, !tbaa !34
  br label %433

433:                                              ; preds = %._crit_edge678, %401
  %.11629 = phi i64 [ %.10628.lcssa, %._crit_edge678 ], [ %.9627, %401 ]
  %434 = icmp eq i64 %372, 4
  br i1 %434, label %435, label %443

435:                                              ; preds = %433
  %436 = getelementptr inbounds i8, ptr %0, i64 968
  %437 = getelementptr inbounds i8, ptr %0, i64 904
  %438 = getelementptr inbounds i8, ptr %0, i64 1032
  %439 = getelementptr inbounds i8, ptr %0, i64 1112
  %440 = load i64, ptr %439, align 8, !tbaa !65
  %441 = getelementptr inbounds i8, ptr %0, i64 1120
  tail call void @_ZN11alglib_impl26inexactlbfgspreconditionerEPNS_9ae_vectorElS1_S1_PNS_9ae_matrixElPNS_12precbuflbfgsEPNS_8ae_stateE(ptr noundef nonnull %342, i64 noundef %.0634, ptr noundef nonnull %436, ptr noundef nonnull %437, ptr noundef nonnull %438, i64 noundef %440, ptr noundef nonnull %441, ptr noundef %1)
  %442 = getelementptr inbounds i8, ptr %0, i64 592
  store double 1.000000e+00, ptr %442, align 8, !tbaa !34
  %.pre768 = load i64, ptr %348, align 8, !tbaa !61
  br label %443

443:                                              ; preds = %435, %433
  %444 = phi i64 [ %.pre768, %435 ], [ %372, %433 ]
  %445 = icmp eq i64 %444, 5
  br i1 %445, label %446, label %449

446:                                              ; preds = %443
  %447 = getelementptr inbounds i8, ptr %0, i64 1584
  tail call void @_ZN11alglib_impl26applylowrankpreconditionerEPNS_9ae_vectorEPNS_14precbuflowrankEPNS_8ae_stateE(ptr noundef nonnull %342, ptr noundef nonnull %447, ptr noundef %1)
  %448 = getelementptr inbounds i8, ptr %0, i64 592
  store double 1.000000e+00, ptr %448, align 8, !tbaa !34
  br label %449

449:                                              ; preds = %446, %443
  %450 = getelementptr inbounds i8, ptr %0, i64 152
  store i64 0, ptr %450, align 8, !tbaa !66
  br label %451

451:                                              ; preds = %750, %._crit_edge714, %449
  %452 = phi i64 [ 0, %449 ], [ %.pre770.pre, %750 ], [ %933, %._crit_edge714 ]
  %.12 = phi i64 [ %.11629, %449 ], [ %.17.lcssa, %750 ], [ %.21.lcssa, %._crit_edge714 ]
  %.1610 = phi i64 [ %.0609, %449 ], [ %.3612, %750 ], [ %.5614.lcssa, %._crit_edge714 ]
  %.3604 = phi double [ %.2603, %449 ], [ %.6607.lcssa, %750 ], [ %.9.lcssa, %._crit_edge714 ]
  %.1 = phi double [ %.0, %449 ], [ %.3, %750 ], [ %.5.lcssa, %._crit_edge714 ]
  %453 = getelementptr inbounds i8, ptr %0, i64 152
  %454 = srem i64 %452, %.0630
  %455 = getelementptr inbounds i8, ptr %0, i64 168
  store i64 %454, ptr %455, align 8, !tbaa !67
  %456 = add nsw i64 %.0630, -1
  %457 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %452, i64 noundef %456, ptr noundef %1)
  %458 = getelementptr inbounds i8, ptr %0, i64 160
  store i64 %457, ptr %458, align 8, !tbaa !68
  %459 = getelementptr inbounds i8, ptr %0, i64 456
  %460 = load ptr, ptr %459, align 8, !tbaa !25
  %461 = getelementptr inbounds i8, ptr %0, i64 2200
  %462 = getelementptr inbounds i8, ptr %0, i64 2256
  %463 = load ptr, ptr %462, align 8, !tbaa !25
  %464 = add nsw i64 %.0634, -1
  %465 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %464)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %460, i64 noundef 1, ptr noundef %463, i64 noundef 1, i64 noundef %465)
  %466 = getelementptr inbounds i8, ptr %0, i64 392
  %467 = load ptr, ptr %466, align 8, !tbaa !25
  %468 = load i64, ptr %455, align 8, !tbaa !67
  %469 = getelementptr inbounds ptr, ptr %467, i64 %468
  %470 = load ptr, ptr %469, align 8, !tbaa !37
  %471 = load ptr, ptr %462, align 8, !tbaa !25
  %472 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %464)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %470, i64 noundef 1, ptr noundef %471, i64 noundef 1, i64 noundef %472)
  %473 = getelementptr inbounds i8, ptr %0, i64 312
  %474 = load ptr, ptr %473, align 8, !tbaa !25
  %475 = load i64, ptr %455, align 8, !tbaa !67
  %476 = getelementptr inbounds ptr, ptr %474, i64 %475
  %477 = load ptr, ptr %476, align 8, !tbaa !37
  %478 = getelementptr inbounds i8, ptr %0, i64 2272
  %479 = getelementptr inbounds i8, ptr %0, i64 2328
  %480 = load ptr, ptr %479, align 8, !tbaa !25
  %481 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %464)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %477, i64 noundef 1, ptr noundef %480, i64 noundef 1, i64 noundef %481)
  %482 = getelementptr inbounds i8, ptr %0, i64 144
  store i64 0, ptr %482, align 8, !tbaa !69
  %483 = load i64, ptr %453, align 8, !tbaa !66
  %.not647 = icmp eq i64 %483, 0
  br i1 %.not647, label %486, label %484

484:                                              ; preds = %451
  %485 = getelementptr inbounds i8, ptr %0, i64 592
  store double 1.000000e+00, ptr %485, align 8, !tbaa !34
  br label %486

486:                                              ; preds = %484, %451
  %487 = getelementptr inbounds i8, ptr %0, i64 528
  %488 = getelementptr inbounds i8, ptr %0, i64 592
  call void @_ZN11alglib_impl16linminnormalizedEPNS_9ae_vectorEPdlPNS_8ae_stateE(ptr noundef nonnull %487, ptr noundef nonnull %488, i64 noundef %.0634, ptr noundef %1)
  %489 = getelementptr inbounds i8, ptr %0, i64 2840
  %490 = getelementptr inbounds i8, ptr %0, i64 64
  %491 = getelementptr inbounds i8, ptr %0, i64 2136
  %492 = getelementptr inbounds i8, ptr %0, i64 2264
  %493 = load double, ptr %492, align 8, !tbaa !42
  call void @_ZN11alglib_impl34smoothnessmonitorstartlinesearch1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_PNS_8ae_stateE(ptr noundef nonnull %489, ptr noundef nonnull %490, ptr noundef nonnull %491, ptr noundef nonnull %461, double noundef %493, ptr noundef nonnull %478, ptr noundef %1)
  %494 = getelementptr inbounds i8, ptr %0, i64 56
  %495 = load double, ptr %494, align 8, !tbaa !62
  %496 = load double, ptr @_ZN11alglib_implL13minlbfgs_gtolE, align 8, !tbaa !27
  %497 = getelementptr inbounds i8, ptr %0, i64 136
  %498 = getelementptr inbounds i8, ptr %0, i64 600
  %499 = getelementptr inbounds i8, ptr %0, i64 2640
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_S1_S2_ddPlS3_S1_PNS_11linminstateES3_PNS_8ae_stateE(i64 noundef %.0634, ptr noundef nonnull %461, ptr noundef nonnull %492, ptr noundef nonnull %478, ptr noundef nonnull %487, ptr noundef nonnull %488, double noundef %495, double noundef %496, ptr noundef nonnull %3, ptr noundef nonnull %497, ptr noundef nonnull %498, ptr noundef nonnull %499, ptr noundef nonnull %482, ptr noundef %1)
  br label %500

500:                                              ; preds = %612, %486
  %.13 = phi i64 [ %.12, %486 ], [ %.15, %612 ]
  %.2611 = phi i64 [ %.1610, %486 ], [ %.0609, %612 ]
  %.4605 = phi double [ %.3604, %486 ], [ %.0601, %612 ]
  %.2 = phi double [ %.1, %486 ], [ %.0, %612 ]
  %501 = getelementptr inbounds i8, ptr %0, i64 144
  %502 = load i64, ptr %501, align 8, !tbaa !69
  %503 = icmp eq i64 %502, 0
  br i1 %503, label %632, label %504

504:                                              ; preds = %500
  call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %505 = getelementptr inbounds i8, ptr %0, i64 128
  %506 = load double, ptr %505, align 8, !tbaa !35
  %507 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %506, double noundef 0.000000e+00)
  br i1 %507, label %512, label %508

508:                                              ; preds = %504
  %509 = getelementptr inbounds i8, ptr %0, i64 2337
  store i8 1, ptr %509, align 1, !tbaa !41
  br label %934

510:                                              ; preds = %26
  %511 = getelementptr inbounds i8, ptr %0, i64 2337
  store i8 0, ptr %511, align 1, !tbaa !41
  %.phi.trans.insert = getelementptr inbounds i8, ptr %0, i64 2264
  %.pre = load double, ptr %.phi.trans.insert, align 8, !tbaa !42
  br label %612

512:                                              ; preds = %504
  %513 = getelementptr inbounds i8, ptr %0, i64 2336
  store i8 1, ptr %513, align 8, !tbaa !46
  br label %934

514:                                              ; preds = %26
  %515 = getelementptr inbounds i8, ptr %0, i64 2264
  %516 = load double, ptr %515, align 8, !tbaa !42
  %517 = getelementptr inbounds i8, ptr %0, i64 2032
  store double %516, ptr %517, align 8, !tbaa !47
  br label %518

518:                                              ; preds = %576, %514
  %.14 = phi i64 [ 0, %514 ], [ %606, %576 ]
  %.not = icmp slt i64 %.14, %.0634
  br i1 %.not, label %519, label %607

519:                                              ; preds = %518
  %520 = getelementptr inbounds i8, ptr %0, i64 2256
  %521 = load ptr, ptr %520, align 8, !tbaa !25
  %522 = getelementptr inbounds double, ptr %521, i64 %.14
  %523 = load double, ptr %522, align 8, !tbaa !27
  %524 = getelementptr inbounds i8, ptr %0, i64 128
  %525 = load double, ptr %524, align 8, !tbaa !35
  %526 = getelementptr inbounds i8, ptr %0, i64 120
  %527 = load ptr, ptr %526, align 8, !tbaa !25
  %528 = getelementptr inbounds double, ptr %527, i64 %.14
  %529 = load double, ptr %528, align 8, !tbaa !27
  %530 = fneg double %525
  %531 = tail call double @llvm.fmuladd.f64(double %530, double %529, double %523)
  store double %531, ptr %522, align 8, !tbaa !27
  br label %934

532:                                              ; preds = %26
  %533 = getelementptr inbounds i8, ptr %0, i64 2264
  %534 = load double, ptr %533, align 8, !tbaa !42
  %535 = getelementptr inbounds i8, ptr %0, i64 2040
  store double %534, ptr %535, align 8, !tbaa !48
  %536 = getelementptr inbounds i8, ptr %0, i64 128
  %537 = load double, ptr %536, align 8, !tbaa !35
  %538 = getelementptr inbounds i8, ptr %0, i64 120
  %539 = load ptr, ptr %538, align 8, !tbaa !25
  %540 = getelementptr inbounds double, ptr %539, i64 %.0618
  %541 = load double, ptr %540, align 8, !tbaa !27
  %542 = fmul double %537, -5.000000e-01
  %543 = tail call double @llvm.fmuladd.f64(double %542, double %541, double %.0601)
  %544 = getelementptr inbounds i8, ptr %0, i64 2256
  %545 = load ptr, ptr %544, align 8, !tbaa !25
  %546 = getelementptr inbounds double, ptr %545, i64 %.0618
  store double %543, ptr %546, align 8, !tbaa !27
  br label %934

547:                                              ; preds = %26
  %548 = getelementptr inbounds i8, ptr %0, i64 2264
  %549 = load double, ptr %548, align 8, !tbaa !42
  %550 = getelementptr inbounds i8, ptr %0, i64 2048
  store double %549, ptr %550, align 8, !tbaa !49
  %551 = getelementptr inbounds i8, ptr %0, i64 128
  %552 = load double, ptr %551, align 8, !tbaa !35
  %553 = fmul double %552, 5.000000e-01
  %554 = getelementptr inbounds i8, ptr %0, i64 120
  %555 = load ptr, ptr %554, align 8, !tbaa !25
  %556 = getelementptr inbounds double, ptr %555, i64 %.0618
  %557 = load double, ptr %556, align 8, !tbaa !27
  %558 = tail call double @llvm.fmuladd.f64(double %553, double %557, double %.0601)
  %559 = getelementptr inbounds i8, ptr %0, i64 2256
  %560 = load ptr, ptr %559, align 8, !tbaa !25
  %561 = getelementptr inbounds double, ptr %560, i64 %.0618
  store double %558, ptr %561, align 8, !tbaa !27
  br label %934

562:                                              ; preds = %26
  %563 = getelementptr inbounds i8, ptr %0, i64 2264
  %564 = load double, ptr %563, align 8, !tbaa !42
  %565 = getelementptr inbounds i8, ptr %0, i64 2056
  store double %564, ptr %565, align 8, !tbaa !50
  %566 = getelementptr inbounds i8, ptr %0, i64 128
  %567 = load double, ptr %566, align 8, !tbaa !35
  %568 = getelementptr inbounds i8, ptr %0, i64 120
  %569 = load ptr, ptr %568, align 8, !tbaa !25
  %570 = getelementptr inbounds double, ptr %569, i64 %.0618
  %571 = load double, ptr %570, align 8, !tbaa !27
  %572 = tail call double @llvm.fmuladd.f64(double %567, double %571, double %.0601)
  %573 = getelementptr inbounds i8, ptr %0, i64 2256
  %574 = load ptr, ptr %573, align 8, !tbaa !25
  %575 = getelementptr inbounds double, ptr %574, i64 %.0618
  store double %572, ptr %575, align 8, !tbaa !27
  br label %934

576:                                              ; preds = %26
  %577 = getelementptr inbounds i8, ptr %0, i64 2264
  %578 = load double, ptr %577, align 8, !tbaa !42
  %579 = getelementptr inbounds i8, ptr %0, i64 2064
  store double %578, ptr %579, align 8, !tbaa !51
  %580 = getelementptr inbounds i8, ptr %0, i64 2256
  %581 = load ptr, ptr %580, align 8, !tbaa !25
  %582 = getelementptr inbounds double, ptr %581, i64 %.0618
  store double %.0601, ptr %582, align 8, !tbaa !27
  %583 = getelementptr inbounds i8, ptr %0, i64 2056
  %584 = load double, ptr %583, align 8, !tbaa !50
  %585 = getelementptr inbounds i8, ptr %0, i64 2048
  %586 = load double, ptr %585, align 8, !tbaa !49
  %587 = fsub double %584, %586
  %588 = load double, ptr %579, align 8, !tbaa !51
  %589 = getelementptr inbounds i8, ptr %0, i64 2040
  %590 = load double, ptr %589, align 8, !tbaa !48
  %591 = fsub double %588, %590
  %592 = fneg double %591
  %593 = tail call double @llvm.fmuladd.f64(double %587, double 8.000000e+00, double %592)
  %594 = getelementptr inbounds i8, ptr %0, i64 128
  %595 = load double, ptr %594, align 8, !tbaa !35
  %596 = fmul double %595, 6.000000e+00
  %597 = getelementptr inbounds i8, ptr %0, i64 120
  %598 = load ptr, ptr %597, align 8, !tbaa !25
  %599 = getelementptr inbounds double, ptr %598, i64 %.0618
  %600 = load double, ptr %599, align 8, !tbaa !27
  %601 = fmul double %596, %600
  %602 = fdiv double %593, %601
  %603 = getelementptr inbounds i8, ptr %0, i64 2328
  %604 = load ptr, ptr %603, align 8, !tbaa !25
  %605 = getelementptr inbounds double, ptr %604, i64 %.0618
  store double %602, ptr %605, align 8, !tbaa !27
  %606 = add nsw i64 %.0618, 1
  br label %518

607:                                              ; preds = %518
  %608 = getelementptr inbounds i8, ptr %0, i64 2032
  %609 = load double, ptr %608, align 8, !tbaa !47
  %610 = getelementptr inbounds i8, ptr %0, i64 2264
  store double %609, ptr %610, align 8, !tbaa !42
  %611 = getelementptr inbounds i8, ptr %0, i64 2336
  store i8 0, ptr %611, align 8, !tbaa !46
  br label %612

612:                                              ; preds = %607, %510
  %613 = phi double [ %.pre, %510 ], [ %609, %607 ]
  %.15 = phi i64 [ %.0618, %510 ], [ %.14, %607 ]
  %614 = getelementptr inbounds i8, ptr %0, i64 2840
  %615 = getelementptr inbounds i8, ptr %0, i64 64
  %616 = getelementptr inbounds i8, ptr %0, i64 2136
  %617 = getelementptr inbounds i8, ptr %0, i64 528
  %618 = getelementptr inbounds i8, ptr %0, i64 592
  %619 = load double, ptr %618, align 8, !tbaa !34
  %620 = getelementptr inbounds i8, ptr %0, i64 2200
  %621 = getelementptr inbounds i8, ptr %0, i64 2264
  %622 = getelementptr inbounds i8, ptr %0, i64 2272
  tail call void @_ZN11alglib_impl31smoothnessmonitorenqueuepoint1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_dS3_PNS_8ae_stateE(ptr noundef nonnull %614, ptr noundef nonnull %615, ptr noundef nonnull %616, ptr noundef nonnull %617, double noundef %619, ptr noundef nonnull %620, double noundef %613, ptr noundef nonnull %622, ptr noundef %1)
  %623 = getelementptr inbounds i8, ptr %0, i64 672
  %624 = load double, ptr %623, align 8, !tbaa !70
  tail call void @_ZN11alglib_impl12trimfunctionEPdPNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef nonnull %621, ptr noundef nonnull %622, i64 noundef %.0634, double noundef %624, ptr noundef %1)
  %625 = getelementptr inbounds i8, ptr %0, i64 56
  %626 = load double, ptr %625, align 8, !tbaa !62
  %627 = load double, ptr @_ZN11alglib_implL13minlbfgs_gtolE, align 8, !tbaa !27
  %628 = getelementptr inbounds i8, ptr %0, i64 136
  %629 = getelementptr inbounds i8, ptr %0, i64 600
  %630 = getelementptr inbounds i8, ptr %0, i64 2640
  %631 = getelementptr inbounds i8, ptr %0, i64 144
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_S1_S2_ddPlS3_S1_PNS_11linminstateES3_PNS_8ae_stateE(i64 noundef %.0634, ptr noundef nonnull %620, ptr noundef nonnull %621, ptr noundef nonnull %622, ptr noundef nonnull %617, ptr noundef nonnull %618, double noundef %626, double noundef %627, ptr noundef nonnull %3, ptr noundef nonnull %628, ptr noundef nonnull %629, ptr noundef nonnull %630, ptr noundef nonnull %631, ptr noundef %1)
  br label %500

632:                                              ; preds = %500
  %633 = getelementptr inbounds i8, ptr %0, i64 2840
  call void @_ZN11alglib_impl35smoothnessmonitorfinalizelinesearchEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef nonnull %633, ptr noundef %1)
  %634 = getelementptr inbounds i8, ptr %0, i64 2339
  %635 = load i8, ptr %634, align 1, !tbaa !30, !range !53, !noundef !54
  %636 = trunc nuw i8 %635 to i1
  br i1 %636, label %637, label %645

637:                                              ; preds = %632
  %638 = getelementptr inbounds i8, ptr %0, i64 2256
  %639 = load ptr, ptr %638, align 8, !tbaa !25
  %640 = getelementptr inbounds i8, ptr %0, i64 456
  %641 = load ptr, ptr %640, align 8, !tbaa !25
  %642 = add nsw i64 %.0634, -1
  %643 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %642)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %639, i64 noundef 1, ptr noundef %641, i64 noundef 1, i64 noundef %643)
  %644 = getelementptr inbounds i8, ptr %0, i64 2632
  store i64 8, ptr %644, align 8, !tbaa !56
  br label %952

645:                                              ; preds = %632
  %646 = getelementptr inbounds i8, ptr %0, i64 48
  %647 = load i8, ptr %646, align 8, !tbaa !52, !range !53, !noundef !54
  %648 = trunc nuw i8 %647 to i1
  br i1 %648, label %649, label %653

649:                                              ; preds = %645
  call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %650 = getelementptr inbounds i8, ptr %0, i64 2338
  store i8 1, ptr %650, align 2, !tbaa !55
  br label %934

651:                                              ; preds = %26
  %652 = getelementptr inbounds i8, ptr %0, i64 2338
  store i8 0, ptr %652, align 2, !tbaa !55
  br label %653

653:                                              ; preds = %645, %651
  %.3612 = phi i64 [ %.2611, %645 ], [ %.0609, %651 ]
  %.3 = phi double [ %.2, %645 ], [ %.0, %651 ]
  %654 = getelementptr inbounds i8, ptr %0, i64 136
  %655 = load i64, ptr %654, align 8, !tbaa !71
  %656 = getelementptr inbounds i8, ptr %0, i64 2616
  %657 = load <2 x i64>, ptr %656, align 8, !tbaa !26
  %658 = insertelement <2 x i64> <i64 1, i64 poison>, i64 %655, i64 1
  %659 = add nsw <2 x i64> %657, %658
  store <2 x i64> %659, ptr %656, align 8, !tbaa !26
  %660 = getelementptr inbounds i8, ptr %0, i64 392
  %661 = load ptr, ptr %660, align 8, !tbaa !25
  %662 = getelementptr inbounds i8, ptr %0, i64 168
  %663 = load i64, ptr %662, align 8, !tbaa !67
  %664 = getelementptr inbounds ptr, ptr %661, i64 %663
  %665 = load ptr, ptr %664, align 8, !tbaa !37
  %666 = getelementptr inbounds i8, ptr %0, i64 2256
  %667 = load ptr, ptr %666, align 8, !tbaa !25
  %668 = add nsw i64 %.0634, -1
  %669 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %668)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %665, i64 noundef 1, ptr noundef %667, i64 noundef 1, i64 noundef %669)
  %670 = getelementptr inbounds i8, ptr %0, i64 312
  %671 = load ptr, ptr %670, align 8, !tbaa !25
  %672 = load i64, ptr %662, align 8, !tbaa !67
  %673 = getelementptr inbounds ptr, ptr %671, i64 %672
  %674 = load ptr, ptr %673, align 8, !tbaa !37
  %675 = getelementptr inbounds i8, ptr %0, i64 2328
  %676 = load ptr, ptr %675, align 8, !tbaa !25
  %677 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %668)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %674, i64 noundef 1, ptr noundef %676, i64 noundef 1, i64 noundef %677)
  %.not648.not680 = icmp sgt i64 %.0634, 0
  br i1 %.not648.not680, label %.lr.ph684, label %._crit_edge685

.lr.ph684:                                        ; preds = %653
  %678 = getelementptr inbounds i8, ptr %0, i64 120
  br label %679

679:                                              ; preds = %.lr.ph684, %679
  %.5606682 = phi double [ 0.000000e+00, %.lr.ph684 ], [ %688, %679 ]
  %.16681 = phi i64 [ 0, %.lr.ph684 ], [ %689, %679 ]
  %680 = load ptr, ptr %675, align 8, !tbaa !25
  %681 = getelementptr inbounds double, ptr %680, i64 %.16681
  %682 = load double, ptr %681, align 8, !tbaa !27
  %683 = load ptr, ptr %678, align 8, !tbaa !25
  %684 = getelementptr inbounds double, ptr %683, i64 %.16681
  %685 = load double, ptr %684, align 8, !tbaa !27
  %686 = fmul double %682, %685
  %687 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %686, ptr noundef %1)
  %688 = fadd double %.5606682, %687
  %689 = add nuw nsw i64 %.16681, 1
  %exitcond756.not = icmp eq i64 %689, %.0634
  br i1 %exitcond756.not, label %._crit_edge685, label %679, !llvm.loop !72

._crit_edge685:                                   ; preds = %679, %653
  %.5606.lcssa = phi double [ 0.000000e+00, %653 ], [ %688, %679 ]
  %690 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.5606.lcssa, ptr noundef %1)
  br i1 %690, label %691, label %695

691:                                              ; preds = %._crit_edge685
  %692 = getelementptr inbounds i8, ptr %0, i64 2264
  %693 = load double, ptr %692, align 8, !tbaa !42
  %694 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %693, ptr noundef %1)
  br i1 %694, label %697, label %695

695:                                              ; preds = %691, %._crit_edge685
  %696 = getelementptr inbounds i8, ptr %0, i64 2632
  store i64 -8, ptr %696, align 8, !tbaa !56
  br label %952

697:                                              ; preds = %691
  %698 = load i64, ptr %656, align 8, !tbaa !73
  %699 = getelementptr inbounds i8, ptr %0, i64 40
  %700 = load i64, ptr %699, align 8, !tbaa !74
  %.not649 = icmp sge i64 %698, %700
  %701 = icmp sgt i64 %700, 0
  %or.cond = and i1 %.not649, %701
  br i1 %or.cond, label %702, label %704

702:                                              ; preds = %697
  %703 = getelementptr inbounds i8, ptr %0, i64 2632
  store i64 5, ptr %703, align 8, !tbaa !56
  br label %952

704:                                              ; preds = %697
  %705 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.5606.lcssa, ptr noundef %1)
  %706 = getelementptr inbounds i8, ptr %0, i64 16
  %707 = load double, ptr %706, align 8, !tbaa !60
  %708 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %705, double noundef %707)
  br i1 %708, label %709, label %711

709:                                              ; preds = %704
  %710 = getelementptr inbounds i8, ptr %0, i64 2632
  store i64 4, ptr %710, align 8, !tbaa !56
  br label %952

711:                                              ; preds = %704
  %712 = getelementptr inbounds i8, ptr %0, i64 664
  %713 = load double, ptr %712, align 8, !tbaa !58
  %714 = load double, ptr %692, align 8, !tbaa !42
  %715 = fsub double %713, %714
  %716 = getelementptr inbounds i8, ptr %0, i64 24
  %717 = load double, ptr %716, align 8, !tbaa !75
  %718 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %713, ptr noundef %1)
  %719 = load double, ptr %692, align 8, !tbaa !42
  %720 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %719, ptr noundef %1)
  %721 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %720, double noundef 1.000000e+00, ptr noundef %1)
  %722 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %718, double noundef %721, ptr noundef %1)
  %723 = fmul double %717, %722
  %724 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %715, double noundef %723)
  br i1 %724, label %726, label %.preheader662

.preheader662:                                    ; preds = %711
  br i1 %.not648.not680, label %.lr.ph690, label %._crit_edge691

.lr.ph690:                                        ; preds = %.preheader662
  %725 = getelementptr inbounds i8, ptr %0, i64 120
  br label %728

726:                                              ; preds = %711
  %727 = getelementptr inbounds i8, ptr %0, i64 2632
  store i64 1, ptr %727, align 8, !tbaa !56
  br label %952

728:                                              ; preds = %.lr.ph690, %728
  %.6607689 = phi double [ 0.000000e+00, %.lr.ph690 ], [ %740, %728 ]
  %.17688 = phi i64 [ 0, %.lr.ph690 ], [ %741, %728 ]
  %729 = load ptr, ptr %660, align 8, !tbaa !25
  %730 = load i64, ptr %662, align 8, !tbaa !67
  %731 = getelementptr inbounds ptr, ptr %729, i64 %730
  %732 = load ptr, ptr %731, align 8, !tbaa !37
  %733 = getelementptr inbounds double, ptr %732, i64 %.17688
  %734 = load double, ptr %733, align 8, !tbaa !27
  %735 = load ptr, ptr %725, align 8, !tbaa !25
  %736 = getelementptr inbounds double, ptr %735, i64 %.17688
  %737 = load double, ptr %736, align 8, !tbaa !27
  %738 = fdiv double %734, %737
  %739 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %738, ptr noundef %1)
  %740 = fadd double %.6607689, %739
  %741 = add nuw nsw i64 %.17688, 1
  %exitcond757.not = icmp eq i64 %741, %.0634
  br i1 %exitcond757.not, label %._crit_edge691, label %728, !llvm.loop !76

._crit_edge691:                                   ; preds = %728, %.preheader662
  %.17.lcssa = phi i64 [ 0, %.preheader662 ], [ %.0634, %728 ]
  %.6607.lcssa = phi double [ 0.000000e+00, %.preheader662 ], [ %740, %728 ]
  %742 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.6607.lcssa, ptr noundef %1)
  %743 = getelementptr inbounds i8, ptr %0, i64 32
  %744 = load double, ptr %743, align 8, !tbaa !77
  %745 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %742, double noundef %744)
  br i1 %745, label %746, label %748

746:                                              ; preds = %._crit_edge691
  %747 = getelementptr inbounds i8, ptr %0, i64 2632
  store i64 2, ptr %747, align 8, !tbaa !56
  br label %952

748:                                              ; preds = %._crit_edge691
  %749 = load i64, ptr %3, align 8, !tbaa !26
  %.not651 = icmp eq i64 %749, 1
  br i1 %.not651, label %756, label %750

750:                                              ; preds = %748
  %751 = load double, ptr %692, align 8, !tbaa !42
  store double %751, ptr %712, align 8, !tbaa !58
  %752 = getelementptr inbounds i8, ptr %0, i64 584
  %753 = load ptr, ptr %752, align 8, !tbaa !25
  %754 = load ptr, ptr %675, align 8, !tbaa !25
  %755 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %668)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %753, i64 noundef 1, ptr noundef %754, i64 noundef 1, i64 noundef %755)
  %.phi.trans.insert769.phi.trans.insert = getelementptr inbounds i8, ptr %0, i64 152
  %.pre770.pre = load i64, ptr %.phi.trans.insert769.phi.trans.insert, align 8, !tbaa !66
  br label %451

756:                                              ; preds = %748
  %757 = load ptr, ptr %670, align 8, !tbaa !25
  %758 = load i64, ptr %662, align 8, !tbaa !67
  %759 = getelementptr inbounds ptr, ptr %757, i64 %758
  %760 = load ptr, ptr %759, align 8, !tbaa !37
  %761 = load ptr, ptr %660, align 8, !tbaa !25
  %762 = getelementptr inbounds ptr, ptr %761, i64 %758
  %763 = load ptr, ptr %762, align 8, !tbaa !37
  %764 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %668)
  %765 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %760, i64 noundef 1, ptr noundef %763, i64 noundef 1, i64 noundef %764)
  %766 = load ptr, ptr %670, align 8, !tbaa !25
  %767 = load i64, ptr %662, align 8, !tbaa !67
  %768 = getelementptr inbounds ptr, ptr %766, i64 %767
  %769 = load ptr, ptr %768, align 8, !tbaa !37
  %770 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %668)
  %771 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %769, i64 noundef 1, ptr noundef %769, i64 noundef 1, i64 noundef %770)
  %772 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %765, double noundef 0.000000e+00)
  br i1 %772, label %775, label %773

773:                                              ; preds = %756
  %774 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %771, double noundef 0.000000e+00)
  br i1 %774, label %775, label %777

775:                                              ; preds = %773, %756
  %776 = getelementptr inbounds i8, ptr %0, i64 2632
  store i64 -2, ptr %776, align 8, !tbaa !56
  br label %952

777:                                              ; preds = %773
  %778 = fdiv double 1.000000e+00, %765
  %779 = getelementptr inbounds i8, ptr %0, i64 232
  %780 = load ptr, ptr %779, align 8, !tbaa !25
  %781 = load i64, ptr %662, align 8, !tbaa !67
  %782 = getelementptr inbounds double, ptr %780, i64 %781
  store double %778, ptr %782, align 8, !tbaa !27
  %783 = fdiv double %765, %771
  %784 = getelementptr inbounds i8, ptr %0, i64 752
  store double %783, ptr %784, align 8, !tbaa !78
  %785 = getelementptr inbounds i8, ptr %0, i64 600
  %786 = getelementptr inbounds i8, ptr %0, i64 656
  %787 = load ptr, ptr %786, align 8, !tbaa !25
  %788 = load ptr, ptr %675, align 8, !tbaa !25
  %789 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %668)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %787, i64 noundef 1, ptr noundef %788, i64 noundef 1, i64 noundef %789)
  %790 = getelementptr inbounds i8, ptr %0, i64 152
  %791 = getelementptr inbounds i8, ptr %0, i64 160
  %792 = load i64, ptr %791, align 8, !tbaa !68
  %.not652694 = icmp slt i64 %792, 0
  br i1 %.not652694, label %._crit_edge698, label %.lr.ph697

.lr.ph697:                                        ; preds = %777
  %793 = load i64, ptr %790, align 8, !tbaa !66
  %794 = getelementptr inbounds i8, ptr %0, i64 520
  br label %795

795:                                              ; preds = %.lr.ph697, %795
  %.18695 = phi i64 [ %793, %.lr.ph697 ], [ %814, %795 ]
  %796 = srem i64 %.18695, %.0630
  %797 = load ptr, ptr %660, align 8, !tbaa !25
  %798 = getelementptr inbounds ptr, ptr %797, i64 %796
  %799 = load ptr, ptr %798, align 8, !tbaa !37
  %800 = load ptr, ptr %786, align 8, !tbaa !25
  %801 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %668)
  %802 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %799, i64 noundef 1, ptr noundef %800, i64 noundef 1, i64 noundef %801)
  %803 = load ptr, ptr %794, align 8, !tbaa !25
  %804 = getelementptr inbounds double, ptr %803, i64 %796
  store double %802, ptr %804, align 8, !tbaa !27
  %805 = load ptr, ptr %779, align 8, !tbaa !25
  %806 = getelementptr inbounds double, ptr %805, i64 %796
  %807 = load double, ptr %806, align 8, !tbaa !27
  %808 = fmul double %802, %807
  %809 = load ptr, ptr %786, align 8, !tbaa !25
  %810 = load ptr, ptr %670, align 8, !tbaa !25
  %811 = getelementptr inbounds ptr, ptr %810, i64 %796
  %812 = load ptr, ptr %811, align 8, !tbaa !37
  %813 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %668)
  call void @_ZN11alglib_impl9ae_v_subdEPdlPKdlld(ptr noundef %809, i64 noundef 1, ptr noundef %812, i64 noundef 1, i64 noundef %813, double noundef %808)
  %814 = add nsw i64 %.18695, -1
  %815 = load i64, ptr %790, align 8, !tbaa !66
  %816 = load i64, ptr %791, align 8, !tbaa !68
  %817 = sub nsw i64 %815, %816
  %.not652.not = icmp sgt i64 %.18695, %817
  br i1 %.not652.not, label %795, label %._crit_edge698, !llvm.loop !79

._crit_edge698:                                   ; preds = %795, %777
  %.4613.lcssa = phi i64 [ %.3612, %777 ], [ %796, %795 ]
  %.7608.lcssa = phi double [ %765, %777 ], [ %802, %795 ]
  %.4.lcssa = phi double [ %771, %777 ], [ %808, %795 ]
  %818 = getelementptr inbounds i8, ptr %0, i64 744
  %819 = load i64, ptr %818, align 8, !tbaa !61
  %820 = icmp eq i64 %819, 0
  br i1 %820, label %821, label %825

821:                                              ; preds = %._crit_edge698
  %822 = load double, ptr %784, align 8, !tbaa !78
  %823 = load ptr, ptr %786, align 8, !tbaa !25
  %824 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %668)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %823, i64 noundef 1, i64 noundef %824, double noundef %822)
  %.pr659 = load i64, ptr %818, align 8, !tbaa !61
  br label %825

825:                                              ; preds = %821, %._crit_edge698
  %826 = phi i64 [ %.pr659, %821 ], [ %819, %._crit_edge698 ]
  %.8 = phi double [ %822, %821 ], [ %.7608.lcssa, %._crit_edge698 ]
  %827 = icmp eq i64 %826, 1
  br i1 %827, label %828, label %831

828:                                              ; preds = %825
  %829 = getelementptr inbounds i8, ptr %0, i64 760
  %830 = getelementptr inbounds i8, ptr %0, i64 2072
  call void @_ZN11alglib_impl17fblscholeskysolveEPNS_9ae_matrixEdlbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %829, double noundef 1.000000e+00, i64 noundef %.0634, i1 noundef zeroext true, ptr noundef nonnull %785, ptr noundef nonnull %830, ptr noundef %1)
  %.pre771 = load i64, ptr %818, align 8, !tbaa !61
  br label %831

831:                                              ; preds = %828, %825
  %832 = phi i64 [ %.pre771, %828 ], [ %826, %825 ]
  switch i64 %832, label %._crit_edge705 [
    i64 2, label %.preheader661
    i64 3, label %.preheader660
    i64 4, label %882
  ]

.preheader661:                                    ; preds = %831
  br i1 %.not648.not680, label %.lr.ph704, label %._crit_edge705.thread

.lr.ph704:                                        ; preds = %.preheader661
  %833 = getelementptr inbounds i8, ptr %0, i64 896
  %xtraiter814 = and i64 %.0634, 1
  %834 = icmp eq i64 %.0634, 1
  br i1 %834, label %._crit_edge705.thread.loopexit.unr-lcssa, label %.lr.ph704.new

.lr.ph704.new:                                    ; preds = %.lr.ph704
  %unroll_iter816 = and i64 %.0634, 9223372036854775806
  br label %835

835:                                              ; preds = %835, %.lr.ph704.new
  %.19703 = phi i64 [ 0, %.lr.ph704.new ], [ %851, %835 ]
  %niter817 = phi i64 [ 0, %.lr.ph704.new ], [ %niter817.next.1, %835 ]
  %836 = load ptr, ptr %786, align 8, !tbaa !25
  %837 = getelementptr inbounds double, ptr %836, i64 %.19703
  %838 = load double, ptr %837, align 8, !tbaa !27
  %839 = load ptr, ptr %833, align 8, !tbaa !25
  %840 = getelementptr inbounds double, ptr %839, i64 %.19703
  %841 = load double, ptr %840, align 8, !tbaa !27
  %842 = fdiv double %838, %841
  store double %842, ptr %837, align 8, !tbaa !27
  %843 = or disjoint i64 %.19703, 1
  %844 = load ptr, ptr %786, align 8, !tbaa !25
  %845 = getelementptr inbounds double, ptr %844, i64 %843
  %846 = load double, ptr %845, align 8, !tbaa !27
  %847 = load ptr, ptr %833, align 8, !tbaa !25
  %848 = getelementptr inbounds double, ptr %847, i64 %843
  %849 = load double, ptr %848, align 8, !tbaa !27
  %850 = fdiv double %846, %849
  store double %850, ptr %845, align 8, !tbaa !27
  %851 = add nuw nsw i64 %.19703, 2
  %niter817.next.1 = add i64 %niter817, 2
  %niter817.ncmp.1 = icmp eq i64 %niter817.next.1, %unroll_iter816
  br i1 %niter817.ncmp.1, label %._crit_edge705.thread.loopexit.unr-lcssa, label %835, !llvm.loop !80

.preheader660:                                    ; preds = %831
  br i1 %.not648.not680, label %.lr.ph708, label %._crit_edge705.thread

.lr.ph708:                                        ; preds = %.preheader660
  %852 = getelementptr inbounds i8, ptr %0, i64 120
  %xtraiter809 = and i64 %.0634, 1
  %853 = icmp eq i64 %.0634, 1
  br i1 %853, label %._crit_edge709.unr-lcssa, label %.lr.ph708.new

.lr.ph708.new:                                    ; preds = %.lr.ph708
  %unroll_iter811 = and i64 %.0634, 9223372036854775806
  br label %854

854:                                              ; preds = %854, %.lr.ph708.new
  %.20707 = phi i64 [ 0, %.lr.ph708.new ], [ %872, %854 ]
  %niter812 = phi i64 [ 0, %.lr.ph708.new ], [ %niter812.next.1, %854 ]
  %855 = load ptr, ptr %786, align 8, !tbaa !25
  %856 = getelementptr inbounds double, ptr %855, i64 %.20707
  %857 = load double, ptr %856, align 8, !tbaa !27
  %858 = load ptr, ptr %852, align 8, !tbaa !25
  %859 = getelementptr inbounds double, ptr %858, i64 %.20707
  %860 = load double, ptr %859, align 8, !tbaa !27
  %861 = fmul double %857, %860
  %862 = fmul double %860, %861
  store double %862, ptr %856, align 8, !tbaa !27
  %863 = or disjoint i64 %.20707, 1
  %864 = load ptr, ptr %786, align 8, !tbaa !25
  %865 = getelementptr inbounds double, ptr %864, i64 %863
  %866 = load double, ptr %865, align 8, !tbaa !27
  %867 = load ptr, ptr %852, align 8, !tbaa !25
  %868 = getelementptr inbounds double, ptr %867, i64 %863
  %869 = load double, ptr %868, align 8, !tbaa !27
  %870 = fmul double %866, %869
  %871 = fmul double %869, %870
  store double %871, ptr %865, align 8, !tbaa !27
  %872 = add nuw nsw i64 %.20707, 2
  %niter812.next.1 = add i64 %niter812, 2
  %niter812.ncmp.1 = icmp eq i64 %niter812.next.1, %unroll_iter811
  br i1 %niter812.ncmp.1, label %._crit_edge709.unr-lcssa, label %854, !llvm.loop !81

._crit_edge709.unr-lcssa:                         ; preds = %854, %.lr.ph708
  %.20707.unr = phi i64 [ 0, %.lr.ph708 ], [ %872, %854 ]
  %lcmp.mod810.not = icmp eq i64 %xtraiter809, 0
  br i1 %lcmp.mod810.not, label %._crit_edge709, label %._crit_edge709.epilog-lcssa

._crit_edge709.epilog-lcssa:                      ; preds = %._crit_edge709.unr-lcssa
  %873 = load ptr, ptr %786, align 8, !tbaa !25
  %874 = getelementptr inbounds double, ptr %873, i64 %.20707.unr
  %875 = load double, ptr %874, align 8, !tbaa !27
  %876 = load ptr, ptr %852, align 8, !tbaa !25
  %877 = getelementptr inbounds double, ptr %876, i64 %.20707.unr
  %878 = load double, ptr %877, align 8, !tbaa !27
  %879 = fmul double %875, %878
  %880 = fmul double %878, %879
  store double %880, ptr %874, align 8, !tbaa !27
  br label %._crit_edge709

._crit_edge709:                                   ; preds = %._crit_edge709.unr-lcssa, %._crit_edge709.epilog-lcssa
  %881 = icmp eq i64 %832, 4
  br i1 %881, label %882, label %._crit_edge705

882:                                              ; preds = %831, %._crit_edge709
  %883 = getelementptr inbounds i8, ptr %0, i64 968
  %884 = getelementptr inbounds i8, ptr %0, i64 904
  %885 = getelementptr inbounds i8, ptr %0, i64 1032
  %886 = getelementptr inbounds i8, ptr %0, i64 1112
  %887 = load i64, ptr %886, align 8, !tbaa !65
  %888 = getelementptr inbounds i8, ptr %0, i64 1120
  call void @_ZN11alglib_impl26inexactlbfgspreconditionerEPNS_9ae_vectorElS1_S1_PNS_9ae_matrixElPNS_12precbuflbfgsEPNS_8ae_stateE(ptr noundef nonnull %785, i64 noundef %.0634, ptr noundef nonnull %883, ptr noundef nonnull %884, ptr noundef nonnull %885, i64 noundef %887, ptr noundef nonnull %888, ptr noundef %1)
  %.pre772 = load i64, ptr %818, align 8, !tbaa !61
  br label %._crit_edge705

._crit_edge705:                                   ; preds = %831, %882, %._crit_edge709
  %889 = phi i64 [ %832, %831 ], [ %.pre772, %882 ], [ %832, %._crit_edge709 ]
  %890 = icmp eq i64 %889, 5
  br i1 %890, label %891, label %._crit_edge705.thread

891:                                              ; preds = %._crit_edge705
  %892 = getelementptr inbounds i8, ptr %0, i64 1584
  call void @_ZN11alglib_impl26applylowrankpreconditionerEPNS_9ae_vectorEPNS_14precbuflowrankEPNS_8ae_stateE(ptr noundef nonnull %785, ptr noundef nonnull %892, ptr noundef %1)
  br label %._crit_edge705.thread

._crit_edge705.thread.loopexit.unr-lcssa:         ; preds = %835, %.lr.ph704
  %.19703.unr = phi i64 [ 0, %.lr.ph704 ], [ %851, %835 ]
  %lcmp.mod815.not = icmp eq i64 %xtraiter814, 0
  br i1 %lcmp.mod815.not, label %._crit_edge705.thread, label %._crit_edge705.thread.loopexit.epilog-lcssa

._crit_edge705.thread.loopexit.epilog-lcssa:      ; preds = %._crit_edge705.thread.loopexit.unr-lcssa
  %893 = load ptr, ptr %786, align 8, !tbaa !25
  %894 = getelementptr inbounds double, ptr %893, i64 %.19703.unr
  %895 = load double, ptr %894, align 8, !tbaa !27
  %896 = load ptr, ptr %833, align 8, !tbaa !25
  %897 = getelementptr inbounds double, ptr %896, i64 %.19703.unr
  %898 = load double, ptr %897, align 8, !tbaa !27
  %899 = fdiv double %895, %898
  store double %899, ptr %894, align 8, !tbaa !27
  br label %._crit_edge705.thread

._crit_edge705.thread:                            ; preds = %._crit_edge705.thread.loopexit.epilog-lcssa, %._crit_edge705.thread.loopexit.unr-lcssa, %.preheader660, %.preheader661, %891, %._crit_edge705
  %900 = load i64, ptr %790, align 8, !tbaa !66
  %901 = load i64, ptr %791, align 8, !tbaa !68
  %902 = sub nsw i64 %900, %901
  %.not655710 = icmp slt i64 %901, 0
  br i1 %.not655710, label %._crit_edge714, label %.lr.ph713

.lr.ph713:                                        ; preds = %._crit_edge705.thread
  %903 = getelementptr inbounds i8, ptr %0, i64 520
  br label %904

904:                                              ; preds = %.lr.ph713, %904
  %.21711 = phi i64 [ %902, %.lr.ph713 ], [ %925, %904 ]
  %905 = srem i64 %.21711, %.0630
  %906 = load ptr, ptr %670, align 8, !tbaa !25
  %907 = getelementptr inbounds ptr, ptr %906, i64 %905
  %908 = load ptr, ptr %907, align 8, !tbaa !37
  %909 = load ptr, ptr %786, align 8, !tbaa !25
  %910 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %668)
  %911 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %908, i64 noundef 1, ptr noundef %909, i64 noundef 1, i64 noundef %910)
  %912 = load ptr, ptr %779, align 8, !tbaa !25
  %913 = getelementptr inbounds double, ptr %912, i64 %905
  %914 = load double, ptr %913, align 8, !tbaa !27
  %915 = load ptr, ptr %903, align 8, !tbaa !25
  %916 = getelementptr inbounds double, ptr %915, i64 %905
  %917 = load double, ptr %916, align 8, !tbaa !27
  %918 = fsub double %917, %911
  %919 = fmul double %914, %918
  %920 = load ptr, ptr %786, align 8, !tbaa !25
  %921 = load ptr, ptr %660, align 8, !tbaa !25
  %922 = getelementptr inbounds ptr, ptr %921, i64 %905
  %923 = load ptr, ptr %922, align 8, !tbaa !37
  %924 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %668)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %920, i64 noundef 1, ptr noundef %923, i64 noundef 1, i64 noundef %924, double noundef %919)
  %925 = add nsw i64 %.21711, 1
  %926 = load i64, ptr %790, align 8, !tbaa !66
  %.not655.not = icmp slt i64 %.21711, %926
  br i1 %.not655.not, label %904, label %._crit_edge714, !llvm.loop !82

._crit_edge714:                                   ; preds = %904, %._crit_edge705.thread
  %.21.lcssa = phi i64 [ %902, %._crit_edge705.thread ], [ %925, %904 ]
  %.5614.lcssa = phi i64 [ %.4613.lcssa, %._crit_edge705.thread ], [ %905, %904 ]
  %.9.lcssa = phi double [ %.8, %._crit_edge705.thread ], [ %911, %904 ]
  %.5.lcssa = phi double [ %.4.lcssa, %._crit_edge705.thread ], [ %919, %904 ]
  %927 = getelementptr inbounds i8, ptr %0, i64 584
  %928 = load ptr, ptr %927, align 8, !tbaa !25
  %929 = load ptr, ptr %786, align 8, !tbaa !25
  %930 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %668)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %928, i64 noundef 1, ptr noundef %929, i64 noundef 1, i64 noundef %930)
  %931 = load double, ptr %692, align 8, !tbaa !42
  store double %931, ptr %712, align 8, !tbaa !58
  %932 = load i64, ptr %790, align 8, !tbaa !66
  %933 = add nsw i64 %932, 1
  store i64 %933, ptr %790, align 8, !tbaa !66
  br label %451

934:                                              ; preds = %649, %562, %547, %532, %519, %512, %508, %306, %250, %235, %220, %207, %200, %196, %._crit_edge737
  %.sink784 = phi i32 [ 14, %649 ], [ 13, %562 ], [ 12, %547 ], [ 11, %532 ], [ 10, %519 ], [ 9, %512 ], [ 8, %508 ], [ 7, %306 ], [ 6, %250 ], [ 5, %235 ], [ 4, %220 ], [ 3, %207 ], [ 2, %200 ], [ 1, %196 ], [ 0, %._crit_edge737 ]
  %.3637 = phi i64 [ %.0634, %649 ], [ %.0634, %562 ], [ %.0634, %547 ], [ %.0634, %532 ], [ %.0634, %519 ], [ %.0634, %512 ], [ %.0634, %508 ], [ %.0634, %306 ], [ %.0634, %250 ], [ %.0634, %235 ], [ %.0634, %220 ], [ %.0634, %207 ], [ %.2636, %200 ], [ %.2636, %196 ], [ %.1635, %._crit_edge737 ]
  %.3633 = phi i64 [ %.0630, %649 ], [ %.0630, %562 ], [ %.0630, %547 ], [ %.0630, %532 ], [ %.0630, %519 ], [ %.0630, %512 ], [ %.0630, %508 ], [ %.0630, %306 ], [ %.0630, %250 ], [ %.0630, %235 ], [ %.0630, %220 ], [ %.0630, %207 ], [ %.2632, %200 ], [ %.2632, %196 ], [ %.1631, %._crit_edge737 ]
  %.23 = phi i64 [ %.13, %649 ], [ %.0618, %562 ], [ %.0618, %547 ], [ %.0618, %532 ], [ %.14, %519 ], [ %.13, %512 ], [ %.13, %508 ], [ %.6624, %306 ], [ %.0618, %250 ], [ %.0618, %235 ], [ %.0618, %220 ], [ %.5623, %207 ], [ %.4622.lcssa, %200 ], [ %.4622.lcssa, %196 ], [ %.2620.lcssa, %._crit_edge737 ]
  %.7616 = phi i64 [ %.2611, %649 ], [ %.0609, %562 ], [ %.0609, %547 ], [ %.0609, %532 ], [ %.0609, %519 ], [ %.2611, %512 ], [ %.2611, %508 ], [ %.0609, %306 ], [ %.0609, %250 ], [ %.0609, %235 ], [ %.0609, %220 ], [ %.0609, %207 ], [ %.0609, %200 ], [ %.0609, %196 ], [ %.0609, %._crit_edge737 ]
  %.11 = phi double [ %.4605, %649 ], [ %.0601, %562 ], [ %.0601, %547 ], [ %.0601, %532 ], [ %523, %519 ], [ %.4605, %512 ], [ %.4605, %508 ], [ %.0601, %306 ], [ %.0601, %250 ], [ %.0601, %235 ], [ %.0601, %220 ], [ %211, %207 ], [ %.0601, %200 ], [ %.0601, %196 ], [ %.0601, %._crit_edge737 ]
  %.7 = phi double [ %.2, %649 ], [ %.0, %562 ], [ %.0, %547 ], [ %.0, %532 ], [ %.0, %519 ], [ %.2, %512 ], [ %.2, %508 ], [ %.0, %306 ], [ %.0, %250 ], [ %.0, %235 ], [ %.0, %220 ], [ %.0, %207 ], [ %.0, %200 ], [ %.0, %196 ], [ %.0, %._crit_edge737 ]
  store i32 %.sink784, ptr %4, align 8, !tbaa !5
  %935 = getelementptr inbounds i8, ptr %0, i64 2416
  %936 = load ptr, ptr %935, align 8, !tbaa !25
  store i64 %.3637, ptr %936, align 8, !tbaa !26
  %937 = load ptr, ptr %935, align 8, !tbaa !25
  %938 = getelementptr inbounds i8, ptr %937, i64 8
  store i64 %.3633, ptr %938, align 8, !tbaa !26
  %939 = load ptr, ptr %935, align 8, !tbaa !25
  %940 = getelementptr inbounds i8, ptr %939, i64 16
  store i64 %.23, ptr %940, align 8, !tbaa !26
  %941 = load ptr, ptr %935, align 8, !tbaa !25
  %942 = getelementptr inbounds i8, ptr %941, i64 24
  store i64 %.0617, ptr %942, align 8, !tbaa !26
  %943 = load ptr, ptr %935, align 8, !tbaa !25
  %944 = getelementptr inbounds i8, ptr %943, i64 32
  store i64 %.7616, ptr %944, align 8, !tbaa !26
  %945 = load i64, ptr %3, align 8, !tbaa !26
  %946 = load ptr, ptr %935, align 8, !tbaa !25
  %947 = getelementptr inbounds i8, ptr %946, i64 40
  store i64 %945, ptr %947, align 8, !tbaa !26
  %948 = getelementptr inbounds i8, ptr %0, i64 2544
  %949 = load ptr, ptr %948, align 8, !tbaa !25
  store double %.11, ptr %949, align 8, !tbaa !27
  %950 = load ptr, ptr %948, align 8, !tbaa !25
  %951 = getelementptr inbounds i8, ptr %950, i64 8
  store double %.7, ptr %951, align 8, !tbaa !27
  br label %952

952:                                              ; preds = %934, %775, %746, %726, %709, %702, %695, %637, %339, %314
  %.0638 = phi i1 [ true, %934 ], [ false, %314 ], [ false, %339 ], [ false, %637 ], [ false, %702 ], [ false, %709 ], [ false, %726 ], [ false, %746 ], [ false, %775 ], [ false, %695 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  ret i1 %.0638
}

declare void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef, double noundef) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef, double noundef) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef, double noundef) local_unnamed_addr #2

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

declare noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #2

declare noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #2

declare noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef, i64 noundef) local_unnamed_addr #2

declare noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) local_unnamed_addr #2

declare noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, double noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl17fblscholeskysolveEPNS_9ae_matrixEdlbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef, double noundef, i64 noundef, i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl11trimprepareEdPdPNS_8ae_stateE(double noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl12trimfunctionEPdPNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef, ptr noundef, i64 noundef, double noundef, ptr noundef) local_unnamed_addr #1

declare noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef, double noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef, i64 noundef, i64 noundef, double noundef) local_unnamed_addr #2

declare noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl9ae_v_subdEPdlPKdlld(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, double noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl26inexactlbfgspreconditionerEPNS_9ae_vectorElS1_S1_PNS_9ae_matrixElPNS_12precbuflbfgsEPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl26applylowrankpreconditionerEPNS_9ae_vectorEPNS_14precbuflowrankEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl21smoothnessmonitorinitEPNS_17smoothnessmonitorEllbPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, i1 noundef zeroext, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11alglib_impl35smoothnessmonitorfinalizelinesearchEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl34smoothnessmonitorstartlinesearch1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl31smoothnessmonitorenqueuepoint1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_dS3_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, ptr noundef, double noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN11alglib_impl34smoothnessmonitorcheckgradientatx0EPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_S3_bdPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext, double noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #4

declare noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl16linminnormalizedEPNS_9ae_vectorEPdlPNS_8ae_stateE(ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_S1_S2_ddPlS3_S1_PNS_11linminstateES3_PNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !19, i64 2352}
!6 = !{!"_ZTSN11alglib_impl13minlbfgsstateE", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !7, i64 40, !11, i64 48, !10, i64 56, !12, i64 64, !10, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !12, i64 176, !15, i64 240, !15, i64 320, !12, i64 400, !12, i64 464, !12, i64 528, !10, i64 592, !12, i64 600, !10, i64 664, !10, i64 672, !12, i64 680, !7, i64 744, !10, i64 752, !15, i64 760, !12, i64 840, !12, i64 904, !12, i64 968, !15, i64 1032, !7, i64 1112, !16, i64 1120, !17, i64 1584, !10, i64 2032, !10, i64 2040, !10, i64 2048, !10, i64 2056, !10, i64 2064, !12, i64 2072, !12, i64 2136, !12, i64 2200, !10, i64 2264, !12, i64 2272, !11, i64 2336, !11, i64 2337, !11, i64 2338, !11, i64 2339, !10, i64 2344, !18, i64 2352, !7, i64 2616, !7, i64 2624, !7, i64 2632, !20, i64 2640, !7, i64 2832, !21, i64 2840, !12, i64 6808}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"double", !8, i64 0}
!11 = !{!"bool", !8, i64 0}
!12 = !{!"_ZTSN11alglib_impl9ae_vectorE", !7, i64 0, !7, i64 8, !11, i64 16, !13, i64 24, !8, i64 56}
!13 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24}
!14 = !{!"any pointer", !8, i64 0}
!15 = !{!"_ZTSN11alglib_impl9ae_matrixE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !11, i64 32, !13, i64 40, !8, i64 72}
!16 = !{!"_ZTSN11alglib_impl12precbuflbfgsE", !12, i64 0, !12, i64 64, !12, i64 128, !15, i64 192, !12, i64 272, !12, i64 336, !12, i64 400}
!17 = !{!"_ZTSN11alglib_impl14precbuflowrankE", !7, i64 0, !7, i64 8, !12, i64 16, !15, i64 80, !12, i64 160, !15, i64 224, !15, i64 304, !12, i64 384}
!18 = !{!"_ZTSN11alglib_impl10rcommstateE", !19, i64 0, !12, i64 8, !12, i64 72, !12, i64 136, !12, i64 200}
!19 = !{!"int", !8, i64 0}
!20 = !{!"_ZTSN11alglib_impl11linminstateE", !11, i64 0, !11, i64 1, !7, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !10, i64 128, !10, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !10, i64 176, !10, i64 184}
!21 = !{!"_ZTSN11alglib_impl17smoothnessmonitorE", !7, i64 0, !7, i64 8, !11, i64 16, !12, i64 24, !7, i64 88, !12, i64 96, !12, i64 160, !12, i64 224, !15, i64 288, !12, i64 368, !12, i64 432, !7, i64 496, !11, i64 504, !11, i64 505, !10, i64 512, !10, i64 520, !11, i64 528, !22, i64 536, !10, i64 832, !10, i64 840, !23, i64 848, !23, i64 1152, !10, i64 1456, !10, i64 1464, !24, i64 1472, !24, i64 1784, !11, i64 2096, !12, i64 2104, !12, i64 2168, !15, i64 2232, !18, i64 2312, !12, i64 2576, !12, i64 2640, !12, i64 2704, !12, i64 2768, !12, i64 2832, !12, i64 2896, !12, i64 2960, !12, i64 3024, !15, i64 3088, !15, i64 3168, !12, i64 3248, !12, i64 3312, !12, i64 3376, !12, i64 3440, !12, i64 3504, !12, i64 3568, !12, i64 3632, !12, i64 3696, !12, i64 3760, !12, i64 3824, !15, i64 3888}
!22 = !{!"_ZTSN11alglib_impl14optguardreportE", !11, i64 0, !11, i64 1, !7, i64 8, !10, i64 16, !11, i64 24, !11, i64 25, !11, i64 26, !7, i64 32, !10, i64 40, !11, i64 48, !7, i64 56, !7, i64 64, !12, i64 72, !15, i64 136, !15, i64 216}
!23 = !{!"_ZTSN11alglib_impl24optguardnonc1test0reportE", !11, i64 0, !7, i64 8, !12, i64 16, !12, i64 80, !7, i64 144, !12, i64 152, !12, i64 216, !7, i64 280, !7, i64 288, !7, i64 296}
!24 = !{!"_ZTSN11alglib_impl24optguardnonc1test1reportE", !11, i64 0, !7, i64 8, !7, i64 16, !12, i64 24, !12, i64 88, !7, i64 152, !12, i64 160, !12, i64 224, !7, i64 288, !7, i64 296, !7, i64 304}
!25 = !{!8, !8, i64 0}
!26 = !{!7, !7, i64 0}
!27 = !{!10, !10, i64 0}
!28 = !{!6, !7, i64 0}
!29 = !{!6, !7, i64 8}
!30 = !{!6, !11, i64 2339}
!31 = !{!6, !7, i64 2832}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = !{!6, !10, i64 592}
!35 = !{!6, !10, i64 128}
!36 = !{!6, !10, i64 2344}
!37 = !{!14, !14, i64 0}
!38 = distinct !{!38, !33}
!39 = distinct !{!39, !40}
!40 = !{!"llvm.loop.unroll.disable"}
!41 = !{!6, !11, i64 2337}
!42 = !{!6, !10, i64 2264}
!43 = distinct !{!43, !33}
!44 = distinct !{!44, !33}
!45 = distinct !{!45, !40}
!46 = !{!6, !11, i64 2336}
!47 = !{!6, !10, i64 2032}
!48 = !{!6, !10, i64 2040}
!49 = !{!6, !10, i64 2048}
!50 = !{!6, !10, i64 2056}
!51 = !{!6, !10, i64 2064}
!52 = !{!6, !11, i64 48}
!53 = !{i8 0, i8 2}
!54 = !{}
!55 = !{!6, !11, i64 2338}
!56 = !{!6, !7, i64 2632}
!57 = !{!6, !7, i64 2624}
!58 = !{!6, !10, i64 664}
!59 = distinct !{!59, !33}
!60 = !{!6, !10, i64 16}
!61 = !{!6, !7, i64 744}
!62 = !{!6, !10, i64 56}
!63 = distinct !{!63, !33}
!64 = distinct !{!64, !33}
!65 = !{!6, !7, i64 1112}
!66 = !{!6, !7, i64 152}
!67 = !{!6, !7, i64 168}
!68 = !{!6, !7, i64 160}
!69 = !{!6, !7, i64 144}
!70 = !{!6, !10, i64 672}
!71 = !{!6, !7, i64 136}
!72 = distinct !{!72, !33}
!73 = !{!6, !7, i64 2616}
!74 = !{!6, !7, i64 40}
!75 = !{!6, !10, i64 24}
!76 = distinct !{!76, !33}
!77 = !{!6, !10, i64 32}
!78 = !{!6, !10, i64 752}
!79 = distinct !{!79, !33}
!80 = distinct !{!80, !33}
!81 = distinct !{!81, !33}
!82 = distinct !{!82, !33}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,MergedLoadStoreMotionPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass