; LLVM IR from Dimandragon/non-parametric-dsp :: 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, 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, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i8, %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", i8, i8, i8, i64, %"struct.alglib_impl::ae_vector", double, i64, i64, i64, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::sparsematrix", %"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::sparsematrix", 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::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::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::sparsematrix" = type { %"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", i64, i64, i64, i64, i64, i64 }
%"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", %"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, i64, i64, double, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::rcommstate", i8, i8, i64, i64, double, double, i8, %"struct.alglib_impl::optguardreport", double, double, %"struct.alglib_impl::optguardnonc0report", %"struct.alglib_impl::optguardnonc0report", 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::optguardnonc0report" = 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, i64, i64 }
%"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, 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, 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 }

@.str.462 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.463 = external hidden unnamed_addr constant [59 x i8], align 1
@_ZN11alglib_implL13minlbfgs_gtolE = external hidden global double, align 8
@.str.464 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.465 = external hidden unnamed_addr constant [59 x i8], align 1

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

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

declare void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext, ptr noundef, ptr noundef) #1

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) #2 {
  %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 72
  %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 72
  %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 !28
  %27 = getelementptr inbounds i64, ptr %26, i64 0
  %28 = load i64, ptr %27, align 8, !tbaa !29
  store i64 %28, ptr %6, align 8, !tbaa !29
  %29 = load ptr, ptr %4, align 8, !tbaa !5
  %30 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %29, i32 0, i32 72
  %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 !28
  %34 = getelementptr inbounds i64, ptr %33, i64 1
  %35 = load i64, ptr %34, align 8, !tbaa !29
  store i64 %35, ptr %7, align 8, !tbaa !29
  %36 = load ptr, ptr %4, align 8, !tbaa !5
  %37 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %36, i32 0, i32 72
  %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 !28
  %41 = getelementptr inbounds i64, ptr %40, i64 2
  %42 = load i64, ptr %41, align 8, !tbaa !29
  store i64 %42, ptr %8, align 8, !tbaa !29
  %43 = load ptr, ptr %4, align 8, !tbaa !5
  %44 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %43, i32 0, i32 72
  %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 !28
  %48 = getelementptr inbounds i64, ptr %47, i64 3
  %49 = load i64, ptr %48, align 8, !tbaa !29
  store i64 %49, ptr %9, align 8, !tbaa !29
  %50 = load ptr, ptr %4, align 8, !tbaa !5
  %51 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %50, i32 0, i32 72
  %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 !28
  %55 = getelementptr inbounds i64, ptr %54, i64 4
  %56 = load i64, ptr %55, align 8, !tbaa !29
  store i64 %56, ptr %10, align 8, !tbaa !29
  %57 = load ptr, ptr %4, align 8, !tbaa !5
  %58 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %57, i32 0, i32 72
  %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 !28
  %62 = getelementptr inbounds i64, ptr %61, i64 5
  %63 = load i64, ptr %62, align 8, !tbaa !29
  store i64 %63, ptr %11, align 8, !tbaa !29
  %64 = load ptr, ptr %4, align 8, !tbaa !5
  %65 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %64, i32 0, i32 72
  %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 !28
  %69 = getelementptr inbounds double, ptr %68, i64 0
  %70 = load double, ptr %69, align 8, !tbaa !30
  store double %70, ptr %12, align 8, !tbaa !30
  %71 = load ptr, ptr %4, align 8, !tbaa !5
  %72 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %71, i32 0, i32 72
  %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 !28
  %76 = getelementptr inbounds double, ptr %75, i64 1
  %77 = load double, ptr %76, align 8, !tbaa !30
  store double %77, ptr %13, align 8, !tbaa !30
  br label %79

78:                                               ; preds = %2
  store i64 359, ptr %6, align 8, !tbaa !29
  store i64 -58, ptr %7, align 8, !tbaa !29
  store i64 -919, ptr %8, align 8, !tbaa !29
  store i64 -909, ptr %9, align 8, !tbaa !29
  store i64 81, ptr %10, align 8, !tbaa !29
  store i64 255, ptr %11, align 8, !tbaa !29
  store double 7.400000e+01, ptr %12, align 8, !tbaa !30
  store double -7.880000e+02, ptr %13, align 8, !tbaa !30
  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 72
  %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 %385

86:                                               ; preds = %79
  %87 = load ptr, ptr %4, align 8, !tbaa !5
  %88 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %87, i32 0, i32 72
  %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 %425

93:                                               ; preds = %86
  %94 = load ptr, ptr %4, align 8, !tbaa !5
  %95 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %94, i32 0, i32 72
  %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 %494

100:                                              ; preds = %93
  %101 = load ptr, ptr %4, align 8, !tbaa !5
  %102 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %101, i32 0, i32 72
  %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 %729

107:                                              ; preds = %100
  %108 = load ptr, ptr %4, align 8, !tbaa !5
  %109 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %108, i32 0, i32 72
  %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 %770

114:                                              ; preds = %107
  %115 = load ptr, ptr %4, align 8, !tbaa !5
  %116 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %115, i32 0, i32 72
  %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 %816

121:                                              ; preds = %114
  %122 = load ptr, ptr %4, align 8, !tbaa !5
  %123 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %122, i32 0, i32 72
  %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 %825

128:                                              ; preds = %121
  %129 = load ptr, ptr %4, align 8, !tbaa !5
  %130 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %129, i32 0, i32 72
  %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 %867

135:                                              ; preds = %128
  %136 = load ptr, ptr %4, align 8, !tbaa !5
  %137 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %136, i32 0, i32 72
  %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 %896

142:                                              ; preds = %135
  %143 = load ptr, ptr %4, align 8, !tbaa !5
  %144 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %143, i32 0, i32 72
  %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 %924

149:                                              ; preds = %142
  %150 = load ptr, ptr %4, align 8, !tbaa !5
  %151 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %150, i32 0, i32 72
  %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 %951

156:                                              ; preds = %149
  %157 = load ptr, ptr %4, align 8, !tbaa !5
  %158 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %157, i32 0, i32 72
  %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 %1023

163:                                              ; preds = %156
  %164 = load ptr, ptr %4, align 8, !tbaa !5
  %165 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %164, i32 0, i32 72
  %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 %1451

170:                                              ; preds = %163
  %171 = load ptr, ptr %4, align 8, !tbaa !5
  %172 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %171, i32 0, i32 72
  %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 %1683

177:                                              ; preds = %170
  %178 = load ptr, ptr %4, align 8, !tbaa !5
  %179 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %178, i32 0, i32 72
  %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 %1718

184:                                              ; preds = %177
  %185 = load ptr, ptr %4, align 8, !tbaa !5
  %186 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %185, i32 0, i32 72
  %187 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %186, i32 0, i32 0
  %188 = load i32, ptr %187, align 8, !tbaa !9
  %189 = icmp eq i32 %188, 15
  br i1 %189, label %190, label %191

190:                                              ; preds = %184
  br label %1727

191:                                              ; preds = %184
  %192 = load ptr, ptr %4, align 8, !tbaa !5
  %193 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %192, i32 0, i32 72
  %194 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %193, i32 0, i32 0
  %195 = load i32, ptr %194, align 8, !tbaa !9
  %196 = icmp eq i32 %195, 16
  br i1 %196, label %197, label %198

197:                                              ; preds = %191
  br label %1769

198:                                              ; preds = %191
  %199 = load ptr, ptr %4, align 8, !tbaa !5
  %200 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %199, i32 0, i32 72
  %201 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %200, i32 0, i32 0
  %202 = load i32, ptr %201, align 8, !tbaa !9
  %203 = icmp eq i32 %202, 17
  br i1 %203, label %204, label %205

204:                                              ; preds = %198
  br label %1798

205:                                              ; preds = %198
  %206 = load ptr, ptr %4, align 8, !tbaa !5
  %207 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %206, i32 0, i32 72
  %208 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %207, i32 0, i32 0
  %209 = load i32, ptr %208, align 8, !tbaa !9
  %210 = icmp eq i32 %209, 18
  br i1 %210, label %211, label %212

211:                                              ; preds = %205
  br label %1826

212:                                              ; preds = %205
  %213 = load ptr, ptr %4, align 8, !tbaa !5
  %214 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %213, i32 0, i32 72
  %215 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %214, i32 0, i32 0
  %216 = load i32, ptr %215, align 8, !tbaa !9
  %217 = icmp eq i32 %216, 19
  br i1 %217, label %218, label %219

218:                                              ; preds = %212
  br label %1853

219:                                              ; preds = %212
  %220 = load ptr, ptr %4, align 8, !tbaa !5
  %221 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %220, i32 0, i32 72
  %222 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %221, i32 0, i32 0
  %223 = load i32, ptr %222, align 8, !tbaa !9
  %224 = icmp eq i32 %223, 20
  br i1 %224, label %225, label %226

225:                                              ; preds = %219
  br label %2023

226:                                              ; preds = %219
  %227 = load ptr, ptr %4, align 8, !tbaa !5
  %228 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %227, i32 0, i32 72
  %229 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %228, i32 0, i32 0
  %230 = load i32, ptr %229, align 8, !tbaa !9
  %231 = icmp eq i32 %230, 21
  br i1 %231, label %232, label %233

232:                                              ; preds = %226
  br label %2037

233:                                              ; preds = %226
  %234 = load ptr, ptr %4, align 8, !tbaa !5
  %235 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %234, i32 0, i32 0
  %236 = load i64, ptr %235, align 8, !tbaa !31
  store i64 %236, ptr %6, align 8, !tbaa !29
  %237 = load ptr, ptr %4, align 8, !tbaa !5
  %238 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %237, i32 0, i32 1
  %239 = load i64, ptr %238, align 8, !tbaa !32
  store i64 %239, ptr %7, align 8, !tbaa !29
  %240 = load ptr, ptr %4, align 8, !tbaa !5
  %241 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %240, i32 0, i32 46
  store i8 0, ptr %241, align 8, !tbaa !33
  %242 = load ptr, ptr %4, align 8, !tbaa !5
  %243 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %242, i32 0, i32 75
  store i64 0, ptr %243, align 8, !tbaa !34
  %244 = load ptr, ptr %4, align 8, !tbaa !5
  %245 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %244, i32 0, i32 73
  store i64 0, ptr %245, align 8, !tbaa !35
  %246 = load ptr, ptr %4, align 8, !tbaa !5
  %247 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %246, i32 0, i32 74
  store i64 0, ptr %247, align 8, !tbaa !36
  %248 = load ptr, ptr %4, align 8, !tbaa !5
  %249 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %248, i32 0, i32 78
  %250 = load ptr, ptr %4, align 8, !tbaa !5
  %251 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %250, i32 0, i32 8
  %252 = load i64, ptr %6, align 8, !tbaa !29
  %253 = load ptr, ptr %4, align 8, !tbaa !5
  %254 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %253, i32 0, i32 77
  %255 = load i64, ptr %254, align 8, !tbaa !37
  %256 = icmp sgt i64 %255, 0
  %257 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl21smoothnessmonitorinitEPNS_17smoothnessmonitorEPKNS_9ae_vectorEllbPNS_8ae_stateE(ptr noundef %249, ptr noundef %251, i64 noundef %252, i64 noundef 1, i1 noundef zeroext %256, ptr noundef %257)
  %258 = load ptr, ptr %4, align 8, !tbaa !5
  %259 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %258, i32 0, i32 44
  %260 = load i64, ptr %6, align 8, !tbaa !29
  %261 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %259, i64 noundef %260, ptr noundef %261)
  store i64 0, ptr %8, align 8, !tbaa !29
  br label %262

262:                                              ; preds = %295, %233
  %263 = load i64, ptr %8, align 8, !tbaa !29
  %264 = load i64, ptr %6, align 8, !tbaa !29
  %265 = sub nsw i64 %264, 1
  %266 = icmp sle i64 %263, %265
  br i1 %266, label %267, label %298

267:                                              ; preds = %262
  %268 = load ptr, ptr %4, align 8, !tbaa !5
  %269 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %268, i32 0, i32 8
  %270 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %269, i32 0, i32 4
  %271 = load ptr, ptr %270, align 8, !tbaa !28
  %272 = load i64, ptr %8, align 8, !tbaa !29
  %273 = getelementptr inbounds double, ptr %271, i64 %272
  %274 = load double, ptr %273, align 8, !tbaa !30
  %275 = load ptr, ptr %4, align 8, !tbaa !5
  %276 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %275, i32 0, i32 79
  %277 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %276, i32 0, i32 4
  %278 = load ptr, ptr %277, align 8, !tbaa !28
  %279 = load i64, ptr %8, align 8, !tbaa !29
  %280 = getelementptr inbounds double, ptr %278, i64 %279
  store double %274, ptr %280, align 8, !tbaa !30
  %281 = load ptr, ptr %4, align 8, !tbaa !5
  %282 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %281, i32 0, i32 8
  %283 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %282, i32 0, i32 4
  %284 = load ptr, ptr %283, align 8, !tbaa !28
  %285 = load i64, ptr %8, align 8, !tbaa !29
  %286 = getelementptr inbounds double, ptr %284, i64 %285
  %287 = load double, ptr %286, align 8, !tbaa !30
  %288 = fdiv double 1.000000e+00, %287
  %289 = load ptr, ptr %4, align 8, !tbaa !5
  %290 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %289, i32 0, i32 44
  %291 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %290, i32 0, i32 4
  %292 = load ptr, ptr %291, align 8, !tbaa !28
  %293 = load i64, ptr %8, align 8, !tbaa !29
  %294 = getelementptr inbounds double, ptr %292, i64 %293
  store double %288, ptr %294, align 8, !tbaa !30
  br label %295

295:                                              ; preds = %267
  %296 = load i64, ptr %8, align 8, !tbaa !29
  %297 = add nsw i64 %296, 1
  store i64 %297, ptr %8, align 8, !tbaa !29
  br label %262, !llvm.loop !38

298:                                              ; preds = %262
  %299 = load ptr, ptr %4, align 8, !tbaa !5
  %300 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %299, i32 0, i32 45
  %301 = load i64, ptr %300, align 8, !tbaa !40
  %302 = icmp eq i64 %301, 2
  br i1 %302, label %303, label %319

303:                                              ; preds = %298
  %304 = load i64, ptr %6, align 8, !tbaa !29
  %305 = load ptr, ptr %4, align 8, !tbaa !5
  %306 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %305, i32 0, i32 69
  %307 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocmEllPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef 1, i64 noundef %304, ptr noundef %306, ptr noundef %307)
  %308 = load ptr, ptr %4, align 8, !tbaa !5
  %309 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %308, i32 0, i32 67
  %310 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef 1, ptr noundef %309, ptr noundef %310)
  %311 = load i64, ptr %6, align 8, !tbaa !29
  %312 = load ptr, ptr %4, align 8, !tbaa !5
  %313 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %312, i32 0, i32 68
  %314 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %311, ptr noundef %313, ptr noundef %314)
  %315 = load i64, ptr %6, align 8, !tbaa !29
  %316 = load ptr, ptr %4, align 8, !tbaa !5
  %317 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %316, i32 0, i32 65
  %318 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %315, ptr noundef %317, ptr noundef %318)
  br label %319

319:                                              ; preds = %303, %298
  %320 = load ptr, ptr %4, align 8, !tbaa !5
  %321 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %320, i32 0, i32 21
  store double 0.000000e+00, ptr %321, align 8, !tbaa !41
  %322 = load ptr, ptr %4, align 8, !tbaa !5
  %323 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %322, i32 0, i32 9
  %324 = load double, ptr %323, align 8, !tbaa !42
  %325 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %324, double noundef 0.000000e+00)
  br i1 %325, label %326, label %331

326:                                              ; preds = %319
  %327 = load ptr, ptr %4, align 8, !tbaa !5
  %328 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %327, i32 0, i32 71
  %329 = load double, ptr %328, align 8, !tbaa !43
  %330 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %329, double noundef 0.000000e+00)
  br i1 %330, label %332, label %331

331:                                              ; preds = %326, %319
  br label %446

332:                                              ; preds = %326
  br label %333

333:                                              ; preds = %444, %332
  %334 = load ptr, ptr %4, align 8, !tbaa !5
  %335 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %334, i32 0, i32 78
  %336 = load ptr, ptr %4, align 8, !tbaa !5
  %337 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %336, i32 0, i32 26
  %338 = load ptr, ptr %4, align 8, !tbaa !5
  %339 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %338, i32 0, i32 8
  %340 = load ptr, ptr %4, align 8, !tbaa !5
  %341 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %340, i32 0, i32 8
  %342 = load ptr, ptr %4, align 8, !tbaa !5
  %343 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %342, i32 0, i32 8
  %344 = load ptr, ptr %4, align 8, !tbaa !5
  %345 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %344, i32 0, i32 71
  %346 = load double, ptr %345, align 8, !tbaa !43
  %347 = load ptr, ptr %5, align 8, !tbaa !5
  %348 = call noundef zeroext i1 @_ZN11alglib_impl34smoothnessmonitorcheckgradientatx0EPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_S4_bdPNS_8ae_stateE(ptr noundef %335, ptr noundef %337, ptr noundef %339, ptr noundef %341, ptr noundef %343, i1 noundef zeroext false, double noundef %346, ptr noundef %347)
  br i1 %348, label %350, label %349

349:                                              ; preds = %333
  br label %445

350:                                              ; preds = %333
  %351 = load ptr, ptr %4, align 8, !tbaa !5
  %352 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %351, i32 0, i32 45
  %353 = load i64, ptr %352, align 8, !tbaa !40
  %354 = icmp ne i64 %353, 2
  br i1 %354, label %355, label %356

355:                                              ; preds = %350
  br label %405

356:                                              ; preds = %350
  %357 = load ptr, ptr %4, align 8, !tbaa !5
  %358 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %357, i32 0, i32 53
  store i64 2, ptr %358, align 8, !tbaa !44
  %359 = load ptr, ptr %4, align 8, !tbaa !5
  %360 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %359, i32 0, i32 56
  store i64 1, ptr %360, align 8, !tbaa !45
  %361 = load ptr, ptr %4, align 8, !tbaa !5
  %362 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %361, i32 0, i32 57
  store i64 1, ptr %362, align 8, !tbaa !46
  %363 = load i64, ptr %6, align 8, !tbaa !29
  %364 = load ptr, ptr %4, align 8, !tbaa !5
  %365 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %364, i32 0, i32 58
  store i64 %363, ptr %365, align 8, !tbaa !47
  %366 = load ptr, ptr %4, align 8, !tbaa !5
  %367 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %366, i32 0, i32 59
  store i64 0, ptr %367, align 8, !tbaa !48
  %368 = load i64, ptr %6, align 8, !tbaa !29
  %369 = load ptr, ptr %4, align 8, !tbaa !5
  %370 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %369, i32 0, i32 78
  %371 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %370, i32 0, i32 50
  %372 = load ptr, ptr %4, align 8, !tbaa !5
  %373 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %372, i32 0, i32 61
  %374 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %368, ptr noundef %371, ptr noundef %373, ptr noundef %374)
  %375 = load ptr, ptr %4, align 8, !tbaa !5
  %376 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %375, i32 0, i32 62
  %377 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef 1, ptr noundef %376, ptr noundef %377)
  %378 = load i64, ptr %6, align 8, !tbaa !29
  %379 = load ptr, ptr %4, align 8, !tbaa !5
  %380 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %379, i32 0, i32 63
  %381 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %378, ptr noundef %380, ptr noundef %381)
  %382 = load ptr, ptr %4, align 8, !tbaa !5
  %383 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %382, i32 0, i32 72
  %384 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %383, i32 0, i32 0
  store i32 0, ptr %384, align 8, !tbaa !9
  br label %2684

385:                                              ; preds = %85
  %386 = load ptr, ptr %4, align 8, !tbaa !5
  %387 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %386, i32 0, i32 62
  %388 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %387, i32 0, i32 4
  %389 = load ptr, ptr %388, align 8, !tbaa !28
  %390 = getelementptr inbounds double, ptr %389, i64 0
  %391 = load double, ptr %390, align 8, !tbaa !30
  %392 = load ptr, ptr %4, align 8, !tbaa !5
  %393 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %392, i32 0, i32 78
  %394 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %393, i32 0, i32 51
  %395 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %394, i32 0, i32 4
  %396 = load ptr, ptr %395, align 8, !tbaa !28
  %397 = getelementptr inbounds double, ptr %396, i64 0
  store double %391, ptr %397, align 8, !tbaa !30
  %398 = load i64, ptr %6, align 8, !tbaa !29
  %399 = load ptr, ptr %4, align 8, !tbaa !5
  %400 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %399, i32 0, i32 63
  %401 = load ptr, ptr %4, align 8, !tbaa !5
  %402 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %401, i32 0, i32 78
  %403 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %402, i32 0, i32 52
  %404 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rcopyvrElPKNS_9ae_vectorEPNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %398, ptr noundef %400, ptr noundef %403, i64 noundef 0, ptr noundef %404)
  br label %444

405:                                              ; preds = %355
  %406 = load ptr, ptr %4, align 8, !tbaa !5
  %407 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %406, i32 0, i32 45
  %408 = load i64, ptr %407, align 8, !tbaa !40
  %409 = icmp eq i64 %408, 1
  %410 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %409, ptr noundef @.str.462, ptr noundef %410)
  %411 = load ptr, ptr %4, align 8, !tbaa !5
  %412 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %411, ptr noundef %412)
  %413 = load i64, ptr %6, align 8, !tbaa !29
  %414 = load ptr, ptr %4, align 8, !tbaa !5
  %415 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %414, i32 0, i32 78
  %416 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %415, i32 0, i32 50
  %417 = load ptr, ptr %4, align 8, !tbaa !5
  %418 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %417, i32 0, i32 47
  %419 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %413, ptr noundef %416, ptr noundef %418, ptr noundef %419)
  %420 = load ptr, ptr %4, align 8, !tbaa !5
  %421 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %420, i32 0, i32 51
  store i8 1, ptr %421, align 1, !tbaa !49
  %422 = load ptr, ptr %4, align 8, !tbaa !5
  %423 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %422, i32 0, i32 72
  %424 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %423, i32 0, i32 0
  store i32 1, ptr %424, align 8, !tbaa !9
  br label %2684

425:                                              ; preds = %92
  %426 = load ptr, ptr %4, align 8, !tbaa !5
  %427 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %426, i32 0, i32 51
  store i8 0, ptr %427, align 1, !tbaa !49
  %428 = load ptr, ptr %4, align 8, !tbaa !5
  %429 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %428, i32 0, i32 48
  %430 = load double, ptr %429, align 8, !tbaa !50
  %431 = load ptr, ptr %4, align 8, !tbaa !5
  %432 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %431, i32 0, i32 78
  %433 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %432, i32 0, i32 51
  %434 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %433, i32 0, i32 4
  %435 = load ptr, ptr %434, align 8, !tbaa !28
  %436 = getelementptr inbounds double, ptr %435, i64 0
  store double %430, ptr %436, align 8, !tbaa !30
  %437 = load i64, ptr %6, align 8, !tbaa !29
  %438 = load ptr, ptr %4, align 8, !tbaa !5
  %439 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %438, i32 0, i32 49
  %440 = load ptr, ptr %4, align 8, !tbaa !5
  %441 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %440, i32 0, i32 78
  %442 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %441, i32 0, i32 52
  %443 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rcopyvrElPKNS_9ae_vectorEPNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %437, ptr noundef %439, ptr noundef %442, i64 noundef 0, ptr noundef %443)
  br label %444

444:                                              ; preds = %425, %385
  br label %333

445:                                              ; preds = %349
  br label %446

446:                                              ; preds = %445, %331
  %447 = load ptr, ptr %4, align 8, !tbaa !5
  %448 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %447, i32 0, i32 45
  %449 = load i64, ptr %448, align 8, !tbaa !40
  %450 = icmp ne i64 %449, 2
  br i1 %450, label %451, label %452

451:                                              ; preds = %446
  br label %772

452:                                              ; preds = %446
  %453 = load i64, ptr %6, align 8, !tbaa !29
  %454 = load ptr, ptr %4, align 8, !tbaa !5
  %455 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %454, i32 0, i32 26
  %456 = load ptr, ptr %4, align 8, !tbaa !5
  %457 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %456, i32 0, i32 47
  %458 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %453, ptr noundef %455, ptr noundef %457, ptr noundef %458)
  %459 = load ptr, ptr %4, align 8, !tbaa !5
  %460 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %459, i32 0, i32 21
  store double 0.000000e+00, ptr %460, align 8, !tbaa !41
  %461 = load ptr, ptr %4, align 8, !tbaa !5
  %462 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %461, i32 0, i32 9
  %463 = load double, ptr %462, align 8, !tbaa !42
  %464 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %463, double noundef 0.000000e+00)
  br i1 %464, label %465, label %466

465:                                              ; preds = %452
  br label %509

466:                                              ; preds = %452
  %467 = load ptr, ptr %4, align 8, !tbaa !5
  %468 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %467, i32 0, i32 53
  store i64 2, ptr %468, align 8, !tbaa !44
  %469 = load ptr, ptr %4, align 8, !tbaa !5
  %470 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %469, i32 0, i32 56
  store i64 1, ptr %470, align 8, !tbaa !45
  %471 = load ptr, ptr %4, align 8, !tbaa !5
  %472 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %471, i32 0, i32 57
  store i64 1, ptr %472, align 8, !tbaa !46
  %473 = load i64, ptr %6, align 8, !tbaa !29
  %474 = load ptr, ptr %4, align 8, !tbaa !5
  %475 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %474, i32 0, i32 58
  store i64 %473, ptr %475, align 8, !tbaa !47
  %476 = load ptr, ptr %4, align 8, !tbaa !5
  %477 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %476, i32 0, i32 59
  store i64 0, ptr %477, align 8, !tbaa !48
  %478 = load i64, ptr %6, align 8, !tbaa !29
  %479 = load ptr, ptr %4, align 8, !tbaa !5
  %480 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %479, i32 0, i32 47
  %481 = load ptr, ptr %4, align 8, !tbaa !5
  %482 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %481, i32 0, i32 61
  %483 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %478, ptr noundef %480, ptr noundef %482, ptr noundef %483)
  %484 = load ptr, ptr %4, align 8, !tbaa !5
  %485 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %484, i32 0, i32 62
  %486 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef 1, ptr noundef %485, ptr noundef %486)
  %487 = load i64, ptr %6, align 8, !tbaa !29
  %488 = load ptr, ptr %4, align 8, !tbaa !5
  %489 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %488, i32 0, i32 63
  %490 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %487, ptr noundef %489, ptr noundef %490)
  %491 = load ptr, ptr %4, align 8, !tbaa !5
  %492 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %491, i32 0, i32 72
  %493 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %492, i32 0, i32 0
  store i32 2, ptr %493, align 8, !tbaa !9
  br label %2684

494:                                              ; preds = %99
  %495 = load ptr, ptr %4, align 8, !tbaa !5
  %496 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %495, i32 0, i32 62
  %497 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %496, i32 0, i32 4
  %498 = load ptr, ptr %497, align 8, !tbaa !28
  %499 = getelementptr inbounds double, ptr %498, i64 0
  %500 = load double, ptr %499, align 8, !tbaa !30
  %501 = load ptr, ptr %4, align 8, !tbaa !5
  %502 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %501, i32 0, i32 48
  store double %500, ptr %502, align 8, !tbaa !50
  %503 = load i64, ptr %6, align 8, !tbaa !29
  %504 = load ptr, ptr %4, align 8, !tbaa !5
  %505 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %504, i32 0, i32 63
  %506 = load ptr, ptr %4, align 8, !tbaa !5
  %507 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %506, i32 0, i32 49
  %508 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %503, ptr noundef %505, ptr noundef %507, ptr noundef %508)
  br label %744

509:                                              ; preds = %465
  %510 = load ptr, ptr %4, align 8, !tbaa !5
  %511 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %510, i32 0, i32 53
  store i64 3, ptr %511, align 8, !tbaa !44
  %512 = load ptr, ptr %4, align 8, !tbaa !5
  %513 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %512, i32 0, i32 56
  store i64 1, ptr %513, align 8, !tbaa !45
  %514 = load ptr, ptr %4, align 8, !tbaa !5
  %515 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %514, i32 0, i32 57
  store i64 1, ptr %515, align 8, !tbaa !46
  %516 = load i64, ptr %6, align 8, !tbaa !29
  %517 = load ptr, ptr %4, align 8, !tbaa !5
  %518 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %517, i32 0, i32 58
  store i64 %516, ptr %518, align 8, !tbaa !47
  %519 = load ptr, ptr %4, align 8, !tbaa !5
  %520 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %519, i32 0, i32 59
  store i64 0, ptr %520, align 8, !tbaa !48
  %521 = load ptr, ptr %4, align 8, !tbaa !5
  %522 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %521, i32 0, i32 60
  store i64 5, ptr %522, align 8, !tbaa !51
  %523 = load i64, ptr %6, align 8, !tbaa !29
  %524 = load i64, ptr %6, align 8, !tbaa !29
  %525 = mul nsw i64 %524, 2
  %526 = load ptr, ptr %4, align 8, !tbaa !5
  %527 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %526, i32 0, i32 60
  %528 = load i64, ptr %527, align 8, !tbaa !51
  %529 = mul nsw i64 %525, %528
  %530 = add nsw i64 %523, %529
  %531 = load ptr, ptr %4, align 8, !tbaa !5
  %532 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %531, i32 0, i32 61
  %533 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %530, ptr noundef %532, ptr noundef %533)
  %534 = load i64, ptr %6, align 8, !tbaa !29
  %535 = load ptr, ptr %4, align 8, !tbaa !5
  %536 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %535, i32 0, i32 47
  %537 = load ptr, ptr %4, align 8, !tbaa !5
  %538 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %537, i32 0, i32 61
  %539 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %534, ptr noundef %536, ptr noundef %538, ptr noundef %539)
  store i64 0, ptr %8, align 8, !tbaa !29
  br label %540

540:                                              ; preds = %715, %509
  %541 = load i64, ptr %8, align 8, !tbaa !29
  %542 = load i64, ptr %6, align 8, !tbaa !29
  %543 = sub nsw i64 %542, 1
  %544 = icmp sle i64 %541, %543
  br i1 %544, label %545, label %718

545:                                              ; preds = %540
  %546 = load ptr, ptr %4, align 8, !tbaa !5
  %547 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %546, i32 0, i32 9
  %548 = load double, ptr %547, align 8, !tbaa !42
  %549 = load ptr, ptr %4, align 8, !tbaa !5
  %550 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %549, i32 0, i32 8
  %551 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %550, i32 0, i32 4
  %552 = load ptr, ptr %551, align 8, !tbaa !28
  %553 = load i64, ptr %8, align 8, !tbaa !29
  %554 = getelementptr inbounds double, ptr %552, i64 %553
  %555 = load double, ptr %554, align 8, !tbaa !30
  %556 = fmul double %548, %555
  store double %556, ptr %12, align 8, !tbaa !30
  %557 = load ptr, ptr %4, align 8, !tbaa !5
  %558 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %557, i32 0, i32 61
  %559 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %558, i32 0, i32 4
  %560 = load ptr, ptr %559, align 8, !tbaa !28
  %561 = load i64, ptr %6, align 8, !tbaa !29
  %562 = load i64, ptr %8, align 8, !tbaa !29
  %563 = mul nsw i64 10, %562
  %564 = add nsw i64 %561, %563
  %565 = add nsw i64 %564, 0
  %566 = add nsw i64 %565, 0
  %567 = getelementptr inbounds double, ptr %560, i64 %566
  store double 0.000000e+00, ptr %567, align 8, !tbaa !30
  %568 = load ptr, ptr %4, align 8, !tbaa !5
  %569 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %568, i32 0, i32 61
  %570 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %569, i32 0, i32 4
  %571 = load ptr, ptr %570, align 8, !tbaa !28
  %572 = load i64, ptr %6, align 8, !tbaa !29
  %573 = load i64, ptr %8, align 8, !tbaa !29
  %574 = mul nsw i64 10, %573
  %575 = add nsw i64 %572, %574
  %576 = add nsw i64 %575, 0
  %577 = add nsw i64 %576, 1
  %578 = getelementptr inbounds double, ptr %571, i64 %577
  store double 0.000000e+00, ptr %578, align 8, !tbaa !30
  %579 = load ptr, ptr %4, align 8, !tbaa !5
  %580 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %579, i32 0, i32 61
  %581 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %580, i32 0, i32 4
  %582 = load ptr, ptr %581, align 8, !tbaa !28
  %583 = load i64, ptr %8, align 8, !tbaa !29
  %584 = getelementptr inbounds double, ptr %582, i64 %583
  %585 = load double, ptr %584, align 8, !tbaa !30
  %586 = load double, ptr %12, align 8, !tbaa !30
  %587 = call double @llvm.fmuladd.f64(double -1.000000e+00, double %586, double %585)
  %588 = load ptr, ptr %4, align 8, !tbaa !5
  %589 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %588, i32 0, i32 61
  %590 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %589, i32 0, i32 4
  %591 = load ptr, ptr %590, align 8, !tbaa !28
  %592 = load i64, ptr %6, align 8, !tbaa !29
  %593 = load i64, ptr %8, align 8, !tbaa !29
  %594 = mul nsw i64 10, %593
  %595 = add nsw i64 %592, %594
  %596 = add nsw i64 %595, 2
  %597 = add nsw i64 %596, 0
  %598 = getelementptr inbounds double, ptr %591, i64 %597
  store double %587, ptr %598, align 8, !tbaa !30
  %599 = load double, ptr %12, align 8, !tbaa !30
  %600 = fmul double 6.000000e+00, %599
  %601 = fdiv double 1.000000e+00, %600
  %602 = load ptr, ptr %4, align 8, !tbaa !5
  %603 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %602, i32 0, i32 61
  %604 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %603, i32 0, i32 4
  %605 = load ptr, ptr %604, align 8, !tbaa !28
  %606 = load i64, ptr %6, align 8, !tbaa !29
  %607 = load i64, ptr %8, align 8, !tbaa !29
  %608 = mul nsw i64 10, %607
  %609 = add nsw i64 %606, %608
  %610 = add nsw i64 %609, 2
  %611 = add nsw i64 %610, 1
  %612 = getelementptr inbounds double, ptr %605, i64 %611
  store double %601, ptr %612, align 8, !tbaa !30
  %613 = load ptr, ptr %4, align 8, !tbaa !5
  %614 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %613, i32 0, i32 61
  %615 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %614, i32 0, i32 4
  %616 = load ptr, ptr %615, align 8, !tbaa !28
  %617 = load i64, ptr %8, align 8, !tbaa !29
  %618 = getelementptr inbounds double, ptr %616, i64 %617
  %619 = load double, ptr %618, align 8, !tbaa !30
  %620 = load double, ptr %12, align 8, !tbaa !30
  %621 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %620, double %619)
  %622 = load ptr, ptr %4, align 8, !tbaa !5
  %623 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %622, i32 0, i32 61
  %624 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %623, i32 0, i32 4
  %625 = load ptr, ptr %624, align 8, !tbaa !28
  %626 = load i64, ptr %6, align 8, !tbaa !29
  %627 = load i64, ptr %8, align 8, !tbaa !29
  %628 = mul nsw i64 10, %627
  %629 = add nsw i64 %626, %628
  %630 = add nsw i64 %629, 4
  %631 = add nsw i64 %630, 0
  %632 = getelementptr inbounds double, ptr %625, i64 %631
  store double %621, ptr %632, align 8, !tbaa !30
  %633 = load double, ptr %12, align 8, !tbaa !30
  %634 = fmul double 6.000000e+00, %633
  %635 = fdiv double -8.000000e+00, %634
  %636 = load ptr, ptr %4, align 8, !tbaa !5
  %637 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %636, i32 0, i32 61
  %638 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %637, i32 0, i32 4
  %639 = load ptr, ptr %638, align 8, !tbaa !28
  %640 = load i64, ptr %6, align 8, !tbaa !29
  %641 = load i64, ptr %8, align 8, !tbaa !29
  %642 = mul nsw i64 10, %641
  %643 = add nsw i64 %640, %642
  %644 = add nsw i64 %643, 4
  %645 = add nsw i64 %644, 1
  %646 = getelementptr inbounds double, ptr %639, i64 %645
  store double %635, ptr %646, align 8, !tbaa !30
  %647 = load ptr, ptr %4, align 8, !tbaa !5
  %648 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %647, i32 0, i32 61
  %649 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %648, i32 0, i32 4
  %650 = load ptr, ptr %649, align 8, !tbaa !28
  %651 = load i64, ptr %8, align 8, !tbaa !29
  %652 = getelementptr inbounds double, ptr %650, i64 %651
  %653 = load double, ptr %652, align 8, !tbaa !30
  %654 = load double, ptr %12, align 8, !tbaa !30
  %655 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %654, double %653)
  %656 = load ptr, ptr %4, align 8, !tbaa !5
  %657 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %656, i32 0, i32 61
  %658 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %657, i32 0, i32 4
  %659 = load ptr, ptr %658, align 8, !tbaa !28
  %660 = load i64, ptr %6, align 8, !tbaa !29
  %661 = load i64, ptr %8, align 8, !tbaa !29
  %662 = mul nsw i64 10, %661
  %663 = add nsw i64 %660, %662
  %664 = add nsw i64 %663, 6
  %665 = add nsw i64 %664, 0
  %666 = getelementptr inbounds double, ptr %659, i64 %665
  store double %655, ptr %666, align 8, !tbaa !30
  %667 = load double, ptr %12, align 8, !tbaa !30
  %668 = fmul double 6.000000e+00, %667
  %669 = fdiv double 8.000000e+00, %668
  %670 = load ptr, ptr %4, align 8, !tbaa !5
  %671 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %670, i32 0, i32 61
  %672 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %671, i32 0, i32 4
  %673 = load ptr, ptr %672, align 8, !tbaa !28
  %674 = load i64, ptr %6, align 8, !tbaa !29
  %675 = load i64, ptr %8, align 8, !tbaa !29
  %676 = mul nsw i64 10, %675
  %677 = add nsw i64 %674, %676
  %678 = add nsw i64 %677, 6
  %679 = add nsw i64 %678, 1
  %680 = getelementptr inbounds double, ptr %673, i64 %679
  store double %669, ptr %680, align 8, !tbaa !30
  %681 = load ptr, ptr %4, align 8, !tbaa !5
  %682 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %681, i32 0, i32 61
  %683 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %682, i32 0, i32 4
  %684 = load ptr, ptr %683, align 8, !tbaa !28
  %685 = load i64, ptr %8, align 8, !tbaa !29
  %686 = getelementptr inbounds double, ptr %684, i64 %685
  %687 = load double, ptr %686, align 8, !tbaa !30
  %688 = load double, ptr %12, align 8, !tbaa !30
  %689 = call double @llvm.fmuladd.f64(double 1.000000e+00, double %688, double %687)
  %690 = load ptr, ptr %4, align 8, !tbaa !5
  %691 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %690, i32 0, i32 61
  %692 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %691, i32 0, i32 4
  %693 = load ptr, ptr %692, align 8, !tbaa !28
  %694 = load i64, ptr %6, align 8, !tbaa !29
  %695 = load i64, ptr %8, align 8, !tbaa !29
  %696 = mul nsw i64 10, %695
  %697 = add nsw i64 %694, %696
  %698 = add nsw i64 %697, 8
  %699 = add nsw i64 %698, 0
  %700 = getelementptr inbounds double, ptr %693, i64 %699
  store double %689, ptr %700, align 8, !tbaa !30
  %701 = load double, ptr %12, align 8, !tbaa !30
  %702 = fmul double 6.000000e+00, %701
  %703 = fdiv double -1.000000e+00, %702
  %704 = load ptr, ptr %4, align 8, !tbaa !5
  %705 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %704, i32 0, i32 61
  %706 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %705, i32 0, i32 4
  %707 = load ptr, ptr %706, align 8, !tbaa !28
  %708 = load i64, ptr %6, align 8, !tbaa !29
  %709 = load i64, ptr %8, align 8, !tbaa !29
  %710 = mul nsw i64 10, %709
  %711 = add nsw i64 %708, %710
  %712 = add nsw i64 %711, 8
  %713 = add nsw i64 %712, 1
  %714 = getelementptr inbounds double, ptr %707, i64 %713
  store double %703, ptr %714, align 8, !tbaa !30
  br label %715

715:                                              ; preds = %545
  %716 = load i64, ptr %8, align 8, !tbaa !29
  %717 = add nsw i64 %716, 1
  store i64 %717, ptr %8, align 8, !tbaa !29
  br label %540, !llvm.loop !52

718:                                              ; preds = %540
  %719 = load ptr, ptr %4, align 8, !tbaa !5
  %720 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %719, i32 0, i32 62
  %721 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef 1, ptr noundef %720, ptr noundef %721)
  %722 = load i64, ptr %6, align 8, !tbaa !29
  %723 = load ptr, ptr %4, align 8, !tbaa !5
  %724 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %723, i32 0, i32 63
  %725 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %722, ptr noundef %724, ptr noundef %725)
  %726 = load ptr, ptr %4, align 8, !tbaa !5
  %727 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %726, i32 0, i32 72
  %728 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %727, i32 0, i32 0
  store i32 3, ptr %728, align 8, !tbaa !9
  br label %2684

729:                                              ; preds = %106
  %730 = load ptr, ptr %4, align 8, !tbaa !5
  %731 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %730, i32 0, i32 62
  %732 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %731, i32 0, i32 4
  %733 = load ptr, ptr %732, align 8, !tbaa !28
  %734 = getelementptr inbounds double, ptr %733, i64 0
  %735 = load double, ptr %734, align 8, !tbaa !30
  %736 = load ptr, ptr %4, align 8, !tbaa !5
  %737 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %736, i32 0, i32 48
  store double %735, ptr %737, align 8, !tbaa !50
  %738 = load i64, ptr %6, align 8, !tbaa !29
  %739 = load ptr, ptr %4, align 8, !tbaa !5
  %740 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %739, i32 0, i32 63
  %741 = load ptr, ptr %4, align 8, !tbaa !5
  %742 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %741, i32 0, i32 49
  %743 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %738, ptr noundef %740, ptr noundef %742, ptr noundef %743)
  br label %744

744:                                              ; preds = %729, %494
  %745 = load ptr, ptr %4, align 8, !tbaa !5
  %746 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %745, i32 0, i32 6
  %747 = load i8, ptr %746, align 8, !tbaa !53, !range !54, !noundef !55
  %748 = trunc i8 %747 to i1
  br i1 %748, label %750, label %749

749:                                              ; preds = %744
  br label %771

750:                                              ; preds = %744
  %751 = load ptr, ptr %4, align 8, !tbaa !5
  %752 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %751, i32 0, i32 53
  store i64 -1, ptr %752, align 8, !tbaa !44
  %753 = load i64, ptr %6, align 8, !tbaa !29
  %754 = load ptr, ptr %4, align 8, !tbaa !5
  %755 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %754, i32 0, i32 58
  store i64 %753, ptr %755, align 8, !tbaa !47
  %756 = load ptr, ptr %4, align 8, !tbaa !5
  %757 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %756, i32 0, i32 48
  %758 = load double, ptr %757, align 8, !tbaa !50
  %759 = load ptr, ptr %4, align 8, !tbaa !5
  %760 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %759, i32 0, i32 55
  store double %758, ptr %760, align 8, !tbaa !56
  %761 = load i64, ptr %6, align 8, !tbaa !29
  %762 = load ptr, ptr %4, align 8, !tbaa !5
  %763 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %762, i32 0, i32 47
  %764 = load ptr, ptr %4, align 8, !tbaa !5
  %765 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %764, i32 0, i32 54
  %766 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %761, ptr noundef %763, ptr noundef %765, ptr noundef %766)
  %767 = load ptr, ptr %4, align 8, !tbaa !5
  %768 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %767, i32 0, i32 72
  %769 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %768, i32 0, i32 0
  store i32 4, ptr %769, align 8, !tbaa !9
  br label %2684

770:                                              ; preds = %113
  br label %771

771:                                              ; preds = %770, %749
  br label %1027

772:                                              ; preds = %451
  %773 = load ptr, ptr %4, align 8, !tbaa !5
  %774 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %773, i32 0, i32 45
  %775 = load i64, ptr %774, align 8, !tbaa !40
  %776 = icmp eq i64 %775, 1
  %777 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %776, ptr noundef @.str.463, ptr noundef %777)
  store i64 0, ptr %8, align 8, !tbaa !29
  br label %778

778:                                              ; preds = %797, %772
  %779 = load i64, ptr %8, align 8, !tbaa !29
  %780 = load i64, ptr %6, align 8, !tbaa !29
  %781 = sub nsw i64 %780, 1
  %782 = icmp sle i64 %779, %781
  br i1 %782, label %783, label %800

783:                                              ; preds = %778
  %784 = load ptr, ptr %4, align 8, !tbaa !5
  %785 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %784, i32 0, i32 26
  %786 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %785, i32 0, i32 4
  %787 = load ptr, ptr %786, align 8, !tbaa !28
  %788 = load i64, ptr %8, align 8, !tbaa !29
  %789 = getelementptr inbounds double, ptr %787, i64 %788
  %790 = load double, ptr %789, align 8, !tbaa !30
  %791 = load ptr, ptr %4, align 8, !tbaa !5
  %792 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %791, i32 0, i32 47
  %793 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %792, i32 0, i32 4
  %794 = load ptr, ptr %793, align 8, !tbaa !28
  %795 = load i64, ptr %8, align 8, !tbaa !29
  %796 = getelementptr inbounds double, ptr %794, i64 %795
  store double %790, ptr %796, align 8, !tbaa !30
  br label %797

797:                                              ; preds = %783
  %798 = load i64, ptr %8, align 8, !tbaa !29
  %799 = add nsw i64 %798, 1
  store i64 %799, ptr %8, align 8, !tbaa !29
  br label %778, !llvm.loop !57

800:                                              ; preds = %778
  %801 = load ptr, ptr %4, align 8, !tbaa !5
  %802 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %801, i32 0, i32 21
  store double 0.000000e+00, ptr %802, align 8, !tbaa !41
  %803 = load ptr, ptr %4, align 8, !tbaa !5
  %804 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %803, ptr noundef %804)
  %805 = load ptr, ptr %4, align 8, !tbaa !5
  %806 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %805, i32 0, i32 9
  %807 = load double, ptr %806, align 8, !tbaa !42
  %808 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %807, double noundef 0.000000e+00)
  br i1 %808, label %809, label %810

809:                                              ; preds = %800
  br label %819

810:                                              ; preds = %800
  %811 = load ptr, ptr %4, align 8, !tbaa !5
  %812 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %811, i32 0, i32 51
  store i8 1, ptr %812, align 1, !tbaa !49
  %813 = load ptr, ptr %4, align 8, !tbaa !5
  %814 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %813, i32 0, i32 72
  %815 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %814, i32 0, i32 0
  store i32 5, ptr %815, align 8, !tbaa !9
  br label %2684

816:                                              ; preds = %120
  %817 = load ptr, ptr %4, align 8, !tbaa !5
  %818 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %817, i32 0, i32 51
  store i8 0, ptr %818, align 1, !tbaa !49
  br label %1009

819:                                              ; preds = %809
  %820 = load ptr, ptr %4, align 8, !tbaa !5
  %821 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %820, i32 0, i32 50
  store i8 1, ptr %821, align 8, !tbaa !58
  %822 = load ptr, ptr %4, align 8, !tbaa !5
  %823 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %822, i32 0, i32 72
  %824 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %823, i32 0, i32 0
  store i32 6, ptr %824, align 8, !tbaa !9
  br label %2684

825:                                              ; preds = %127
  %826 = load ptr, ptr %4, align 8, !tbaa !5
  %827 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %826, i32 0, i32 48
  %828 = load double, ptr %827, align 8, !tbaa !50
  %829 = load ptr, ptr %4, align 8, !tbaa !5
  %830 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %829, i32 0, i32 37
  store double %828, ptr %830, align 8, !tbaa !59
  store i64 0, ptr %8, align 8, !tbaa !29
  br label %831

831:                                              ; preds = %951, %825
  %832 = load i64, ptr %8, align 8, !tbaa !29
  %833 = load i64, ptr %6, align 8, !tbaa !29
  %834 = sub nsw i64 %833, 1
  %835 = icmp sgt i64 %832, %834
  br i1 %835, label %836, label %837

836:                                              ; preds = %831
  br label %1001

837:                                              ; preds = %831
  %838 = load ptr, ptr %4, align 8, !tbaa !5
  %839 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %838, i32 0, i32 47
  %840 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %839, i32 0, i32 4
  %841 = load ptr, ptr %840, align 8, !tbaa !28
  %842 = load i64, ptr %8, align 8, !tbaa !29
  %843 = getelementptr inbounds double, ptr %841, i64 %842
  %844 = load double, ptr %843, align 8, !tbaa !30
  store double %844, ptr %12, align 8, !tbaa !30
  %845 = load double, ptr %12, align 8, !tbaa !30
  %846 = load ptr, ptr %4, align 8, !tbaa !5
  %847 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %846, i32 0, i32 9
  %848 = load double, ptr %847, align 8, !tbaa !42
  %849 = load ptr, ptr %4, align 8, !tbaa !5
  %850 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %849, i32 0, i32 8
  %851 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %850, i32 0, i32 4
  %852 = load ptr, ptr %851, align 8, !tbaa !28
  %853 = load i64, ptr %8, align 8, !tbaa !29
  %854 = getelementptr inbounds double, ptr %852, i64 %853
  %855 = load double, ptr %854, align 8, !tbaa !30
  %856 = fneg double %848
  %857 = call double @llvm.fmuladd.f64(double %856, double %855, double %845)
  %858 = load ptr, ptr %4, align 8, !tbaa !5
  %859 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %858, i32 0, i32 47
  %860 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %859, i32 0, i32 4
  %861 = load ptr, ptr %860, align 8, !tbaa !28
  %862 = load i64, ptr %8, align 8, !tbaa !29
  %863 = getelementptr inbounds double, ptr %861, i64 %862
  store double %857, ptr %863, align 8, !tbaa !30
  %864 = load ptr, ptr %4, align 8, !tbaa !5
  %865 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %864, i32 0, i32 72
  %866 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %865, i32 0, i32 0
  store i32 7, ptr %866, align 8, !tbaa !9
  br label %2684

867:                                              ; preds = %134
  %868 = load ptr, ptr %4, align 8, !tbaa !5
  %869 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %868, i32 0, i32 48
  %870 = load double, ptr %869, align 8, !tbaa !50
  %871 = load ptr, ptr %4, align 8, !tbaa !5
  %872 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %871, i32 0, i32 38
  store double %870, ptr %872, align 8, !tbaa !60
  %873 = load double, ptr %12, align 8, !tbaa !30
  %874 = load ptr, ptr %4, align 8, !tbaa !5
  %875 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %874, i32 0, i32 9
  %876 = load double, ptr %875, align 8, !tbaa !42
  %877 = fmul double 5.000000e-01, %876
  %878 = load ptr, ptr %4, align 8, !tbaa !5
  %879 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %878, i32 0, i32 8
  %880 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %879, i32 0, i32 4
  %881 = load ptr, ptr %880, align 8, !tbaa !28
  %882 = load i64, ptr %8, align 8, !tbaa !29
  %883 = getelementptr inbounds double, ptr %881, i64 %882
  %884 = load double, ptr %883, align 8, !tbaa !30
  %885 = fneg double %877
  %886 = call double @llvm.fmuladd.f64(double %885, double %884, double %873)
  %887 = load ptr, ptr %4, align 8, !tbaa !5
  %888 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %887, i32 0, i32 47
  %889 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %888, i32 0, i32 4
  %890 = load ptr, ptr %889, align 8, !tbaa !28
  %891 = load i64, ptr %8, align 8, !tbaa !29
  %892 = getelementptr inbounds double, ptr %890, i64 %891
  store double %886, ptr %892, align 8, !tbaa !30
  %893 = load ptr, ptr %4, align 8, !tbaa !5
  %894 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %893, i32 0, i32 72
  %895 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %894, i32 0, i32 0
  store i32 8, ptr %895, align 8, !tbaa !9
  br label %2684

896:                                              ; preds = %141
  %897 = load ptr, ptr %4, align 8, !tbaa !5
  %898 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %897, i32 0, i32 48
  %899 = load double, ptr %898, align 8, !tbaa !50
  %900 = load ptr, ptr %4, align 8, !tbaa !5
  %901 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %900, i32 0, i32 39
  store double %899, ptr %901, align 8, !tbaa !61
  %902 = load double, ptr %12, align 8, !tbaa !30
  %903 = load ptr, ptr %4, align 8, !tbaa !5
  %904 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %903, i32 0, i32 9
  %905 = load double, ptr %904, align 8, !tbaa !42
  %906 = fmul double 5.000000e-01, %905
  %907 = load ptr, ptr %4, align 8, !tbaa !5
  %908 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %907, i32 0, i32 8
  %909 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %908, i32 0, i32 4
  %910 = load ptr, ptr %909, align 8, !tbaa !28
  %911 = load i64, ptr %8, align 8, !tbaa !29
  %912 = getelementptr inbounds double, ptr %910, i64 %911
  %913 = load double, ptr %912, align 8, !tbaa !30
  %914 = call double @llvm.fmuladd.f64(double %906, double %913, double %902)
  %915 = load ptr, ptr %4, align 8, !tbaa !5
  %916 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %915, i32 0, i32 47
  %917 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %916, i32 0, i32 4
  %918 = load ptr, ptr %917, align 8, !tbaa !28
  %919 = load i64, ptr %8, align 8, !tbaa !29
  %920 = getelementptr inbounds double, ptr %918, i64 %919
  store double %914, ptr %920, align 8, !tbaa !30
  %921 = load ptr, ptr %4, align 8, !tbaa !5
  %922 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %921, i32 0, i32 72
  %923 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %922, i32 0, i32 0
  store i32 9, ptr %923, align 8, !tbaa !9
  br label %2684

924:                                              ; preds = %148
  %925 = load ptr, ptr %4, align 8, !tbaa !5
  %926 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %925, i32 0, i32 48
  %927 = load double, ptr %926, align 8, !tbaa !50
  %928 = load ptr, ptr %4, align 8, !tbaa !5
  %929 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %928, i32 0, i32 40
  store double %927, ptr %929, align 8, !tbaa !62
  %930 = load double, ptr %12, align 8, !tbaa !30
  %931 = load ptr, ptr %4, align 8, !tbaa !5
  %932 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %931, i32 0, i32 9
  %933 = load double, ptr %932, align 8, !tbaa !42
  %934 = load ptr, ptr %4, align 8, !tbaa !5
  %935 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %934, i32 0, i32 8
  %936 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %935, i32 0, i32 4
  %937 = load ptr, ptr %936, align 8, !tbaa !28
  %938 = load i64, ptr %8, align 8, !tbaa !29
  %939 = getelementptr inbounds double, ptr %937, i64 %938
  %940 = load double, ptr %939, align 8, !tbaa !30
  %941 = call double @llvm.fmuladd.f64(double %933, double %940, double %930)
  %942 = load ptr, ptr %4, align 8, !tbaa !5
  %943 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %942, i32 0, i32 47
  %944 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %943, i32 0, i32 4
  %945 = load ptr, ptr %944, align 8, !tbaa !28
  %946 = load i64, ptr %8, align 8, !tbaa !29
  %947 = getelementptr inbounds double, ptr %945, i64 %946
  store double %941, ptr %947, align 8, !tbaa !30
  %948 = load ptr, ptr %4, align 8, !tbaa !5
  %949 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %948, i32 0, i32 72
  %950 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %949, i32 0, i32 0
  store i32 10, ptr %950, align 8, !tbaa !9
  br label %2684

951:                                              ; preds = %155
  %952 = load ptr, ptr %4, align 8, !tbaa !5
  %953 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %952, i32 0, i32 48
  %954 = load double, ptr %953, align 8, !tbaa !50
  %955 = load ptr, ptr %4, align 8, !tbaa !5
  %956 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %955, i32 0, i32 41
  store double %954, ptr %956, align 8, !tbaa !63
  %957 = load double, ptr %12, align 8, !tbaa !30
  %958 = load ptr, ptr %4, align 8, !tbaa !5
  %959 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %958, i32 0, i32 47
  %960 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %959, i32 0, i32 4
  %961 = load ptr, ptr %960, align 8, !tbaa !28
  %962 = load i64, ptr %8, align 8, !tbaa !29
  %963 = getelementptr inbounds double, ptr %961, i64 %962
  store double %957, ptr %963, align 8, !tbaa !30
  %964 = load ptr, ptr %4, align 8, !tbaa !5
  %965 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %964, i32 0, i32 40
  %966 = load double, ptr %965, align 8, !tbaa !62
  %967 = load ptr, ptr %4, align 8, !tbaa !5
  %968 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %967, i32 0, i32 39
  %969 = load double, ptr %968, align 8, !tbaa !61
  %970 = fsub double %966, %969
  %971 = load ptr, ptr %4, align 8, !tbaa !5
  %972 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %971, i32 0, i32 41
  %973 = load double, ptr %972, align 8, !tbaa !63
  %974 = load ptr, ptr %4, align 8, !tbaa !5
  %975 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %974, i32 0, i32 38
  %976 = load double, ptr %975, align 8, !tbaa !60
  %977 = fsub double %973, %976
  %978 = fneg double %977
  %979 = call double @llvm.fmuladd.f64(double 8.000000e+00, double %970, double %978)
  %980 = load ptr, ptr %4, align 8, !tbaa !5
  %981 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %980, i32 0, i32 9
  %982 = load double, ptr %981, align 8, !tbaa !42
  %983 = fmul double 6.000000e+00, %982
  %984 = load ptr, ptr %4, align 8, !tbaa !5
  %985 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %984, i32 0, i32 8
  %986 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %985, i32 0, i32 4
  %987 = load ptr, ptr %986, align 8, !tbaa !28
  %988 = load i64, ptr %8, align 8, !tbaa !29
  %989 = getelementptr inbounds double, ptr %987, i64 %988
  %990 = load double, ptr %989, align 8, !tbaa !30
  %991 = fmul double %983, %990
  %992 = fdiv double %979, %991
  %993 = load ptr, ptr %4, align 8, !tbaa !5
  %994 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %993, i32 0, i32 49
  %995 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %994, i32 0, i32 4
  %996 = load ptr, ptr %995, align 8, !tbaa !28
  %997 = load i64, ptr %8, align 8, !tbaa !29
  %998 = getelementptr inbounds double, ptr %996, i64 %997
  store double %992, ptr %998, align 8, !tbaa !30
  %999 = load i64, ptr %8, align 8, !tbaa !29
  %1000 = add nsw i64 %999, 1
  store i64 %1000, ptr %8, align 8, !tbaa !29
  br label %831

1001:                                             ; preds = %836
  %1002 = load ptr, ptr %4, align 8, !tbaa !5
  %1003 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1002, i32 0, i32 37
  %1004 = load double, ptr %1003, align 8, !tbaa !59
  %1005 = load ptr, ptr %4, align 8, !tbaa !5
  %1006 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1005, i32 0, i32 48
  store double %1004, ptr %1006, align 8, !tbaa !50
  %1007 = load ptr, ptr %4, align 8, !tbaa !5
  %1008 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1007, i32 0, i32 50
  store i8 0, ptr %1008, align 8, !tbaa !58
  br label %1009

1009:                                             ; preds = %1001, %816
  %1010 = load ptr, ptr %4, align 8, !tbaa !5
  %1011 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1010, i32 0, i32 6
  %1012 = load i8, ptr %1011, align 8, !tbaa !53, !range !54, !noundef !55
  %1013 = trunc i8 %1012 to i1
  br i1 %1013, label %1015, label %1014

1014:                                             ; preds = %1009
  br label %1026

1015:                                             ; preds = %1009
  %1016 = load ptr, ptr %4, align 8, !tbaa !5
  %1017 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %1016, ptr noundef %1017)
  %1018 = load ptr, ptr %4, align 8, !tbaa !5
  %1019 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1018, i32 0, i32 52
  store i8 1, ptr %1019, align 2, !tbaa !64
  %1020 = load ptr, ptr %4, align 8, !tbaa !5
  %1021 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1020, i32 0, i32 72
  %1022 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1021, i32 0, i32 0
  store i32 11, ptr %1022, align 8, !tbaa !9
  br label %2684

1023:                                             ; preds = %162
  %1024 = load ptr, ptr %4, align 8, !tbaa !5
  %1025 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1024, i32 0, i32 52
  store i8 0, ptr %1025, align 2, !tbaa !64
  br label %1026

1026:                                             ; preds = %1023, %1014
  br label %1027

1027:                                             ; preds = %1026, %771
  %1028 = load ptr, ptr %4, align 8, !tbaa !5
  %1029 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1028, i32 0, i32 48
  %1030 = load double, ptr %1029, align 8, !tbaa !50
  %1031 = load ptr, ptr %4, align 8, !tbaa !5
  %1032 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1031, i32 0, i32 25
  %1033 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11trimprepareEdPdPNS_8ae_stateE(double noundef %1030, ptr noundef %1032, ptr noundef %1033)
  %1034 = load ptr, ptr %4, align 8, !tbaa !5
  %1035 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1034, i32 0, i32 46
  %1036 = load i8, ptr %1035, align 8, !tbaa !33, !range !54, !noundef !55
  %1037 = trunc i8 %1036 to i1
  br i1 %1037, label %1038, label %1043

1038:                                             ; preds = %1027
  %1039 = load ptr, ptr %4, align 8, !tbaa !5
  %1040 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1039, i32 0, i32 75
  store i64 8, ptr %1040, align 8, !tbaa !34
  store i8 0, ptr %14, align 1, !tbaa !65
  %1041 = load i8, ptr %14, align 1, !tbaa !65, !range !54, !noundef !55
  %1042 = trunc i8 %1041 to i1
  store i1 %1042, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %2743

1043:                                             ; preds = %1027
  %1044 = load ptr, ptr %4, align 8, !tbaa !5
  %1045 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1044, i32 0, i32 74
  store i64 1, ptr %1045, align 8, !tbaa !36
  %1046 = load ptr, ptr %4, align 8, !tbaa !5
  %1047 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1046, i32 0, i32 48
  %1048 = load double, ptr %1047, align 8, !tbaa !50
  %1049 = load ptr, ptr %4, align 8, !tbaa !5
  %1050 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1049, i32 0, i32 24
  store double %1048, ptr %1050, align 8, !tbaa !66
  store double 0.000000e+00, ptr %12, align 8, !tbaa !30
  store i64 0, ptr %8, align 8, !tbaa !29
  br label %1051

1051:                                             ; preds = %1076, %1043
  %1052 = load i64, ptr %8, align 8, !tbaa !29
  %1053 = load i64, ptr %6, align 8, !tbaa !29
  %1054 = sub nsw i64 %1053, 1
  %1055 = icmp sle i64 %1052, %1054
  br i1 %1055, label %1056, label %1079

1056:                                             ; preds = %1051
  %1057 = load double, ptr %12, align 8, !tbaa !30
  %1058 = load ptr, ptr %4, align 8, !tbaa !5
  %1059 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1058, i32 0, i32 49
  %1060 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1059, i32 0, i32 4
  %1061 = load ptr, ptr %1060, align 8, !tbaa !28
  %1062 = load i64, ptr %8, align 8, !tbaa !29
  %1063 = getelementptr inbounds double, ptr %1061, i64 %1062
  %1064 = load double, ptr %1063, align 8, !tbaa !30
  %1065 = load ptr, ptr %4, align 8, !tbaa !5
  %1066 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1065, i32 0, i32 8
  %1067 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1066, i32 0, i32 4
  %1068 = load ptr, ptr %1067, align 8, !tbaa !28
  %1069 = load i64, ptr %8, align 8, !tbaa !29
  %1070 = getelementptr inbounds double, ptr %1068, i64 %1069
  %1071 = load double, ptr %1070, align 8, !tbaa !30
  %1072 = fmul double %1064, %1071
  %1073 = load ptr, ptr %5, align 8, !tbaa !5
  %1074 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1072, ptr noundef %1073)
  %1075 = fadd double %1057, %1074
  store double %1075, ptr %12, align 8, !tbaa !30
  br label %1076

1076:                                             ; preds = %1056
  %1077 = load i64, ptr %8, align 8, !tbaa !29
  %1078 = add nsw i64 %1077, 1
  store i64 %1078, ptr %8, align 8, !tbaa !29
  br label %1051, !llvm.loop !67

1079:                                             ; preds = %1051
  %1080 = load double, ptr %12, align 8, !tbaa !30
  %1081 = load ptr, ptr %5, align 8, !tbaa !5
  %1082 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1080, ptr noundef %1081)
  %1083 = load ptr, ptr %4, align 8, !tbaa !5
  %1084 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1083, i32 0, i32 2
  %1085 = load double, ptr %1084, align 8, !tbaa !68
  %1086 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1082, double noundef %1085)
  br i1 %1086, label %1087, label %1092

1087:                                             ; preds = %1079
  %1088 = load ptr, ptr %4, align 8, !tbaa !5
  %1089 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1088, i32 0, i32 75
  store i64 4, ptr %1089, align 8, !tbaa !34
  store i8 0, ptr %14, align 1, !tbaa !65
  %1090 = load i8, ptr %14, align 1, !tbaa !65, !range !54, !noundef !55
  %1091 = trunc i8 %1090 to i1
  store i1 %1091, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %2743

1092:                                             ; preds = %1079
  %1093 = load i64, ptr %6, align 8, !tbaa !29
  %1094 = load ptr, ptr %4, align 8, !tbaa !5
  %1095 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1094, i32 0, i32 49
  %1096 = load ptr, ptr %4, align 8, !tbaa !5
  %1097 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1096, i32 0, i32 20
  %1098 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9rcopymulvEldPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %1093, double noundef -1.000000e+00, ptr noundef %1095, ptr noundef %1097, ptr noundef %1098)
  %1099 = load ptr, ptr %4, align 8, !tbaa !5
  %1100 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1099, i32 0, i32 27
  %1101 = load i64, ptr %1100, align 8, !tbaa !69
  %1102 = icmp eq i64 %1101, 0
  br i1 %1102, label %1103, label %1133

1103:                                             ; preds = %1092
  %1104 = load i64, ptr %6, align 8, !tbaa !29
  %1105 = load ptr, ptr %4, align 8, !tbaa !5
  %1106 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1105, i32 0, i32 49
  %1107 = load ptr, ptr %5, align 8, !tbaa !5
  %1108 = call noundef double @_ZN11alglib_impl6rdotv2ElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1104, ptr noundef %1106, ptr noundef %1107)
  %1109 = load ptr, ptr %5, align 8, !tbaa !5
  %1110 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1108, ptr noundef %1109)
  store double %1110, ptr %12, align 8, !tbaa !30
  %1111 = load ptr, ptr %4, align 8, !tbaa !5
  %1112 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1111, i32 0, i32 7
  %1113 = load double, ptr %1112, align 8, !tbaa !70
  %1114 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1113, double noundef 0.000000e+00)
  br i1 %1114, label %1115, label %1122

1115:                                             ; preds = %1103
  %1116 = load double, ptr %12, align 8, !tbaa !30
  %1117 = fdiv double 1.000000e+00, %1116
  %1118 = load ptr, ptr %5, align 8, !tbaa !5
  %1119 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %1117, double noundef 1.000000e+00, ptr noundef %1118)
  %1120 = load ptr, ptr %4, align 8, !tbaa !5
  %1121 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1120, i32 0, i32 21
  store double %1119, ptr %1121, align 8, !tbaa !41
  br label %1132

1122:                                             ; preds = %1103
  %1123 = load double, ptr %12, align 8, !tbaa !30
  %1124 = fdiv double 1.000000e+00, %1123
  %1125 = load ptr, ptr %4, align 8, !tbaa !5
  %1126 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1125, i32 0, i32 7
  %1127 = load double, ptr %1126, align 8, !tbaa !70
  %1128 = load ptr, ptr %5, align 8, !tbaa !5
  %1129 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %1124, double noundef %1127, ptr noundef %1128)
  %1130 = load ptr, ptr %4, align 8, !tbaa !5
  %1131 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1130, i32 0, i32 21
  store double %1129, ptr %1131, align 8, !tbaa !41
  br label %1132

1132:                                             ; preds = %1122, %1115
  br label %1133

1133:                                             ; preds = %1132, %1092
  %1134 = load ptr, ptr %4, align 8, !tbaa !5
  %1135 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1134, i32 0, i32 27
  %1136 = load i64, ptr %1135, align 8, !tbaa !69
  %1137 = icmp eq i64 %1136, 1
  br i1 %1137, label %1138, label %1149

1138:                                             ; preds = %1133
  %1139 = load ptr, ptr %4, align 8, !tbaa !5
  %1140 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1139, i32 0, i32 29
  %1141 = load i64, ptr %6, align 8, !tbaa !29
  %1142 = load ptr, ptr %4, align 8, !tbaa !5
  %1143 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1142, i32 0, i32 20
  %1144 = load ptr, ptr %4, align 8, !tbaa !5
  %1145 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1144, i32 0, i32 43
  %1146 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl17fblscholeskysolveEPKNS_9ae_matrixEdlbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef %1140, double noundef 1.000000e+00, i64 noundef %1141, i1 noundef zeroext true, ptr noundef %1143, ptr noundef %1145, ptr noundef %1146)
  %1147 = load ptr, ptr %4, align 8, !tbaa !5
  %1148 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1147, i32 0, i32 21
  store double 1.000000e+00, ptr %1148, align 8, !tbaa !41
  br label %1149

1149:                                             ; preds = %1138, %1133
  %1150 = load ptr, ptr %4, align 8, !tbaa !5
  %1151 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1150, i32 0, i32 27
  %1152 = load i64, ptr %1151, align 8, !tbaa !69
  %1153 = icmp eq i64 %1152, 2
  br i1 %1153, label %1154, label %1163

1154:                                             ; preds = %1149
  %1155 = load i64, ptr %6, align 8, !tbaa !29
  %1156 = load ptr, ptr %4, align 8, !tbaa !5
  %1157 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1156, i32 0, i32 30
  %1158 = load ptr, ptr %4, align 8, !tbaa !5
  %1159 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1158, i32 0, i32 20
  %1160 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rmergedivvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %1155, ptr noundef %1157, ptr noundef %1159, ptr noundef %1160)
  %1161 = load ptr, ptr %4, align 8, !tbaa !5
  %1162 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1161, i32 0, i32 21
  store double 1.000000e+00, ptr %1162, align 8, !tbaa !41
  br label %1163

1163:                                             ; preds = %1154, %1149
  %1164 = load ptr, ptr %4, align 8, !tbaa !5
  %1165 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1164, i32 0, i32 27
  %1166 = load i64, ptr %1165, align 8, !tbaa !69
  %1167 = icmp eq i64 %1166, 3
  br i1 %1167, label %1168, label %1210

1168:                                             ; preds = %1163
  store i64 0, ptr %8, align 8, !tbaa !29
  br label %1169

1169:                                             ; preds = %1204, %1168
  %1170 = load i64, ptr %8, align 8, !tbaa !29
  %1171 = load i64, ptr %6, align 8, !tbaa !29
  %1172 = sub nsw i64 %1171, 1
  %1173 = icmp sle i64 %1170, %1172
  br i1 %1173, label %1174, label %1207

1174:                                             ; preds = %1169
  %1175 = load ptr, ptr %4, align 8, !tbaa !5
  %1176 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1175, i32 0, i32 20
  %1177 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1176, i32 0, i32 4
  %1178 = load ptr, ptr %1177, align 8, !tbaa !28
  %1179 = load i64, ptr %8, align 8, !tbaa !29
  %1180 = getelementptr inbounds double, ptr %1178, i64 %1179
  %1181 = load double, ptr %1180, align 8, !tbaa !30
  %1182 = load ptr, ptr %4, align 8, !tbaa !5
  %1183 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1182, i32 0, i32 8
  %1184 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1183, i32 0, i32 4
  %1185 = load ptr, ptr %1184, align 8, !tbaa !28
  %1186 = load i64, ptr %8, align 8, !tbaa !29
  %1187 = getelementptr inbounds double, ptr %1185, i64 %1186
  %1188 = load double, ptr %1187, align 8, !tbaa !30
  %1189 = fmul double %1181, %1188
  %1190 = load ptr, ptr %4, align 8, !tbaa !5
  %1191 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1190, i32 0, i32 8
  %1192 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1191, i32 0, i32 4
  %1193 = load ptr, ptr %1192, align 8, !tbaa !28
  %1194 = load i64, ptr %8, align 8, !tbaa !29
  %1195 = getelementptr inbounds double, ptr %1193, i64 %1194
  %1196 = load double, ptr %1195, align 8, !tbaa !30
  %1197 = fmul double %1189, %1196
  %1198 = load ptr, ptr %4, align 8, !tbaa !5
  %1199 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1198, i32 0, i32 20
  %1200 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1199, i32 0, i32 4
  %1201 = load ptr, ptr %1200, align 8, !tbaa !28
  %1202 = load i64, ptr %8, align 8, !tbaa !29
  %1203 = getelementptr inbounds double, ptr %1201, i64 %1202
  store double %1197, ptr %1203, align 8, !tbaa !30
  br label %1204

1204:                                             ; preds = %1174
  %1205 = load i64, ptr %8, align 8, !tbaa !29
  %1206 = add nsw i64 %1205, 1
  store i64 %1206, ptr %8, align 8, !tbaa !29
  br label %1169, !llvm.loop !71

1207:                                             ; preds = %1169
  %1208 = load ptr, ptr %4, align 8, !tbaa !5
  %1209 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1208, i32 0, i32 21
  store double 1.000000e+00, ptr %1209, align 8, !tbaa !41
  br label %1210

1210:                                             ; preds = %1207, %1163
  %1211 = load ptr, ptr %4, align 8, !tbaa !5
  %1212 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1211, i32 0, i32 27
  %1213 = load i64, ptr %1212, align 8, !tbaa !69
  %1214 = icmp eq i64 %1213, 4
  br i1 %1214, label %1215, label %1233

1215:                                             ; preds = %1210
  %1216 = load ptr, ptr %4, align 8, !tbaa !5
  %1217 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1216, i32 0, i32 20
  %1218 = load i64, ptr %6, align 8, !tbaa !29
  %1219 = load ptr, ptr %4, align 8, !tbaa !5
  %1220 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1219, i32 0, i32 32
  %1221 = load ptr, ptr %4, align 8, !tbaa !5
  %1222 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1221, i32 0, i32 31
  %1223 = load ptr, ptr %4, align 8, !tbaa !5
  %1224 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1223, i32 0, i32 33
  %1225 = load ptr, ptr %4, align 8, !tbaa !5
  %1226 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1225, i32 0, i32 34
  %1227 = load i64, ptr %1226, align 8, !tbaa !72
  %1228 = load ptr, ptr %4, align 8, !tbaa !5
  %1229 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1228, i32 0, i32 35
  %1230 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl26inexactlbfgspreconditionerEPNS_9ae_vectorElPKS0_S3_PKNS_9ae_matrixElPNS_12precbuflbfgsEPNS_8ae_stateE(ptr noundef %1217, i64 noundef %1218, ptr noundef %1220, ptr noundef %1222, ptr noundef %1224, i64 noundef %1227, ptr noundef %1229, ptr noundef %1230)
  %1231 = load ptr, ptr %4, align 8, !tbaa !5
  %1232 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1231, i32 0, i32 21
  store double 1.000000e+00, ptr %1232, align 8, !tbaa !41
  br label %1233

1233:                                             ; preds = %1215, %1210
  %1234 = load ptr, ptr %4, align 8, !tbaa !5
  %1235 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1234, i32 0, i32 27
  %1236 = load i64, ptr %1235, align 8, !tbaa !69
  %1237 = icmp eq i64 %1236, 5
  br i1 %1237, label %1238, label %1246

1238:                                             ; preds = %1233
  %1239 = load ptr, ptr %4, align 8, !tbaa !5
  %1240 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1239, i32 0, i32 20
  %1241 = load ptr, ptr %4, align 8, !tbaa !5
  %1242 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1241, i32 0, i32 36
  %1243 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl26applylowrankpreconditionerEPNS_9ae_vectorEPNS_14precbuflowrankEPNS_8ae_stateE(ptr noundef %1240, ptr noundef %1242, ptr noundef %1243)
  %1244 = load ptr, ptr %4, align 8, !tbaa !5
  %1245 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1244, i32 0, i32 21
  store double 1.000000e+00, ptr %1245, align 8, !tbaa !41
  br label %1246

1246:                                             ; preds = %1238, %1233
  %1247 = load ptr, ptr %4, align 8, !tbaa !5
  %1248 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1247, i32 0, i32 20
  %1249 = load ptr, ptr %4, align 8, !tbaa !5
  %1250 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1249, i32 0, i32 21
  %1251 = load i64, ptr %6, align 8, !tbaa !29
  %1252 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl16linminnormalizedEPNS_9ae_vectorEPdlPNS_8ae_stateE(ptr noundef %1248, ptr noundef %1250, i64 noundef %1251, ptr noundef %1252)
  %1253 = load ptr, ptr %4, align 8, !tbaa !5
  %1254 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1253, i32 0, i32 21
  %1255 = load double, ptr %1254, align 8, !tbaa !41
  %1256 = load ptr, ptr %4, align 8, !tbaa !5
  %1257 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1256, i32 0, i32 22
  store double %1255, ptr %1257, align 8, !tbaa !73
  %1258 = load ptr, ptr %4, align 8, !tbaa !5
  %1259 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1258, i32 0, i32 12
  store i64 0, ptr %1259, align 8, !tbaa !74
  br label %1260

1260:                                             ; preds = %2680, %1246
  %1261 = load ptr, ptr %4, align 8, !tbaa !5
  %1262 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1261, i32 0, i32 12
  %1263 = load i64, ptr %1262, align 8, !tbaa !74
  %1264 = load i64, ptr %7, align 8, !tbaa !29
  %1265 = srem i64 %1263, %1264
  %1266 = load ptr, ptr %4, align 8, !tbaa !5
  %1267 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1266, i32 0, i32 14
  store i64 %1265, ptr %1267, align 8, !tbaa !75
  %1268 = load ptr, ptr %4, align 8, !tbaa !5
  %1269 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1268, i32 0, i32 12
  %1270 = load i64, ptr %1269, align 8, !tbaa !74
  %1271 = load i64, ptr %7, align 8, !tbaa !29
  %1272 = sub nsw i64 %1271, 1
  %1273 = load ptr, ptr %5, align 8, !tbaa !5
  %1274 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %1270, i64 noundef %1272, ptr noundef %1273)
  %1275 = load ptr, ptr %4, align 8, !tbaa !5
  %1276 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1275, i32 0, i32 13
  store i64 %1274, ptr %1276, align 8, !tbaa !76
  %1277 = load ptr, ptr %4, align 8, !tbaa !5
  %1278 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1277, i32 0, i32 18
  %1279 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1278, i32 0, i32 4
  %1280 = load ptr, ptr %1279, align 8, !tbaa !28
  %1281 = getelementptr inbounds double, ptr %1280, i64 0
  %1282 = load ptr, ptr %4, align 8, !tbaa !5
  %1283 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1282, i32 0, i32 47
  %1284 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1283, i32 0, i32 4
  %1285 = load ptr, ptr %1284, align 8, !tbaa !28
  %1286 = getelementptr inbounds double, ptr %1285, i64 0
  %1287 = load i64, ptr %6, align 8, !tbaa !29
  %1288 = sub nsw i64 %1287, 1
  %1289 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1288)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1281, i64 noundef 1, ptr noundef %1286, i64 noundef 1, i64 noundef %1289)
  %1290 = load ptr, ptr %4, align 8, !tbaa !5
  %1291 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1290, i32 0, i32 17
  %1292 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1291, i32 0, i32 6
  %1293 = load ptr, ptr %1292, align 8, !tbaa !28
  %1294 = load ptr, ptr %4, align 8, !tbaa !5
  %1295 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1294, i32 0, i32 14
  %1296 = load i64, ptr %1295, align 8, !tbaa !75
  %1297 = getelementptr inbounds ptr, ptr %1293, i64 %1296
  %1298 = load ptr, ptr %1297, align 8, !tbaa !5
  %1299 = getelementptr inbounds double, ptr %1298, i64 0
  %1300 = load ptr, ptr %4, align 8, !tbaa !5
  %1301 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1300, i32 0, i32 47
  %1302 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1301, i32 0, i32 4
  %1303 = load ptr, ptr %1302, align 8, !tbaa !28
  %1304 = getelementptr inbounds double, ptr %1303, i64 0
  %1305 = load i64, ptr %6, align 8, !tbaa !29
  %1306 = sub nsw i64 %1305, 1
  %1307 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1306)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %1299, i64 noundef 1, ptr noundef %1304, i64 noundef 1, i64 noundef %1307)
  %1308 = load ptr, ptr %4, align 8, !tbaa !5
  %1309 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1308, i32 0, i32 16
  %1310 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1309, i32 0, i32 6
  %1311 = load ptr, ptr %1310, align 8, !tbaa !28
  %1312 = load ptr, ptr %4, align 8, !tbaa !5
  %1313 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1312, i32 0, i32 14
  %1314 = load i64, ptr %1313, align 8, !tbaa !75
  %1315 = getelementptr inbounds ptr, ptr %1311, i64 %1314
  %1316 = load ptr, ptr %1315, align 8, !tbaa !5
  %1317 = getelementptr inbounds double, ptr %1316, i64 0
  %1318 = load ptr, ptr %4, align 8, !tbaa !5
  %1319 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1318, i32 0, i32 49
  %1320 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1319, i32 0, i32 4
  %1321 = load ptr, ptr %1320, align 8, !tbaa !28
  %1322 = getelementptr inbounds double, ptr %1321, i64 0
  %1323 = load i64, ptr %6, align 8, !tbaa !29
  %1324 = sub nsw i64 %1323, 1
  %1325 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1324)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %1317, i64 noundef 1, ptr noundef %1322, i64 noundef 1, i64 noundef %1325)
  %1326 = load ptr, ptr %4, align 8, !tbaa !5
  %1327 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1326, i32 0, i32 11
  store i64 0, ptr %1327, align 8, !tbaa !77
  %1328 = load ptr, ptr %4, align 8, !tbaa !5
  %1329 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1328, i32 0, i32 12
  %1330 = load i64, ptr %1329, align 8, !tbaa !74
  %1331 = icmp ne i64 %1330, 0
  br i1 %1331, label %1332, label %1335

1332:                                             ; preds = %1260
  %1333 = load ptr, ptr %4, align 8, !tbaa !5
  %1334 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1333, i32 0, i32 21
  store double 1.000000e+00, ptr %1334, align 8, !tbaa !41
  br label %1335

1335:                                             ; preds = %1332, %1260
  %1336 = load ptr, ptr %4, align 8, !tbaa !5
  %1337 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1336, i32 0, i32 20
  %1338 = load ptr, ptr %4, align 8, !tbaa !5
  %1339 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1338, i32 0, i32 21
  %1340 = load i64, ptr %6, align 8, !tbaa !29
  %1341 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl16linminnormalizedEPNS_9ae_vectorEPdlPNS_8ae_stateE(ptr noundef %1337, ptr noundef %1339, i64 noundef %1340, ptr noundef %1341)
  %1342 = load ptr, ptr %4, align 8, !tbaa !5
  %1343 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1342, i32 0, i32 22
  %1344 = load double, ptr %1343, align 8, !tbaa !73
  %1345 = fmul double 1.000000e+01, %1344
  %1346 = load ptr, ptr %4, align 8, !tbaa !5
  %1347 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1346, i32 0, i32 42
  store double %1345, ptr %1347, align 8, !tbaa !78
  %1348 = load ptr, ptr %4, align 8, !tbaa !5
  %1349 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1348, i32 0, i32 7
  %1350 = load double, ptr %1349, align 8, !tbaa !70
  %1351 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1350, double noundef 0.000000e+00)
  br i1 %1351, label %1352, label %1363

1352:                                             ; preds = %1335
  %1353 = load ptr, ptr %4, align 8, !tbaa !5
  %1354 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1353, i32 0, i32 42
  %1355 = load double, ptr %1354, align 8, !tbaa !78
  %1356 = load ptr, ptr %4, align 8, !tbaa !5
  %1357 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1356, i32 0, i32 7
  %1358 = load double, ptr %1357, align 8, !tbaa !70
  %1359 = load ptr, ptr %5, align 8, !tbaa !5
  %1360 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %1355, double noundef %1358, ptr noundef %1359)
  %1361 = load ptr, ptr %4, align 8, !tbaa !5
  %1362 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1361, i32 0, i32 42
  store double %1360, ptr %1362, align 8, !tbaa !78
  br label %1363

1363:                                             ; preds = %1352, %1335
  %1364 = load ptr, ptr %4, align 8, !tbaa !5
  %1365 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1364, i32 0, i32 78
  %1366 = load ptr, ptr %4, align 8, !tbaa !5
  %1367 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1366, i32 0, i32 8
  %1368 = load ptr, ptr %4, align 8, !tbaa !5
  %1369 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1368, i32 0, i32 44
  %1370 = load ptr, ptr %4, align 8, !tbaa !5
  %1371 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1370, i32 0, i32 47
  %1372 = load ptr, ptr %4, align 8, !tbaa !5
  %1373 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1372, i32 0, i32 48
  %1374 = load double, ptr %1373, align 8, !tbaa !50
  %1375 = load ptr, ptr %4, align 8, !tbaa !5
  %1376 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1375, i32 0, i32 49
  %1377 = load ptr, ptr %4, align 8, !tbaa !5
  %1378 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1377, i32 0, i32 12
  %1379 = load i64, ptr %1378, align 8, !tbaa !74
  %1380 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl34smoothnessmonitorstartlinesearch1uEPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_dS4_llPNS_8ae_stateE(ptr noundef %1365, ptr noundef %1367, ptr noundef %1369, ptr noundef %1371, double noundef %1374, ptr noundef %1376, i64 noundef %1379, i64 noundef -1, ptr noundef %1380)
  %1381 = load i64, ptr %6, align 8, !tbaa !29
  %1382 = load ptr, ptr %4, align 8, !tbaa !5
  %1383 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1382, i32 0, i32 47
  %1384 = load ptr, ptr %4, align 8, !tbaa !5
  %1385 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1384, i32 0, i32 48
  %1386 = load ptr, ptr %4, align 8, !tbaa !5
  %1387 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1386, i32 0, i32 49
  %1388 = load ptr, ptr %4, align 8, !tbaa !5
  %1389 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1388, i32 0, i32 20
  %1390 = load ptr, ptr %4, align 8, !tbaa !5
  %1391 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1390, i32 0, i32 21
  %1392 = load ptr, ptr %4, align 8, !tbaa !5
  %1393 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1392, i32 0, i32 42
  %1394 = load double, ptr %1393, align 8, !tbaa !78
  %1395 = load double, ptr @_ZN11alglib_implL13minlbfgs_gtolE, align 8, !tbaa !30
  %1396 = load ptr, ptr %4, align 8, !tbaa !5
  %1397 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1396, i32 0, i32 10
  %1398 = load ptr, ptr %4, align 8, !tbaa !5
  %1399 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1398, i32 0, i32 23
  %1400 = load ptr, ptr %4, align 8, !tbaa !5
  %1401 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1400, i32 0, i32 76
  %1402 = load ptr, ptr %4, align 8, !tbaa !5
  %1403 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1402, i32 0, i32 11
  %1404 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_PKS0_S2_ddPlS5_S1_PNS_11linminstateES5_PNS_8ae_stateE(i64 noundef %1381, ptr noundef %1383, ptr noundef %1385, ptr noundef %1387, ptr noundef %1389, ptr noundef %1391, double noundef %1394, double noundef %1395, ptr noundef %11, ptr noundef %1397, ptr noundef %1399, ptr noundef %1401, ptr noundef %1403, ptr noundef %1404)
  br label %1405

1405:                                             ; preds = %1912, %1363
  %1406 = load ptr, ptr %4, align 8, !tbaa !5
  %1407 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1406, i32 0, i32 11
  %1408 = load i64, ptr %1407, align 8, !tbaa !77
  %1409 = icmp eq i64 %1408, 0
  br i1 %1409, label %1410, label %1411

1410:                                             ; preds = %1405
  br label %1965

1411:                                             ; preds = %1405
  %1412 = load ptr, ptr %4, align 8, !tbaa !5
  %1413 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1412, i32 0, i32 45
  %1414 = load i64, ptr %1413, align 8, !tbaa !40
  %1415 = icmp ne i64 %1414, 2
  br i1 %1415, label %1416, label %1417

1416:                                             ; preds = %1411
  br label %1699

1417:                                             ; preds = %1411
  %1418 = load ptr, ptr %4, align 8, !tbaa !5
  %1419 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1418, i32 0, i32 9
  %1420 = load double, ptr %1419, align 8, !tbaa !42
  %1421 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1420, double noundef 0.000000e+00)
  br i1 %1421, label %1422, label %1423

1422:                                             ; preds = %1417
  br label %1466

1423:                                             ; preds = %1417
  %1424 = load ptr, ptr %4, align 8, !tbaa !5
  %1425 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1424, i32 0, i32 53
  store i64 2, ptr %1425, align 8, !tbaa !44
  %1426 = load ptr, ptr %4, align 8, !tbaa !5
  %1427 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1426, i32 0, i32 56
  store i64 1, ptr %1427, align 8, !tbaa !45
  %1428 = load ptr, ptr %4, align 8, !tbaa !5
  %1429 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1428, i32 0, i32 57
  store i64 1, ptr %1429, align 8, !tbaa !46
  %1430 = load i64, ptr %6, align 8, !tbaa !29
  %1431 = load ptr, ptr %4, align 8, !tbaa !5
  %1432 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1431, i32 0, i32 58
  store i64 %1430, ptr %1432, align 8, !tbaa !47
  %1433 = load ptr, ptr %4, align 8, !tbaa !5
  %1434 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1433, i32 0, i32 59
  store i64 0, ptr %1434, align 8, !tbaa !48
  %1435 = load i64, ptr %6, align 8, !tbaa !29
  %1436 = load ptr, ptr %4, align 8, !tbaa !5
  %1437 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1436, i32 0, i32 47
  %1438 = load ptr, ptr %4, align 8, !tbaa !5
  %1439 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1438, i32 0, i32 61
  %1440 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %1435, ptr noundef %1437, ptr noundef %1439, ptr noundef %1440)
  %1441 = load ptr, ptr %4, align 8, !tbaa !5
  %1442 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1441, i32 0, i32 62
  %1443 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef 1, ptr noundef %1442, ptr noundef %1443)
  %1444 = load i64, ptr %6, align 8, !tbaa !29
  %1445 = load ptr, ptr %4, align 8, !tbaa !5
  %1446 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1445, i32 0, i32 63
  %1447 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1444, ptr noundef %1446, ptr noundef %1447)
  %1448 = load ptr, ptr %4, align 8, !tbaa !5
  %1449 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1448, i32 0, i32 72
  %1450 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1449, i32 0, i32 0
  store i32 12, ptr %1450, align 8, !tbaa !9
  br label %2684

1451:                                             ; preds = %169
  %1452 = load ptr, ptr %4, align 8, !tbaa !5
  %1453 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1452, i32 0, i32 62
  %1454 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1453, i32 0, i32 4
  %1455 = load ptr, ptr %1454, align 8, !tbaa !28
  %1456 = getelementptr inbounds double, ptr %1455, i64 0
  %1457 = load double, ptr %1456, align 8, !tbaa !30
  %1458 = load ptr, ptr %4, align 8, !tbaa !5
  %1459 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1458, i32 0, i32 48
  store double %1457, ptr %1459, align 8, !tbaa !50
  %1460 = load i64, ptr %6, align 8, !tbaa !29
  %1461 = load ptr, ptr %4, align 8, !tbaa !5
  %1462 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1461, i32 0, i32 63
  %1463 = load ptr, ptr %4, align 8, !tbaa !5
  %1464 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1463, i32 0, i32 49
  %1465 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %1460, ptr noundef %1462, ptr noundef %1464, ptr noundef %1465)
  br label %1698

1466:                                             ; preds = %1422
  %1467 = load ptr, ptr %4, align 8, !tbaa !5
  %1468 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1467, i32 0, i32 53
  store i64 3, ptr %1468, align 8, !tbaa !44
  %1469 = load ptr, ptr %4, align 8, !tbaa !5
  %1470 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1469, i32 0, i32 56
  store i64 1, ptr %1470, align 8, !tbaa !45
  %1471 = load ptr, ptr %4, align 8, !tbaa !5
  %1472 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1471, i32 0, i32 57
  store i64 1, ptr %1472, align 8, !tbaa !46
  %1473 = load i64, ptr %6, align 8, !tbaa !29
  %1474 = load ptr, ptr %4, align 8, !tbaa !5
  %1475 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1474, i32 0, i32 58
  store i64 %1473, ptr %1475, align 8, !tbaa !47
  %1476 = load ptr, ptr %4, align 8, !tbaa !5
  %1477 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1476, i32 0, i32 59
  store i64 0, ptr %1477, align 8, !tbaa !48
  %1478 = load ptr, ptr %4, align 8, !tbaa !5
  %1479 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1478, i32 0, i32 60
  store i64 5, ptr %1479, align 8, !tbaa !51
  %1480 = load i64, ptr %6, align 8, !tbaa !29
  %1481 = load i64, ptr %6, align 8, !tbaa !29
  %1482 = mul nsw i64 %1481, 2
  %1483 = mul nsw i64 %1482, 5
  %1484 = add nsw i64 %1480, %1483
  %1485 = load ptr, ptr %4, align 8, !tbaa !5
  %1486 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1485, i32 0, i32 61
  %1487 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1484, ptr noundef %1486, ptr noundef %1487)
  %1488 = load i64, ptr %6, align 8, !tbaa !29
  %1489 = load ptr, ptr %4, align 8, !tbaa !5
  %1490 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1489, i32 0, i32 47
  %1491 = load ptr, ptr %4, align 8, !tbaa !5
  %1492 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1491, i32 0, i32 61
  %1493 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %1488, ptr noundef %1490, ptr noundef %1492, ptr noundef %1493)
  store i64 0, ptr %8, align 8, !tbaa !29
  br label %1494

1494:                                             ; preds = %1669, %1466
  %1495 = load i64, ptr %8, align 8, !tbaa !29
  %1496 = load i64, ptr %6, align 8, !tbaa !29
  %1497 = sub nsw i64 %1496, 1
  %1498 = icmp sle i64 %1495, %1497
  br i1 %1498, label %1499, label %1672

1499:                                             ; preds = %1494
  %1500 = load ptr, ptr %4, align 8, !tbaa !5
  %1501 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1500, i32 0, i32 9
  %1502 = load double, ptr %1501, align 8, !tbaa !42
  %1503 = load ptr, ptr %4, align 8, !tbaa !5
  %1504 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1503, i32 0, i32 8
  %1505 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1504, i32 0, i32 4
  %1506 = load ptr, ptr %1505, align 8, !tbaa !28
  %1507 = load i64, ptr %8, align 8, !tbaa !29
  %1508 = getelementptr inbounds double, ptr %1506, i64 %1507
  %1509 = load double, ptr %1508, align 8, !tbaa !30
  %1510 = fmul double %1502, %1509
  store double %1510, ptr %12, align 8, !tbaa !30
  %1511 = load ptr, ptr %4, align 8, !tbaa !5
  %1512 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1511, i32 0, i32 61
  %1513 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1512, i32 0, i32 4
  %1514 = load ptr, ptr %1513, align 8, !tbaa !28
  %1515 = load i64, ptr %6, align 8, !tbaa !29
  %1516 = load i64, ptr %8, align 8, !tbaa !29
  %1517 = mul nsw i64 10, %1516
  %1518 = add nsw i64 %1515, %1517
  %1519 = add nsw i64 %1518, 0
  %1520 = add nsw i64 %1519, 0
  %1521 = getelementptr inbounds double, ptr %1514, i64 %1520
  store double 0.000000e+00, ptr %1521, align 8, !tbaa !30
  %1522 = load ptr, ptr %4, align 8, !tbaa !5
  %1523 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1522, i32 0, i32 61
  %1524 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1523, i32 0, i32 4
  %1525 = load ptr, ptr %1524, align 8, !tbaa !28
  %1526 = load i64, ptr %6, align 8, !tbaa !29
  %1527 = load i64, ptr %8, align 8, !tbaa !29
  %1528 = mul nsw i64 10, %1527
  %1529 = add nsw i64 %1526, %1528
  %1530 = add nsw i64 %1529, 0
  %1531 = add nsw i64 %1530, 1
  %1532 = getelementptr inbounds double, ptr %1525, i64 %1531
  store double 0.000000e+00, ptr %1532, align 8, !tbaa !30
  %1533 = load ptr, ptr %4, align 8, !tbaa !5
  %1534 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1533, i32 0, i32 61
  %1535 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1534, i32 0, i32 4
  %1536 = load ptr, ptr %1535, align 8, !tbaa !28
  %1537 = load i64, ptr %8, align 8, !tbaa !29
  %1538 = getelementptr inbounds double, ptr %1536, i64 %1537
  %1539 = load double, ptr %1538, align 8, !tbaa !30
  %1540 = load double, ptr %12, align 8, !tbaa !30
  %1541 = call double @llvm.fmuladd.f64(double -1.000000e+00, double %1540, double %1539)
  %1542 = load ptr, ptr %4, align 8, !tbaa !5
  %1543 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1542, i32 0, i32 61
  %1544 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1543, i32 0, i32 4
  %1545 = load ptr, ptr %1544, align 8, !tbaa !28
  %1546 = load i64, ptr %6, align 8, !tbaa !29
  %1547 = load i64, ptr %8, align 8, !tbaa !29
  %1548 = mul nsw i64 10, %1547
  %1549 = add nsw i64 %1546, %1548
  %1550 = add nsw i64 %1549, 2
  %1551 = add nsw i64 %1550, 0
  %1552 = getelementptr inbounds double, ptr %1545, i64 %1551
  store double %1541, ptr %1552, align 8, !tbaa !30
  %1553 = load double, ptr %12, align 8, !tbaa !30
  %1554 = fmul double 6.000000e+00, %1553
  %1555 = fdiv double 1.000000e+00, %1554
  %1556 = load ptr, ptr %4, align 8, !tbaa !5
  %1557 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1556, i32 0, i32 61
  %1558 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1557, i32 0, i32 4
  %1559 = load ptr, ptr %1558, align 8, !tbaa !28
  %1560 = load i64, ptr %6, align 8, !tbaa !29
  %1561 = load i64, ptr %8, align 8, !tbaa !29
  %1562 = mul nsw i64 10, %1561
  %1563 = add nsw i64 %1560, %1562
  %1564 = add nsw i64 %1563, 2
  %1565 = add nsw i64 %1564, 1
  %1566 = getelementptr inbounds double, ptr %1559, i64 %1565
  store double %1555, ptr %1566, align 8, !tbaa !30
  %1567 = load ptr, ptr %4, align 8, !tbaa !5
  %1568 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1567, i32 0, i32 61
  %1569 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1568, i32 0, i32 4
  %1570 = load ptr, ptr %1569, align 8, !tbaa !28
  %1571 = load i64, ptr %8, align 8, !tbaa !29
  %1572 = getelementptr inbounds double, ptr %1570, i64 %1571
  %1573 = load double, ptr %1572, align 8, !tbaa !30
  %1574 = load double, ptr %12, align 8, !tbaa !30
  %1575 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %1574, double %1573)
  %1576 = load ptr, ptr %4, align 8, !tbaa !5
  %1577 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1576, i32 0, i32 61
  %1578 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1577, i32 0, i32 4
  %1579 = load ptr, ptr %1578, align 8, !tbaa !28
  %1580 = load i64, ptr %6, align 8, !tbaa !29
  %1581 = load i64, ptr %8, align 8, !tbaa !29
  %1582 = mul nsw i64 10, %1581
  %1583 = add nsw i64 %1580, %1582
  %1584 = add nsw i64 %1583, 4
  %1585 = add nsw i64 %1584, 0
  %1586 = getelementptr inbounds double, ptr %1579, i64 %1585
  store double %1575, ptr %1586, align 8, !tbaa !30
  %1587 = load double, ptr %12, align 8, !tbaa !30
  %1588 = fmul double 6.000000e+00, %1587
  %1589 = fdiv double -8.000000e+00, %1588
  %1590 = load ptr, ptr %4, align 8, !tbaa !5
  %1591 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1590, i32 0, i32 61
  %1592 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1591, i32 0, i32 4
  %1593 = load ptr, ptr %1592, align 8, !tbaa !28
  %1594 = load i64, ptr %6, align 8, !tbaa !29
  %1595 = load i64, ptr %8, align 8, !tbaa !29
  %1596 = mul nsw i64 10, %1595
  %1597 = add nsw i64 %1594, %1596
  %1598 = add nsw i64 %1597, 4
  %1599 = add nsw i64 %1598, 1
  %1600 = getelementptr inbounds double, ptr %1593, i64 %1599
  store double %1589, ptr %1600, align 8, !tbaa !30
  %1601 = load ptr, ptr %4, align 8, !tbaa !5
  %1602 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1601, i32 0, i32 61
  %1603 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1602, i32 0, i32 4
  %1604 = load ptr, ptr %1603, align 8, !tbaa !28
  %1605 = load i64, ptr %8, align 8, !tbaa !29
  %1606 = getelementptr inbounds double, ptr %1604, i64 %1605
  %1607 = load double, ptr %1606, align 8, !tbaa !30
  %1608 = load double, ptr %12, align 8, !tbaa !30
  %1609 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %1608, double %1607)
  %1610 = load ptr, ptr %4, align 8, !tbaa !5
  %1611 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1610, i32 0, i32 61
  %1612 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1611, i32 0, i32 4
  %1613 = load ptr, ptr %1612, align 8, !tbaa !28
  %1614 = load i64, ptr %6, align 8, !tbaa !29
  %1615 = load i64, ptr %8, align 8, !tbaa !29
  %1616 = mul nsw i64 10, %1615
  %1617 = add nsw i64 %1614, %1616
  %1618 = add nsw i64 %1617, 6
  %1619 = add nsw i64 %1618, 0
  %1620 = getelementptr inbounds double, ptr %1613, i64 %1619
  store double %1609, ptr %1620, align 8, !tbaa !30
  %1621 = load double, ptr %12, align 8, !tbaa !30
  %1622 = fmul double 6.000000e+00, %1621
  %1623 = fdiv double 8.000000e+00, %1622
  %1624 = load ptr, ptr %4, align 8, !tbaa !5
  %1625 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1624, i32 0, i32 61
  %1626 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1625, i32 0, i32 4
  %1627 = load ptr, ptr %1626, align 8, !tbaa !28
  %1628 = load i64, ptr %6, align 8, !tbaa !29
  %1629 = load i64, ptr %8, align 8, !tbaa !29
  %1630 = mul nsw i64 10, %1629
  %1631 = add nsw i64 %1628, %1630
  %1632 = add nsw i64 %1631, 6
  %1633 = add nsw i64 %1632, 1
  %1634 = getelementptr inbounds double, ptr %1627, i64 %1633
  store double %1623, ptr %1634, align 8, !tbaa !30
  %1635 = load ptr, ptr %4, align 8, !tbaa !5
  %1636 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1635, i32 0, i32 61
  %1637 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1636, i32 0, i32 4
  %1638 = load ptr, ptr %1637, align 8, !tbaa !28
  %1639 = load i64, ptr %8, align 8, !tbaa !29
  %1640 = getelementptr inbounds double, ptr %1638, i64 %1639
  %1641 = load double, ptr %1640, align 8, !tbaa !30
  %1642 = load double, ptr %12, align 8, !tbaa !30
  %1643 = call double @llvm.fmuladd.f64(double 1.000000e+00, double %1642, double %1641)
  %1644 = load ptr, ptr %4, align 8, !tbaa !5
  %1645 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1644, i32 0, i32 61
  %1646 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1645, i32 0, i32 4
  %1647 = load ptr, ptr %1646, align 8, !tbaa !28
  %1648 = load i64, ptr %6, align 8, !tbaa !29
  %1649 = load i64, ptr %8, align 8, !tbaa !29
  %1650 = mul nsw i64 10, %1649
  %1651 = add nsw i64 %1648, %1650
  %1652 = add nsw i64 %1651, 8
  %1653 = add nsw i64 %1652, 0
  %1654 = getelementptr inbounds double, ptr %1647, i64 %1653
  store double %1643, ptr %1654, align 8, !tbaa !30
  %1655 = load double, ptr %12, align 8, !tbaa !30
  %1656 = fmul double 6.000000e+00, %1655
  %1657 = fdiv double -1.000000e+00, %1656
  %1658 = load ptr, ptr %4, align 8, !tbaa !5
  %1659 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1658, i32 0, i32 61
  %1660 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1659, i32 0, i32 4
  %1661 = load ptr, ptr %1660, align 8, !tbaa !28
  %1662 = load i64, ptr %6, align 8, !tbaa !29
  %1663 = load i64, ptr %8, align 8, !tbaa !29
  %1664 = mul nsw i64 10, %1663
  %1665 = add nsw i64 %1662, %1664
  %1666 = add nsw i64 %1665, 8
  %1667 = add nsw i64 %1666, 1
  %1668 = getelementptr inbounds double, ptr %1661, i64 %1667
  store double %1657, ptr %1668, align 8, !tbaa !30
  br label %1669

1669:                                             ; preds = %1499
  %1670 = load i64, ptr %8, align 8, !tbaa !29
  %1671 = add nsw i64 %1670, 1
  store i64 %1671, ptr %8, align 8, !tbaa !29
  br label %1494, !llvm.loop !79

1672:                                             ; preds = %1494
  %1673 = load ptr, ptr %4, align 8, !tbaa !5
  %1674 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1673, i32 0, i32 62
  %1675 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef 1, ptr noundef %1674, ptr noundef %1675)
  %1676 = load i64, ptr %6, align 8, !tbaa !29
  %1677 = load ptr, ptr %4, align 8, !tbaa !5
  %1678 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1677, i32 0, i32 63
  %1679 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1676, ptr noundef %1678, ptr noundef %1679)
  %1680 = load ptr, ptr %4, align 8, !tbaa !5
  %1681 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1680, i32 0, i32 72
  %1682 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1681, i32 0, i32 0
  store i32 13, ptr %1682, align 8, !tbaa !9
  br label %2684

1683:                                             ; preds = %176
  %1684 = load ptr, ptr %4, align 8, !tbaa !5
  %1685 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1684, i32 0, i32 62
  %1686 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1685, i32 0, i32 4
  %1687 = load ptr, ptr %1686, align 8, !tbaa !28
  %1688 = getelementptr inbounds double, ptr %1687, i64 0
  %1689 = load double, ptr %1688, align 8, !tbaa !30
  %1690 = load ptr, ptr %4, align 8, !tbaa !5
  %1691 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1690, i32 0, i32 48
  store double %1689, ptr %1691, align 8, !tbaa !50
  %1692 = load i64, ptr %6, align 8, !tbaa !29
  %1693 = load ptr, ptr %4, align 8, !tbaa !5
  %1694 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1693, i32 0, i32 63
  %1695 = load ptr, ptr %4, align 8, !tbaa !5
  %1696 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1695, i32 0, i32 49
  %1697 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %1692, ptr noundef %1694, ptr noundef %1696, ptr noundef %1697)
  br label %1698

1698:                                             ; preds = %1683, %1451
  br label %1912

1699:                                             ; preds = %1416
  %1700 = load ptr, ptr %4, align 8, !tbaa !5
  %1701 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1700, i32 0, i32 45
  %1702 = load i64, ptr %1701, align 8, !tbaa !40
  %1703 = icmp eq i64 %1702, 1
  %1704 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1703, ptr noundef @.str.464, ptr noundef %1704)
  %1705 = load ptr, ptr %4, align 8, !tbaa !5
  %1706 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %1705, ptr noundef %1706)
  %1707 = load ptr, ptr %4, align 8, !tbaa !5
  %1708 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1707, i32 0, i32 9
  %1709 = load double, ptr %1708, align 8, !tbaa !42
  %1710 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1709, double noundef 0.000000e+00)
  br i1 %1710, label %1711, label %1712

1711:                                             ; preds = %1699
  br label %1721

1712:                                             ; preds = %1699
  %1713 = load ptr, ptr %4, align 8, !tbaa !5
  %1714 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1713, i32 0, i32 51
  store i8 1, ptr %1714, align 1, !tbaa !49
  %1715 = load ptr, ptr %4, align 8, !tbaa !5
  %1716 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1715, i32 0, i32 72
  %1717 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1716, i32 0, i32 0
  store i32 14, ptr %1717, align 8, !tbaa !9
  br label %2684

1718:                                             ; preds = %183
  %1719 = load ptr, ptr %4, align 8, !tbaa !5
  %1720 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1719, i32 0, i32 51
  store i8 0, ptr %1720, align 1, !tbaa !49
  br label %1911

1721:                                             ; preds = %1711
  %1722 = load ptr, ptr %4, align 8, !tbaa !5
  %1723 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1722, i32 0, i32 50
  store i8 1, ptr %1723, align 8, !tbaa !58
  %1724 = load ptr, ptr %4, align 8, !tbaa !5
  %1725 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1724, i32 0, i32 72
  %1726 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1725, i32 0, i32 0
  store i32 15, ptr %1726, align 8, !tbaa !9
  br label %2684

1727:                                             ; preds = %190
  %1728 = load ptr, ptr %4, align 8, !tbaa !5
  %1729 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1728, i32 0, i32 48
  %1730 = load double, ptr %1729, align 8, !tbaa !50
  %1731 = load ptr, ptr %4, align 8, !tbaa !5
  %1732 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1731, i32 0, i32 37
  store double %1730, ptr %1732, align 8, !tbaa !59
  store i64 0, ptr %8, align 8, !tbaa !29
  br label %1733

1733:                                             ; preds = %1853, %1727
  %1734 = load i64, ptr %8, align 8, !tbaa !29
  %1735 = load i64, ptr %6, align 8, !tbaa !29
  %1736 = sub nsw i64 %1735, 1
  %1737 = icmp sgt i64 %1734, %1736
  br i1 %1737, label %1738, label %1739

1738:                                             ; preds = %1733
  br label %1903

1739:                                             ; preds = %1733
  %1740 = load ptr, ptr %4, align 8, !tbaa !5
  %1741 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1740, i32 0, i32 47
  %1742 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1741, i32 0, i32 4
  %1743 = load ptr, ptr %1742, align 8, !tbaa !28
  %1744 = load i64, ptr %8, align 8, !tbaa !29
  %1745 = getelementptr inbounds double, ptr %1743, i64 %1744
  %1746 = load double, ptr %1745, align 8, !tbaa !30
  store double %1746, ptr %12, align 8, !tbaa !30
  %1747 = load double, ptr %12, align 8, !tbaa !30
  %1748 = load ptr, ptr %4, align 8, !tbaa !5
  %1749 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1748, i32 0, i32 9
  %1750 = load double, ptr %1749, align 8, !tbaa !42
  %1751 = load ptr, ptr %4, align 8, !tbaa !5
  %1752 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1751, i32 0, i32 8
  %1753 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1752, i32 0, i32 4
  %1754 = load ptr, ptr %1753, align 8, !tbaa !28
  %1755 = load i64, ptr %8, align 8, !tbaa !29
  %1756 = getelementptr inbounds double, ptr %1754, i64 %1755
  %1757 = load double, ptr %1756, align 8, !tbaa !30
  %1758 = fneg double %1750
  %1759 = call double @llvm.fmuladd.f64(double %1758, double %1757, double %1747)
  %1760 = load ptr, ptr %4, align 8, !tbaa !5
  %1761 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1760, i32 0, i32 47
  %1762 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1761, i32 0, i32 4
  %1763 = load ptr, ptr %1762, align 8, !tbaa !28
  %1764 = load i64, ptr %8, align 8, !tbaa !29
  %1765 = getelementptr inbounds double, ptr %1763, i64 %1764
  store double %1759, ptr %1765, align 8, !tbaa !30
  %1766 = load ptr, ptr %4, align 8, !tbaa !5
  %1767 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1766, i32 0, i32 72
  %1768 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1767, i32 0, i32 0
  store i32 16, ptr %1768, align 8, !tbaa !9
  br label %2684

1769:                                             ; preds = %197
  %1770 = load ptr, ptr %4, align 8, !tbaa !5
  %1771 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1770, i32 0, i32 48
  %1772 = load double, ptr %1771, align 8, !tbaa !50
  %1773 = load ptr, ptr %4, align 8, !tbaa !5
  %1774 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1773, i32 0, i32 38
  store double %1772, ptr %1774, align 8, !tbaa !60
  %1775 = load double, ptr %12, align 8, !tbaa !30
  %1776 = load ptr, ptr %4, align 8, !tbaa !5
  %1777 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1776, i32 0, i32 9
  %1778 = load double, ptr %1777, align 8, !tbaa !42
  %1779 = fmul double 5.000000e-01, %1778
  %1780 = load ptr, ptr %4, align 8, !tbaa !5
  %1781 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1780, i32 0, i32 8
  %1782 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1781, i32 0, i32 4
  %1783 = load ptr, ptr %1782, align 8, !tbaa !28
  %1784 = load i64, ptr %8, align 8, !tbaa !29
  %1785 = getelementptr inbounds double, ptr %1783, i64 %1784
  %1786 = load double, ptr %1785, align 8, !tbaa !30
  %1787 = fneg double %1779
  %1788 = call double @llvm.fmuladd.f64(double %1787, double %1786, double %1775)
  %1789 = load ptr, ptr %4, align 8, !tbaa !5
  %1790 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1789, i32 0, i32 47
  %1791 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1790, i32 0, i32 4
  %1792 = load ptr, ptr %1791, align 8, !tbaa !28
  %1793 = load i64, ptr %8, align 8, !tbaa !29
  %1794 = getelementptr inbounds double, ptr %1792, i64 %1793
  store double %1788, ptr %1794, align 8, !tbaa !30
  %1795 = load ptr, ptr %4, align 8, !tbaa !5
  %1796 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1795, i32 0, i32 72
  %1797 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1796, i32 0, i32 0
  store i32 17, ptr %1797, align 8, !tbaa !9
  br label %2684

1798:                                             ; preds = %204
  %1799 = load ptr, ptr %4, align 8, !tbaa !5
  %1800 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1799, i32 0, i32 48
  %1801 = load double, ptr %1800, align 8, !tbaa !50
  %1802 = load ptr, ptr %4, align 8, !tbaa !5
  %1803 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1802, i32 0, i32 39
  store double %1801, ptr %1803, align 8, !tbaa !61
  %1804 = load double, ptr %12, align 8, !tbaa !30
  %1805 = load ptr, ptr %4, align 8, !tbaa !5
  %1806 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1805, i32 0, i32 9
  %1807 = load double, ptr %1806, align 8, !tbaa !42
  %1808 = fmul double 5.000000e-01, %1807
  %1809 = load ptr, ptr %4, align 8, !tbaa !5
  %1810 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1809, i32 0, i32 8
  %1811 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1810, i32 0, i32 4
  %1812 = load ptr, ptr %1811, align 8, !tbaa !28
  %1813 = load i64, ptr %8, align 8, !tbaa !29
  %1814 = getelementptr inbounds double, ptr %1812, i64 %1813
  %1815 = load double, ptr %1814, align 8, !tbaa !30
  %1816 = call double @llvm.fmuladd.f64(double %1808, double %1815, double %1804)
  %1817 = load ptr, ptr %4, align 8, !tbaa !5
  %1818 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1817, i32 0, i32 47
  %1819 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1818, i32 0, i32 4
  %1820 = load ptr, ptr %1819, align 8, !tbaa !28
  %1821 = load i64, ptr %8, align 8, !tbaa !29
  %1822 = getelementptr inbounds double, ptr %1820, i64 %1821
  store double %1816, ptr %1822, align 8, !tbaa !30
  %1823 = load ptr, ptr %4, align 8, !tbaa !5
  %1824 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1823, i32 0, i32 72
  %1825 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1824, i32 0, i32 0
  store i32 18, ptr %1825, align 8, !tbaa !9
  br label %2684

1826:                                             ; preds = %211
  %1827 = load ptr, ptr %4, align 8, !tbaa !5
  %1828 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1827, i32 0, i32 48
  %1829 = load double, ptr %1828, align 8, !tbaa !50
  %1830 = load ptr, ptr %4, align 8, !tbaa !5
  %1831 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1830, i32 0, i32 40
  store double %1829, ptr %1831, align 8, !tbaa !62
  %1832 = load double, ptr %12, align 8, !tbaa !30
  %1833 = load ptr, ptr %4, align 8, !tbaa !5
  %1834 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1833, i32 0, i32 9
  %1835 = load double, ptr %1834, align 8, !tbaa !42
  %1836 = load ptr, ptr %4, align 8, !tbaa !5
  %1837 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1836, i32 0, i32 8
  %1838 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1837, i32 0, i32 4
  %1839 = load ptr, ptr %1838, align 8, !tbaa !28
  %1840 = load i64, ptr %8, align 8, !tbaa !29
  %1841 = getelementptr inbounds double, ptr %1839, i64 %1840
  %1842 = load double, ptr %1841, align 8, !tbaa !30
  %1843 = call double @llvm.fmuladd.f64(double %1835, double %1842, double %1832)
  %1844 = load ptr, ptr %4, align 8, !tbaa !5
  %1845 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1844, i32 0, i32 47
  %1846 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1845, i32 0, i32 4
  %1847 = load ptr, ptr %1846, align 8, !tbaa !28
  %1848 = load i64, ptr %8, align 8, !tbaa !29
  %1849 = getelementptr inbounds double, ptr %1847, i64 %1848
  store double %1843, ptr %1849, align 8, !tbaa !30
  %1850 = load ptr, ptr %4, align 8, !tbaa !5
  %1851 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1850, i32 0, i32 72
  %1852 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1851, i32 0, i32 0
  store i32 19, ptr %1852, align 8, !tbaa !9
  br label %2684

1853:                                             ; preds = %218
  %1854 = load ptr, ptr %4, align 8, !tbaa !5
  %1855 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1854, i32 0, i32 48
  %1856 = load double, ptr %1855, align 8, !tbaa !50
  %1857 = load ptr, ptr %4, align 8, !tbaa !5
  %1858 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1857, i32 0, i32 41
  store double %1856, ptr %1858, align 8, !tbaa !63
  %1859 = load double, ptr %12, align 8, !tbaa !30
  %1860 = load ptr, ptr %4, align 8, !tbaa !5
  %1861 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1860, i32 0, i32 47
  %1862 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1861, i32 0, i32 4
  %1863 = load ptr, ptr %1862, align 8, !tbaa !28
  %1864 = load i64, ptr %8, align 8, !tbaa !29
  %1865 = getelementptr inbounds double, ptr %1863, i64 %1864
  store double %1859, ptr %1865, align 8, !tbaa !30
  %1866 = load ptr, ptr %4, align 8, !tbaa !5
  %1867 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1866, i32 0, i32 40
  %1868 = load double, ptr %1867, align 8, !tbaa !62
  %1869 = load ptr, ptr %4, align 8, !tbaa !5
  %1870 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1869, i32 0, i32 39
  %1871 = load double, ptr %1870, align 8, !tbaa !61
  %1872 = fsub double %1868, %1871
  %1873 = load ptr, ptr %4, align 8, !tbaa !5
  %1874 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1873, i32 0, i32 41
  %1875 = load double, ptr %1874, align 8, !tbaa !63
  %1876 = load ptr, ptr %4, align 8, !tbaa !5
  %1877 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1876, i32 0, i32 38
  %1878 = load double, ptr %1877, align 8, !tbaa !60
  %1879 = fsub double %1875, %1878
  %1880 = fneg double %1879
  %1881 = call double @llvm.fmuladd.f64(double 8.000000e+00, double %1872, double %1880)
  %1882 = load ptr, ptr %4, align 8, !tbaa !5
  %1883 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1882, i32 0, i32 9
  %1884 = load double, ptr %1883, align 8, !tbaa !42
  %1885 = fmul double 6.000000e+00, %1884
  %1886 = load ptr, ptr %4, align 8, !tbaa !5
  %1887 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1886, i32 0, i32 8
  %1888 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1887, i32 0, i32 4
  %1889 = load ptr, ptr %1888, align 8, !tbaa !28
  %1890 = load i64, ptr %8, align 8, !tbaa !29
  %1891 = getelementptr inbounds double, ptr %1889, i64 %1890
  %1892 = load double, ptr %1891, align 8, !tbaa !30
  %1893 = fmul double %1885, %1892
  %1894 = fdiv double %1881, %1893
  %1895 = load ptr, ptr %4, align 8, !tbaa !5
  %1896 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1895, i32 0, i32 49
  %1897 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1896, i32 0, i32 4
  %1898 = load ptr, ptr %1897, align 8, !tbaa !28
  %1899 = load i64, ptr %8, align 8, !tbaa !29
  %1900 = getelementptr inbounds double, ptr %1898, i64 %1899
  store double %1894, ptr %1900, align 8, !tbaa !30
  %1901 = load i64, ptr %8, align 8, !tbaa !29
  %1902 = add nsw i64 %1901, 1
  store i64 %1902, ptr %8, align 8, !tbaa !29
  br label %1733

1903:                                             ; preds = %1738
  %1904 = load ptr, ptr %4, align 8, !tbaa !5
  %1905 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1904, i32 0, i32 37
  %1906 = load double, ptr %1905, align 8, !tbaa !59
  %1907 = load ptr, ptr %4, align 8, !tbaa !5
  %1908 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1907, i32 0, i32 48
  store double %1906, ptr %1908, align 8, !tbaa !50
  %1909 = load ptr, ptr %4, align 8, !tbaa !5
  %1910 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1909, i32 0, i32 50
  store i8 0, ptr %1910, align 8, !tbaa !58
  br label %1911

1911:                                             ; preds = %1903, %1718
  br label %1912

1912:                                             ; preds = %1911, %1698
  %1913 = load ptr, ptr %4, align 8, !tbaa !5
  %1914 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1913, i32 0, i32 78
  %1915 = load ptr, ptr %4, align 8, !tbaa !5
  %1916 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1915, i32 0, i32 8
  %1917 = load ptr, ptr %4, align 8, !tbaa !5
  %1918 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1917, i32 0, i32 44
  %1919 = load ptr, ptr %4, align 8, !tbaa !5
  %1920 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1919, i32 0, i32 20
  %1921 = load ptr, ptr %4, align 8, !tbaa !5
  %1922 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1921, i32 0, i32 21
  %1923 = load double, ptr %1922, align 8, !tbaa !41
  %1924 = load ptr, ptr %4, align 8, !tbaa !5
  %1925 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1924, i32 0, i32 47
  %1926 = load ptr, ptr %4, align 8, !tbaa !5
  %1927 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1926, i32 0, i32 48
  %1928 = load double, ptr %1927, align 8, !tbaa !50
  %1929 = load ptr, ptr %4, align 8, !tbaa !5
  %1930 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1929, i32 0, i32 49
  %1931 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl31smoothnessmonitorenqueuepoint1uEPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_dS4_dS4_PNS_8ae_stateE(ptr noundef %1914, ptr noundef %1916, ptr noundef %1918, ptr noundef %1920, double noundef %1923, ptr noundef %1925, double noundef %1928, ptr noundef %1930, ptr noundef %1931)
  %1932 = load ptr, ptr %4, align 8, !tbaa !5
  %1933 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1932, i32 0, i32 48
  %1934 = load ptr, ptr %4, align 8, !tbaa !5
  %1935 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1934, i32 0, i32 49
  %1936 = load i64, ptr %6, align 8, !tbaa !29
  %1937 = load ptr, ptr %4, align 8, !tbaa !5
  %1938 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1937, i32 0, i32 25
  %1939 = load double, ptr %1938, align 8, !tbaa !80
  %1940 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl12trimfunctionEPdPNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef %1933, ptr noundef %1935, i64 noundef %1936, double noundef %1939, ptr noundef %1940)
  %1941 = load i64, ptr %6, align 8, !tbaa !29
  %1942 = load ptr, ptr %4, align 8, !tbaa !5
  %1943 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1942, i32 0, i32 47
  %1944 = load ptr, ptr %4, align 8, !tbaa !5
  %1945 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1944, i32 0, i32 48
  %1946 = load ptr, ptr %4, align 8, !tbaa !5
  %1947 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1946, i32 0, i32 49
  %1948 = load ptr, ptr %4, align 8, !tbaa !5
  %1949 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1948, i32 0, i32 20
  %1950 = load ptr, ptr %4, align 8, !tbaa !5
  %1951 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1950, i32 0, i32 21
  %1952 = load ptr, ptr %4, align 8, !tbaa !5
  %1953 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1952, i32 0, i32 42
  %1954 = load double, ptr %1953, align 8, !tbaa !78
  %1955 = load double, ptr @_ZN11alglib_implL13minlbfgs_gtolE, align 8, !tbaa !30
  %1956 = load ptr, ptr %4, align 8, !tbaa !5
  %1957 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1956, i32 0, i32 10
  %1958 = load ptr, ptr %4, align 8, !tbaa !5
  %1959 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1958, i32 0, i32 23
  %1960 = load ptr, ptr %4, align 8, !tbaa !5
  %1961 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1960, i32 0, i32 76
  %1962 = load ptr, ptr %4, align 8, !tbaa !5
  %1963 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1962, i32 0, i32 11
  %1964 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_PKS0_S2_ddPlS5_S1_PNS_11linminstateES5_PNS_8ae_stateE(i64 noundef %1941, ptr noundef %1943, ptr noundef %1945, ptr noundef %1947, ptr noundef %1949, ptr noundef %1951, double noundef %1954, double noundef %1955, ptr noundef %11, ptr noundef %1957, ptr noundef %1959, ptr noundef %1961, ptr noundef %1963, ptr noundef %1964)
  br label %1405

1965:                                             ; preds = %1410
  %1966 = load ptr, ptr %4, align 8, !tbaa !5
  %1967 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1966, i32 0, i32 78
  %1968 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl35smoothnessmonitorfinalizelinesearchEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef %1967, ptr noundef %1968)
  %1969 = load ptr, ptr %4, align 8, !tbaa !5
  %1970 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1969, i32 0, i32 46
  %1971 = load i8, ptr %1970, align 8, !tbaa !33, !range !54, !noundef !55
  %1972 = trunc i8 %1971 to i1
  br i1 %1972, label %1973, label %1991

1973:                                             ; preds = %1965
  %1974 = load ptr, ptr %4, align 8, !tbaa !5
  %1975 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1974, i32 0, i32 47
  %1976 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1975, i32 0, i32 4
  %1977 = load ptr, ptr %1976, align 8, !tbaa !28
  %1978 = getelementptr inbounds double, ptr %1977, i64 0
  %1979 = load ptr, ptr %4, align 8, !tbaa !5
  %1980 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1979, i32 0, i32 18
  %1981 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1980, i32 0, i32 4
  %1982 = load ptr, ptr %1981, align 8, !tbaa !28
  %1983 = getelementptr inbounds double, ptr %1982, i64 0
  %1984 = load i64, ptr %6, align 8, !tbaa !29
  %1985 = sub nsw i64 %1984, 1
  %1986 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1985)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1978, i64 noundef 1, ptr noundef %1983, i64 noundef 1, i64 noundef %1986)
  %1987 = load ptr, ptr %4, align 8, !tbaa !5
  %1988 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1987, i32 0, i32 75
  store i64 8, ptr %1988, align 8, !tbaa !34
  store i8 0, ptr %14, align 1, !tbaa !65
  %1989 = load i8, ptr %14, align 1, !tbaa !65, !range !54, !noundef !55
  %1990 = trunc i8 %1989 to i1
  store i1 %1990, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %2743

1991:                                             ; preds = %1965
  %1992 = load ptr, ptr %4, align 8, !tbaa !5
  %1993 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1992, i32 0, i32 6
  %1994 = load i8, ptr %1993, align 8, !tbaa !53, !range !54, !noundef !55
  %1995 = trunc i8 %1994 to i1
  br i1 %1995, label %1997, label %1996

1996:                                             ; preds = %1991
  br label %2041

1997:                                             ; preds = %1991
  %1998 = load ptr, ptr %4, align 8, !tbaa !5
  %1999 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %1998, i32 0, i32 45
  %2000 = load i64, ptr %1999, align 8, !tbaa !40
  %2001 = icmp ne i64 %2000, 2
  br i1 %2001, label %2002, label %2003

2002:                                             ; preds = %1997
  br label %2024

2003:                                             ; preds = %1997
  %2004 = load ptr, ptr %4, align 8, !tbaa !5
  %2005 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2004, i32 0, i32 53
  store i64 -1, ptr %2005, align 8, !tbaa !44
  %2006 = load i64, ptr %6, align 8, !tbaa !29
  %2007 = load ptr, ptr %4, align 8, !tbaa !5
  %2008 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2007, i32 0, i32 58
  store i64 %2006, ptr %2008, align 8, !tbaa !47
  %2009 = load ptr, ptr %4, align 8, !tbaa !5
  %2010 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2009, i32 0, i32 48
  %2011 = load double, ptr %2010, align 8, !tbaa !50
  %2012 = load ptr, ptr %4, align 8, !tbaa !5
  %2013 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2012, i32 0, i32 55
  store double %2011, ptr %2013, align 8, !tbaa !56
  %2014 = load i64, ptr %6, align 8, !tbaa !29
  %2015 = load ptr, ptr %4, align 8, !tbaa !5
  %2016 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2015, i32 0, i32 47
  %2017 = load ptr, ptr %4, align 8, !tbaa !5
  %2018 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2017, i32 0, i32 54
  %2019 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %2014, ptr noundef %2016, ptr noundef %2018, ptr noundef %2019)
  %2020 = load ptr, ptr %4, align 8, !tbaa !5
  %2021 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2020, i32 0, i32 72
  %2022 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %2021, i32 0, i32 0
  store i32 20, ptr %2022, align 8, !tbaa !9
  br label %2684

2023:                                             ; preds = %225
  br label %2040

2024:                                             ; preds = %2002
  %2025 = load ptr, ptr %4, align 8, !tbaa !5
  %2026 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2025, i32 0, i32 45
  %2027 = load i64, ptr %2026, align 8, !tbaa !40
  %2028 = icmp eq i64 %2027, 1
  %2029 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %2028, ptr noundef @.str.465, ptr noundef %2029)
  %2030 = load ptr, ptr %4, align 8, !tbaa !5
  %2031 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %2030, ptr noundef %2031)
  %2032 = load ptr, ptr %4, align 8, !tbaa !5
  %2033 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2032, i32 0, i32 52
  store i8 1, ptr %2033, align 2, !tbaa !64
  %2034 = load ptr, ptr %4, align 8, !tbaa !5
  %2035 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2034, i32 0, i32 72
  %2036 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %2035, i32 0, i32 0
  store i32 21, ptr %2036, align 8, !tbaa !9
  br label %2684

2037:                                             ; preds = %232
  %2038 = load ptr, ptr %4, align 8, !tbaa !5
  %2039 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2038, i32 0, i32 52
  store i8 0, ptr %2039, align 2, !tbaa !64
  br label %2040

2040:                                             ; preds = %2037, %2023
  br label %2041

2041:                                             ; preds = %2040, %1996
  %2042 = load ptr, ptr %4, align 8, !tbaa !5
  %2043 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2042, i32 0, i32 74
  %2044 = load i64, ptr %2043, align 8, !tbaa !36
  %2045 = load ptr, ptr %4, align 8, !tbaa !5
  %2046 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2045, i32 0, i32 10
  %2047 = load i64, ptr %2046, align 8, !tbaa !81
  %2048 = add nsw i64 %2044, %2047
  %2049 = load ptr, ptr %4, align 8, !tbaa !5
  %2050 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2049, i32 0, i32 74
  store i64 %2048, ptr %2050, align 8, !tbaa !36
  %2051 = load ptr, ptr %4, align 8, !tbaa !5
  %2052 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2051, i32 0, i32 73
  %2053 = load i64, ptr %2052, align 8, !tbaa !35
  %2054 = add nsw i64 %2053, 1
  %2055 = load ptr, ptr %4, align 8, !tbaa !5
  %2056 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2055, i32 0, i32 73
  store i64 %2054, ptr %2056, align 8, !tbaa !35
  %2057 = load ptr, ptr %4, align 8, !tbaa !5
  %2058 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2057, i32 0, i32 17
  %2059 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %2058, i32 0, i32 6
  %2060 = load ptr, ptr %2059, align 8, !tbaa !28
  %2061 = load ptr, ptr %4, align 8, !tbaa !5
  %2062 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2061, i32 0, i32 14
  %2063 = load i64, ptr %2062, align 8, !tbaa !75
  %2064 = getelementptr inbounds ptr, ptr %2060, i64 %2063
  %2065 = load ptr, ptr %2064, align 8, !tbaa !5
  %2066 = getelementptr inbounds double, ptr %2065, i64 0
  %2067 = load ptr, ptr %4, align 8, !tbaa !5
  %2068 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2067, i32 0, i32 47
  %2069 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2068, i32 0, i32 4
  %2070 = load ptr, ptr %2069, align 8, !tbaa !28
  %2071 = getelementptr inbounds double, ptr %2070, i64 0
  %2072 = load i64, ptr %6, align 8, !tbaa !29
  %2073 = sub nsw i64 %2072, 1
  %2074 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2073)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %2066, i64 noundef 1, ptr noundef %2071, i64 noundef 1, i64 noundef %2074)
  %2075 = load ptr, ptr %4, align 8, !tbaa !5
  %2076 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2075, i32 0, i32 16
  %2077 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %2076, i32 0, i32 6
  %2078 = load ptr, ptr %2077, align 8, !tbaa !28
  %2079 = load ptr, ptr %4, align 8, !tbaa !5
  %2080 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2079, i32 0, i32 14
  %2081 = load i64, ptr %2080, align 8, !tbaa !75
  %2082 = getelementptr inbounds ptr, ptr %2078, i64 %2081
  %2083 = load ptr, ptr %2082, align 8, !tbaa !5
  %2084 = getelementptr inbounds double, ptr %2083, i64 0
  %2085 = load ptr, ptr %4, align 8, !tbaa !5
  %2086 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2085, i32 0, i32 49
  %2087 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2086, i32 0, i32 4
  %2088 = load ptr, ptr %2087, align 8, !tbaa !28
  %2089 = getelementptr inbounds double, ptr %2088, i64 0
  %2090 = load i64, ptr %6, align 8, !tbaa !29
  %2091 = sub nsw i64 %2090, 1
  %2092 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2091)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %2084, i64 noundef 1, ptr noundef %2089, i64 noundef 1, i64 noundef %2092)
  %2093 = load ptr, ptr %4, align 8, !tbaa !5
  %2094 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2093, i32 0, i32 22
  %2095 = load double, ptr %2094, align 8, !tbaa !73
  %2096 = load ptr, ptr %4, align 8, !tbaa !5
  %2097 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2096, i32 0, i32 21
  %2098 = load double, ptr %2097, align 8, !tbaa !41
  %2099 = load ptr, ptr %5, align 8, !tbaa !5
  %2100 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %2095, double noundef %2098, ptr noundef %2099)
  %2101 = load ptr, ptr %4, align 8, !tbaa !5
  %2102 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2101, i32 0, i32 22
  store double %2100, ptr %2102, align 8, !tbaa !73
  store double 0.000000e+00, ptr %12, align 8, !tbaa !30
  store i64 0, ptr %8, align 8, !tbaa !29
  br label %2103

2103:                                             ; preds = %2128, %2041
  %2104 = load i64, ptr %8, align 8, !tbaa !29
  %2105 = load i64, ptr %6, align 8, !tbaa !29
  %2106 = sub nsw i64 %2105, 1
  %2107 = icmp sle i64 %2104, %2106
  br i1 %2107, label %2108, label %2131

2108:                                             ; preds = %2103
  %2109 = load double, ptr %12, align 8, !tbaa !30
  %2110 = load ptr, ptr %4, align 8, !tbaa !5
  %2111 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2110, i32 0, i32 49
  %2112 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2111, i32 0, i32 4
  %2113 = load ptr, ptr %2112, align 8, !tbaa !28
  %2114 = load i64, ptr %8, align 8, !tbaa !29
  %2115 = getelementptr inbounds double, ptr %2113, i64 %2114
  %2116 = load double, ptr %2115, align 8, !tbaa !30
  %2117 = load ptr, ptr %4, align 8, !tbaa !5
  %2118 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2117, i32 0, i32 8
  %2119 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2118, i32 0, i32 4
  %2120 = load ptr, ptr %2119, align 8, !tbaa !28
  %2121 = load i64, ptr %8, align 8, !tbaa !29
  %2122 = getelementptr inbounds double, ptr %2120, i64 %2121
  %2123 = load double, ptr %2122, align 8, !tbaa !30
  %2124 = fmul double %2116, %2123
  %2125 = load ptr, ptr %5, align 8, !tbaa !5
  %2126 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %2124, ptr noundef %2125)
  %2127 = fadd double %2109, %2126
  store double %2127, ptr %12, align 8, !tbaa !30
  br label %2128

2128:                                             ; preds = %2108
  %2129 = load i64, ptr %8, align 8, !tbaa !29
  %2130 = add nsw i64 %2129, 1
  store i64 %2130, ptr %8, align 8, !tbaa !29
  br label %2103, !llvm.loop !82

2131:                                             ; preds = %2103
  %2132 = load double, ptr %12, align 8, !tbaa !30
  %2133 = load ptr, ptr %5, align 8, !tbaa !5
  %2134 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %2132, ptr noundef %2133)
  br i1 %2134, label %2135, label %2141

2135:                                             ; preds = %2131
  %2136 = load ptr, ptr %4, align 8, !tbaa !5
  %2137 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2136, i32 0, i32 48
  %2138 = load double, ptr %2137, align 8, !tbaa !50
  %2139 = load ptr, ptr %5, align 8, !tbaa !5
  %2140 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %2138, ptr noundef %2139)
  br i1 %2140, label %2146, label %2141

2141:                                             ; preds = %2135, %2131
  %2142 = load ptr, ptr %4, align 8, !tbaa !5
  %2143 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2142, i32 0, i32 75
  store i64 -8, ptr %2143, align 8, !tbaa !34
  store i8 0, ptr %14, align 1, !tbaa !65
  %2144 = load i8, ptr %14, align 1, !tbaa !65, !range !54, !noundef !55
  %2145 = trunc i8 %2144 to i1
  store i1 %2145, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %2743

2146:                                             ; preds = %2135
  %2147 = load ptr, ptr %4, align 8, !tbaa !5
  %2148 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2147, i32 0, i32 73
  %2149 = load i64, ptr %2148, align 8, !tbaa !35
  %2150 = load ptr, ptr %4, align 8, !tbaa !5
  %2151 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2150, i32 0, i32 5
  %2152 = load i64, ptr %2151, align 8, !tbaa !83
  %2153 = icmp sge i64 %2149, %2152
  br i1 %2153, label %2154, label %2164

2154:                                             ; preds = %2146
  %2155 = load ptr, ptr %4, align 8, !tbaa !5
  %2156 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2155, i32 0, i32 5
  %2157 = load i64, ptr %2156, align 8, !tbaa !83
  %2158 = icmp sgt i64 %2157, 0
  br i1 %2158, label %2159, label %2164

2159:                                             ; preds = %2154
  %2160 = load ptr, ptr %4, align 8, !tbaa !5
  %2161 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2160, i32 0, i32 75
  store i64 5, ptr %2161, align 8, !tbaa !34
  store i8 0, ptr %14, align 1, !tbaa !65
  %2162 = load i8, ptr %14, align 1, !tbaa !65, !range !54, !noundef !55
  %2163 = trunc i8 %2162 to i1
  store i1 %2163, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %2743

2164:                                             ; preds = %2154, %2146
  %2165 = load double, ptr %12, align 8, !tbaa !30
  %2166 = load ptr, ptr %5, align 8, !tbaa !5
  %2167 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %2165, ptr noundef %2166)
  %2168 = load ptr, ptr %4, align 8, !tbaa !5
  %2169 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2168, i32 0, i32 2
  %2170 = load double, ptr %2169, align 8, !tbaa !68
  %2171 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %2167, double noundef %2170)
  br i1 %2171, label %2172, label %2177

2172:                                             ; preds = %2164
  %2173 = load ptr, ptr %4, align 8, !tbaa !5
  %2174 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2173, i32 0, i32 75
  store i64 4, ptr %2174, align 8, !tbaa !34
  store i8 0, ptr %14, align 1, !tbaa !65
  %2175 = load i8, ptr %14, align 1, !tbaa !65, !range !54, !noundef !55
  %2176 = trunc i8 %2175 to i1
  store i1 %2176, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %2743

2177:                                             ; preds = %2164
  %2178 = load ptr, ptr %4, align 8, !tbaa !5
  %2179 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2178, i32 0, i32 24
  %2180 = load double, ptr %2179, align 8, !tbaa !66
  %2181 = load ptr, ptr %4, align 8, !tbaa !5
  %2182 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2181, i32 0, i32 48
  %2183 = load double, ptr %2182, align 8, !tbaa !50
  %2184 = fsub double %2180, %2183
  %2185 = load ptr, ptr %4, align 8, !tbaa !5
  %2186 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2185, i32 0, i32 3
  %2187 = load double, ptr %2186, align 8, !tbaa !84
  %2188 = load ptr, ptr %4, align 8, !tbaa !5
  %2189 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2188, i32 0, i32 24
  %2190 = load double, ptr %2189, align 8, !tbaa !66
  %2191 = load ptr, ptr %5, align 8, !tbaa !5
  %2192 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2190, ptr noundef %2191)
  %2193 = load ptr, ptr %4, align 8, !tbaa !5
  %2194 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2193, i32 0, i32 48
  %2195 = load double, ptr %2194, align 8, !tbaa !50
  %2196 = load ptr, ptr %5, align 8, !tbaa !5
  %2197 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2195, ptr noundef %2196)
  %2198 = load ptr, ptr %5, align 8, !tbaa !5
  %2199 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %2197, double noundef 1.000000e+00, ptr noundef %2198)
  %2200 = load ptr, ptr %5, align 8, !tbaa !5
  %2201 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %2192, double noundef %2199, ptr noundef %2200)
  %2202 = fmul double %2187, %2201
  %2203 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %2184, double noundef %2202)
  br i1 %2203, label %2204, label %2209

2204:                                             ; preds = %2177
  %2205 = load ptr, ptr %4, align 8, !tbaa !5
  %2206 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2205, i32 0, i32 75
  store i64 1, ptr %2206, align 8, !tbaa !34
  store i8 0, ptr %14, align 1, !tbaa !65
  %2207 = load i8, ptr %14, align 1, !tbaa !65, !range !54, !noundef !55
  %2208 = trunc i8 %2207 to i1
  store i1 %2208, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %2743

2209:                                             ; preds = %2177
  store double 0.000000e+00, ptr %12, align 8, !tbaa !30
  store i64 0, ptr %8, align 8, !tbaa !29
  br label %2210

2210:                                             ; preds = %2240, %2209
  %2211 = load i64, ptr %8, align 8, !tbaa !29
  %2212 = load i64, ptr %6, align 8, !tbaa !29
  %2213 = sub nsw i64 %2212, 1
  %2214 = icmp sle i64 %2211, %2213
  br i1 %2214, label %2215, label %2243

2215:                                             ; preds = %2210
  %2216 = load double, ptr %12, align 8, !tbaa !30
  %2217 = load ptr, ptr %4, align 8, !tbaa !5
  %2218 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2217, i32 0, i32 17
  %2219 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %2218, i32 0, i32 6
  %2220 = load ptr, ptr %2219, align 8, !tbaa !28
  %2221 = load ptr, ptr %4, align 8, !tbaa !5
  %2222 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2221, i32 0, i32 14
  %2223 = load i64, ptr %2222, align 8, !tbaa !75
  %2224 = getelementptr inbounds ptr, ptr %2220, i64 %2223
  %2225 = load ptr, ptr %2224, align 8, !tbaa !5
  %2226 = load i64, ptr %8, align 8, !tbaa !29
  %2227 = getelementptr inbounds double, ptr %2225, i64 %2226
  %2228 = load double, ptr %2227, align 8, !tbaa !30
  %2229 = load ptr, ptr %4, align 8, !tbaa !5
  %2230 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2229, i32 0, i32 8
  %2231 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2230, i32 0, i32 4
  %2232 = load ptr, ptr %2231, align 8, !tbaa !28
  %2233 = load i64, ptr %8, align 8, !tbaa !29
  %2234 = getelementptr inbounds double, ptr %2232, i64 %2233
  %2235 = load double, ptr %2234, align 8, !tbaa !30
  %2236 = fdiv double %2228, %2235
  %2237 = load ptr, ptr %5, align 8, !tbaa !5
  %2238 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %2236, ptr noundef %2237)
  %2239 = fadd double %2216, %2238
  store double %2239, ptr %12, align 8, !tbaa !30
  br label %2240

2240:                                             ; preds = %2215
  %2241 = load i64, ptr %8, align 8, !tbaa !29
  %2242 = add nsw i64 %2241, 1
  store i64 %2242, ptr %8, align 8, !tbaa !29
  br label %2210, !llvm.loop !85

2243:                                             ; preds = %2210
  %2244 = load double, ptr %12, align 8, !tbaa !30
  %2245 = load ptr, ptr %5, align 8, !tbaa !5
  %2246 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %2244, ptr noundef %2245)
  %2247 = load ptr, ptr %4, align 8, !tbaa !5
  %2248 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2247, i32 0, i32 4
  %2249 = load double, ptr %2248, align 8, !tbaa !86
  %2250 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %2246, double noundef %2249)
  br i1 %2250, label %2251, label %2256

2251:                                             ; preds = %2243
  %2252 = load ptr, ptr %4, align 8, !tbaa !5
  %2253 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2252, i32 0, i32 75
  store i64 2, ptr %2253, align 8, !tbaa !34
  store i8 0, ptr %14, align 1, !tbaa !65
  %2254 = load i8, ptr %14, align 1, !tbaa !65, !range !54, !noundef !55
  %2255 = trunc i8 %2254 to i1
  store i1 %2255, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %2743

2256:                                             ; preds = %2243
  %2257 = load i64, ptr %11, align 8, !tbaa !29
  %2258 = icmp ne i64 %2257, 1
  br i1 %2258, label %2259, label %2278

2259:                                             ; preds = %2256
  %2260 = load ptr, ptr %4, align 8, !tbaa !5
  %2261 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2260, i32 0, i32 48
  %2262 = load double, ptr %2261, align 8, !tbaa !50
  %2263 = load ptr, ptr %4, align 8, !tbaa !5
  %2264 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2263, i32 0, i32 24
  store double %2262, ptr %2264, align 8, !tbaa !66
  %2265 = load ptr, ptr %4, align 8, !tbaa !5
  %2266 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2265, i32 0, i32 20
  %2267 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2266, i32 0, i32 4
  %2268 = load ptr, ptr %2267, align 8, !tbaa !28
  %2269 = getelementptr inbounds double, ptr %2268, i64 0
  %2270 = load ptr, ptr %4, align 8, !tbaa !5
  %2271 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2270, i32 0, i32 49
  %2272 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2271, i32 0, i32 4
  %2273 = load ptr, ptr %2272, align 8, !tbaa !28
  %2274 = getelementptr inbounds double, ptr %2273, i64 0
  %2275 = load i64, ptr %6, align 8, !tbaa !29
  %2276 = sub nsw i64 %2275, 1
  %2277 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2276)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %2269, i64 noundef 1, ptr noundef %2274, i64 noundef 1, i64 noundef %2277)
  br label %2680

2278:                                             ; preds = %2256
  %2279 = load ptr, ptr %4, align 8, !tbaa !5
  %2280 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2279, i32 0, i32 16
  %2281 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %2280, i32 0, i32 6
  %2282 = load ptr, ptr %2281, align 8, !tbaa !28
  %2283 = load ptr, ptr %4, align 8, !tbaa !5
  %2284 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2283, i32 0, i32 14
  %2285 = load i64, ptr %2284, align 8, !tbaa !75
  %2286 = getelementptr inbounds ptr, ptr %2282, i64 %2285
  %2287 = load ptr, ptr %2286, align 8, !tbaa !5
  %2288 = getelementptr inbounds double, ptr %2287, i64 0
  %2289 = load ptr, ptr %4, align 8, !tbaa !5
  %2290 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2289, i32 0, i32 17
  %2291 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %2290, i32 0, i32 6
  %2292 = load ptr, ptr %2291, align 8, !tbaa !28
  %2293 = load ptr, ptr %4, align 8, !tbaa !5
  %2294 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2293, i32 0, i32 14
  %2295 = load i64, ptr %2294, align 8, !tbaa !75
  %2296 = getelementptr inbounds ptr, ptr %2292, i64 %2295
  %2297 = load ptr, ptr %2296, align 8, !tbaa !5
  %2298 = getelementptr inbounds double, ptr %2297, i64 0
  %2299 = load i64, ptr %6, align 8, !tbaa !29
  %2300 = sub nsw i64 %2299, 1
  %2301 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2300)
  %2302 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %2288, i64 noundef 1, ptr noundef %2298, i64 noundef 1, i64 noundef %2301)
  store double %2302, ptr %12, align 8, !tbaa !30
  %2303 = load ptr, ptr %4, align 8, !tbaa !5
  %2304 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2303, i32 0, i32 16
  %2305 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %2304, i32 0, i32 6
  %2306 = load ptr, ptr %2305, align 8, !tbaa !28
  %2307 = load ptr, ptr %4, align 8, !tbaa !5
  %2308 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2307, i32 0, i32 14
  %2309 = load i64, ptr %2308, align 8, !tbaa !75
  %2310 = getelementptr inbounds ptr, ptr %2306, i64 %2309
  %2311 = load ptr, ptr %2310, align 8, !tbaa !5
  %2312 = getelementptr inbounds double, ptr %2311, i64 0
  %2313 = load ptr, ptr %4, align 8, !tbaa !5
  %2314 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2313, i32 0, i32 16
  %2315 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %2314, i32 0, i32 6
  %2316 = load ptr, ptr %2315, align 8, !tbaa !28
  %2317 = load ptr, ptr %4, align 8, !tbaa !5
  %2318 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2317, i32 0, i32 14
  %2319 = load i64, ptr %2318, align 8, !tbaa !75
  %2320 = getelementptr inbounds ptr, ptr %2316, i64 %2319
  %2321 = load ptr, ptr %2320, align 8, !tbaa !5
  %2322 = getelementptr inbounds double, ptr %2321, i64 0
  %2323 = load i64, ptr %6, align 8, !tbaa !29
  %2324 = sub nsw i64 %2323, 1
  %2325 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2324)
  %2326 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %2312, i64 noundef 1, ptr noundef %2322, i64 noundef 1, i64 noundef %2325)
  store double %2326, ptr %13, align 8, !tbaa !30
  %2327 = load double, ptr %12, align 8, !tbaa !30
  %2328 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2327, double noundef 0.000000e+00)
  br i1 %2328, label %2332, label %2329

2329:                                             ; preds = %2278
  %2330 = load double, ptr %13, align 8, !tbaa !30
  %2331 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2330, double noundef 0.000000e+00)
  br i1 %2331, label %2332, label %2337

2332:                                             ; preds = %2329, %2278
  %2333 = load ptr, ptr %4, align 8, !tbaa !5
  %2334 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2333, i32 0, i32 75
  store i64 -2, ptr %2334, align 8, !tbaa !34
  store i8 0, ptr %14, align 1, !tbaa !65
  %2335 = load i8, ptr %14, align 1, !tbaa !65, !range !54, !noundef !55
  %2336 = trunc i8 %2335 to i1
  store i1 %2336, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %2743

2337:                                             ; preds = %2329
  %2338 = load double, ptr %12, align 8, !tbaa !30
  %2339 = fdiv double 1.000000e+00, %2338
  %2340 = load ptr, ptr %4, align 8, !tbaa !5
  %2341 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2340, i32 0, i32 15
  %2342 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2341, i32 0, i32 4
  %2343 = load ptr, ptr %2342, align 8, !tbaa !28
  %2344 = load ptr, ptr %4, align 8, !tbaa !5
  %2345 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2344, i32 0, i32 14
  %2346 = load i64, ptr %2345, align 8, !tbaa !75
  %2347 = getelementptr inbounds double, ptr %2343, i64 %2346
  store double %2339, ptr %2347, align 8, !tbaa !30
  %2348 = load double, ptr %12, align 8, !tbaa !30
  %2349 = load double, ptr %13, align 8, !tbaa !30
  %2350 = fdiv double %2348, %2349
  %2351 = load ptr, ptr %4, align 8, !tbaa !5
  %2352 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2351, i32 0, i32 28
  store double %2350, ptr %2352, align 8, !tbaa !87
  %2353 = load ptr, ptr %4, align 8, !tbaa !5
  %2354 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2353, i32 0, i32 23
  %2355 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2354, i32 0, i32 4
  %2356 = load ptr, ptr %2355, align 8, !tbaa !28
  %2357 = getelementptr inbounds double, ptr %2356, i64 0
  %2358 = load ptr, ptr %4, align 8, !tbaa !5
  %2359 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2358, i32 0, i32 49
  %2360 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2359, i32 0, i32 4
  %2361 = load ptr, ptr %2360, align 8, !tbaa !28
  %2362 = getelementptr inbounds double, ptr %2361, i64 0
  %2363 = load i64, ptr %6, align 8, !tbaa !29
  %2364 = sub nsw i64 %2363, 1
  %2365 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2364)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2357, i64 noundef 1, ptr noundef %2362, i64 noundef 1, i64 noundef %2365)
  %2366 = load ptr, ptr %4, align 8, !tbaa !5
  %2367 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2366, i32 0, i32 12
  %2368 = load i64, ptr %2367, align 8, !tbaa !74
  store i64 %2368, ptr %8, align 8, !tbaa !29
  br label %2369

2369:                                             ; preds = %2433, %2337
  %2370 = load i64, ptr %8, align 8, !tbaa !29
  %2371 = load ptr, ptr %4, align 8, !tbaa !5
  %2372 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2371, i32 0, i32 12
  %2373 = load i64, ptr %2372, align 8, !tbaa !74
  %2374 = load ptr, ptr %4, align 8, !tbaa !5
  %2375 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2374, i32 0, i32 13
  %2376 = load i64, ptr %2375, align 8, !tbaa !76
  %2377 = sub nsw i64 %2373, %2376
  %2378 = icmp sge i64 %2370, %2377
  br i1 %2378, label %2379, label %2436

2379:                                             ; preds = %2369
  %2380 = load i64, ptr %8, align 8, !tbaa !29
  %2381 = load i64, ptr %7, align 8, !tbaa !29
  %2382 = srem i64 %2380, %2381
  store i64 %2382, ptr %10, align 8, !tbaa !29
  %2383 = load ptr, ptr %4, align 8, !tbaa !5
  %2384 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2383, i32 0, i32 17
  %2385 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %2384, i32 0, i32 6
  %2386 = load ptr, ptr %2385, align 8, !tbaa !28
  %2387 = load i64, ptr %10, align 8, !tbaa !29
  %2388 = getelementptr inbounds ptr, ptr %2386, i64 %2387
  %2389 = load ptr, ptr %2388, align 8, !tbaa !5
  %2390 = getelementptr inbounds double, ptr %2389, i64 0
  %2391 = load ptr, ptr %4, align 8, !tbaa !5
  %2392 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2391, i32 0, i32 23
  %2393 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2392, i32 0, i32 4
  %2394 = load ptr, ptr %2393, align 8, !tbaa !28
  %2395 = getelementptr inbounds double, ptr %2394, i64 0
  %2396 = load i64, ptr %6, align 8, !tbaa !29
  %2397 = sub nsw i64 %2396, 1
  %2398 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2397)
  %2399 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %2390, i64 noundef 1, ptr noundef %2395, i64 noundef 1, i64 noundef %2398)
  store double %2399, ptr %12, align 8, !tbaa !30
  %2400 = load double, ptr %12, align 8, !tbaa !30
  %2401 = load ptr, ptr %4, align 8, !tbaa !5
  %2402 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2401, i32 0, i32 19
  %2403 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2402, i32 0, i32 4
  %2404 = load ptr, ptr %2403, align 8, !tbaa !28
  %2405 = load i64, ptr %10, align 8, !tbaa !29
  %2406 = getelementptr inbounds double, ptr %2404, i64 %2405
  store double %2400, ptr %2406, align 8, !tbaa !30
  %2407 = load double, ptr %12, align 8, !tbaa !30
  %2408 = load ptr, ptr %4, align 8, !tbaa !5
  %2409 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2408, i32 0, i32 15
  %2410 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2409, i32 0, i32 4
  %2411 = load ptr, ptr %2410, align 8, !tbaa !28
  %2412 = load i64, ptr %10, align 8, !tbaa !29
  %2413 = getelementptr inbounds double, ptr %2411, i64 %2412
  %2414 = load double, ptr %2413, align 8, !tbaa !30
  %2415 = fmul double %2407, %2414
  store double %2415, ptr %13, align 8, !tbaa !30
  %2416 = load ptr, ptr %4, align 8, !tbaa !5
  %2417 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2416, i32 0, i32 23
  %2418 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2417, i32 0, i32 4
  %2419 = load ptr, ptr %2418, align 8, !tbaa !28
  %2420 = getelementptr inbounds double, ptr %2419, i64 0
  %2421 = load ptr, ptr %4, align 8, !tbaa !5
  %2422 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2421, i32 0, i32 16
  %2423 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %2422, i32 0, i32 6
  %2424 = load ptr, ptr %2423, align 8, !tbaa !28
  %2425 = load i64, ptr %10, align 8, !tbaa !29
  %2426 = getelementptr inbounds ptr, ptr %2424, i64 %2425
  %2427 = load ptr, ptr %2426, align 8, !tbaa !5
  %2428 = getelementptr inbounds double, ptr %2427, i64 0
  %2429 = load i64, ptr %6, align 8, !tbaa !29
  %2430 = sub nsw i64 %2429, 1
  %2431 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2430)
  %2432 = load double, ptr %13, align 8, !tbaa !30
  call void @_ZN11alglib_impl9ae_v_subdEPdlPKdlld(ptr noundef %2420, i64 noundef 1, ptr noundef %2428, i64 noundef 1, i64 noundef %2431, double noundef %2432)
  br label %2433

2433:                                             ; preds = %2379
  %2434 = load i64, ptr %8, align 8, !tbaa !29
  %2435 = add nsw i64 %2434, -1
  store i64 %2435, ptr %8, align 8, !tbaa !29
  br label %2369, !llvm.loop !88

2436:                                             ; preds = %2369
  %2437 = load ptr, ptr %4, align 8, !tbaa !5
  %2438 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2437, i32 0, i32 27
  %2439 = load i64, ptr %2438, align 8, !tbaa !69
  %2440 = icmp eq i64 %2439, 0
  br i1 %2440, label %2441, label %2454

2441:                                             ; preds = %2436
  %2442 = load ptr, ptr %4, align 8, !tbaa !5
  %2443 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2442, i32 0, i32 28
  %2444 = load double, ptr %2443, align 8, !tbaa !87
  store double %2444, ptr %12, align 8, !tbaa !30
  %2445 = load ptr, ptr %4, align 8, !tbaa !5
  %2446 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2445, i32 0, i32 23
  %2447 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2446, i32 0, i32 4
  %2448 = load ptr, ptr %2447, align 8, !tbaa !28
  %2449 = getelementptr inbounds double, ptr %2448, i64 0
  %2450 = load i64, ptr %6, align 8, !tbaa !29
  %2451 = sub nsw i64 %2450, 1
  %2452 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2451)
  %2453 = load double, ptr %12, align 8, !tbaa !30
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %2449, i64 noundef 1, i64 noundef %2452, double noundef %2453)
  br label %2454

2454:                                             ; preds = %2441, %2436
  %2455 = load ptr, ptr %4, align 8, !tbaa !5
  %2456 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2455, i32 0, i32 27
  %2457 = load i64, ptr %2456, align 8, !tbaa !69
  %2458 = icmp eq i64 %2457, 1
  br i1 %2458, label %2459, label %2468

2459:                                             ; preds = %2454
  %2460 = load ptr, ptr %4, align 8, !tbaa !5
  %2461 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2460, i32 0, i32 29
  %2462 = load i64, ptr %6, align 8, !tbaa !29
  %2463 = load ptr, ptr %4, align 8, !tbaa !5
  %2464 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2463, i32 0, i32 23
  %2465 = load ptr, ptr %4, align 8, !tbaa !5
  %2466 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2465, i32 0, i32 43
  %2467 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl17fblscholeskysolveEPKNS_9ae_matrixEdlbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef %2461, double noundef 1.000000e+00, i64 noundef %2462, i1 noundef zeroext true, ptr noundef %2464, ptr noundef %2466, ptr noundef %2467)
  br label %2468

2468:                                             ; preds = %2459, %2454
  %2469 = load ptr, ptr %4, align 8, !tbaa !5
  %2470 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2469, i32 0, i32 27
  %2471 = load i64, ptr %2470, align 8, !tbaa !69
  %2472 = icmp eq i64 %2471, 2
  br i1 %2472, label %2473, label %2505

2473:                                             ; preds = %2468
  store i64 0, ptr %8, align 8, !tbaa !29
  br label %2474

2474:                                             ; preds = %2501, %2473
  %2475 = load i64, ptr %8, align 8, !tbaa !29
  %2476 = load i64, ptr %6, align 8, !tbaa !29
  %2477 = sub nsw i64 %2476, 1
  %2478 = icmp sle i64 %2475, %2477
  br i1 %2478, label %2479, label %2504

2479:                                             ; preds = %2474
  %2480 = load ptr, ptr %4, align 8, !tbaa !5
  %2481 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2480, i32 0, i32 23
  %2482 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2481, i32 0, i32 4
  %2483 = load ptr, ptr %2482, align 8, !tbaa !28
  %2484 = load i64, ptr %8, align 8, !tbaa !29
  %2485 = getelementptr inbounds double, ptr %2483, i64 %2484
  %2486 = load double, ptr %2485, align 8, !tbaa !30
  %2487 = load ptr, ptr %4, align 8, !tbaa !5
  %2488 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2487, i32 0, i32 30
  %2489 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2488, i32 0, i32 4
  %2490 = load ptr, ptr %2489, align 8, !tbaa !28
  %2491 = load i64, ptr %8, align 8, !tbaa !29
  %2492 = getelementptr inbounds double, ptr %2490, i64 %2491
  %2493 = load double, ptr %2492, align 8, !tbaa !30
  %2494 = fdiv double %2486, %2493
  %2495 = load ptr, ptr %4, align 8, !tbaa !5
  %2496 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2495, i32 0, i32 23
  %2497 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2496, i32 0, i32 4
  %2498 = load ptr, ptr %2497, align 8, !tbaa !28
  %2499 = load i64, ptr %8, align 8, !tbaa !29
  %2500 = getelementptr inbounds double, ptr %2498, i64 %2499
  store double %2494, ptr %2500, align 8, !tbaa !30
  br label %2501

2501:                                             ; preds = %2479
  %2502 = load i64, ptr %8, align 8, !tbaa !29
  %2503 = add nsw i64 %2502, 1
  store i64 %2503, ptr %8, align 8, !tbaa !29
  br label %2474, !llvm.loop !89

2504:                                             ; preds = %2474
  br label %2505

2505:                                             ; preds = %2504, %2468
  %2506 = load ptr, ptr %4, align 8, !tbaa !5
  %2507 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2506, i32 0, i32 27
  %2508 = load i64, ptr %2507, align 8, !tbaa !69
  %2509 = icmp eq i64 %2508, 3
  br i1 %2509, label %2510, label %2550

2510:                                             ; preds = %2505
  store i64 0, ptr %8, align 8, !tbaa !29
  br label %2511

2511:                                             ; preds = %2546, %2510
  %2512 = load i64, ptr %8, align 8, !tbaa !29
  %2513 = load i64, ptr %6, align 8, !tbaa !29
  %2514 = sub nsw i64 %2513, 1
  %2515 = icmp sle i64 %2512, %2514
  br i1 %2515, label %2516, label %2549

2516:                                             ; preds = %2511
  %2517 = load ptr, ptr %4, align 8, !tbaa !5
  %2518 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2517, i32 0, i32 23
  %2519 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2518, i32 0, i32 4
  %2520 = load ptr, ptr %2519, align 8, !tbaa !28
  %2521 = load i64, ptr %8, align 8, !tbaa !29
  %2522 = getelementptr inbounds double, ptr %2520, i64 %2521
  %2523 = load double, ptr %2522, align 8, !tbaa !30
  %2524 = load ptr, ptr %4, align 8, !tbaa !5
  %2525 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2524, i32 0, i32 8
  %2526 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2525, i32 0, i32 4
  %2527 = load ptr, ptr %2526, align 8, !tbaa !28
  %2528 = load i64, ptr %8, align 8, !tbaa !29
  %2529 = getelementptr inbounds double, ptr %2527, i64 %2528
  %2530 = load double, ptr %2529, align 8, !tbaa !30
  %2531 = fmul double %2523, %2530
  %2532 = load ptr, ptr %4, align 8, !tbaa !5
  %2533 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2532, i32 0, i32 8
  %2534 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2533, i32 0, i32 4
  %2535 = load ptr, ptr %2534, align 8, !tbaa !28
  %2536 = load i64, ptr %8, align 8, !tbaa !29
  %2537 = getelementptr inbounds double, ptr %2535, i64 %2536
  %2538 = load double, ptr %2537, align 8, !tbaa !30
  %2539 = fmul double %2531, %2538
  %2540 = load ptr, ptr %4, align 8, !tbaa !5
  %2541 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2540, i32 0, i32 23
  %2542 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2541, i32 0, i32 4
  %2543 = load ptr, ptr %2542, align 8, !tbaa !28
  %2544 = load i64, ptr %8, align 8, !tbaa !29
  %2545 = getelementptr inbounds double, ptr %2543, i64 %2544
  store double %2539, ptr %2545, align 8, !tbaa !30
  br label %2546

2546:                                             ; preds = %2516
  %2547 = load i64, ptr %8, align 8, !tbaa !29
  %2548 = add nsw i64 %2547, 1
  store i64 %2548, ptr %8, align 8, !tbaa !29
  br label %2511, !llvm.loop !90

2549:                                             ; preds = %2511
  br label %2550

2550:                                             ; preds = %2549, %2505
  %2551 = load ptr, ptr %4, align 8, !tbaa !5
  %2552 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2551, i32 0, i32 27
  %2553 = load i64, ptr %2552, align 8, !tbaa !69
  %2554 = icmp eq i64 %2553, 4
  br i1 %2554, label %2555, label %2571

2555:                                             ; preds = %2550
  %2556 = load ptr, ptr %4, align 8, !tbaa !5
  %2557 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2556, i32 0, i32 23
  %2558 = load i64, ptr %6, align 8, !tbaa !29
  %2559 = load ptr, ptr %4, align 8, !tbaa !5
  %2560 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2559, i32 0, i32 32
  %2561 = load ptr, ptr %4, align 8, !tbaa !5
  %2562 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2561, i32 0, i32 31
  %2563 = load ptr, ptr %4, align 8, !tbaa !5
  %2564 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2563, i32 0, i32 33
  %2565 = load ptr, ptr %4, align 8, !tbaa !5
  %2566 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2565, i32 0, i32 34
  %2567 = load i64, ptr %2566, align 8, !tbaa !72
  %2568 = load ptr, ptr %4, align 8, !tbaa !5
  %2569 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2568, i32 0, i32 35
  %2570 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl26inexactlbfgspreconditionerEPNS_9ae_vectorElPKS0_S3_PKNS_9ae_matrixElPNS_12precbuflbfgsEPNS_8ae_stateE(ptr noundef %2557, i64 noundef %2558, ptr noundef %2560, ptr noundef %2562, ptr noundef %2564, i64 noundef %2567, ptr noundef %2569, ptr noundef %2570)
  br label %2571

2571:                                             ; preds = %2555, %2550
  %2572 = load ptr, ptr %4, align 8, !tbaa !5
  %2573 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2572, i32 0, i32 27
  %2574 = load i64, ptr %2573, align 8, !tbaa !69
  %2575 = icmp eq i64 %2574, 5
  br i1 %2575, label %2576, label %2582

2576:                                             ; preds = %2571
  %2577 = load ptr, ptr %4, align 8, !tbaa !5
  %2578 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2577, i32 0, i32 23
  %2579 = load ptr, ptr %4, align 8, !tbaa !5
  %2580 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2579, i32 0, i32 36
  %2581 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl26applylowrankpreconditionerEPNS_9ae_vectorEPNS_14precbuflowrankEPNS_8ae_stateE(ptr noundef %2578, ptr noundef %2580, ptr noundef %2581)
  br label %2582

2582:                                             ; preds = %2576, %2571
  %2583 = load ptr, ptr %4, align 8, !tbaa !5
  %2584 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2583, i32 0, i32 12
  %2585 = load i64, ptr %2584, align 8, !tbaa !74
  %2586 = load ptr, ptr %4, align 8, !tbaa !5
  %2587 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2586, i32 0, i32 13
  %2588 = load i64, ptr %2587, align 8, !tbaa !76
  %2589 = sub nsw i64 %2585, %2588
  store i64 %2589, ptr %8, align 8, !tbaa !29
  br label %2590

2590:                                             ; preds = %2652, %2582
  %2591 = load i64, ptr %8, align 8, !tbaa !29
  %2592 = load ptr, ptr %4, align 8, !tbaa !5
  %2593 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2592, i32 0, i32 12
  %2594 = load i64, ptr %2593, align 8, !tbaa !74
  %2595 = icmp sle i64 %2591, %2594
  br i1 %2595, label %2596, label %2655

2596:                                             ; preds = %2590
  %2597 = load i64, ptr %8, align 8, !tbaa !29
  %2598 = load i64, ptr %7, align 8, !tbaa !29
  %2599 = srem i64 %2597, %2598
  store i64 %2599, ptr %10, align 8, !tbaa !29
  %2600 = load ptr, ptr %4, align 8, !tbaa !5
  %2601 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2600, i32 0, i32 16
  %2602 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %2601, i32 0, i32 6
  %2603 = load ptr, ptr %2602, align 8, !tbaa !28
  %2604 = load i64, ptr %10, align 8, !tbaa !29
  %2605 = getelementptr inbounds ptr, ptr %2603, i64 %2604
  %2606 = load ptr, ptr %2605, align 8, !tbaa !5
  %2607 = getelementptr inbounds double, ptr %2606, i64 0
  %2608 = load ptr, ptr %4, align 8, !tbaa !5
  %2609 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2608, i32 0, i32 23
  %2610 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2609, i32 0, i32 4
  %2611 = load ptr, ptr %2610, align 8, !tbaa !28
  %2612 = getelementptr inbounds double, ptr %2611, i64 0
  %2613 = load i64, ptr %6, align 8, !tbaa !29
  %2614 = sub nsw i64 %2613, 1
  %2615 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2614)
  %2616 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %2607, i64 noundef 1, ptr noundef %2612, i64 noundef 1, i64 noundef %2615)
  store double %2616, ptr %12, align 8, !tbaa !30
  %2617 = load ptr, ptr %4, align 8, !tbaa !5
  %2618 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2617, i32 0, i32 15
  %2619 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2618, i32 0, i32 4
  %2620 = load ptr, ptr %2619, align 8, !tbaa !28
  %2621 = load i64, ptr %10, align 8, !tbaa !29
  %2622 = getelementptr inbounds double, ptr %2620, i64 %2621
  %2623 = load double, ptr %2622, align 8, !tbaa !30
  %2624 = load double, ptr %12, align 8, !tbaa !30
  %2625 = fneg double %2624
  %2626 = load ptr, ptr %4, align 8, !tbaa !5
  %2627 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2626, i32 0, i32 19
  %2628 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2627, i32 0, i32 4
  %2629 = load ptr, ptr %2628, align 8, !tbaa !28
  %2630 = load i64, ptr %10, align 8, !tbaa !29
  %2631 = getelementptr inbounds double, ptr %2629, i64 %2630
  %2632 = load double, ptr %2631, align 8, !tbaa !30
  %2633 = fadd double %2625, %2632
  %2634 = fmul double %2623, %2633
  store double %2634, ptr %13, align 8, !tbaa !30
  %2635 = load ptr, ptr %4, align 8, !tbaa !5
  %2636 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2635, i32 0, i32 23
  %2637 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2636, i32 0, i32 4
  %2638 = load ptr, ptr %2637, align 8, !tbaa !28
  %2639 = getelementptr inbounds double, ptr %2638, i64 0
  %2640 = load ptr, ptr %4, align 8, !tbaa !5
  %2641 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2640, i32 0, i32 17
  %2642 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %2641, i32 0, i32 6
  %2643 = load ptr, ptr %2642, align 8, !tbaa !28
  %2644 = load i64, ptr %10, align 8, !tbaa !29
  %2645 = getelementptr inbounds ptr, ptr %2643, i64 %2644
  %2646 = load ptr, ptr %2645, align 8, !tbaa !5
  %2647 = getelementptr inbounds double, ptr %2646, i64 0
  %2648 = load i64, ptr %6, align 8, !tbaa !29
  %2649 = sub nsw i64 %2648, 1
  %2650 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2649)
  %2651 = load double, ptr %13, align 8, !tbaa !30
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %2639, i64 noundef 1, ptr noundef %2647, i64 noundef 1, i64 noundef %2650, double noundef %2651)
  br label %2652

2652:                                             ; preds = %2596
  %2653 = load i64, ptr %8, align 8, !tbaa !29
  %2654 = add nsw i64 %2653, 1
  store i64 %2654, ptr %8, align 8, !tbaa !29
  br label %2590, !llvm.loop !91

2655:                                             ; preds = %2590
  %2656 = load ptr, ptr %4, align 8, !tbaa !5
  %2657 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2656, i32 0, i32 20
  %2658 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2657, i32 0, i32 4
  %2659 = load ptr, ptr %2658, align 8, !tbaa !28
  %2660 = getelementptr inbounds double, ptr %2659, i64 0
  %2661 = load ptr, ptr %4, align 8, !tbaa !5
  %2662 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2661, i32 0, i32 23
  %2663 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2662, i32 0, i32 4
  %2664 = load ptr, ptr %2663, align 8, !tbaa !28
  %2665 = getelementptr inbounds double, ptr %2664, i64 0
  %2666 = load i64, ptr %6, align 8, !tbaa !29
  %2667 = sub nsw i64 %2666, 1
  %2668 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2667)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %2660, i64 noundef 1, ptr noundef %2665, i64 noundef 1, i64 noundef %2668)
  %2669 = load ptr, ptr %4, align 8, !tbaa !5
  %2670 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2669, i32 0, i32 48
  %2671 = load double, ptr %2670, align 8, !tbaa !50
  %2672 = load ptr, ptr %4, align 8, !tbaa !5
  %2673 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2672, i32 0, i32 24
  store double %2671, ptr %2673, align 8, !tbaa !66
  %2674 = load ptr, ptr %4, align 8, !tbaa !5
  %2675 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2674, i32 0, i32 12
  %2676 = load i64, ptr %2675, align 8, !tbaa !74
  %2677 = add nsw i64 %2676, 1
  %2678 = load ptr, ptr %4, align 8, !tbaa !5
  %2679 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2678, i32 0, i32 12
  store i64 %2677, ptr %2679, align 8, !tbaa !74
  br label %2680

2680:                                             ; preds = %2655, %2259
  br label %1260

2681:                                             ; No predecessors!
  store i8 0, ptr %14, align 1, !tbaa !65
  %2682 = load i8, ptr %14, align 1, !tbaa !65, !range !54, !noundef !55
  %2683 = trunc i8 %2682 to i1
  store i1 %2683, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %2743

2684:                                             ; preds = %2024, %2003, %1826, %1798, %1769, %1739, %1721, %1712, %1672, %1423, %1015, %924, %896, %867, %837, %819, %810, %750, %718, %466, %405, %356
  store i8 1, ptr %14, align 1, !tbaa !65
  %2685 = load i64, ptr %6, align 8, !tbaa !29
  %2686 = load ptr, ptr %4, align 8, !tbaa !5
  %2687 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2686, i32 0, i32 72
  %2688 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %2687, i32 0, i32 1
  %2689 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2688, i32 0, i32 4
  %2690 = load ptr, ptr %2689, align 8, !tbaa !28
  %2691 = getelementptr inbounds i64, ptr %2690, i64 0
  store i64 %2685, ptr %2691, align 8, !tbaa !29
  %2692 = load i64, ptr %7, align 8, !tbaa !29
  %2693 = load ptr, ptr %4, align 8, !tbaa !5
  %2694 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2693, i32 0, i32 72
  %2695 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %2694, i32 0, i32 1
  %2696 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2695, i32 0, i32 4
  %2697 = load ptr, ptr %2696, align 8, !tbaa !28
  %2698 = getelementptr inbounds i64, ptr %2697, i64 1
  store i64 %2692, ptr %2698, align 8, !tbaa !29
  %2699 = load i64, ptr %8, align 8, !tbaa !29
  %2700 = load ptr, ptr %4, align 8, !tbaa !5
  %2701 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2700, i32 0, i32 72
  %2702 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %2701, i32 0, i32 1
  %2703 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2702, i32 0, i32 4
  %2704 = load ptr, ptr %2703, align 8, !tbaa !28
  %2705 = getelementptr inbounds i64, ptr %2704, i64 2
  store i64 %2699, ptr %2705, align 8, !tbaa !29
  %2706 = load i64, ptr %9, align 8, !tbaa !29
  %2707 = load ptr, ptr %4, align 8, !tbaa !5
  %2708 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2707, i32 0, i32 72
  %2709 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %2708, i32 0, i32 1
  %2710 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2709, i32 0, i32 4
  %2711 = load ptr, ptr %2710, align 8, !tbaa !28
  %2712 = getelementptr inbounds i64, ptr %2711, i64 3
  store i64 %2706, ptr %2712, align 8, !tbaa !29
  %2713 = load i64, ptr %10, align 8, !tbaa !29
  %2714 = load ptr, ptr %4, align 8, !tbaa !5
  %2715 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2714, i32 0, i32 72
  %2716 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %2715, i32 0, i32 1
  %2717 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2716, i32 0, i32 4
  %2718 = load ptr, ptr %2717, align 8, !tbaa !28
  %2719 = getelementptr inbounds i64, ptr %2718, i64 4
  store i64 %2713, ptr %2719, align 8, !tbaa !29
  %2720 = load i64, ptr %11, align 8, !tbaa !29
  %2721 = load ptr, ptr %4, align 8, !tbaa !5
  %2722 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2721, i32 0, i32 72
  %2723 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %2722, i32 0, i32 1
  %2724 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2723, i32 0, i32 4
  %2725 = load ptr, ptr %2724, align 8, !tbaa !28
  %2726 = getelementptr inbounds i64, ptr %2725, i64 5
  store i64 %2720, ptr %2726, align 8, !tbaa !29
  %2727 = load double, ptr %12, align 8, !tbaa !30
  %2728 = load ptr, ptr %4, align 8, !tbaa !5
  %2729 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2728, i32 0, i32 72
  %2730 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %2729, i32 0, i32 3
  %2731 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2730, i32 0, i32 4
  %2732 = load ptr, ptr %2731, align 8, !tbaa !28
  %2733 = getelementptr inbounds double, ptr %2732, i64 0
  store double %2727, ptr %2733, align 8, !tbaa !30
  %2734 = load double, ptr %13, align 8, !tbaa !30
  %2735 = load ptr, ptr %4, align 8, !tbaa !5
  %2736 = getelementptr inbounds %"struct.alglib_impl::minlbfgsstate", ptr %2735, i32 0, i32 72
  %2737 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %2736, i32 0, i32 3
  %2738 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2737, i32 0, i32 4
  %2739 = load ptr, ptr %2738, align 8, !tbaa !28
  %2740 = getelementptr inbounds double, ptr %2739, i64 1
  store double %2734, ptr %2740, align 8, !tbaa !30
  %2741 = load i8, ptr %14, align 1, !tbaa !65, !range !54, !noundef !55
  %2742 = trunc i8 %2741 to i1
  store i1 %2742, ptr %3, align 1
  store i32 1, ptr %15, align 4
  br label %2743

2743:                                             ; preds = %2684, %2681, %2332, %2251, %2204, %2172, %2159, %2141, %1973, %1087, %1038
  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
  %2744 = load i1, ptr %3, align 1
  ret i1 %2744
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 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) #2

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

; 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_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_dS4_llPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef) #2

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

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

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

declare void @_ZN11alglib_impl7rallocmEllPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef, ptr noundef) #1

declare void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef) #1

declare void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef, ptr noundef) #1

declare void @_ZN11alglib_impl10rmergedivvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef, ptr noundef) #1

declare noundef double @_ZN11alglib_impl6rdotv2ElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef) #1

declare void @_ZN11alglib_impl7rcopyvrElPKNS_9ae_vectorEPNS_9ae_matrixElPNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef) #1

declare void @_ZN11alglib_impl9rcopymulvEldPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef, double noundef, ptr noundef, ptr noundef, ptr noundef) #1

declare void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef, ptr noundef) #1

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

declare void @_ZN11alglib_impl17fblscholeskysolveEPKNS_9ae_matrixEdlbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef, double noundef, i64 noundef, i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef) #1

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

declare void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_PKS0_S2_ddPlS5_S1_PNS_11linminstateES5_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) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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, !21, i64 3768}
!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, !12, i64 600, !14, i64 608, !12, i64 672, !12, i64 680, !14, i64 688, !11, i64 752, !12, i64 760, !16, i64 768, !14, i64 848, !14, i64 912, !14, i64 976, !16, i64 1040, !11, i64 1120, !17, i64 1128, !18, i64 1592, !12, i64 2040, !12, i64 2048, !12, i64 2056, !12, i64 2064, !12, i64 2072, !12, i64 2080, !14, i64 2088, !14, i64 2152, !11, i64 2216, !13, i64 2224, !14, i64 2232, !12, i64 2296, !14, i64 2304, !13, i64 2368, !13, i64 2369, !13, i64 2370, !11, i64 2376, !14, i64 2384, !12, i64 2448, !11, i64 2456, !11, i64 2464, !11, i64 2472, !11, i64 2480, !11, i64 2488, !14, i64 2496, !14, i64 2560, !14, i64 2624, !19, i64 2688, !14, i64 3056, !14, i64 3120, !14, i64 3184, !14, i64 3248, !16, i64 3312, !19, i64 3392, !12, i64 3760, !20, i64 3768, !11, i64 4032, !11, i64 4040, !11, i64 4048, !22, i64 4056, !11, i64 4248, !23, i64 4256, !14, i64 9960}
!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_impl12sparsematrixE", !14, i64 0, !14, i64 64, !14, i64 128, !14, i64 192, !14, i64 256, !11, i64 320, !11, i64 328, !11, i64 336, !11, i64 344, !11, i64 352, !11, i64 360}
!20 = !{!"_ZTSN11alglib_impl10rcommstateE", !21, i64 0, !14, i64 8, !14, i64 72, !14, i64 136, !14, i64 200}
!21 = !{!"int", !7, i64 0}
!22 = !{!"_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}
!23 = !{!"_ZTSN11alglib_impl17smoothnessmonitorE", !11, i64 0, !11, i64 8, !13, i64 16, !14, i64 24, !14, i64 88, !11, i64 152, !14, i64 160, !14, i64 224, !14, i64 288, !16, i64 352, !14, i64 432, !14, i64 496, !11, i64 560, !11, i64 568, !11, i64 576, !12, i64 584, !11, i64 592, !14, i64 600, !14, i64 664, !12, i64 728, !14, i64 736, !14, i64 800, !12, i64 864, !16, i64 872, !16, i64 952, !16, i64 1032, !14, i64 1112, !14, i64 1176, !20, i64 1240, !13, i64 1504, !13, i64 1505, !11, i64 1512, !11, i64 1520, !12, i64 1528, !12, i64 1536, !13, i64 1544, !24, i64 1552, !12, i64 1848, !12, i64 1856, !25, i64 1864, !25, i64 2184, !12, i64 2504, !12, i64 2512, !26, i64 2520, !26, i64 2840, !12, i64 3160, !12, i64 3168, !27, i64 3176, !27, i64 3504, !13, i64 3832, !14, i64 3840, !14, i64 3904, !16, i64 3968, !20, i64 4048, !14, i64 4312, !14, i64 4376, !14, i64 4440, !14, i64 4504, !14, i64 4568, !14, i64 4632, !14, i64 4696, !14, i64 4760, !16, i64 4824, !16, i64 4904, !14, i64 4984, !14, i64 5048, !14, i64 5112, !14, i64 5176, !14, i64 5240, !14, i64 5304, !14, i64 5368, !14, i64 5432, !14, i64 5496, !14, i64 5560, !16, i64 5624}
!24 = !{!"_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}
!25 = !{!"_ZTSN11alglib_impl19optguardnonc0reportE", !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, !11, i64 304, !11, i64 312}
!26 = !{!"_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, !11, i64 304, !11, i64 312}
!27 = !{!"_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, !11, i64 312, !11, i64 320}
!28 = !{!7, !7, i64 0}
!29 = !{!11, !11, i64 0}
!30 = !{!12, !12, i64 0}
!31 = !{!10, !11, i64 0}
!32 = !{!10, !11, i64 8}
!33 = !{!10, !13, i64 2224}
!34 = !{!10, !11, i64 4048}
!35 = !{!10, !11, i64 4032}
!36 = !{!10, !11, i64 4040}
!37 = !{!10, !11, i64 4248}
!38 = distinct !{!38, !39}
!39 = !{!"llvm.loop.mustprogress"}
!40 = !{!10, !11, i64 2216}
!41 = !{!10, !12, i64 592}
!42 = !{!10, !12, i64 128}
!43 = !{!10, !12, i64 3760}
!44 = !{!10, !11, i64 2376}
!45 = !{!10, !11, i64 2456}
!46 = !{!10, !11, i64 2464}
!47 = !{!10, !11, i64 2472}
!48 = !{!10, !11, i64 2480}
!49 = !{!10, !13, i64 2369}
!50 = !{!10, !12, i64 2296}
!51 = !{!10, !11, i64 2488}
!52 = distinct !{!52, !39}
!53 = !{!10, !13, i64 48}
!54 = !{i8 0, i8 2}
!55 = !{}
!56 = !{!10, !12, i64 2448}
!57 = distinct !{!57, !39}
!58 = !{!10, !13, i64 2368}
!59 = !{!10, !12, i64 2040}
!60 = !{!10, !12, i64 2048}
!61 = !{!10, !12, i64 2056}
!62 = !{!10, !12, i64 2064}
!63 = !{!10, !12, i64 2072}
!64 = !{!10, !13, i64 2370}
!65 = !{!13, !13, i64 0}
!66 = !{!10, !12, i64 672}
!67 = distinct !{!67, !39}
!68 = !{!10, !12, i64 16}
!69 = !{!10, !11, i64 752}
!70 = !{!10, !12, i64 56}
!71 = distinct !{!71, !39}
!72 = !{!10, !11, i64 1120}
!73 = !{!10, !12, i64 600}
!74 = !{!10, !11, i64 152}
!75 = !{!10, !11, i64 168}
!76 = !{!10, !11, i64 160}
!77 = !{!10, !11, i64 144}
!78 = !{!10, !12, i64 2080}
!79 = distinct !{!79, !39}
!80 = !{!10, !12, i64 680}
!81 = !{!10, !11, i64 136}
!82 = distinct !{!82, !39}
!83 = !{!10, !11, i64 40}
!84 = !{!10, !12, i64 24}
!85 = distinct !{!85, !39}
!86 = !{!10, !12, i64 32}
!87 = !{!10, !12, i64 760}
!88 = distinct !{!88, !39}
!89 = distinct !{!89, !39}
!90 = distinct !{!90, !39}
!91 = distinct !{!91, !39}


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

@.str.462 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.463 = external hidden unnamed_addr constant [59 x i8], align 1
@_ZN11alglib_implL13minlbfgs_gtolE = external hidden local_unnamed_addr global double, align 8
@.str.464 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.465 = external hidden unnamed_addr constant [59 x i8], align 1

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

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

declare void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl17minlbfgsiterationEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) local_unnamed_addr #2 {
  %3 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  %4 = getelementptr inbounds i8, ptr %0, i64 3768
  %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 3832
  %9 = load ptr, ptr %8, align 8, !tbaa !27
  %10 = load i64, ptr %9, align 8, !tbaa !28
  %11 = getelementptr inbounds i8, ptr %9, i64 8
  %12 = load i64, ptr %11, align 8, !tbaa !28
  %13 = getelementptr inbounds i8, ptr %9, i64 16
  %14 = load i64, ptr %13, align 8, !tbaa !28
  %15 = getelementptr inbounds i8, ptr %9, i64 24
  %16 = load i64, ptr %15, align 8, !tbaa !28
  %17 = getelementptr inbounds i8, ptr %9, i64 32
  %18 = load i64, ptr %17, align 8, !tbaa !28
  %19 = getelementptr inbounds i8, ptr %9, i64 40
  %20 = load i64, ptr %19, align 8, !tbaa !28
  %21 = getelementptr inbounds i8, ptr %0, i64 3960
  %22 = load ptr, ptr %21, align 8, !tbaa !27
  %23 = load double, ptr %22, align 8, !tbaa !29
  %24 = getelementptr inbounds i8, ptr %22, i64 8
  %25 = load double, ptr %24, align 8, !tbaa !29
  br label %26

26:                                               ; preds = %2, %7
  %.sink = phi i64 [ %20, %7 ], [ 255, %2 ]
  %.0928 = phi i64 [ %10, %7 ], [ 359, %2 ]
  %.0924 = phi i64 [ %12, %7 ], [ -58, %2 ]
  %.0910 = phi i64 [ %14, %7 ], [ -919, %2 ]
  %.0909 = phi i64 [ %16, %7 ], [ -909, %2 ]
  %.0901 = phi i64 [ %18, %7 ], [ 81, %2 ]
  %.0893 = 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 %121
    i32 1, label %129
    i32 2, label %214
    i32 3, label %214
    i32 4, label %384
    i32 5, label %274
    i32 6, label %278
    i32 7, label %296
    i32 8, label %311
    i32 9, label %326
    i32 10, label %340
    i32 11, label %382
    i32 12, label %583
    i32 13, label %654
    i32 14, label %668
    i32 15, label %672
    i32 16, label %690
    i32 17, label %705
    i32 18, label %720
    i32 19, label %734
    i32 20, label %823
    i32 21, label %821
  ]

27:                                               ; preds = %26
  %28 = load i64, ptr %0, align 8, !tbaa !30
  %29 = getelementptr inbounds i8, ptr %0, i64 8
  %30 = load i64, ptr %29, align 8, !tbaa !31
  %31 = getelementptr inbounds i8, ptr %0, i64 2224
  store i8 0, ptr %31, align 8, !tbaa !32
  %32 = getelementptr inbounds i8, ptr %0, i64 4032
  %33 = getelementptr inbounds i8, ptr %0, i64 4256
  %34 = getelementptr inbounds i8, ptr %0, i64 64
  %35 = getelementptr inbounds i8, ptr %0, i64 4248
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %32, i8 0, i64 24, i1 false)
  %36 = load i64, ptr %35, align 8, !tbaa !33
  %37 = icmp sgt i64 %36, 0
  tail call void @_ZN11alglib_impl21smoothnessmonitorinitEPNS_17smoothnessmonitorEPKNS_9ae_vectorEllbPNS_8ae_stateE(ptr noundef nonnull %33, ptr noundef nonnull %34, i64 noundef %28, i64 noundef 1, i1 noundef zeroext %37, ptr noundef %1)
  %38 = getelementptr inbounds i8, ptr %0, i64 2152
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %38, i64 noundef %28, ptr noundef %1)
  %.not.not1020 = icmp sgt i64 %28, 0
  br i1 %.not.not1020, label %.lr.ph1023, label %._crit_edge1024

.lr.ph1023:                                       ; preds = %27
  %39 = getelementptr inbounds i8, ptr %0, i64 120
  %40 = getelementptr inbounds i8, ptr %0, i64 10016
  %41 = getelementptr inbounds i8, ptr %0, i64 2208
  %xtraiter1131 = and i64 %28, 1
  %42 = icmp eq i64 %28, 1
  br i1 %42, label %._crit_edge1024.loopexit.unr-lcssa, label %.lr.ph1023.new

.lr.ph1023.new:                                   ; preds = %.lr.ph1023
  %unroll_iter1133 = and i64 %28, 9223372036854775806
  br label %43

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

._crit_edge1024.loopexit.unr-lcssa:               ; preds = %43, %.lr.ph1023
  %.19111021.unr = phi i64 [ 0, %.lr.ph1023 ], [ %67, %43 ]
  %lcmp.mod1132.not = icmp eq i64 %xtraiter1131, 0
  br i1 %lcmp.mod1132.not, label %._crit_edge1024, label %._crit_edge1024.loopexit.epilog-lcssa

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

._crit_edge1024:                                  ; preds = %._crit_edge1024.loopexit.epilog-lcssa, %._crit_edge1024.loopexit.unr-lcssa, %27
  %.1911.lcssa = phi i64 [ 0, %27 ], [ %28, %._crit_edge1024.loopexit.unr-lcssa ], [ %28, %._crit_edge1024.loopexit.epilog-lcssa ]
  %79 = getelementptr inbounds i8, ptr %0, i64 2216
  %80 = load i64, ptr %79, align 8, !tbaa !36
  %81 = icmp eq i64 %80, 2
  br i1 %81, label %82, label %87

82:                                               ; preds = %._crit_edge1024
  %83 = getelementptr inbounds i8, ptr %0, i64 3312
  tail call void @_ZN11alglib_impl7rallocmEllPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef 1, i64 noundef %28, ptr noundef nonnull %83, ptr noundef %1)
  %84 = getelementptr inbounds i8, ptr %0, i64 3184
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef 1, ptr noundef nonnull %84, ptr noundef %1)
  %85 = getelementptr inbounds i8, ptr %0, i64 3248
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %28, ptr noundef nonnull %85, ptr noundef %1)
  %86 = getelementptr inbounds i8, ptr %0, i64 3056
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %28, ptr noundef nonnull %86, ptr noundef %1)
  br label %87

87:                                               ; preds = %82, %._crit_edge1024
  %88 = getelementptr inbounds i8, ptr %0, i64 592
  store double 0.000000e+00, ptr %88, align 8, !tbaa !37
  %89 = getelementptr inbounds i8, ptr %0, i64 128
  %90 = load double, ptr %89, align 8, !tbaa !38
  %91 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %90, double noundef 0.000000e+00)
  br i1 %91, label %92, label %132

92:                                               ; preds = %87
  %93 = getelementptr inbounds i8, ptr %0, i64 3760
  %94 = load double, ptr %93, align 8, !tbaa !39
  %95 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %94, double noundef 0.000000e+00)
  br i1 %95, label %101, label %132

.sink.split:                                      ; preds = %129, %121
  %.sink1089 = phi ptr [ %123, %121 ], [ %131, %129 ]
  %.sink1085 = phi i64 [ 2624, %121 ], [ 2304, %129 ]
  %96 = load double, ptr %.sink1089, align 8, !tbaa !29
  %97 = getelementptr inbounds i8, ptr %0, i64 8216
  %98 = load ptr, ptr %97, align 8, !tbaa !27
  store double %96, ptr %98, align 8, !tbaa !29
  %99 = getelementptr inbounds i8, ptr %0, i64 %.sink1085
  %100 = getelementptr inbounds i8, ptr %0, i64 8224
  tail call void @_ZN11alglib_impl7rcopyvrElPKNS_9ae_vectorEPNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %.0928, ptr noundef nonnull %99, ptr noundef nonnull %100, i64 noundef 0, ptr noundef %1)
  br label %101

101:                                              ; preds = %.sink.split, %92
  %.1929 = phi i64 [ %28, %92 ], [ %.0928, %.sink.split ]
  %.1925 = phi i64 [ %30, %92 ], [ %.0924, %.sink.split ]
  %.2912 = phi i64 [ %.1911.lcssa, %92 ], [ %.0910, %.sink.split ]
  %102 = getelementptr inbounds i8, ptr %0, i64 4256
  %103 = getelementptr inbounds i8, ptr %0, i64 688
  %104 = getelementptr inbounds i8, ptr %0, i64 64
  %105 = getelementptr inbounds i8, ptr %0, i64 3760
  %106 = load double, ptr %105, align 8, !tbaa !39
  %107 = tail call noundef zeroext i1 @_ZN11alglib_impl34smoothnessmonitorcheckgradientatx0EPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_S4_bdPNS_8ae_stateE(ptr noundef nonnull %102, ptr noundef nonnull %103, ptr noundef nonnull %104, ptr noundef nonnull %104, ptr noundef nonnull %104, i1 noundef zeroext false, double noundef %106, ptr noundef %1)
  br i1 %107, label %108, label %132

108:                                              ; preds = %101
  %109 = getelementptr inbounds i8, ptr %0, i64 2216
  %110 = load i64, ptr %109, align 8, !tbaa !36
  %.not959 = icmp eq i64 %110, 2
  br i1 %.not959, label %111, label %124

111:                                              ; preds = %108
  %112 = getelementptr inbounds i8, ptr %0, i64 2376
  store i64 2, ptr %112, align 8, !tbaa !40
  %113 = getelementptr inbounds i8, ptr %0, i64 2456
  store i64 1, ptr %113, align 8, !tbaa !41
  %114 = getelementptr inbounds i8, ptr %0, i64 2464
  store i64 1, ptr %114, align 8, !tbaa !42
  %115 = getelementptr inbounds i8, ptr %0, i64 2472
  store i64 %.1929, ptr %115, align 8, !tbaa !43
  %116 = getelementptr inbounds i8, ptr %0, i64 2480
  store i64 0, ptr %116, align 8, !tbaa !44
  %117 = getelementptr inbounds i8, ptr %0, i64 8096
  %118 = getelementptr inbounds i8, ptr %0, i64 2496
  tail call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.1929, ptr noundef nonnull %117, ptr noundef nonnull %118, ptr noundef %1)
  %119 = getelementptr inbounds i8, ptr %0, i64 2560
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef 1, ptr noundef nonnull %119, ptr noundef %1)
  %120 = getelementptr inbounds i8, ptr %0, i64 2624
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.1929, ptr noundef nonnull %120, ptr noundef %1)
  br label %1109

121:                                              ; preds = %26
  %122 = getelementptr inbounds i8, ptr %0, i64 2616
  %123 = load ptr, ptr %122, align 8, !tbaa !27
  br label %.sink.split

124:                                              ; preds = %108
  %125 = icmp eq i64 %110, 1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %125, ptr noundef nonnull @.str.462, ptr noundef %1)
  tail call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %126 = getelementptr inbounds i8, ptr %0, i64 8096
  %127 = getelementptr inbounds i8, ptr %0, i64 2232
  tail call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.1929, ptr noundef nonnull %126, ptr noundef nonnull %127, ptr noundef %1)
  %128 = getelementptr inbounds i8, ptr %0, i64 2369
  store i8 1, ptr %128, align 1, !tbaa !45
  br label %1109

129:                                              ; preds = %26
  %130 = getelementptr inbounds i8, ptr %0, i64 2369
  store i8 0, ptr %130, align 1, !tbaa !45
  %131 = getelementptr inbounds i8, ptr %0, i64 2296
  br label %.sink.split

132:                                              ; preds = %101, %87, %92
  %.2930 = phi i64 [ %.1929, %101 ], [ %28, %92 ], [ %28, %87 ]
  %.2926 = phi i64 [ %.1925, %101 ], [ %30, %92 ], [ %30, %87 ]
  %.3913 = phi i64 [ %.2912, %101 ], [ %.1911.lcssa, %92 ], [ %.1911.lcssa, %87 ]
  %133 = getelementptr inbounds i8, ptr %0, i64 2216
  %134 = load i64, ptr %133, align 8, !tbaa !36
  %.not956 = icmp eq i64 %134, 2
  br i1 %.not956, label %135, label %232

135:                                              ; preds = %132
  %136 = getelementptr inbounds i8, ptr %0, i64 688
  %137 = getelementptr inbounds i8, ptr %0, i64 2232
  tail call void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.2930, ptr noundef nonnull %136, ptr noundef nonnull %137, ptr noundef %1)
  %138 = getelementptr inbounds i8, ptr %0, i64 592
  store double 0.000000e+00, ptr %138, align 8, !tbaa !37
  %139 = getelementptr inbounds i8, ptr %0, i64 128
  %140 = load double, ptr %139, align 8, !tbaa !38
  %141 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %140, double noundef 0.000000e+00)
  %142 = getelementptr inbounds i8, ptr %0, i64 2376
  %143 = getelementptr inbounds i8, ptr %0, i64 2456
  %144 = getelementptr inbounds i8, ptr %0, i64 2464
  %145 = getelementptr inbounds i8, ptr %0, i64 2472
  %146 = getelementptr inbounds i8, ptr %0, i64 2480
  br i1 %141, label %151, label %147

147:                                              ; preds = %135
  store i64 2, ptr %142, align 8, !tbaa !40
  store i64 1, ptr %143, align 8, !tbaa !41
  store i64 1, ptr %144, align 8, !tbaa !42
  store i64 %.2930, ptr %145, align 8, !tbaa !43
  store i64 0, ptr %146, align 8, !tbaa !44
  %148 = getelementptr inbounds i8, ptr %0, i64 2496
  tail call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.2930, ptr noundef nonnull %137, ptr noundef nonnull %148, ptr noundef %1)
  %149 = getelementptr inbounds i8, ptr %0, i64 2560
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef 1, ptr noundef nonnull %149, ptr noundef %1)
  %150 = getelementptr inbounds i8, ptr %0, i64 2624
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.2930, ptr noundef nonnull %150, ptr noundef %1)
  br label %1109

151:                                              ; preds = %135
  store i64 3, ptr %142, align 8, !tbaa !40
  store i64 1, ptr %143, align 8, !tbaa !41
  store i64 1, ptr %144, align 8, !tbaa !42
  store i64 %.2930, ptr %145, align 8, !tbaa !43
  store i64 0, ptr %146, align 8, !tbaa !44
  %152 = getelementptr inbounds i8, ptr %0, i64 2488
  store i64 5, ptr %152, align 8, !tbaa !46
  %153 = mul nsw i64 %.2930, 11
  %154 = getelementptr inbounds i8, ptr %0, i64 2496
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %153, ptr noundef nonnull %154, ptr noundef %1)
  tail call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.2930, ptr noundef nonnull %137, ptr noundef nonnull %154, ptr noundef %1)
  %.not957.not1032 = icmp sgt i64 %.2930, 0
  br i1 %.not957.not1032, label %.lr.ph1035, label %._crit_edge1036

.lr.ph1035:                                       ; preds = %151
  %155 = getelementptr inbounds i8, ptr %0, i64 120
  %156 = getelementptr inbounds i8, ptr %0, i64 2552
  br label %157

157:                                              ; preds = %.lr.ph1035, %157
  %.49141033 = phi i64 [ 0, %.lr.ph1035 ], [ %211, %157 ]
  %158 = load double, ptr %139, align 8, !tbaa !38
  %159 = load ptr, ptr %155, align 8, !tbaa !27
  %160 = getelementptr inbounds double, ptr %159, i64 %.49141033
  %161 = load double, ptr %160, align 8, !tbaa !29
  %162 = fmul double %158, %161
  %163 = load ptr, ptr %156, align 8, !tbaa !27
  %164 = mul nuw nsw i64 %.49141033, 10
  %165 = add nuw nsw i64 %164, %.2930
  %166 = getelementptr inbounds double, ptr %163, i64 %165
  store double 0.000000e+00, ptr %166, align 8, !tbaa !29
  %167 = load ptr, ptr %156, align 8, !tbaa !27
  %168 = getelementptr double, ptr %167, i64 %165
  %169 = getelementptr i8, ptr %168, i64 8
  store double 0.000000e+00, ptr %169, align 8, !tbaa !29
  %170 = load ptr, ptr %156, align 8, !tbaa !27
  %171 = getelementptr inbounds double, ptr %170, i64 %.49141033
  %172 = load double, ptr %171, align 8, !tbaa !29
  %173 = tail call double @llvm.fmuladd.f64(double %162, double -1.000000e+00, double %172)
  %174 = getelementptr double, ptr %170, i64 %165
  %175 = getelementptr i8, ptr %174, i64 16
  store double %173, ptr %175, align 8, !tbaa !29
  %176 = fmul double %162, 6.000000e+00
  %177 = fdiv double 1.000000e+00, %176
  %178 = load ptr, ptr %156, align 8, !tbaa !27
  %179 = getelementptr double, ptr %178, i64 %165
  %180 = getelementptr i8, ptr %179, i64 24
  store double %177, ptr %180, align 8, !tbaa !29
  %181 = load ptr, ptr %156, align 8, !tbaa !27
  %182 = getelementptr inbounds double, ptr %181, i64 %.49141033
  %183 = load double, ptr %182, align 8, !tbaa !29
  %184 = tail call double @llvm.fmuladd.f64(double %162, double -5.000000e-01, double %183)
  %185 = getelementptr double, ptr %181, i64 %165
  %186 = getelementptr i8, ptr %185, i64 32
  store double %184, ptr %186, align 8, !tbaa !29
  %187 = fdiv double -8.000000e+00, %176
  %188 = load ptr, ptr %156, align 8, !tbaa !27
  %189 = getelementptr double, ptr %188, i64 %165
  %190 = getelementptr i8, ptr %189, i64 40
  store double %187, ptr %190, align 8, !tbaa !29
  %191 = load ptr, ptr %156, align 8, !tbaa !27
  %192 = getelementptr inbounds double, ptr %191, i64 %.49141033
  %193 = load double, ptr %192, align 8, !tbaa !29
  %194 = tail call double @llvm.fmuladd.f64(double %162, double 5.000000e-01, double %193)
  %195 = getelementptr double, ptr %191, i64 %165
  %196 = getelementptr i8, ptr %195, i64 48
  store double %194, ptr %196, align 8, !tbaa !29
  %197 = fdiv double 8.000000e+00, %176
  %198 = load ptr, ptr %156, align 8, !tbaa !27
  %199 = getelementptr double, ptr %198, i64 %165
  %200 = getelementptr i8, ptr %199, i64 56
  store double %197, ptr %200, align 8, !tbaa !29
  %201 = load ptr, ptr %156, align 8, !tbaa !27
  %202 = getelementptr inbounds double, ptr %201, i64 %.49141033
  %203 = load double, ptr %202, align 8, !tbaa !29
  %204 = fadd double %162, %203
  %205 = getelementptr double, ptr %201, i64 %165
  %206 = getelementptr i8, ptr %205, i64 64
  store double %204, ptr %206, align 8, !tbaa !29
  %207 = fdiv double -1.000000e+00, %176
  %208 = load ptr, ptr %156, align 8, !tbaa !27
  %209 = getelementptr double, ptr %208, i64 %165
  %210 = getelementptr i8, ptr %209, i64 72
  store double %207, ptr %210, align 8, !tbaa !29
  %211 = add nuw nsw i64 %.49141033, 1
  %exitcond1065.not = icmp eq i64 %211, %.2930
  br i1 %exitcond1065.not, label %._crit_edge1036, label %157, !llvm.loop !47

._crit_edge1036:                                  ; preds = %157, %151
  %.4914.lcssa = phi i64 [ 0, %151 ], [ %.2930, %157 ]
  %.1894.lcssa = phi double [ %.0893, %151 ], [ %162, %157 ]
  %212 = getelementptr inbounds i8, ptr %0, i64 2560
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef 1, ptr noundef nonnull %212, ptr noundef %1)
  %213 = getelementptr inbounds i8, ptr %0, i64 2624
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.2930, ptr noundef nonnull %213, ptr noundef %1)
  br label %1109

214:                                              ; preds = %26, %26
  %215 = getelementptr inbounds i8, ptr %0, i64 2616
  %216 = load ptr, ptr %215, align 8, !tbaa !27
  %217 = load double, ptr %216, align 8, !tbaa !29
  %218 = getelementptr inbounds i8, ptr %0, i64 2296
  store double %217, ptr %218, align 8, !tbaa !48
  %219 = getelementptr inbounds i8, ptr %0, i64 2624
  %220 = getelementptr inbounds i8, ptr %0, i64 2304
  tail call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0928, ptr noundef nonnull %219, ptr noundef nonnull %220, ptr noundef %1)
  %221 = getelementptr inbounds i8, ptr %0, i64 48
  %222 = load i8, ptr %221, align 8, !tbaa !49, !range !50, !noundef !51
  %223 = trunc nuw i8 %222 to i1
  br i1 %223, label %224, label %384

224:                                              ; preds = %214
  %225 = getelementptr inbounds i8, ptr %0, i64 2376
  store i64 -1, ptr %225, align 8, !tbaa !40
  %226 = getelementptr inbounds i8, ptr %0, i64 2472
  store i64 %.0928, ptr %226, align 8, !tbaa !43
  %227 = getelementptr inbounds i8, ptr %0, i64 2296
  %228 = load double, ptr %227, align 8, !tbaa !48
  %229 = getelementptr inbounds i8, ptr %0, i64 2448
  store double %228, ptr %229, align 8, !tbaa !52
  %230 = getelementptr inbounds i8, ptr %0, i64 2232
  %231 = getelementptr inbounds i8, ptr %0, i64 2384
  tail call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0928, ptr noundef nonnull %230, ptr noundef nonnull %231, ptr noundef %1)
  br label %1109

232:                                              ; preds = %132
  %233 = icmp eq i64 %134, 1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %233, ptr noundef nonnull @.str.463, ptr noundef %1)
  %.not958.not1026 = icmp sgt i64 %.2930, 0
  br i1 %.not958.not1026, label %.lr.ph1029, label %._crit_edge1030

.lr.ph1029:                                       ; preds = %232
  %234 = getelementptr inbounds i8, ptr %0, i64 744
  %235 = getelementptr inbounds i8, ptr %0, i64 2288
  %xtraiter1136 = and i64 %.2930, 3
  %236 = icmp ult i64 %.2930, 4
  br i1 %236, label %._crit_edge1030.loopexit.unr-lcssa, label %.lr.ph1029.new

.lr.ph1029.new:                                   ; preds = %.lr.ph1029
  %unroll_iter1138 = and i64 %.2930, 9223372036854775804
  br label %237

237:                                              ; preds = %237, %.lr.ph1029.new
  %.59151027 = phi i64 [ 0, %.lr.ph1029.new ], [ %261, %237 ]
  %niter1139 = phi i64 [ 0, %.lr.ph1029.new ], [ %niter1139.next.3, %237 ]
  %238 = load ptr, ptr %234, align 8, !tbaa !27
  %239 = getelementptr inbounds double, ptr %238, i64 %.59151027
  %240 = load double, ptr %239, align 8, !tbaa !29
  %241 = load ptr, ptr %235, align 8, !tbaa !27
  %242 = getelementptr inbounds double, ptr %241, i64 %.59151027
  store double %240, ptr %242, align 8, !tbaa !29
  %243 = or disjoint i64 %.59151027, 1
  %244 = load ptr, ptr %234, align 8, !tbaa !27
  %245 = getelementptr inbounds double, ptr %244, i64 %243
  %246 = load double, ptr %245, align 8, !tbaa !29
  %247 = load ptr, ptr %235, align 8, !tbaa !27
  %248 = getelementptr inbounds double, ptr %247, i64 %243
  store double %246, ptr %248, align 8, !tbaa !29
  %249 = or disjoint i64 %.59151027, 2
  %250 = load ptr, ptr %234, align 8, !tbaa !27
  %251 = getelementptr inbounds double, ptr %250, i64 %249
  %252 = load double, ptr %251, align 8, !tbaa !29
  %253 = load ptr, ptr %235, align 8, !tbaa !27
  %254 = getelementptr inbounds double, ptr %253, i64 %249
  store double %252, ptr %254, align 8, !tbaa !29
  %255 = or disjoint i64 %.59151027, 3
  %256 = load ptr, ptr %234, align 8, !tbaa !27
  %257 = getelementptr inbounds double, ptr %256, i64 %255
  %258 = load double, ptr %257, align 8, !tbaa !29
  %259 = load ptr, ptr %235, align 8, !tbaa !27
  %260 = getelementptr inbounds double, ptr %259, i64 %255
  store double %258, ptr %260, align 8, !tbaa !29
  %261 = add nuw nsw i64 %.59151027, 4
  %niter1139.next.3 = add i64 %niter1139, 4
  %niter1139.ncmp.3 = icmp eq i64 %niter1139.next.3, %unroll_iter1138
  br i1 %niter1139.ncmp.3, label %._crit_edge1030.loopexit.unr-lcssa, label %237, !llvm.loop !53

._crit_edge1030.loopexit.unr-lcssa:               ; preds = %237, %.lr.ph1029
  %.59151027.unr = phi i64 [ 0, %.lr.ph1029 ], [ %261, %237 ]
  %lcmp.mod1137.not = icmp eq i64 %xtraiter1136, 0
  br i1 %lcmp.mod1137.not, label %._crit_edge1030, label %.epil.preheader1135

.epil.preheader1135:                              ; preds = %._crit_edge1030.loopexit.unr-lcssa, %.epil.preheader1135
  %.59151027.epil = phi i64 [ %267, %.epil.preheader1135 ], [ %.59151027.unr, %._crit_edge1030.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader1135 ], [ 0, %._crit_edge1030.loopexit.unr-lcssa ]
  %262 = load ptr, ptr %234, align 8, !tbaa !27
  %263 = getelementptr inbounds double, ptr %262, i64 %.59151027.epil
  %264 = load double, ptr %263, align 8, !tbaa !29
  %265 = load ptr, ptr %235, align 8, !tbaa !27
  %266 = getelementptr inbounds double, ptr %265, i64 %.59151027.epil
  store double %264, ptr %266, align 8, !tbaa !29
  %267 = add nuw nsw i64 %.59151027.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter1136
  br i1 %epil.iter.cmp.not, label %._crit_edge1030, label %.epil.preheader1135, !llvm.loop !54

._crit_edge1030:                                  ; preds = %._crit_edge1030.loopexit.unr-lcssa, %.epil.preheader1135, %232
  %.5915.lcssa = phi i64 [ 0, %232 ], [ %.2930, %.epil.preheader1135 ], [ %.2930, %._crit_edge1030.loopexit.unr-lcssa ]
  %268 = getelementptr inbounds i8, ptr %0, i64 592
  store double 0.000000e+00, ptr %268, align 8, !tbaa !37
  tail call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %269 = getelementptr inbounds i8, ptr %0, i64 128
  %270 = load double, ptr %269, align 8, !tbaa !38
  %271 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %270, double noundef 0.000000e+00)
  br i1 %271, label %276, label %272

272:                                              ; preds = %._crit_edge1030
  %273 = getelementptr inbounds i8, ptr %0, i64 2369
  store i8 1, ptr %273, align 1, !tbaa !45
  br label %1109

274:                                              ; preds = %26
  %275 = getelementptr inbounds i8, ptr %0, i64 2369
  store i8 0, ptr %275, align 1, !tbaa !45
  br label %376

276:                                              ; preds = %._crit_edge1030
  %277 = getelementptr inbounds i8, ptr %0, i64 2368
  store i8 1, ptr %277, align 8, !tbaa !56
  br label %1109

278:                                              ; preds = %26
  %279 = getelementptr inbounds i8, ptr %0, i64 2296
  %280 = load double, ptr %279, align 8, !tbaa !48
  %281 = getelementptr inbounds i8, ptr %0, i64 2040
  store double %280, ptr %281, align 8, !tbaa !57
  br label %282

282:                                              ; preds = %340, %278
  %.6916 = phi i64 [ 0, %278 ], [ %370, %340 ]
  %.not941 = icmp slt i64 %.6916, %.0928
  br i1 %.not941, label %283, label %371

283:                                              ; preds = %282
  %284 = getelementptr inbounds i8, ptr %0, i64 2288
  %285 = load ptr, ptr %284, align 8, !tbaa !27
  %286 = getelementptr inbounds double, ptr %285, i64 %.6916
  %287 = load double, ptr %286, align 8, !tbaa !29
  %288 = getelementptr inbounds i8, ptr %0, i64 128
  %289 = load double, ptr %288, align 8, !tbaa !38
  %290 = getelementptr inbounds i8, ptr %0, i64 120
  %291 = load ptr, ptr %290, align 8, !tbaa !27
  %292 = getelementptr inbounds double, ptr %291, i64 %.6916
  %293 = load double, ptr %292, align 8, !tbaa !29
  %294 = fneg double %289
  %295 = tail call double @llvm.fmuladd.f64(double %294, double %293, double %287)
  store double %295, ptr %286, align 8, !tbaa !29
  br label %1109

296:                                              ; preds = %26
  %297 = getelementptr inbounds i8, ptr %0, i64 2296
  %298 = load double, ptr %297, align 8, !tbaa !48
  %299 = getelementptr inbounds i8, ptr %0, i64 2048
  store double %298, ptr %299, align 8, !tbaa !58
  %300 = getelementptr inbounds i8, ptr %0, i64 128
  %301 = load double, ptr %300, align 8, !tbaa !38
  %302 = getelementptr inbounds i8, ptr %0, i64 120
  %303 = load ptr, ptr %302, align 8, !tbaa !27
  %304 = getelementptr inbounds double, ptr %303, i64 %.0910
  %305 = load double, ptr %304, align 8, !tbaa !29
  %306 = fmul double %301, -5.000000e-01
  %307 = tail call double @llvm.fmuladd.f64(double %306, double %305, double %.0893)
  %308 = getelementptr inbounds i8, ptr %0, i64 2288
  %309 = load ptr, ptr %308, align 8, !tbaa !27
  %310 = getelementptr inbounds double, ptr %309, i64 %.0910
  store double %307, ptr %310, align 8, !tbaa !29
  br label %1109

311:                                              ; preds = %26
  %312 = getelementptr inbounds i8, ptr %0, i64 2296
  %313 = load double, ptr %312, align 8, !tbaa !48
  %314 = getelementptr inbounds i8, ptr %0, i64 2056
  store double %313, ptr %314, align 8, !tbaa !59
  %315 = getelementptr inbounds i8, ptr %0, i64 128
  %316 = load double, ptr %315, align 8, !tbaa !38
  %317 = fmul double %316, 5.000000e-01
  %318 = getelementptr inbounds i8, ptr %0, i64 120
  %319 = load ptr, ptr %318, align 8, !tbaa !27
  %320 = getelementptr inbounds double, ptr %319, i64 %.0910
  %321 = load double, ptr %320, align 8, !tbaa !29
  %322 = tail call double @llvm.fmuladd.f64(double %317, double %321, double %.0893)
  %323 = getelementptr inbounds i8, ptr %0, i64 2288
  %324 = load ptr, ptr %323, align 8, !tbaa !27
  %325 = getelementptr inbounds double, ptr %324, i64 %.0910
  store double %322, ptr %325, align 8, !tbaa !29
  br label %1109

326:                                              ; preds = %26
  %327 = getelementptr inbounds i8, ptr %0, i64 2296
  %328 = load double, ptr %327, align 8, !tbaa !48
  %329 = getelementptr inbounds i8, ptr %0, i64 2064
  store double %328, ptr %329, align 8, !tbaa !60
  %330 = getelementptr inbounds i8, ptr %0, i64 128
  %331 = load double, ptr %330, align 8, !tbaa !38
  %332 = getelementptr inbounds i8, ptr %0, i64 120
  %333 = load ptr, ptr %332, align 8, !tbaa !27
  %334 = getelementptr inbounds double, ptr %333, i64 %.0910
  %335 = load double, ptr %334, align 8, !tbaa !29
  %336 = tail call double @llvm.fmuladd.f64(double %331, double %335, double %.0893)
  %337 = getelementptr inbounds i8, ptr %0, i64 2288
  %338 = load ptr, ptr %337, align 8, !tbaa !27
  %339 = getelementptr inbounds double, ptr %338, i64 %.0910
  store double %336, ptr %339, align 8, !tbaa !29
  br label %1109

340:                                              ; preds = %26
  %341 = getelementptr inbounds i8, ptr %0, i64 2296
  %342 = load double, ptr %341, align 8, !tbaa !48
  %343 = getelementptr inbounds i8, ptr %0, i64 2072
  store double %342, ptr %343, align 8, !tbaa !61
  %344 = getelementptr inbounds i8, ptr %0, i64 2288
  %345 = load ptr, ptr %344, align 8, !tbaa !27
  %346 = getelementptr inbounds double, ptr %345, i64 %.0910
  store double %.0893, ptr %346, align 8, !tbaa !29
  %347 = getelementptr inbounds i8, ptr %0, i64 2064
  %348 = load double, ptr %347, align 8, !tbaa !60
  %349 = getelementptr inbounds i8, ptr %0, i64 2056
  %350 = load double, ptr %349, align 8, !tbaa !59
  %351 = fsub double %348, %350
  %352 = load double, ptr %343, align 8, !tbaa !61
  %353 = getelementptr inbounds i8, ptr %0, i64 2048
  %354 = load double, ptr %353, align 8, !tbaa !58
  %355 = fsub double %352, %354
  %356 = fneg double %355
  %357 = tail call double @llvm.fmuladd.f64(double %351, double 8.000000e+00, double %356)
  %358 = getelementptr inbounds i8, ptr %0, i64 128
  %359 = load double, ptr %358, align 8, !tbaa !38
  %360 = fmul double %359, 6.000000e+00
  %361 = getelementptr inbounds i8, ptr %0, i64 120
  %362 = load ptr, ptr %361, align 8, !tbaa !27
  %363 = getelementptr inbounds double, ptr %362, i64 %.0910
  %364 = load double, ptr %363, align 8, !tbaa !29
  %365 = fmul double %360, %364
  %366 = fdiv double %357, %365
  %367 = getelementptr inbounds i8, ptr %0, i64 2360
  %368 = load ptr, ptr %367, align 8, !tbaa !27
  %369 = getelementptr inbounds double, ptr %368, i64 %.0910
  store double %366, ptr %369, align 8, !tbaa !29
  %370 = add nsw i64 %.0910, 1
  br label %282

371:                                              ; preds = %282
  %372 = getelementptr inbounds i8, ptr %0, i64 2040
  %373 = load double, ptr %372, align 8, !tbaa !57
  %374 = getelementptr inbounds i8, ptr %0, i64 2296
  store double %373, ptr %374, align 8, !tbaa !48
  %375 = getelementptr inbounds i8, ptr %0, i64 2368
  store i8 0, ptr %375, align 8, !tbaa !56
  br label %376

376:                                              ; preds = %371, %274
  %.7917 = phi i64 [ %.0910, %274 ], [ %.6916, %371 ]
  %377 = getelementptr inbounds i8, ptr %0, i64 48
  %378 = load i8, ptr %377, align 8, !tbaa !49, !range !50, !noundef !51
  %379 = trunc nuw i8 %378 to i1
  br i1 %379, label %380, label %384

380:                                              ; preds = %376
  tail call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %381 = getelementptr inbounds i8, ptr %0, i64 2370
  store i8 1, ptr %381, align 2, !tbaa !62
  br label %1109

382:                                              ; preds = %26
  %383 = getelementptr inbounds i8, ptr %0, i64 2370
  store i8 0, ptr %383, align 2, !tbaa !62
  br label %384

384:                                              ; preds = %26, %382, %376, %214
  %385 = getelementptr inbounds i8, ptr %0, i64 2296
  %386 = load double, ptr %385, align 8, !tbaa !48
  %387 = getelementptr inbounds i8, ptr %0, i64 680
  tail call void @_ZN11alglib_impl11trimprepareEdPdPNS_8ae_stateE(double noundef %386, ptr noundef nonnull %387, ptr noundef %1)
  %388 = getelementptr inbounds i8, ptr %0, i64 2224
  %389 = load i8, ptr %388, align 8, !tbaa !32, !range !50, !noundef !51
  %390 = trunc nuw i8 %389 to i1
  br i1 %390, label %391, label %393

391:                                              ; preds = %384
  %392 = getelementptr inbounds i8, ptr %0, i64 4048
  store i64 8, ptr %392, align 8, !tbaa !63
  br label %1127

393:                                              ; preds = %384
  %394 = getelementptr inbounds i8, ptr %0, i64 4040
  store i64 1, ptr %394, align 8, !tbaa !64
  %395 = load double, ptr %385, align 8, !tbaa !48
  %396 = getelementptr inbounds i8, ptr %0, i64 672
  store double %395, ptr %396, align 8, !tbaa !65
  %.not942.not965 = icmp sgt i64 %.0928, 0
  br i1 %.not942.not965, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %393
  %397 = getelementptr inbounds i8, ptr %0, i64 2360
  %398 = getelementptr inbounds i8, ptr %0, i64 120
  br label %399

399:                                              ; preds = %.lr.ph, %399
  %.2895967 = phi double [ 0.000000e+00, %.lr.ph ], [ %408, %399 ]
  %.8918966 = phi i64 [ 0, %.lr.ph ], [ %409, %399 ]
  %400 = load ptr, ptr %397, align 8, !tbaa !27
  %401 = getelementptr inbounds double, ptr %400, i64 %.8918966
  %402 = load double, ptr %401, align 8, !tbaa !29
  %403 = load ptr, ptr %398, align 8, !tbaa !27
  %404 = getelementptr inbounds double, ptr %403, i64 %.8918966
  %405 = load double, ptr %404, align 8, !tbaa !29
  %406 = fmul double %402, %405
  %407 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %406, ptr noundef %1)
  %408 = fadd double %.2895967, %407
  %409 = add nuw nsw i64 %.8918966, 1
  %exitcond.not = icmp eq i64 %409, %.0928
  br i1 %exitcond.not, label %._crit_edge, label %399, !llvm.loop !66

._crit_edge:                                      ; preds = %399, %393
  %.8918.lcssa = phi i64 [ 0, %393 ], [ %.0928, %399 ]
  %.2895.lcssa = phi double [ 0.000000e+00, %393 ], [ %408, %399 ]
  %410 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.2895.lcssa, ptr noundef %1)
  %411 = getelementptr inbounds i8, ptr %0, i64 16
  %412 = load double, ptr %411, align 8, !tbaa !67
  %413 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %410, double noundef %412)
  br i1 %413, label %414, label %416

414:                                              ; preds = %._crit_edge
  %415 = getelementptr inbounds i8, ptr %0, i64 4048
  store i64 4, ptr %415, align 8, !tbaa !63
  br label %1127

416:                                              ; preds = %._crit_edge
  %417 = getelementptr inbounds i8, ptr %0, i64 2304
  %418 = getelementptr inbounds i8, ptr %0, i64 528
  tail call void @_ZN11alglib_impl9rcopymulvEldPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0928, double noundef -1.000000e+00, ptr noundef nonnull %417, ptr noundef nonnull %418, ptr noundef %1)
  %419 = getelementptr inbounds i8, ptr %0, i64 752
  %420 = load i64, ptr %419, align 8, !tbaa !68
  %421 = icmp eq i64 %420, 0
  br i1 %421, label %422, label %433

422:                                              ; preds = %416
  %423 = tail call noundef double @_ZN11alglib_impl6rdotv2ElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.0928, ptr noundef nonnull %417, ptr noundef %1)
  %424 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %423, ptr noundef %1)
  %425 = getelementptr inbounds i8, ptr %0, i64 56
  %426 = load double, ptr %425, align 8, !tbaa !69
  %427 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %426, double noundef 0.000000e+00)
  %428 = fdiv double 1.000000e+00, %424
  br i1 %427, label %thread-pre-split, label %429

429:                                              ; preds = %422
  %430 = load double, ptr %425, align 8, !tbaa !69
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %422, %429
  %.sink1096 = phi double [ %430, %429 ], [ 1.000000e+00, %422 ]
  %431 = tail call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %428, double noundef %.sink1096, ptr noundef %1)
  %432 = getelementptr inbounds i8, ptr %0, i64 592
  store double %431, ptr %432, align 8
  %.pr = load i64, ptr %419, align 8, !tbaa !68
  br label %433

433:                                              ; preds = %thread-pre-split, %416
  %434 = phi i64 [ %.pr, %thread-pre-split ], [ %420, %416 ]
  %.3896 = phi double [ %424, %thread-pre-split ], [ %.2895.lcssa, %416 ]
  %435 = icmp eq i64 %434, 1
  br i1 %435, label %436, label %440

436:                                              ; preds = %433
  %437 = getelementptr inbounds i8, ptr %0, i64 768
  %438 = getelementptr inbounds i8, ptr %0, i64 2088
  tail call void @_ZN11alglib_impl17fblscholeskysolveEPKNS_9ae_matrixEdlbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef nonnull %437, double noundef 1.000000e+00, i64 noundef %.0928, i1 noundef zeroext true, ptr noundef nonnull %418, ptr noundef nonnull %438, ptr noundef %1)
  %439 = getelementptr inbounds i8, ptr %0, i64 592
  store double 1.000000e+00, ptr %439, align 8, !tbaa !37
  %.pre = load i64, ptr %419, align 8, !tbaa !68
  br label %440

440:                                              ; preds = %436, %433
  %441 = phi i64 [ %.pre, %436 ], [ %434, %433 ]
  %442 = icmp eq i64 %441, 2
  br i1 %442, label %443, label %446

443:                                              ; preds = %440
  %444 = getelementptr inbounds i8, ptr %0, i64 848
  tail call void @_ZN11alglib_impl10rmergedivvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0928, ptr noundef nonnull %444, ptr noundef nonnull %418, ptr noundef %1)
  %445 = getelementptr inbounds i8, ptr %0, i64 592
  store double 1.000000e+00, ptr %445, align 8, !tbaa !37
  %.pr960 = load i64, ptr %419, align 8, !tbaa !68
  br label %446

446:                                              ; preds = %443, %440
  %447 = phi i64 [ %.pr960, %443 ], [ %441, %440 ]
  %448 = icmp eq i64 %447, 3
  br i1 %448, label %.preheader964, label %480

.preheader964:                                    ; preds = %446
  br i1 %.not942.not965, label %.lr.ph971, label %._crit_edge972

.lr.ph971:                                        ; preds = %.preheader964
  %449 = getelementptr inbounds i8, ptr %0, i64 584
  %450 = getelementptr inbounds i8, ptr %0, i64 120
  %xtraiter = and i64 %.0928, 1
  %451 = icmp eq i64 %.0928, 1
  br i1 %451, label %._crit_edge972.loopexit.unr-lcssa, label %.lr.ph971.new

.lr.ph971.new:                                    ; preds = %.lr.ph971
  %unroll_iter = and i64 %.0928, 9223372036854775806
  br label %452

452:                                              ; preds = %452, %.lr.ph971.new
  %.9919970 = phi i64 [ 0, %.lr.ph971.new ], [ %470, %452 ]
  %niter = phi i64 [ 0, %.lr.ph971.new ], [ %niter.next.1, %452 ]
  %453 = load ptr, ptr %449, align 8, !tbaa !27
  %454 = getelementptr inbounds double, ptr %453, i64 %.9919970
  %455 = load double, ptr %454, align 8, !tbaa !29
  %456 = load ptr, ptr %450, align 8, !tbaa !27
  %457 = getelementptr inbounds double, ptr %456, i64 %.9919970
  %458 = load double, ptr %457, align 8, !tbaa !29
  %459 = fmul double %455, %458
  %460 = fmul double %458, %459
  store double %460, ptr %454, align 8, !tbaa !29
  %461 = or disjoint i64 %.9919970, 1
  %462 = load ptr, ptr %449, align 8, !tbaa !27
  %463 = getelementptr inbounds double, ptr %462, i64 %461
  %464 = load double, ptr %463, align 8, !tbaa !29
  %465 = load ptr, ptr %450, align 8, !tbaa !27
  %466 = getelementptr inbounds double, ptr %465, i64 %461
  %467 = load double, ptr %466, align 8, !tbaa !29
  %468 = fmul double %464, %467
  %469 = fmul double %467, %468
  store double %469, ptr %463, align 8, !tbaa !29
  %470 = add nuw nsw i64 %.9919970, 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_edge972.loopexit.unr-lcssa, label %452, !llvm.loop !70

._crit_edge972.loopexit.unr-lcssa:                ; preds = %452, %.lr.ph971
  %.9919970.unr = phi i64 [ 0, %.lr.ph971 ], [ %470, %452 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge972, label %._crit_edge972.loopexit.epilog-lcssa

._crit_edge972.loopexit.epilog-lcssa:             ; preds = %._crit_edge972.loopexit.unr-lcssa
  %471 = load ptr, ptr %449, align 8, !tbaa !27
  %472 = getelementptr inbounds double, ptr %471, i64 %.9919970.unr
  %473 = load double, ptr %472, align 8, !tbaa !29
  %474 = load ptr, ptr %450, align 8, !tbaa !27
  %475 = getelementptr inbounds double, ptr %474, i64 %.9919970.unr
  %476 = load double, ptr %475, align 8, !tbaa !29
  %477 = fmul double %473, %476
  %478 = fmul double %476, %477
  store double %478, ptr %472, align 8, !tbaa !29
  br label %._crit_edge972

._crit_edge972:                                   ; preds = %._crit_edge972.loopexit.epilog-lcssa, %._crit_edge972.loopexit.unr-lcssa, %.preheader964
  %.9919.lcssa = phi i64 [ 0, %.preheader964 ], [ %.0928, %._crit_edge972.loopexit.unr-lcssa ], [ %.0928, %._crit_edge972.loopexit.epilog-lcssa ]
  %479 = getelementptr inbounds i8, ptr %0, i64 592
  store double 1.000000e+00, ptr %479, align 8, !tbaa !37
  br label %480

480:                                              ; preds = %._crit_edge972, %446
  %.10920 = phi i64 [ %.9919.lcssa, %._crit_edge972 ], [ %.8918.lcssa, %446 ]
  %481 = icmp eq i64 %447, 4
  br i1 %481, label %482, label %490

482:                                              ; preds = %480
  %483 = getelementptr inbounds i8, ptr %0, i64 976
  %484 = getelementptr inbounds i8, ptr %0, i64 912
  %485 = getelementptr inbounds i8, ptr %0, i64 1040
  %486 = getelementptr inbounds i8, ptr %0, i64 1120
  %487 = load i64, ptr %486, align 8, !tbaa !71
  %488 = getelementptr inbounds i8, ptr %0, i64 1128
  tail call void @_ZN11alglib_impl26inexactlbfgspreconditionerEPNS_9ae_vectorElPKS0_S3_PKNS_9ae_matrixElPNS_12precbuflbfgsEPNS_8ae_stateE(ptr noundef nonnull %418, i64 noundef %.0928, ptr noundef nonnull %483, ptr noundef nonnull %484, ptr noundef nonnull %485, i64 noundef %487, ptr noundef nonnull %488, ptr noundef %1)
  %489 = getelementptr inbounds i8, ptr %0, i64 592
  store double 1.000000e+00, ptr %489, align 8, !tbaa !37
  %.pre1067 = load i64, ptr %419, align 8, !tbaa !68
  br label %490

490:                                              ; preds = %482, %480
  %491 = phi i64 [ %.pre1067, %482 ], [ %447, %480 ]
  %492 = icmp eq i64 %491, 5
  br i1 %492, label %493, label %496

493:                                              ; preds = %490
  %494 = getelementptr inbounds i8, ptr %0, i64 1592
  tail call void @_ZN11alglib_impl26applylowrankpreconditionerEPNS_9ae_vectorEPNS_14precbuflowrankEPNS_8ae_stateE(ptr noundef nonnull %418, ptr noundef nonnull %494, ptr noundef %1)
  %495 = getelementptr inbounds i8, ptr %0, i64 592
  store double 1.000000e+00, ptr %495, align 8, !tbaa !37
  br label %496

496:                                              ; preds = %493, %490
  %497 = getelementptr inbounds i8, ptr %0, i64 592
  tail call void @_ZN11alglib_impl16linminnormalizedEPNS_9ae_vectorEPdlPNS_8ae_stateE(ptr noundef nonnull %418, ptr noundef nonnull %497, i64 noundef %.0928, ptr noundef %1)
  %498 = load double, ptr %497, align 8, !tbaa !37
  %499 = getelementptr inbounds i8, ptr %0, i64 600
  store double %498, ptr %499, align 8, !tbaa !72
  %500 = getelementptr inbounds i8, ptr %0, i64 152
  store i64 0, ptr %500, align 8, !tbaa !73
  br label %501

501:                                              ; preds = %925, %._crit_edge1015, %496
  %502 = phi i64 [ 0, %496 ], [ %.pre1068.pre, %925 ], [ %1108, %._crit_edge1015 ]
  %.11921 = phi i64 [ %.10920, %496 ], [ %.17.lcssa, %925 ], [ %.21.lcssa, %._crit_edge1015 ]
  %.1902 = phi i64 [ %.0901, %496 ], [ %.3904, %925 ], [ %.5906.lcssa, %._crit_edge1015 ]
  %.4897 = phi double [ %.3896, %496 ], [ %.8.lcssa, %925 ], [ %.11.lcssa, %._crit_edge1015 ]
  %.1 = phi double [ %.0, %496 ], [ %.3, %925 ], [ %.5.lcssa, %._crit_edge1015 ]
  %503 = getelementptr inbounds i8, ptr %0, i64 152
  %504 = srem i64 %502, %.0924
  %505 = getelementptr inbounds i8, ptr %0, i64 168
  store i64 %504, ptr %505, align 8, !tbaa !74
  %506 = add nsw i64 %.0924, -1
  %507 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %502, i64 noundef %506, ptr noundef %1)
  %508 = getelementptr inbounds i8, ptr %0, i64 160
  store i64 %507, ptr %508, align 8, !tbaa !75
  %509 = getelementptr inbounds i8, ptr %0, i64 456
  %510 = load ptr, ptr %509, align 8, !tbaa !27
  %511 = getelementptr inbounds i8, ptr %0, i64 2232
  %512 = getelementptr inbounds i8, ptr %0, i64 2288
  %513 = load ptr, ptr %512, align 8, !tbaa !27
  %514 = add nsw i64 %.0928, -1
  %515 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %514)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %510, i64 noundef 1, ptr noundef %513, i64 noundef 1, i64 noundef %515)
  %516 = getelementptr inbounds i8, ptr %0, i64 392
  %517 = load ptr, ptr %516, align 8, !tbaa !27
  %518 = load i64, ptr %505, align 8, !tbaa !74
  %519 = getelementptr inbounds ptr, ptr %517, i64 %518
  %520 = load ptr, ptr %519, align 8, !tbaa !76
  %521 = load ptr, ptr %512, align 8, !tbaa !27
  %522 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %514)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %520, i64 noundef 1, ptr noundef %521, i64 noundef 1, i64 noundef %522)
  %523 = getelementptr inbounds i8, ptr %0, i64 312
  %524 = load ptr, ptr %523, align 8, !tbaa !27
  %525 = load i64, ptr %505, align 8, !tbaa !74
  %526 = getelementptr inbounds ptr, ptr %524, i64 %525
  %527 = load ptr, ptr %526, align 8, !tbaa !76
  %528 = getelementptr inbounds i8, ptr %0, i64 2304
  %529 = getelementptr inbounds i8, ptr %0, i64 2360
  %530 = load ptr, ptr %529, align 8, !tbaa !27
  %531 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %514)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %527, i64 noundef 1, ptr noundef %530, i64 noundef 1, i64 noundef %531)
  %532 = getelementptr inbounds i8, ptr %0, i64 144
  store i64 0, ptr %532, align 8, !tbaa !77
  %533 = load i64, ptr %503, align 8, !tbaa !73
  %.not944 = icmp eq i64 %533, 0
  br i1 %.not944, label %536, label %534

534:                                              ; preds = %501
  %535 = getelementptr inbounds i8, ptr %0, i64 592
  store double 1.000000e+00, ptr %535, align 8, !tbaa !37
  br label %536

536:                                              ; preds = %534, %501
  %537 = getelementptr inbounds i8, ptr %0, i64 528
  %538 = getelementptr inbounds i8, ptr %0, i64 592
  call void @_ZN11alglib_impl16linminnormalizedEPNS_9ae_vectorEPdlPNS_8ae_stateE(ptr noundef nonnull %537, ptr noundef nonnull %538, i64 noundef %.0928, ptr noundef %1)
  %539 = getelementptr inbounds i8, ptr %0, i64 600
  %540 = load double, ptr %539, align 8, !tbaa !72
  %541 = fmul double %540, 1.000000e+01
  %542 = getelementptr inbounds i8, ptr %0, i64 2080
  store double %541, ptr %542, align 8, !tbaa !78
  %543 = getelementptr inbounds i8, ptr %0, i64 56
  %544 = load double, ptr %543, align 8, !tbaa !69
  %545 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %544, double noundef 0.000000e+00)
  br i1 %545, label %546, label %550

546:                                              ; preds = %536
  %547 = load double, ptr %542, align 8, !tbaa !78
  %548 = load double, ptr %543, align 8, !tbaa !69
  %549 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %547, double noundef %548, ptr noundef %1)
  store double %549, ptr %542, align 8, !tbaa !78
  br label %550

550:                                              ; preds = %546, %536
  %551 = getelementptr inbounds i8, ptr %0, i64 4256
  %552 = getelementptr inbounds i8, ptr %0, i64 64
  %553 = getelementptr inbounds i8, ptr %0, i64 2152
  %554 = getelementptr inbounds i8, ptr %0, i64 2296
  %555 = load double, ptr %554, align 8, !tbaa !48
  %556 = load i64, ptr %503, align 8, !tbaa !73
  call void @_ZN11alglib_impl34smoothnessmonitorstartlinesearch1uEPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_dS4_llPNS_8ae_stateE(ptr noundef nonnull %551, ptr noundef nonnull %552, ptr noundef nonnull %553, ptr noundef nonnull %511, double noundef %555, ptr noundef nonnull %528, i64 noundef %556, i64 noundef -1, ptr noundef %1)
  %557 = load double, ptr %542, align 8, !tbaa !78
  %558 = load double, ptr @_ZN11alglib_implL13minlbfgs_gtolE, align 8, !tbaa !29
  %559 = getelementptr inbounds i8, ptr %0, i64 136
  %560 = getelementptr inbounds i8, ptr %0, i64 608
  %561 = getelementptr inbounds i8, ptr %0, i64 4056
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_PKS0_S2_ddPlS5_S1_PNS_11linminstateES5_PNS_8ae_stateE(i64 noundef %.0928, ptr noundef nonnull %511, ptr noundef nonnull %554, ptr noundef nonnull %528, ptr noundef nonnull %537, ptr noundef nonnull %538, double noundef %557, double noundef %558, ptr noundef nonnull %3, ptr noundef nonnull %559, ptr noundef nonnull %560, ptr noundef nonnull %561, ptr noundef nonnull %532, ptr noundef %1)
  br label %562

562:                                              ; preds = %770, %550
  %.12922 = phi i64 [ %.11921, %550 ], [ %.15, %770 ]
  %.2903 = phi i64 [ %.1902, %550 ], [ %.0901, %770 ]
  %.5898 = phi double [ %.4897, %550 ], [ %.0893, %770 ]
  %.2 = phi double [ %.1, %550 ], [ %.0, %770 ]
  %563 = getelementptr inbounds i8, ptr %0, i64 144
  %564 = load i64, ptr %563, align 8, !tbaa !77
  %565 = icmp eq i64 %564, 0
  br i1 %565, label %790, label %566

566:                                              ; preds = %562
  %567 = getelementptr inbounds i8, ptr %0, i64 2216
  %568 = load i64, ptr %567, align 8, !tbaa !36
  %.not945 = icmp eq i64 %568, 2
  br i1 %.not945, label %569, label %661

569:                                              ; preds = %566
  %570 = getelementptr inbounds i8, ptr %0, i64 128
  %571 = load double, ptr %570, align 8, !tbaa !38
  %572 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %571, double noundef 0.000000e+00)
  %573 = getelementptr inbounds i8, ptr %0, i64 2376
  %574 = getelementptr inbounds i8, ptr %0, i64 2456
  %575 = getelementptr inbounds i8, ptr %0, i64 2464
  %576 = getelementptr inbounds i8, ptr %0, i64 2472
  %577 = getelementptr inbounds i8, ptr %0, i64 2480
  br i1 %572, label %590, label %578

578:                                              ; preds = %569
  store i64 2, ptr %573, align 8, !tbaa !40
  store i64 1, ptr %574, align 8, !tbaa !41
  store i64 1, ptr %575, align 8, !tbaa !42
  store i64 %.0928, ptr %576, align 8, !tbaa !43
  store i64 0, ptr %577, align 8, !tbaa !44
  %579 = getelementptr inbounds i8, ptr %0, i64 2232
  %580 = getelementptr inbounds i8, ptr %0, i64 2496
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0928, ptr noundef nonnull %579, ptr noundef nonnull %580, ptr noundef %1)
  %581 = getelementptr inbounds i8, ptr %0, i64 2560
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef 1, ptr noundef nonnull %581, ptr noundef %1)
  %582 = getelementptr inbounds i8, ptr %0, i64 2624
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.0928, ptr noundef nonnull %582, ptr noundef %1)
  br label %1109

583:                                              ; preds = %26
  %584 = getelementptr inbounds i8, ptr %0, i64 2616
  %585 = load ptr, ptr %584, align 8, !tbaa !27
  %586 = load double, ptr %585, align 8, !tbaa !29
  %587 = getelementptr inbounds i8, ptr %0, i64 2296
  store double %586, ptr %587, align 8, !tbaa !48
  %588 = getelementptr inbounds i8, ptr %0, i64 2624
  %589 = getelementptr inbounds i8, ptr %0, i64 2304
  tail call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0928, ptr noundef nonnull %588, ptr noundef nonnull %589, ptr noundef %1)
  br label %770

590:                                              ; preds = %569
  store i64 3, ptr %573, align 8, !tbaa !40
  store i64 1, ptr %574, align 8, !tbaa !41
  store i64 1, ptr %575, align 8, !tbaa !42
  store i64 %.0928, ptr %576, align 8, !tbaa !43
  store i64 0, ptr %577, align 8, !tbaa !44
  %591 = getelementptr inbounds i8, ptr %0, i64 2488
  store i64 5, ptr %591, align 8, !tbaa !46
  %592 = mul nsw i64 %.0928, 11
  %593 = getelementptr inbounds i8, ptr %0, i64 2496
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %592, ptr noundef nonnull %593, ptr noundef %1)
  %594 = getelementptr inbounds i8, ptr %0, i64 2232
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0928, ptr noundef nonnull %594, ptr noundef nonnull %593, ptr noundef %1)
  %.not946.not974 = icmp sgt i64 %.0928, 0
  br i1 %.not946.not974, label %.lr.ph977, label %._crit_edge978

.lr.ph977:                                        ; preds = %590
  %595 = getelementptr inbounds i8, ptr %0, i64 120
  %596 = getelementptr inbounds i8, ptr %0, i64 2552
  br label %597

597:                                              ; preds = %.lr.ph977, %597
  %.13923975 = phi i64 [ 0, %.lr.ph977 ], [ %651, %597 ]
  %598 = load double, ptr %570, align 8, !tbaa !38
  %599 = load ptr, ptr %595, align 8, !tbaa !27
  %600 = getelementptr inbounds double, ptr %599, i64 %.13923975
  %601 = load double, ptr %600, align 8, !tbaa !29
  %602 = fmul double %598, %601
  %603 = load ptr, ptr %596, align 8, !tbaa !27
  %604 = mul nuw nsw i64 %.13923975, 10
  %605 = add nuw nsw i64 %604, %.0928
  %606 = getelementptr inbounds double, ptr %603, i64 %605
  store double 0.000000e+00, ptr %606, align 8, !tbaa !29
  %607 = load ptr, ptr %596, align 8, !tbaa !27
  %608 = getelementptr double, ptr %607, i64 %605
  %609 = getelementptr i8, ptr %608, i64 8
  store double 0.000000e+00, ptr %609, align 8, !tbaa !29
  %610 = load ptr, ptr %596, align 8, !tbaa !27
  %611 = getelementptr inbounds double, ptr %610, i64 %.13923975
  %612 = load double, ptr %611, align 8, !tbaa !29
  %613 = call double @llvm.fmuladd.f64(double %602, double -1.000000e+00, double %612)
  %614 = getelementptr double, ptr %610, i64 %605
  %615 = getelementptr i8, ptr %614, i64 16
  store double %613, ptr %615, align 8, !tbaa !29
  %616 = fmul double %602, 6.000000e+00
  %617 = fdiv double 1.000000e+00, %616
  %618 = load ptr, ptr %596, align 8, !tbaa !27
  %619 = getelementptr double, ptr %618, i64 %605
  %620 = getelementptr i8, ptr %619, i64 24
  store double %617, ptr %620, align 8, !tbaa !29
  %621 = load ptr, ptr %596, align 8, !tbaa !27
  %622 = getelementptr inbounds double, ptr %621, i64 %.13923975
  %623 = load double, ptr %622, align 8, !tbaa !29
  %624 = call double @llvm.fmuladd.f64(double %602, double -5.000000e-01, double %623)
  %625 = getelementptr double, ptr %621, i64 %605
  %626 = getelementptr i8, ptr %625, i64 32
  store double %624, ptr %626, align 8, !tbaa !29
  %627 = fdiv double -8.000000e+00, %616
  %628 = load ptr, ptr %596, align 8, !tbaa !27
  %629 = getelementptr double, ptr %628, i64 %605
  %630 = getelementptr i8, ptr %629, i64 40
  store double %627, ptr %630, align 8, !tbaa !29
  %631 = load ptr, ptr %596, align 8, !tbaa !27
  %632 = getelementptr inbounds double, ptr %631, i64 %.13923975
  %633 = load double, ptr %632, align 8, !tbaa !29
  %634 = call double @llvm.fmuladd.f64(double %602, double 5.000000e-01, double %633)
  %635 = getelementptr double, ptr %631, i64 %605
  %636 = getelementptr i8, ptr %635, i64 48
  store double %634, ptr %636, align 8, !tbaa !29
  %637 = fdiv double 8.000000e+00, %616
  %638 = load ptr, ptr %596, align 8, !tbaa !27
  %639 = getelementptr double, ptr %638, i64 %605
  %640 = getelementptr i8, ptr %639, i64 56
  store double %637, ptr %640, align 8, !tbaa !29
  %641 = load ptr, ptr %596, align 8, !tbaa !27
  %642 = getelementptr inbounds double, ptr %641, i64 %.13923975
  %643 = load double, ptr %642, align 8, !tbaa !29
  %644 = fadd double %602, %643
  %645 = getelementptr double, ptr %641, i64 %605
  %646 = getelementptr i8, ptr %645, i64 64
  store double %644, ptr %646, align 8, !tbaa !29
  %647 = fdiv double -1.000000e+00, %616
  %648 = load ptr, ptr %596, align 8, !tbaa !27
  %649 = getelementptr double, ptr %648, i64 %605
  %650 = getelementptr i8, ptr %649, i64 72
  store double %647, ptr %650, align 8, !tbaa !29
  %651 = add nuw nsw i64 %.13923975, 1
  %exitcond1058.not = icmp eq i64 %651, %.0928
  br i1 %exitcond1058.not, label %._crit_edge978, label %597, !llvm.loop !79

._crit_edge978:                                   ; preds = %597, %590
  %.13923.lcssa = phi i64 [ 0, %590 ], [ %.0928, %597 ]
  %.6899.lcssa = phi double [ %.5898, %590 ], [ %602, %597 ]
  %652 = getelementptr inbounds i8, ptr %0, i64 2560
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef 1, ptr noundef nonnull %652, ptr noundef %1)
  %653 = getelementptr inbounds i8, ptr %0, i64 2624
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.0928, ptr noundef nonnull %653, ptr noundef %1)
  br label %1109

654:                                              ; preds = %26
  %655 = getelementptr inbounds i8, ptr %0, i64 2616
  %656 = load ptr, ptr %655, align 8, !tbaa !27
  %657 = load double, ptr %656, align 8, !tbaa !29
  %658 = getelementptr inbounds i8, ptr %0, i64 2296
  store double %657, ptr %658, align 8, !tbaa !48
  %659 = getelementptr inbounds i8, ptr %0, i64 2624
  %660 = getelementptr inbounds i8, ptr %0, i64 2304
  tail call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0928, ptr noundef nonnull %659, ptr noundef nonnull %660, ptr noundef %1)
  br label %770

661:                                              ; preds = %566
  %662 = icmp eq i64 %568, 1
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %662, ptr noundef nonnull @.str.464, ptr noundef %1)
  call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %663 = getelementptr inbounds i8, ptr %0, i64 128
  %664 = load double, ptr %663, align 8, !tbaa !38
  %665 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %664, double noundef 0.000000e+00)
  br i1 %665, label %670, label %666

666:                                              ; preds = %661
  %667 = getelementptr inbounds i8, ptr %0, i64 2369
  store i8 1, ptr %667, align 1, !tbaa !45
  br label %1109

668:                                              ; preds = %26
  %669 = getelementptr inbounds i8, ptr %0, i64 2369
  store i8 0, ptr %669, align 1, !tbaa !45
  br label %770

670:                                              ; preds = %661
  %671 = getelementptr inbounds i8, ptr %0, i64 2368
  store i8 1, ptr %671, align 8, !tbaa !56
  br label %1109

672:                                              ; preds = %26
  %673 = getelementptr inbounds i8, ptr %0, i64 2296
  %674 = load double, ptr %673, align 8, !tbaa !48
  %675 = getelementptr inbounds i8, ptr %0, i64 2040
  store double %674, ptr %675, align 8, !tbaa !57
  br label %676

676:                                              ; preds = %734, %672
  %.14 = phi i64 [ 0, %672 ], [ %764, %734 ]
  %.not = icmp slt i64 %.14, %.0928
  br i1 %.not, label %677, label %765

677:                                              ; preds = %676
  %678 = getelementptr inbounds i8, ptr %0, i64 2288
  %679 = load ptr, ptr %678, align 8, !tbaa !27
  %680 = getelementptr inbounds double, ptr %679, i64 %.14
  %681 = load double, ptr %680, align 8, !tbaa !29
  %682 = getelementptr inbounds i8, ptr %0, i64 128
  %683 = load double, ptr %682, align 8, !tbaa !38
  %684 = getelementptr inbounds i8, ptr %0, i64 120
  %685 = load ptr, ptr %684, align 8, !tbaa !27
  %686 = getelementptr inbounds double, ptr %685, i64 %.14
  %687 = load double, ptr %686, align 8, !tbaa !29
  %688 = fneg double %683
  %689 = tail call double @llvm.fmuladd.f64(double %688, double %687, double %681)
  store double %689, ptr %680, align 8, !tbaa !29
  br label %1109

690:                                              ; preds = %26
  %691 = getelementptr inbounds i8, ptr %0, i64 2296
  %692 = load double, ptr %691, align 8, !tbaa !48
  %693 = getelementptr inbounds i8, ptr %0, i64 2048
  store double %692, ptr %693, align 8, !tbaa !58
  %694 = getelementptr inbounds i8, ptr %0, i64 128
  %695 = load double, ptr %694, align 8, !tbaa !38
  %696 = getelementptr inbounds i8, ptr %0, i64 120
  %697 = load ptr, ptr %696, align 8, !tbaa !27
  %698 = getelementptr inbounds double, ptr %697, i64 %.0910
  %699 = load double, ptr %698, align 8, !tbaa !29
  %700 = fmul double %695, -5.000000e-01
  %701 = tail call double @llvm.fmuladd.f64(double %700, double %699, double %.0893)
  %702 = getelementptr inbounds i8, ptr %0, i64 2288
  %703 = load ptr, ptr %702, align 8, !tbaa !27
  %704 = getelementptr inbounds double, ptr %703, i64 %.0910
  store double %701, ptr %704, align 8, !tbaa !29
  br label %1109

705:                                              ; preds = %26
  %706 = getelementptr inbounds i8, ptr %0, i64 2296
  %707 = load double, ptr %706, align 8, !tbaa !48
  %708 = getelementptr inbounds i8, ptr %0, i64 2056
  store double %707, ptr %708, align 8, !tbaa !59
  %709 = getelementptr inbounds i8, ptr %0, i64 128
  %710 = load double, ptr %709, align 8, !tbaa !38
  %711 = fmul double %710, 5.000000e-01
  %712 = getelementptr inbounds i8, ptr %0, i64 120
  %713 = load ptr, ptr %712, align 8, !tbaa !27
  %714 = getelementptr inbounds double, ptr %713, i64 %.0910
  %715 = load double, ptr %714, align 8, !tbaa !29
  %716 = tail call double @llvm.fmuladd.f64(double %711, double %715, double %.0893)
  %717 = getelementptr inbounds i8, ptr %0, i64 2288
  %718 = load ptr, ptr %717, align 8, !tbaa !27
  %719 = getelementptr inbounds double, ptr %718, i64 %.0910
  store double %716, ptr %719, align 8, !tbaa !29
  br label %1109

720:                                              ; preds = %26
  %721 = getelementptr inbounds i8, ptr %0, i64 2296
  %722 = load double, ptr %721, align 8, !tbaa !48
  %723 = getelementptr inbounds i8, ptr %0, i64 2064
  store double %722, ptr %723, align 8, !tbaa !60
  %724 = getelementptr inbounds i8, ptr %0, i64 128
  %725 = load double, ptr %724, align 8, !tbaa !38
  %726 = getelementptr inbounds i8, ptr %0, i64 120
  %727 = load ptr, ptr %726, align 8, !tbaa !27
  %728 = getelementptr inbounds double, ptr %727, i64 %.0910
  %729 = load double, ptr %728, align 8, !tbaa !29
  %730 = tail call double @llvm.fmuladd.f64(double %725, double %729, double %.0893)
  %731 = getelementptr inbounds i8, ptr %0, i64 2288
  %732 = load ptr, ptr %731, align 8, !tbaa !27
  %733 = getelementptr inbounds double, ptr %732, i64 %.0910
  store double %730, ptr %733, align 8, !tbaa !29
  br label %1109

734:                                              ; preds = %26
  %735 = getelementptr inbounds i8, ptr %0, i64 2296
  %736 = load double, ptr %735, align 8, !tbaa !48
  %737 = getelementptr inbounds i8, ptr %0, i64 2072
  store double %736, ptr %737, align 8, !tbaa !61
  %738 = getelementptr inbounds i8, ptr %0, i64 2288
  %739 = load ptr, ptr %738, align 8, !tbaa !27
  %740 = getelementptr inbounds double, ptr %739, i64 %.0910
  store double %.0893, ptr %740, align 8, !tbaa !29
  %741 = getelementptr inbounds i8, ptr %0, i64 2064
  %742 = load double, ptr %741, align 8, !tbaa !60
  %743 = getelementptr inbounds i8, ptr %0, i64 2056
  %744 = load double, ptr %743, align 8, !tbaa !59
  %745 = fsub double %742, %744
  %746 = load double, ptr %737, align 8, !tbaa !61
  %747 = getelementptr inbounds i8, ptr %0, i64 2048
  %748 = load double, ptr %747, align 8, !tbaa !58
  %749 = fsub double %746, %748
  %750 = fneg double %749
  %751 = tail call double @llvm.fmuladd.f64(double %745, double 8.000000e+00, double %750)
  %752 = getelementptr inbounds i8, ptr %0, i64 128
  %753 = load double, ptr %752, align 8, !tbaa !38
  %754 = fmul double %753, 6.000000e+00
  %755 = getelementptr inbounds i8, ptr %0, i64 120
  %756 = load ptr, ptr %755, align 8, !tbaa !27
  %757 = getelementptr inbounds double, ptr %756, i64 %.0910
  %758 = load double, ptr %757, align 8, !tbaa !29
  %759 = fmul double %754, %758
  %760 = fdiv double %751, %759
  %761 = getelementptr inbounds i8, ptr %0, i64 2360
  %762 = load ptr, ptr %761, align 8, !tbaa !27
  %763 = getelementptr inbounds double, ptr %762, i64 %.0910
  store double %760, ptr %763, align 8, !tbaa !29
  %764 = add nsw i64 %.0910, 1
  br label %676

765:                                              ; preds = %676
  %766 = getelementptr inbounds i8, ptr %0, i64 2040
  %767 = load double, ptr %766, align 8, !tbaa !57
  %768 = getelementptr inbounds i8, ptr %0, i64 2296
  store double %767, ptr %768, align 8, !tbaa !48
  %769 = getelementptr inbounds i8, ptr %0, i64 2368
  store i8 0, ptr %769, align 8, !tbaa !56
  br label %770

770:                                              ; preds = %668, %765, %583, %654
  %.15 = phi i64 [ %.0910, %583 ], [ %.0910, %654 ], [ %.0910, %668 ], [ %.14, %765 ]
  %771 = getelementptr inbounds i8, ptr %0, i64 4256
  %772 = getelementptr inbounds i8, ptr %0, i64 64
  %773 = getelementptr inbounds i8, ptr %0, i64 2152
  %774 = getelementptr inbounds i8, ptr %0, i64 528
  %775 = getelementptr inbounds i8, ptr %0, i64 592
  %776 = load double, ptr %775, align 8, !tbaa !37
  %777 = getelementptr inbounds i8, ptr %0, i64 2232
  %778 = getelementptr inbounds i8, ptr %0, i64 2296
  %779 = load double, ptr %778, align 8, !tbaa !48
  %780 = getelementptr inbounds i8, ptr %0, i64 2304
  tail call void @_ZN11alglib_impl31smoothnessmonitorenqueuepoint1uEPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_dS4_dS4_PNS_8ae_stateE(ptr noundef nonnull %771, ptr noundef nonnull %772, ptr noundef nonnull %773, ptr noundef nonnull %774, double noundef %776, ptr noundef nonnull %777, double noundef %779, ptr noundef nonnull %780, ptr noundef %1)
  %781 = getelementptr inbounds i8, ptr %0, i64 680
  %782 = load double, ptr %781, align 8, !tbaa !80
  tail call void @_ZN11alglib_impl12trimfunctionEPdPNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef nonnull %778, ptr noundef nonnull %780, i64 noundef %.0928, double noundef %782, ptr noundef %1)
  %783 = getelementptr inbounds i8, ptr %0, i64 2080
  %784 = load double, ptr %783, align 8, !tbaa !78
  %785 = load double, ptr @_ZN11alglib_implL13minlbfgs_gtolE, align 8, !tbaa !29
  %786 = getelementptr inbounds i8, ptr %0, i64 136
  %787 = getelementptr inbounds i8, ptr %0, i64 608
  %788 = getelementptr inbounds i8, ptr %0, i64 4056
  %789 = getelementptr inbounds i8, ptr %0, i64 144
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_PKS0_S2_ddPlS5_S1_PNS_11linminstateES5_PNS_8ae_stateE(i64 noundef %.0928, ptr noundef nonnull %777, ptr noundef nonnull %778, ptr noundef nonnull %780, ptr noundef nonnull %774, ptr noundef nonnull %775, double noundef %784, double noundef %785, ptr noundef nonnull %3, ptr noundef nonnull %786, ptr noundef nonnull %787, ptr noundef nonnull %788, ptr noundef nonnull %789, ptr noundef %1)
  br label %562

790:                                              ; preds = %562
  %791 = getelementptr inbounds i8, ptr %0, i64 4256
  call void @_ZN11alglib_impl35smoothnessmonitorfinalizelinesearchEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef nonnull %791, ptr noundef %1)
  %792 = getelementptr inbounds i8, ptr %0, i64 2224
  %793 = load i8, ptr %792, align 8, !tbaa !32, !range !50, !noundef !51
  %794 = trunc nuw i8 %793 to i1
  br i1 %794, label %795, label %803

795:                                              ; preds = %790
  %796 = getelementptr inbounds i8, ptr %0, i64 2288
  %797 = load ptr, ptr %796, align 8, !tbaa !27
  %798 = getelementptr inbounds i8, ptr %0, i64 456
  %799 = load ptr, ptr %798, align 8, !tbaa !27
  %800 = add nsw i64 %.0928, -1
  %801 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %800)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %797, i64 noundef 1, ptr noundef %799, i64 noundef 1, i64 noundef %801)
  %802 = getelementptr inbounds i8, ptr %0, i64 4048
  store i64 8, ptr %802, align 8, !tbaa !63
  br label %1127

803:                                              ; preds = %790
  %804 = getelementptr inbounds i8, ptr %0, i64 48
  %805 = load i8, ptr %804, align 8, !tbaa !49, !range !50, !noundef !51
  %806 = trunc nuw i8 %805 to i1
  br i1 %806, label %807, label %823

807:                                              ; preds = %803
  %808 = getelementptr inbounds i8, ptr %0, i64 2216
  %809 = load i64, ptr %808, align 8, !tbaa !36
  %.not955 = icmp eq i64 %809, 2
  br i1 %.not955, label %810, label %818

810:                                              ; preds = %807
  %811 = getelementptr inbounds i8, ptr %0, i64 2376
  store i64 -1, ptr %811, align 8, !tbaa !40
  %812 = getelementptr inbounds i8, ptr %0, i64 2472
  store i64 %.0928, ptr %812, align 8, !tbaa !43
  %813 = getelementptr inbounds i8, ptr %0, i64 2296
  %814 = load double, ptr %813, align 8, !tbaa !48
  %815 = getelementptr inbounds i8, ptr %0, i64 2448
  store double %814, ptr %815, align 8, !tbaa !52
  %816 = getelementptr inbounds i8, ptr %0, i64 2232
  %817 = getelementptr inbounds i8, ptr %0, i64 2384
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %.0928, ptr noundef nonnull %816, ptr noundef nonnull %817, ptr noundef %1)
  br label %1109

818:                                              ; preds = %807
  %819 = icmp eq i64 %809, 1
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %819, ptr noundef nonnull @.str.465, ptr noundef %1)
  call void @_ZN11alglib_implL27minlbfgs_clearrequestfieldsEPNS_13minlbfgsstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %820 = getelementptr inbounds i8, ptr %0, i64 2370
  store i8 1, ptr %820, align 2, !tbaa !62
  br label %1109

821:                                              ; preds = %26
  %822 = getelementptr inbounds i8, ptr %0, i64 2370
  store i8 0, ptr %822, align 2, !tbaa !62
  br label %823

823:                                              ; preds = %26, %821, %803
  %.3904 = phi i64 [ %.2903, %803 ], [ %.0901, %821 ], [ %.0901, %26 ]
  %.3 = phi double [ %.2, %803 ], [ %.0, %821 ], [ %.0, %26 ]
  %824 = getelementptr inbounds i8, ptr %0, i64 136
  %825 = load i64, ptr %824, align 8, !tbaa !81
  %826 = getelementptr inbounds i8, ptr %0, i64 4032
  %827 = load <2 x i64>, ptr %826, align 8, !tbaa !28
  %828 = insertelement <2 x i64> <i64 1, i64 poison>, i64 %825, i64 1
  %829 = add nsw <2 x i64> %827, %828
  store <2 x i64> %829, ptr %826, align 8, !tbaa !28
  %830 = getelementptr inbounds i8, ptr %0, i64 392
  %831 = load ptr, ptr %830, align 8, !tbaa !27
  %832 = getelementptr inbounds i8, ptr %0, i64 168
  %833 = load i64, ptr %832, align 8, !tbaa !74
  %834 = getelementptr inbounds ptr, ptr %831, i64 %833
  %835 = load ptr, ptr %834, align 8, !tbaa !76
  %836 = getelementptr inbounds i8, ptr %0, i64 2288
  %837 = load ptr, ptr %836, align 8, !tbaa !27
  %838 = add nsw i64 %.0928, -1
  %839 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %838)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %835, i64 noundef 1, ptr noundef %837, i64 noundef 1, i64 noundef %839)
  %840 = getelementptr inbounds i8, ptr %0, i64 312
  %841 = load ptr, ptr %840, align 8, !tbaa !27
  %842 = load i64, ptr %832, align 8, !tbaa !74
  %843 = getelementptr inbounds ptr, ptr %841, i64 %842
  %844 = load ptr, ptr %843, align 8, !tbaa !76
  %845 = getelementptr inbounds i8, ptr %0, i64 2360
  %846 = load ptr, ptr %845, align 8, !tbaa !27
  %847 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %838)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %844, i64 noundef 1, ptr noundef %846, i64 noundef 1, i64 noundef %847)
  %848 = getelementptr inbounds i8, ptr %0, i64 600
  %849 = load double, ptr %848, align 8, !tbaa !72
  %850 = getelementptr inbounds i8, ptr %0, i64 592
  %851 = load double, ptr %850, align 8, !tbaa !37
  %852 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %849, double noundef %851, ptr noundef %1)
  store double %852, ptr %848, align 8, !tbaa !72
  %.not947.not981 = icmp sgt i64 %.0928, 0
  br i1 %.not947.not981, label %.lr.ph985, label %._crit_edge986

.lr.ph985:                                        ; preds = %823
  %853 = getelementptr inbounds i8, ptr %0, i64 120
  br label %854

854:                                              ; preds = %.lr.ph985, %854
  %.7900983 = phi double [ 0.000000e+00, %.lr.ph985 ], [ %863, %854 ]
  %.16982 = phi i64 [ 0, %.lr.ph985 ], [ %864, %854 ]
  %855 = load ptr, ptr %845, align 8, !tbaa !27
  %856 = getelementptr inbounds double, ptr %855, i64 %.16982
  %857 = load double, ptr %856, align 8, !tbaa !29
  %858 = load ptr, ptr %853, align 8, !tbaa !27
  %859 = getelementptr inbounds double, ptr %858, i64 %.16982
  %860 = load double, ptr %859, align 8, !tbaa !29
  %861 = fmul double %857, %860
  %862 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %861, ptr noundef %1)
  %863 = fadd double %.7900983, %862
  %864 = add nuw nsw i64 %.16982, 1
  %exitcond1059.not = icmp eq i64 %864, %.0928
  br i1 %exitcond1059.not, label %._crit_edge986, label %854, !llvm.loop !82

._crit_edge986:                                   ; preds = %854, %823
  %.7900.lcssa = phi double [ 0.000000e+00, %823 ], [ %863, %854 ]
  %865 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.7900.lcssa, ptr noundef %1)
  br i1 %865, label %866, label %870

866:                                              ; preds = %._crit_edge986
  %867 = getelementptr inbounds i8, ptr %0, i64 2296
  %868 = load double, ptr %867, align 8, !tbaa !48
  %869 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %868, ptr noundef %1)
  br i1 %869, label %872, label %870

870:                                              ; preds = %866, %._crit_edge986
  %871 = getelementptr inbounds i8, ptr %0, i64 4048
  store i64 -8, ptr %871, align 8, !tbaa !63
  br label %1127

872:                                              ; preds = %866
  %873 = load i64, ptr %826, align 8, !tbaa !83
  %874 = getelementptr inbounds i8, ptr %0, i64 40
  %875 = load i64, ptr %874, align 8, !tbaa !84
  %.not948 = icmp sge i64 %873, %875
  %876 = icmp sgt i64 %875, 0
  %or.cond = and i1 %.not948, %876
  br i1 %or.cond, label %877, label %879

877:                                              ; preds = %872
  %878 = getelementptr inbounds i8, ptr %0, i64 4048
  store i64 5, ptr %878, align 8, !tbaa !63
  br label %1127

879:                                              ; preds = %872
  %880 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.7900.lcssa, ptr noundef %1)
  %881 = getelementptr inbounds i8, ptr %0, i64 16
  %882 = load double, ptr %881, align 8, !tbaa !67
  %883 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %880, double noundef %882)
  br i1 %883, label %884, label %886

884:                                              ; preds = %879
  %885 = getelementptr inbounds i8, ptr %0, i64 4048
  store i64 4, ptr %885, align 8, !tbaa !63
  br label %1127

886:                                              ; preds = %879
  %887 = getelementptr inbounds i8, ptr %0, i64 672
  %888 = load double, ptr %887, align 8, !tbaa !65
  %889 = load double, ptr %867, align 8, !tbaa !48
  %890 = fsub double %888, %889
  %891 = getelementptr inbounds i8, ptr %0, i64 24
  %892 = load double, ptr %891, align 8, !tbaa !85
  %893 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %888, ptr noundef %1)
  %894 = load double, ptr %867, align 8, !tbaa !48
  %895 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %894, ptr noundef %1)
  %896 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %895, double noundef 1.000000e+00, ptr noundef %1)
  %897 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %893, double noundef %896, ptr noundef %1)
  %898 = fmul double %892, %897
  %899 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %890, double noundef %898)
  br i1 %899, label %901, label %.preheader963

.preheader963:                                    ; preds = %886
  br i1 %.not947.not981, label %.lr.ph991, label %._crit_edge992

.lr.ph991:                                        ; preds = %.preheader963
  %900 = getelementptr inbounds i8, ptr %0, i64 120
  br label %903

901:                                              ; preds = %886
  %902 = getelementptr inbounds i8, ptr %0, i64 4048
  store i64 1, ptr %902, align 8, !tbaa !63
  br label %1127

903:                                              ; preds = %.lr.ph991, %903
  %.8990 = phi double [ 0.000000e+00, %.lr.ph991 ], [ %915, %903 ]
  %.17989 = phi i64 [ 0, %.lr.ph991 ], [ %916, %903 ]
  %904 = load ptr, ptr %830, align 8, !tbaa !27
  %905 = load i64, ptr %832, align 8, !tbaa !74
  %906 = getelementptr inbounds ptr, ptr %904, i64 %905
  %907 = load ptr, ptr %906, align 8, !tbaa !76
  %908 = getelementptr inbounds double, ptr %907, i64 %.17989
  %909 = load double, ptr %908, align 8, !tbaa !29
  %910 = load ptr, ptr %900, align 8, !tbaa !27
  %911 = getelementptr inbounds double, ptr %910, i64 %.17989
  %912 = load double, ptr %911, align 8, !tbaa !29
  %913 = fdiv double %909, %912
  %914 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %913, ptr noundef %1)
  %915 = fadd double %.8990, %914
  %916 = add nuw nsw i64 %.17989, 1
  %exitcond1060.not = icmp eq i64 %916, %.0928
  br i1 %exitcond1060.not, label %._crit_edge992, label %903, !llvm.loop !86

._crit_edge992:                                   ; preds = %903, %.preheader963
  %.17.lcssa = phi i64 [ 0, %.preheader963 ], [ %.0928, %903 ]
  %.8.lcssa = phi double [ 0.000000e+00, %.preheader963 ], [ %915, %903 ]
  %917 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.8.lcssa, ptr noundef %1)
  %918 = getelementptr inbounds i8, ptr %0, i64 32
  %919 = load double, ptr %918, align 8, !tbaa !87
  %920 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %917, double noundef %919)
  br i1 %920, label %921, label %923

921:                                              ; preds = %._crit_edge992
  %922 = getelementptr inbounds i8, ptr %0, i64 4048
  store i64 2, ptr %922, align 8, !tbaa !63
  br label %1127

923:                                              ; preds = %._crit_edge992
  %924 = load i64, ptr %3, align 8, !tbaa !28
  %.not950 = icmp eq i64 %924, 1
  br i1 %.not950, label %931, label %925

925:                                              ; preds = %923
  %926 = load double, ptr %867, align 8, !tbaa !48
  store double %926, ptr %887, align 8, !tbaa !65
  %927 = getelementptr inbounds i8, ptr %0, i64 584
  %928 = load ptr, ptr %927, align 8, !tbaa !27
  %929 = load ptr, ptr %845, align 8, !tbaa !27
  %930 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %838)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %928, i64 noundef 1, ptr noundef %929, i64 noundef 1, i64 noundef %930)
  %.phi.trans.insert.phi.trans.insert = getelementptr inbounds i8, ptr %0, i64 152
  %.pre1068.pre = load i64, ptr %.phi.trans.insert.phi.trans.insert, align 8, !tbaa !73
  br label %501

931:                                              ; preds = %923
  %932 = load ptr, ptr %840, align 8, !tbaa !27
  %933 = load i64, ptr %832, align 8, !tbaa !74
  %934 = getelementptr inbounds ptr, ptr %932, i64 %933
  %935 = load ptr, ptr %934, align 8, !tbaa !76
  %936 = load ptr, ptr %830, align 8, !tbaa !27
  %937 = getelementptr inbounds ptr, ptr %936, i64 %933
  %938 = load ptr, ptr %937, align 8, !tbaa !76
  %939 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %838)
  %940 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %935, i64 noundef 1, ptr noundef %938, i64 noundef 1, i64 noundef %939)
  %941 = load ptr, ptr %840, align 8, !tbaa !27
  %942 = load i64, ptr %832, align 8, !tbaa !74
  %943 = getelementptr inbounds ptr, ptr %941, i64 %942
  %944 = load ptr, ptr %943, align 8, !tbaa !76
  %945 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %838)
  %946 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %944, i64 noundef 1, ptr noundef %944, i64 noundef 1, i64 noundef %945)
  %947 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %940, double noundef 0.000000e+00)
  br i1 %947, label %950, label %948

948:                                              ; preds = %931
  %949 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %946, double noundef 0.000000e+00)
  br i1 %949, label %950, label %952

950:                                              ; preds = %948, %931
  %951 = getelementptr inbounds i8, ptr %0, i64 4048
  store i64 -2, ptr %951, align 8, !tbaa !63
  br label %1127

952:                                              ; preds = %948
  %953 = fdiv double 1.000000e+00, %940
  %954 = getelementptr inbounds i8, ptr %0, i64 232
  %955 = load ptr, ptr %954, align 8, !tbaa !27
  %956 = load i64, ptr %832, align 8, !tbaa !74
  %957 = getelementptr inbounds double, ptr %955, i64 %956
  store double %953, ptr %957, align 8, !tbaa !29
  %958 = fdiv double %940, %946
  %959 = getelementptr inbounds i8, ptr %0, i64 760
  store double %958, ptr %959, align 8, !tbaa !88
  %960 = getelementptr inbounds i8, ptr %0, i64 608
  %961 = getelementptr inbounds i8, ptr %0, i64 664
  %962 = load ptr, ptr %961, align 8, !tbaa !27
  %963 = load ptr, ptr %845, align 8, !tbaa !27
  %964 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %838)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %962, i64 noundef 1, ptr noundef %963, i64 noundef 1, i64 noundef %964)
  %965 = getelementptr inbounds i8, ptr %0, i64 152
  %966 = getelementptr inbounds i8, ptr %0, i64 160
  %967 = load i64, ptr %966, align 8, !tbaa !75
  %.not951995 = icmp slt i64 %967, 0
  br i1 %.not951995, label %._crit_edge999, label %.lr.ph998

.lr.ph998:                                        ; preds = %952
  %968 = load i64, ptr %965, align 8, !tbaa !73
  %969 = getelementptr inbounds i8, ptr %0, i64 520
  br label %970

970:                                              ; preds = %.lr.ph998, %970
  %.18996 = phi i64 [ %968, %.lr.ph998 ], [ %989, %970 ]
  %971 = srem i64 %.18996, %.0924
  %972 = load ptr, ptr %830, align 8, !tbaa !27
  %973 = getelementptr inbounds ptr, ptr %972, i64 %971
  %974 = load ptr, ptr %973, align 8, !tbaa !76
  %975 = load ptr, ptr %961, align 8, !tbaa !27
  %976 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %838)
  %977 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %974, i64 noundef 1, ptr noundef %975, i64 noundef 1, i64 noundef %976)
  %978 = load ptr, ptr %969, align 8, !tbaa !27
  %979 = getelementptr inbounds double, ptr %978, i64 %971
  store double %977, ptr %979, align 8, !tbaa !29
  %980 = load ptr, ptr %954, align 8, !tbaa !27
  %981 = getelementptr inbounds double, ptr %980, i64 %971
  %982 = load double, ptr %981, align 8, !tbaa !29
  %983 = fmul double %977, %982
  %984 = load ptr, ptr %961, align 8, !tbaa !27
  %985 = load ptr, ptr %840, align 8, !tbaa !27
  %986 = getelementptr inbounds ptr, ptr %985, i64 %971
  %987 = load ptr, ptr %986, align 8, !tbaa !76
  %988 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %838)
  call void @_ZN11alglib_impl9ae_v_subdEPdlPKdlld(ptr noundef %984, i64 noundef 1, ptr noundef %987, i64 noundef 1, i64 noundef %988, double noundef %983)
  %989 = add nsw i64 %.18996, -1
  %990 = load i64, ptr %965, align 8, !tbaa !73
  %991 = load i64, ptr %966, align 8, !tbaa !75
  %992 = sub nsw i64 %990, %991
  %.not951.not = icmp sgt i64 %.18996, %992
  br i1 %.not951.not, label %970, label %._crit_edge999, !llvm.loop !89

._crit_edge999:                                   ; preds = %970, %952
  %.4905.lcssa = phi i64 [ %.3904, %952 ], [ %971, %970 ]
  %.9.lcssa = phi double [ %940, %952 ], [ %977, %970 ]
  %.4.lcssa = phi double [ %946, %952 ], [ %983, %970 ]
  %993 = getelementptr inbounds i8, ptr %0, i64 752
  %994 = load i64, ptr %993, align 8, !tbaa !68
  %995 = icmp eq i64 %994, 0
  br i1 %995, label %996, label %1000

996:                                              ; preds = %._crit_edge999
  %997 = load double, ptr %959, align 8, !tbaa !88
  %998 = load ptr, ptr %961, align 8, !tbaa !27
  %999 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %838)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %998, i64 noundef 1, i64 noundef %999, double noundef %997)
  %.pr961 = load i64, ptr %993, align 8, !tbaa !68
  br label %1000

1000:                                             ; preds = %996, %._crit_edge999
  %1001 = phi i64 [ %.pr961, %996 ], [ %994, %._crit_edge999 ]
  %.10 = phi double [ %997, %996 ], [ %.9.lcssa, %._crit_edge999 ]
  %1002 = icmp eq i64 %1001, 1
  br i1 %1002, label %1003, label %1006

1003:                                             ; preds = %1000
  %1004 = getelementptr inbounds i8, ptr %0, i64 768
  %1005 = getelementptr inbounds i8, ptr %0, i64 2088
  call void @_ZN11alglib_impl17fblscholeskysolveEPKNS_9ae_matrixEdlbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef nonnull %1004, double noundef 1.000000e+00, i64 noundef %.0928, i1 noundef zeroext true, ptr noundef nonnull %960, ptr noundef nonnull %1005, ptr noundef %1)
  %.pre1069 = load i64, ptr %993, align 8, !tbaa !68
  br label %1006

1006:                                             ; preds = %1003, %1000
  %1007 = phi i64 [ %.pre1069, %1003 ], [ %1001, %1000 ]
  switch i64 %1007, label %._crit_edge1006 [
    i64 2, label %.preheader962
    i64 3, label %.preheader
    i64 4, label %1057
  ]

.preheader962:                                    ; preds = %1006
  br i1 %.not947.not981, label %.lr.ph1005, label %._crit_edge1006.thread

.lr.ph1005:                                       ; preds = %.preheader962
  %1008 = getelementptr inbounds i8, ptr %0, i64 904
  %xtraiter1126 = and i64 %.0928, 1
  %1009 = icmp eq i64 %.0928, 1
  br i1 %1009, label %._crit_edge1006.thread.loopexit.unr-lcssa, label %.lr.ph1005.new

.lr.ph1005.new:                                   ; preds = %.lr.ph1005
  %unroll_iter1128 = and i64 %.0928, 9223372036854775806
  br label %1010

1010:                                             ; preds = %1010, %.lr.ph1005.new
  %.191004 = phi i64 [ 0, %.lr.ph1005.new ], [ %1026, %1010 ]
  %niter1129 = phi i64 [ 0, %.lr.ph1005.new ], [ %niter1129.next.1, %1010 ]
  %1011 = load ptr, ptr %961, align 8, !tbaa !27
  %1012 = getelementptr inbounds double, ptr %1011, i64 %.191004
  %1013 = load double, ptr %1012, align 8, !tbaa !29
  %1014 = load ptr, ptr %1008, align 8, !tbaa !27
  %1015 = getelementptr inbounds double, ptr %1014, i64 %.191004
  %1016 = load double, ptr %1015, align 8, !tbaa !29
  %1017 = fdiv double %1013, %1016
  store double %1017, ptr %1012, align 8, !tbaa !29
  %1018 = or disjoint i64 %.191004, 1
  %1019 = load ptr, ptr %961, align 8, !tbaa !27
  %1020 = getelementptr inbounds double, ptr %1019, i64 %1018
  %1021 = load double, ptr %1020, align 8, !tbaa !29
  %1022 = load ptr, ptr %1008, align 8, !tbaa !27
  %1023 = getelementptr inbounds double, ptr %1022, i64 %1018
  %1024 = load double, ptr %1023, align 8, !tbaa !29
  %1025 = fdiv double %1021, %1024
  store double %1025, ptr %1020, align 8, !tbaa !29
  %1026 = add nuw nsw i64 %.191004, 2
  %niter1129.next.1 = add i64 %niter1129, 2
  %niter1129.ncmp.1 = icmp eq i64 %niter1129.next.1, %unroll_iter1128
  br i1 %niter1129.ncmp.1, label %._crit_edge1006.thread.loopexit.unr-lcssa, label %1010, !llvm.loop !90

.preheader:                                       ; preds = %1006
  br i1 %.not947.not981, label %.lr.ph1009, label %._crit_edge1006.thread

.lr.ph1009:                                       ; preds = %.preheader
  %1027 = getelementptr inbounds i8, ptr %0, i64 120
  %xtraiter1121 = and i64 %.0928, 1
  %1028 = icmp eq i64 %.0928, 1
  br i1 %1028, label %._crit_edge1010.unr-lcssa, label %.lr.ph1009.new

.lr.ph1009.new:                                   ; preds = %.lr.ph1009
  %unroll_iter1123 = and i64 %.0928, 9223372036854775806
  br label %1029

1029:                                             ; preds = %1029, %.lr.ph1009.new
  %.201008 = phi i64 [ 0, %.lr.ph1009.new ], [ %1047, %1029 ]
  %niter1124 = phi i64 [ 0, %.lr.ph1009.new ], [ %niter1124.next.1, %1029 ]
  %1030 = load ptr, ptr %961, align 8, !tbaa !27
  %1031 = getelementptr inbounds double, ptr %1030, i64 %.201008
  %1032 = load double, ptr %1031, align 8, !tbaa !29
  %1033 = load ptr, ptr %1027, align 8, !tbaa !27
  %1034 = getelementptr inbounds double, ptr %1033, i64 %.201008
  %1035 = load double, ptr %1034, align 8, !tbaa !29
  %1036 = fmul double %1032, %1035
  %1037 = fmul double %1035, %1036
  store double %1037, ptr %1031, align 8, !tbaa !29
  %1038 = or disjoint i64 %.201008, 1
  %1039 = load ptr, ptr %961, align 8, !tbaa !27
  %1040 = getelementptr inbounds double, ptr %1039, i64 %1038
  %1041 = load double, ptr %1040, align 8, !tbaa !29
  %1042 = load ptr, ptr %1027, align 8, !tbaa !27
  %1043 = getelementptr inbounds double, ptr %1042, i64 %1038
  %1044 = load double, ptr %1043, align 8, !tbaa !29
  %1045 = fmul double %1041, %1044
  %1046 = fmul double %1044, %1045
  store double %1046, ptr %1040, align 8, !tbaa !29
  %1047 = add nuw nsw i64 %.201008, 2
  %niter1124.next.1 = add i64 %niter1124, 2
  %niter1124.ncmp.1 = icmp eq i64 %niter1124.next.1, %unroll_iter1123
  br i1 %niter1124.ncmp.1, label %._crit_edge1010.unr-lcssa, label %1029, !llvm.loop !91

._crit_edge1010.unr-lcssa:                        ; preds = %1029, %.lr.ph1009
  %.201008.unr = phi i64 [ 0, %.lr.ph1009 ], [ %1047, %1029 ]
  %lcmp.mod1122.not = icmp eq i64 %xtraiter1121, 0
  br i1 %lcmp.mod1122.not, label %._crit_edge1010, label %._crit_edge1010.epilog-lcssa

._crit_edge1010.epilog-lcssa:                     ; preds = %._crit_edge1010.unr-lcssa
  %1048 = load ptr, ptr %961, align 8, !tbaa !27
  %1049 = getelementptr inbounds double, ptr %1048, i64 %.201008.unr
  %1050 = load double, ptr %1049, align 8, !tbaa !29
  %1051 = load ptr, ptr %1027, align 8, !tbaa !27
  %1052 = getelementptr inbounds double, ptr %1051, i64 %.201008.unr
  %1053 = load double, ptr %1052, align 8, !tbaa !29
  %1054 = fmul double %1050, %1053
  %1055 = fmul double %1053, %1054
  store double %1055, ptr %1049, align 8, !tbaa !29
  br label %._crit_edge1010

._crit_edge1010:                                  ; preds = %._crit_edge1010.unr-lcssa, %._crit_edge1010.epilog-lcssa
  %1056 = icmp eq i64 %1007, 4
  br i1 %1056, label %1057, label %._crit_edge1006

1057:                                             ; preds = %1006, %._crit_edge1010
  %1058 = getelementptr inbounds i8, ptr %0, i64 976
  %1059 = getelementptr inbounds i8, ptr %0, i64 912
  %1060 = getelementptr inbounds i8, ptr %0, i64 1040
  %1061 = getelementptr inbounds i8, ptr %0, i64 1120
  %1062 = load i64, ptr %1061, align 8, !tbaa !71
  %1063 = getelementptr inbounds i8, ptr %0, i64 1128
  call void @_ZN11alglib_impl26inexactlbfgspreconditionerEPNS_9ae_vectorElPKS0_S3_PKNS_9ae_matrixElPNS_12precbuflbfgsEPNS_8ae_stateE(ptr noundef nonnull %960, i64 noundef %.0928, ptr noundef nonnull %1058, ptr noundef nonnull %1059, ptr noundef nonnull %1060, i64 noundef %1062, ptr noundef nonnull %1063, ptr noundef %1)
  %.pre1070 = load i64, ptr %993, align 8, !tbaa !68
  br label %._crit_edge1006

._crit_edge1006:                                  ; preds = %1006, %1057, %._crit_edge1010
  %1064 = phi i64 [ %1007, %1006 ], [ %.pre1070, %1057 ], [ %1007, %._crit_edge1010 ]
  %1065 = icmp eq i64 %1064, 5
  br i1 %1065, label %1066, label %._crit_edge1006.thread

1066:                                             ; preds = %._crit_edge1006
  %1067 = getelementptr inbounds i8, ptr %0, i64 1592
  call void @_ZN11alglib_impl26applylowrankpreconditionerEPNS_9ae_vectorEPNS_14precbuflowrankEPNS_8ae_stateE(ptr noundef nonnull %960, ptr noundef nonnull %1067, ptr noundef %1)
  br label %._crit_edge1006.thread

._crit_edge1006.thread.loopexit.unr-lcssa:        ; preds = %1010, %.lr.ph1005
  %.191004.unr = phi i64 [ 0, %.lr.ph1005 ], [ %1026, %1010 ]
  %lcmp.mod1127.not = icmp eq i64 %xtraiter1126, 0
  br i1 %lcmp.mod1127.not, label %._crit_edge1006.thread, label %._crit_edge1006.thread.loopexit.epilog-lcssa

._crit_edge1006.thread.loopexit.epilog-lcssa:     ; preds = %._crit_edge1006.thread.loopexit.unr-lcssa
  %1068 = load ptr, ptr %961, align 8, !tbaa !27
  %1069 = getelementptr inbounds double, ptr %1068, i64 %.191004.unr
  %1070 = load double, ptr %1069, align 8, !tbaa !29
  %1071 = load ptr, ptr %1008, align 8, !tbaa !27
  %1072 = getelementptr inbounds double, ptr %1071, i64 %.191004.unr
  %1073 = load double, ptr %1072, align 8, !tbaa !29
  %1074 = fdiv double %1070, %1073
  store double %1074, ptr %1069, align 8, !tbaa !29
  br label %._crit_edge1006.thread

._crit_edge1006.thread:                           ; preds = %._crit_edge1006.thread.loopexit.epilog-lcssa, %._crit_edge1006.thread.loopexit.unr-lcssa, %.preheader, %.preheader962, %1066, %._crit_edge1006
  %1075 = load i64, ptr %965, align 8, !tbaa !73
  %1076 = load i64, ptr %966, align 8, !tbaa !75
  %1077 = sub nsw i64 %1075, %1076
  %.not9541011 = icmp slt i64 %1076, 0
  br i1 %.not9541011, label %._crit_edge1015, label %.lr.ph1014

.lr.ph1014:                                       ; preds = %._crit_edge1006.thread
  %1078 = getelementptr inbounds i8, ptr %0, i64 520
  br label %1079

1079:                                             ; preds = %.lr.ph1014, %1079
  %.211012 = phi i64 [ %1077, %.lr.ph1014 ], [ %1100, %1079 ]
  %1080 = srem i64 %.211012, %.0924
  %1081 = load ptr, ptr %840, align 8, !tbaa !27
  %1082 = getelementptr inbounds ptr, ptr %1081, i64 %1080
  %1083 = load ptr, ptr %1082, align 8, !tbaa !76
  %1084 = load ptr, ptr %961, align 8, !tbaa !27
  %1085 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %838)
  %1086 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1083, i64 noundef 1, ptr noundef %1084, i64 noundef 1, i64 noundef %1085)
  %1087 = load ptr, ptr %954, align 8, !tbaa !27
  %1088 = getelementptr inbounds double, ptr %1087, i64 %1080
  %1089 = load double, ptr %1088, align 8, !tbaa !29
  %1090 = load ptr, ptr %1078, align 8, !tbaa !27
  %1091 = getelementptr inbounds double, ptr %1090, i64 %1080
  %1092 = load double, ptr %1091, align 8, !tbaa !29
  %1093 = fsub double %1092, %1086
  %1094 = fmul double %1089, %1093
  %1095 = load ptr, ptr %961, align 8, !tbaa !27
  %1096 = load ptr, ptr %830, align 8, !tbaa !27
  %1097 = getelementptr inbounds ptr, ptr %1096, i64 %1080
  %1098 = load ptr, ptr %1097, align 8, !tbaa !76
  %1099 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %838)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %1095, i64 noundef 1, ptr noundef %1098, i64 noundef 1, i64 noundef %1099, double noundef %1094)
  %1100 = add nsw i64 %.211012, 1
  %1101 = load i64, ptr %965, align 8, !tbaa !73
  %.not954.not = icmp slt i64 %.211012, %1101
  br i1 %.not954.not, label %1079, label %._crit_edge1015, !llvm.loop !92

._crit_edge1015:                                  ; preds = %1079, %._crit_edge1006.thread
  %.21.lcssa = phi i64 [ %1077, %._crit_edge1006.thread ], [ %1100, %1079 ]
  %.5906.lcssa = phi i64 [ %.4905.lcssa, %._crit_edge1006.thread ], [ %1080, %1079 ]
  %.11.lcssa = phi double [ %.10, %._crit_edge1006.thread ], [ %1086, %1079 ]
  %.5.lcssa = phi double [ %.4.lcssa, %._crit_edge1006.thread ], [ %1094, %1079 ]
  %1102 = getelementptr inbounds i8, ptr %0, i64 584
  %1103 = load ptr, ptr %1102, align 8, !tbaa !27
  %1104 = load ptr, ptr %961, align 8, !tbaa !27
  %1105 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %838)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %1103, i64 noundef 1, ptr noundef %1104, i64 noundef 1, i64 noundef %1105)
  %1106 = load double, ptr %867, align 8, !tbaa !48
  store double %1106, ptr %887, align 8, !tbaa !65
  %1107 = load i64, ptr %965, align 8, !tbaa !73
  %1108 = add nsw i64 %1107, 1
  store i64 %1108, ptr %965, align 8, !tbaa !73
  br label %501

1109:                                             ; preds = %818, %810, %720, %705, %690, %677, %670, %666, %._crit_edge978, %578, %380, %326, %311, %296, %283, %276, %272, %224, %._crit_edge1036, %147, %124, %111
  %.sink1097 = phi i32 [ 21, %818 ], [ 20, %810 ], [ 19, %720 ], [ 18, %705 ], [ 17, %690 ], [ 16, %677 ], [ 15, %670 ], [ 14, %666 ], [ 13, %._crit_edge978 ], [ 12, %578 ], [ 11, %380 ], [ 10, %326 ], [ 9, %311 ], [ 8, %296 ], [ 7, %283 ], [ 6, %276 ], [ 5, %272 ], [ 4, %224 ], [ 3, %._crit_edge1036 ], [ 2, %147 ], [ 1, %124 ], [ 0, %111 ]
  %.3931 = phi i64 [ %.0928, %818 ], [ %.0928, %810 ], [ %.0928, %720 ], [ %.0928, %705 ], [ %.0928, %690 ], [ %.0928, %677 ], [ %.0928, %670 ], [ %.0928, %666 ], [ %.0928, %._crit_edge978 ], [ %.0928, %578 ], [ %.0928, %380 ], [ %.0928, %326 ], [ %.0928, %311 ], [ %.0928, %296 ], [ %.0928, %283 ], [ %.2930, %276 ], [ %.2930, %272 ], [ %.0928, %224 ], [ %.2930, %._crit_edge1036 ], [ %.2930, %147 ], [ %.1929, %124 ], [ %.1929, %111 ]
  %.3927 = phi i64 [ %.0924, %818 ], [ %.0924, %810 ], [ %.0924, %720 ], [ %.0924, %705 ], [ %.0924, %690 ], [ %.0924, %677 ], [ %.0924, %670 ], [ %.0924, %666 ], [ %.0924, %._crit_edge978 ], [ %.0924, %578 ], [ %.0924, %380 ], [ %.0924, %326 ], [ %.0924, %311 ], [ %.0924, %296 ], [ %.0924, %283 ], [ %.2926, %276 ], [ %.2926, %272 ], [ %.0924, %224 ], [ %.2926, %._crit_edge1036 ], [ %.2926, %147 ], [ %.1925, %124 ], [ %.1925, %111 ]
  %.23 = phi i64 [ %.12922, %818 ], [ %.12922, %810 ], [ %.0910, %720 ], [ %.0910, %705 ], [ %.0910, %690 ], [ %.14, %677 ], [ %.12922, %670 ], [ %.12922, %666 ], [ %.13923.lcssa, %._crit_edge978 ], [ %.12922, %578 ], [ %.7917, %380 ], [ %.0910, %326 ], [ %.0910, %311 ], [ %.0910, %296 ], [ %.6916, %283 ], [ %.5915.lcssa, %276 ], [ %.5915.lcssa, %272 ], [ %.0910, %224 ], [ %.4914.lcssa, %._crit_edge1036 ], [ %.3913, %147 ], [ %.2912, %124 ], [ %.2912, %111 ]
  %.7908 = phi i64 [ %.2903, %818 ], [ %.2903, %810 ], [ %.0901, %720 ], [ %.0901, %705 ], [ %.0901, %690 ], [ %.0901, %677 ], [ %.2903, %670 ], [ %.2903, %666 ], [ %.2903, %._crit_edge978 ], [ %.2903, %578 ], [ %.0901, %380 ], [ %.0901, %326 ], [ %.0901, %311 ], [ %.0901, %296 ], [ %.0901, %283 ], [ %.0901, %276 ], [ %.0901, %272 ], [ %.0901, %224 ], [ %.0901, %._crit_edge1036 ], [ %.0901, %147 ], [ %.0901, %124 ], [ %.0901, %111 ]
  %.13 = phi double [ %.5898, %818 ], [ %.5898, %810 ], [ %.0893, %720 ], [ %.0893, %705 ], [ %.0893, %690 ], [ %681, %677 ], [ %.5898, %670 ], [ %.5898, %666 ], [ %.6899.lcssa, %._crit_edge978 ], [ %.5898, %578 ], [ %.0893, %380 ], [ %.0893, %326 ], [ %.0893, %311 ], [ %.0893, %296 ], [ %287, %283 ], [ %.0893, %276 ], [ %.0893, %272 ], [ %.0893, %224 ], [ %.1894.lcssa, %._crit_edge1036 ], [ %.0893, %147 ], [ %.0893, %124 ], [ %.0893, %111 ]
  %.7 = phi double [ %.2, %818 ], [ %.2, %810 ], [ %.0, %720 ], [ %.0, %705 ], [ %.0, %690 ], [ %.0, %677 ], [ %.2, %670 ], [ %.2, %666 ], [ %.2, %._crit_edge978 ], [ %.2, %578 ], [ %.0, %380 ], [ %.0, %326 ], [ %.0, %311 ], [ %.0, %296 ], [ %.0, %283 ], [ %.0, %276 ], [ %.0, %272 ], [ %.0, %224 ], [ %.0, %._crit_edge1036 ], [ %.0, %147 ], [ %.0, %124 ], [ %.0, %111 ]
  store i32 %.sink1097, ptr %4, align 8, !tbaa !5
  %1110 = getelementptr inbounds i8, ptr %0, i64 3832
  %1111 = load ptr, ptr %1110, align 8, !tbaa !27
  store i64 %.3931, ptr %1111, align 8, !tbaa !28
  %1112 = load ptr, ptr %1110, align 8, !tbaa !27
  %1113 = getelementptr inbounds i8, ptr %1112, i64 8
  store i64 %.3927, ptr %1113, align 8, !tbaa !28
  %1114 = load ptr, ptr %1110, align 8, !tbaa !27
  %1115 = getelementptr inbounds i8, ptr %1114, i64 16
  store i64 %.23, ptr %1115, align 8, !tbaa !28
  %1116 = load ptr, ptr %1110, align 8, !tbaa !27
  %1117 = getelementptr inbounds i8, ptr %1116, i64 24
  store i64 %.0909, ptr %1117, align 8, !tbaa !28
  %1118 = load ptr, ptr %1110, align 8, !tbaa !27
  %1119 = getelementptr inbounds i8, ptr %1118, i64 32
  store i64 %.7908, ptr %1119, align 8, !tbaa !28
  %1120 = load i64, ptr %3, align 8, !tbaa !28
  %1121 = load ptr, ptr %1110, align 8, !tbaa !27
  %1122 = getelementptr inbounds i8, ptr %1121, i64 40
  store i64 %1120, ptr %1122, align 8, !tbaa !28
  %1123 = getelementptr inbounds i8, ptr %0, i64 3960
  %1124 = load ptr, ptr %1123, align 8, !tbaa !27
  store double %.13, ptr %1124, align 8, !tbaa !29
  %1125 = load ptr, ptr %1123, align 8, !tbaa !27
  %1126 = getelementptr inbounds i8, ptr %1125, i64 8
  store double %.7, ptr %1126, align 8, !tbaa !29
  br label %1127

1127:                                             ; preds = %1109, %950, %921, %901, %884, %877, %870, %795, %414, %391
  %.0932 = phi i1 [ true, %1109 ], [ false, %391 ], [ false, %414 ], [ false, %795 ], [ false, %877 ], [ false, %884 ], [ false, %901 ], [ false, %921 ], [ false, %950 ], [ false, %870 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  ret i1 %.0932
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 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 #2

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

; 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_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_dS4_llPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

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

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

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

declare void @_ZN11alglib_impl7rallocmEllPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @_ZN11alglib_impl6rcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @_ZN11alglib_impl10rmergedivvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare noundef double @_ZN11alglib_impl6rdotv2ElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @_ZN11alglib_impl7rcopyvrElPKNS_9ae_vectorEPNS_9ae_matrixElPNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #1

declare void @_ZN11alglib_impl9rcopymulvEldPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef, double noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

declare void @_ZN11alglib_impl17fblscholeskysolveEPKNS_9ae_matrixEdlbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef, double noundef, i64 noundef, i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

declare void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_PKS0_S2_ddPlS5_S1_PNS_11linminstateES5_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 #1

; 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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, !20, i64 3768}
!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, !10, i64 600, !12, i64 608, !10, i64 672, !10, i64 680, !12, i64 688, !7, i64 752, !10, i64 760, !15, i64 768, !12, i64 848, !12, i64 912, !12, i64 976, !15, i64 1040, !7, i64 1120, !16, i64 1128, !17, i64 1592, !10, i64 2040, !10, i64 2048, !10, i64 2056, !10, i64 2064, !10, i64 2072, !10, i64 2080, !12, i64 2088, !12, i64 2152, !7, i64 2216, !11, i64 2224, !12, i64 2232, !10, i64 2296, !12, i64 2304, !11, i64 2368, !11, i64 2369, !11, i64 2370, !7, i64 2376, !12, i64 2384, !10, i64 2448, !7, i64 2456, !7, i64 2464, !7, i64 2472, !7, i64 2480, !7, i64 2488, !12, i64 2496, !12, i64 2560, !12, i64 2624, !18, i64 2688, !12, i64 3056, !12, i64 3120, !12, i64 3184, !12, i64 3248, !15, i64 3312, !18, i64 3392, !10, i64 3760, !19, i64 3768, !7, i64 4032, !7, i64 4040, !7, i64 4048, !21, i64 4056, !7, i64 4248, !22, i64 4256, !12, i64 9960}
!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_impl12sparsematrixE", !12, i64 0, !12, i64 64, !12, i64 128, !12, i64 192, !12, i64 256, !7, i64 320, !7, i64 328, !7, i64 336, !7, i64 344, !7, i64 352, !7, i64 360}
!19 = !{!"_ZTSN11alglib_impl10rcommstateE", !20, i64 0, !12, i64 8, !12, i64 72, !12, i64 136, !12, i64 200}
!20 = !{!"int", !8, i64 0}
!21 = !{!"_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}
!22 = !{!"_ZTSN11alglib_impl17smoothnessmonitorE", !7, i64 0, !7, i64 8, !11, i64 16, !12, i64 24, !12, i64 88, !7, i64 152, !12, i64 160, !12, i64 224, !12, i64 288, !15, i64 352, !12, i64 432, !12, i64 496, !7, i64 560, !7, i64 568, !7, i64 576, !10, i64 584, !7, i64 592, !12, i64 600, !12, i64 664, !10, i64 728, !12, i64 736, !12, i64 800, !10, i64 864, !15, i64 872, !15, i64 952, !15, i64 1032, !12, i64 1112, !12, i64 1176, !19, i64 1240, !11, i64 1504, !11, i64 1505, !7, i64 1512, !7, i64 1520, !10, i64 1528, !10, i64 1536, !11, i64 1544, !23, i64 1552, !10, i64 1848, !10, i64 1856, !24, i64 1864, !24, i64 2184, !10, i64 2504, !10, i64 2512, !25, i64 2520, !25, i64 2840, !10, i64 3160, !10, i64 3168, !26, i64 3176, !26, i64 3504, !11, i64 3832, !12, i64 3840, !12, i64 3904, !15, i64 3968, !19, i64 4048, !12, i64 4312, !12, i64 4376, !12, i64 4440, !12, i64 4504, !12, i64 4568, !12, i64 4632, !12, i64 4696, !12, i64 4760, !15, i64 4824, !15, i64 4904, !12, i64 4984, !12, i64 5048, !12, i64 5112, !12, i64 5176, !12, i64 5240, !12, i64 5304, !12, i64 5368, !12, i64 5432, !12, i64 5496, !12, i64 5560, !15, i64 5624}
!23 = !{!"_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}
!24 = !{!"_ZTSN11alglib_impl19optguardnonc0reportE", !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, !7, i64 304, !7, i64 312}
!25 = !{!"_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, !7, i64 304, !7, i64 312}
!26 = !{!"_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, !7, i64 312, !7, i64 320}
!27 = !{!8, !8, i64 0}
!28 = !{!7, !7, i64 0}
!29 = !{!10, !10, i64 0}
!30 = !{!6, !7, i64 0}
!31 = !{!6, !7, i64 8}
!32 = !{!6, !11, i64 2224}
!33 = !{!6, !7, i64 4248}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = !{!6, !7, i64 2216}
!37 = !{!6, !10, i64 592}
!38 = !{!6, !10, i64 128}
!39 = !{!6, !10, i64 3760}
!40 = !{!6, !7, i64 2376}
!41 = !{!6, !7, i64 2456}
!42 = !{!6, !7, i64 2464}
!43 = !{!6, !7, i64 2472}
!44 = !{!6, !7, i64 2480}
!45 = !{!6, !11, i64 2369}
!46 = !{!6, !7, i64 2488}
!47 = distinct !{!47, !35}
!48 = !{!6, !10, i64 2296}
!49 = !{!6, !11, i64 48}
!50 = !{i8 0, i8 2}
!51 = !{}
!52 = !{!6, !10, i64 2448}
!53 = distinct !{!53, !35}
!54 = distinct !{!54, !55}
!55 = !{!"llvm.loop.unroll.disable"}
!56 = !{!6, !11, i64 2368}
!57 = !{!6, !10, i64 2040}
!58 = !{!6, !10, i64 2048}
!59 = !{!6, !10, i64 2056}
!60 = !{!6, !10, i64 2064}
!61 = !{!6, !10, i64 2072}
!62 = !{!6, !11, i64 2370}
!63 = !{!6, !7, i64 4048}
!64 = !{!6, !7, i64 4040}
!65 = !{!6, !10, i64 672}
!66 = distinct !{!66, !35}
!67 = !{!6, !10, i64 16}
!68 = !{!6, !7, i64 752}
!69 = !{!6, !10, i64 56}
!70 = distinct !{!70, !35}
!71 = !{!6, !7, i64 1120}
!72 = !{!6, !10, i64 600}
!73 = !{!6, !7, i64 152}
!74 = !{!6, !7, i64 168}
!75 = !{!6, !7, i64 160}
!76 = !{!14, !14, i64 0}
!77 = !{!6, !7, i64 144}
!78 = !{!6, !10, i64 2080}
!79 = distinct !{!79, !35}
!80 = !{!6, !10, i64 680}
!81 = !{!6, !7, i64 136}
!82 = distinct !{!82, !35}
!83 = !{!6, !7, i64 4032}
!84 = !{!6, !7, i64 40}
!85 = !{!6, !10, i64 24}
!86 = distinct !{!86, !35}
!87 = !{!6, !10, i64 32}
!88 = !{!6, !10, i64 760}
!89 = distinct !{!89, !35}
!90 = distinct !{!90, !35}
!91 = distinct !{!91, !35}
!92 = distinct !{!92, !35}


; 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