; 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::mincgstate" = type { i64, double, double, double, i64, double, double, i8, i8, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", i64, %"struct.alglib_impl::ae_vector", double, i64, i64, i64, %"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", double, double, double, %"struct.alglib_impl::ae_vector", double, double, i64, i8, i8, double, %"struct.alglib_impl::ae_vector", i64, i64, %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", i8, i8, i8, i8, i8, i8, i8, %"struct.alglib_impl::rcommstate", i64, i64, i64, i64, %"struct.alglib_impl::linminstate", double, double, double, double, double, double, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, i64, %"struct.alglib_impl::smoothnessmonitor", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.1 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%union.anon.1 = type { ptr }
%"struct.alglib_impl::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 }

@_ZN11alglib_implL20mincg_rscountdownlenE = external hidden global i64, align 8
@_ZN11alglib_implL10mincg_gtolE = external hidden global double, align 8

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) #1 {
  %3 = alloca i1, align 1
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i64, align 8
  %7 = alloca i64, align 8
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca i8, align 1
  %12 = 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 1, ptr %11) #5
  %13 = load ptr, ptr %4, align 8, !tbaa !5
  %14 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %13, i32 0, i32 48
  %15 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %14, i32 0, i32 0
  %16 = load i32, ptr %15, align 8, !tbaa !9
  %17 = icmp sge i32 %16, 0
  br i1 %17, label %18, label %54

18:                                               ; preds = %2
  %19 = load ptr, ptr %4, align 8, !tbaa !5
  %20 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %19, i32 0, i32 48
  %21 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %20, i32 0, i32 1
  %22 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %23 = load ptr, ptr %22, align 8, !tbaa !25
  %24 = getelementptr inbounds i64, ptr %23, i64 0
  %25 = load i64, ptr %24, align 8, !tbaa !26
  store i64 %25, ptr %6, align 8, !tbaa !26
  %26 = load ptr, ptr %4, align 8, !tbaa !5
  %27 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 48
  %28 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %27, i32 0, i32 1
  %29 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %30 = load ptr, ptr %29, align 8, !tbaa !25
  %31 = getelementptr inbounds i64, ptr %30, i64 1
  %32 = load i64, ptr %31, align 8, !tbaa !26
  store i64 %32, ptr %7, align 8, !tbaa !26
  %33 = load ptr, ptr %4, align 8, !tbaa !5
  %34 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %33, i32 0, i32 48
  %35 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %34, i32 0, i32 3
  %36 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %35, i32 0, i32 4
  %37 = load ptr, ptr %36, align 8, !tbaa !25
  %38 = getelementptr inbounds double, ptr %37, i64 0
  %39 = load double, ptr %38, align 8, !tbaa !27
  store double %39, ptr %8, align 8, !tbaa !27
  %40 = load ptr, ptr %4, align 8, !tbaa !5
  %41 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %40, i32 0, i32 48
  %42 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %41, i32 0, i32 3
  %43 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %42, i32 0, i32 4
  %44 = load ptr, ptr %43, align 8, !tbaa !25
  %45 = getelementptr inbounds double, ptr %44, i64 1
  %46 = load double, ptr %45, align 8, !tbaa !27
  store double %46, ptr %9, align 8, !tbaa !27
  %47 = load ptr, ptr %4, align 8, !tbaa !5
  %48 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %47, i32 0, i32 48
  %49 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %48, i32 0, i32 3
  %50 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %49, i32 0, i32 4
  %51 = load ptr, ptr %50, align 8, !tbaa !25
  %52 = getelementptr inbounds double, ptr %51, i64 2
  %53 = load double, ptr %52, align 8, !tbaa !27
  store double %53, ptr %10, align 8, !tbaa !27
  br label %55

54:                                               ; preds = %2
  store i64 359, ptr %6, align 8, !tbaa !26
  store i64 -58, ptr %7, align 8, !tbaa !26
  store double -9.190000e+02, ptr %8, align 8, !tbaa !27
  store double -9.090000e+02, ptr %9, align 8, !tbaa !27
  store double 8.100000e+01, ptr %10, align 8, !tbaa !27
  br label %55

55:                                               ; preds = %54, %18
  %56 = load ptr, ptr %4, align 8, !tbaa !5
  %57 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %56, i32 0, i32 48
  %58 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %57, i32 0, i32 0
  %59 = load i32, ptr %58, align 8, !tbaa !9
  %60 = icmp eq i32 %59, 0
  br i1 %60, label %61, label %62

61:                                               ; preds = %55
  br label %308

62:                                               ; preds = %55
  %63 = load ptr, ptr %4, align 8, !tbaa !5
  %64 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %63, i32 0, i32 48
  %65 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %64, i32 0, i32 0
  %66 = load i32, ptr %65, align 8, !tbaa !9
  %67 = icmp eq i32 %66, 1
  br i1 %67, label %68, label %69

68:                                               ; preds = %62
  br label %397

69:                                               ; preds = %62
  %70 = load ptr, ptr %4, align 8, !tbaa !5
  %71 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %70, i32 0, i32 48
  %72 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %71, i32 0, i32 0
  %73 = load i32, ptr %72, align 8, !tbaa !9
  %74 = icmp eq i32 %73, 2
  br i1 %74, label %75, label %76

75:                                               ; preds = %69
  br label %406

76:                                               ; preds = %69
  %77 = load ptr, ptr %4, align 8, !tbaa !5
  %78 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %77, i32 0, i32 48
  %79 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %78, i32 0, i32 0
  %80 = load i32, ptr %79, align 8, !tbaa !9
  %81 = icmp eq i32 %80, 3
  br i1 %81, label %82, label %83

82:                                               ; preds = %76
  br label %448

83:                                               ; preds = %76
  %84 = load ptr, ptr %4, align 8, !tbaa !5
  %85 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %84, i32 0, i32 48
  %86 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %85, i32 0, i32 0
  %87 = load i32, ptr %86, align 8, !tbaa !9
  %88 = icmp eq i32 %87, 4
  br i1 %88, label %89, label %90

89:                                               ; preds = %83
  br label %477

90:                                               ; preds = %83
  %91 = load ptr, ptr %4, align 8, !tbaa !5
  %92 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %91, i32 0, i32 48
  %93 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %92, i32 0, i32 0
  %94 = load i32, ptr %93, align 8, !tbaa !9
  %95 = icmp eq i32 %94, 5
  br i1 %95, label %96, label %97

96:                                               ; preds = %90
  br label %505

97:                                               ; preds = %90
  %98 = load ptr, ptr %4, align 8, !tbaa !5
  %99 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %98, i32 0, i32 48
  %100 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %99, i32 0, i32 0
  %101 = load i32, ptr %100, align 8, !tbaa !9
  %102 = icmp eq i32 %101, 6
  br i1 %102, label %103, label %104

103:                                              ; preds = %97
  br label %532

104:                                              ; preds = %97
  %105 = load ptr, ptr %4, align 8, !tbaa !5
  %106 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %105, i32 0, i32 48
  %107 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %106, i32 0, i32 0
  %108 = load i32, ptr %107, align 8, !tbaa !9
  %109 = icmp eq i32 %108, 7
  br i1 %109, label %110, label %111

110:                                              ; preds = %104
  br label %604

111:                                              ; preds = %104
  %112 = load ptr, ptr %4, align 8, !tbaa !5
  %113 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %112, i32 0, i32 48
  %114 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %113, i32 0, i32 0
  %115 = load i32, ptr %114, align 8, !tbaa !9
  %116 = icmp eq i32 %115, 8
  br i1 %116, label %117, label %118

117:                                              ; preds = %111
  br label %648

118:                                              ; preds = %111
  %119 = load ptr, ptr %4, align 8, !tbaa !5
  %120 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %119, i32 0, i32 48
  %121 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %120, i32 0, i32 0
  %122 = load i32, ptr %121, align 8, !tbaa !9
  %123 = icmp eq i32 %122, 9
  br i1 %123, label %124, label %125

124:                                              ; preds = %118
  br label %875

125:                                              ; preds = %118
  %126 = load ptr, ptr %4, align 8, !tbaa !5
  %127 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %126, i32 0, i32 48
  %128 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %127, i32 0, i32 0
  %129 = load i32, ptr %128, align 8, !tbaa !9
  %130 = icmp eq i32 %129, 10
  br i1 %130, label %131, label %132

131:                                              ; preds = %125
  br label %965

132:                                              ; preds = %125
  %133 = load ptr, ptr %4, align 8, !tbaa !5
  %134 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %133, i32 0, i32 48
  %135 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %134, i32 0, i32 0
  %136 = load i32, ptr %135, align 8, !tbaa !9
  %137 = icmp eq i32 %136, 11
  br i1 %137, label %138, label %139

138:                                              ; preds = %132
  br label %974

139:                                              ; preds = %132
  %140 = load ptr, ptr %4, align 8, !tbaa !5
  %141 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %140, i32 0, i32 48
  %142 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %141, i32 0, i32 0
  %143 = load i32, ptr %142, align 8, !tbaa !9
  %144 = icmp eq i32 %143, 12
  br i1 %144, label %145, label %146

145:                                              ; preds = %139
  br label %1016

146:                                              ; preds = %139
  %147 = load ptr, ptr %4, align 8, !tbaa !5
  %148 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %147, i32 0, i32 48
  %149 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %148, i32 0, i32 0
  %150 = load i32, ptr %149, align 8, !tbaa !9
  %151 = icmp eq i32 %150, 13
  br i1 %151, label %152, label %153

152:                                              ; preds = %146
  br label %1045

153:                                              ; preds = %146
  %154 = load ptr, ptr %4, align 8, !tbaa !5
  %155 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %154, i32 0, i32 48
  %156 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %155, i32 0, i32 0
  %157 = load i32, ptr %156, align 8, !tbaa !9
  %158 = icmp eq i32 %157, 14
  br i1 %158, label %159, label %160

159:                                              ; preds = %153
  br label %1073

160:                                              ; preds = %153
  %161 = load ptr, ptr %4, align 8, !tbaa !5
  %162 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %161, i32 0, i32 48
  %163 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %162, i32 0, i32 0
  %164 = load i32, ptr %163, align 8, !tbaa !9
  %165 = icmp eq i32 %164, 15
  br i1 %165, label %166, label %167

166:                                              ; preds = %160
  br label %1100

167:                                              ; preds = %160
  %168 = load ptr, ptr %4, align 8, !tbaa !5
  %169 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %168, i32 0, i32 48
  %170 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %169, i32 0, i32 0
  %171 = load i32, ptr %170, align 8, !tbaa !9
  %172 = icmp eq i32 %171, 16
  br i1 %172, label %173, label %174

173:                                              ; preds = %167
  br label %1253

174:                                              ; preds = %167
  %175 = load ptr, ptr %4, align 8, !tbaa !5
  %176 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %175, i32 0, i32 48
  %177 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %176, i32 0, i32 0
  %178 = load i32, ptr %177, align 8, !tbaa !9
  %179 = icmp eq i32 %178, 17
  br i1 %179, label %180, label %181

180:                                              ; preds = %174
  br label %1283

181:                                              ; preds = %174
  %182 = load ptr, ptr %4, align 8, !tbaa !5
  %183 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %182, i32 0, i32 0
  %184 = load i64, ptr %183, align 8, !tbaa !28
  store i64 %184, ptr %6, align 8, !tbaa !26
  %185 = load ptr, ptr %4, align 8, !tbaa !5
  %186 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %185, i32 0, i32 33
  store i8 0, ptr %186, align 1, !tbaa !29
  %187 = load ptr, ptr %4, align 8, !tbaa !5
  %188 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %187, i32 0, i32 47
  store i8 0, ptr %188, align 2, !tbaa !30
  %189 = load ptr, ptr %4, align 8, !tbaa !5
  %190 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %189, i32 0, i32 51
  store i64 0, ptr %190, align 8, !tbaa !31
  %191 = load ptr, ptr %4, align 8, !tbaa !5
  %192 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %191, i32 0, i32 49
  store i64 0, ptr %192, align 8, !tbaa !32
  %193 = load ptr, ptr %4, align 8, !tbaa !5
  %194 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %193, i32 0, i32 50
  store i64 0, ptr %194, align 8, !tbaa !33
  %195 = load ptr, ptr %4, align 8, !tbaa !5
  %196 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %195, i32 0, i32 52
  store i64 0, ptr %196, align 8, !tbaa !34
  %197 = load ptr, ptr %4, align 8, !tbaa !5
  %198 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %197, i32 0, i32 66
  %199 = load ptr, ptr %4, align 8, !tbaa !5
  %200 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %199, i32 0, i32 15
  %201 = load i64, ptr %6, align 8, !tbaa !26
  %202 = load ptr, ptr %4, align 8, !tbaa !5
  %203 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %202, i32 0, i32 65
  %204 = load i64, ptr %203, align 8, !tbaa !35
  %205 = icmp sgt i64 %204, 0
  %206 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl21smoothnessmonitorinitEPNS_17smoothnessmonitorEPKNS_9ae_vectorEllbPNS_8ae_stateE(ptr noundef %198, ptr noundef %200, i64 noundef %201, i64 noundef 1, i1 noundef zeroext %205, ptr noundef %206)
  %207 = load ptr, ptr %4, align 8, !tbaa !5
  %208 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %207, i32 0, i32 63
  %209 = load i64, ptr %6, align 8, !tbaa !26
  %210 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %208, i64 noundef %209, ptr noundef %210)
  store i64 0, ptr %7, align 8, !tbaa !26
  br label %211

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

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

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

247:                                              ; preds = %211
  %248 = load ptr, ptr %4, align 8, !tbaa !5
  %249 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %248, ptr noundef %249)
  %250 = load ptr, ptr %4, align 8, !tbaa !5
  %251 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %250, i32 0, i32 16
  %252 = load double, ptr %251, align 8, !tbaa !38
  %253 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %252, double noundef 0.000000e+00)
  br i1 %253, label %254, label %259

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

259:                                              ; preds = %254, %247
  br label %347

260:                                              ; preds = %254
  br label %261

261:                                              ; preds = %345, %260
  %262 = load ptr, ptr %4, align 8, !tbaa !5
  %263 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %262, i32 0, i32 66
  %264 = load ptr, ptr %4, align 8, !tbaa !5
  %265 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %264, i32 0, i32 35
  %266 = load ptr, ptr %4, align 8, !tbaa !5
  %267 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %266, i32 0, i32 15
  %268 = load ptr, ptr %4, align 8, !tbaa !5
  %269 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %268, i32 0, i32 15
  %270 = load ptr, ptr %4, align 8, !tbaa !5
  %271 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %270, i32 0, i32 15
  %272 = load ptr, ptr %4, align 8, !tbaa !5
  %273 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %272, i32 0, i32 64
  %274 = load double, ptr %273, align 8, !tbaa !39
  %275 = load ptr, ptr %5, align 8, !tbaa !5
  %276 = call noundef zeroext i1 @_ZN11alglib_impl34smoothnessmonitorcheckgradientatx0EPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_S4_bdPNS_8ae_stateE(ptr noundef %263, ptr noundef %265, ptr noundef %267, ptr noundef %269, ptr noundef %271, i1 noundef zeroext false, double noundef %274, ptr noundef %275)
  br i1 %276, label %278, label %277

277:                                              ; preds = %261
  br label %346

278:                                              ; preds = %261
  store i64 0, ptr %7, align 8, !tbaa !26
  br label %279

279:                                              ; preds = %299, %278
  %280 = load i64, ptr %7, align 8, !tbaa !26
  %281 = load i64, ptr %6, align 8, !tbaa !26
  %282 = sub nsw i64 %281, 1
  %283 = icmp sle i64 %280, %282
  br i1 %283, label %284, label %302

284:                                              ; preds = %279
  %285 = load ptr, ptr %4, align 8, !tbaa !5
  %286 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %285, i32 0, i32 66
  %287 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %286, i32 0, i32 50
  %288 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %287, i32 0, i32 4
  %289 = load ptr, ptr %288, align 8, !tbaa !25
  %290 = load i64, ptr %7, align 8, !tbaa !26
  %291 = getelementptr inbounds double, ptr %289, i64 %290
  %292 = load double, ptr %291, align 8, !tbaa !27
  %293 = load ptr, ptr %4, align 8, !tbaa !5
  %294 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %293, i32 0, i32 38
  %295 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %294, i32 0, i32 4
  %296 = load ptr, ptr %295, align 8, !tbaa !25
  %297 = load i64, ptr %7, align 8, !tbaa !26
  %298 = getelementptr inbounds double, ptr %296, i64 %297
  store double %292, ptr %298, align 8, !tbaa !27
  br label %299

299:                                              ; preds = %284
  %300 = load i64, ptr %7, align 8, !tbaa !26
  %301 = add nsw i64 %300, 1
  store i64 %301, ptr %7, align 8, !tbaa !26
  br label %279, !llvm.loop !40

302:                                              ; preds = %279
  %303 = load ptr, ptr %4, align 8, !tbaa !5
  %304 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %303, i32 0, i32 42
  store i8 1, ptr %304, align 1, !tbaa !41
  %305 = load ptr, ptr %4, align 8, !tbaa !5
  %306 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %305, i32 0, i32 48
  %307 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %306, i32 0, i32 0
  store i32 0, ptr %307, align 8, !tbaa !9
  br label %1763

308:                                              ; preds = %61
  %309 = load ptr, ptr %4, align 8, !tbaa !5
  %310 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %309, i32 0, i32 42
  store i8 0, ptr %310, align 1, !tbaa !41
  %311 = load ptr, ptr %4, align 8, !tbaa !5
  %312 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %311, i32 0, i32 39
  %313 = load double, ptr %312, align 8, !tbaa !42
  %314 = load ptr, ptr %4, align 8, !tbaa !5
  %315 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %314, i32 0, i32 66
  %316 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %315, i32 0, i32 51
  %317 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %316, i32 0, i32 4
  %318 = load ptr, ptr %317, align 8, !tbaa !25
  %319 = getelementptr inbounds double, ptr %318, i64 0
  store double %313, ptr %319, align 8, !tbaa !27
  store i64 0, ptr %7, align 8, !tbaa !26
  br label %320

320:                                              ; preds = %342, %308
  %321 = load i64, ptr %7, align 8, !tbaa !26
  %322 = load i64, ptr %6, align 8, !tbaa !26
  %323 = sub nsw i64 %322, 1
  %324 = icmp sle i64 %321, %323
  br i1 %324, label %325, label %345

325:                                              ; preds = %320
  %326 = load ptr, ptr %4, align 8, !tbaa !5
  %327 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %326, i32 0, i32 40
  %328 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %327, i32 0, i32 4
  %329 = load ptr, ptr %328, align 8, !tbaa !25
  %330 = load i64, ptr %7, align 8, !tbaa !26
  %331 = getelementptr inbounds double, ptr %329, i64 %330
  %332 = load double, ptr %331, align 8, !tbaa !27
  %333 = load ptr, ptr %4, align 8, !tbaa !5
  %334 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %333, i32 0, i32 66
  %335 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %334, i32 0, i32 52
  %336 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %335, i32 0, i32 6
  %337 = load ptr, ptr %336, align 8, !tbaa !25
  %338 = getelementptr inbounds ptr, ptr %337, i64 0
  %339 = load ptr, ptr %338, align 8, !tbaa !5
  %340 = load i64, ptr %7, align 8, !tbaa !26
  %341 = getelementptr inbounds double, ptr %339, i64 %340
  store double %332, ptr %341, align 8, !tbaa !27
  br label %342

342:                                              ; preds = %325
  %343 = load i64, ptr %7, align 8, !tbaa !26
  %344 = add nsw i64 %343, 1
  store i64 %344, ptr %7, align 8, !tbaa !26
  br label %320, !llvm.loop !43

345:                                              ; preds = %320
  br label %261

346:                                              ; preds = %277
  br label %347

347:                                              ; preds = %346, %259
  store i64 0, ptr %7, align 8, !tbaa !26
  br label %348

348:                                              ; preds = %367, %347
  %349 = load i64, ptr %7, align 8, !tbaa !26
  %350 = load i64, ptr %6, align 8, !tbaa !26
  %351 = sub nsw i64 %350, 1
  %352 = icmp sle i64 %349, %351
  br i1 %352, label %353, label %370

353:                                              ; preds = %348
  %354 = load ptr, ptr %4, align 8, !tbaa !5
  %355 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %354, i32 0, i32 35
  %356 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %355, i32 0, i32 4
  %357 = load ptr, ptr %356, align 8, !tbaa !25
  %358 = load i64, ptr %7, align 8, !tbaa !26
  %359 = getelementptr inbounds double, ptr %357, i64 %358
  %360 = load double, ptr %359, align 8, !tbaa !27
  %361 = load ptr, ptr %4, align 8, !tbaa !5
  %362 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %361, i32 0, i32 38
  %363 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %362, i32 0, i32 4
  %364 = load ptr, ptr %363, align 8, !tbaa !25
  %365 = load i64, ptr %7, align 8, !tbaa !26
  %366 = getelementptr inbounds double, ptr %364, i64 %365
  store double %360, ptr %366, align 8, !tbaa !27
  br label %367

367:                                              ; preds = %353
  %368 = load i64, ptr %7, align 8, !tbaa !26
  %369 = add nsw i64 %368, 1
  store i64 %369, ptr %7, align 8, !tbaa !26
  br label %348, !llvm.loop !44

370:                                              ; preds = %348
  %371 = load ptr, ptr %4, align 8, !tbaa !5
  %372 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %371, i32 0, i32 20
  %373 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %372, i32 0, i32 4
  %374 = load ptr, ptr %373, align 8, !tbaa !25
  %375 = getelementptr inbounds double, ptr %374, i64 0
  %376 = load ptr, ptr %4, align 8, !tbaa !5
  %377 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %376, i32 0, i32 38
  %378 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %377, i32 0, i32 4
  %379 = load ptr, ptr %378, align 8, !tbaa !25
  %380 = getelementptr inbounds double, ptr %379, i64 0
  %381 = load i64, ptr %6, align 8, !tbaa !26
  %382 = sub nsw i64 %381, 1
  %383 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %382)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %375, i64 noundef 1, ptr noundef %380, i64 noundef 1, i64 noundef %383)
  %384 = load ptr, ptr %4, align 8, !tbaa !5
  %385 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %384, ptr noundef %385)
  %386 = load ptr, ptr %4, align 8, !tbaa !5
  %387 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %386, i32 0, i32 16
  %388 = load double, ptr %387, align 8, !tbaa !38
  %389 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %388, double noundef 0.000000e+00)
  br i1 %389, label %390, label %391

390:                                              ; preds = %370
  br label %400

391:                                              ; preds = %370
  %392 = load ptr, ptr %4, align 8, !tbaa !5
  %393 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %392, i32 0, i32 42
  store i8 1, ptr %393, align 1, !tbaa !41
  %394 = load ptr, ptr %4, align 8, !tbaa !5
  %395 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %394, i32 0, i32 48
  %396 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %395, i32 0, i32 0
  store i32 1, ptr %396, align 8, !tbaa !9
  br label %1763

397:                                              ; preds = %68
  %398 = load ptr, ptr %4, align 8, !tbaa !5
  %399 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %398, i32 0, i32 42
  store i8 0, ptr %399, align 1, !tbaa !41
  br label %590

400:                                              ; preds = %390
  %401 = load ptr, ptr %4, align 8, !tbaa !5
  %402 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %401, i32 0, i32 41
  store i8 1, ptr %402, align 8, !tbaa !45
  %403 = load ptr, ptr %4, align 8, !tbaa !5
  %404 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %403, i32 0, i32 48
  %405 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %404, i32 0, i32 0
  store i32 2, ptr %405, align 8, !tbaa !9
  br label %1763

406:                                              ; preds = %75
  %407 = load ptr, ptr %4, align 8, !tbaa !5
  %408 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %407, i32 0, i32 39
  %409 = load double, ptr %408, align 8, !tbaa !42
  %410 = load ptr, ptr %4, align 8, !tbaa !5
  %411 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %410, i32 0, i32 54
  store double %409, ptr %411, align 8, !tbaa !46
  store i64 0, ptr %7, align 8, !tbaa !26
  br label %412

412:                                              ; preds = %532, %406
  %413 = load i64, ptr %7, align 8, !tbaa !26
  %414 = load i64, ptr %6, align 8, !tbaa !26
  %415 = sub nsw i64 %414, 1
  %416 = icmp sgt i64 %413, %415
  br i1 %416, label %417, label %418

417:                                              ; preds = %412
  br label %582

418:                                              ; preds = %412
  %419 = load ptr, ptr %4, align 8, !tbaa !5
  %420 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %419, i32 0, i32 38
  %421 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %420, i32 0, i32 4
  %422 = load ptr, ptr %421, align 8, !tbaa !25
  %423 = load i64, ptr %7, align 8, !tbaa !26
  %424 = getelementptr inbounds double, ptr %422, i64 %423
  %425 = load double, ptr %424, align 8, !tbaa !27
  store double %425, ptr %9, align 8, !tbaa !27
  %426 = load double, ptr %9, align 8, !tbaa !27
  %427 = load ptr, ptr %4, align 8, !tbaa !5
  %428 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %427, i32 0, i32 16
  %429 = load double, ptr %428, align 8, !tbaa !38
  %430 = load ptr, ptr %4, align 8, !tbaa !5
  %431 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %430, i32 0, i32 15
  %432 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %431, i32 0, i32 4
  %433 = load ptr, ptr %432, align 8, !tbaa !25
  %434 = load i64, ptr %7, align 8, !tbaa !26
  %435 = getelementptr inbounds double, ptr %433, i64 %434
  %436 = load double, ptr %435, align 8, !tbaa !27
  %437 = fneg double %429
  %438 = call double @llvm.fmuladd.f64(double %437, double %436, double %426)
  %439 = load ptr, ptr %4, align 8, !tbaa !5
  %440 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %439, i32 0, i32 38
  %441 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %440, i32 0, i32 4
  %442 = load ptr, ptr %441, align 8, !tbaa !25
  %443 = load i64, ptr %7, align 8, !tbaa !26
  %444 = getelementptr inbounds double, ptr %442, i64 %443
  store double %438, ptr %444, align 8, !tbaa !27
  %445 = load ptr, ptr %4, align 8, !tbaa !5
  %446 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %445, i32 0, i32 48
  %447 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %446, i32 0, i32 0
  store i32 3, ptr %447, align 8, !tbaa !9
  br label %1763

448:                                              ; preds = %82
  %449 = load ptr, ptr %4, align 8, !tbaa !5
  %450 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %449, i32 0, i32 39
  %451 = load double, ptr %450, align 8, !tbaa !42
  %452 = load ptr, ptr %4, align 8, !tbaa !5
  %453 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %452, i32 0, i32 55
  store double %451, ptr %453, align 8, !tbaa !47
  %454 = load double, ptr %9, align 8, !tbaa !27
  %455 = load ptr, ptr %4, align 8, !tbaa !5
  %456 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %455, i32 0, i32 16
  %457 = load double, ptr %456, align 8, !tbaa !38
  %458 = fmul double 5.000000e-01, %457
  %459 = load ptr, ptr %4, align 8, !tbaa !5
  %460 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %459, i32 0, i32 15
  %461 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %460, i32 0, i32 4
  %462 = load ptr, ptr %461, align 8, !tbaa !25
  %463 = load i64, ptr %7, align 8, !tbaa !26
  %464 = getelementptr inbounds double, ptr %462, i64 %463
  %465 = load double, ptr %464, align 8, !tbaa !27
  %466 = fneg double %458
  %467 = call double @llvm.fmuladd.f64(double %466, double %465, double %454)
  %468 = load ptr, ptr %4, align 8, !tbaa !5
  %469 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %468, i32 0, i32 38
  %470 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %469, i32 0, i32 4
  %471 = load ptr, ptr %470, align 8, !tbaa !25
  %472 = load i64, ptr %7, align 8, !tbaa !26
  %473 = getelementptr inbounds double, ptr %471, i64 %472
  store double %467, ptr %473, align 8, !tbaa !27
  %474 = load ptr, ptr %4, align 8, !tbaa !5
  %475 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %474, i32 0, i32 48
  %476 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %475, i32 0, i32 0
  store i32 4, ptr %476, align 8, !tbaa !9
  br label %1763

477:                                              ; preds = %89
  %478 = load ptr, ptr %4, align 8, !tbaa !5
  %479 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %478, i32 0, i32 39
  %480 = load double, ptr %479, align 8, !tbaa !42
  %481 = load ptr, ptr %4, align 8, !tbaa !5
  %482 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %481, i32 0, i32 56
  store double %480, ptr %482, align 8, !tbaa !48
  %483 = load double, ptr %9, align 8, !tbaa !27
  %484 = load ptr, ptr %4, align 8, !tbaa !5
  %485 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %484, i32 0, i32 16
  %486 = load double, ptr %485, align 8, !tbaa !38
  %487 = fmul double 5.000000e-01, %486
  %488 = load ptr, ptr %4, align 8, !tbaa !5
  %489 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %488, i32 0, i32 15
  %490 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %489, i32 0, i32 4
  %491 = load ptr, ptr %490, align 8, !tbaa !25
  %492 = load i64, ptr %7, align 8, !tbaa !26
  %493 = getelementptr inbounds double, ptr %491, i64 %492
  %494 = load double, ptr %493, align 8, !tbaa !27
  %495 = call double @llvm.fmuladd.f64(double %487, double %494, double %483)
  %496 = load ptr, ptr %4, align 8, !tbaa !5
  %497 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %496, i32 0, i32 38
  %498 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %497, i32 0, i32 4
  %499 = load ptr, ptr %498, align 8, !tbaa !25
  %500 = load i64, ptr %7, align 8, !tbaa !26
  %501 = getelementptr inbounds double, ptr %499, i64 %500
  store double %495, ptr %501, align 8, !tbaa !27
  %502 = load ptr, ptr %4, align 8, !tbaa !5
  %503 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %502, i32 0, i32 48
  %504 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %503, i32 0, i32 0
  store i32 5, ptr %504, align 8, !tbaa !9
  br label %1763

505:                                              ; preds = %96
  %506 = load ptr, ptr %4, align 8, !tbaa !5
  %507 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %506, i32 0, i32 39
  %508 = load double, ptr %507, align 8, !tbaa !42
  %509 = load ptr, ptr %4, align 8, !tbaa !5
  %510 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %509, i32 0, i32 57
  store double %508, ptr %510, align 8, !tbaa !49
  %511 = load double, ptr %9, align 8, !tbaa !27
  %512 = load ptr, ptr %4, align 8, !tbaa !5
  %513 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %512, i32 0, i32 16
  %514 = load double, ptr %513, align 8, !tbaa !38
  %515 = load ptr, ptr %4, align 8, !tbaa !5
  %516 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %515, i32 0, i32 15
  %517 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %516, i32 0, i32 4
  %518 = load ptr, ptr %517, align 8, !tbaa !25
  %519 = load i64, ptr %7, align 8, !tbaa !26
  %520 = getelementptr inbounds double, ptr %518, i64 %519
  %521 = load double, ptr %520, align 8, !tbaa !27
  %522 = call double @llvm.fmuladd.f64(double %514, double %521, double %511)
  %523 = load ptr, ptr %4, align 8, !tbaa !5
  %524 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %523, i32 0, i32 38
  %525 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %524, i32 0, i32 4
  %526 = load ptr, ptr %525, align 8, !tbaa !25
  %527 = load i64, ptr %7, align 8, !tbaa !26
  %528 = getelementptr inbounds double, ptr %526, i64 %527
  store double %522, ptr %528, align 8, !tbaa !27
  %529 = load ptr, ptr %4, align 8, !tbaa !5
  %530 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %529, i32 0, i32 48
  %531 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %530, i32 0, i32 0
  store i32 6, ptr %531, align 8, !tbaa !9
  br label %1763

532:                                              ; preds = %103
  %533 = load ptr, ptr %4, align 8, !tbaa !5
  %534 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %533, i32 0, i32 39
  %535 = load double, ptr %534, align 8, !tbaa !42
  %536 = load ptr, ptr %4, align 8, !tbaa !5
  %537 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %536, i32 0, i32 58
  store double %535, ptr %537, align 8, !tbaa !50
  %538 = load double, ptr %9, align 8, !tbaa !27
  %539 = load ptr, ptr %4, align 8, !tbaa !5
  %540 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %539, i32 0, i32 38
  %541 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %540, i32 0, i32 4
  %542 = load ptr, ptr %541, align 8, !tbaa !25
  %543 = load i64, ptr %7, align 8, !tbaa !26
  %544 = getelementptr inbounds double, ptr %542, i64 %543
  store double %538, ptr %544, align 8, !tbaa !27
  %545 = load ptr, ptr %4, align 8, !tbaa !5
  %546 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %545, i32 0, i32 57
  %547 = load double, ptr %546, align 8, !tbaa !49
  %548 = load ptr, ptr %4, align 8, !tbaa !5
  %549 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %548, i32 0, i32 56
  %550 = load double, ptr %549, align 8, !tbaa !48
  %551 = fsub double %547, %550
  %552 = load ptr, ptr %4, align 8, !tbaa !5
  %553 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %552, i32 0, i32 58
  %554 = load double, ptr %553, align 8, !tbaa !50
  %555 = load ptr, ptr %4, align 8, !tbaa !5
  %556 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %555, i32 0, i32 55
  %557 = load double, ptr %556, align 8, !tbaa !47
  %558 = fsub double %554, %557
  %559 = fneg double %558
  %560 = call double @llvm.fmuladd.f64(double 8.000000e+00, double %551, double %559)
  %561 = load ptr, ptr %4, align 8, !tbaa !5
  %562 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %561, i32 0, i32 16
  %563 = load double, ptr %562, align 8, !tbaa !38
  %564 = fmul double 6.000000e+00, %563
  %565 = load ptr, ptr %4, align 8, !tbaa !5
  %566 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %565, i32 0, i32 15
  %567 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %566, i32 0, i32 4
  %568 = load ptr, ptr %567, align 8, !tbaa !25
  %569 = load i64, ptr %7, align 8, !tbaa !26
  %570 = getelementptr inbounds double, ptr %568, i64 %569
  %571 = load double, ptr %570, align 8, !tbaa !27
  %572 = fmul double %564, %571
  %573 = fdiv double %560, %572
  %574 = load ptr, ptr %4, align 8, !tbaa !5
  %575 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %574, i32 0, i32 40
  %576 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %575, i32 0, i32 4
  %577 = load ptr, ptr %576, align 8, !tbaa !25
  %578 = load i64, ptr %7, align 8, !tbaa !26
  %579 = getelementptr inbounds double, ptr %577, i64 %578
  store double %573, ptr %579, align 8, !tbaa !27
  %580 = load i64, ptr %7, align 8, !tbaa !26
  %581 = add nsw i64 %580, 1
  store i64 %581, ptr %7, align 8, !tbaa !26
  br label %412

582:                                              ; preds = %417
  %583 = load ptr, ptr %4, align 8, !tbaa !5
  %584 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %583, i32 0, i32 54
  %585 = load double, ptr %584, align 8, !tbaa !46
  %586 = load ptr, ptr %4, align 8, !tbaa !5
  %587 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %586, i32 0, i32 39
  store double %585, ptr %587, align 8, !tbaa !42
  %588 = load ptr, ptr %4, align 8, !tbaa !5
  %589 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %588, i32 0, i32 41
  store i8 0, ptr %589, align 8, !tbaa !45
  br label %590

590:                                              ; preds = %582, %397
  %591 = load ptr, ptr %4, align 8, !tbaa !5
  %592 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %591, i32 0, i32 8
  %593 = load i8, ptr %592, align 1, !tbaa !51, !range !52, !noundef !53
  %594 = trunc i8 %593 to i1
  br i1 %594, label %596, label %595

595:                                              ; preds = %590
  br label %607

596:                                              ; preds = %590
  %597 = load ptr, ptr %4, align 8, !tbaa !5
  %598 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %597, ptr noundef %598)
  %599 = load ptr, ptr %4, align 8, !tbaa !5
  %600 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %599, i32 0, i32 44
  store i8 1, ptr %600, align 1, !tbaa !54
  %601 = load ptr, ptr %4, align 8, !tbaa !5
  %602 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %601, i32 0, i32 48
  %603 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %602, i32 0, i32 0
  store i32 7, ptr %603, align 8, !tbaa !9
  br label %1763

604:                                              ; preds = %110
  %605 = load ptr, ptr %4, align 8, !tbaa !5
  %606 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %605, i32 0, i32 44
  store i8 0, ptr %606, align 1, !tbaa !54
  br label %607

607:                                              ; preds = %604, %595
  %608 = load ptr, ptr %4, align 8, !tbaa !5
  %609 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %608, i32 0, i32 39
  %610 = load double, ptr %609, align 8, !tbaa !42
  %611 = load ptr, ptr %4, align 8, !tbaa !5
  %612 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %611, i32 0, i32 34
  %613 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11trimprepareEdPdPNS_8ae_stateE(double noundef %610, ptr noundef %612, ptr noundef %613)
  %614 = load ptr, ptr %4, align 8, !tbaa !5
  %615 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %614, i32 0, i32 21
  %616 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %615, i32 0, i32 4
  %617 = load ptr, ptr %616, align 8, !tbaa !25
  %618 = getelementptr inbounds double, ptr %617, i64 0
  %619 = load ptr, ptr %4, align 8, !tbaa !5
  %620 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %619, i32 0, i32 40
  %621 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %620, i32 0, i32 4
  %622 = load ptr, ptr %621, align 8, !tbaa !25
  %623 = getelementptr inbounds double, ptr %622, i64 0
  %624 = load i64, ptr %6, align 8, !tbaa !26
  %625 = sub nsw i64 %624, 1
  %626 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %625)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %618, i64 noundef 1, ptr noundef %623, i64 noundef 1, i64 noundef %626)
  %627 = load ptr, ptr %4, align 8, !tbaa !5
  %628 = load ptr, ptr %4, align 8, !tbaa !5
  %629 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %628, i32 0, i32 21
  %630 = load ptr, ptr %4, align 8, !tbaa !5
  %631 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %630, i32 0, i32 61
  %632 = load ptr, ptr %4, align 8, !tbaa !5
  %633 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %632, i32 0, i32 62
  %634 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL28mincg_preconditionedmultiplyEPNS_10mincgstateEPNS_9ae_vectorES3_S3_PNS_8ae_stateE(ptr noundef %627, ptr noundef %629, ptr noundef %631, ptr noundef %633, ptr noundef %634)
  %635 = load ptr, ptr %4, align 8, !tbaa !5
  %636 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %635, i32 0, i32 7
  %637 = load i8, ptr %636, align 8, !tbaa !55, !range !52, !noundef !53
  %638 = trunc i8 %637 to i1
  br i1 %638, label %640, label %639

639:                                              ; preds = %607
  br label %651

640:                                              ; preds = %607
  %641 = load ptr, ptr %4, align 8, !tbaa !5
  %642 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %641, ptr noundef %642)
  %643 = load ptr, ptr %4, align 8, !tbaa !5
  %644 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %643, i32 0, i32 43
  store i8 1, ptr %644, align 2, !tbaa !56
  %645 = load ptr, ptr %4, align 8, !tbaa !5
  %646 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %645, i32 0, i32 48
  %647 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %646, i32 0, i32 0
  store i32 8, ptr %647, align 8, !tbaa !9
  br label %1763

648:                                              ; preds = %117
  %649 = load ptr, ptr %4, align 8, !tbaa !5
  %650 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %649, i32 0, i32 43
  store i8 0, ptr %650, align 2, !tbaa !56
  br label %651

651:                                              ; preds = %648, %639
  %652 = load ptr, ptr %4, align 8, !tbaa !5
  %653 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %652, i32 0, i32 33
  %654 = load i8, ptr %653, align 1, !tbaa !29, !range !52, !noundef !53
  %655 = trunc i8 %654 to i1
  br i1 %655, label %661, label %656

656:                                              ; preds = %651
  %657 = load ptr, ptr %4, align 8, !tbaa !5
  %658 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %657, i32 0, i32 47
  %659 = load i8, ptr %658, align 2, !tbaa !30, !range !52, !noundef !53
  %660 = trunc i8 %659 to i1
  br i1 %660, label %661, label %679

661:                                              ; preds = %656, %651
  %662 = load ptr, ptr %4, align 8, !tbaa !5
  %663 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %662, i32 0, i32 22
  %664 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %663, i32 0, i32 4
  %665 = load ptr, ptr %664, align 8, !tbaa !25
  %666 = getelementptr inbounds double, ptr %665, i64 0
  %667 = load ptr, ptr %4, align 8, !tbaa !5
  %668 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %667, i32 0, i32 20
  %669 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %668, i32 0, i32 4
  %670 = load ptr, ptr %669, align 8, !tbaa !25
  %671 = getelementptr inbounds double, ptr %670, i64 0
  %672 = load i64, ptr %6, align 8, !tbaa !26
  %673 = sub nsw i64 %672, 1
  %674 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %673)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %666, i64 noundef 1, ptr noundef %671, i64 noundef 1, i64 noundef %674)
  %675 = load ptr, ptr %4, align 8, !tbaa !5
  %676 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %675, i32 0, i32 51
  store i64 8, ptr %676, align 8, !tbaa !31
  store i8 0, ptr %11, align 1, !tbaa !57
  %677 = load i8, ptr %11, align 1, !tbaa !57, !range !52, !noundef !53
  %678 = trunc i8 %677 to i1
  store i1 %678, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1801

679:                                              ; preds = %656
  store double 0.000000e+00, ptr %9, align 8, !tbaa !27
  store i64 0, ptr %7, align 8, !tbaa !26
  br label %680

680:                                              ; preds = %705, %679
  %681 = load i64, ptr %7, align 8, !tbaa !26
  %682 = load i64, ptr %6, align 8, !tbaa !26
  %683 = sub nsw i64 %682, 1
  %684 = icmp sle i64 %681, %683
  br i1 %684, label %685, label %708

685:                                              ; preds = %680
  %686 = load double, ptr %9, align 8, !tbaa !27
  %687 = load ptr, ptr %4, align 8, !tbaa !5
  %688 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %687, i32 0, i32 40
  %689 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %688, i32 0, i32 4
  %690 = load ptr, ptr %689, align 8, !tbaa !25
  %691 = load i64, ptr %7, align 8, !tbaa !26
  %692 = getelementptr inbounds double, ptr %690, i64 %691
  %693 = load double, ptr %692, align 8, !tbaa !27
  %694 = load ptr, ptr %4, align 8, !tbaa !5
  %695 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %694, i32 0, i32 15
  %696 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %695, i32 0, i32 4
  %697 = load ptr, ptr %696, align 8, !tbaa !25
  %698 = load i64, ptr %7, align 8, !tbaa !26
  %699 = getelementptr inbounds double, ptr %697, i64 %698
  %700 = load double, ptr %699, align 8, !tbaa !27
  %701 = fmul double %693, %700
  %702 = load ptr, ptr %5, align 8, !tbaa !5
  %703 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %701, ptr noundef %702)
  %704 = fadd double %686, %703
  store double %704, ptr %9, align 8, !tbaa !27
  br label %705

705:                                              ; preds = %685
  %706 = load i64, ptr %7, align 8, !tbaa !26
  %707 = add nsw i64 %706, 1
  store i64 %707, ptr %7, align 8, !tbaa !26
  br label %680, !llvm.loop !58

708:                                              ; preds = %680
  %709 = load double, ptr %9, align 8, !tbaa !27
  %710 = load ptr, ptr %5, align 8, !tbaa !5
  %711 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %709, ptr noundef %710)
  %712 = load ptr, ptr %4, align 8, !tbaa !5
  %713 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %712, i32 0, i32 1
  %714 = load double, ptr %713, align 8, !tbaa !59
  %715 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %711, double noundef %714)
  br i1 %715, label %716, label %734

716:                                              ; preds = %708
  %717 = load ptr, ptr %4, align 8, !tbaa !5
  %718 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %717, i32 0, i32 22
  %719 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %718, i32 0, i32 4
  %720 = load ptr, ptr %719, align 8, !tbaa !25
  %721 = getelementptr inbounds double, ptr %720, i64 0
  %722 = load ptr, ptr %4, align 8, !tbaa !5
  %723 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %722, i32 0, i32 20
  %724 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %723, i32 0, i32 4
  %725 = load ptr, ptr %724, align 8, !tbaa !25
  %726 = getelementptr inbounds double, ptr %725, i64 0
  %727 = load i64, ptr %6, align 8, !tbaa !26
  %728 = sub nsw i64 %727, 1
  %729 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %728)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %721, i64 noundef 1, ptr noundef %726, i64 noundef 1, i64 noundef %729)
  %730 = load ptr, ptr %4, align 8, !tbaa !5
  %731 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %730, i32 0, i32 51
  store i64 4, ptr %731, align 8, !tbaa !31
  store i8 0, ptr %11, align 1, !tbaa !57
  %732 = load i8, ptr %11, align 1, !tbaa !57, !range !52, !noundef !53
  %733 = trunc i8 %732 to i1
  store i1 %733, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1801

734:                                              ; preds = %708
  %735 = load ptr, ptr %4, align 8, !tbaa !5
  %736 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %735, i32 0, i32 50
  store i64 1, ptr %736, align 8, !tbaa !33
  %737 = load ptr, ptr %4, align 8, !tbaa !5
  %738 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %737, i32 0, i32 19
  store i64 0, ptr %738, align 8, !tbaa !60
  %739 = load ptr, ptr %4, align 8, !tbaa !5
  %740 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %739, i32 0, i32 39
  %741 = load double, ptr %740, align 8, !tbaa !42
  %742 = load ptr, ptr %4, align 8, !tbaa !5
  %743 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %742, i32 0, i32 25
  store double %741, ptr %743, align 8, !tbaa !61
  %744 = load ptr, ptr %4, align 8, !tbaa !5
  %745 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %744, i32 0, i32 10
  %746 = load i64, ptr %745, align 8, !tbaa !62
  %747 = icmp eq i64 %746, 2
  br i1 %747, label %753, label %748

748:                                              ; preds = %734
  %749 = load ptr, ptr %4, align 8, !tbaa !5
  %750 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %749, i32 0, i32 10
  %751 = load i64, ptr %750, align 8, !tbaa !62
  %752 = icmp eq i64 %751, 3
  br i1 %752, label %753, label %773

753:                                              ; preds = %748, %734
  %754 = load ptr, ptr %4, align 8, !tbaa !5
  %755 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %754, i32 0, i32 21
  %756 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %755, i32 0, i32 4
  %757 = load ptr, ptr %756, align 8, !tbaa !25
  %758 = getelementptr inbounds double, ptr %757, i64 0
  %759 = load ptr, ptr %4, align 8, !tbaa !5
  %760 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %759, i32 0, i32 21
  %761 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %760, i32 0, i32 4
  %762 = load ptr, ptr %761, align 8, !tbaa !25
  %763 = getelementptr inbounds double, ptr %762, i64 0
  %764 = load i64, ptr %6, align 8, !tbaa !26
  %765 = sub nsw i64 %764, 1
  %766 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %765)
  %767 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %758, i64 noundef 1, ptr noundef %763, i64 noundef 1, i64 noundef %766)
  store double %767, ptr %9, align 8, !tbaa !27
  %768 = load double, ptr %9, align 8, !tbaa !27
  %769 = load ptr, ptr %5, align 8, !tbaa !5
  %770 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %768, ptr noundef %769)
  %771 = load ptr, ptr %4, align 8, !tbaa !5
  %772 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %771, i32 0, i32 29
  store double %770, ptr %772, align 8, !tbaa !63
  br label %788

773:                                              ; preds = %748
  %774 = load ptr, ptr %4, align 8, !tbaa !5
  %775 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %774, i32 0, i32 6
  %776 = load double, ptr %775, align 8, !tbaa !64
  %777 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %776, double noundef 0.000000e+00)
  br i1 %777, label %778, label %784

778:                                              ; preds = %773
  %779 = load ptr, ptr %4, align 8, !tbaa !5
  %780 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %779, i32 0, i32 6
  %781 = load double, ptr %780, align 8, !tbaa !64
  %782 = load ptr, ptr %4, align 8, !tbaa !5
  %783 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %782, i32 0, i32 29
  store double %781, ptr %783, align 8, !tbaa !63
  br label %787

784:                                              ; preds = %773
  %785 = load ptr, ptr %4, align 8, !tbaa !5
  %786 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %785, i32 0, i32 29
  store double 1.000000e+00, ptr %786, align 8, !tbaa !63
  br label %787

787:                                              ; preds = %784, %778
  br label %788

788:                                              ; preds = %787, %753
  %789 = load i64, ptr @_ZN11alglib_implL20mincg_rscountdownlenE, align 8, !tbaa !26
  %790 = load ptr, ptr %4, align 8, !tbaa !5
  %791 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %790, i32 0, i32 36
  store i64 %789, ptr %791, align 8, !tbaa !65
  br label %792

792:                                              ; preds = %1722, %788
  %793 = load ptr, ptr %4, align 8, !tbaa !5
  %794 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %793, i32 0, i32 32
  store i8 0, ptr %794, align 8, !tbaa !66
  %795 = load ptr, ptr %4, align 8, !tbaa !5
  %796 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %795, i32 0, i32 33
  store i8 0, ptr %796, align 1, !tbaa !29
  %797 = load ptr, ptr %4, align 8, !tbaa !5
  %798 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %797, i32 0, i32 28
  %799 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %798, i32 0, i32 4
  %800 = load ptr, ptr %799, align 8, !tbaa !25
  %801 = getelementptr inbounds double, ptr %800, i64 0
  %802 = load ptr, ptr %4, align 8, !tbaa !5
  %803 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %802, i32 0, i32 40
  %804 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %803, i32 0, i32 4
  %805 = load ptr, ptr %804, align 8, !tbaa !25
  %806 = getelementptr inbounds double, ptr %805, i64 0
  %807 = load i64, ptr %6, align 8, !tbaa !26
  %808 = sub nsw i64 %807, 1
  %809 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %808)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %801, i64 noundef 1, ptr noundef %806, i64 noundef 1, i64 noundef %809)
  %810 = load ptr, ptr %4, align 8, !tbaa !5
  %811 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %810, i32 0, i32 24
  %812 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %811, i32 0, i32 4
  %813 = load ptr, ptr %812, align 8, !tbaa !25
  %814 = getelementptr inbounds double, ptr %813, i64 0
  %815 = load ptr, ptr %4, align 8, !tbaa !5
  %816 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %815, i32 0, i32 21
  %817 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %816, i32 0, i32 4
  %818 = load ptr, ptr %817, align 8, !tbaa !25
  %819 = getelementptr inbounds double, ptr %818, i64 0
  %820 = load i64, ptr %6, align 8, !tbaa !26
  %821 = sub nsw i64 %820, 1
  %822 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %821)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %814, i64 noundef 1, ptr noundef %819, i64 noundef 1, i64 noundef %822)
  %823 = load ptr, ptr %4, align 8, !tbaa !5
  %824 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %823, i32 0, i32 38
  %825 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %824, i32 0, i32 4
  %826 = load ptr, ptr %825, align 8, !tbaa !25
  %827 = getelementptr inbounds double, ptr %826, i64 0
  %828 = load ptr, ptr %4, align 8, !tbaa !5
  %829 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %828, i32 0, i32 20
  %830 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %829, i32 0, i32 4
  %831 = load ptr, ptr %830, align 8, !tbaa !25
  %832 = getelementptr inbounds double, ptr %831, i64 0
  %833 = load i64, ptr %6, align 8, !tbaa !26
  %834 = sub nsw i64 %833, 1
  %835 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %834)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %827, i64 noundef 1, ptr noundef %832, i64 noundef 1, i64 noundef %835)
  %836 = load ptr, ptr %4, align 8, !tbaa !5
  %837 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %836, i32 0, i32 18
  store i64 0, ptr %837, align 8, !tbaa !67
  %838 = load ptr, ptr %4, align 8, !tbaa !5
  %839 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %838, i32 0, i32 26
  store double 1.000000e+00, ptr %839, align 8, !tbaa !68
  %840 = load ptr, ptr %4, align 8, !tbaa !5
  %841 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %840, i32 0, i32 24
  %842 = load ptr, ptr %4, align 8, !tbaa !5
  %843 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %842, i32 0, i32 26
  %844 = load i64, ptr %6, align 8, !tbaa !26
  %845 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl16linminnormalizedEPNS_9ae_vectorEPdlPNS_8ae_stateE(ptr noundef %841, ptr noundef %843, i64 noundef %844, ptr noundef %845)
  %846 = load ptr, ptr %4, align 8, !tbaa !5
  %847 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %846, i32 0, i32 29
  %848 = load double, ptr %847, align 8, !tbaa !63
  %849 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %848, double noundef 0.000000e+00)
  br i1 %849, label %850, label %856

850:                                              ; preds = %792
  %851 = load ptr, ptr %4, align 8, !tbaa !5
  %852 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %851, i32 0, i32 29
  %853 = load double, ptr %852, align 8, !tbaa !63
  %854 = load ptr, ptr %4, align 8, !tbaa !5
  %855 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %854, i32 0, i32 26
  store double %853, ptr %855, align 8, !tbaa !68
  br label %856

856:                                              ; preds = %850, %792
  %857 = load ptr, ptr %4, align 8, !tbaa !5
  %858 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %857, i32 0, i32 5
  %859 = load double, ptr %858, align 8, !tbaa !69
  %860 = load ptr, ptr %4, align 8, !tbaa !5
  %861 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %860, i32 0, i32 27
  store double %859, ptr %861, align 8, !tbaa !70
  %862 = load ptr, ptr %4, align 8, !tbaa !5
  %863 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %862, i32 0, i32 8
  %864 = load i8, ptr %863, align 1, !tbaa !51, !range !52, !noundef !53
  %865 = trunc i8 %864 to i1
  br i1 %865, label %867, label %866

866:                                              ; preds = %856
  br label %878

867:                                              ; preds = %856
  %868 = load ptr, ptr %4, align 8, !tbaa !5
  %869 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %868, ptr noundef %869)
  %870 = load ptr, ptr %4, align 8, !tbaa !5
  %871 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %870, i32 0, i32 45
  store i8 1, ptr %871, align 4, !tbaa !71
  %872 = load ptr, ptr %4, align 8, !tbaa !5
  %873 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %872, i32 0, i32 48
  %874 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %873, i32 0, i32 0
  store i32 9, ptr %874, align 8, !tbaa !9
  br label %1763

875:                                              ; preds = %124
  %876 = load ptr, ptr %4, align 8, !tbaa !5
  %877 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %876, i32 0, i32 45
  store i8 0, ptr %877, align 4, !tbaa !71
  br label %878

878:                                              ; preds = %875, %866
  %879 = load ptr, ptr %4, align 8, !tbaa !5
  %880 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %879, i32 0, i32 33
  %881 = load i8, ptr %880, align 1, !tbaa !29, !range !52, !noundef !53
  %882 = trunc i8 %881 to i1
  br i1 %882, label %883, label %901

883:                                              ; preds = %878
  %884 = load ptr, ptr %4, align 8, !tbaa !5
  %885 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %884, i32 0, i32 22
  %886 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %885, i32 0, i32 4
  %887 = load ptr, ptr %886, align 8, !tbaa !25
  %888 = getelementptr inbounds double, ptr %887, i64 0
  %889 = load ptr, ptr %4, align 8, !tbaa !5
  %890 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %889, i32 0, i32 38
  %891 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %890, i32 0, i32 4
  %892 = load ptr, ptr %891, align 8, !tbaa !25
  %893 = getelementptr inbounds double, ptr %892, i64 0
  %894 = load i64, ptr %6, align 8, !tbaa !26
  %895 = sub nsw i64 %894, 1
  %896 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %895)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %888, i64 noundef 1, ptr noundef %893, i64 noundef 1, i64 noundef %896)
  %897 = load ptr, ptr %4, align 8, !tbaa !5
  %898 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %897, i32 0, i32 51
  store i64 8, ptr %898, align 8, !tbaa !31
  store i8 0, ptr %11, align 1, !tbaa !57
  %899 = load i8, ptr %11, align 1, !tbaa !57, !range !52, !noundef !53
  %900 = trunc i8 %899 to i1
  store i1 %900, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1801

901:                                              ; preds = %878
  %902 = load ptr, ptr %4, align 8, !tbaa !5
  %903 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %902, i32 0, i32 66
  %904 = load ptr, ptr %4, align 8, !tbaa !5
  %905 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %904, i32 0, i32 15
  %906 = load ptr, ptr %4, align 8, !tbaa !5
  %907 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %906, i32 0, i32 63
  %908 = load ptr, ptr %4, align 8, !tbaa !5
  %909 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %908, i32 0, i32 38
  %910 = load ptr, ptr %4, align 8, !tbaa !5
  %911 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %910, i32 0, i32 39
  %912 = load double, ptr %911, align 8, !tbaa !42
  %913 = load ptr, ptr %4, align 8, !tbaa !5
  %914 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %913, i32 0, i32 40
  %915 = load ptr, ptr %4, align 8, !tbaa !5
  %916 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %915, i32 0, i32 49
  %917 = load i64, ptr %916, align 8, !tbaa !32
  %918 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl34smoothnessmonitorstartlinesearch1uEPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_dS4_llPNS_8ae_stateE(ptr noundef %903, ptr noundef %905, ptr noundef %907, ptr noundef %909, double noundef %912, ptr noundef %914, i64 noundef %917, i64 noundef -1, ptr noundef %918)
  %919 = load i64, ptr %6, align 8, !tbaa !26
  %920 = load ptr, ptr %4, align 8, !tbaa !5
  %921 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %920, i32 0, i32 38
  %922 = load ptr, ptr %4, align 8, !tbaa !5
  %923 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %922, i32 0, i32 39
  %924 = load ptr, ptr %4, align 8, !tbaa !5
  %925 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %924, i32 0, i32 40
  %926 = load ptr, ptr %4, align 8, !tbaa !5
  %927 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %926, i32 0, i32 24
  %928 = load ptr, ptr %4, align 8, !tbaa !5
  %929 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %928, i32 0, i32 26
  %930 = load ptr, ptr %4, align 8, !tbaa !5
  %931 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %930, i32 0, i32 27
  %932 = load double, ptr %931, align 8, !tbaa !70
  %933 = load double, ptr @_ZN11alglib_implL10mincg_gtolE, align 8, !tbaa !27
  %934 = load ptr, ptr %4, align 8, !tbaa !5
  %935 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %934, i32 0, i32 31
  %936 = load ptr, ptr %4, align 8, !tbaa !5
  %937 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %936, i32 0, i32 17
  %938 = load ptr, ptr %4, align 8, !tbaa !5
  %939 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %938, i32 0, i32 61
  %940 = load ptr, ptr %4, align 8, !tbaa !5
  %941 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %940, i32 0, i32 53
  %942 = load ptr, ptr %4, align 8, !tbaa !5
  %943 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %942, i32 0, i32 18
  %944 = 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 %919, ptr noundef %921, ptr noundef %923, ptr noundef %925, ptr noundef %927, ptr noundef %929, double noundef %932, double noundef %933, ptr noundef %935, ptr noundef %937, ptr noundef %939, ptr noundef %941, ptr noundef %943, ptr noundef %944)
  br label %945

945:                                              ; preds = %1158, %901
  %946 = load ptr, ptr %4, align 8, !tbaa !5
  %947 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %946, i32 0, i32 18
  %948 = load i64, ptr %947, align 8, !tbaa !67
  %949 = icmp eq i64 %948, 0
  br i1 %949, label %950, label %951

950:                                              ; preds = %945
  br label %1213

951:                                              ; preds = %945
  %952 = load ptr, ptr %4, align 8, !tbaa !5
  %953 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %952, ptr noundef %953)
  %954 = load ptr, ptr %4, align 8, !tbaa !5
  %955 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %954, i32 0, i32 16
  %956 = load double, ptr %955, align 8, !tbaa !38
  %957 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %956, double noundef 0.000000e+00)
  br i1 %957, label %958, label %959

958:                                              ; preds = %951
  br label %968

959:                                              ; preds = %951
  %960 = load ptr, ptr %4, align 8, !tbaa !5
  %961 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %960, i32 0, i32 42
  store i8 1, ptr %961, align 1, !tbaa !41
  %962 = load ptr, ptr %4, align 8, !tbaa !5
  %963 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %962, i32 0, i32 48
  %964 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %963, i32 0, i32 0
  store i32 10, ptr %964, align 8, !tbaa !9
  br label %1763

965:                                              ; preds = %131
  %966 = load ptr, ptr %4, align 8, !tbaa !5
  %967 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %966, i32 0, i32 42
  store i8 0, ptr %967, align 1, !tbaa !41
  br label %1158

968:                                              ; preds = %958
  %969 = load ptr, ptr %4, align 8, !tbaa !5
  %970 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %969, i32 0, i32 41
  store i8 1, ptr %970, align 8, !tbaa !45
  %971 = load ptr, ptr %4, align 8, !tbaa !5
  %972 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %971, i32 0, i32 48
  %973 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %972, i32 0, i32 0
  store i32 11, ptr %973, align 8, !tbaa !9
  br label %1763

974:                                              ; preds = %138
  %975 = load ptr, ptr %4, align 8, !tbaa !5
  %976 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %975, i32 0, i32 39
  %977 = load double, ptr %976, align 8, !tbaa !42
  %978 = load ptr, ptr %4, align 8, !tbaa !5
  %979 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %978, i32 0, i32 54
  store double %977, ptr %979, align 8, !tbaa !46
  store i64 0, ptr %7, align 8, !tbaa !26
  br label %980

980:                                              ; preds = %1100, %974
  %981 = load i64, ptr %7, align 8, !tbaa !26
  %982 = load i64, ptr %6, align 8, !tbaa !26
  %983 = sub nsw i64 %982, 1
  %984 = icmp sgt i64 %981, %983
  br i1 %984, label %985, label %986

985:                                              ; preds = %980
  br label %1150

986:                                              ; preds = %980
  %987 = load ptr, ptr %4, align 8, !tbaa !5
  %988 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %987, i32 0, i32 38
  %989 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %988, i32 0, i32 4
  %990 = load ptr, ptr %989, align 8, !tbaa !25
  %991 = load i64, ptr %7, align 8, !tbaa !26
  %992 = getelementptr inbounds double, ptr %990, i64 %991
  %993 = load double, ptr %992, align 8, !tbaa !27
  store double %993, ptr %9, align 8, !tbaa !27
  %994 = load double, ptr %9, align 8, !tbaa !27
  %995 = load ptr, ptr %4, align 8, !tbaa !5
  %996 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %995, i32 0, i32 16
  %997 = load double, ptr %996, align 8, !tbaa !38
  %998 = load ptr, ptr %4, align 8, !tbaa !5
  %999 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %998, i32 0, i32 15
  %1000 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %999, i32 0, i32 4
  %1001 = load ptr, ptr %1000, align 8, !tbaa !25
  %1002 = load i64, ptr %7, align 8, !tbaa !26
  %1003 = getelementptr inbounds double, ptr %1001, i64 %1002
  %1004 = load double, ptr %1003, align 8, !tbaa !27
  %1005 = fneg double %997
  %1006 = call double @llvm.fmuladd.f64(double %1005, double %1004, double %994)
  %1007 = load ptr, ptr %4, align 8, !tbaa !5
  %1008 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1007, i32 0, i32 38
  %1009 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1008, i32 0, i32 4
  %1010 = load ptr, ptr %1009, align 8, !tbaa !25
  %1011 = load i64, ptr %7, align 8, !tbaa !26
  %1012 = getelementptr inbounds double, ptr %1010, i64 %1011
  store double %1006, ptr %1012, align 8, !tbaa !27
  %1013 = load ptr, ptr %4, align 8, !tbaa !5
  %1014 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1013, i32 0, i32 48
  %1015 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1014, i32 0, i32 0
  store i32 12, ptr %1015, align 8, !tbaa !9
  br label %1763

1016:                                             ; preds = %145
  %1017 = load ptr, ptr %4, align 8, !tbaa !5
  %1018 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1017, i32 0, i32 39
  %1019 = load double, ptr %1018, align 8, !tbaa !42
  %1020 = load ptr, ptr %4, align 8, !tbaa !5
  %1021 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1020, i32 0, i32 55
  store double %1019, ptr %1021, align 8, !tbaa !47
  %1022 = load double, ptr %9, align 8, !tbaa !27
  %1023 = load ptr, ptr %4, align 8, !tbaa !5
  %1024 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1023, i32 0, i32 16
  %1025 = load double, ptr %1024, align 8, !tbaa !38
  %1026 = fmul double 5.000000e-01, %1025
  %1027 = load ptr, ptr %4, align 8, !tbaa !5
  %1028 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1027, i32 0, i32 15
  %1029 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1028, i32 0, i32 4
  %1030 = load ptr, ptr %1029, align 8, !tbaa !25
  %1031 = load i64, ptr %7, align 8, !tbaa !26
  %1032 = getelementptr inbounds double, ptr %1030, i64 %1031
  %1033 = load double, ptr %1032, align 8, !tbaa !27
  %1034 = fneg double %1026
  %1035 = call double @llvm.fmuladd.f64(double %1034, double %1033, double %1022)
  %1036 = load ptr, ptr %4, align 8, !tbaa !5
  %1037 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1036, i32 0, i32 38
  %1038 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1037, i32 0, i32 4
  %1039 = load ptr, ptr %1038, align 8, !tbaa !25
  %1040 = load i64, ptr %7, align 8, !tbaa !26
  %1041 = getelementptr inbounds double, ptr %1039, i64 %1040
  store double %1035, ptr %1041, align 8, !tbaa !27
  %1042 = load ptr, ptr %4, align 8, !tbaa !5
  %1043 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1042, i32 0, i32 48
  %1044 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1043, i32 0, i32 0
  store i32 13, ptr %1044, align 8, !tbaa !9
  br label %1763

1045:                                             ; preds = %152
  %1046 = load ptr, ptr %4, align 8, !tbaa !5
  %1047 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1046, i32 0, i32 39
  %1048 = load double, ptr %1047, align 8, !tbaa !42
  %1049 = load ptr, ptr %4, align 8, !tbaa !5
  %1050 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1049, i32 0, i32 56
  store double %1048, ptr %1050, align 8, !tbaa !48
  %1051 = load double, ptr %9, align 8, !tbaa !27
  %1052 = load ptr, ptr %4, align 8, !tbaa !5
  %1053 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1052, i32 0, i32 16
  %1054 = load double, ptr %1053, align 8, !tbaa !38
  %1055 = fmul double 5.000000e-01, %1054
  %1056 = load ptr, ptr %4, align 8, !tbaa !5
  %1057 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1056, i32 0, i32 15
  %1058 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1057, i32 0, i32 4
  %1059 = load ptr, ptr %1058, align 8, !tbaa !25
  %1060 = load i64, ptr %7, align 8, !tbaa !26
  %1061 = getelementptr inbounds double, ptr %1059, i64 %1060
  %1062 = load double, ptr %1061, align 8, !tbaa !27
  %1063 = call double @llvm.fmuladd.f64(double %1055, double %1062, double %1051)
  %1064 = load ptr, ptr %4, align 8, !tbaa !5
  %1065 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1064, i32 0, i32 38
  %1066 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1065, i32 0, i32 4
  %1067 = load ptr, ptr %1066, align 8, !tbaa !25
  %1068 = load i64, ptr %7, align 8, !tbaa !26
  %1069 = getelementptr inbounds double, ptr %1067, i64 %1068
  store double %1063, ptr %1069, align 8, !tbaa !27
  %1070 = load ptr, ptr %4, align 8, !tbaa !5
  %1071 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1070, i32 0, i32 48
  %1072 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1071, i32 0, i32 0
  store i32 14, ptr %1072, align 8, !tbaa !9
  br label %1763

1073:                                             ; preds = %159
  %1074 = load ptr, ptr %4, align 8, !tbaa !5
  %1075 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1074, i32 0, i32 39
  %1076 = load double, ptr %1075, align 8, !tbaa !42
  %1077 = load ptr, ptr %4, align 8, !tbaa !5
  %1078 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1077, i32 0, i32 57
  store double %1076, ptr %1078, align 8, !tbaa !49
  %1079 = load double, ptr %9, align 8, !tbaa !27
  %1080 = load ptr, ptr %4, align 8, !tbaa !5
  %1081 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1080, i32 0, i32 16
  %1082 = load double, ptr %1081, align 8, !tbaa !38
  %1083 = load ptr, ptr %4, align 8, !tbaa !5
  %1084 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1083, i32 0, i32 15
  %1085 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1084, i32 0, i32 4
  %1086 = load ptr, ptr %1085, align 8, !tbaa !25
  %1087 = load i64, ptr %7, align 8, !tbaa !26
  %1088 = getelementptr inbounds double, ptr %1086, i64 %1087
  %1089 = load double, ptr %1088, align 8, !tbaa !27
  %1090 = call double @llvm.fmuladd.f64(double %1082, double %1089, double %1079)
  %1091 = load ptr, ptr %4, align 8, !tbaa !5
  %1092 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1091, i32 0, i32 38
  %1093 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1092, i32 0, i32 4
  %1094 = load ptr, ptr %1093, align 8, !tbaa !25
  %1095 = load i64, ptr %7, align 8, !tbaa !26
  %1096 = getelementptr inbounds double, ptr %1094, i64 %1095
  store double %1090, ptr %1096, align 8, !tbaa !27
  %1097 = load ptr, ptr %4, align 8, !tbaa !5
  %1098 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1097, i32 0, i32 48
  %1099 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1098, i32 0, i32 0
  store i32 15, ptr %1099, align 8, !tbaa !9
  br label %1763

1100:                                             ; preds = %166
  %1101 = load ptr, ptr %4, align 8, !tbaa !5
  %1102 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1101, i32 0, i32 39
  %1103 = load double, ptr %1102, align 8, !tbaa !42
  %1104 = load ptr, ptr %4, align 8, !tbaa !5
  %1105 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1104, i32 0, i32 58
  store double %1103, ptr %1105, align 8, !tbaa !50
  %1106 = load double, ptr %9, align 8, !tbaa !27
  %1107 = load ptr, ptr %4, align 8, !tbaa !5
  %1108 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1107, i32 0, i32 38
  %1109 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1108, i32 0, i32 4
  %1110 = load ptr, ptr %1109, align 8, !tbaa !25
  %1111 = load i64, ptr %7, align 8, !tbaa !26
  %1112 = getelementptr inbounds double, ptr %1110, i64 %1111
  store double %1106, ptr %1112, align 8, !tbaa !27
  %1113 = load ptr, ptr %4, align 8, !tbaa !5
  %1114 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1113, i32 0, i32 57
  %1115 = load double, ptr %1114, align 8, !tbaa !49
  %1116 = load ptr, ptr %4, align 8, !tbaa !5
  %1117 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1116, i32 0, i32 56
  %1118 = load double, ptr %1117, align 8, !tbaa !48
  %1119 = fsub double %1115, %1118
  %1120 = load ptr, ptr %4, align 8, !tbaa !5
  %1121 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1120, i32 0, i32 58
  %1122 = load double, ptr %1121, align 8, !tbaa !50
  %1123 = load ptr, ptr %4, align 8, !tbaa !5
  %1124 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1123, i32 0, i32 55
  %1125 = load double, ptr %1124, align 8, !tbaa !47
  %1126 = fsub double %1122, %1125
  %1127 = fneg double %1126
  %1128 = call double @llvm.fmuladd.f64(double 8.000000e+00, double %1119, double %1127)
  %1129 = load ptr, ptr %4, align 8, !tbaa !5
  %1130 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1129, i32 0, i32 16
  %1131 = load double, ptr %1130, align 8, !tbaa !38
  %1132 = fmul double 6.000000e+00, %1131
  %1133 = load ptr, ptr %4, align 8, !tbaa !5
  %1134 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1133, i32 0, i32 15
  %1135 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1134, i32 0, i32 4
  %1136 = load ptr, ptr %1135, align 8, !tbaa !25
  %1137 = load i64, ptr %7, align 8, !tbaa !26
  %1138 = getelementptr inbounds double, ptr %1136, i64 %1137
  %1139 = load double, ptr %1138, align 8, !tbaa !27
  %1140 = fmul double %1132, %1139
  %1141 = fdiv double %1128, %1140
  %1142 = load ptr, ptr %4, align 8, !tbaa !5
  %1143 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1142, i32 0, i32 40
  %1144 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1143, i32 0, i32 4
  %1145 = load ptr, ptr %1144, align 8, !tbaa !25
  %1146 = load i64, ptr %7, align 8, !tbaa !26
  %1147 = getelementptr inbounds double, ptr %1145, i64 %1146
  store double %1141, ptr %1147, align 8, !tbaa !27
  %1148 = load i64, ptr %7, align 8, !tbaa !26
  %1149 = add nsw i64 %1148, 1
  store i64 %1149, ptr %7, align 8, !tbaa !26
  br label %980

1150:                                             ; preds = %985
  %1151 = load ptr, ptr %4, align 8, !tbaa !5
  %1152 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1151, i32 0, i32 54
  %1153 = load double, ptr %1152, align 8, !tbaa !46
  %1154 = load ptr, ptr %4, align 8, !tbaa !5
  %1155 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1154, i32 0, i32 39
  store double %1153, ptr %1155, align 8, !tbaa !42
  %1156 = load ptr, ptr %4, align 8, !tbaa !5
  %1157 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1156, i32 0, i32 41
  store i8 0, ptr %1157, align 8, !tbaa !45
  br label %1158

1158:                                             ; preds = %1150, %965
  %1159 = load ptr, ptr %4, align 8, !tbaa !5
  %1160 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1159, i32 0, i32 66
  %1161 = load ptr, ptr %4, align 8, !tbaa !5
  %1162 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1161, i32 0, i32 15
  %1163 = load ptr, ptr %4, align 8, !tbaa !5
  %1164 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1163, i32 0, i32 63
  %1165 = load ptr, ptr %4, align 8, !tbaa !5
  %1166 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1165, i32 0, i32 24
  %1167 = load ptr, ptr %4, align 8, !tbaa !5
  %1168 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1167, i32 0, i32 26
  %1169 = load double, ptr %1168, align 8, !tbaa !68
  %1170 = load ptr, ptr %4, align 8, !tbaa !5
  %1171 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1170, i32 0, i32 38
  %1172 = load ptr, ptr %4, align 8, !tbaa !5
  %1173 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1172, i32 0, i32 39
  %1174 = load double, ptr %1173, align 8, !tbaa !42
  %1175 = load ptr, ptr %4, align 8, !tbaa !5
  %1176 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1175, i32 0, i32 40
  %1177 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl31smoothnessmonitorenqueuepoint1uEPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_dS4_dS4_PNS_8ae_stateE(ptr noundef %1160, ptr noundef %1162, ptr noundef %1164, ptr noundef %1166, double noundef %1169, ptr noundef %1171, double noundef %1174, ptr noundef %1176, ptr noundef %1177)
  %1178 = load ptr, ptr %4, align 8, !tbaa !5
  %1179 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1178, i32 0, i32 39
  %1180 = load ptr, ptr %4, align 8, !tbaa !5
  %1181 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1180, i32 0, i32 40
  %1182 = load i64, ptr %6, align 8, !tbaa !26
  %1183 = load ptr, ptr %4, align 8, !tbaa !5
  %1184 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1183, i32 0, i32 34
  %1185 = load double, ptr %1184, align 8, !tbaa !72
  %1186 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl12trimfunctionEPdPNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef %1179, ptr noundef %1181, i64 noundef %1182, double noundef %1185, ptr noundef %1186)
  %1187 = load i64, ptr %6, align 8, !tbaa !26
  %1188 = load ptr, ptr %4, align 8, !tbaa !5
  %1189 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1188, i32 0, i32 38
  %1190 = load ptr, ptr %4, align 8, !tbaa !5
  %1191 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1190, i32 0, i32 39
  %1192 = load ptr, ptr %4, align 8, !tbaa !5
  %1193 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1192, i32 0, i32 40
  %1194 = load ptr, ptr %4, align 8, !tbaa !5
  %1195 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1194, i32 0, i32 24
  %1196 = load ptr, ptr %4, align 8, !tbaa !5
  %1197 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1196, i32 0, i32 26
  %1198 = load ptr, ptr %4, align 8, !tbaa !5
  %1199 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1198, i32 0, i32 27
  %1200 = load double, ptr %1199, align 8, !tbaa !70
  %1201 = load double, ptr @_ZN11alglib_implL10mincg_gtolE, align 8, !tbaa !27
  %1202 = load ptr, ptr %4, align 8, !tbaa !5
  %1203 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1202, i32 0, i32 31
  %1204 = load ptr, ptr %4, align 8, !tbaa !5
  %1205 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1204, i32 0, i32 17
  %1206 = load ptr, ptr %4, align 8, !tbaa !5
  %1207 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1206, i32 0, i32 61
  %1208 = load ptr, ptr %4, align 8, !tbaa !5
  %1209 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1208, i32 0, i32 53
  %1210 = load ptr, ptr %4, align 8, !tbaa !5
  %1211 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1210, i32 0, i32 18
  %1212 = 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 %1187, ptr noundef %1189, ptr noundef %1191, ptr noundef %1193, ptr noundef %1195, ptr noundef %1197, double noundef %1200, double noundef %1201, ptr noundef %1203, ptr noundef %1205, ptr noundef %1207, ptr noundef %1209, ptr noundef %1211, ptr noundef %1212)
  br label %945

1213:                                             ; preds = %950
  %1214 = load ptr, ptr %4, align 8, !tbaa !5
  %1215 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1214, i32 0, i32 66
  %1216 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl35smoothnessmonitorfinalizelinesearchEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef %1215, ptr noundef %1216)
  %1217 = load ptr, ptr %4, align 8, !tbaa !5
  %1218 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1217, i32 0, i32 47
  %1219 = load i8, ptr %1218, align 2, !tbaa !30, !range !52, !noundef !53
  %1220 = trunc i8 %1219 to i1
  br i1 %1220, label %1221, label %1239

1221:                                             ; preds = %1213
  %1222 = load ptr, ptr %4, align 8, !tbaa !5
  %1223 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1222, i32 0, i32 22
  %1224 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1223, i32 0, i32 4
  %1225 = load ptr, ptr %1224, align 8, !tbaa !25
  %1226 = getelementptr inbounds double, ptr %1225, i64 0
  %1227 = load ptr, ptr %4, align 8, !tbaa !5
  %1228 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1227, i32 0, i32 20
  %1229 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1228, i32 0, i32 4
  %1230 = load ptr, ptr %1229, align 8, !tbaa !25
  %1231 = getelementptr inbounds double, ptr %1230, i64 0
  %1232 = load i64, ptr %6, align 8, !tbaa !26
  %1233 = sub nsw i64 %1232, 1
  %1234 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1233)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1226, i64 noundef 1, ptr noundef %1231, i64 noundef 1, i64 noundef %1234)
  %1235 = load ptr, ptr %4, align 8, !tbaa !5
  %1236 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1235, i32 0, i32 51
  store i64 8, ptr %1236, align 8, !tbaa !31
  store i8 0, ptr %11, align 1, !tbaa !57
  %1237 = load i8, ptr %11, align 1, !tbaa !57, !range !52, !noundef !53
  %1238 = trunc i8 %1237 to i1
  store i1 %1238, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1801

1239:                                             ; preds = %1213
  %1240 = load ptr, ptr %4, align 8, !tbaa !5
  %1241 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1240, i32 0, i32 8
  %1242 = load i8, ptr %1241, align 1, !tbaa !51, !range !52, !noundef !53
  %1243 = trunc i8 %1242 to i1
  br i1 %1243, label %1245, label %1244

1244:                                             ; preds = %1239
  br label %1256

1245:                                             ; preds = %1239
  %1246 = load ptr, ptr %4, align 8, !tbaa !5
  %1247 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %1246, ptr noundef %1247)
  %1248 = load ptr, ptr %4, align 8, !tbaa !5
  %1249 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1248, i32 0, i32 46
  store i8 1, ptr %1249, align 1, !tbaa !73
  %1250 = load ptr, ptr %4, align 8, !tbaa !5
  %1251 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1250, i32 0, i32 48
  %1252 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1251, i32 0, i32 0
  store i32 16, ptr %1252, align 8, !tbaa !9
  br label %1763

1253:                                             ; preds = %173
  %1254 = load ptr, ptr %4, align 8, !tbaa !5
  %1255 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1254, i32 0, i32 46
  store i8 0, ptr %1255, align 1, !tbaa !73
  br label %1256

1256:                                             ; preds = %1253, %1244
  %1257 = load ptr, ptr %4, align 8, !tbaa !5
  %1258 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1257, i32 0, i32 22
  %1259 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1258, i32 0, i32 4
  %1260 = load ptr, ptr %1259, align 8, !tbaa !25
  %1261 = getelementptr inbounds double, ptr %1260, i64 0
  %1262 = load ptr, ptr %4, align 8, !tbaa !5
  %1263 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1262, i32 0, i32 38
  %1264 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1263, i32 0, i32 4
  %1265 = load ptr, ptr %1264, align 8, !tbaa !25
  %1266 = getelementptr inbounds double, ptr %1265, i64 0
  %1267 = load i64, ptr %6, align 8, !tbaa !26
  %1268 = sub nsw i64 %1267, 1
  %1269 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1268)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1261, i64 noundef 1, ptr noundef %1266, i64 noundef 1, i64 noundef %1269)
  %1270 = load ptr, ptr %4, align 8, !tbaa !5
  %1271 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1270, i32 0, i32 7
  %1272 = load i8, ptr %1271, align 8, !tbaa !55, !range !52, !noundef !53
  %1273 = trunc i8 %1272 to i1
  br i1 %1273, label %1275, label %1274

1274:                                             ; preds = %1256
  br label %1286

1275:                                             ; preds = %1256
  %1276 = load ptr, ptr %4, align 8, !tbaa !5
  %1277 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %1276, ptr noundef %1277)
  %1278 = load ptr, ptr %4, align 8, !tbaa !5
  %1279 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1278, i32 0, i32 43
  store i8 1, ptr %1279, align 2, !tbaa !56
  %1280 = load ptr, ptr %4, align 8, !tbaa !5
  %1281 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1280, i32 0, i32 48
  %1282 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1281, i32 0, i32 0
  store i32 17, ptr %1282, align 8, !tbaa !9
  br label %1763

1283:                                             ; preds = %180
  %1284 = load ptr, ptr %4, align 8, !tbaa !5
  %1285 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1284, i32 0, i32 43
  store i8 0, ptr %1285, align 2, !tbaa !56
  br label %1286

1286:                                             ; preds = %1283, %1274
  %1287 = load ptr, ptr %4, align 8, !tbaa !5
  %1288 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1287, i32 0, i32 33
  %1289 = load i8, ptr %1288, align 1, !tbaa !29, !range !52, !noundef !53
  %1290 = trunc i8 %1289 to i1
  br i1 %1290, label %1291, label %1309

1291:                                             ; preds = %1286
  %1292 = load ptr, ptr %4, align 8, !tbaa !5
  %1293 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1292, i32 0, i32 22
  %1294 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1293, i32 0, i32 4
  %1295 = load ptr, ptr %1294, align 8, !tbaa !25
  %1296 = getelementptr inbounds double, ptr %1295, i64 0
  %1297 = load ptr, ptr %4, align 8, !tbaa !5
  %1298 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1297, i32 0, i32 38
  %1299 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1298, i32 0, i32 4
  %1300 = load ptr, ptr %1299, align 8, !tbaa !25
  %1301 = getelementptr inbounds double, ptr %1300, i64 0
  %1302 = load i64, ptr %6, align 8, !tbaa !26
  %1303 = sub nsw i64 %1302, 1
  %1304 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1303)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1296, i64 noundef 1, ptr noundef %1301, i64 noundef 1, i64 noundef %1304)
  %1305 = load ptr, ptr %4, align 8, !tbaa !5
  %1306 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1305, i32 0, i32 51
  store i64 8, ptr %1306, align 8, !tbaa !31
  store i8 0, ptr %11, align 1, !tbaa !57
  %1307 = load i8, ptr %11, align 1, !tbaa !57, !range !52, !noundef !53
  %1308 = trunc i8 %1307 to i1
  store i1 %1308, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1801

1309:                                             ; preds = %1286
  %1310 = load ptr, ptr %4, align 8, !tbaa !5
  %1311 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1310, i32 0, i32 31
  %1312 = load i64, ptr %1311, align 8, !tbaa !74
  %1313 = icmp eq i64 %1312, 1
  br i1 %1313, label %1314, label %1404

1314:                                             ; preds = %1309
  %1315 = load ptr, ptr %4, align 8, !tbaa !5
  %1316 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1315, i32 0, i32 32
  %1317 = load i8, ptr %1316, align 8, !tbaa !66, !range !52, !noundef !53
  %1318 = trunc i8 %1317 to i1
  br i1 %1318, label %1404, label %1319

1319:                                             ; preds = %1314
  %1320 = load ptr, ptr %4, align 8, !tbaa !5
  %1321 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1320, i32 0, i32 28
  %1322 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1321, i32 0, i32 4
  %1323 = load ptr, ptr %1322, align 8, !tbaa !25
  %1324 = getelementptr inbounds double, ptr %1323, i64 0
  %1325 = load ptr, ptr %4, align 8, !tbaa !5
  %1326 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1325, i32 0, i32 40
  %1327 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1326, i32 0, i32 4
  %1328 = load ptr, ptr %1327, align 8, !tbaa !25
  %1329 = getelementptr inbounds double, ptr %1328, i64 0
  %1330 = load i64, ptr %6, align 8, !tbaa !26
  %1331 = sub nsw i64 %1330, 1
  %1332 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1331)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %1324, i64 noundef 1, ptr noundef %1329, i64 noundef 1, i64 noundef %1332)
  %1333 = load ptr, ptr %4, align 8, !tbaa !5
  %1334 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1333, i32 0, i32 28
  %1335 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1334, i32 0, i32 4
  %1336 = load ptr, ptr %1335, align 8, !tbaa !25
  %1337 = getelementptr inbounds double, ptr %1336, i64 0
  %1338 = load ptr, ptr %4, align 8, !tbaa !5
  %1339 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1338, i32 0, i32 21
  %1340 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1339, i32 0, i32 4
  %1341 = load ptr, ptr %1340, align 8, !tbaa !25
  %1342 = getelementptr inbounds double, ptr %1341, i64 0
  %1343 = load i64, ptr %6, align 8, !tbaa !26
  %1344 = sub nsw i64 %1343, 1
  %1345 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1344)
  %1346 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1337, i64 noundef 1, ptr noundef %1342, i64 noundef 1, i64 noundef %1345)
  store double %1346, ptr %10, align 8, !tbaa !27
  %1347 = load ptr, ptr %4, align 8, !tbaa !5
  %1348 = load ptr, ptr %4, align 8, !tbaa !5
  %1349 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1348, i32 0, i32 40
  %1350 = load ptr, ptr %4, align 8, !tbaa !5
  %1351 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1350, i32 0, i32 40
  %1352 = load ptr, ptr %4, align 8, !tbaa !5
  %1353 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1352, i32 0, i32 61
  %1354 = load ptr, ptr %4, align 8, !tbaa !5
  %1355 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1354, i32 0, i32 62
  %1356 = load ptr, ptr %5, align 8, !tbaa !5
  %1357 = call noundef double @_ZN11alglib_implL29mincg_preconditionedmultiply2EPNS_10mincgstateEPNS_9ae_vectorES3_S3_S3_PNS_8ae_stateE(ptr noundef %1347, ptr noundef %1349, ptr noundef %1351, ptr noundef %1353, ptr noundef %1355, ptr noundef %1356)
  store double %1357, ptr %9, align 8, !tbaa !27
  %1358 = load double, ptr %9, align 8, !tbaa !27
  %1359 = load double, ptr %10, align 8, !tbaa !27
  %1360 = fdiv double %1358, %1359
  %1361 = load ptr, ptr %4, align 8, !tbaa !5
  %1362 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1361, i32 0, i32 60
  store double %1360, ptr %1362, align 8, !tbaa !75
  %1363 = load ptr, ptr %4, align 8, !tbaa !5
  %1364 = load ptr, ptr %4, align 8, !tbaa !5
  %1365 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1364, i32 0, i32 40
  %1366 = load ptr, ptr %4, align 8, !tbaa !5
  %1367 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1366, i32 0, i32 28
  %1368 = load ptr, ptr %4, align 8, !tbaa !5
  %1369 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1368, i32 0, i32 61
  %1370 = load ptr, ptr %4, align 8, !tbaa !5
  %1371 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1370, i32 0, i32 62
  %1372 = load ptr, ptr %5, align 8, !tbaa !5
  %1373 = call noundef double @_ZN11alglib_implL29mincg_preconditionedmultiply2EPNS_10mincgstateEPNS_9ae_vectorES3_S3_S3_PNS_8ae_stateE(ptr noundef %1363, ptr noundef %1365, ptr noundef %1367, ptr noundef %1369, ptr noundef %1371, ptr noundef %1372)
  store double %1373, ptr %9, align 8, !tbaa !27
  %1374 = load double, ptr %9, align 8, !tbaa !27
  %1375 = load double, ptr %10, align 8, !tbaa !27
  %1376 = fdiv double %1374, %1375
  %1377 = load ptr, ptr %4, align 8, !tbaa !5
  %1378 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1377, i32 0, i32 59
  store double %1376, ptr %1378, align 8, !tbaa !76
  %1379 = load ptr, ptr %4, align 8, !tbaa !5
  %1380 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1379, i32 0, i32 9
  %1381 = load i64, ptr %1380, align 8, !tbaa !77
  %1382 = icmp eq i64 %1381, 0
  br i1 %1382, label %1383, label %1387

1383:                                             ; preds = %1319
  %1384 = load ptr, ptr %4, align 8, !tbaa !5
  %1385 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1384, i32 0, i32 60
  %1386 = load double, ptr %1385, align 8, !tbaa !75
  store double %1386, ptr %8, align 8, !tbaa !27
  br label %1387

1387:                                             ; preds = %1383, %1319
  %1388 = load ptr, ptr %4, align 8, !tbaa !5
  %1389 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1388, i32 0, i32 9
  %1390 = load i64, ptr %1389, align 8, !tbaa !77
  %1391 = icmp eq i64 %1390, 1
  br i1 %1391, label %1392, label %1403

1392:                                             ; preds = %1387
  %1393 = load ptr, ptr %4, align 8, !tbaa !5
  %1394 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1393, i32 0, i32 60
  %1395 = load double, ptr %1394, align 8, !tbaa !75
  %1396 = load ptr, ptr %4, align 8, !tbaa !5
  %1397 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1396, i32 0, i32 59
  %1398 = load double, ptr %1397, align 8, !tbaa !76
  %1399 = load ptr, ptr %5, align 8, !tbaa !5
  %1400 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %1395, double noundef %1398, ptr noundef %1399)
  %1401 = load ptr, ptr %5, align 8, !tbaa !5
  %1402 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 0.000000e+00, double noundef %1400, ptr noundef %1401)
  store double %1402, ptr %8, align 8, !tbaa !27
  br label %1403

1403:                                             ; preds = %1392, %1387
  br label %1411

1404:                                             ; preds = %1314, %1309
  store double 0.000000e+00, ptr %8, align 8, !tbaa !27
  %1405 = load ptr, ptr %4, align 8, !tbaa !5
  %1406 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1405, i32 0, i32 52
  %1407 = load i64, ptr %1406, align 8, !tbaa !34
  %1408 = add nsw i64 %1407, 1
  %1409 = load ptr, ptr %4, align 8, !tbaa !5
  %1410 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1409, i32 0, i32 52
  store i64 %1408, ptr %1410, align 8, !tbaa !34
  br label %1411

1411:                                             ; preds = %1404, %1403
  %1412 = load ptr, ptr %4, align 8, !tbaa !5
  %1413 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1412, i32 0, i32 49
  %1414 = load i64, ptr %1413, align 8, !tbaa !32
  %1415 = icmp sgt i64 %1414, 0
  br i1 %1415, label %1416, label %1425

1416:                                             ; preds = %1411
  %1417 = load ptr, ptr %4, align 8, !tbaa !5
  %1418 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1417, i32 0, i32 49
  %1419 = load i64, ptr %1418, align 8, !tbaa !32
  %1420 = load i64, ptr %6, align 8, !tbaa !26
  %1421 = add nsw i64 3, %1420
  %1422 = srem i64 %1419, %1421
  %1423 = icmp eq i64 %1422, 0
  br i1 %1423, label %1424, label %1425

1424:                                             ; preds = %1416
  store double 0.000000e+00, ptr %8, align 8, !tbaa !27
  br label %1425

1425:                                             ; preds = %1424, %1416, %1411
  %1426 = load ptr, ptr %4, align 8, !tbaa !5
  %1427 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1426, i32 0, i32 31
  %1428 = load i64, ptr %1427, align 8, !tbaa !74
  %1429 = icmp eq i64 %1428, 1
  br i1 %1429, label %1435, label %1430

1430:                                             ; preds = %1425
  %1431 = load ptr, ptr %4, align 8, !tbaa !5
  %1432 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1431, i32 0, i32 31
  %1433 = load i64, ptr %1432, align 8, !tbaa !74
  %1434 = icmp eq i64 %1433, 5
  br i1 %1434, label %1435, label %1439

1435:                                             ; preds = %1430, %1425
  %1436 = load i64, ptr @_ZN11alglib_implL20mincg_rscountdownlenE, align 8, !tbaa !26
  %1437 = load ptr, ptr %4, align 8, !tbaa !5
  %1438 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1437, i32 0, i32 36
  store i64 %1436, ptr %1438, align 8, !tbaa !65
  br label %1446

1439:                                             ; preds = %1430
  %1440 = load ptr, ptr %4, align 8, !tbaa !5
  %1441 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1440, i32 0, i32 36
  %1442 = load i64, ptr %1441, align 8, !tbaa !65
  %1443 = sub nsw i64 %1442, 1
  %1444 = load ptr, ptr %4, align 8, !tbaa !5
  %1445 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1444, i32 0, i32 36
  store i64 %1443, ptr %1445, align 8, !tbaa !65
  br label %1446

1446:                                             ; preds = %1439, %1435
  %1447 = load ptr, ptr %4, align 8, !tbaa !5
  %1448 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1447, i32 0, i32 23
  %1449 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1448, i32 0, i32 4
  %1450 = load ptr, ptr %1449, align 8, !tbaa !25
  %1451 = getelementptr inbounds double, ptr %1450, i64 0
  %1452 = load ptr, ptr %4, align 8, !tbaa !5
  %1453 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1452, i32 0, i32 40
  %1454 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1453, i32 0, i32 4
  %1455 = load ptr, ptr %1454, align 8, !tbaa !25
  %1456 = getelementptr inbounds double, ptr %1455, i64 0
  %1457 = load i64, ptr %6, align 8, !tbaa !26
  %1458 = sub nsw i64 %1457, 1
  %1459 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1458)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %1451, i64 noundef 1, ptr noundef %1456, i64 noundef 1, i64 noundef %1459)
  %1460 = load ptr, ptr %4, align 8, !tbaa !5
  %1461 = load ptr, ptr %4, align 8, !tbaa !5
  %1462 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1461, i32 0, i32 23
  %1463 = load ptr, ptr %4, align 8, !tbaa !5
  %1464 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1463, i32 0, i32 61
  %1465 = load ptr, ptr %4, align 8, !tbaa !5
  %1466 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1465, i32 0, i32 62
  %1467 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL28mincg_preconditionedmultiplyEPNS_10mincgstateEPNS_9ae_vectorES3_S3_PNS_8ae_stateE(ptr noundef %1460, ptr noundef %1462, ptr noundef %1464, ptr noundef %1466, ptr noundef %1467)
  %1468 = load ptr, ptr %4, align 8, !tbaa !5
  %1469 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1468, i32 0, i32 23
  %1470 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1469, i32 0, i32 4
  %1471 = load ptr, ptr %1470, align 8, !tbaa !25
  %1472 = getelementptr inbounds double, ptr %1471, i64 0
  %1473 = load ptr, ptr %4, align 8, !tbaa !5
  %1474 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1473, i32 0, i32 21
  %1475 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1474, i32 0, i32 4
  %1476 = load ptr, ptr %1475, align 8, !tbaa !25
  %1477 = getelementptr inbounds double, ptr %1476, i64 0
  %1478 = load i64, ptr %6, align 8, !tbaa !26
  %1479 = sub nsw i64 %1478, 1
  %1480 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1479)
  %1481 = load double, ptr %8, align 8, !tbaa !27
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %1472, i64 noundef 1, ptr noundef %1477, i64 noundef 1, i64 noundef %1480, double noundef %1481)
  %1482 = load ptr, ptr %4, align 8, !tbaa !5
  %1483 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1482, i32 0, i32 30
  store double 0.000000e+00, ptr %1483, align 8, !tbaa !78
  store i64 0, ptr %7, align 8, !tbaa !26
  br label %1484

1484:                                             ; preds = %1513, %1446
  %1485 = load i64, ptr %7, align 8, !tbaa !26
  %1486 = load i64, ptr %6, align 8, !tbaa !26
  %1487 = sub nsw i64 %1486, 1
  %1488 = icmp sle i64 %1485, %1487
  br i1 %1488, label %1489, label %1516

1489:                                             ; preds = %1484
  %1490 = load ptr, ptr %4, align 8, !tbaa !5
  %1491 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1490, i32 0, i32 30
  %1492 = load double, ptr %1491, align 8, !tbaa !78
  %1493 = load ptr, ptr %4, align 8, !tbaa !5
  %1494 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1493, i32 0, i32 24
  %1495 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1494, i32 0, i32 4
  %1496 = load ptr, ptr %1495, align 8, !tbaa !25
  %1497 = load i64, ptr %7, align 8, !tbaa !26
  %1498 = getelementptr inbounds double, ptr %1496, i64 %1497
  %1499 = load double, ptr %1498, align 8, !tbaa !27
  %1500 = load ptr, ptr %4, align 8, !tbaa !5
  %1501 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1500, i32 0, i32 15
  %1502 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1501, i32 0, i32 4
  %1503 = load ptr, ptr %1502, align 8, !tbaa !25
  %1504 = load i64, ptr %7, align 8, !tbaa !26
  %1505 = getelementptr inbounds double, ptr %1503, i64 %1504
  %1506 = load double, ptr %1505, align 8, !tbaa !27
  %1507 = fdiv double %1499, %1506
  %1508 = load ptr, ptr %5, align 8, !tbaa !5
  %1509 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1507, ptr noundef %1508)
  %1510 = fadd double %1492, %1509
  %1511 = load ptr, ptr %4, align 8, !tbaa !5
  %1512 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1511, i32 0, i32 30
  store double %1510, ptr %1512, align 8, !tbaa !78
  br label %1513

1513:                                             ; preds = %1489
  %1514 = load i64, ptr %7, align 8, !tbaa !26
  %1515 = add nsw i64 %1514, 1
  store i64 %1515, ptr %7, align 8, !tbaa !26
  br label %1484, !llvm.loop !79

1516:                                             ; preds = %1484
  %1517 = load ptr, ptr %4, align 8, !tbaa !5
  %1518 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1517, i32 0, i32 26
  %1519 = load double, ptr %1518, align 8, !tbaa !68
  %1520 = load ptr, ptr %4, align 8, !tbaa !5
  %1521 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1520, i32 0, i32 30
  %1522 = load double, ptr %1521, align 8, !tbaa !78
  %1523 = load ptr, ptr %5, align 8, !tbaa !5
  %1524 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1522, ptr noundef %1523)
  %1525 = fmul double %1519, %1524
  %1526 = load ptr, ptr %4, align 8, !tbaa !5
  %1527 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1526, i32 0, i32 30
  store double %1525, ptr %1527, align 8, !tbaa !78
  %1528 = load ptr, ptr %4, align 8, !tbaa !5
  %1529 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1528, i32 0, i32 31
  %1530 = load i64, ptr %1529, align 8, !tbaa !74
  %1531 = icmp eq i64 %1530, 1
  br i1 %1531, label %1532, label %1571

1532:                                             ; preds = %1516
  %1533 = load ptr, ptr %4, align 8, !tbaa !5
  %1534 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1533, i32 0, i32 29
  store double 0.000000e+00, ptr %1534, align 8, !tbaa !63
  store i64 0, ptr %7, align 8, !tbaa !26
  br label %1535

1535:                                             ; preds = %1556, %1532
  %1536 = load i64, ptr %7, align 8, !tbaa !26
  %1537 = load i64, ptr %6, align 8, !tbaa !26
  %1538 = sub nsw i64 %1537, 1
  %1539 = icmp sle i64 %1536, %1538
  br i1 %1539, label %1540, label %1559

1540:                                             ; preds = %1535
  %1541 = load ptr, ptr %4, align 8, !tbaa !5
  %1542 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1541, i32 0, i32 29
  %1543 = load double, ptr %1542, align 8, !tbaa !63
  %1544 = load ptr, ptr %4, align 8, !tbaa !5
  %1545 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1544, i32 0, i32 24
  %1546 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1545, i32 0, i32 4
  %1547 = load ptr, ptr %1546, align 8, !tbaa !25
  %1548 = load i64, ptr %7, align 8, !tbaa !26
  %1549 = getelementptr inbounds double, ptr %1547, i64 %1548
  %1550 = load double, ptr %1549, align 8, !tbaa !27
  %1551 = load ptr, ptr %5, align 8, !tbaa !5
  %1552 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1550, ptr noundef %1551)
  %1553 = fadd double %1543, %1552
  %1554 = load ptr, ptr %4, align 8, !tbaa !5
  %1555 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1554, i32 0, i32 29
  store double %1553, ptr %1555, align 8, !tbaa !63
  br label %1556

1556:                                             ; preds = %1540
  %1557 = load i64, ptr %7, align 8, !tbaa !26
  %1558 = add nsw i64 %1557, 1
  store i64 %1558, ptr %7, align 8, !tbaa !26
  br label %1535, !llvm.loop !80

1559:                                             ; preds = %1535
  %1560 = load ptr, ptr %4, align 8, !tbaa !5
  %1561 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1560, i32 0, i32 26
  %1562 = load double, ptr %1561, align 8, !tbaa !68
  %1563 = load ptr, ptr %4, align 8, !tbaa !5
  %1564 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1563, i32 0, i32 29
  %1565 = load double, ptr %1564, align 8, !tbaa !63
  %1566 = load ptr, ptr %5, align 8, !tbaa !5
  %1567 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1565, ptr noundef %1566)
  %1568 = fmul double %1562, %1567
  %1569 = load ptr, ptr %4, align 8, !tbaa !5
  %1570 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1569, i32 0, i32 29
  store double %1568, ptr %1570, align 8, !tbaa !63
  br label %1571

1571:                                             ; preds = %1559, %1516
  store double 0.000000e+00, ptr %9, align 8, !tbaa !27
  store i64 0, ptr %7, align 8, !tbaa !26
  br label %1572

1572:                                             ; preds = %1597, %1571
  %1573 = load i64, ptr %7, align 8, !tbaa !26
  %1574 = load i64, ptr %6, align 8, !tbaa !26
  %1575 = sub nsw i64 %1574, 1
  %1576 = icmp sle i64 %1573, %1575
  br i1 %1576, label %1577, label %1600

1577:                                             ; preds = %1572
  %1578 = load double, ptr %9, align 8, !tbaa !27
  %1579 = load ptr, ptr %4, align 8, !tbaa !5
  %1580 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1579, i32 0, i32 40
  %1581 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1580, i32 0, i32 4
  %1582 = load ptr, ptr %1581, align 8, !tbaa !25
  %1583 = load i64, ptr %7, align 8, !tbaa !26
  %1584 = getelementptr inbounds double, ptr %1582, i64 %1583
  %1585 = load double, ptr %1584, align 8, !tbaa !27
  %1586 = load ptr, ptr %4, align 8, !tbaa !5
  %1587 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1586, i32 0, i32 15
  %1588 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1587, i32 0, i32 4
  %1589 = load ptr, ptr %1588, align 8, !tbaa !25
  %1590 = load i64, ptr %7, align 8, !tbaa !26
  %1591 = getelementptr inbounds double, ptr %1589, i64 %1590
  %1592 = load double, ptr %1591, align 8, !tbaa !27
  %1593 = fmul double %1585, %1592
  %1594 = load ptr, ptr %5, align 8, !tbaa !5
  %1595 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1593, ptr noundef %1594)
  %1596 = fadd double %1578, %1595
  store double %1596, ptr %9, align 8, !tbaa !27
  br label %1597

1597:                                             ; preds = %1577
  %1598 = load i64, ptr %7, align 8, !tbaa !26
  %1599 = add nsw i64 %1598, 1
  store i64 %1599, ptr %7, align 8, !tbaa !26
  br label %1572, !llvm.loop !81

1600:                                             ; preds = %1572
  %1601 = load double, ptr %9, align 8, !tbaa !27
  %1602 = load ptr, ptr %5, align 8, !tbaa !5
  %1603 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1601, ptr noundef %1602)
  br i1 %1603, label %1604, label %1610

1604:                                             ; preds = %1600
  %1605 = load ptr, ptr %4, align 8, !tbaa !5
  %1606 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1605, i32 0, i32 39
  %1607 = load double, ptr %1606, align 8, !tbaa !42
  %1608 = load ptr, ptr %5, align 8, !tbaa !5
  %1609 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1607, ptr noundef %1608)
  br i1 %1609, label %1615, label %1610

1610:                                             ; preds = %1604, %1600
  %1611 = load ptr, ptr %4, align 8, !tbaa !5
  %1612 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1611, i32 0, i32 51
  store i64 -8, ptr %1612, align 8, !tbaa !31
  store i8 0, ptr %11, align 1, !tbaa !57
  %1613 = load i8, ptr %11, align 1, !tbaa !57, !range !52, !noundef !53
  %1614 = trunc i8 %1613 to i1
  store i1 %1614, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1801

1615:                                             ; preds = %1604
  %1616 = load ptr, ptr %4, align 8, !tbaa !5
  %1617 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1616, i32 0, i32 50
  %1618 = load i64, ptr %1617, align 8, !tbaa !33
  %1619 = load ptr, ptr %4, align 8, !tbaa !5
  %1620 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1619, i32 0, i32 17
  %1621 = load i64, ptr %1620, align 8, !tbaa !82
  %1622 = add nsw i64 %1618, %1621
  %1623 = load ptr, ptr %4, align 8, !tbaa !5
  %1624 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1623, i32 0, i32 50
  store i64 %1622, ptr %1624, align 8, !tbaa !33
  %1625 = load ptr, ptr %4, align 8, !tbaa !5
  %1626 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1625, i32 0, i32 49
  %1627 = load i64, ptr %1626, align 8, !tbaa !32
  %1628 = add nsw i64 %1627, 1
  %1629 = load ptr, ptr %4, align 8, !tbaa !5
  %1630 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1629, i32 0, i32 49
  store i64 %1628, ptr %1630, align 8, !tbaa !32
  %1631 = load ptr, ptr %4, align 8, !tbaa !5
  %1632 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1631, i32 0, i32 49
  %1633 = load i64, ptr %1632, align 8, !tbaa !32
  %1634 = load ptr, ptr %4, align 8, !tbaa !5
  %1635 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1634, i32 0, i32 4
  %1636 = load i64, ptr %1635, align 8, !tbaa !83
  %1637 = icmp sge i64 %1633, %1636
  br i1 %1637, label %1638, label %1648

1638:                                             ; preds = %1615
  %1639 = load ptr, ptr %4, align 8, !tbaa !5
  %1640 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1639, i32 0, i32 4
  %1641 = load i64, ptr %1640, align 8, !tbaa !83
  %1642 = icmp sgt i64 %1641, 0
  br i1 %1642, label %1643, label %1648

1643:                                             ; preds = %1638
  %1644 = load ptr, ptr %4, align 8, !tbaa !5
  %1645 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1644, i32 0, i32 51
  store i64 5, ptr %1645, align 8, !tbaa !31
  store i8 0, ptr %11, align 1, !tbaa !57
  %1646 = load i8, ptr %11, align 1, !tbaa !57, !range !52, !noundef !53
  %1647 = trunc i8 %1646 to i1
  store i1 %1647, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1801

1648:                                             ; preds = %1638, %1615
  %1649 = load double, ptr %9, align 8, !tbaa !27
  %1650 = load ptr, ptr %5, align 8, !tbaa !5
  %1651 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1649, ptr noundef %1650)
  %1652 = load ptr, ptr %4, align 8, !tbaa !5
  %1653 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1652, i32 0, i32 1
  %1654 = load double, ptr %1653, align 8, !tbaa !59
  %1655 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1651, double noundef %1654)
  br i1 %1655, label %1656, label %1661

1656:                                             ; preds = %1648
  %1657 = load ptr, ptr %4, align 8, !tbaa !5
  %1658 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1657, i32 0, i32 51
  store i64 4, ptr %1658, align 8, !tbaa !31
  store i8 0, ptr %11, align 1, !tbaa !57
  %1659 = load i8, ptr %11, align 1, !tbaa !57, !range !52, !noundef !53
  %1660 = trunc i8 %1659 to i1
  store i1 %1660, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1801

1661:                                             ; preds = %1648
  %1662 = load ptr, ptr %4, align 8, !tbaa !5
  %1663 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1662, i32 0, i32 32
  %1664 = load i8, ptr %1663, align 8, !tbaa !66, !range !52, !noundef !53
  %1665 = trunc i8 %1664 to i1
  br i1 %1665, label %1712, label %1666

1666:                                             ; preds = %1661
  %1667 = load ptr, ptr %4, align 8, !tbaa !5
  %1668 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1667, i32 0, i32 25
  %1669 = load double, ptr %1668, align 8, !tbaa !61
  %1670 = load ptr, ptr %4, align 8, !tbaa !5
  %1671 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1670, i32 0, i32 39
  %1672 = load double, ptr %1671, align 8, !tbaa !42
  %1673 = fsub double %1669, %1672
  %1674 = load ptr, ptr %4, align 8, !tbaa !5
  %1675 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1674, i32 0, i32 2
  %1676 = load double, ptr %1675, align 8, !tbaa !84
  %1677 = load ptr, ptr %4, align 8, !tbaa !5
  %1678 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1677, i32 0, i32 25
  %1679 = load double, ptr %1678, align 8, !tbaa !61
  %1680 = load ptr, ptr %5, align 8, !tbaa !5
  %1681 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1679, ptr noundef %1680)
  %1682 = load ptr, ptr %4, align 8, !tbaa !5
  %1683 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1682, i32 0, i32 39
  %1684 = load double, ptr %1683, align 8, !tbaa !42
  %1685 = load ptr, ptr %5, align 8, !tbaa !5
  %1686 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1684, ptr noundef %1685)
  %1687 = load ptr, ptr %5, align 8, !tbaa !5
  %1688 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1686, double noundef 1.000000e+00, ptr noundef %1687)
  %1689 = load ptr, ptr %5, align 8, !tbaa !5
  %1690 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1681, double noundef %1688, ptr noundef %1689)
  %1691 = fmul double %1676, %1690
  %1692 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1673, double noundef %1691)
  br i1 %1692, label %1693, label %1698

1693:                                             ; preds = %1666
  %1694 = load ptr, ptr %4, align 8, !tbaa !5
  %1695 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1694, i32 0, i32 51
  store i64 1, ptr %1695, align 8, !tbaa !31
  store i8 0, ptr %11, align 1, !tbaa !57
  %1696 = load i8, ptr %11, align 1, !tbaa !57, !range !52, !noundef !53
  %1697 = trunc i8 %1696 to i1
  store i1 %1697, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1801

1698:                                             ; preds = %1666
  %1699 = load ptr, ptr %4, align 8, !tbaa !5
  %1700 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1699, i32 0, i32 30
  %1701 = load double, ptr %1700, align 8, !tbaa !78
  %1702 = load ptr, ptr %4, align 8, !tbaa !5
  %1703 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1702, i32 0, i32 3
  %1704 = load double, ptr %1703, align 8, !tbaa !85
  %1705 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1701, double noundef %1704)
  br i1 %1705, label %1706, label %1711

1706:                                             ; preds = %1698
  %1707 = load ptr, ptr %4, align 8, !tbaa !5
  %1708 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1707, i32 0, i32 51
  store i64 2, ptr %1708, align 8, !tbaa !31
  store i8 0, ptr %11, align 1, !tbaa !57
  %1709 = load i8, ptr %11, align 1, !tbaa !57, !range !52, !noundef !53
  %1710 = trunc i8 %1709 to i1
  store i1 %1710, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1801

1711:                                             ; preds = %1698
  br label %1712

1712:                                             ; preds = %1711, %1661
  %1713 = load ptr, ptr %4, align 8, !tbaa !5
  %1714 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1713, i32 0, i32 36
  %1715 = load i64, ptr %1714, align 8, !tbaa !65
  %1716 = icmp sle i64 %1715, 0
  br i1 %1716, label %1717, label %1722

1717:                                             ; preds = %1712
  %1718 = load ptr, ptr %4, align 8, !tbaa !5
  %1719 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1718, i32 0, i32 51
  store i64 7, ptr %1719, align 8, !tbaa !31
  store i8 0, ptr %11, align 1, !tbaa !57
  %1720 = load i8, ptr %11, align 1, !tbaa !57, !range !52, !noundef !53
  %1721 = trunc i8 %1720 to i1
  store i1 %1721, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1801

1722:                                             ; preds = %1712
  %1723 = load ptr, ptr %4, align 8, !tbaa !5
  %1724 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1723, i32 0, i32 20
  %1725 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1724, i32 0, i32 4
  %1726 = load ptr, ptr %1725, align 8, !tbaa !25
  %1727 = getelementptr inbounds double, ptr %1726, i64 0
  %1728 = load ptr, ptr %4, align 8, !tbaa !5
  %1729 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1728, i32 0, i32 22
  %1730 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1729, i32 0, i32 4
  %1731 = load ptr, ptr %1730, align 8, !tbaa !25
  %1732 = getelementptr inbounds double, ptr %1731, i64 0
  %1733 = load i64, ptr %6, align 8, !tbaa !26
  %1734 = sub nsw i64 %1733, 1
  %1735 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1734)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1727, i64 noundef 1, ptr noundef %1732, i64 noundef 1, i64 noundef %1735)
  %1736 = load ptr, ptr %4, align 8, !tbaa !5
  %1737 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1736, i32 0, i32 21
  %1738 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1737, i32 0, i32 4
  %1739 = load ptr, ptr %1738, align 8, !tbaa !25
  %1740 = getelementptr inbounds double, ptr %1739, i64 0
  %1741 = load ptr, ptr %4, align 8, !tbaa !5
  %1742 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1741, i32 0, i32 23
  %1743 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1742, i32 0, i32 4
  %1744 = load ptr, ptr %1743, align 8, !tbaa !25
  %1745 = getelementptr inbounds double, ptr %1744, i64 0
  %1746 = load i64, ptr %6, align 8, !tbaa !26
  %1747 = sub nsw i64 %1746, 1
  %1748 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1747)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1740, i64 noundef 1, ptr noundef %1745, i64 noundef 1, i64 noundef %1748)
  %1749 = load ptr, ptr %4, align 8, !tbaa !5
  %1750 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1749, i32 0, i32 39
  %1751 = load double, ptr %1750, align 8, !tbaa !42
  %1752 = load ptr, ptr %4, align 8, !tbaa !5
  %1753 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1752, i32 0, i32 25
  store double %1751, ptr %1753, align 8, !tbaa !61
  %1754 = load ptr, ptr %4, align 8, !tbaa !5
  %1755 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1754, i32 0, i32 19
  %1756 = load i64, ptr %1755, align 8, !tbaa !60
  %1757 = add nsw i64 %1756, 1
  %1758 = load ptr, ptr %4, align 8, !tbaa !5
  %1759 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1758, i32 0, i32 19
  store i64 %1757, ptr %1759, align 8, !tbaa !60
  br label %792

1760:                                             ; No predecessors!
  store i8 0, ptr %11, align 1, !tbaa !57
  %1761 = load i8, ptr %11, align 1, !tbaa !57, !range !52, !noundef !53
  %1762 = trunc i8 %1761 to i1
  store i1 %1762, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1801

1763:                                             ; preds = %1275, %1245, %1073, %1045, %1016, %986, %968, %959, %867, %640, %596, %505, %477, %448, %418, %400, %391, %302
  store i8 1, ptr %11, align 1, !tbaa !57
  %1764 = load i64, ptr %6, align 8, !tbaa !26
  %1765 = load ptr, ptr %4, align 8, !tbaa !5
  %1766 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1765, i32 0, i32 48
  %1767 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1766, i32 0, i32 1
  %1768 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1767, i32 0, i32 4
  %1769 = load ptr, ptr %1768, align 8, !tbaa !25
  %1770 = getelementptr inbounds i64, ptr %1769, i64 0
  store i64 %1764, ptr %1770, align 8, !tbaa !26
  %1771 = load i64, ptr %7, align 8, !tbaa !26
  %1772 = load ptr, ptr %4, align 8, !tbaa !5
  %1773 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1772, i32 0, i32 48
  %1774 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1773, i32 0, i32 1
  %1775 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1774, i32 0, i32 4
  %1776 = load ptr, ptr %1775, align 8, !tbaa !25
  %1777 = getelementptr inbounds i64, ptr %1776, i64 1
  store i64 %1771, ptr %1777, align 8, !tbaa !26
  %1778 = load double, ptr %8, align 8, !tbaa !27
  %1779 = load ptr, ptr %4, align 8, !tbaa !5
  %1780 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1779, i32 0, i32 48
  %1781 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1780, i32 0, i32 3
  %1782 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1781, i32 0, i32 4
  %1783 = load ptr, ptr %1782, align 8, !tbaa !25
  %1784 = getelementptr inbounds double, ptr %1783, i64 0
  store double %1778, ptr %1784, align 8, !tbaa !27
  %1785 = load double, ptr %9, align 8, !tbaa !27
  %1786 = load ptr, ptr %4, align 8, !tbaa !5
  %1787 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1786, i32 0, i32 48
  %1788 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1787, i32 0, i32 3
  %1789 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1788, i32 0, i32 4
  %1790 = load ptr, ptr %1789, align 8, !tbaa !25
  %1791 = getelementptr inbounds double, ptr %1790, i64 1
  store double %1785, ptr %1791, align 8, !tbaa !27
  %1792 = load double, ptr %10, align 8, !tbaa !27
  %1793 = load ptr, ptr %4, align 8, !tbaa !5
  %1794 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1793, i32 0, i32 48
  %1795 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1794, i32 0, i32 3
  %1796 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1795, i32 0, i32 4
  %1797 = load ptr, ptr %1796, align 8, !tbaa !25
  %1798 = getelementptr inbounds double, ptr %1797, i64 2
  store double %1792, ptr %1798, align 8, !tbaa !27
  %1799 = load i8, ptr %11, align 1, !tbaa !57, !range !52, !noundef !53
  %1800 = trunc i8 %1799 to i1
  store i1 %1800, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1801

1801:                                             ; preds = %1763, %1760, %1717, %1706, %1693, %1656, %1643, %1610, %1291, %1221, %883, %716, %661
  call void @llvm.lifetime.end.p0(i64 1, 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
  %1802 = load i1, ptr %3, align 1
  ret i1 %1802
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl34smoothnessmonitorstartlinesearch1uEPNS_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) #1

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef double @_ZN11alglib_implL29mincg_preconditionedmultiply2EPNS_10mincgstateEPNS_9ae_vectorES3_S3_S3_PNS_8ae_stateE(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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress 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, !18, i64 1064}
!10 = !{!"_ZTSN11alglib_impl10mincgstateE", !11, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !11, i64 32, !12, i64 40, !12, i64 48, !13, i64 56, !13, i64 57, !11, i64 64, !11, i64 72, !14, i64 80, !14, i64 144, !16, i64 208, !11, i64 288, !14, i64 296, !12, i64 360, !11, i64 368, !11, i64 376, !11, i64 384, !14, i64 392, !14, i64 456, !14, i64 520, !14, i64 584, !14, i64 648, !12, i64 712, !12, i64 720, !12, i64 728, !14, i64 736, !12, i64 800, !12, i64 808, !11, i64 816, !13, i64 824, !13, i64 825, !12, i64 832, !14, i64 840, !11, i64 904, !11, i64 912, !14, i64 920, !12, i64 984, !14, i64 992, !13, i64 1056, !13, i64 1057, !13, i64 1058, !13, i64 1059, !13, i64 1060, !13, i64 1061, !13, i64 1062, !17, i64 1064, !11, i64 1328, !11, i64 1336, !11, i64 1344, !11, i64 1352, !19, i64 1360, !12, i64 1552, !12, i64 1560, !12, i64 1568, !12, i64 1576, !12, i64 1584, !12, i64 1592, !12, i64 1600, !14, i64 1608, !14, i64 1672, !14, i64 1736, !12, i64 1800, !11, i64 1808, !20, i64 1816, !14, i64 7520}
!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_impl10rcommstateE", !18, i64 0, !14, i64 8, !14, i64 72, !14, i64 136, !14, i64 200}
!18 = !{!"int", !7, i64 0}
!19 = !{!"_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}
!20 = !{!"_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, !17, i64 1240, !13, i64 1504, !13, i64 1505, !11, i64 1512, !11, i64 1520, !12, i64 1528, !12, i64 1536, !13, i64 1544, !21, i64 1552, !12, i64 1848, !12, i64 1856, !22, i64 1864, !22, i64 2184, !12, i64 2504, !12, i64 2512, !23, i64 2520, !23, i64 2840, !12, i64 3160, !12, i64 3168, !24, i64 3176, !24, i64 3504, !13, i64 3832, !14, i64 3840, !14, i64 3904, !16, i64 3968, !17, 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}
!21 = !{!"_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}
!22 = !{!"_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}
!23 = !{!"_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}
!24 = !{!"_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}
!25 = !{!7, !7, i64 0}
!26 = !{!11, !11, i64 0}
!27 = !{!12, !12, i64 0}
!28 = !{!10, !11, i64 0}
!29 = !{!10, !13, i64 825}
!30 = !{!10, !13, i64 1062}
!31 = !{!10, !11, i64 1344}
!32 = !{!10, !11, i64 1328}
!33 = !{!10, !11, i64 1336}
!34 = !{!10, !11, i64 1352}
!35 = !{!10, !11, i64 1808}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = !{!10, !12, i64 360}
!39 = !{!10, !12, i64 1800}
!40 = distinct !{!40, !37}
!41 = !{!10, !13, i64 1057}
!42 = !{!10, !12, i64 984}
!43 = distinct !{!43, !37}
!44 = distinct !{!44, !37}
!45 = !{!10, !13, i64 1056}
!46 = !{!10, !12, i64 1552}
!47 = !{!10, !12, i64 1560}
!48 = !{!10, !12, i64 1568}
!49 = !{!10, !12, i64 1576}
!50 = !{!10, !12, i64 1584}
!51 = !{!10, !13, i64 57}
!52 = !{i8 0, i8 2}
!53 = !{}
!54 = !{!10, !13, i64 1059}
!55 = !{!10, !13, i64 56}
!56 = !{!10, !13, i64 1058}
!57 = !{!13, !13, i64 0}
!58 = distinct !{!58, !37}
!59 = !{!10, !12, i64 8}
!60 = !{!10, !11, i64 384}
!61 = !{!10, !12, i64 712}
!62 = !{!10, !11, i64 72}
!63 = !{!10, !12, i64 800}
!64 = !{!10, !12, i64 48}
!65 = !{!10, !11, i64 904}
!66 = !{!10, !13, i64 824}
!67 = !{!10, !11, i64 376}
!68 = !{!10, !12, i64 720}
!69 = !{!10, !12, i64 40}
!70 = !{!10, !12, i64 728}
!71 = !{!10, !13, i64 1060}
!72 = !{!10, !12, i64 832}
!73 = !{!10, !13, i64 1061}
!74 = !{!10, !11, i64 816}
!75 = !{!10, !12, i64 1600}
!76 = !{!10, !12, i64 1592}
!77 = !{!10, !11, i64 64}
!78 = !{!10, !12, i64 808}
!79 = distinct !{!79, !37}
!80 = distinct !{!80, !37}
!81 = distinct !{!81, !37}
!82 = !{!10, !11, i64 368}
!83 = !{!10, !11, i64 32}
!84 = !{!10, !12, i64 16}
!85 = !{!10, !12, i64 24}


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

@_ZN11alglib_implL20mincg_rscountdownlenE = external hidden local_unnamed_addr global i64, align 8
@_ZN11alglib_implL10mincg_gtolE = external hidden local_unnamed_addr global double, align 8

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl14mincgiterationEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) local_unnamed_addr #0 {
  %3 = getelementptr inbounds i8, ptr %0, i64 1064
  %4 = load i32, ptr %3, align 8, !tbaa !5
  %5 = icmp sgt i32 %4, -1
  br i1 %5, label %6, label %19

6:                                                ; preds = %2
  %7 = getelementptr inbounds i8, ptr %0, i64 1128
  %8 = load ptr, ptr %7, align 8, !tbaa !24
  %9 = load i64, ptr %8, align 8, !tbaa !25
  %10 = getelementptr inbounds i8, ptr %8, i64 8
  %11 = load i64, ptr %10, align 8, !tbaa !25
  %12 = getelementptr inbounds i8, ptr %0, i64 1256
  %13 = load ptr, ptr %12, align 8, !tbaa !24
  %14 = load double, ptr %13, align 8, !tbaa !26
  %15 = getelementptr inbounds i8, ptr %13, i64 8
  %16 = load double, ptr %15, align 8, !tbaa !26
  %17 = getelementptr inbounds i8, ptr %13, i64 16
  %18 = load double, ptr %17, align 8, !tbaa !26
  br label %19

19:                                               ; preds = %2, %6
  %.0579 = phi i64 [ %9, %6 ], [ 359, %2 ]
  %.0569 = phi i64 [ %11, %6 ], [ -58, %2 ]
  %.0560 = phi double [ %14, %6 ], [ -9.190000e+02, %2 ]
  %.0552 = phi double [ %16, %6 ], [ -9.090000e+02, %2 ]
  %.0 = phi double [ %18, %6 ], [ 8.100000e+01, %2 ]
  switch i32 %4, label %20 [
    i32 0, label %125
    i32 1, label %195
    i32 2, label %199
    i32 3, label %217
    i32 4, label %232
    i32 5, label %247
    i32 6, label %261
    i32 7, label %303
    i32 8, label %323
    i32 9, label %427
    i32 10, label %471
    i32 11, label %475
    i32 12, label %493
    i32 13, label %508
    i32 14, label %523
    i32 15, label %537
    i32 16, label %613
    i32 17, label %627
  ]

20:                                               ; preds = %19
  %21 = load i64, ptr %0, align 8, !tbaa !27
  %22 = getelementptr inbounds i8, ptr %0, i64 825
  store i8 0, ptr %22, align 1, !tbaa !28
  %23 = getelementptr inbounds i8, ptr %0, i64 1062
  store i8 0, ptr %23, align 2, !tbaa !29
  %24 = getelementptr inbounds i8, ptr %0, i64 1328
  %25 = getelementptr inbounds i8, ptr %0, i64 1816
  %26 = getelementptr inbounds i8, ptr %0, i64 296
  %27 = getelementptr inbounds i8, ptr %0, i64 1808
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %24, i8 0, i64 32, i1 false)
  %28 = load i64, ptr %27, align 8, !tbaa !30
  %29 = icmp sgt i64 %28, 0
  tail call void @_ZN11alglib_impl21smoothnessmonitorinitEPNS_17smoothnessmonitorEPKNS_9ae_vectorEllbPNS_8ae_stateE(ptr noundef nonnull %25, ptr noundef nonnull %26, i64 noundef %21, i64 noundef 1, i1 noundef zeroext %29, ptr noundef %1)
  %30 = getelementptr inbounds i8, ptr %0, i64 1736
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %30, i64 noundef %21, ptr noundef %1)
  %.not.not629 = icmp sgt i64 %21, 0
  br i1 %.not.not629, label %.lr.ph632, label %._crit_edge633

.lr.ph632:                                        ; preds = %20
  %31 = getelementptr inbounds i8, ptr %0, i64 352
  %32 = getelementptr inbounds i8, ptr %0, i64 7576
  %33 = getelementptr inbounds i8, ptr %0, i64 1792
  %xtraiter669 = and i64 %21, 1
  %34 = icmp eq i64 %21, 1
  br i1 %34, label %._crit_edge633.loopexit.unr-lcssa, label %.lr.ph632.new

.lr.ph632.new:                                    ; preds = %.lr.ph632
  %unroll_iter671 = and i64 %21, 9223372036854775806
  br label %35

35:                                               ; preds = %35, %.lr.ph632.new
  %.1570630 = phi i64 [ 0, %.lr.ph632.new ], [ %59, %35 ]
  %niter672 = phi i64 [ 0, %.lr.ph632.new ], [ %niter672.next.1, %35 ]
  %36 = load ptr, ptr %31, align 8, !tbaa !24
  %37 = getelementptr inbounds double, ptr %36, i64 %.1570630
  %38 = load double, ptr %37, align 8, !tbaa !26
  %39 = load ptr, ptr %32, align 8, !tbaa !24
  %40 = getelementptr inbounds double, ptr %39, i64 %.1570630
  store double %38, ptr %40, align 8, !tbaa !26
  %41 = load ptr, ptr %31, align 8, !tbaa !24
  %42 = getelementptr inbounds double, ptr %41, i64 %.1570630
  %43 = load double, ptr %42, align 8, !tbaa !26
  %44 = fdiv double 1.000000e+00, %43
  %45 = load ptr, ptr %33, align 8, !tbaa !24
  %46 = getelementptr inbounds double, ptr %45, i64 %.1570630
  store double %44, ptr %46, align 8, !tbaa !26
  %47 = or disjoint i64 %.1570630, 1
  %48 = load ptr, ptr %31, align 8, !tbaa !24
  %49 = getelementptr inbounds double, ptr %48, i64 %47
  %50 = load double, ptr %49, align 8, !tbaa !26
  %51 = load ptr, ptr %32, align 8, !tbaa !24
  %52 = getelementptr inbounds double, ptr %51, i64 %47
  store double %50, ptr %52, align 8, !tbaa !26
  %53 = load ptr, ptr %31, align 8, !tbaa !24
  %54 = getelementptr inbounds double, ptr %53, i64 %47
  %55 = load double, ptr %54, align 8, !tbaa !26
  %56 = fdiv double 1.000000e+00, %55
  %57 = load ptr, ptr %33, align 8, !tbaa !24
  %58 = getelementptr inbounds double, ptr %57, i64 %47
  store double %56, ptr %58, align 8, !tbaa !26
  %59 = add nuw nsw i64 %.1570630, 2
  %niter672.next.1 = add i64 %niter672, 2
  %niter672.ncmp.1 = icmp eq i64 %niter672.next.1, %unroll_iter671
  br i1 %niter672.ncmp.1, label %._crit_edge633.loopexit.unr-lcssa, label %35, !llvm.loop !31

._crit_edge633.loopexit.unr-lcssa:                ; preds = %35, %.lr.ph632
  %.1570630.unr = phi i64 [ 0, %.lr.ph632 ], [ %59, %35 ]
  %lcmp.mod670.not = icmp eq i64 %xtraiter669, 0
  br i1 %lcmp.mod670.not, label %._crit_edge633, label %._crit_edge633.loopexit.epilog-lcssa

._crit_edge633.loopexit.epilog-lcssa:             ; preds = %._crit_edge633.loopexit.unr-lcssa
  %60 = load ptr, ptr %31, align 8, !tbaa !24
  %61 = getelementptr inbounds double, ptr %60, i64 %.1570630.unr
  %62 = load double, ptr %61, align 8, !tbaa !26
  %63 = load ptr, ptr %32, align 8, !tbaa !24
  %64 = getelementptr inbounds double, ptr %63, i64 %.1570630.unr
  store double %62, ptr %64, align 8, !tbaa !26
  %65 = load ptr, ptr %31, align 8, !tbaa !24
  %66 = getelementptr inbounds double, ptr %65, i64 %.1570630.unr
  %67 = load double, ptr %66, align 8, !tbaa !26
  %68 = fdiv double 1.000000e+00, %67
  %69 = load ptr, ptr %33, align 8, !tbaa !24
  %70 = getelementptr inbounds double, ptr %69, i64 %.1570630.unr
  store double %68, ptr %70, align 8, !tbaa !26
  br label %._crit_edge633

._crit_edge633:                                   ; preds = %._crit_edge633.loopexit.epilog-lcssa, %._crit_edge633.loopexit.unr-lcssa, %20
  tail call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %71 = getelementptr inbounds i8, ptr %0, i64 360
  %72 = load double, ptr %71, align 8, !tbaa !33
  %73 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %72, double noundef 0.000000e+00)
  br i1 %73, label %74, label %149

74:                                               ; preds = %._crit_edge633
  %75 = getelementptr inbounds i8, ptr %0, i64 1800
  %76 = load double, ptr %75, align 8, !tbaa !34
  %77 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %76, double noundef 0.000000e+00)
  br i1 %77, label %.loopexit, label %149

.loopexit.loopexit.unr-lcssa:                     ; preds = %134, %.lr.ph628
  %.3572626.unr = phi i64 [ 0, %.lr.ph628 ], [ %148, %134 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit, label %.loopexit.loopexit.epilog-lcssa

.loopexit.loopexit.epilog-lcssa:                  ; preds = %.loopexit.loopexit.unr-lcssa
  %78 = load ptr, ptr %131, align 8, !tbaa !24
  %79 = getelementptr inbounds double, ptr %78, i64 %.3572626.unr
  %80 = load double, ptr %79, align 8, !tbaa !26
  %81 = load ptr, ptr %132, align 8, !tbaa !24
  %82 = load ptr, ptr %81, align 8, !tbaa !35
  %83 = getelementptr inbounds double, ptr %82, i64 %.3572626.unr
  store double %80, ptr %83, align 8, !tbaa !26
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit.epilog-lcssa, %.loopexit.loopexit.unr-lcssa, %125, %74
  %.1580 = phi i64 [ %21, %74 ], [ %.0579, %125 ], [ %.0579, %.loopexit.loopexit.unr-lcssa ], [ %.0579, %.loopexit.loopexit.epilog-lcssa ]
  %84 = getelementptr inbounds i8, ptr %0, i64 1816
  %85 = getelementptr inbounds i8, ptr %0, i64 840
  %86 = getelementptr inbounds i8, ptr %0, i64 296
  %87 = getelementptr inbounds i8, ptr %0, i64 1800
  %88 = load double, ptr %87, align 8, !tbaa !34
  %89 = tail call noundef zeroext i1 @_ZN11alglib_impl34smoothnessmonitorcheckgradientatx0EPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_S4_bdPNS_8ae_stateE(ptr noundef nonnull %84, ptr noundef nonnull %85, ptr noundef nonnull %86, ptr noundef nonnull %86, ptr noundef nonnull %86, i1 noundef zeroext false, double noundef %88, ptr noundef %1)
  br i1 %89, label %.preheader, label %149

.preheader:                                       ; preds = %.loopexit
  %.not600.not640 = icmp sgt i64 %.1580, 0
  br i1 %.not600.not640, label %.lr.ph642, label %._crit_edge643

.lr.ph642:                                        ; preds = %.preheader
  %90 = getelementptr inbounds i8, ptr %0, i64 5712
  %91 = getelementptr inbounds i8, ptr %0, i64 976
  %xtraiter679 = and i64 %.1580, 3
  %92 = icmp ult i64 %.1580, 4
  br i1 %92, label %._crit_edge643.loopexit.unr-lcssa, label %.lr.ph642.new

.lr.ph642.new:                                    ; preds = %.lr.ph642
  %unroll_iter682 = and i64 %.1580, 9223372036854775804
  br label %93

93:                                               ; preds = %93, %.lr.ph642.new
  %.2571641 = phi i64 [ 0, %.lr.ph642.new ], [ %117, %93 ]
  %niter683 = phi i64 [ 0, %.lr.ph642.new ], [ %niter683.next.3, %93 ]
  %94 = load ptr, ptr %90, align 8, !tbaa !24
  %95 = getelementptr inbounds double, ptr %94, i64 %.2571641
  %96 = load double, ptr %95, align 8, !tbaa !26
  %97 = load ptr, ptr %91, align 8, !tbaa !24
  %98 = getelementptr inbounds double, ptr %97, i64 %.2571641
  store double %96, ptr %98, align 8, !tbaa !26
  %99 = or disjoint i64 %.2571641, 1
  %100 = load ptr, ptr %90, align 8, !tbaa !24
  %101 = getelementptr inbounds double, ptr %100, i64 %99
  %102 = load double, ptr %101, align 8, !tbaa !26
  %103 = load ptr, ptr %91, align 8, !tbaa !24
  %104 = getelementptr inbounds double, ptr %103, i64 %99
  store double %102, ptr %104, align 8, !tbaa !26
  %105 = or disjoint i64 %.2571641, 2
  %106 = load ptr, ptr %90, align 8, !tbaa !24
  %107 = getelementptr inbounds double, ptr %106, i64 %105
  %108 = load double, ptr %107, align 8, !tbaa !26
  %109 = load ptr, ptr %91, align 8, !tbaa !24
  %110 = getelementptr inbounds double, ptr %109, i64 %105
  store double %108, ptr %110, align 8, !tbaa !26
  %111 = or disjoint i64 %.2571641, 3
  %112 = load ptr, ptr %90, align 8, !tbaa !24
  %113 = getelementptr inbounds double, ptr %112, i64 %111
  %114 = load double, ptr %113, align 8, !tbaa !26
  %115 = load ptr, ptr %91, align 8, !tbaa !24
  %116 = getelementptr inbounds double, ptr %115, i64 %111
  store double %114, ptr %116, align 8, !tbaa !26
  %117 = add nuw nsw i64 %.2571641, 4
  %niter683.next.3 = add i64 %niter683, 4
  %niter683.ncmp.3 = icmp eq i64 %niter683.next.3, %unroll_iter682
  br i1 %niter683.ncmp.3, label %._crit_edge643.loopexit.unr-lcssa, label %93, !llvm.loop !36

._crit_edge643.loopexit.unr-lcssa:                ; preds = %93, %.lr.ph642
  %.2571641.unr = phi i64 [ 0, %.lr.ph642 ], [ %117, %93 ]
  %lcmp.mod681.not = icmp eq i64 %xtraiter679, 0
  br i1 %lcmp.mod681.not, label %._crit_edge643, label %.epil.preheader678

.epil.preheader678:                               ; preds = %._crit_edge643.loopexit.unr-lcssa, %.epil.preheader678
  %.2571641.epil = phi i64 [ %123, %.epil.preheader678 ], [ %.2571641.unr, %._crit_edge643.loopexit.unr-lcssa ]
  %epil.iter680 = phi i64 [ %epil.iter680.next, %.epil.preheader678 ], [ 0, %._crit_edge643.loopexit.unr-lcssa ]
  %118 = load ptr, ptr %90, align 8, !tbaa !24
  %119 = getelementptr inbounds double, ptr %118, i64 %.2571641.epil
  %120 = load double, ptr %119, align 8, !tbaa !26
  %121 = load ptr, ptr %91, align 8, !tbaa !24
  %122 = getelementptr inbounds double, ptr %121, i64 %.2571641.epil
  store double %120, ptr %122, align 8, !tbaa !26
  %123 = add nuw nsw i64 %.2571641.epil, 1
  %epil.iter680.next = add i64 %epil.iter680, 1
  %epil.iter680.cmp.not = icmp eq i64 %epil.iter680.next, %xtraiter679
  br i1 %epil.iter680.cmp.not, label %._crit_edge643, label %.epil.preheader678, !llvm.loop !37

._crit_edge643:                                   ; preds = %._crit_edge643.loopexit.unr-lcssa, %.epil.preheader678, %.preheader
  %.2571.lcssa = phi i64 [ 0, %.preheader ], [ %.1580, %.epil.preheader678 ], [ %.1580, %._crit_edge643.loopexit.unr-lcssa ]
  %124 = getelementptr inbounds i8, ptr %0, i64 1057
  store i8 1, ptr %124, align 1, !tbaa !39
  br label %838

125:                                              ; preds = %19
  %126 = getelementptr inbounds i8, ptr %0, i64 1057
  store i8 0, ptr %126, align 1, !tbaa !39
  %127 = getelementptr inbounds i8, ptr %0, i64 984
  %128 = load double, ptr %127, align 8, !tbaa !40
  %129 = getelementptr inbounds i8, ptr %0, i64 5776
  %130 = load ptr, ptr %129, align 8, !tbaa !24
  store double %128, ptr %130, align 8, !tbaa !26
  %.not598.not625 = icmp sgt i64 %.0579, 0
  br i1 %.not598.not625, label %.lr.ph628, label %.loopexit

.lr.ph628:                                        ; preds = %125
  %131 = getelementptr inbounds i8, ptr %0, i64 1048
  %132 = getelementptr inbounds i8, ptr %0, i64 5856
  %xtraiter = and i64 %.0579, 1
  %133 = icmp eq i64 %.0579, 1
  br i1 %133, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph628.new

.lr.ph628.new:                                    ; preds = %.lr.ph628
  %unroll_iter = and i64 %.0579, 9223372036854775806
  br label %134

134:                                              ; preds = %134, %.lr.ph628.new
  %.3572626 = phi i64 [ 0, %.lr.ph628.new ], [ %148, %134 ]
  %niter = phi i64 [ 0, %.lr.ph628.new ], [ %niter.next.1, %134 ]
  %135 = load ptr, ptr %131, align 8, !tbaa !24
  %136 = getelementptr inbounds double, ptr %135, i64 %.3572626
  %137 = load double, ptr %136, align 8, !tbaa !26
  %138 = load ptr, ptr %132, align 8, !tbaa !24
  %139 = load ptr, ptr %138, align 8, !tbaa !35
  %140 = getelementptr inbounds double, ptr %139, i64 %.3572626
  store double %137, ptr %140, align 8, !tbaa !26
  %141 = or disjoint i64 %.3572626, 1
  %142 = load ptr, ptr %131, align 8, !tbaa !24
  %143 = getelementptr inbounds double, ptr %142, i64 %141
  %144 = load double, ptr %143, align 8, !tbaa !26
  %145 = load ptr, ptr %132, align 8, !tbaa !24
  %146 = load ptr, ptr %145, align 8, !tbaa !35
  %147 = getelementptr inbounds double, ptr %146, i64 %141
  store double %144, ptr %147, align 8, !tbaa !26
  %148 = add nuw nsw i64 %.3572626, 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 %.loopexit.loopexit.unr-lcssa, label %134, !llvm.loop !41

149:                                              ; preds = %.loopexit, %._crit_edge633, %74
  %.2581 = phi i64 [ %.1580, %.loopexit ], [ %21, %74 ], [ %21, %._crit_edge633 ]
  %.not599.not634 = icmp sgt i64 %.2581, 0
  br i1 %.not599.not634, label %.lr.ph637, label %._crit_edge638

.lr.ph637:                                        ; preds = %149
  %150 = getelementptr inbounds i8, ptr %0, i64 896
  %151 = getelementptr inbounds i8, ptr %0, i64 976
  %xtraiter674 = and i64 %.2581, 3
  %152 = icmp ult i64 %.2581, 4
  br i1 %152, label %._crit_edge638.loopexit.unr-lcssa, label %.lr.ph637.new

.lr.ph637.new:                                    ; preds = %.lr.ph637
  %unroll_iter676 = and i64 %.2581, 9223372036854775804
  br label %153

153:                                              ; preds = %153, %.lr.ph637.new
  %.4573635 = phi i64 [ 0, %.lr.ph637.new ], [ %177, %153 ]
  %niter677 = phi i64 [ 0, %.lr.ph637.new ], [ %niter677.next.3, %153 ]
  %154 = load ptr, ptr %150, align 8, !tbaa !24
  %155 = getelementptr inbounds double, ptr %154, i64 %.4573635
  %156 = load double, ptr %155, align 8, !tbaa !26
  %157 = load ptr, ptr %151, align 8, !tbaa !24
  %158 = getelementptr inbounds double, ptr %157, i64 %.4573635
  store double %156, ptr %158, align 8, !tbaa !26
  %159 = or disjoint i64 %.4573635, 1
  %160 = load ptr, ptr %150, align 8, !tbaa !24
  %161 = getelementptr inbounds double, ptr %160, i64 %159
  %162 = load double, ptr %161, align 8, !tbaa !26
  %163 = load ptr, ptr %151, align 8, !tbaa !24
  %164 = getelementptr inbounds double, ptr %163, i64 %159
  store double %162, ptr %164, align 8, !tbaa !26
  %165 = or disjoint i64 %.4573635, 2
  %166 = load ptr, ptr %150, align 8, !tbaa !24
  %167 = getelementptr inbounds double, ptr %166, i64 %165
  %168 = load double, ptr %167, align 8, !tbaa !26
  %169 = load ptr, ptr %151, align 8, !tbaa !24
  %170 = getelementptr inbounds double, ptr %169, i64 %165
  store double %168, ptr %170, align 8, !tbaa !26
  %171 = or disjoint i64 %.4573635, 3
  %172 = load ptr, ptr %150, align 8, !tbaa !24
  %173 = getelementptr inbounds double, ptr %172, i64 %171
  %174 = load double, ptr %173, align 8, !tbaa !26
  %175 = load ptr, ptr %151, align 8, !tbaa !24
  %176 = getelementptr inbounds double, ptr %175, i64 %171
  store double %174, ptr %176, align 8, !tbaa !26
  %177 = add nuw nsw i64 %.4573635, 4
  %niter677.next.3 = add i64 %niter677, 4
  %niter677.ncmp.3 = icmp eq i64 %niter677.next.3, %unroll_iter676
  br i1 %niter677.ncmp.3, label %._crit_edge638.loopexit.unr-lcssa, label %153, !llvm.loop !42

._crit_edge638.loopexit.unr-lcssa:                ; preds = %153, %.lr.ph637
  %.4573635.unr = phi i64 [ 0, %.lr.ph637 ], [ %177, %153 ]
  %lcmp.mod675.not = icmp eq i64 %xtraiter674, 0
  br i1 %lcmp.mod675.not, label %._crit_edge638, label %.epil.preheader673

.epil.preheader673:                               ; preds = %._crit_edge638.loopexit.unr-lcssa, %.epil.preheader673
  %.4573635.epil = phi i64 [ %183, %.epil.preheader673 ], [ %.4573635.unr, %._crit_edge638.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader673 ], [ 0, %._crit_edge638.loopexit.unr-lcssa ]
  %178 = load ptr, ptr %150, align 8, !tbaa !24
  %179 = getelementptr inbounds double, ptr %178, i64 %.4573635.epil
  %180 = load double, ptr %179, align 8, !tbaa !26
  %181 = load ptr, ptr %151, align 8, !tbaa !24
  %182 = getelementptr inbounds double, ptr %181, i64 %.4573635.epil
  store double %180, ptr %182, align 8, !tbaa !26
  %183 = add nuw nsw i64 %.4573635.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter674
  br i1 %epil.iter.cmp.not, label %._crit_edge638, label %.epil.preheader673, !llvm.loop !43

._crit_edge638:                                   ; preds = %._crit_edge638.loopexit.unr-lcssa, %.epil.preheader673, %149
  %.4573.lcssa = phi i64 [ 0, %149 ], [ %.2581, %.epil.preheader673 ], [ %.2581, %._crit_edge638.loopexit.unr-lcssa ]
  %184 = add nsw i64 %.2581, -1
  %185 = getelementptr inbounds i8, ptr %0, i64 448
  %186 = load ptr, ptr %185, align 8, !tbaa !24
  %187 = getelementptr inbounds i8, ptr %0, i64 976
  %188 = load ptr, ptr %187, align 8, !tbaa !24
  %189 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %184)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %186, i64 noundef 1, ptr noundef %188, i64 noundef 1, i64 noundef %189)
  tail call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %190 = getelementptr inbounds i8, ptr %0, i64 360
  %191 = load double, ptr %190, align 8, !tbaa !33
  %192 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %191, double noundef 0.000000e+00)
  br i1 %192, label %197, label %193

193:                                              ; preds = %._crit_edge638
  %194 = getelementptr inbounds i8, ptr %0, i64 1057
  store i8 1, ptr %194, align 1, !tbaa !39
  br label %838

195:                                              ; preds = %19
  %196 = getelementptr inbounds i8, ptr %0, i64 1057
  store i8 0, ptr %196, align 1, !tbaa !39
  br label %297

197:                                              ; preds = %._crit_edge638
  %198 = getelementptr inbounds i8, ptr %0, i64 1056
  store i8 1, ptr %198, align 8, !tbaa !44
  br label %838

199:                                              ; preds = %19
  %200 = getelementptr inbounds i8, ptr %0, i64 984
  %201 = load double, ptr %200, align 8, !tbaa !40
  %202 = getelementptr inbounds i8, ptr %0, i64 1552
  store double %201, ptr %202, align 8, !tbaa !45
  br label %203

203:                                              ; preds = %261, %199
  %.5574 = phi i64 [ 0, %199 ], [ %291, %261 ]
  %.not592 = icmp slt i64 %.5574, %.0579
  br i1 %.not592, label %204, label %292

204:                                              ; preds = %203
  %205 = getelementptr inbounds i8, ptr %0, i64 976
  %206 = load ptr, ptr %205, align 8, !tbaa !24
  %207 = getelementptr inbounds double, ptr %206, i64 %.5574
  %208 = load double, ptr %207, align 8, !tbaa !26
  %209 = getelementptr inbounds i8, ptr %0, i64 360
  %210 = load double, ptr %209, align 8, !tbaa !33
  %211 = getelementptr inbounds i8, ptr %0, i64 352
  %212 = load ptr, ptr %211, align 8, !tbaa !24
  %213 = getelementptr inbounds double, ptr %212, i64 %.5574
  %214 = load double, ptr %213, align 8, !tbaa !26
  %215 = fneg double %210
  %216 = tail call double @llvm.fmuladd.f64(double %215, double %214, double %208)
  store double %216, ptr %207, align 8, !tbaa !26
  br label %838

217:                                              ; preds = %19
  %218 = getelementptr inbounds i8, ptr %0, i64 984
  %219 = load double, ptr %218, align 8, !tbaa !40
  %220 = getelementptr inbounds i8, ptr %0, i64 1560
  store double %219, ptr %220, align 8, !tbaa !46
  %221 = getelementptr inbounds i8, ptr %0, i64 360
  %222 = load double, ptr %221, align 8, !tbaa !33
  %223 = getelementptr inbounds i8, ptr %0, i64 352
  %224 = load ptr, ptr %223, align 8, !tbaa !24
  %225 = getelementptr inbounds double, ptr %224, i64 %.0569
  %226 = load double, ptr %225, align 8, !tbaa !26
  %227 = fmul double %222, -5.000000e-01
  %228 = tail call double @llvm.fmuladd.f64(double %227, double %226, double %.0552)
  %229 = getelementptr inbounds i8, ptr %0, i64 976
  %230 = load ptr, ptr %229, align 8, !tbaa !24
  %231 = getelementptr inbounds double, ptr %230, i64 %.0569
  store double %228, ptr %231, align 8, !tbaa !26
  br label %838

232:                                              ; preds = %19
  %233 = getelementptr inbounds i8, ptr %0, i64 984
  %234 = load double, ptr %233, align 8, !tbaa !40
  %235 = getelementptr inbounds i8, ptr %0, i64 1568
  store double %234, ptr %235, align 8, !tbaa !47
  %236 = getelementptr inbounds i8, ptr %0, i64 360
  %237 = load double, ptr %236, align 8, !tbaa !33
  %238 = fmul double %237, 5.000000e-01
  %239 = getelementptr inbounds i8, ptr %0, i64 352
  %240 = load ptr, ptr %239, align 8, !tbaa !24
  %241 = getelementptr inbounds double, ptr %240, i64 %.0569
  %242 = load double, ptr %241, align 8, !tbaa !26
  %243 = tail call double @llvm.fmuladd.f64(double %238, double %242, double %.0552)
  %244 = getelementptr inbounds i8, ptr %0, i64 976
  %245 = load ptr, ptr %244, align 8, !tbaa !24
  %246 = getelementptr inbounds double, ptr %245, i64 %.0569
  store double %243, ptr %246, align 8, !tbaa !26
  br label %838

247:                                              ; preds = %19
  %248 = getelementptr inbounds i8, ptr %0, i64 984
  %249 = load double, ptr %248, align 8, !tbaa !40
  %250 = getelementptr inbounds i8, ptr %0, i64 1576
  store double %249, ptr %250, align 8, !tbaa !48
  %251 = getelementptr inbounds i8, ptr %0, i64 360
  %252 = load double, ptr %251, align 8, !tbaa !33
  %253 = getelementptr inbounds i8, ptr %0, i64 352
  %254 = load ptr, ptr %253, align 8, !tbaa !24
  %255 = getelementptr inbounds double, ptr %254, i64 %.0569
  %256 = load double, ptr %255, align 8, !tbaa !26
  %257 = tail call double @llvm.fmuladd.f64(double %252, double %256, double %.0552)
  %258 = getelementptr inbounds i8, ptr %0, i64 976
  %259 = load ptr, ptr %258, align 8, !tbaa !24
  %260 = getelementptr inbounds double, ptr %259, i64 %.0569
  store double %257, ptr %260, align 8, !tbaa !26
  br label %838

261:                                              ; preds = %19
  %262 = getelementptr inbounds i8, ptr %0, i64 984
  %263 = load double, ptr %262, align 8, !tbaa !40
  %264 = getelementptr inbounds i8, ptr %0, i64 1584
  store double %263, ptr %264, align 8, !tbaa !49
  %265 = getelementptr inbounds i8, ptr %0, i64 976
  %266 = load ptr, ptr %265, align 8, !tbaa !24
  %267 = getelementptr inbounds double, ptr %266, i64 %.0569
  store double %.0552, ptr %267, align 8, !tbaa !26
  %268 = getelementptr inbounds i8, ptr %0, i64 1576
  %269 = load double, ptr %268, align 8, !tbaa !48
  %270 = getelementptr inbounds i8, ptr %0, i64 1568
  %271 = load double, ptr %270, align 8, !tbaa !47
  %272 = fsub double %269, %271
  %273 = load double, ptr %264, align 8, !tbaa !49
  %274 = getelementptr inbounds i8, ptr %0, i64 1560
  %275 = load double, ptr %274, align 8, !tbaa !46
  %276 = fsub double %273, %275
  %277 = fneg double %276
  %278 = tail call double @llvm.fmuladd.f64(double %272, double 8.000000e+00, double %277)
  %279 = getelementptr inbounds i8, ptr %0, i64 360
  %280 = load double, ptr %279, align 8, !tbaa !33
  %281 = fmul double %280, 6.000000e+00
  %282 = getelementptr inbounds i8, ptr %0, i64 352
  %283 = load ptr, ptr %282, align 8, !tbaa !24
  %284 = getelementptr inbounds double, ptr %283, i64 %.0569
  %285 = load double, ptr %284, align 8, !tbaa !26
  %286 = fmul double %281, %285
  %287 = fdiv double %278, %286
  %288 = getelementptr inbounds i8, ptr %0, i64 1048
  %289 = load ptr, ptr %288, align 8, !tbaa !24
  %290 = getelementptr inbounds double, ptr %289, i64 %.0569
  store double %287, ptr %290, align 8, !tbaa !26
  %291 = add nsw i64 %.0569, 1
  br label %203

292:                                              ; preds = %203
  %293 = getelementptr inbounds i8, ptr %0, i64 1552
  %294 = load double, ptr %293, align 8, !tbaa !45
  %295 = getelementptr inbounds i8, ptr %0, i64 984
  store double %294, ptr %295, align 8, !tbaa !40
  %296 = getelementptr inbounds i8, ptr %0, i64 1056
  store i8 0, ptr %296, align 8, !tbaa !44
  br label %297

297:                                              ; preds = %292, %195
  %.6575 = phi i64 [ %.0569, %195 ], [ %.5574, %292 ]
  %298 = getelementptr inbounds i8, ptr %0, i64 57
  %299 = load i8, ptr %298, align 1, !tbaa !50, !range !51, !noundef !52
  %300 = trunc nuw i8 %299 to i1
  br i1 %300, label %301, label %305

301:                                              ; preds = %297
  tail call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %302 = getelementptr inbounds i8, ptr %0, i64 1059
  store i8 1, ptr %302, align 1, !tbaa !53
  br label %838

303:                                              ; preds = %19
  %304 = getelementptr inbounds i8, ptr %0, i64 1059
  store i8 0, ptr %304, align 1, !tbaa !53
  br label %305

305:                                              ; preds = %297, %303
  %.7576 = phi i64 [ %.6575, %297 ], [ %.0569, %303 ]
  %306 = getelementptr inbounds i8, ptr %0, i64 984
  %307 = load double, ptr %306, align 8, !tbaa !40
  %308 = getelementptr inbounds i8, ptr %0, i64 832
  tail call void @_ZN11alglib_impl11trimprepareEdPdPNS_8ae_stateE(double noundef %307, ptr noundef nonnull %308, ptr noundef %1)
  %309 = getelementptr inbounds i8, ptr %0, i64 456
  %310 = getelementptr inbounds i8, ptr %0, i64 512
  %311 = load ptr, ptr %310, align 8, !tbaa !24
  %312 = getelementptr inbounds i8, ptr %0, i64 1048
  %313 = load ptr, ptr %312, align 8, !tbaa !24
  %314 = add nsw i64 %.0579, -1
  %315 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %314)
  tail call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %311, i64 noundef 1, ptr noundef %313, i64 noundef 1, i64 noundef %315)
  %316 = getelementptr inbounds i8, ptr %0, i64 1608
  %317 = getelementptr inbounds i8, ptr %0, i64 1672
  tail call void @_ZN11alglib_implL28mincg_preconditionedmultiplyEPNS_10mincgstateEPNS_9ae_vectorES3_S3_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %309, ptr noundef nonnull %316, ptr noundef nonnull %317, ptr noundef %1)
  %318 = getelementptr inbounds i8, ptr %0, i64 56
  %319 = load i8, ptr %318, align 8, !tbaa !54, !range !51, !noundef !52
  %320 = trunc nuw i8 %319 to i1
  br i1 %320, label %321, label %325

321:                                              ; preds = %305
  tail call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %322 = getelementptr inbounds i8, ptr %0, i64 1058
  store i8 1, ptr %322, align 2, !tbaa !55
  br label %838

323:                                              ; preds = %19
  %324 = getelementptr inbounds i8, ptr %0, i64 1058
  store i8 0, ptr %324, align 2, !tbaa !55
  br label %325

325:                                              ; preds = %305, %323
  %326 = getelementptr inbounds i8, ptr %0, i64 825
  %327 = load i8, ptr %326, align 1, !tbaa !28, !range !51, !noundef !52
  %328 = trunc nuw i8 %327 to i1
  br i1 %328, label %335, label %329

329:                                              ; preds = %325
  %330 = getelementptr inbounds i8, ptr %0, i64 1062
  %331 = load i8, ptr %330, align 2, !tbaa !29, !range !51, !noundef !52
  %332 = trunc nuw i8 %331 to i1
  br i1 %332, label %335, label %.preheader602

.preheader602:                                    ; preds = %329
  %.not593.not603 = icmp sgt i64 %.0579, 0
  br i1 %.not593.not603, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader602
  %333 = getelementptr inbounds i8, ptr %0, i64 1048
  %334 = getelementptr inbounds i8, ptr %0, i64 352
  br label %343

335:                                              ; preds = %329, %325
  %336 = getelementptr inbounds i8, ptr %0, i64 576
  %337 = load ptr, ptr %336, align 8, !tbaa !24
  %338 = getelementptr inbounds i8, ptr %0, i64 448
  %339 = load ptr, ptr %338, align 8, !tbaa !24
  %340 = add nsw i64 %.0579, -1
  %341 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %340)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %337, i64 noundef 1, ptr noundef %339, i64 noundef 1, i64 noundef %341)
  %342 = getelementptr inbounds i8, ptr %0, i64 1344
  store i64 8, ptr %342, align 8, !tbaa !56
  br label %849

343:                                              ; preds = %.lr.ph, %343
  %.1553605 = phi double [ 0.000000e+00, %.lr.ph ], [ %352, %343 ]
  %.8577604 = phi i64 [ 0, %.lr.ph ], [ %353, %343 ]
  %344 = load ptr, ptr %333, align 8, !tbaa !24
  %345 = getelementptr inbounds double, ptr %344, i64 %.8577604
  %346 = load double, ptr %345, align 8, !tbaa !26
  %347 = load ptr, ptr %334, align 8, !tbaa !24
  %348 = getelementptr inbounds double, ptr %347, i64 %.8577604
  %349 = load double, ptr %348, align 8, !tbaa !26
  %350 = fmul double %346, %349
  %351 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %350, ptr noundef %1)
  %352 = fadd double %.1553605, %351
  %353 = add nuw nsw i64 %.8577604, 1
  %exitcond.not = icmp eq i64 %353, %.0579
  br i1 %exitcond.not, label %._crit_edge, label %343, !llvm.loop !57

._crit_edge:                                      ; preds = %343, %.preheader602
  %.8577.lcssa = phi i64 [ 0, %.preheader602 ], [ %.0579, %343 ]
  %.1553.lcssa = phi double [ 0.000000e+00, %.preheader602 ], [ %352, %343 ]
  %354 = add nsw i64 %.0579, -1
  %355 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.1553.lcssa, ptr noundef %1)
  %356 = getelementptr inbounds i8, ptr %0, i64 8
  %357 = load double, ptr %356, align 8, !tbaa !58
  %358 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %355, double noundef %357)
  br i1 %358, label %359, label %366

359:                                              ; preds = %._crit_edge
  %360 = getelementptr inbounds i8, ptr %0, i64 576
  %361 = load ptr, ptr %360, align 8, !tbaa !24
  %362 = getelementptr inbounds i8, ptr %0, i64 448
  %363 = load ptr, ptr %362, align 8, !tbaa !24
  %364 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %354)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %361, i64 noundef 1, ptr noundef %363, i64 noundef 1, i64 noundef %364)
  %365 = getelementptr inbounds i8, ptr %0, i64 1344
  store i64 4, ptr %365, align 8, !tbaa !56
  br label %849

366:                                              ; preds = %._crit_edge
  %367 = getelementptr inbounds i8, ptr %0, i64 1336
  store i64 1, ptr %367, align 8, !tbaa !59
  %368 = getelementptr inbounds i8, ptr %0, i64 384
  store i64 0, ptr %368, align 8, !tbaa !60
  %369 = getelementptr inbounds i8, ptr %0, i64 984
  %370 = load double, ptr %369, align 8, !tbaa !40
  %371 = getelementptr inbounds i8, ptr %0, i64 712
  store double %370, ptr %371, align 8, !tbaa !61
  %372 = getelementptr inbounds i8, ptr %0, i64 72
  %373 = load i64, ptr %372, align 8, !tbaa !62
  %374 = and i64 %373, -2
  %switch = icmp eq i64 %374, 2
  br i1 %switch, label %375, label %381

375:                                              ; preds = %366
  %376 = getelementptr inbounds i8, ptr %0, i64 512
  %377 = load ptr, ptr %376, align 8, !tbaa !24
  %378 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %354)
  %379 = tail call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %377, i64 noundef 1, ptr noundef %377, i64 noundef 1, i64 noundef %378)
  %380 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %379, ptr noundef %1)
  br label %387

381:                                              ; preds = %366
  %382 = getelementptr inbounds i8, ptr %0, i64 48
  %383 = load double, ptr %382, align 8, !tbaa !63
  %384 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %383, double noundef 0.000000e+00)
  br i1 %384, label %385, label %387

385:                                              ; preds = %381
  %386 = load double, ptr %382, align 8, !tbaa !63
  br label %387

387:                                              ; preds = %381, %385, %375
  %.sink = phi double [ %386, %385 ], [ %380, %375 ], [ 1.000000e+00, %381 ]
  %.2554 = phi double [ %.1553.lcssa, %385 ], [ %379, %375 ], [ %.1553.lcssa, %381 ]
  %388 = getelementptr inbounds i8, ptr %0, i64 800
  store double %.sink, ptr %388, align 8, !tbaa !64
  %389 = load i64, ptr @_ZN11alglib_implL20mincg_rscountdownlenE, align 8, !tbaa !25
  %390 = getelementptr inbounds i8, ptr %0, i64 904
  store i64 %389, ptr %390, align 8, !tbaa !65
  br label %391

391:                                              ; preds = %824, %387
  %.9578 = phi i64 [ %.8577.lcssa, %387 ], [ %.17.lcssa, %824 ]
  %.1561 = phi double [ %.0560, %387 ], [ %.8568, %824 ]
  %.3555 = phi double [ %.2554, %387 ], [ %.7559.lcssa, %824 ]
  %.1 = phi double [ %.0, %387 ], [ %.6, %824 ]
  %392 = getelementptr inbounds i8, ptr %0, i64 824
  store i8 0, ptr %392, align 8, !tbaa !66
  %393 = getelementptr inbounds i8, ptr %0, i64 825
  store i8 0, ptr %393, align 1, !tbaa !28
  %394 = getelementptr inbounds i8, ptr %0, i64 792
  %395 = load ptr, ptr %394, align 8, !tbaa !24
  %396 = getelementptr inbounds i8, ptr %0, i64 1048
  %397 = load ptr, ptr %396, align 8, !tbaa !24
  %398 = add nsw i64 %.0579, -1
  %399 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %398)
  tail call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %395, i64 noundef 1, ptr noundef %397, i64 noundef 1, i64 noundef %399)
  %400 = getelementptr inbounds i8, ptr %0, i64 648
  %401 = getelementptr inbounds i8, ptr %0, i64 704
  %402 = load ptr, ptr %401, align 8, !tbaa !24
  %403 = getelementptr inbounds i8, ptr %0, i64 512
  %404 = load ptr, ptr %403, align 8, !tbaa !24
  %405 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %398)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %402, i64 noundef 1, ptr noundef %404, i64 noundef 1, i64 noundef %405)
  %406 = getelementptr inbounds i8, ptr %0, i64 976
  %407 = load ptr, ptr %406, align 8, !tbaa !24
  %408 = getelementptr inbounds i8, ptr %0, i64 448
  %409 = load ptr, ptr %408, align 8, !tbaa !24
  %410 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %398)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %407, i64 noundef 1, ptr noundef %409, i64 noundef 1, i64 noundef %410)
  %411 = getelementptr inbounds i8, ptr %0, i64 376
  store i64 0, ptr %411, align 8, !tbaa !67
  %412 = getelementptr inbounds i8, ptr %0, i64 720
  store double 1.000000e+00, ptr %412, align 8, !tbaa !68
  tail call void @_ZN11alglib_impl16linminnormalizedEPNS_9ae_vectorEPdlPNS_8ae_stateE(ptr noundef nonnull %400, ptr noundef nonnull %412, i64 noundef %.0579, ptr noundef %1)
  %413 = getelementptr inbounds i8, ptr %0, i64 800
  %414 = load double, ptr %413, align 8, !tbaa !64
  %415 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %414, double noundef 0.000000e+00)
  br i1 %415, label %416, label %418

416:                                              ; preds = %391
  %417 = load double, ptr %413, align 8, !tbaa !64
  store double %417, ptr %412, align 8, !tbaa !68
  br label %418

418:                                              ; preds = %416, %391
  %419 = getelementptr inbounds i8, ptr %0, i64 40
  %420 = load double, ptr %419, align 8, !tbaa !69
  %421 = getelementptr inbounds i8, ptr %0, i64 728
  store double %420, ptr %421, align 8, !tbaa !70
  %422 = getelementptr inbounds i8, ptr %0, i64 57
  %423 = load i8, ptr %422, align 1, !tbaa !50, !range !51, !noundef !52
  %424 = trunc nuw i8 %423 to i1
  br i1 %424, label %425, label %429

425:                                              ; preds = %418
  tail call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %426 = getelementptr inbounds i8, ptr %0, i64 1060
  store i8 1, ptr %426, align 4, !tbaa !71
  br label %838

427:                                              ; preds = %19
  %428 = getelementptr inbounds i8, ptr %0, i64 1060
  store i8 0, ptr %428, align 4, !tbaa !71
  br label %429

429:                                              ; preds = %418, %427
  %.10 = phi i64 [ %.9578, %418 ], [ %.0569, %427 ]
  %.2562 = phi double [ %.1561, %418 ], [ %.0560, %427 ]
  %.4556 = phi double [ %.3555, %418 ], [ %.0552, %427 ]
  %.2 = phi double [ %.1, %418 ], [ %.0, %427 ]
  %430 = getelementptr inbounds i8, ptr %0, i64 825
  %431 = load i8, ptr %430, align 1, !tbaa !28, !range !51, !noundef !52
  %432 = trunc nuw i8 %431 to i1
  br i1 %432, label %433, label %441

433:                                              ; preds = %429
  %434 = getelementptr inbounds i8, ptr %0, i64 576
  %435 = load ptr, ptr %434, align 8, !tbaa !24
  %436 = getelementptr inbounds i8, ptr %0, i64 976
  %437 = load ptr, ptr %436, align 8, !tbaa !24
  %438 = add nsw i64 %.0579, -1
  %439 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %438)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %435, i64 noundef 1, ptr noundef %437, i64 noundef 1, i64 noundef %439)
  %440 = getelementptr inbounds i8, ptr %0, i64 1344
  store i64 8, ptr %440, align 8, !tbaa !56
  br label %849

441:                                              ; preds = %429
  %442 = getelementptr inbounds i8, ptr %0, i64 1816
  %443 = getelementptr inbounds i8, ptr %0, i64 296
  %444 = getelementptr inbounds i8, ptr %0, i64 1736
  %445 = getelementptr inbounds i8, ptr %0, i64 920
  %446 = getelementptr inbounds i8, ptr %0, i64 984
  %447 = load double, ptr %446, align 8, !tbaa !40
  %448 = getelementptr inbounds i8, ptr %0, i64 992
  %449 = getelementptr inbounds i8, ptr %0, i64 1328
  %450 = load i64, ptr %449, align 8, !tbaa !72
  tail call void @_ZN11alglib_impl34smoothnessmonitorstartlinesearch1uEPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_dS4_llPNS_8ae_stateE(ptr noundef nonnull %442, ptr noundef nonnull %443, ptr noundef nonnull %444, ptr noundef nonnull %445, double noundef %447, ptr noundef nonnull %448, i64 noundef %450, i64 noundef -1, ptr noundef %1)
  %451 = getelementptr inbounds i8, ptr %0, i64 648
  %452 = getelementptr inbounds i8, ptr %0, i64 720
  %453 = getelementptr inbounds i8, ptr %0, i64 728
  %454 = load double, ptr %453, align 8, !tbaa !70
  %455 = load double, ptr @_ZN11alglib_implL10mincg_gtolE, align 8, !tbaa !26
  %456 = getelementptr inbounds i8, ptr %0, i64 816
  %457 = getelementptr inbounds i8, ptr %0, i64 368
  %458 = getelementptr inbounds i8, ptr %0, i64 1608
  %459 = getelementptr inbounds i8, ptr %0, i64 1360
  %460 = getelementptr inbounds i8, ptr %0, i64 376
  tail call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_PKS0_S2_ddPlS5_S1_PNS_11linminstateES5_PNS_8ae_stateE(i64 noundef %.0579, ptr noundef nonnull %445, ptr noundef nonnull %446, ptr noundef nonnull %448, ptr noundef nonnull %451, ptr noundef nonnull %452, double noundef %454, double noundef %455, ptr noundef nonnull %456, ptr noundef nonnull %457, ptr noundef nonnull %458, ptr noundef nonnull %459, ptr noundef nonnull %460, ptr noundef %1)
  br label %461

461:                                              ; preds = %573, %441
  %.11 = phi i64 [ %.10, %441 ], [ %.13, %573 ]
  %.3563 = phi double [ %.2562, %441 ], [ %.0560, %573 ]
  %.5557 = phi double [ %.4556, %441 ], [ %.0552, %573 ]
  %.3 = phi double [ %.2, %441 ], [ %.0, %573 ]
  %462 = getelementptr inbounds i8, ptr %0, i64 376
  %463 = load i64, ptr %462, align 8, !tbaa !67
  %464 = icmp eq i64 %463, 0
  br i1 %464, label %594, label %465

465:                                              ; preds = %461
  tail call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %466 = getelementptr inbounds i8, ptr %0, i64 360
  %467 = load double, ptr %466, align 8, !tbaa !33
  %468 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %467, double noundef 0.000000e+00)
  br i1 %468, label %473, label %469

469:                                              ; preds = %465
  %470 = getelementptr inbounds i8, ptr %0, i64 1057
  store i8 1, ptr %470, align 1, !tbaa !39
  br label %838

471:                                              ; preds = %19
  %472 = getelementptr inbounds i8, ptr %0, i64 1057
  store i8 0, ptr %472, align 1, !tbaa !39
  %.phi.trans.insert = getelementptr inbounds i8, ptr %0, i64 984
  %.pre = load double, ptr %.phi.trans.insert, align 8, !tbaa !40
  br label %573

473:                                              ; preds = %465
  %474 = getelementptr inbounds i8, ptr %0, i64 1056
  store i8 1, ptr %474, align 8, !tbaa !44
  br label %838

475:                                              ; preds = %19
  %476 = getelementptr inbounds i8, ptr %0, i64 984
  %477 = load double, ptr %476, align 8, !tbaa !40
  %478 = getelementptr inbounds i8, ptr %0, i64 1552
  store double %477, ptr %478, align 8, !tbaa !45
  br label %479

479:                                              ; preds = %537, %475
  %.12 = phi i64 [ 0, %475 ], [ %567, %537 ]
  %.not = icmp slt i64 %.12, %.0579
  br i1 %.not, label %480, label %568

480:                                              ; preds = %479
  %481 = getelementptr inbounds i8, ptr %0, i64 976
  %482 = load ptr, ptr %481, align 8, !tbaa !24
  %483 = getelementptr inbounds double, ptr %482, i64 %.12
  %484 = load double, ptr %483, align 8, !tbaa !26
  %485 = getelementptr inbounds i8, ptr %0, i64 360
  %486 = load double, ptr %485, align 8, !tbaa !33
  %487 = getelementptr inbounds i8, ptr %0, i64 352
  %488 = load ptr, ptr %487, align 8, !tbaa !24
  %489 = getelementptr inbounds double, ptr %488, i64 %.12
  %490 = load double, ptr %489, align 8, !tbaa !26
  %491 = fneg double %486
  %492 = tail call double @llvm.fmuladd.f64(double %491, double %490, double %484)
  store double %492, ptr %483, align 8, !tbaa !26
  br label %838

493:                                              ; preds = %19
  %494 = getelementptr inbounds i8, ptr %0, i64 984
  %495 = load double, ptr %494, align 8, !tbaa !40
  %496 = getelementptr inbounds i8, ptr %0, i64 1560
  store double %495, ptr %496, align 8, !tbaa !46
  %497 = getelementptr inbounds i8, ptr %0, i64 360
  %498 = load double, ptr %497, align 8, !tbaa !33
  %499 = getelementptr inbounds i8, ptr %0, i64 352
  %500 = load ptr, ptr %499, align 8, !tbaa !24
  %501 = getelementptr inbounds double, ptr %500, i64 %.0569
  %502 = load double, ptr %501, align 8, !tbaa !26
  %503 = fmul double %498, -5.000000e-01
  %504 = tail call double @llvm.fmuladd.f64(double %503, double %502, double %.0552)
  %505 = getelementptr inbounds i8, ptr %0, i64 976
  %506 = load ptr, ptr %505, align 8, !tbaa !24
  %507 = getelementptr inbounds double, ptr %506, i64 %.0569
  store double %504, ptr %507, align 8, !tbaa !26
  br label %838

508:                                              ; preds = %19
  %509 = getelementptr inbounds i8, ptr %0, i64 984
  %510 = load double, ptr %509, align 8, !tbaa !40
  %511 = getelementptr inbounds i8, ptr %0, i64 1568
  store double %510, ptr %511, align 8, !tbaa !47
  %512 = getelementptr inbounds i8, ptr %0, i64 360
  %513 = load double, ptr %512, align 8, !tbaa !33
  %514 = fmul double %513, 5.000000e-01
  %515 = getelementptr inbounds i8, ptr %0, i64 352
  %516 = load ptr, ptr %515, align 8, !tbaa !24
  %517 = getelementptr inbounds double, ptr %516, i64 %.0569
  %518 = load double, ptr %517, align 8, !tbaa !26
  %519 = tail call double @llvm.fmuladd.f64(double %514, double %518, double %.0552)
  %520 = getelementptr inbounds i8, ptr %0, i64 976
  %521 = load ptr, ptr %520, align 8, !tbaa !24
  %522 = getelementptr inbounds double, ptr %521, i64 %.0569
  store double %519, ptr %522, align 8, !tbaa !26
  br label %838

523:                                              ; preds = %19
  %524 = getelementptr inbounds i8, ptr %0, i64 984
  %525 = load double, ptr %524, align 8, !tbaa !40
  %526 = getelementptr inbounds i8, ptr %0, i64 1576
  store double %525, ptr %526, align 8, !tbaa !48
  %527 = getelementptr inbounds i8, ptr %0, i64 360
  %528 = load double, ptr %527, align 8, !tbaa !33
  %529 = getelementptr inbounds i8, ptr %0, i64 352
  %530 = load ptr, ptr %529, align 8, !tbaa !24
  %531 = getelementptr inbounds double, ptr %530, i64 %.0569
  %532 = load double, ptr %531, align 8, !tbaa !26
  %533 = tail call double @llvm.fmuladd.f64(double %528, double %532, double %.0552)
  %534 = getelementptr inbounds i8, ptr %0, i64 976
  %535 = load ptr, ptr %534, align 8, !tbaa !24
  %536 = getelementptr inbounds double, ptr %535, i64 %.0569
  store double %533, ptr %536, align 8, !tbaa !26
  br label %838

537:                                              ; preds = %19
  %538 = getelementptr inbounds i8, ptr %0, i64 984
  %539 = load double, ptr %538, align 8, !tbaa !40
  %540 = getelementptr inbounds i8, ptr %0, i64 1584
  store double %539, ptr %540, align 8, !tbaa !49
  %541 = getelementptr inbounds i8, ptr %0, i64 976
  %542 = load ptr, ptr %541, align 8, !tbaa !24
  %543 = getelementptr inbounds double, ptr %542, i64 %.0569
  store double %.0552, ptr %543, align 8, !tbaa !26
  %544 = getelementptr inbounds i8, ptr %0, i64 1576
  %545 = load double, ptr %544, align 8, !tbaa !48
  %546 = getelementptr inbounds i8, ptr %0, i64 1568
  %547 = load double, ptr %546, align 8, !tbaa !47
  %548 = fsub double %545, %547
  %549 = load double, ptr %540, align 8, !tbaa !49
  %550 = getelementptr inbounds i8, ptr %0, i64 1560
  %551 = load double, ptr %550, align 8, !tbaa !46
  %552 = fsub double %549, %551
  %553 = fneg double %552
  %554 = tail call double @llvm.fmuladd.f64(double %548, double 8.000000e+00, double %553)
  %555 = getelementptr inbounds i8, ptr %0, i64 360
  %556 = load double, ptr %555, align 8, !tbaa !33
  %557 = fmul double %556, 6.000000e+00
  %558 = getelementptr inbounds i8, ptr %0, i64 352
  %559 = load ptr, ptr %558, align 8, !tbaa !24
  %560 = getelementptr inbounds double, ptr %559, i64 %.0569
  %561 = load double, ptr %560, align 8, !tbaa !26
  %562 = fmul double %557, %561
  %563 = fdiv double %554, %562
  %564 = getelementptr inbounds i8, ptr %0, i64 1048
  %565 = load ptr, ptr %564, align 8, !tbaa !24
  %566 = getelementptr inbounds double, ptr %565, i64 %.0569
  store double %563, ptr %566, align 8, !tbaa !26
  %567 = add nsw i64 %.0569, 1
  br label %479

568:                                              ; preds = %479
  %569 = getelementptr inbounds i8, ptr %0, i64 1552
  %570 = load double, ptr %569, align 8, !tbaa !45
  %571 = getelementptr inbounds i8, ptr %0, i64 984
  store double %570, ptr %571, align 8, !tbaa !40
  %572 = getelementptr inbounds i8, ptr %0, i64 1056
  store i8 0, ptr %572, align 8, !tbaa !44
  br label %573

573:                                              ; preds = %568, %471
  %574 = phi double [ %.pre, %471 ], [ %570, %568 ]
  %.13 = phi i64 [ %.0569, %471 ], [ %.12, %568 ]
  %575 = getelementptr inbounds i8, ptr %0, i64 1816
  %576 = getelementptr inbounds i8, ptr %0, i64 296
  %577 = getelementptr inbounds i8, ptr %0, i64 1736
  %578 = getelementptr inbounds i8, ptr %0, i64 648
  %579 = getelementptr inbounds i8, ptr %0, i64 720
  %580 = load double, ptr %579, align 8, !tbaa !68
  %581 = getelementptr inbounds i8, ptr %0, i64 920
  %582 = getelementptr inbounds i8, ptr %0, i64 984
  %583 = getelementptr inbounds i8, ptr %0, i64 992
  tail call void @_ZN11alglib_impl31smoothnessmonitorenqueuepoint1uEPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_dS4_dS4_PNS_8ae_stateE(ptr noundef nonnull %575, ptr noundef nonnull %576, ptr noundef nonnull %577, ptr noundef nonnull %578, double noundef %580, ptr noundef nonnull %581, double noundef %574, ptr noundef nonnull %583, ptr noundef %1)
  %584 = getelementptr inbounds i8, ptr %0, i64 832
  %585 = load double, ptr %584, align 8, !tbaa !73
  tail call void @_ZN11alglib_impl12trimfunctionEPdPNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef nonnull %582, ptr noundef nonnull %583, i64 noundef %.0579, double noundef %585, ptr noundef %1)
  %586 = getelementptr inbounds i8, ptr %0, i64 728
  %587 = load double, ptr %586, align 8, !tbaa !70
  %588 = load double, ptr @_ZN11alglib_implL10mincg_gtolE, align 8, !tbaa !26
  %589 = getelementptr inbounds i8, ptr %0, i64 816
  %590 = getelementptr inbounds i8, ptr %0, i64 368
  %591 = getelementptr inbounds i8, ptr %0, i64 1608
  %592 = getelementptr inbounds i8, ptr %0, i64 1360
  %593 = getelementptr inbounds i8, ptr %0, i64 376
  tail call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_PKS0_S2_ddPlS5_S1_PNS_11linminstateES5_PNS_8ae_stateE(i64 noundef %.0579, ptr noundef nonnull %581, ptr noundef nonnull %582, ptr noundef nonnull %583, ptr noundef nonnull %578, ptr noundef nonnull %579, double noundef %587, double noundef %588, ptr noundef nonnull %589, ptr noundef nonnull %590, ptr noundef nonnull %591, ptr noundef nonnull %592, ptr noundef nonnull %593, ptr noundef %1)
  br label %461

594:                                              ; preds = %461
  %595 = getelementptr inbounds i8, ptr %0, i64 1816
  tail call void @_ZN11alglib_impl35smoothnessmonitorfinalizelinesearchEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef nonnull %595, ptr noundef %1)
  %596 = getelementptr inbounds i8, ptr %0, i64 1062
  %597 = load i8, ptr %596, align 2, !tbaa !29, !range !51, !noundef !52
  %598 = trunc nuw i8 %597 to i1
  br i1 %598, label %599, label %607

599:                                              ; preds = %594
  %600 = getelementptr inbounds i8, ptr %0, i64 576
  %601 = load ptr, ptr %600, align 8, !tbaa !24
  %602 = getelementptr inbounds i8, ptr %0, i64 448
  %603 = load ptr, ptr %602, align 8, !tbaa !24
  %604 = add nsw i64 %.0579, -1
  %605 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %604)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %601, i64 noundef 1, ptr noundef %603, i64 noundef 1, i64 noundef %605)
  %606 = getelementptr inbounds i8, ptr %0, i64 1344
  store i64 8, ptr %606, align 8, !tbaa !56
  br label %849

607:                                              ; preds = %594
  %608 = getelementptr inbounds i8, ptr %0, i64 57
  %609 = load i8, ptr %608, align 1, !tbaa !50, !range !51, !noundef !52
  %610 = trunc nuw i8 %609 to i1
  br i1 %610, label %611, label %615

611:                                              ; preds = %607
  tail call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %612 = getelementptr inbounds i8, ptr %0, i64 1061
  store i8 1, ptr %612, align 1, !tbaa !74
  br label %838

613:                                              ; preds = %19
  %614 = getelementptr inbounds i8, ptr %0, i64 1061
  store i8 0, ptr %614, align 1, !tbaa !74
  br label %615

615:                                              ; preds = %607, %613
  %.14 = phi i64 [ %.11, %607 ], [ %.0569, %613 ]
  %.4564 = phi double [ %.3563, %607 ], [ %.0560, %613 ]
  %.6558 = phi double [ %.5557, %607 ], [ %.0552, %613 ]
  %.4 = phi double [ %.3, %607 ], [ %.0, %613 ]
  %616 = getelementptr inbounds i8, ptr %0, i64 576
  %617 = load ptr, ptr %616, align 8, !tbaa !24
  %618 = getelementptr inbounds i8, ptr %0, i64 976
  %619 = load ptr, ptr %618, align 8, !tbaa !24
  %620 = add nsw i64 %.0579, -1
  %621 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %620)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %617, i64 noundef 1, ptr noundef %619, i64 noundef 1, i64 noundef %621)
  %622 = getelementptr inbounds i8, ptr %0, i64 56
  %623 = load i8, ptr %622, align 8, !tbaa !54, !range !51, !noundef !52
  %624 = trunc nuw i8 %623 to i1
  br i1 %624, label %625, label %629

625:                                              ; preds = %615
  tail call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %626 = getelementptr inbounds i8, ptr %0, i64 1058
  store i8 1, ptr %626, align 2, !tbaa !55
  br label %838

627:                                              ; preds = %19
  %628 = getelementptr inbounds i8, ptr %0, i64 1058
  store i8 0, ptr %628, align 2, !tbaa !55
  br label %629

629:                                              ; preds = %615, %627
  %.5565 = phi double [ %.4564, %615 ], [ %.0560, %627 ]
  %.5 = phi double [ %.4, %615 ], [ %.0, %627 ]
  %630 = getelementptr inbounds i8, ptr %0, i64 825
  %631 = load i8, ptr %630, align 1, !tbaa !28, !range !51, !noundef !52
  %632 = trunc nuw i8 %631 to i1
  br i1 %632, label %633, label %641

633:                                              ; preds = %629
  %634 = getelementptr inbounds i8, ptr %0, i64 576
  %635 = load ptr, ptr %634, align 8, !tbaa !24
  %636 = getelementptr inbounds i8, ptr %0, i64 976
  %637 = load ptr, ptr %636, align 8, !tbaa !24
  %638 = add nsw i64 %.0579, -1
  %639 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %638)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %635, i64 noundef 1, ptr noundef %637, i64 noundef 1, i64 noundef %639)
  %640 = getelementptr inbounds i8, ptr %0, i64 1344
  store i64 8, ptr %640, align 8, !tbaa !56
  br label %849

641:                                              ; preds = %629
  %642 = getelementptr inbounds i8, ptr %0, i64 816
  %643 = load i64, ptr %642, align 8, !tbaa !75
  %644 = icmp eq i64 %643, 1
  br i1 %644, label %645, label %678

645:                                              ; preds = %641
  %646 = getelementptr inbounds i8, ptr %0, i64 824
  %647 = load i8, ptr %646, align 8, !tbaa !66, !range !51, !noundef !52
  %648 = trunc nuw i8 %647 to i1
  br i1 %648, label %678, label %649

649:                                              ; preds = %645
  %650 = getelementptr inbounds i8, ptr %0, i64 736
  %651 = getelementptr inbounds i8, ptr %0, i64 792
  %652 = load ptr, ptr %651, align 8, !tbaa !24
  %653 = getelementptr inbounds i8, ptr %0, i64 992
  %654 = getelementptr inbounds i8, ptr %0, i64 1048
  %655 = load ptr, ptr %654, align 8, !tbaa !24
  %656 = add nsw i64 %.0579, -1
  %657 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %656)
  tail call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %652, i64 noundef 1, ptr noundef %655, i64 noundef 1, i64 noundef %657)
  %658 = load ptr, ptr %651, align 8, !tbaa !24
  %659 = getelementptr inbounds i8, ptr %0, i64 512
  %660 = load ptr, ptr %659, align 8, !tbaa !24
  %661 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %656)
  %662 = tail call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %658, i64 noundef 1, ptr noundef %660, i64 noundef 1, i64 noundef %661)
  %663 = getelementptr inbounds i8, ptr %0, i64 1608
  %664 = getelementptr inbounds i8, ptr %0, i64 1672
  %665 = tail call noundef double @_ZN11alglib_implL29mincg_preconditionedmultiply2EPNS_10mincgstateEPNS_9ae_vectorES3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %653, ptr noundef nonnull %653, ptr noundef nonnull %663, ptr noundef nonnull %664, ptr noundef %1)
  %666 = fdiv double %665, %662
  %667 = getelementptr inbounds i8, ptr %0, i64 1600
  store double %666, ptr %667, align 8, !tbaa !76
  %668 = tail call noundef double @_ZN11alglib_implL29mincg_preconditionedmultiply2EPNS_10mincgstateEPNS_9ae_vectorES3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %653, ptr noundef nonnull %650, ptr noundef nonnull %663, ptr noundef nonnull %664, ptr noundef %1)
  %669 = fdiv double %668, %662
  %670 = getelementptr inbounds i8, ptr %0, i64 1592
  store double %669, ptr %670, align 8, !tbaa !77
  %671 = getelementptr inbounds i8, ptr %0, i64 64
  %672 = load i64, ptr %671, align 8, !tbaa !78
  switch i64 %672, label %682 [
    i64 0, label %.thread
    i64 1, label %674
  ]

.thread:                                          ; preds = %649
  %673 = load double, ptr %667, align 8, !tbaa !76
  br label %682

674:                                              ; preds = %649
  %675 = load double, ptr %667, align 8, !tbaa !76
  %676 = tail call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %675, double noundef %669, ptr noundef %1)
  %677 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 0.000000e+00, double noundef %676, ptr noundef %1)
  br label %682

678:                                              ; preds = %645, %641
  %679 = getelementptr inbounds i8, ptr %0, i64 1352
  %680 = load i64, ptr %679, align 8, !tbaa !79
  %681 = add nsw i64 %680, 1
  store i64 %681, ptr %679, align 8, !tbaa !79
  br label %682

682:                                              ; preds = %649, %.thread, %674, %678
  %.7567 = phi double [ 0.000000e+00, %678 ], [ %677, %674 ], [ %673, %.thread ], [ %.5565, %649 ]
  %.6 = phi double [ %.5, %678 ], [ %662, %674 ], [ %662, %.thread ], [ %662, %649 ]
  %683 = getelementptr inbounds i8, ptr %0, i64 1328
  %684 = load i64, ptr %683, align 8, !tbaa !72
  %685 = icmp sgt i64 %684, 0
  br i1 %685, label %686, label %691

686:                                              ; preds = %682
  %687 = add nsw i64 %.0579, 3
  %688 = srem i64 %684, %687
  %689 = icmp eq i64 %688, 0
  br i1 %689, label %690, label %691

690:                                              ; preds = %686
  br label %691

691:                                              ; preds = %690, %686, %682
  %.8568 = phi double [ 0.000000e+00, %690 ], [ %.7567, %686 ], [ %.7567, %682 ]
  %692 = load i64, ptr %642, align 8, !tbaa !75
  switch i64 %692, label %696 [
    i64 1, label %693
    i64 5, label %693
  ]

693:                                              ; preds = %691, %691
  %694 = load i64, ptr @_ZN11alglib_implL20mincg_rscountdownlenE, align 8, !tbaa !25
  %695 = getelementptr inbounds i8, ptr %0, i64 904
  store i64 %694, ptr %695, align 8, !tbaa !65
  br label %700

696:                                              ; preds = %691
  %697 = getelementptr inbounds i8, ptr %0, i64 904
  %698 = load i64, ptr %697, align 8, !tbaa !65
  %699 = add nsw i64 %698, -1
  store i64 %699, ptr %697, align 8, !tbaa !65
  br label %700

700:                                              ; preds = %696, %693
  %701 = getelementptr inbounds i8, ptr %0, i64 584
  %702 = getelementptr inbounds i8, ptr %0, i64 640
  %703 = load ptr, ptr %702, align 8, !tbaa !24
  %704 = getelementptr inbounds i8, ptr %0, i64 1048
  %705 = load ptr, ptr %704, align 8, !tbaa !24
  %706 = add nsw i64 %.0579, -1
  %707 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %706)
  tail call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %703, i64 noundef 1, ptr noundef %705, i64 noundef 1, i64 noundef %707)
  %708 = getelementptr inbounds i8, ptr %0, i64 1608
  %709 = getelementptr inbounds i8, ptr %0, i64 1672
  tail call void @_ZN11alglib_implL28mincg_preconditionedmultiplyEPNS_10mincgstateEPNS_9ae_vectorES3_S3_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %701, ptr noundef nonnull %708, ptr noundef nonnull %709, ptr noundef %1)
  %710 = load ptr, ptr %702, align 8, !tbaa !24
  %711 = getelementptr inbounds i8, ptr %0, i64 512
  %712 = load ptr, ptr %711, align 8, !tbaa !24
  %713 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %706)
  tail call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %710, i64 noundef 1, ptr noundef %712, i64 noundef 1, i64 noundef %713, double noundef %.8568)
  %714 = getelementptr inbounds i8, ptr %0, i64 808
  store double 0.000000e+00, ptr %714, align 8, !tbaa !80
  %.not594.not607 = icmp sgt i64 %.0579, 0
  br i1 %.not594.not607, label %.lr.ph610, label %._crit_edge611

.lr.ph610:                                        ; preds = %700
  %715 = getelementptr inbounds i8, ptr %0, i64 704
  %716 = getelementptr inbounds i8, ptr %0, i64 352
  br label %717

717:                                              ; preds = %.lr.ph610, %717
  %718 = phi double [ 0.000000e+00, %.lr.ph610 ], [ %727, %717 ]
  %.15608 = phi i64 [ 0, %.lr.ph610 ], [ %728, %717 ]
  %719 = load ptr, ptr %715, align 8, !tbaa !24
  %720 = getelementptr inbounds double, ptr %719, i64 %.15608
  %721 = load double, ptr %720, align 8, !tbaa !26
  %722 = load ptr, ptr %716, align 8, !tbaa !24
  %723 = getelementptr inbounds double, ptr %722, i64 %.15608
  %724 = load double, ptr %723, align 8, !tbaa !26
  %725 = fdiv double %721, %724
  %726 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %725, ptr noundef %1)
  %727 = fadd double %718, %726
  store double %727, ptr %714, align 8, !tbaa !80
  %728 = add nuw nsw i64 %.15608, 1
  %exitcond650.not = icmp eq i64 %728, %.0579
  br i1 %exitcond650.not, label %._crit_edge611, label %717, !llvm.loop !81

._crit_edge611:                                   ; preds = %717, %700
  %729 = phi double [ 0.000000e+00, %700 ], [ %727, %717 ]
  %730 = getelementptr inbounds i8, ptr %0, i64 720
  %731 = load double, ptr %730, align 8, !tbaa !68
  %732 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %729, ptr noundef %1)
  %733 = fmul double %731, %732
  store double %733, ptr %714, align 8, !tbaa !80
  %734 = load i64, ptr %642, align 8, !tbaa !75
  %735 = icmp eq i64 %734, 1
  br i1 %735, label %736, label %751

736:                                              ; preds = %._crit_edge611
  %737 = getelementptr inbounds i8, ptr %0, i64 800
  store double 0.000000e+00, ptr %737, align 8, !tbaa !64
  br i1 %.not594.not607, label %.lr.ph615, label %._crit_edge616

.lr.ph615:                                        ; preds = %736
  %738 = getelementptr inbounds i8, ptr %0, i64 704
  br label %739

739:                                              ; preds = %.lr.ph615, %739
  %740 = phi double [ 0.000000e+00, %.lr.ph615 ], [ %745, %739 ]
  %.16613 = phi i64 [ 0, %.lr.ph615 ], [ %746, %739 ]
  %741 = load ptr, ptr %738, align 8, !tbaa !24
  %742 = getelementptr inbounds double, ptr %741, i64 %.16613
  %743 = load double, ptr %742, align 8, !tbaa !26
  %744 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %743, ptr noundef %1)
  %745 = fadd double %740, %744
  store double %745, ptr %737, align 8, !tbaa !64
  %746 = add nuw nsw i64 %.16613, 1
  %exitcond651.not = icmp eq i64 %746, %.0579
  br i1 %exitcond651.not, label %._crit_edge616, label %739, !llvm.loop !82

._crit_edge616:                                   ; preds = %739, %736
  %747 = phi double [ 0.000000e+00, %736 ], [ %745, %739 ]
  %748 = load double, ptr %730, align 8, !tbaa !68
  %749 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %747, ptr noundef %1)
  %750 = fmul double %748, %749
  store double %750, ptr %737, align 8, !tbaa !64
  br label %751

751:                                              ; preds = %._crit_edge616, %._crit_edge611
  br i1 %.not594.not607, label %.lr.ph621, label %._crit_edge622

.lr.ph621:                                        ; preds = %751
  %752 = getelementptr inbounds i8, ptr %0, i64 352
  br label %753

753:                                              ; preds = %.lr.ph621, %753
  %.7559619 = phi double [ 0.000000e+00, %.lr.ph621 ], [ %762, %753 ]
  %.17618 = phi i64 [ 0, %.lr.ph621 ], [ %763, %753 ]
  %754 = load ptr, ptr %704, align 8, !tbaa !24
  %755 = getelementptr inbounds double, ptr %754, i64 %.17618
  %756 = load double, ptr %755, align 8, !tbaa !26
  %757 = load ptr, ptr %752, align 8, !tbaa !24
  %758 = getelementptr inbounds double, ptr %757, i64 %.17618
  %759 = load double, ptr %758, align 8, !tbaa !26
  %760 = fmul double %756, %759
  %761 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %760, ptr noundef %1)
  %762 = fadd double %.7559619, %761
  %763 = add nuw nsw i64 %.17618, 1
  %exitcond652.not = icmp eq i64 %763, %.0579
  br i1 %exitcond652.not, label %._crit_edge622, label %753, !llvm.loop !83

._crit_edge622:                                   ; preds = %753, %751
  %.17.lcssa = phi i64 [ 0, %751 ], [ %.0579, %753 ]
  %.7559.lcssa = phi double [ 0.000000e+00, %751 ], [ %762, %753 ]
  %764 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.7559.lcssa, ptr noundef %1)
  br i1 %764, label %765, label %769

765:                                              ; preds = %._crit_edge622
  %766 = getelementptr inbounds i8, ptr %0, i64 984
  %767 = load double, ptr %766, align 8, !tbaa !40
  %768 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %767, ptr noundef %1)
  br i1 %768, label %771, label %769

769:                                              ; preds = %765, %._crit_edge622
  %770 = getelementptr inbounds i8, ptr %0, i64 1344
  store i64 -8, ptr %770, align 8, !tbaa !56
  br label %849

771:                                              ; preds = %765
  %772 = getelementptr inbounds i8, ptr %0, i64 1336
  %773 = load i64, ptr %772, align 8, !tbaa !59
  %774 = getelementptr inbounds i8, ptr %0, i64 368
  %775 = load i64, ptr %774, align 8, !tbaa !84
  %776 = add nsw i64 %775, %773
  store i64 %776, ptr %772, align 8, !tbaa !59
  %777 = load i64, ptr %683, align 8, !tbaa !72
  %778 = add nsw i64 %777, 1
  store i64 %778, ptr %683, align 8, !tbaa !72
  %779 = getelementptr inbounds i8, ptr %0, i64 32
  %780 = load i64, ptr %779, align 8, !tbaa !85
  %.not597 = icmp sge i64 %778, %780
  %781 = icmp sgt i64 %780, 0
  %or.cond = and i1 %.not597, %781
  br i1 %or.cond, label %782, label %784

782:                                              ; preds = %771
  %783 = getelementptr inbounds i8, ptr %0, i64 1344
  store i64 5, ptr %783, align 8, !tbaa !56
  br label %849

784:                                              ; preds = %771
  %785 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.7559.lcssa, ptr noundef %1)
  %786 = getelementptr inbounds i8, ptr %0, i64 8
  %787 = load double, ptr %786, align 8, !tbaa !58
  %788 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %785, double noundef %787)
  br i1 %788, label %789, label %791

789:                                              ; preds = %784
  %790 = getelementptr inbounds i8, ptr %0, i64 1344
  store i64 4, ptr %790, align 8, !tbaa !56
  br label %849

791:                                              ; preds = %784
  %792 = getelementptr inbounds i8, ptr %0, i64 824
  %793 = load i8, ptr %792, align 8, !tbaa !66, !range !51, !noundef !52
  %794 = trunc nuw i8 %793 to i1
  br i1 %794, label %818, label %795

795:                                              ; preds = %791
  %796 = getelementptr inbounds i8, ptr %0, i64 712
  %797 = load double, ptr %796, align 8, !tbaa !61
  %798 = load double, ptr %766, align 8, !tbaa !40
  %799 = fsub double %797, %798
  %800 = getelementptr inbounds i8, ptr %0, i64 16
  %801 = load double, ptr %800, align 8, !tbaa !86
  %802 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %797, ptr noundef %1)
  %803 = load double, ptr %766, align 8, !tbaa !40
  %804 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %803, ptr noundef %1)
  %805 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %804, double noundef 1.000000e+00, ptr noundef %1)
  %806 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %802, double noundef %805, ptr noundef %1)
  %807 = fmul double %801, %806
  %808 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %799, double noundef %807)
  br i1 %808, label %809, label %811

809:                                              ; preds = %795
  %810 = getelementptr inbounds i8, ptr %0, i64 1344
  store i64 1, ptr %810, align 8, !tbaa !56
  br label %849

811:                                              ; preds = %795
  %812 = load double, ptr %714, align 8, !tbaa !80
  %813 = getelementptr inbounds i8, ptr %0, i64 24
  %814 = load double, ptr %813, align 8, !tbaa !87
  %815 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %812, double noundef %814)
  br i1 %815, label %816, label %818

816:                                              ; preds = %811
  %817 = getelementptr inbounds i8, ptr %0, i64 1344
  store i64 2, ptr %817, align 8, !tbaa !56
  br label %849

818:                                              ; preds = %811, %791
  %819 = getelementptr inbounds i8, ptr %0, i64 904
  %820 = load i64, ptr %819, align 8, !tbaa !65
  %821 = icmp slt i64 %820, 1
  br i1 %821, label %822, label %824

822:                                              ; preds = %818
  %823 = getelementptr inbounds i8, ptr %0, i64 1344
  store i64 7, ptr %823, align 8, !tbaa !56
  br label %849

824:                                              ; preds = %818
  %825 = getelementptr inbounds i8, ptr %0, i64 448
  %826 = load ptr, ptr %825, align 8, !tbaa !24
  %827 = getelementptr inbounds i8, ptr %0, i64 576
  %828 = load ptr, ptr %827, align 8, !tbaa !24
  %829 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %706)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %826, i64 noundef 1, ptr noundef %828, i64 noundef 1, i64 noundef %829)
  %830 = load ptr, ptr %711, align 8, !tbaa !24
  %831 = load ptr, ptr %702, align 8, !tbaa !24
  %832 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %706)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %830, i64 noundef 1, ptr noundef %831, i64 noundef 1, i64 noundef %832)
  %833 = load double, ptr %766, align 8, !tbaa !40
  %834 = getelementptr inbounds i8, ptr %0, i64 712
  store double %833, ptr %834, align 8, !tbaa !61
  %835 = getelementptr inbounds i8, ptr %0, i64 384
  %836 = load i64, ptr %835, align 8, !tbaa !60
  %837 = add nsw i64 %836, 1
  store i64 %837, ptr %835, align 8, !tbaa !60
  br label %391

838:                                              ; preds = %625, %611, %523, %508, %493, %480, %473, %469, %425, %321, %301, %247, %232, %217, %204, %197, %193, %._crit_edge643
  %.sink661 = phi i32 [ 17, %625 ], [ 16, %611 ], [ 15, %523 ], [ 14, %508 ], [ 13, %493 ], [ 12, %480 ], [ 11, %473 ], [ 10, %469 ], [ 9, %425 ], [ 8, %321 ], [ 7, %301 ], [ 6, %247 ], [ 5, %232 ], [ 4, %217 ], [ 3, %204 ], [ 2, %197 ], [ 1, %193 ], [ 0, %._crit_edge643 ]
  %.3582 = phi i64 [ %.0579, %625 ], [ %.0579, %611 ], [ %.0579, %523 ], [ %.0579, %508 ], [ %.0579, %493 ], [ %.0579, %480 ], [ %.0579, %473 ], [ %.0579, %469 ], [ %.0579, %425 ], [ %.0579, %321 ], [ %.0579, %301 ], [ %.0579, %247 ], [ %.0579, %232 ], [ %.0579, %217 ], [ %.0579, %204 ], [ %.2581, %197 ], [ %.2581, %193 ], [ %.1580, %._crit_edge643 ]
  %.18 = phi i64 [ %.14, %625 ], [ %.11, %611 ], [ %.0569, %523 ], [ %.0569, %508 ], [ %.0569, %493 ], [ %.12, %480 ], [ %.11, %473 ], [ %.11, %469 ], [ %.9578, %425 ], [ %.7576, %321 ], [ %.6575, %301 ], [ %.0569, %247 ], [ %.0569, %232 ], [ %.0569, %217 ], [ %.5574, %204 ], [ %.4573.lcssa, %197 ], [ %.4573.lcssa, %193 ], [ %.2571.lcssa, %._crit_edge643 ]
  %.9 = phi double [ %.4564, %625 ], [ %.3563, %611 ], [ %.0560, %523 ], [ %.0560, %508 ], [ %.0560, %493 ], [ %.0560, %480 ], [ %.3563, %473 ], [ %.3563, %469 ], [ %.1561, %425 ], [ %.0560, %321 ], [ %.0560, %301 ], [ %.0560, %247 ], [ %.0560, %232 ], [ %.0560, %217 ], [ %.0560, %204 ], [ %.0560, %197 ], [ %.0560, %193 ], [ %.0560, %._crit_edge643 ]
  %.8 = phi double [ %.6558, %625 ], [ %.5557, %611 ], [ %.0552, %523 ], [ %.0552, %508 ], [ %.0552, %493 ], [ %484, %480 ], [ %.5557, %473 ], [ %.5557, %469 ], [ %.3555, %425 ], [ %.0552, %321 ], [ %.0552, %301 ], [ %.0552, %247 ], [ %.0552, %232 ], [ %.0552, %217 ], [ %208, %204 ], [ %.0552, %197 ], [ %.0552, %193 ], [ %.0552, %._crit_edge643 ]
  %.7 = phi double [ %.4, %625 ], [ %.3, %611 ], [ %.0, %523 ], [ %.0, %508 ], [ %.0, %493 ], [ %.0, %480 ], [ %.3, %473 ], [ %.3, %469 ], [ %.1, %425 ], [ %.0, %321 ], [ %.0, %301 ], [ %.0, %247 ], [ %.0, %232 ], [ %.0, %217 ], [ %.0, %204 ], [ %.0, %197 ], [ %.0, %193 ], [ %.0, %._crit_edge643 ]
  store i32 %.sink661, ptr %3, align 8, !tbaa !5
  %839 = getelementptr inbounds i8, ptr %0, i64 1128
  %840 = load ptr, ptr %839, align 8, !tbaa !24
  store i64 %.3582, ptr %840, align 8, !tbaa !25
  %841 = load ptr, ptr %839, align 8, !tbaa !24
  %842 = getelementptr inbounds i8, ptr %841, i64 8
  store i64 %.18, ptr %842, align 8, !tbaa !25
  %843 = getelementptr inbounds i8, ptr %0, i64 1256
  %844 = load ptr, ptr %843, align 8, !tbaa !24
  store double %.9, ptr %844, align 8, !tbaa !26
  %845 = load ptr, ptr %843, align 8, !tbaa !24
  %846 = getelementptr inbounds i8, ptr %845, i64 8
  store double %.8, ptr %846, align 8, !tbaa !26
  %847 = load ptr, ptr %843, align 8, !tbaa !24
  %848 = getelementptr inbounds i8, ptr %847, i64 16
  store double %.7, ptr %848, align 8, !tbaa !26
  br label %849

849:                                              ; preds = %838, %822, %816, %809, %789, %782, %769, %633, %599, %433, %359, %335
  %.0583 = phi i1 [ true, %838 ], [ false, %335 ], [ false, %359 ], [ false, %433 ], [ false, %599 ], [ false, %633 ], [ false, %782 ], [ false, %789 ], [ false, %822 ], [ false, %809 ], [ false, %816 ], [ false, %769 ]
  ret i1 %.0583
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_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 #2

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef double @_ZN11alglib_implL29mincg_preconditionedmultiply2EPNS_10mincgstateEPNS_9ae_vectorES3_S3_S3_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }

!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, !17, i64 1064}
!6 = !{!"_ZTSN11alglib_impl10mincgstateE", !7, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !7, i64 32, !10, i64 40, !10, i64 48, !11, i64 56, !11, i64 57, !7, i64 64, !7, i64 72, !12, i64 80, !12, i64 144, !15, i64 208, !7, i64 288, !12, i64 296, !10, i64 360, !7, i64 368, !7, i64 376, !7, i64 384, !12, i64 392, !12, i64 456, !12, i64 520, !12, i64 584, !12, i64 648, !10, i64 712, !10, i64 720, !10, i64 728, !12, i64 736, !10, i64 800, !10, i64 808, !7, i64 816, !11, i64 824, !11, i64 825, !10, i64 832, !12, i64 840, !7, i64 904, !7, i64 912, !12, i64 920, !10, i64 984, !12, i64 992, !11, i64 1056, !11, i64 1057, !11, i64 1058, !11, i64 1059, !11, i64 1060, !11, i64 1061, !11, i64 1062, !16, i64 1064, !7, i64 1328, !7, i64 1336, !7, i64 1344, !7, i64 1352, !18, i64 1360, !10, i64 1552, !10, i64 1560, !10, i64 1568, !10, i64 1576, !10, i64 1584, !10, i64 1592, !10, i64 1600, !12, i64 1608, !12, i64 1672, !12, i64 1736, !10, i64 1800, !7, i64 1808, !19, i64 1816, !12, i64 7520}
!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_impl10rcommstateE", !17, i64 0, !12, i64 8, !12, i64 72, !12, i64 136, !12, i64 200}
!17 = !{!"int", !8, i64 0}
!18 = !{!"_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}
!19 = !{!"_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, !16, i64 1240, !11, i64 1504, !11, i64 1505, !7, i64 1512, !7, i64 1520, !10, i64 1528, !10, i64 1536, !11, i64 1544, !20, i64 1552, !10, i64 1848, !10, i64 1856, !21, i64 1864, !21, i64 2184, !10, i64 2504, !10, i64 2512, !22, i64 2520, !22, i64 2840, !10, i64 3160, !10, i64 3168, !23, i64 3176, !23, i64 3504, !11, i64 3832, !12, i64 3840, !12, i64 3904, !15, i64 3968, !16, 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}
!20 = !{!"_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}
!21 = !{!"_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}
!22 = !{!"_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}
!23 = !{!"_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}
!24 = !{!8, !8, i64 0}
!25 = !{!7, !7, i64 0}
!26 = !{!10, !10, i64 0}
!27 = !{!6, !7, i64 0}
!28 = !{!6, !11, i64 825}
!29 = !{!6, !11, i64 1062}
!30 = !{!6, !7, i64 1808}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = !{!6, !10, i64 360}
!34 = !{!6, !10, i64 1800}
!35 = !{!14, !14, i64 0}
!36 = distinct !{!36, !32}
!37 = distinct !{!37, !38}
!38 = !{!"llvm.loop.unroll.disable"}
!39 = !{!6, !11, i64 1057}
!40 = !{!6, !10, i64 984}
!41 = distinct !{!41, !32}
!42 = distinct !{!42, !32}
!43 = distinct !{!43, !38}
!44 = !{!6, !11, i64 1056}
!45 = !{!6, !10, i64 1552}
!46 = !{!6, !10, i64 1560}
!47 = !{!6, !10, i64 1568}
!48 = !{!6, !10, i64 1576}
!49 = !{!6, !10, i64 1584}
!50 = !{!6, !11, i64 57}
!51 = !{i8 0, i8 2}
!52 = !{}
!53 = !{!6, !11, i64 1059}
!54 = !{!6, !11, i64 56}
!55 = !{!6, !11, i64 1058}
!56 = !{!6, !7, i64 1344}
!57 = distinct !{!57, !32}
!58 = !{!6, !10, i64 8}
!59 = !{!6, !7, i64 1336}
!60 = !{!6, !7, i64 384}
!61 = !{!6, !10, i64 712}
!62 = !{!6, !7, i64 72}
!63 = !{!6, !10, i64 48}
!64 = !{!6, !10, i64 800}
!65 = !{!6, !7, i64 904}
!66 = !{!6, !11, i64 824}
!67 = !{!6, !7, i64 376}
!68 = !{!6, !10, i64 720}
!69 = !{!6, !10, i64 40}
!70 = !{!6, !10, i64 728}
!71 = !{!6, !11, i64 1060}
!72 = !{!6, !7, i64 1328}
!73 = !{!6, !10, i64 832}
!74 = !{!6, !11, i64 1061}
!75 = !{!6, !7, i64 816}
!76 = !{!6, !10, i64 1600}
!77 = !{!6, !10, i64 1592}
!78 = !{!6, !7, i64 64}
!79 = !{!6, !7, i64 1352}
!80 = !{!6, !10, i64 808}
!81 = distinct !{!81, !32}
!82 = distinct !{!82, !32}
!83 = distinct !{!83, !32}
!84 = !{!6, !7, i64 368}
!85 = !{!6, !7, i64 32}
!86 = !{!6, !10, i64 16}
!87 = !{!6, !10, i64 24}


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