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

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

%"struct.alglib_impl::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, %"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", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i8, i8, double, double, i8, %"struct.alglib_impl::optguardreport", double, double, %"struct.alglib_impl::optguardnonc1test0report", %"struct.alglib_impl::optguardnonc1test0report", double, double, %"struct.alglib_impl::optguardnonc1test1report", %"struct.alglib_impl::optguardnonc1test1report", i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::rcommstate", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::optguardreport" = type { i8, i8, i64, double, i8, i8, i8, i64, double, i8, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::optguardnonc1test0report" = type { i8, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64 }
%"struct.alglib_impl::optguardnonc1test1report" = type { i8, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64 }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }

@_ZN11alglib_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 47
  %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 47
  %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 !24
  %24 = getelementptr inbounds i64, ptr %23, i64 0
  %25 = load i64, ptr %24, align 8, !tbaa !25
  store i64 %25, ptr %6, align 8, !tbaa !25
  %26 = load ptr, ptr %4, align 8, !tbaa !5
  %27 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %26, i32 0, i32 47
  %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 !24
  %31 = getelementptr inbounds i64, ptr %30, i64 1
  %32 = load i64, ptr %31, align 8, !tbaa !25
  store i64 %32, ptr %7, align 8, !tbaa !25
  %33 = load ptr, ptr %4, align 8, !tbaa !5
  %34 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %33, i32 0, i32 47
  %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 !24
  %38 = getelementptr inbounds double, ptr %37, i64 0
  %39 = load double, ptr %38, align 8, !tbaa !26
  store double %39, ptr %8, align 8, !tbaa !26
  %40 = load ptr, ptr %4, align 8, !tbaa !5
  %41 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %40, i32 0, i32 47
  %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 !24
  %45 = getelementptr inbounds double, ptr %44, i64 1
  %46 = load double, ptr %45, align 8, !tbaa !26
  store double %46, ptr %9, align 8, !tbaa !26
  %47 = load ptr, ptr %4, align 8, !tbaa !5
  %48 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %47, i32 0, i32 47
  %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 !24
  %52 = getelementptr inbounds double, ptr %51, i64 2
  %53 = load double, ptr %52, align 8, !tbaa !26
  store double %53, ptr %10, align 8, !tbaa !26
  br label %55

54:                                               ; preds = %2
  store i64 359, ptr %6, align 8, !tbaa !25
  store i64 -58, ptr %7, align 8, !tbaa !25
  store double -9.190000e+02, ptr %8, align 8, !tbaa !26
  store double -9.090000e+02, ptr %9, align 8, !tbaa !26
  store double 8.100000e+01, ptr %10, align 8, !tbaa !26
  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 47
  %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 %306

62:                                               ; preds = %55
  %63 = load ptr, ptr %4, align 8, !tbaa !5
  %64 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %63, i32 0, i32 47
  %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 %395

69:                                               ; preds = %62
  %70 = load ptr, ptr %4, align 8, !tbaa !5
  %71 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %70, i32 0, i32 47
  %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 %404

76:                                               ; preds = %69
  %77 = load ptr, ptr %4, align 8, !tbaa !5
  %78 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %77, i32 0, i32 47
  %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 %446

83:                                               ; preds = %76
  %84 = load ptr, ptr %4, align 8, !tbaa !5
  %85 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %84, i32 0, i32 47
  %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 %475

90:                                               ; preds = %83
  %91 = load ptr, ptr %4, align 8, !tbaa !5
  %92 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %91, i32 0, i32 47
  %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 %503

97:                                               ; preds = %90
  %98 = load ptr, ptr %4, align 8, !tbaa !5
  %99 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %98, i32 0, i32 47
  %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 %530

104:                                              ; preds = %97
  %105 = load ptr, ptr %4, align 8, !tbaa !5
  %106 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %105, i32 0, i32 47
  %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 %602

111:                                              ; preds = %104
  %112 = load ptr, ptr %4, align 8, !tbaa !5
  %113 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %112, i32 0, i32 47
  %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 %646

118:                                              ; preds = %111
  %119 = load ptr, ptr %4, align 8, !tbaa !5
  %120 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %119, i32 0, i32 47
  %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 %873

125:                                              ; preds = %118
  %126 = load ptr, ptr %4, align 8, !tbaa !5
  %127 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %126, i32 0, i32 47
  %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 %960

132:                                              ; preds = %125
  %133 = load ptr, ptr %4, align 8, !tbaa !5
  %134 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %133, i32 0, i32 47
  %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 %969

139:                                              ; preds = %132
  %140 = load ptr, ptr %4, align 8, !tbaa !5
  %141 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %140, i32 0, i32 47
  %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 %1011

146:                                              ; preds = %139
  %147 = load ptr, ptr %4, align 8, !tbaa !5
  %148 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %147, i32 0, i32 47
  %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 %1040

153:                                              ; preds = %146
  %154 = load ptr, ptr %4, align 8, !tbaa !5
  %155 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %154, i32 0, i32 47
  %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 %1068

160:                                              ; preds = %153
  %161 = load ptr, ptr %4, align 8, !tbaa !5
  %162 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %161, i32 0, i32 47
  %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 %1095

167:                                              ; preds = %160
  %168 = load ptr, ptr %4, align 8, !tbaa !5
  %169 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %168, i32 0, i32 47
  %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 %1248

174:                                              ; preds = %167
  %175 = load ptr, ptr %4, align 8, !tbaa !5
  %176 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %175, i32 0, i32 47
  %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 %1278

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 !27
  store i64 %184, ptr %6, align 8, !tbaa !25
  %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 !28
  %187 = load ptr, ptr %4, align 8, !tbaa !5
  %188 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %187, i32 0, i32 46
  store i8 0, ptr %188, align 2, !tbaa !29
  %189 = load ptr, ptr %4, align 8, !tbaa !5
  %190 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %189, i32 0, i32 50
  store i64 0, ptr %190, align 8, !tbaa !30
  %191 = load ptr, ptr %4, align 8, !tbaa !5
  %192 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %191, i32 0, i32 48
  store i64 0, ptr %192, align 8, !tbaa !31
  %193 = load ptr, ptr %4, align 8, !tbaa !5
  %194 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %193, i32 0, i32 49
  store i64 0, ptr %194, align 8, !tbaa !32
  %195 = load ptr, ptr %4, align 8, !tbaa !5
  %196 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %195, i32 0, i32 51
  store i64 0, ptr %196, align 8, !tbaa !33
  %197 = load ptr, ptr %4, align 8, !tbaa !5
  %198 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %197, i32 0, i32 65
  %199 = load i64, ptr %6, align 8, !tbaa !25
  %200 = load ptr, ptr %4, align 8, !tbaa !5
  %201 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %200, i32 0, i32 64
  %202 = load i64, ptr %201, align 8, !tbaa !34
  %203 = icmp sgt i64 %202, 0
  %204 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl21smoothnessmonitorinitEPNS_17smoothnessmonitorEllbPNS_8ae_stateE(ptr noundef %198, i64 noundef %199, i64 noundef 1, i1 noundef zeroext %203, ptr noundef %204)
  %205 = load ptr, ptr %4, align 8, !tbaa !5
  %206 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %205, i32 0, i32 62
  %207 = load i64, ptr %6, align 8, !tbaa !25
  %208 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %206, i64 noundef %207, ptr noundef %208)
  store i64 0, ptr %7, align 8, !tbaa !25
  br label %209

209:                                              ; preds = %242, %181
  %210 = load i64, ptr %7, align 8, !tbaa !25
  %211 = load i64, ptr %6, align 8, !tbaa !25
  %212 = sub nsw i64 %211, 1
  %213 = icmp sle i64 %210, %212
  br i1 %213, label %214, label %245

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

242:                                              ; preds = %214
  %243 = load i64, ptr %7, align 8, !tbaa !25
  %244 = add nsw i64 %243, 1
  store i64 %244, ptr %7, align 8, !tbaa !25
  br label %209, !llvm.loop !35

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

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

257:                                              ; preds = %252, %245
  br label %345

258:                                              ; preds = %252
  br label %259

259:                                              ; preds = %343, %258
  %260 = load ptr, ptr %4, align 8, !tbaa !5
  %261 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %260, i32 0, i32 65
  %262 = load ptr, ptr %4, align 8, !tbaa !5
  %263 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %262, i32 0, i32 35
  %264 = load ptr, ptr %4, align 8, !tbaa !5
  %265 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %264, i32 0, i32 15
  %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 63
  %272 = load double, ptr %271, align 8, !tbaa !38
  %273 = load ptr, ptr %5, align 8, !tbaa !5
  %274 = call noundef zeroext i1 @_ZN11alglib_impl34smoothnessmonitorcheckgradientatx0EPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_S3_bdPNS_8ae_stateE(ptr noundef %261, ptr noundef %263, ptr noundef %265, ptr noundef %267, ptr noundef %269, i1 noundef zeroext false, double noundef %272, ptr noundef %273)
  br i1 %274, label %276, label %275

275:                                              ; preds = %259
  br label %344

276:                                              ; preds = %259
  store i64 0, ptr %7, align 8, !tbaa !25
  br label %277

277:                                              ; preds = %297, %276
  %278 = load i64, ptr %7, align 8, !tbaa !25
  %279 = load i64, ptr %6, align 8, !tbaa !25
  %280 = sub nsw i64 %279, 1
  %281 = icmp sle i64 %278, %280
  br i1 %281, label %282, label %300

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

297:                                              ; preds = %282
  %298 = load i64, ptr %7, align 8, !tbaa !25
  %299 = add nsw i64 %298, 1
  store i64 %299, ptr %7, align 8, !tbaa !25
  br label %277, !llvm.loop !39

300:                                              ; preds = %277
  %301 = load ptr, ptr %4, align 8, !tbaa !5
  %302 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %301, i32 0, i32 41
  store i8 1, ptr %302, align 1, !tbaa !40
  %303 = load ptr, ptr %4, align 8, !tbaa !5
  %304 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %303, i32 0, i32 47
  %305 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %304, i32 0, i32 0
  store i32 0, ptr %305, align 8, !tbaa !9
  br label %1758

306:                                              ; preds = %61
  %307 = load ptr, ptr %4, align 8, !tbaa !5
  %308 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %307, i32 0, i32 41
  store i8 0, ptr %308, align 1, !tbaa !40
  %309 = load ptr, ptr %4, align 8, !tbaa !5
  %310 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %309, i32 0, i32 38
  %311 = load double, ptr %310, align 8, !tbaa !41
  %312 = load ptr, ptr %4, align 8, !tbaa !5
  %313 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %312, i32 0, i32 65
  %314 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %313, i32 0, i32 28
  %315 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %314, i32 0, i32 4
  %316 = load ptr, ptr %315, align 8, !tbaa !24
  %317 = getelementptr inbounds double, ptr %316, i64 0
  store double %311, ptr %317, align 8, !tbaa !26
  store i64 0, ptr %7, align 8, !tbaa !25
  br label %318

318:                                              ; preds = %340, %306
  %319 = load i64, ptr %7, align 8, !tbaa !25
  %320 = load i64, ptr %6, align 8, !tbaa !25
  %321 = sub nsw i64 %320, 1
  %322 = icmp sle i64 %319, %321
  br i1 %322, label %323, label %343

323:                                              ; preds = %318
  %324 = load ptr, ptr %4, align 8, !tbaa !5
  %325 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %324, i32 0, i32 39
  %326 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %325, i32 0, i32 4
  %327 = load ptr, ptr %326, align 8, !tbaa !24
  %328 = load i64, ptr %7, align 8, !tbaa !25
  %329 = getelementptr inbounds double, ptr %327, i64 %328
  %330 = load double, ptr %329, align 8, !tbaa !26
  %331 = load ptr, ptr %4, align 8, !tbaa !5
  %332 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %331, i32 0, i32 65
  %333 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %332, i32 0, i32 29
  %334 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %333, i32 0, i32 6
  %335 = load ptr, ptr %334, align 8, !tbaa !24
  %336 = getelementptr inbounds ptr, ptr %335, i64 0
  %337 = load ptr, ptr %336, align 8, !tbaa !5
  %338 = load i64, ptr %7, align 8, !tbaa !25
  %339 = getelementptr inbounds double, ptr %337, i64 %338
  store double %330, ptr %339, align 8, !tbaa !26
  br label %340

340:                                              ; preds = %323
  %341 = load i64, ptr %7, align 8, !tbaa !25
  %342 = add nsw i64 %341, 1
  store i64 %342, ptr %7, align 8, !tbaa !25
  br label %318, !llvm.loop !42

343:                                              ; preds = %318
  br label %259

344:                                              ; preds = %275
  br label %345

345:                                              ; preds = %344, %257
  store i64 0, ptr %7, align 8, !tbaa !25
  br label %346

346:                                              ; preds = %365, %345
  %347 = load i64, ptr %7, align 8, !tbaa !25
  %348 = load i64, ptr %6, align 8, !tbaa !25
  %349 = sub nsw i64 %348, 1
  %350 = icmp sle i64 %347, %349
  br i1 %350, label %351, label %368

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

365:                                              ; preds = %351
  %366 = load i64, ptr %7, align 8, !tbaa !25
  %367 = add nsw i64 %366, 1
  store i64 %367, ptr %7, align 8, !tbaa !25
  br label %346, !llvm.loop !43

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

388:                                              ; preds = %368
  br label %398

389:                                              ; preds = %368
  %390 = load ptr, ptr %4, align 8, !tbaa !5
  %391 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %390, i32 0, i32 41
  store i8 1, ptr %391, align 1, !tbaa !40
  %392 = load ptr, ptr %4, align 8, !tbaa !5
  %393 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %392, i32 0, i32 47
  %394 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %393, i32 0, i32 0
  store i32 1, ptr %394, align 8, !tbaa !9
  br label %1758

395:                                              ; preds = %68
  %396 = load ptr, ptr %4, align 8, !tbaa !5
  %397 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %396, i32 0, i32 41
  store i8 0, ptr %397, align 1, !tbaa !40
  br label %588

398:                                              ; preds = %388
  %399 = load ptr, ptr %4, align 8, !tbaa !5
  %400 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %399, i32 0, i32 40
  store i8 1, ptr %400, align 8, !tbaa !44
  %401 = load ptr, ptr %4, align 8, !tbaa !5
  %402 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %401, i32 0, i32 47
  %403 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %402, i32 0, i32 0
  store i32 2, ptr %403, align 8, !tbaa !9
  br label %1758

404:                                              ; preds = %75
  %405 = load ptr, ptr %4, align 8, !tbaa !5
  %406 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %405, i32 0, i32 38
  %407 = load double, ptr %406, align 8, !tbaa !41
  %408 = load ptr, ptr %4, align 8, !tbaa !5
  %409 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %408, i32 0, i32 53
  store double %407, ptr %409, align 8, !tbaa !45
  store i64 0, ptr %7, align 8, !tbaa !25
  br label %410

410:                                              ; preds = %530, %404
  %411 = load i64, ptr %7, align 8, !tbaa !25
  %412 = load i64, ptr %6, align 8, !tbaa !25
  %413 = sub nsw i64 %412, 1
  %414 = icmp sgt i64 %411, %413
  br i1 %414, label %415, label %416

415:                                              ; preds = %410
  br label %580

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

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

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

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

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

580:                                              ; preds = %415
  %581 = load ptr, ptr %4, align 8, !tbaa !5
  %582 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %581, i32 0, i32 53
  %583 = load double, ptr %582, align 8, !tbaa !45
  %584 = load ptr, ptr %4, align 8, !tbaa !5
  %585 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %584, i32 0, i32 38
  store double %583, ptr %585, align 8, !tbaa !41
  %586 = load ptr, ptr %4, align 8, !tbaa !5
  %587 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %586, i32 0, i32 40
  store i8 0, ptr %587, align 8, !tbaa !44
  br label %588

588:                                              ; preds = %580, %395
  %589 = load ptr, ptr %4, align 8, !tbaa !5
  %590 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %589, i32 0, i32 8
  %591 = load i8, ptr %590, align 1, !tbaa !50, !range !51, !noundef !52
  %592 = trunc i8 %591 to i1
  br i1 %592, label %594, label %593

593:                                              ; preds = %588
  br label %605

594:                                              ; preds = %588
  %595 = load ptr, ptr %4, align 8, !tbaa !5
  %596 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %595, ptr noundef %596)
  %597 = load ptr, ptr %4, align 8, !tbaa !5
  %598 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %597, i32 0, i32 43
  store i8 1, ptr %598, align 1, !tbaa !53
  %599 = load ptr, ptr %4, align 8, !tbaa !5
  %600 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %599, i32 0, i32 47
  %601 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %600, i32 0, i32 0
  store i32 7, ptr %601, align 8, !tbaa !9
  br label %1758

602:                                              ; preds = %110
  %603 = load ptr, ptr %4, align 8, !tbaa !5
  %604 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %603, i32 0, i32 43
  store i8 0, ptr %604, align 1, !tbaa !53
  br label %605

605:                                              ; preds = %602, %593
  %606 = load ptr, ptr %4, align 8, !tbaa !5
  %607 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %606, i32 0, i32 38
  %608 = load double, ptr %607, align 8, !tbaa !41
  %609 = load ptr, ptr %4, align 8, !tbaa !5
  %610 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %609, i32 0, i32 34
  %611 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11trimprepareEdPdPNS_8ae_stateE(double noundef %608, ptr noundef %610, ptr noundef %611)
  %612 = load ptr, ptr %4, align 8, !tbaa !5
  %613 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %612, i32 0, i32 21
  %614 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %613, i32 0, i32 4
  %615 = load ptr, ptr %614, align 8, !tbaa !24
  %616 = getelementptr inbounds double, ptr %615, i64 0
  %617 = load ptr, ptr %4, align 8, !tbaa !5
  %618 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %617, i32 0, i32 39
  %619 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %618, i32 0, i32 4
  %620 = load ptr, ptr %619, align 8, !tbaa !24
  %621 = getelementptr inbounds double, ptr %620, i64 0
  %622 = load i64, ptr %6, align 8, !tbaa !25
  %623 = sub nsw i64 %622, 1
  %624 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %623)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %616, i64 noundef 1, ptr noundef %621, i64 noundef 1, i64 noundef %624)
  %625 = load ptr, ptr %4, align 8, !tbaa !5
  %626 = load ptr, ptr %4, align 8, !tbaa !5
  %627 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %626, i32 0, i32 21
  %628 = load ptr, ptr %4, align 8, !tbaa !5
  %629 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %628, i32 0, i32 60
  %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 %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL28mincg_preconditionedmultiplyEPNS_10mincgstateEPNS_9ae_vectorES3_S3_PNS_8ae_stateE(ptr noundef %625, ptr noundef %627, ptr noundef %629, ptr noundef %631, ptr noundef %632)
  %633 = load ptr, ptr %4, align 8, !tbaa !5
  %634 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %633, i32 0, i32 7
  %635 = load i8, ptr %634, align 8, !tbaa !54, !range !51, !noundef !52
  %636 = trunc i8 %635 to i1
  br i1 %636, label %638, label %637

637:                                              ; preds = %605
  br label %649

638:                                              ; preds = %605
  %639 = load ptr, ptr %4, align 8, !tbaa !5
  %640 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %639, ptr noundef %640)
  %641 = load ptr, ptr %4, align 8, !tbaa !5
  %642 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %641, i32 0, i32 42
  store i8 1, ptr %642, align 2, !tbaa !55
  %643 = load ptr, ptr %4, align 8, !tbaa !5
  %644 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %643, i32 0, i32 47
  %645 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %644, i32 0, i32 0
  store i32 8, ptr %645, align 8, !tbaa !9
  br label %1758

646:                                              ; preds = %117
  %647 = load ptr, ptr %4, align 8, !tbaa !5
  %648 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %647, i32 0, i32 42
  store i8 0, ptr %648, align 2, !tbaa !55
  br label %649

649:                                              ; preds = %646, %637
  %650 = load ptr, ptr %4, align 8, !tbaa !5
  %651 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %650, i32 0, i32 33
  %652 = load i8, ptr %651, align 1, !tbaa !28, !range !51, !noundef !52
  %653 = trunc i8 %652 to i1
  br i1 %653, label %659, label %654

654:                                              ; preds = %649
  %655 = load ptr, ptr %4, align 8, !tbaa !5
  %656 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %655, i32 0, i32 46
  %657 = load i8, ptr %656, align 2, !tbaa !29, !range !51, !noundef !52
  %658 = trunc i8 %657 to i1
  br i1 %658, label %659, label %677

659:                                              ; preds = %654, %649
  %660 = load ptr, ptr %4, align 8, !tbaa !5
  %661 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %660, i32 0, i32 22
  %662 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %661, i32 0, i32 4
  %663 = load ptr, ptr %662, align 8, !tbaa !24
  %664 = getelementptr inbounds double, ptr %663, i64 0
  %665 = load ptr, ptr %4, align 8, !tbaa !5
  %666 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %665, i32 0, i32 20
  %667 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %666, i32 0, i32 4
  %668 = load ptr, ptr %667, align 8, !tbaa !24
  %669 = getelementptr inbounds double, ptr %668, i64 0
  %670 = load i64, ptr %6, align 8, !tbaa !25
  %671 = sub nsw i64 %670, 1
  %672 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %671)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %664, i64 noundef 1, ptr noundef %669, i64 noundef 1, i64 noundef %672)
  %673 = load ptr, ptr %4, align 8, !tbaa !5
  %674 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %673, i32 0, i32 50
  store i64 8, ptr %674, align 8, !tbaa !30
  store i8 0, ptr %11, align 1, !tbaa !56
  %675 = load i8, ptr %11, align 1, !tbaa !56, !range !51, !noundef !52
  %676 = trunc i8 %675 to i1
  store i1 %676, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1796

677:                                              ; preds = %654
  store double 0.000000e+00, ptr %9, align 8, !tbaa !26
  store i64 0, ptr %7, align 8, !tbaa !25
  br label %678

678:                                              ; preds = %703, %677
  %679 = load i64, ptr %7, align 8, !tbaa !25
  %680 = load i64, ptr %6, align 8, !tbaa !25
  %681 = sub nsw i64 %680, 1
  %682 = icmp sle i64 %679, %681
  br i1 %682, label %683, label %706

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

703:                                              ; preds = %683
  %704 = load i64, ptr %7, align 8, !tbaa !25
  %705 = add nsw i64 %704, 1
  store i64 %705, ptr %7, align 8, !tbaa !25
  br label %678, !llvm.loop !57

706:                                              ; preds = %678
  %707 = load double, ptr %9, align 8, !tbaa !26
  %708 = load ptr, ptr %5, align 8, !tbaa !5
  %709 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %707, ptr noundef %708)
  %710 = load ptr, ptr %4, align 8, !tbaa !5
  %711 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %710, i32 0, i32 1
  %712 = load double, ptr %711, align 8, !tbaa !58
  %713 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %709, double noundef %712)
  br i1 %713, label %714, label %732

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

732:                                              ; preds = %706
  %733 = load ptr, ptr %4, align 8, !tbaa !5
  %734 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %733, i32 0, i32 49
  store i64 1, ptr %734, align 8, !tbaa !32
  %735 = load ptr, ptr %4, align 8, !tbaa !5
  %736 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %735, i32 0, i32 19
  store i64 0, ptr %736, align 8, !tbaa !59
  %737 = load ptr, ptr %4, align 8, !tbaa !5
  %738 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %737, i32 0, i32 38
  %739 = load double, ptr %738, align 8, !tbaa !41
  %740 = load ptr, ptr %4, align 8, !tbaa !5
  %741 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %740, i32 0, i32 25
  store double %739, ptr %741, align 8, !tbaa !60
  %742 = load ptr, ptr %4, align 8, !tbaa !5
  %743 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %742, i32 0, i32 10
  %744 = load i64, ptr %743, align 8, !tbaa !61
  %745 = icmp eq i64 %744, 2
  br i1 %745, label %751, label %746

746:                                              ; preds = %732
  %747 = load ptr, ptr %4, align 8, !tbaa !5
  %748 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %747, i32 0, i32 10
  %749 = load i64, ptr %748, align 8, !tbaa !61
  %750 = icmp eq i64 %749, 3
  br i1 %750, label %751, label %771

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

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

776:                                              ; preds = %771
  %777 = load ptr, ptr %4, align 8, !tbaa !5
  %778 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %777, i32 0, i32 6
  %779 = load double, ptr %778, align 8, !tbaa !63
  %780 = load ptr, ptr %4, align 8, !tbaa !5
  %781 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %780, i32 0, i32 29
  store double %779, ptr %781, align 8, !tbaa !62
  br label %785

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

785:                                              ; preds = %782, %776
  br label %786

786:                                              ; preds = %785, %751
  %787 = load i64, ptr @_ZN11alglib_implL20mincg_rscountdownlenE, align 8, !tbaa !25
  %788 = load ptr, ptr %4, align 8, !tbaa !5
  %789 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %788, i32 0, i32 36
  store i64 %787, ptr %789, align 8, !tbaa !64
  br label %790

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

848:                                              ; preds = %790
  %849 = load ptr, ptr %4, align 8, !tbaa !5
  %850 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %849, i32 0, i32 29
  %851 = load double, ptr %850, align 8, !tbaa !62
  %852 = load ptr, ptr %4, align 8, !tbaa !5
  %853 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %852, i32 0, i32 26
  store double %851, ptr %853, align 8, !tbaa !67
  br label %854

854:                                              ; preds = %848, %790
  %855 = load ptr, ptr %4, align 8, !tbaa !5
  %856 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %855, i32 0, i32 5
  %857 = load double, ptr %856, align 8, !tbaa !68
  %858 = load ptr, ptr %4, align 8, !tbaa !5
  %859 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %858, i32 0, i32 27
  store double %857, ptr %859, 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 8
  %862 = load i8, ptr %861, align 1, !tbaa !50, !range !51, !noundef !52
  %863 = trunc i8 %862 to i1
  br i1 %863, label %865, label %864

864:                                              ; preds = %854
  br label %876

865:                                              ; preds = %854
  %866 = load ptr, ptr %4, align 8, !tbaa !5
  %867 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %866, ptr noundef %867)
  %868 = load ptr, ptr %4, align 8, !tbaa !5
  %869 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %868, i32 0, i32 44
  store i8 1, ptr %869, align 4, !tbaa !70
  %870 = load ptr, ptr %4, align 8, !tbaa !5
  %871 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %870, i32 0, i32 47
  %872 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %871, i32 0, i32 0
  store i32 9, ptr %872, align 8, !tbaa !9
  br label %1758

873:                                              ; preds = %124
  %874 = load ptr, ptr %4, align 8, !tbaa !5
  %875 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %874, i32 0, i32 44
  store i8 0, ptr %875, align 4, !tbaa !70
  br label %876

876:                                              ; preds = %873, %864
  %877 = load ptr, ptr %4, align 8, !tbaa !5
  %878 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %877, i32 0, i32 33
  %879 = load i8, ptr %878, align 1, !tbaa !28, !range !51, !noundef !52
  %880 = trunc i8 %879 to i1
  br i1 %880, label %881, label %899

881:                                              ; preds = %876
  %882 = load ptr, ptr %4, align 8, !tbaa !5
  %883 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %882, i32 0, i32 22
  %884 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %883, i32 0, i32 4
  %885 = load ptr, ptr %884, align 8, !tbaa !24
  %886 = getelementptr inbounds double, ptr %885, i64 0
  %887 = load ptr, ptr %4, align 8, !tbaa !5
  %888 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %887, i32 0, i32 37
  %889 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %888, i32 0, i32 4
  %890 = load ptr, ptr %889, align 8, !tbaa !24
  %891 = getelementptr inbounds double, ptr %890, i64 0
  %892 = load i64, ptr %6, align 8, !tbaa !25
  %893 = sub nsw i64 %892, 1
  %894 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %893)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %886, i64 noundef 1, ptr noundef %891, i64 noundef 1, i64 noundef %894)
  %895 = load ptr, ptr %4, align 8, !tbaa !5
  %896 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %895, i32 0, i32 50
  store i64 8, ptr %896, align 8, !tbaa !30
  store i8 0, ptr %11, align 1, !tbaa !56
  %897 = load i8, ptr %11, align 1, !tbaa !56, !range !51, !noundef !52
  %898 = trunc i8 %897 to i1
  store i1 %898, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1796

899:                                              ; preds = %876
  %900 = load ptr, ptr %4, align 8, !tbaa !5
  %901 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %900, i32 0, i32 65
  %902 = load ptr, ptr %4, align 8, !tbaa !5
  %903 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %902, i32 0, i32 15
  %904 = load ptr, ptr %4, align 8, !tbaa !5
  %905 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %904, i32 0, i32 62
  %906 = load ptr, ptr %4, align 8, !tbaa !5
  %907 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %906, i32 0, i32 37
  %908 = load ptr, ptr %4, align 8, !tbaa !5
  %909 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %908, i32 0, i32 38
  %910 = load double, ptr %909, align 8, !tbaa !41
  %911 = load ptr, ptr %4, align 8, !tbaa !5
  %912 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %911, i32 0, i32 39
  %913 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl34smoothnessmonitorstartlinesearch1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_PNS_8ae_stateE(ptr noundef %901, ptr noundef %903, ptr noundef %905, ptr noundef %907, double noundef %910, ptr noundef %912, ptr noundef %913)
  %914 = load i64, ptr %6, align 8, !tbaa !25
  %915 = load ptr, ptr %4, align 8, !tbaa !5
  %916 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %915, i32 0, i32 37
  %917 = load ptr, ptr %4, align 8, !tbaa !5
  %918 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %917, i32 0, i32 38
  %919 = load ptr, ptr %4, align 8, !tbaa !5
  %920 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %919, i32 0, i32 39
  %921 = load ptr, ptr %4, align 8, !tbaa !5
  %922 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %921, i32 0, i32 24
  %923 = load ptr, ptr %4, align 8, !tbaa !5
  %924 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %923, i32 0, i32 26
  %925 = load ptr, ptr %4, align 8, !tbaa !5
  %926 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %925, i32 0, i32 27
  %927 = load double, ptr %926, align 8, !tbaa !69
  %928 = load double, ptr @_ZN11alglib_implL10mincg_gtolE, align 8, !tbaa !26
  %929 = load ptr, ptr %4, align 8, !tbaa !5
  %930 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %929, i32 0, i32 31
  %931 = load ptr, ptr %4, align 8, !tbaa !5
  %932 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %931, i32 0, i32 17
  %933 = load ptr, ptr %4, align 8, !tbaa !5
  %934 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %933, i32 0, i32 60
  %935 = load ptr, ptr %4, align 8, !tbaa !5
  %936 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %935, i32 0, i32 52
  %937 = load ptr, ptr %4, align 8, !tbaa !5
  %938 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %937, i32 0, i32 18
  %939 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_S1_S2_ddPlS3_S1_PNS_11linminstateES3_PNS_8ae_stateE(i64 noundef %914, ptr noundef %916, ptr noundef %918, ptr noundef %920, ptr noundef %922, ptr noundef %924, double noundef %927, double noundef %928, ptr noundef %930, ptr noundef %932, ptr noundef %934, ptr noundef %936, ptr noundef %938, ptr noundef %939)
  br label %940

940:                                              ; preds = %1153, %899
  %941 = load ptr, ptr %4, align 8, !tbaa !5
  %942 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %941, i32 0, i32 18
  %943 = load i64, ptr %942, align 8, !tbaa !66
  %944 = icmp eq i64 %943, 0
  br i1 %944, label %945, label %946

945:                                              ; preds = %940
  br label %1208

946:                                              ; preds = %940
  %947 = load ptr, ptr %4, align 8, !tbaa !5
  %948 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %947, ptr noundef %948)
  %949 = load ptr, ptr %4, align 8, !tbaa !5
  %950 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %949, i32 0, i32 16
  %951 = load double, ptr %950, align 8, !tbaa !37
  %952 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %951, double noundef 0.000000e+00)
  br i1 %952, label %953, label %954

953:                                              ; preds = %946
  br label %963

954:                                              ; preds = %946
  %955 = load ptr, ptr %4, align 8, !tbaa !5
  %956 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %955, i32 0, i32 41
  store i8 1, ptr %956, align 1, !tbaa !40
  %957 = load ptr, ptr %4, align 8, !tbaa !5
  %958 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %957, i32 0, i32 47
  %959 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %958, i32 0, i32 0
  store i32 10, ptr %959, align 8, !tbaa !9
  br label %1758

960:                                              ; preds = %131
  %961 = load ptr, ptr %4, align 8, !tbaa !5
  %962 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %961, i32 0, i32 41
  store i8 0, ptr %962, align 1, !tbaa !40
  br label %1153

963:                                              ; preds = %953
  %964 = load ptr, ptr %4, align 8, !tbaa !5
  %965 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %964, i32 0, i32 40
  store i8 1, ptr %965, align 8, !tbaa !44
  %966 = load ptr, ptr %4, align 8, !tbaa !5
  %967 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %966, i32 0, i32 47
  %968 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %967, i32 0, i32 0
  store i32 11, ptr %968, align 8, !tbaa !9
  br label %1758

969:                                              ; preds = %138
  %970 = load ptr, ptr %4, align 8, !tbaa !5
  %971 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %970, i32 0, i32 38
  %972 = load double, ptr %971, align 8, !tbaa !41
  %973 = load ptr, ptr %4, align 8, !tbaa !5
  %974 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %973, i32 0, i32 53
  store double %972, ptr %974, align 8, !tbaa !45
  store i64 0, ptr %7, align 8, !tbaa !25
  br label %975

975:                                              ; preds = %1095, %969
  %976 = load i64, ptr %7, align 8, !tbaa !25
  %977 = load i64, ptr %6, align 8, !tbaa !25
  %978 = sub nsw i64 %977, 1
  %979 = icmp sgt i64 %976, %978
  br i1 %979, label %980, label %981

980:                                              ; preds = %975
  br label %1145

981:                                              ; preds = %975
  %982 = load ptr, ptr %4, align 8, !tbaa !5
  %983 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %982, i32 0, i32 37
  %984 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %983, i32 0, i32 4
  %985 = load ptr, ptr %984, align 8, !tbaa !24
  %986 = load i64, ptr %7, align 8, !tbaa !25
  %987 = getelementptr inbounds double, ptr %985, i64 %986
  %988 = load double, ptr %987, align 8, !tbaa !26
  store double %988, ptr %9, align 8, !tbaa !26
  %989 = load double, ptr %9, align 8, !tbaa !26
  %990 = load ptr, ptr %4, align 8, !tbaa !5
  %991 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %990, i32 0, i32 16
  %992 = load double, ptr %991, align 8, !tbaa !37
  %993 = load ptr, ptr %4, align 8, !tbaa !5
  %994 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %993, i32 0, i32 15
  %995 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %994, i32 0, i32 4
  %996 = load ptr, ptr %995, align 8, !tbaa !24
  %997 = load i64, ptr %7, align 8, !tbaa !25
  %998 = getelementptr inbounds double, ptr %996, i64 %997
  %999 = load double, ptr %998, align 8, !tbaa !26
  %1000 = fneg double %992
  %1001 = call double @llvm.fmuladd.f64(double %1000, double %999, double %989)
  %1002 = load ptr, ptr %4, align 8, !tbaa !5
  %1003 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1002, i32 0, i32 37
  %1004 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1003, i32 0, i32 4
  %1005 = load ptr, ptr %1004, align 8, !tbaa !24
  %1006 = load i64, ptr %7, align 8, !tbaa !25
  %1007 = getelementptr inbounds double, ptr %1005, i64 %1006
  store double %1001, ptr %1007, align 8, !tbaa !26
  %1008 = load ptr, ptr %4, align 8, !tbaa !5
  %1009 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1008, i32 0, i32 47
  %1010 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1009, i32 0, i32 0
  store i32 12, ptr %1010, align 8, !tbaa !9
  br label %1758

1011:                                             ; preds = %145
  %1012 = load ptr, ptr %4, align 8, !tbaa !5
  %1013 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1012, i32 0, i32 38
  %1014 = load double, ptr %1013, align 8, !tbaa !41
  %1015 = load ptr, ptr %4, align 8, !tbaa !5
  %1016 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1015, i32 0, i32 54
  store double %1014, ptr %1016, align 8, !tbaa !46
  %1017 = load double, ptr %9, align 8, !tbaa !26
  %1018 = load ptr, ptr %4, align 8, !tbaa !5
  %1019 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1018, i32 0, i32 16
  %1020 = load double, ptr %1019, align 8, !tbaa !37
  %1021 = fmul double 5.000000e-01, %1020
  %1022 = load ptr, ptr %4, align 8, !tbaa !5
  %1023 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1022, i32 0, i32 15
  %1024 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1023, i32 0, i32 4
  %1025 = load ptr, ptr %1024, align 8, !tbaa !24
  %1026 = load i64, ptr %7, align 8, !tbaa !25
  %1027 = getelementptr inbounds double, ptr %1025, i64 %1026
  %1028 = load double, ptr %1027, align 8, !tbaa !26
  %1029 = fneg double %1021
  %1030 = call double @llvm.fmuladd.f64(double %1029, double %1028, double %1017)
  %1031 = load ptr, ptr %4, align 8, !tbaa !5
  %1032 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1031, i32 0, i32 37
  %1033 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1032, i32 0, i32 4
  %1034 = load ptr, ptr %1033, align 8, !tbaa !24
  %1035 = load i64, ptr %7, align 8, !tbaa !25
  %1036 = getelementptr inbounds double, ptr %1034, i64 %1035
  store double %1030, ptr %1036, align 8, !tbaa !26
  %1037 = load ptr, ptr %4, align 8, !tbaa !5
  %1038 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1037, i32 0, i32 47
  %1039 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1038, i32 0, i32 0
  store i32 13, ptr %1039, align 8, !tbaa !9
  br label %1758

1040:                                             ; preds = %152
  %1041 = load ptr, ptr %4, align 8, !tbaa !5
  %1042 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1041, i32 0, i32 38
  %1043 = load double, ptr %1042, align 8, !tbaa !41
  %1044 = load ptr, ptr %4, align 8, !tbaa !5
  %1045 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1044, i32 0, i32 55
  store double %1043, ptr %1045, align 8, !tbaa !47
  %1046 = load double, ptr %9, align 8, !tbaa !26
  %1047 = load ptr, ptr %4, align 8, !tbaa !5
  %1048 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1047, i32 0, i32 16
  %1049 = load double, ptr %1048, align 8, !tbaa !37
  %1050 = fmul double 5.000000e-01, %1049
  %1051 = load ptr, ptr %4, align 8, !tbaa !5
  %1052 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1051, i32 0, i32 15
  %1053 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1052, i32 0, i32 4
  %1054 = load ptr, ptr %1053, align 8, !tbaa !24
  %1055 = load i64, ptr %7, align 8, !tbaa !25
  %1056 = getelementptr inbounds double, ptr %1054, i64 %1055
  %1057 = load double, ptr %1056, align 8, !tbaa !26
  %1058 = call double @llvm.fmuladd.f64(double %1050, double %1057, double %1046)
  %1059 = load ptr, ptr %4, align 8, !tbaa !5
  %1060 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1059, i32 0, i32 37
  %1061 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1060, i32 0, i32 4
  %1062 = load ptr, ptr %1061, align 8, !tbaa !24
  %1063 = load i64, ptr %7, align 8, !tbaa !25
  %1064 = getelementptr inbounds double, ptr %1062, i64 %1063
  store double %1058, ptr %1064, align 8, !tbaa !26
  %1065 = load ptr, ptr %4, align 8, !tbaa !5
  %1066 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1065, i32 0, i32 47
  %1067 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1066, i32 0, i32 0
  store i32 14, ptr %1067, align 8, !tbaa !9
  br label %1758

1068:                                             ; preds = %159
  %1069 = load ptr, ptr %4, align 8, !tbaa !5
  %1070 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1069, i32 0, i32 38
  %1071 = load double, ptr %1070, align 8, !tbaa !41
  %1072 = load ptr, ptr %4, align 8, !tbaa !5
  %1073 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1072, i32 0, i32 56
  store double %1071, ptr %1073, align 8, !tbaa !48
  %1074 = load double, ptr %9, align 8, !tbaa !26
  %1075 = load ptr, ptr %4, align 8, !tbaa !5
  %1076 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1075, i32 0, i32 16
  %1077 = load double, ptr %1076, align 8, !tbaa !37
  %1078 = load ptr, ptr %4, align 8, !tbaa !5
  %1079 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1078, i32 0, i32 15
  %1080 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1079, i32 0, i32 4
  %1081 = load ptr, ptr %1080, align 8, !tbaa !24
  %1082 = load i64, ptr %7, align 8, !tbaa !25
  %1083 = getelementptr inbounds double, ptr %1081, i64 %1082
  %1084 = load double, ptr %1083, align 8, !tbaa !26
  %1085 = call double @llvm.fmuladd.f64(double %1077, double %1084, double %1074)
  %1086 = load ptr, ptr %4, align 8, !tbaa !5
  %1087 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1086, i32 0, i32 37
  %1088 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1087, i32 0, i32 4
  %1089 = load ptr, ptr %1088, align 8, !tbaa !24
  %1090 = load i64, ptr %7, align 8, !tbaa !25
  %1091 = getelementptr inbounds double, ptr %1089, i64 %1090
  store double %1085, ptr %1091, align 8, !tbaa !26
  %1092 = load ptr, ptr %4, align 8, !tbaa !5
  %1093 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1092, i32 0, i32 47
  %1094 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1093, i32 0, i32 0
  store i32 15, ptr %1094, align 8, !tbaa !9
  br label %1758

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

1145:                                             ; preds = %980
  %1146 = load ptr, ptr %4, align 8, !tbaa !5
  %1147 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1146, i32 0, i32 53
  %1148 = load double, ptr %1147, align 8, !tbaa !45
  %1149 = load ptr, ptr %4, align 8, !tbaa !5
  %1150 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1149, i32 0, i32 38
  store double %1148, ptr %1150, align 8, !tbaa !41
  %1151 = load ptr, ptr %4, align 8, !tbaa !5
  %1152 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1151, i32 0, i32 40
  store i8 0, ptr %1152, align 8, !tbaa !44
  br label %1153

1153:                                             ; preds = %1145, %960
  %1154 = load ptr, ptr %4, align 8, !tbaa !5
  %1155 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1154, i32 0, i32 65
  %1156 = load ptr, ptr %4, align 8, !tbaa !5
  %1157 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1156, i32 0, i32 15
  %1158 = load ptr, ptr %4, align 8, !tbaa !5
  %1159 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1158, i32 0, i32 62
  %1160 = load ptr, ptr %4, align 8, !tbaa !5
  %1161 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1160, i32 0, i32 24
  %1162 = load ptr, ptr %4, align 8, !tbaa !5
  %1163 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1162, i32 0, i32 26
  %1164 = load double, ptr %1163, align 8, !tbaa !67
  %1165 = load ptr, ptr %4, align 8, !tbaa !5
  %1166 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1165, i32 0, i32 37
  %1167 = load ptr, ptr %4, align 8, !tbaa !5
  %1168 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1167, i32 0, i32 38
  %1169 = load double, ptr %1168, align 8, !tbaa !41
  %1170 = load ptr, ptr %4, align 8, !tbaa !5
  %1171 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1170, i32 0, i32 39
  %1172 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl31smoothnessmonitorenqueuepoint1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_dS3_PNS_8ae_stateE(ptr noundef %1155, ptr noundef %1157, ptr noundef %1159, ptr noundef %1161, double noundef %1164, ptr noundef %1166, double noundef %1169, ptr noundef %1171, ptr noundef %1172)
  %1173 = load ptr, ptr %4, align 8, !tbaa !5
  %1174 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1173, i32 0, i32 38
  %1175 = load ptr, ptr %4, align 8, !tbaa !5
  %1176 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1175, i32 0, i32 39
  %1177 = load i64, ptr %6, align 8, !tbaa !25
  %1178 = load ptr, ptr %4, align 8, !tbaa !5
  %1179 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1178, i32 0, i32 34
  %1180 = load double, ptr %1179, align 8, !tbaa !71
  %1181 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl12trimfunctionEPdPNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef %1174, ptr noundef %1176, i64 noundef %1177, double noundef %1180, ptr noundef %1181)
  %1182 = load i64, ptr %6, align 8, !tbaa !25
  %1183 = load ptr, ptr %4, align 8, !tbaa !5
  %1184 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1183, i32 0, i32 37
  %1185 = load ptr, ptr %4, align 8, !tbaa !5
  %1186 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1185, i32 0, i32 38
  %1187 = load ptr, ptr %4, align 8, !tbaa !5
  %1188 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1187, i32 0, i32 39
  %1189 = load ptr, ptr %4, align 8, !tbaa !5
  %1190 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1189, i32 0, i32 24
  %1191 = load ptr, ptr %4, align 8, !tbaa !5
  %1192 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1191, i32 0, i32 26
  %1193 = load ptr, ptr %4, align 8, !tbaa !5
  %1194 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1193, i32 0, i32 27
  %1195 = load double, ptr %1194, align 8, !tbaa !69
  %1196 = load double, ptr @_ZN11alglib_implL10mincg_gtolE, align 8, !tbaa !26
  %1197 = load ptr, ptr %4, align 8, !tbaa !5
  %1198 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1197, i32 0, i32 31
  %1199 = load ptr, ptr %4, align 8, !tbaa !5
  %1200 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1199, i32 0, i32 17
  %1201 = load ptr, ptr %4, align 8, !tbaa !5
  %1202 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1201, i32 0, i32 60
  %1203 = load ptr, ptr %4, align 8, !tbaa !5
  %1204 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1203, i32 0, i32 52
  %1205 = load ptr, ptr %4, align 8, !tbaa !5
  %1206 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1205, i32 0, i32 18
  %1207 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_S1_S2_ddPlS3_S1_PNS_11linminstateES3_PNS_8ae_stateE(i64 noundef %1182, ptr noundef %1184, ptr noundef %1186, ptr noundef %1188, ptr noundef %1190, ptr noundef %1192, double noundef %1195, double noundef %1196, ptr noundef %1198, ptr noundef %1200, ptr noundef %1202, ptr noundef %1204, ptr noundef %1206, ptr noundef %1207)
  br label %940

1208:                                             ; preds = %945
  %1209 = load ptr, ptr %4, align 8, !tbaa !5
  %1210 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1209, i32 0, i32 65
  %1211 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl35smoothnessmonitorfinalizelinesearchEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef %1210, ptr noundef %1211)
  %1212 = load ptr, ptr %4, align 8, !tbaa !5
  %1213 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1212, i32 0, i32 46
  %1214 = load i8, ptr %1213, align 2, !tbaa !29, !range !51, !noundef !52
  %1215 = trunc i8 %1214 to i1
  br i1 %1215, label %1216, label %1234

1216:                                             ; preds = %1208
  %1217 = load ptr, ptr %4, align 8, !tbaa !5
  %1218 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1217, i32 0, i32 22
  %1219 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1218, i32 0, i32 4
  %1220 = load ptr, ptr %1219, align 8, !tbaa !24
  %1221 = getelementptr inbounds double, ptr %1220, i64 0
  %1222 = load ptr, ptr %4, align 8, !tbaa !5
  %1223 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1222, i32 0, i32 20
  %1224 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1223, i32 0, i32 4
  %1225 = load ptr, ptr %1224, align 8, !tbaa !24
  %1226 = getelementptr inbounds double, ptr %1225, i64 0
  %1227 = load i64, ptr %6, align 8, !tbaa !25
  %1228 = sub nsw i64 %1227, 1
  %1229 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1228)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1221, i64 noundef 1, ptr noundef %1226, i64 noundef 1, i64 noundef %1229)
  %1230 = load ptr, ptr %4, align 8, !tbaa !5
  %1231 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1230, i32 0, i32 50
  store i64 8, ptr %1231, align 8, !tbaa !30
  store i8 0, ptr %11, align 1, !tbaa !56
  %1232 = load i8, ptr %11, align 1, !tbaa !56, !range !51, !noundef !52
  %1233 = trunc i8 %1232 to i1
  store i1 %1233, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1796

1234:                                             ; preds = %1208
  %1235 = load ptr, ptr %4, align 8, !tbaa !5
  %1236 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1235, i32 0, i32 8
  %1237 = load i8, ptr %1236, align 1, !tbaa !50, !range !51, !noundef !52
  %1238 = trunc i8 %1237 to i1
  br i1 %1238, label %1240, label %1239

1239:                                             ; preds = %1234
  br label %1251

1240:                                             ; preds = %1234
  %1241 = load ptr, ptr %4, align 8, !tbaa !5
  %1242 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %1241, ptr noundef %1242)
  %1243 = load ptr, ptr %4, align 8, !tbaa !5
  %1244 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1243, i32 0, i32 45
  store i8 1, ptr %1244, align 1, !tbaa !72
  %1245 = load ptr, ptr %4, align 8, !tbaa !5
  %1246 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1245, i32 0, i32 47
  %1247 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1246, i32 0, i32 0
  store i32 16, ptr %1247, align 8, !tbaa !9
  br label %1758

1248:                                             ; preds = %173
  %1249 = load ptr, ptr %4, align 8, !tbaa !5
  %1250 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1249, i32 0, i32 45
  store i8 0, ptr %1250, align 1, !tbaa !72
  br label %1251

1251:                                             ; preds = %1248, %1239
  %1252 = load ptr, ptr %4, align 8, !tbaa !5
  %1253 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1252, i32 0, i32 22
  %1254 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1253, i32 0, i32 4
  %1255 = load ptr, ptr %1254, align 8, !tbaa !24
  %1256 = getelementptr inbounds double, ptr %1255, i64 0
  %1257 = load ptr, ptr %4, align 8, !tbaa !5
  %1258 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1257, i32 0, i32 37
  %1259 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1258, i32 0, i32 4
  %1260 = load ptr, ptr %1259, align 8, !tbaa !24
  %1261 = getelementptr inbounds double, ptr %1260, i64 0
  %1262 = load i64, ptr %6, align 8, !tbaa !25
  %1263 = sub nsw i64 %1262, 1
  %1264 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1263)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1256, i64 noundef 1, ptr noundef %1261, i64 noundef 1, i64 noundef %1264)
  %1265 = load ptr, ptr %4, align 8, !tbaa !5
  %1266 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1265, i32 0, i32 7
  %1267 = load i8, ptr %1266, align 8, !tbaa !54, !range !51, !noundef !52
  %1268 = trunc i8 %1267 to i1
  br i1 %1268, label %1270, label %1269

1269:                                             ; preds = %1251
  br label %1281

1270:                                             ; preds = %1251
  %1271 = load ptr, ptr %4, align 8, !tbaa !5
  %1272 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef %1271, ptr noundef %1272)
  %1273 = load ptr, ptr %4, align 8, !tbaa !5
  %1274 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1273, i32 0, i32 42
  store i8 1, ptr %1274, align 2, !tbaa !55
  %1275 = load ptr, ptr %4, align 8, !tbaa !5
  %1276 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1275, i32 0, i32 47
  %1277 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1276, i32 0, i32 0
  store i32 17, ptr %1277, align 8, !tbaa !9
  br label %1758

1278:                                             ; preds = %180
  %1279 = load ptr, ptr %4, align 8, !tbaa !5
  %1280 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1279, i32 0, i32 42
  store i8 0, ptr %1280, align 2, !tbaa !55
  br label %1281

1281:                                             ; preds = %1278, %1269
  %1282 = load ptr, ptr %4, align 8, !tbaa !5
  %1283 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1282, i32 0, i32 33
  %1284 = load i8, ptr %1283, align 1, !tbaa !28, !range !51, !noundef !52
  %1285 = trunc i8 %1284 to i1
  br i1 %1285, label %1286, label %1304

1286:                                             ; preds = %1281
  %1287 = load ptr, ptr %4, align 8, !tbaa !5
  %1288 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1287, i32 0, i32 22
  %1289 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1288, i32 0, i32 4
  %1290 = load ptr, ptr %1289, align 8, !tbaa !24
  %1291 = getelementptr inbounds double, ptr %1290, i64 0
  %1292 = load ptr, ptr %4, align 8, !tbaa !5
  %1293 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1292, i32 0, i32 37
  %1294 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1293, i32 0, i32 4
  %1295 = load ptr, ptr %1294, align 8, !tbaa !24
  %1296 = getelementptr inbounds double, ptr %1295, i64 0
  %1297 = load i64, ptr %6, align 8, !tbaa !25
  %1298 = sub nsw i64 %1297, 1
  %1299 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1298)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1291, i64 noundef 1, ptr noundef %1296, i64 noundef 1, i64 noundef %1299)
  %1300 = load ptr, ptr %4, align 8, !tbaa !5
  %1301 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1300, i32 0, i32 50
  store i64 8, ptr %1301, align 8, !tbaa !30
  store i8 0, ptr %11, align 1, !tbaa !56
  %1302 = load i8, ptr %11, align 1, !tbaa !56, !range !51, !noundef !52
  %1303 = trunc i8 %1302 to i1
  store i1 %1303, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1796

1304:                                             ; preds = %1281
  %1305 = load ptr, ptr %4, align 8, !tbaa !5
  %1306 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1305, i32 0, i32 31
  %1307 = load i64, ptr %1306, align 8, !tbaa !73
  %1308 = icmp eq i64 %1307, 1
  br i1 %1308, label %1309, label %1399

1309:                                             ; preds = %1304
  %1310 = load ptr, ptr %4, align 8, !tbaa !5
  %1311 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1310, i32 0, i32 32
  %1312 = load i8, ptr %1311, align 8, !tbaa !65, !range !51, !noundef !52
  %1313 = trunc i8 %1312 to i1
  br i1 %1313, label %1399, label %1314

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

1378:                                             ; preds = %1314
  %1379 = load ptr, ptr %4, align 8, !tbaa !5
  %1380 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1379, i32 0, i32 59
  %1381 = load double, ptr %1380, align 8, !tbaa !74
  store double %1381, ptr %8, align 8, !tbaa !26
  br label %1382

1382:                                             ; preds = %1378, %1314
  %1383 = load ptr, ptr %4, align 8, !tbaa !5
  %1384 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1383, i32 0, i32 9
  %1385 = load i64, ptr %1384, align 8, !tbaa !76
  %1386 = icmp eq i64 %1385, 1
  br i1 %1386, label %1387, label %1398

1387:                                             ; preds = %1382
  %1388 = load ptr, ptr %4, align 8, !tbaa !5
  %1389 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1388, i32 0, i32 59
  %1390 = load double, ptr %1389, align 8, !tbaa !74
  %1391 = load ptr, ptr %4, align 8, !tbaa !5
  %1392 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1391, i32 0, i32 58
  %1393 = load double, ptr %1392, align 8, !tbaa !75
  %1394 = load ptr, ptr %5, align 8, !tbaa !5
  %1395 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %1390, double noundef %1393, ptr noundef %1394)
  %1396 = load ptr, ptr %5, align 8, !tbaa !5
  %1397 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 0.000000e+00, double noundef %1395, ptr noundef %1396)
  store double %1397, ptr %8, align 8, !tbaa !26
  br label %1398

1398:                                             ; preds = %1387, %1382
  br label %1406

1399:                                             ; preds = %1309, %1304
  store double 0.000000e+00, ptr %8, align 8, !tbaa !26
  %1400 = load ptr, ptr %4, align 8, !tbaa !5
  %1401 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1400, i32 0, i32 51
  %1402 = load i64, ptr %1401, align 8, !tbaa !33
  %1403 = add nsw i64 %1402, 1
  %1404 = load ptr, ptr %4, align 8, !tbaa !5
  %1405 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1404, i32 0, i32 51
  store i64 %1403, ptr %1405, align 8, !tbaa !33
  br label %1406

1406:                                             ; preds = %1399, %1398
  %1407 = load ptr, ptr %4, align 8, !tbaa !5
  %1408 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1407, i32 0, i32 48
  %1409 = load i64, ptr %1408, align 8, !tbaa !31
  %1410 = icmp sgt i64 %1409, 0
  br i1 %1410, label %1411, label %1420

1411:                                             ; preds = %1406
  %1412 = load ptr, ptr %4, align 8, !tbaa !5
  %1413 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1412, i32 0, i32 48
  %1414 = load i64, ptr %1413, align 8, !tbaa !31
  %1415 = load i64, ptr %6, align 8, !tbaa !25
  %1416 = add nsw i64 3, %1415
  %1417 = srem i64 %1414, %1416
  %1418 = icmp eq i64 %1417, 0
  br i1 %1418, label %1419, label %1420

1419:                                             ; preds = %1411
  store double 0.000000e+00, ptr %8, align 8, !tbaa !26
  br label %1420

1420:                                             ; preds = %1419, %1411, %1406
  %1421 = load ptr, ptr %4, align 8, !tbaa !5
  %1422 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1421, i32 0, i32 31
  %1423 = load i64, ptr %1422, align 8, !tbaa !73
  %1424 = icmp eq i64 %1423, 1
  br i1 %1424, label %1430, label %1425

1425:                                             ; preds = %1420
  %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 !73
  %1429 = icmp eq i64 %1428, 5
  br i1 %1429, label %1430, label %1434

1430:                                             ; preds = %1425, %1420
  %1431 = load i64, ptr @_ZN11alglib_implL20mincg_rscountdownlenE, align 8, !tbaa !25
  %1432 = load ptr, ptr %4, align 8, !tbaa !5
  %1433 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1432, i32 0, i32 36
  store i64 %1431, ptr %1433, align 8, !tbaa !64
  br label %1441

1434:                                             ; preds = %1425
  %1435 = load ptr, ptr %4, align 8, !tbaa !5
  %1436 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1435, i32 0, i32 36
  %1437 = load i64, ptr %1436, align 8, !tbaa !64
  %1438 = sub nsw i64 %1437, 1
  %1439 = load ptr, ptr %4, align 8, !tbaa !5
  %1440 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1439, i32 0, i32 36
  store i64 %1438, ptr %1440, align 8, !tbaa !64
  br label %1441

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

1479:                                             ; preds = %1508, %1441
  %1480 = load i64, ptr %7, align 8, !tbaa !25
  %1481 = load i64, ptr %6, align 8, !tbaa !25
  %1482 = sub nsw i64 %1481, 1
  %1483 = icmp sle i64 %1480, %1482
  br i1 %1483, label %1484, label %1511

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

1508:                                             ; preds = %1484
  %1509 = load i64, ptr %7, align 8, !tbaa !25
  %1510 = add nsw i64 %1509, 1
  store i64 %1510, ptr %7, align 8, !tbaa !25
  br label %1479, !llvm.loop !78

1511:                                             ; preds = %1479
  %1512 = load ptr, ptr %4, align 8, !tbaa !5
  %1513 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1512, i32 0, i32 26
  %1514 = load double, ptr %1513, align 8, !tbaa !67
  %1515 = load ptr, ptr %4, align 8, !tbaa !5
  %1516 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1515, i32 0, i32 30
  %1517 = load double, ptr %1516, align 8, !tbaa !77
  %1518 = load ptr, ptr %5, align 8, !tbaa !5
  %1519 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1517, ptr noundef %1518)
  %1520 = fmul double %1514, %1519
  %1521 = load ptr, ptr %4, align 8, !tbaa !5
  %1522 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1521, i32 0, i32 30
  store double %1520, ptr %1522, align 8, !tbaa !77
  %1523 = load ptr, ptr %4, align 8, !tbaa !5
  %1524 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1523, i32 0, i32 31
  %1525 = load i64, ptr %1524, align 8, !tbaa !73
  %1526 = icmp eq i64 %1525, 1
  br i1 %1526, label %1527, label %1566

1527:                                             ; preds = %1511
  %1528 = load ptr, ptr %4, align 8, !tbaa !5
  %1529 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1528, i32 0, i32 29
  store double 0.000000e+00, ptr %1529, align 8, !tbaa !62
  store i64 0, ptr %7, align 8, !tbaa !25
  br label %1530

1530:                                             ; preds = %1551, %1527
  %1531 = load i64, ptr %7, align 8, !tbaa !25
  %1532 = load i64, ptr %6, align 8, !tbaa !25
  %1533 = sub nsw i64 %1532, 1
  %1534 = icmp sle i64 %1531, %1533
  br i1 %1534, label %1535, label %1554

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

1551:                                             ; preds = %1535
  %1552 = load i64, ptr %7, align 8, !tbaa !25
  %1553 = add nsw i64 %1552, 1
  store i64 %1553, ptr %7, align 8, !tbaa !25
  br label %1530, !llvm.loop !79

1554:                                             ; preds = %1530
  %1555 = load ptr, ptr %4, align 8, !tbaa !5
  %1556 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1555, i32 0, i32 26
  %1557 = load double, ptr %1556, align 8, !tbaa !67
  %1558 = load ptr, ptr %4, align 8, !tbaa !5
  %1559 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1558, i32 0, i32 29
  %1560 = load double, ptr %1559, align 8, !tbaa !62
  %1561 = load ptr, ptr %5, align 8, !tbaa !5
  %1562 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1560, ptr noundef %1561)
  %1563 = fmul double %1557, %1562
  %1564 = load ptr, ptr %4, align 8, !tbaa !5
  %1565 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1564, i32 0, i32 29
  store double %1563, ptr %1565, align 8, !tbaa !62
  br label %1566

1566:                                             ; preds = %1554, %1511
  store double 0.000000e+00, ptr %9, align 8, !tbaa !26
  store i64 0, ptr %7, align 8, !tbaa !25
  br label %1567

1567:                                             ; preds = %1592, %1566
  %1568 = load i64, ptr %7, align 8, !tbaa !25
  %1569 = load i64, ptr %6, align 8, !tbaa !25
  %1570 = sub nsw i64 %1569, 1
  %1571 = icmp sle i64 %1568, %1570
  br i1 %1571, label %1572, label %1595

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

1592:                                             ; preds = %1572
  %1593 = load i64, ptr %7, align 8, !tbaa !25
  %1594 = add nsw i64 %1593, 1
  store i64 %1594, ptr %7, align 8, !tbaa !25
  br label %1567, !llvm.loop !80

1595:                                             ; preds = %1567
  %1596 = load double, ptr %9, align 8, !tbaa !26
  %1597 = load ptr, ptr %5, align 8, !tbaa !5
  %1598 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1596, ptr noundef %1597)
  br i1 %1598, label %1599, label %1605

1599:                                             ; preds = %1595
  %1600 = load ptr, ptr %4, align 8, !tbaa !5
  %1601 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1600, i32 0, i32 38
  %1602 = load double, ptr %1601, align 8, !tbaa !41
  %1603 = load ptr, ptr %5, align 8, !tbaa !5
  %1604 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1602, ptr noundef %1603)
  br i1 %1604, label %1610, label %1605

1605:                                             ; preds = %1599, %1595
  %1606 = load ptr, ptr %4, align 8, !tbaa !5
  %1607 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1606, i32 0, i32 50
  store i64 -8, ptr %1607, align 8, !tbaa !30
  store i8 0, ptr %11, align 1, !tbaa !56
  %1608 = load i8, ptr %11, align 1, !tbaa !56, !range !51, !noundef !52
  %1609 = trunc i8 %1608 to i1
  store i1 %1609, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1796

1610:                                             ; preds = %1599
  %1611 = load ptr, ptr %4, align 8, !tbaa !5
  %1612 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1611, i32 0, i32 49
  %1613 = load i64, ptr %1612, align 8, !tbaa !32
  %1614 = load ptr, ptr %4, align 8, !tbaa !5
  %1615 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1614, i32 0, i32 17
  %1616 = load i64, ptr %1615, align 8, !tbaa !81
  %1617 = add nsw i64 %1613, %1616
  %1618 = load ptr, ptr %4, align 8, !tbaa !5
  %1619 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1618, i32 0, i32 49
  store i64 %1617, ptr %1619, align 8, !tbaa !32
  %1620 = load ptr, ptr %4, align 8, !tbaa !5
  %1621 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1620, i32 0, i32 48
  %1622 = load i64, ptr %1621, align 8, !tbaa !31
  %1623 = add nsw i64 %1622, 1
  %1624 = load ptr, ptr %4, align 8, !tbaa !5
  %1625 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1624, i32 0, i32 48
  store i64 %1623, ptr %1625, align 8, !tbaa !31
  %1626 = load ptr, ptr %4, align 8, !tbaa !5
  %1627 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1626, i32 0, i32 48
  %1628 = load i64, ptr %1627, align 8, !tbaa !31
  %1629 = load ptr, ptr %4, align 8, !tbaa !5
  %1630 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1629, i32 0, i32 4
  %1631 = load i64, ptr %1630, align 8, !tbaa !82
  %1632 = icmp sge i64 %1628, %1631
  br i1 %1632, label %1633, label %1643

1633:                                             ; preds = %1610
  %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 !82
  %1637 = icmp sgt i64 %1636, 0
  br i1 %1637, label %1638, label %1643

1638:                                             ; preds = %1633
  %1639 = load ptr, ptr %4, align 8, !tbaa !5
  %1640 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1639, i32 0, i32 50
  store i64 5, ptr %1640, align 8, !tbaa !30
  store i8 0, ptr %11, align 1, !tbaa !56
  %1641 = load i8, ptr %11, align 1, !tbaa !56, !range !51, !noundef !52
  %1642 = trunc i8 %1641 to i1
  store i1 %1642, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1796

1643:                                             ; preds = %1633, %1610
  %1644 = load double, ptr %9, align 8, !tbaa !26
  %1645 = load ptr, ptr %5, align 8, !tbaa !5
  %1646 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1644, ptr noundef %1645)
  %1647 = load ptr, ptr %4, align 8, !tbaa !5
  %1648 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1647, i32 0, i32 1
  %1649 = load double, ptr %1648, align 8, !tbaa !58
  %1650 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1646, double noundef %1649)
  br i1 %1650, label %1651, label %1656

1651:                                             ; preds = %1643
  %1652 = load ptr, ptr %4, align 8, !tbaa !5
  %1653 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1652, i32 0, i32 50
  store i64 4, ptr %1653, align 8, !tbaa !30
  store i8 0, ptr %11, align 1, !tbaa !56
  %1654 = load i8, ptr %11, align 1, !tbaa !56, !range !51, !noundef !52
  %1655 = trunc i8 %1654 to i1
  store i1 %1655, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1796

1656:                                             ; preds = %1643
  %1657 = load ptr, ptr %4, align 8, !tbaa !5
  %1658 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1657, i32 0, i32 32
  %1659 = load i8, ptr %1658, align 8, !tbaa !65, !range !51, !noundef !52
  %1660 = trunc i8 %1659 to i1
  br i1 %1660, label %1707, label %1661

1661:                                             ; preds = %1656
  %1662 = load ptr, ptr %4, align 8, !tbaa !5
  %1663 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1662, i32 0, i32 25
  %1664 = load double, ptr %1663, align 8, !tbaa !60
  %1665 = load ptr, ptr %4, align 8, !tbaa !5
  %1666 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1665, i32 0, i32 38
  %1667 = load double, ptr %1666, align 8, !tbaa !41
  %1668 = fsub double %1664, %1667
  %1669 = load ptr, ptr %4, align 8, !tbaa !5
  %1670 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1669, i32 0, i32 2
  %1671 = load double, ptr %1670, align 8, !tbaa !83
  %1672 = load ptr, ptr %4, align 8, !tbaa !5
  %1673 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1672, i32 0, i32 25
  %1674 = load double, ptr %1673, align 8, !tbaa !60
  %1675 = load ptr, ptr %5, align 8, !tbaa !5
  %1676 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1674, ptr noundef %1675)
  %1677 = load ptr, ptr %4, align 8, !tbaa !5
  %1678 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1677, i32 0, i32 38
  %1679 = load double, ptr %1678, align 8, !tbaa !41
  %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 %5, align 8, !tbaa !5
  %1683 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1681, double noundef 1.000000e+00, ptr noundef %1682)
  %1684 = load ptr, ptr %5, align 8, !tbaa !5
  %1685 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1676, double noundef %1683, ptr noundef %1684)
  %1686 = fmul double %1671, %1685
  %1687 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1668, double noundef %1686)
  br i1 %1687, label %1688, label %1693

1688:                                             ; preds = %1661
  %1689 = load ptr, ptr %4, align 8, !tbaa !5
  %1690 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1689, i32 0, i32 50
  store i64 1, ptr %1690, align 8, !tbaa !30
  store i8 0, ptr %11, align 1, !tbaa !56
  %1691 = load i8, ptr %11, align 1, !tbaa !56, !range !51, !noundef !52
  %1692 = trunc i8 %1691 to i1
  store i1 %1692, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1796

1693:                                             ; preds = %1661
  %1694 = load ptr, ptr %4, align 8, !tbaa !5
  %1695 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1694, i32 0, i32 30
  %1696 = load double, ptr %1695, align 8, !tbaa !77
  %1697 = load ptr, ptr %4, align 8, !tbaa !5
  %1698 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1697, i32 0, i32 3
  %1699 = load double, ptr %1698, align 8, !tbaa !84
  %1700 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1696, double noundef %1699)
  br i1 %1700, label %1701, label %1706

1701:                                             ; preds = %1693
  %1702 = load ptr, ptr %4, align 8, !tbaa !5
  %1703 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1702, i32 0, i32 50
  store i64 2, ptr %1703, align 8, !tbaa !30
  store i8 0, ptr %11, align 1, !tbaa !56
  %1704 = load i8, ptr %11, align 1, !tbaa !56, !range !51, !noundef !52
  %1705 = trunc i8 %1704 to i1
  store i1 %1705, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1796

1706:                                             ; preds = %1693
  br label %1707

1707:                                             ; preds = %1706, %1656
  %1708 = load ptr, ptr %4, align 8, !tbaa !5
  %1709 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1708, i32 0, i32 36
  %1710 = load i64, ptr %1709, align 8, !tbaa !64
  %1711 = icmp sle i64 %1710, 0
  br i1 %1711, label %1712, label %1717

1712:                                             ; preds = %1707
  %1713 = load ptr, ptr %4, align 8, !tbaa !5
  %1714 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1713, i32 0, i32 50
  store i64 7, ptr %1714, align 8, !tbaa !30
  store i8 0, ptr %11, align 1, !tbaa !56
  %1715 = load i8, ptr %11, align 1, !tbaa !56, !range !51, !noundef !52
  %1716 = trunc i8 %1715 to i1
  store i1 %1716, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1796

1717:                                             ; preds = %1707
  %1718 = load ptr, ptr %4, align 8, !tbaa !5
  %1719 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1718, i32 0, i32 20
  %1720 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1719, i32 0, i32 4
  %1721 = load ptr, ptr %1720, align 8, !tbaa !24
  %1722 = getelementptr inbounds double, ptr %1721, i64 0
  %1723 = load ptr, ptr %4, align 8, !tbaa !5
  %1724 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1723, i32 0, i32 22
  %1725 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1724, i32 0, i32 4
  %1726 = load ptr, ptr %1725, align 8, !tbaa !24
  %1727 = getelementptr inbounds double, ptr %1726, i64 0
  %1728 = load i64, ptr %6, align 8, !tbaa !25
  %1729 = sub nsw i64 %1728, 1
  %1730 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1729)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1722, i64 noundef 1, ptr noundef %1727, i64 noundef 1, i64 noundef %1730)
  %1731 = load ptr, ptr %4, align 8, !tbaa !5
  %1732 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1731, i32 0, i32 21
  %1733 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1732, i32 0, i32 4
  %1734 = load ptr, ptr %1733, align 8, !tbaa !24
  %1735 = getelementptr inbounds double, ptr %1734, i64 0
  %1736 = load ptr, ptr %4, align 8, !tbaa !5
  %1737 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1736, i32 0, i32 23
  %1738 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1737, i32 0, i32 4
  %1739 = load ptr, ptr %1738, align 8, !tbaa !24
  %1740 = getelementptr inbounds double, ptr %1739, i64 0
  %1741 = load i64, ptr %6, align 8, !tbaa !25
  %1742 = sub nsw i64 %1741, 1
  %1743 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1742)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1735, i64 noundef 1, ptr noundef %1740, i64 noundef 1, i64 noundef %1743)
  %1744 = load ptr, ptr %4, align 8, !tbaa !5
  %1745 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1744, i32 0, i32 38
  %1746 = load double, ptr %1745, align 8, !tbaa !41
  %1747 = load ptr, ptr %4, align 8, !tbaa !5
  %1748 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1747, i32 0, i32 25
  store double %1746, ptr %1748, align 8, !tbaa !60
  %1749 = load ptr, ptr %4, align 8, !tbaa !5
  %1750 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1749, i32 0, i32 19
  %1751 = load i64, ptr %1750, align 8, !tbaa !59
  %1752 = add nsw i64 %1751, 1
  %1753 = load ptr, ptr %4, align 8, !tbaa !5
  %1754 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1753, i32 0, i32 19
  store i64 %1752, ptr %1754, align 8, !tbaa !59
  br label %790

1755:                                             ; No predecessors!
  store i8 0, ptr %11, align 1, !tbaa !56
  %1756 = load i8, ptr %11, align 1, !tbaa !56, !range !51, !noundef !52
  %1757 = trunc i8 %1756 to i1
  store i1 %1757, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1796

1758:                                             ; preds = %1270, %1240, %1068, %1040, %1011, %981, %963, %954, %865, %638, %594, %503, %475, %446, %416, %398, %389, %300
  store i8 1, ptr %11, align 1, !tbaa !56
  %1759 = load i64, ptr %6, align 8, !tbaa !25
  %1760 = load ptr, ptr %4, align 8, !tbaa !5
  %1761 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1760, i32 0, i32 47
  %1762 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1761, i32 0, i32 1
  %1763 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1762, i32 0, i32 4
  %1764 = load ptr, ptr %1763, align 8, !tbaa !24
  %1765 = getelementptr inbounds i64, ptr %1764, i64 0
  store i64 %1759, ptr %1765, align 8, !tbaa !25
  %1766 = load i64, ptr %7, align 8, !tbaa !25
  %1767 = load ptr, ptr %4, align 8, !tbaa !5
  %1768 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1767, i32 0, i32 47
  %1769 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1768, i32 0, i32 1
  %1770 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1769, i32 0, i32 4
  %1771 = load ptr, ptr %1770, align 8, !tbaa !24
  %1772 = getelementptr inbounds i64, ptr %1771, i64 1
  store i64 %1766, ptr %1772, align 8, !tbaa !25
  %1773 = load double, ptr %8, align 8, !tbaa !26
  %1774 = load ptr, ptr %4, align 8, !tbaa !5
  %1775 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1774, i32 0, i32 47
  %1776 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1775, i32 0, i32 3
  %1777 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1776, i32 0, i32 4
  %1778 = load ptr, ptr %1777, align 8, !tbaa !24
  %1779 = getelementptr inbounds double, ptr %1778, i64 0
  store double %1773, ptr %1779, align 8, !tbaa !26
  %1780 = load double, ptr %9, align 8, !tbaa !26
  %1781 = load ptr, ptr %4, align 8, !tbaa !5
  %1782 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1781, i32 0, i32 47
  %1783 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1782, i32 0, i32 3
  %1784 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1783, i32 0, i32 4
  %1785 = load ptr, ptr %1784, align 8, !tbaa !24
  %1786 = getelementptr inbounds double, ptr %1785, i64 1
  store double %1780, ptr %1786, align 8, !tbaa !26
  %1787 = load double, ptr %10, align 8, !tbaa !26
  %1788 = load ptr, ptr %4, align 8, !tbaa !5
  %1789 = getelementptr inbounds %"struct.alglib_impl::mincgstate", ptr %1788, i32 0, i32 47
  %1790 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1789, i32 0, i32 3
  %1791 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1790, i32 0, i32 4
  %1792 = load ptr, ptr %1791, align 8, !tbaa !24
  %1793 = getelementptr inbounds double, ptr %1792, i64 2
  store double %1787, ptr %1793, align 8, !tbaa !26
  %1794 = load i8, ptr %11, align 1, !tbaa !56, !range !51, !noundef !52
  %1795 = trunc i8 %1794 to i1
  store i1 %1795, ptr %3, align 1
  store i32 1, ptr %12, align 4
  br label %1796

1796:                                             ; preds = %1758, %1755, %1712, %1701, %1688, %1651, %1638, %1605, %1286, %1216, %881, %714, %659
  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
  %1797 = load i1, ptr %3, align 1
  ret i1 %1797
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !18, i64 1056}
!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, !14, i64 912, !12, i64 976, !14, i64 984, !13, i64 1048, !13, i64 1049, !13, i64 1050, !13, i64 1051, !13, i64 1052, !13, i64 1053, !13, i64 1054, !17, i64 1056, !11, i64 1320, !11, i64 1328, !11, i64 1336, !11, i64 1344, !19, i64 1352, !12, i64 1544, !12, i64 1552, !12, i64 1560, !12, i64 1568, !12, i64 1576, !12, i64 1584, !12, i64 1592, !14, i64 1600, !14, i64 1664, !14, i64 1728, !12, i64 1792, !11, i64 1800, !20, i64 1808, !14, i64 5776}
!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, !11, i64 88, !14, i64 96, !14, i64 160, !14, i64 224, !16, i64 288, !14, i64 368, !14, i64 432, !11, i64 496, !13, i64 504, !13, i64 505, !12, i64 512, !12, i64 520, !13, i64 528, !21, i64 536, !12, i64 832, !12, i64 840, !22, i64 848, !22, i64 1152, !12, i64 1456, !12, i64 1464, !23, i64 1472, !23, i64 1784, !13, i64 2096, !14, i64 2104, !14, i64 2168, !16, i64 2232, !17, i64 2312, !14, i64 2576, !14, i64 2640, !14, i64 2704, !14, i64 2768, !14, i64 2832, !14, i64 2896, !14, i64 2960, !14, i64 3024, !16, i64 3088, !16, i64 3168, !14, i64 3248, !14, i64 3312, !14, i64 3376, !14, i64 3440, !14, i64 3504, !14, i64 3568, !14, i64 3632, !14, i64 3696, !14, i64 3760, !14, i64 3824, !16, i64 3888}
!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_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}
!23 = !{!"_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}
!24 = !{!7, !7, i64 0}
!25 = !{!11, !11, i64 0}
!26 = !{!12, !12, i64 0}
!27 = !{!10, !11, i64 0}
!28 = !{!10, !13, i64 825}
!29 = !{!10, !13, i64 1054}
!30 = !{!10, !11, i64 1336}
!31 = !{!10, !11, i64 1320}
!32 = !{!10, !11, i64 1328}
!33 = !{!10, !11, i64 1344}
!34 = !{!10, !11, i64 1800}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.mustprogress"}
!37 = !{!10, !12, i64 360}
!38 = !{!10, !12, i64 1792}
!39 = distinct !{!39, !36}
!40 = !{!10, !13, i64 1049}
!41 = !{!10, !12, i64 976}
!42 = distinct !{!42, !36}
!43 = distinct !{!43, !36}
!44 = !{!10, !13, i64 1048}
!45 = !{!10, !12, i64 1544}
!46 = !{!10, !12, i64 1552}
!47 = !{!10, !12, i64 1560}
!48 = !{!10, !12, i64 1568}
!49 = !{!10, !12, i64 1576}
!50 = !{!10, !13, i64 57}
!51 = !{i8 0, i8 2}
!52 = !{}
!53 = !{!10, !13, i64 1051}
!54 = !{!10, !13, i64 56}
!55 = !{!10, !13, i64 1050}
!56 = !{!13, !13, i64 0}
!57 = distinct !{!57, !36}
!58 = !{!10, !12, i64 8}
!59 = !{!10, !11, i64 384}
!60 = !{!10, !12, i64 712}
!61 = !{!10, !11, i64 72}
!62 = !{!10, !12, i64 800}
!63 = !{!10, !12, i64 48}
!64 = !{!10, !11, i64 904}
!65 = !{!10, !13, i64 824}
!66 = !{!10, !11, i64 376}
!67 = !{!10, !12, i64 720}
!68 = !{!10, !12, i64 40}
!69 = !{!10, !12, i64 728}
!70 = !{!10, !13, i64 1052}
!71 = !{!10, !12, i64 832}
!72 = !{!10, !13, i64 1053}
!73 = !{!10, !11, i64 816}
!74 = !{!10, !12, i64 1592}
!75 = !{!10, !12, i64 1584}
!76 = !{!10, !11, i64 64}
!77 = !{!10, !12, i64 808}
!78 = distinct !{!78, !36}
!79 = distinct !{!79, !36}
!80 = distinct !{!80, !36}
!81 = !{!10, !11, i64 368}
!82 = !{!10, !11, i64 32}
!83 = !{!10, !12, i64 16}
!84 = !{!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 1056
  %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 1120
  %8 = load ptr, ptr %7, align 8, !tbaa !23
  %9 = load i64, ptr %8, align 8, !tbaa !24
  %10 = getelementptr inbounds i8, ptr %8, i64 8
  %11 = load i64, ptr %10, align 8, !tbaa !24
  %12 = getelementptr inbounds i8, ptr %0, i64 1248
  %13 = load ptr, ptr %12, align 8, !tbaa !23
  %14 = load double, ptr %13, align 8, !tbaa !25
  %15 = getelementptr inbounds i8, ptr %13, i64 8
  %16 = load double, ptr %15, align 8, !tbaa !25
  %17 = getelementptr inbounds i8, ptr %13, i64 16
  %18 = load double, ptr %17, align 8, !tbaa !25
  br label %19

19:                                               ; preds = %2, %6
  %.0577 = phi i64 [ %9, %6 ], [ 359, %2 ]
  %.0567 = phi i64 [ %11, %6 ], [ -58, %2 ]
  %.0558 = phi double [ %14, %6 ], [ -9.190000e+02, %2 ]
  %.0550 = 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 %124
    i32 1, label %194
    i32 2, label %198
    i32 3, label %216
    i32 4, label %231
    i32 5, label %246
    i32 6, label %260
    i32 7, label %302
    i32 8, label %322
    i32 9, label %426
    i32 10, label %468
    i32 11, label %472
    i32 12, label %490
    i32 13, label %505
    i32 14, label %520
    i32 15, label %534
    i32 16, label %610
    i32 17, label %624
  ]

20:                                               ; preds = %19
  %21 = load i64, ptr %0, align 8, !tbaa !26
  %22 = getelementptr inbounds i8, ptr %0, i64 825
  store i8 0, ptr %22, align 1, !tbaa !27
  %23 = getelementptr inbounds i8, ptr %0, i64 1054
  store i8 0, ptr %23, align 2, !tbaa !28
  %24 = getelementptr inbounds i8, ptr %0, i64 1320
  %25 = getelementptr inbounds i8, ptr %0, i64 1808
  %26 = getelementptr inbounds i8, ptr %0, i64 1800
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %24, i8 0, i64 32, i1 false)
  %27 = load i64, ptr %26, align 8, !tbaa !29
  %28 = icmp sgt i64 %27, 0
  tail call void @_ZN11alglib_impl21smoothnessmonitorinitEPNS_17smoothnessmonitorEllbPNS_8ae_stateE(ptr noundef nonnull %25, i64 noundef %21, i64 noundef 1, i1 noundef zeroext %28, ptr noundef %1)
  %29 = getelementptr inbounds i8, ptr %0, i64 1728
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %29, i64 noundef %21, ptr noundef %1)
  %.not.not627 = icmp sgt i64 %21, 0
  br i1 %.not.not627, label %.lr.ph630, label %._crit_edge631

.lr.ph630:                                        ; preds = %20
  %30 = getelementptr inbounds i8, ptr %0, i64 352
  %31 = getelementptr inbounds i8, ptr %0, i64 5832
  %32 = getelementptr inbounds i8, ptr %0, i64 1784
  %xtraiter667 = and i64 %21, 1
  %33 = icmp eq i64 %21, 1
  br i1 %33, label %._crit_edge631.loopexit.unr-lcssa, label %.lr.ph630.new

.lr.ph630.new:                                    ; preds = %.lr.ph630
  %unroll_iter669 = and i64 %21, 9223372036854775806
  br label %34

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

._crit_edge631.loopexit.unr-lcssa:                ; preds = %34, %.lr.ph630
  %.1568628.unr = phi i64 [ 0, %.lr.ph630 ], [ %58, %34 ]
  %lcmp.mod668.not = icmp eq i64 %xtraiter667, 0
  br i1 %lcmp.mod668.not, label %._crit_edge631, label %._crit_edge631.loopexit.epilog-lcssa

._crit_edge631.loopexit.epilog-lcssa:             ; preds = %._crit_edge631.loopexit.unr-lcssa
  %59 = load ptr, ptr %30, align 8, !tbaa !23
  %60 = getelementptr inbounds double, ptr %59, i64 %.1568628.unr
  %61 = load double, ptr %60, align 8, !tbaa !25
  %62 = load ptr, ptr %31, align 8, !tbaa !23
  %63 = getelementptr inbounds double, ptr %62, i64 %.1568628.unr
  store double %61, ptr %63, align 8, !tbaa !25
  %64 = load ptr, ptr %30, align 8, !tbaa !23
  %65 = getelementptr inbounds double, ptr %64, i64 %.1568628.unr
  %66 = load double, ptr %65, align 8, !tbaa !25
  %67 = fdiv double 1.000000e+00, %66
  %68 = load ptr, ptr %32, align 8, !tbaa !23
  %69 = getelementptr inbounds double, ptr %68, i64 %.1568628.unr
  store double %67, ptr %69, align 8, !tbaa !25
  br label %._crit_edge631

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

73:                                               ; preds = %._crit_edge631
  %74 = getelementptr inbounds i8, ptr %0, i64 1792
  %75 = load double, ptr %74, align 8, !tbaa !33
  %76 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %75, double noundef 0.000000e+00)
  br i1 %76, label %.loopexit, label %148

.loopexit.loopexit.unr-lcssa:                     ; preds = %133, %.lr.ph626
  %.3570624.unr = phi i64 [ 0, %.lr.ph626 ], [ %147, %133 ]
  %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
  %77 = load ptr, ptr %130, align 8, !tbaa !23
  %78 = getelementptr inbounds double, ptr %77, i64 %.3570624.unr
  %79 = load double, ptr %78, align 8, !tbaa !25
  %80 = load ptr, ptr %131, align 8, !tbaa !23
  %81 = load ptr, ptr %80, align 8, !tbaa !34
  %82 = getelementptr inbounds double, ptr %81, i64 %.3570624.unr
  store double %79, ptr %82, align 8, !tbaa !25
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit.epilog-lcssa, %.loopexit.loopexit.unr-lcssa, %124, %73
  %.1578 = phi i64 [ %21, %73 ], [ %.0577, %124 ], [ %.0577, %.loopexit.loopexit.unr-lcssa ], [ %.0577, %.loopexit.loopexit.epilog-lcssa ]
  %83 = getelementptr inbounds i8, ptr %0, i64 1808
  %84 = getelementptr inbounds i8, ptr %0, i64 840
  %85 = getelementptr inbounds i8, ptr %0, i64 296
  %86 = getelementptr inbounds i8, ptr %0, i64 1792
  %87 = load double, ptr %86, align 8, !tbaa !33
  %88 = tail call noundef zeroext i1 @_ZN11alglib_impl34smoothnessmonitorcheckgradientatx0EPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_S3_bdPNS_8ae_stateE(ptr noundef nonnull %83, ptr noundef nonnull %84, ptr noundef nonnull %85, ptr noundef nonnull %85, ptr noundef nonnull %85, i1 noundef zeroext false, double noundef %87, ptr noundef %1)
  br i1 %88, label %.preheader, label %148

.preheader:                                       ; preds = %.loopexit
  %.not598.not638 = icmp sgt i64 %.1578, 0
  br i1 %.not598.not638, label %.lr.ph640, label %._crit_edge641

.lr.ph640:                                        ; preds = %.preheader
  %89 = getelementptr inbounds i8, ptr %0, i64 3968
  %90 = getelementptr inbounds i8, ptr %0, i64 968
  %xtraiter677 = and i64 %.1578, 3
  %91 = icmp ult i64 %.1578, 4
  br i1 %91, label %._crit_edge641.loopexit.unr-lcssa, label %.lr.ph640.new

.lr.ph640.new:                                    ; preds = %.lr.ph640
  %unroll_iter680 = and i64 %.1578, 9223372036854775804
  br label %92

92:                                               ; preds = %92, %.lr.ph640.new
  %.2569639 = phi i64 [ 0, %.lr.ph640.new ], [ %116, %92 ]
  %niter681 = phi i64 [ 0, %.lr.ph640.new ], [ %niter681.next.3, %92 ]
  %93 = load ptr, ptr %89, align 8, !tbaa !23
  %94 = getelementptr inbounds double, ptr %93, i64 %.2569639
  %95 = load double, ptr %94, align 8, !tbaa !25
  %96 = load ptr, ptr %90, align 8, !tbaa !23
  %97 = getelementptr inbounds double, ptr %96, i64 %.2569639
  store double %95, ptr %97, align 8, !tbaa !25
  %98 = or disjoint i64 %.2569639, 1
  %99 = load ptr, ptr %89, align 8, !tbaa !23
  %100 = getelementptr inbounds double, ptr %99, i64 %98
  %101 = load double, ptr %100, align 8, !tbaa !25
  %102 = load ptr, ptr %90, align 8, !tbaa !23
  %103 = getelementptr inbounds double, ptr %102, i64 %98
  store double %101, ptr %103, align 8, !tbaa !25
  %104 = or disjoint i64 %.2569639, 2
  %105 = load ptr, ptr %89, align 8, !tbaa !23
  %106 = getelementptr inbounds double, ptr %105, i64 %104
  %107 = load double, ptr %106, align 8, !tbaa !25
  %108 = load ptr, ptr %90, align 8, !tbaa !23
  %109 = getelementptr inbounds double, ptr %108, i64 %104
  store double %107, ptr %109, align 8, !tbaa !25
  %110 = or disjoint i64 %.2569639, 3
  %111 = load ptr, ptr %89, align 8, !tbaa !23
  %112 = getelementptr inbounds double, ptr %111, i64 %110
  %113 = load double, ptr %112, align 8, !tbaa !25
  %114 = load ptr, ptr %90, align 8, !tbaa !23
  %115 = getelementptr inbounds double, ptr %114, i64 %110
  store double %113, ptr %115, align 8, !tbaa !25
  %116 = add nuw nsw i64 %.2569639, 4
  %niter681.next.3 = add i64 %niter681, 4
  %niter681.ncmp.3 = icmp eq i64 %niter681.next.3, %unroll_iter680
  br i1 %niter681.ncmp.3, label %._crit_edge641.loopexit.unr-lcssa, label %92, !llvm.loop !35

._crit_edge641.loopexit.unr-lcssa:                ; preds = %92, %.lr.ph640
  %.2569639.unr = phi i64 [ 0, %.lr.ph640 ], [ %116, %92 ]
  %lcmp.mod679.not = icmp eq i64 %xtraiter677, 0
  br i1 %lcmp.mod679.not, label %._crit_edge641, label %.epil.preheader676

.epil.preheader676:                               ; preds = %._crit_edge641.loopexit.unr-lcssa, %.epil.preheader676
  %.2569639.epil = phi i64 [ %122, %.epil.preheader676 ], [ %.2569639.unr, %._crit_edge641.loopexit.unr-lcssa ]
  %epil.iter678 = phi i64 [ %epil.iter678.next, %.epil.preheader676 ], [ 0, %._crit_edge641.loopexit.unr-lcssa ]
  %117 = load ptr, ptr %89, align 8, !tbaa !23
  %118 = getelementptr inbounds double, ptr %117, i64 %.2569639.epil
  %119 = load double, ptr %118, align 8, !tbaa !25
  %120 = load ptr, ptr %90, align 8, !tbaa !23
  %121 = getelementptr inbounds double, ptr %120, i64 %.2569639.epil
  store double %119, ptr %121, align 8, !tbaa !25
  %122 = add nuw nsw i64 %.2569639.epil, 1
  %epil.iter678.next = add i64 %epil.iter678, 1
  %epil.iter678.cmp.not = icmp eq i64 %epil.iter678.next, %xtraiter677
  br i1 %epil.iter678.cmp.not, label %._crit_edge641, label %.epil.preheader676, !llvm.loop !36

._crit_edge641:                                   ; preds = %._crit_edge641.loopexit.unr-lcssa, %.epil.preheader676, %.preheader
  %.2569.lcssa = phi i64 [ 0, %.preheader ], [ %.1578, %.epil.preheader676 ], [ %.1578, %._crit_edge641.loopexit.unr-lcssa ]
  %123 = getelementptr inbounds i8, ptr %0, i64 1049
  store i8 1, ptr %123, align 1, !tbaa !38
  br label %835

124:                                              ; preds = %19
  %125 = getelementptr inbounds i8, ptr %0, i64 1049
  store i8 0, ptr %125, align 1, !tbaa !38
  %126 = getelementptr inbounds i8, ptr %0, i64 976
  %127 = load double, ptr %126, align 8, !tbaa !39
  %128 = getelementptr inbounds i8, ptr %0, i64 4032
  %129 = load ptr, ptr %128, align 8, !tbaa !23
  store double %127, ptr %129, align 8, !tbaa !25
  %.not596.not623 = icmp sgt i64 %.0577, 0
  br i1 %.not596.not623, label %.lr.ph626, label %.loopexit

.lr.ph626:                                        ; preds = %124
  %130 = getelementptr inbounds i8, ptr %0, i64 1040
  %131 = getelementptr inbounds i8, ptr %0, i64 4112
  %xtraiter = and i64 %.0577, 1
  %132 = icmp eq i64 %.0577, 1
  br i1 %132, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph626.new

.lr.ph626.new:                                    ; preds = %.lr.ph626
  %unroll_iter = and i64 %.0577, 9223372036854775806
  br label %133

133:                                              ; preds = %133, %.lr.ph626.new
  %.3570624 = phi i64 [ 0, %.lr.ph626.new ], [ %147, %133 ]
  %niter = phi i64 [ 0, %.lr.ph626.new ], [ %niter.next.1, %133 ]
  %134 = load ptr, ptr %130, align 8, !tbaa !23
  %135 = getelementptr inbounds double, ptr %134, i64 %.3570624
  %136 = load double, ptr %135, align 8, !tbaa !25
  %137 = load ptr, ptr %131, align 8, !tbaa !23
  %138 = load ptr, ptr %137, align 8, !tbaa !34
  %139 = getelementptr inbounds double, ptr %138, i64 %.3570624
  store double %136, ptr %139, align 8, !tbaa !25
  %140 = or disjoint i64 %.3570624, 1
  %141 = load ptr, ptr %130, align 8, !tbaa !23
  %142 = getelementptr inbounds double, ptr %141, i64 %140
  %143 = load double, ptr %142, align 8, !tbaa !25
  %144 = load ptr, ptr %131, align 8, !tbaa !23
  %145 = load ptr, ptr %144, align 8, !tbaa !34
  %146 = getelementptr inbounds double, ptr %145, i64 %140
  store double %143, ptr %146, align 8, !tbaa !25
  %147 = add nuw nsw i64 %.3570624, 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 %133, !llvm.loop !40

148:                                              ; preds = %.loopexit, %._crit_edge631, %73
  %.2579 = phi i64 [ %.1578, %.loopexit ], [ %21, %73 ], [ %21, %._crit_edge631 ]
  %.not597.not632 = icmp sgt i64 %.2579, 0
  br i1 %.not597.not632, label %.lr.ph635, label %._crit_edge636

.lr.ph635:                                        ; preds = %148
  %149 = getelementptr inbounds i8, ptr %0, i64 896
  %150 = getelementptr inbounds i8, ptr %0, i64 968
  %xtraiter672 = and i64 %.2579, 3
  %151 = icmp ult i64 %.2579, 4
  br i1 %151, label %._crit_edge636.loopexit.unr-lcssa, label %.lr.ph635.new

.lr.ph635.new:                                    ; preds = %.lr.ph635
  %unroll_iter674 = and i64 %.2579, 9223372036854775804
  br label %152

152:                                              ; preds = %152, %.lr.ph635.new
  %.4571633 = phi i64 [ 0, %.lr.ph635.new ], [ %176, %152 ]
  %niter675 = phi i64 [ 0, %.lr.ph635.new ], [ %niter675.next.3, %152 ]
  %153 = load ptr, ptr %149, align 8, !tbaa !23
  %154 = getelementptr inbounds double, ptr %153, i64 %.4571633
  %155 = load double, ptr %154, align 8, !tbaa !25
  %156 = load ptr, ptr %150, align 8, !tbaa !23
  %157 = getelementptr inbounds double, ptr %156, i64 %.4571633
  store double %155, ptr %157, align 8, !tbaa !25
  %158 = or disjoint i64 %.4571633, 1
  %159 = load ptr, ptr %149, align 8, !tbaa !23
  %160 = getelementptr inbounds double, ptr %159, i64 %158
  %161 = load double, ptr %160, align 8, !tbaa !25
  %162 = load ptr, ptr %150, align 8, !tbaa !23
  %163 = getelementptr inbounds double, ptr %162, i64 %158
  store double %161, ptr %163, align 8, !tbaa !25
  %164 = or disjoint i64 %.4571633, 2
  %165 = load ptr, ptr %149, align 8, !tbaa !23
  %166 = getelementptr inbounds double, ptr %165, i64 %164
  %167 = load double, ptr %166, align 8, !tbaa !25
  %168 = load ptr, ptr %150, align 8, !tbaa !23
  %169 = getelementptr inbounds double, ptr %168, i64 %164
  store double %167, ptr %169, align 8, !tbaa !25
  %170 = or disjoint i64 %.4571633, 3
  %171 = load ptr, ptr %149, align 8, !tbaa !23
  %172 = getelementptr inbounds double, ptr %171, i64 %170
  %173 = load double, ptr %172, align 8, !tbaa !25
  %174 = load ptr, ptr %150, align 8, !tbaa !23
  %175 = getelementptr inbounds double, ptr %174, i64 %170
  store double %173, ptr %175, align 8, !tbaa !25
  %176 = add nuw nsw i64 %.4571633, 4
  %niter675.next.3 = add i64 %niter675, 4
  %niter675.ncmp.3 = icmp eq i64 %niter675.next.3, %unroll_iter674
  br i1 %niter675.ncmp.3, label %._crit_edge636.loopexit.unr-lcssa, label %152, !llvm.loop !41

._crit_edge636.loopexit.unr-lcssa:                ; preds = %152, %.lr.ph635
  %.4571633.unr = phi i64 [ 0, %.lr.ph635 ], [ %176, %152 ]
  %lcmp.mod673.not = icmp eq i64 %xtraiter672, 0
  br i1 %lcmp.mod673.not, label %._crit_edge636, label %.epil.preheader671

.epil.preheader671:                               ; preds = %._crit_edge636.loopexit.unr-lcssa, %.epil.preheader671
  %.4571633.epil = phi i64 [ %182, %.epil.preheader671 ], [ %.4571633.unr, %._crit_edge636.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader671 ], [ 0, %._crit_edge636.loopexit.unr-lcssa ]
  %177 = load ptr, ptr %149, align 8, !tbaa !23
  %178 = getelementptr inbounds double, ptr %177, i64 %.4571633.epil
  %179 = load double, ptr %178, align 8, !tbaa !25
  %180 = load ptr, ptr %150, align 8, !tbaa !23
  %181 = getelementptr inbounds double, ptr %180, i64 %.4571633.epil
  store double %179, ptr %181, align 8, !tbaa !25
  %182 = add nuw nsw i64 %.4571633.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter672
  br i1 %epil.iter.cmp.not, label %._crit_edge636, label %.epil.preheader671, !llvm.loop !42

._crit_edge636:                                   ; preds = %._crit_edge636.loopexit.unr-lcssa, %.epil.preheader671, %148
  %.4571.lcssa = phi i64 [ 0, %148 ], [ %.2579, %.epil.preheader671 ], [ %.2579, %._crit_edge636.loopexit.unr-lcssa ]
  %183 = add nsw i64 %.2579, -1
  %184 = getelementptr inbounds i8, ptr %0, i64 448
  %185 = load ptr, ptr %184, align 8, !tbaa !23
  %186 = getelementptr inbounds i8, ptr %0, i64 968
  %187 = load ptr, ptr %186, align 8, !tbaa !23
  %188 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %183)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %185, i64 noundef 1, ptr noundef %187, i64 noundef 1, i64 noundef %188)
  tail call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %189 = getelementptr inbounds i8, ptr %0, i64 360
  %190 = load double, ptr %189, align 8, !tbaa !32
  %191 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %190, double noundef 0.000000e+00)
  br i1 %191, label %196, label %192

192:                                              ; preds = %._crit_edge636
  %193 = getelementptr inbounds i8, ptr %0, i64 1049
  store i8 1, ptr %193, align 1, !tbaa !38
  br label %835

194:                                              ; preds = %19
  %195 = getelementptr inbounds i8, ptr %0, i64 1049
  store i8 0, ptr %195, align 1, !tbaa !38
  br label %296

196:                                              ; preds = %._crit_edge636
  %197 = getelementptr inbounds i8, ptr %0, i64 1048
  store i8 1, ptr %197, align 8, !tbaa !43
  br label %835

198:                                              ; preds = %19
  %199 = getelementptr inbounds i8, ptr %0, i64 976
  %200 = load double, ptr %199, align 8, !tbaa !39
  %201 = getelementptr inbounds i8, ptr %0, i64 1544
  store double %200, ptr %201, align 8, !tbaa !44
  br label %202

202:                                              ; preds = %260, %198
  %.5572 = phi i64 [ 0, %198 ], [ %290, %260 ]
  %.not590 = icmp slt i64 %.5572, %.0577
  br i1 %.not590, label %203, label %291

203:                                              ; preds = %202
  %204 = getelementptr inbounds i8, ptr %0, i64 968
  %205 = load ptr, ptr %204, align 8, !tbaa !23
  %206 = getelementptr inbounds double, ptr %205, i64 %.5572
  %207 = load double, ptr %206, align 8, !tbaa !25
  %208 = getelementptr inbounds i8, ptr %0, i64 360
  %209 = load double, ptr %208, align 8, !tbaa !32
  %210 = getelementptr inbounds i8, ptr %0, i64 352
  %211 = load ptr, ptr %210, align 8, !tbaa !23
  %212 = getelementptr inbounds double, ptr %211, i64 %.5572
  %213 = load double, ptr %212, align 8, !tbaa !25
  %214 = fneg double %209
  %215 = tail call double @llvm.fmuladd.f64(double %214, double %213, double %207)
  store double %215, ptr %206, align 8, !tbaa !25
  br label %835

216:                                              ; preds = %19
  %217 = getelementptr inbounds i8, ptr %0, i64 976
  %218 = load double, ptr %217, align 8, !tbaa !39
  %219 = getelementptr inbounds i8, ptr %0, i64 1552
  store double %218, ptr %219, align 8, !tbaa !45
  %220 = getelementptr inbounds i8, ptr %0, i64 360
  %221 = load double, ptr %220, align 8, !tbaa !32
  %222 = getelementptr inbounds i8, ptr %0, i64 352
  %223 = load ptr, ptr %222, align 8, !tbaa !23
  %224 = getelementptr inbounds double, ptr %223, i64 %.0567
  %225 = load double, ptr %224, align 8, !tbaa !25
  %226 = fmul double %221, -5.000000e-01
  %227 = tail call double @llvm.fmuladd.f64(double %226, double %225, double %.0550)
  %228 = getelementptr inbounds i8, ptr %0, i64 968
  %229 = load ptr, ptr %228, align 8, !tbaa !23
  %230 = getelementptr inbounds double, ptr %229, i64 %.0567
  store double %227, ptr %230, align 8, !tbaa !25
  br label %835

231:                                              ; preds = %19
  %232 = getelementptr inbounds i8, ptr %0, i64 976
  %233 = load double, ptr %232, align 8, !tbaa !39
  %234 = getelementptr inbounds i8, ptr %0, i64 1560
  store double %233, ptr %234, align 8, !tbaa !46
  %235 = getelementptr inbounds i8, ptr %0, i64 360
  %236 = load double, ptr %235, align 8, !tbaa !32
  %237 = fmul double %236, 5.000000e-01
  %238 = getelementptr inbounds i8, ptr %0, i64 352
  %239 = load ptr, ptr %238, align 8, !tbaa !23
  %240 = getelementptr inbounds double, ptr %239, i64 %.0567
  %241 = load double, ptr %240, align 8, !tbaa !25
  %242 = tail call double @llvm.fmuladd.f64(double %237, double %241, double %.0550)
  %243 = getelementptr inbounds i8, ptr %0, i64 968
  %244 = load ptr, ptr %243, align 8, !tbaa !23
  %245 = getelementptr inbounds double, ptr %244, i64 %.0567
  store double %242, ptr %245, align 8, !tbaa !25
  br label %835

246:                                              ; preds = %19
  %247 = getelementptr inbounds i8, ptr %0, i64 976
  %248 = load double, ptr %247, align 8, !tbaa !39
  %249 = getelementptr inbounds i8, ptr %0, i64 1568
  store double %248, ptr %249, align 8, !tbaa !47
  %250 = getelementptr inbounds i8, ptr %0, i64 360
  %251 = load double, ptr %250, align 8, !tbaa !32
  %252 = getelementptr inbounds i8, ptr %0, i64 352
  %253 = load ptr, ptr %252, align 8, !tbaa !23
  %254 = getelementptr inbounds double, ptr %253, i64 %.0567
  %255 = load double, ptr %254, align 8, !tbaa !25
  %256 = tail call double @llvm.fmuladd.f64(double %251, double %255, double %.0550)
  %257 = getelementptr inbounds i8, ptr %0, i64 968
  %258 = load ptr, ptr %257, align 8, !tbaa !23
  %259 = getelementptr inbounds double, ptr %258, i64 %.0567
  store double %256, ptr %259, align 8, !tbaa !25
  br label %835

260:                                              ; preds = %19
  %261 = getelementptr inbounds i8, ptr %0, i64 976
  %262 = load double, ptr %261, align 8, !tbaa !39
  %263 = getelementptr inbounds i8, ptr %0, i64 1576
  store double %262, ptr %263, align 8, !tbaa !48
  %264 = getelementptr inbounds i8, ptr %0, i64 968
  %265 = load ptr, ptr %264, align 8, !tbaa !23
  %266 = getelementptr inbounds double, ptr %265, i64 %.0567
  store double %.0550, ptr %266, align 8, !tbaa !25
  %267 = getelementptr inbounds i8, ptr %0, i64 1568
  %268 = load double, ptr %267, align 8, !tbaa !47
  %269 = getelementptr inbounds i8, ptr %0, i64 1560
  %270 = load double, ptr %269, align 8, !tbaa !46
  %271 = fsub double %268, %270
  %272 = load double, ptr %263, align 8, !tbaa !48
  %273 = getelementptr inbounds i8, ptr %0, i64 1552
  %274 = load double, ptr %273, align 8, !tbaa !45
  %275 = fsub double %272, %274
  %276 = fneg double %275
  %277 = tail call double @llvm.fmuladd.f64(double %271, double 8.000000e+00, double %276)
  %278 = getelementptr inbounds i8, ptr %0, i64 360
  %279 = load double, ptr %278, align 8, !tbaa !32
  %280 = fmul double %279, 6.000000e+00
  %281 = getelementptr inbounds i8, ptr %0, i64 352
  %282 = load ptr, ptr %281, align 8, !tbaa !23
  %283 = getelementptr inbounds double, ptr %282, i64 %.0567
  %284 = load double, ptr %283, align 8, !tbaa !25
  %285 = fmul double %280, %284
  %286 = fdiv double %277, %285
  %287 = getelementptr inbounds i8, ptr %0, i64 1040
  %288 = load ptr, ptr %287, align 8, !tbaa !23
  %289 = getelementptr inbounds double, ptr %288, i64 %.0567
  store double %286, ptr %289, align 8, !tbaa !25
  %290 = add nsw i64 %.0567, 1
  br label %202

291:                                              ; preds = %202
  %292 = getelementptr inbounds i8, ptr %0, i64 1544
  %293 = load double, ptr %292, align 8, !tbaa !44
  %294 = getelementptr inbounds i8, ptr %0, i64 976
  store double %293, ptr %294, align 8, !tbaa !39
  %295 = getelementptr inbounds i8, ptr %0, i64 1048
  store i8 0, ptr %295, align 8, !tbaa !43
  br label %296

296:                                              ; preds = %291, %194
  %.6573 = phi i64 [ %.0567, %194 ], [ %.5572, %291 ]
  %297 = getelementptr inbounds i8, ptr %0, i64 57
  %298 = load i8, ptr %297, align 1, !tbaa !49, !range !50, !noundef !51
  %299 = trunc nuw i8 %298 to i1
  br i1 %299, label %300, label %304

300:                                              ; preds = %296
  tail call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %301 = getelementptr inbounds i8, ptr %0, i64 1051
  store i8 1, ptr %301, align 1, !tbaa !52
  br label %835

302:                                              ; preds = %19
  %303 = getelementptr inbounds i8, ptr %0, i64 1051
  store i8 0, ptr %303, align 1, !tbaa !52
  br label %304

304:                                              ; preds = %296, %302
  %.7574 = phi i64 [ %.6573, %296 ], [ %.0567, %302 ]
  %305 = getelementptr inbounds i8, ptr %0, i64 976
  %306 = load double, ptr %305, align 8, !tbaa !39
  %307 = getelementptr inbounds i8, ptr %0, i64 832
  tail call void @_ZN11alglib_impl11trimprepareEdPdPNS_8ae_stateE(double noundef %306, ptr noundef nonnull %307, ptr noundef %1)
  %308 = getelementptr inbounds i8, ptr %0, i64 456
  %309 = getelementptr inbounds i8, ptr %0, i64 512
  %310 = load ptr, ptr %309, align 8, !tbaa !23
  %311 = getelementptr inbounds i8, ptr %0, i64 1040
  %312 = load ptr, ptr %311, align 8, !tbaa !23
  %313 = add nsw i64 %.0577, -1
  %314 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %313)
  tail call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %310, i64 noundef 1, ptr noundef %312, i64 noundef 1, i64 noundef %314)
  %315 = getelementptr inbounds i8, ptr %0, i64 1600
  %316 = getelementptr inbounds i8, ptr %0, i64 1664
  tail call void @_ZN11alglib_implL28mincg_preconditionedmultiplyEPNS_10mincgstateEPNS_9ae_vectorES3_S3_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %308, ptr noundef nonnull %315, ptr noundef nonnull %316, ptr noundef %1)
  %317 = getelementptr inbounds i8, ptr %0, i64 56
  %318 = load i8, ptr %317, align 8, !tbaa !53, !range !50, !noundef !51
  %319 = trunc nuw i8 %318 to i1
  br i1 %319, label %320, label %324

320:                                              ; preds = %304
  tail call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %321 = getelementptr inbounds i8, ptr %0, i64 1050
  store i8 1, ptr %321, align 2, !tbaa !54
  br label %835

322:                                              ; preds = %19
  %323 = getelementptr inbounds i8, ptr %0, i64 1050
  store i8 0, ptr %323, align 2, !tbaa !54
  br label %324

324:                                              ; preds = %304, %322
  %325 = getelementptr inbounds i8, ptr %0, i64 825
  %326 = load i8, ptr %325, align 1, !tbaa !27, !range !50, !noundef !51
  %327 = trunc nuw i8 %326 to i1
  br i1 %327, label %334, label %328

328:                                              ; preds = %324
  %329 = getelementptr inbounds i8, ptr %0, i64 1054
  %330 = load i8, ptr %329, align 2, !tbaa !28, !range !50, !noundef !51
  %331 = trunc nuw i8 %330 to i1
  br i1 %331, label %334, label %.preheader600

.preheader600:                                    ; preds = %328
  %.not591.not601 = icmp sgt i64 %.0577, 0
  br i1 %.not591.not601, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader600
  %332 = getelementptr inbounds i8, ptr %0, i64 1040
  %333 = getelementptr inbounds i8, ptr %0, i64 352
  br label %342

334:                                              ; preds = %328, %324
  %335 = getelementptr inbounds i8, ptr %0, i64 576
  %336 = load ptr, ptr %335, align 8, !tbaa !23
  %337 = getelementptr inbounds i8, ptr %0, i64 448
  %338 = load ptr, ptr %337, align 8, !tbaa !23
  %339 = add nsw i64 %.0577, -1
  %340 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %339)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %336, i64 noundef 1, ptr noundef %338, i64 noundef 1, i64 noundef %340)
  %341 = getelementptr inbounds i8, ptr %0, i64 1336
  store i64 8, ptr %341, align 8, !tbaa !55
  br label %846

342:                                              ; preds = %.lr.ph, %342
  %.1551603 = phi double [ 0.000000e+00, %.lr.ph ], [ %351, %342 ]
  %.8575602 = phi i64 [ 0, %.lr.ph ], [ %352, %342 ]
  %343 = load ptr, ptr %332, align 8, !tbaa !23
  %344 = getelementptr inbounds double, ptr %343, i64 %.8575602
  %345 = load double, ptr %344, align 8, !tbaa !25
  %346 = load ptr, ptr %333, align 8, !tbaa !23
  %347 = getelementptr inbounds double, ptr %346, i64 %.8575602
  %348 = load double, ptr %347, align 8, !tbaa !25
  %349 = fmul double %345, %348
  %350 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %349, ptr noundef %1)
  %351 = fadd double %.1551603, %350
  %352 = add nuw nsw i64 %.8575602, 1
  %exitcond.not = icmp eq i64 %352, %.0577
  br i1 %exitcond.not, label %._crit_edge, label %342, !llvm.loop !56

._crit_edge:                                      ; preds = %342, %.preheader600
  %.8575.lcssa = phi i64 [ 0, %.preheader600 ], [ %.0577, %342 ]
  %.1551.lcssa = phi double [ 0.000000e+00, %.preheader600 ], [ %351, %342 ]
  %353 = add nsw i64 %.0577, -1
  %354 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.1551.lcssa, ptr noundef %1)
  %355 = getelementptr inbounds i8, ptr %0, i64 8
  %356 = load double, ptr %355, align 8, !tbaa !57
  %357 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %354, double noundef %356)
  br i1 %357, label %358, label %365

358:                                              ; preds = %._crit_edge
  %359 = getelementptr inbounds i8, ptr %0, i64 576
  %360 = load ptr, ptr %359, align 8, !tbaa !23
  %361 = getelementptr inbounds i8, ptr %0, i64 448
  %362 = load ptr, ptr %361, align 8, !tbaa !23
  %363 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %353)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %360, i64 noundef 1, ptr noundef %362, i64 noundef 1, i64 noundef %363)
  %364 = getelementptr inbounds i8, ptr %0, i64 1336
  store i64 4, ptr %364, align 8, !tbaa !55
  br label %846

365:                                              ; preds = %._crit_edge
  %366 = getelementptr inbounds i8, ptr %0, i64 1328
  store i64 1, ptr %366, align 8, !tbaa !58
  %367 = getelementptr inbounds i8, ptr %0, i64 384
  store i64 0, ptr %367, align 8, !tbaa !59
  %368 = getelementptr inbounds i8, ptr %0, i64 976
  %369 = load double, ptr %368, align 8, !tbaa !39
  %370 = getelementptr inbounds i8, ptr %0, i64 712
  store double %369, ptr %370, align 8, !tbaa !60
  %371 = getelementptr inbounds i8, ptr %0, i64 72
  %372 = load i64, ptr %371, align 8, !tbaa !61
  %373 = and i64 %372, -2
  %switch = icmp eq i64 %373, 2
  br i1 %switch, label %374, label %380

374:                                              ; preds = %365
  %375 = getelementptr inbounds i8, ptr %0, i64 512
  %376 = load ptr, ptr %375, align 8, !tbaa !23
  %377 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %353)
  %378 = tail call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %376, i64 noundef 1, ptr noundef %376, i64 noundef 1, i64 noundef %377)
  %379 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %378, ptr noundef %1)
  br label %386

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

384:                                              ; preds = %380
  %385 = load double, ptr %381, align 8, !tbaa !62
  br label %386

386:                                              ; preds = %380, %384, %374
  %.sink = phi double [ %385, %384 ], [ %379, %374 ], [ 1.000000e+00, %380 ]
  %.2552 = phi double [ %.1551.lcssa, %384 ], [ %378, %374 ], [ %.1551.lcssa, %380 ]
  %387 = getelementptr inbounds i8, ptr %0, i64 800
  store double %.sink, ptr %387, align 8, !tbaa !63
  %388 = load i64, ptr @_ZN11alglib_implL20mincg_rscountdownlenE, align 8, !tbaa !24
  %389 = getelementptr inbounds i8, ptr %0, i64 904
  store i64 %388, ptr %389, align 8, !tbaa !64
  br label %390

390:                                              ; preds = %821, %386
  %.9576 = phi i64 [ %.8575.lcssa, %386 ], [ %.17.lcssa, %821 ]
  %.1559 = phi double [ %.0558, %386 ], [ %.8566, %821 ]
  %.3553 = phi double [ %.2552, %386 ], [ %.7557.lcssa, %821 ]
  %.1 = phi double [ %.0, %386 ], [ %.6, %821 ]
  %391 = getelementptr inbounds i8, ptr %0, i64 824
  store i8 0, ptr %391, align 8, !tbaa !65
  %392 = getelementptr inbounds i8, ptr %0, i64 825
  store i8 0, ptr %392, align 1, !tbaa !27
  %393 = getelementptr inbounds i8, ptr %0, i64 792
  %394 = load ptr, ptr %393, align 8, !tbaa !23
  %395 = getelementptr inbounds i8, ptr %0, i64 1040
  %396 = load ptr, ptr %395, align 8, !tbaa !23
  %397 = add nsw i64 %.0577, -1
  %398 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %397)
  tail call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %394, i64 noundef 1, ptr noundef %396, i64 noundef 1, i64 noundef %398)
  %399 = getelementptr inbounds i8, ptr %0, i64 648
  %400 = getelementptr inbounds i8, ptr %0, i64 704
  %401 = load ptr, ptr %400, align 8, !tbaa !23
  %402 = getelementptr inbounds i8, ptr %0, i64 512
  %403 = load ptr, ptr %402, align 8, !tbaa !23
  %404 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %397)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %401, i64 noundef 1, ptr noundef %403, i64 noundef 1, i64 noundef %404)
  %405 = getelementptr inbounds i8, ptr %0, i64 968
  %406 = load ptr, ptr %405, align 8, !tbaa !23
  %407 = getelementptr inbounds i8, ptr %0, i64 448
  %408 = load ptr, ptr %407, align 8, !tbaa !23
  %409 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %397)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %406, i64 noundef 1, ptr noundef %408, i64 noundef 1, i64 noundef %409)
  %410 = getelementptr inbounds i8, ptr %0, i64 376
  store i64 0, ptr %410, align 8, !tbaa !66
  %411 = getelementptr inbounds i8, ptr %0, i64 720
  store double 1.000000e+00, ptr %411, align 8, !tbaa !67
  tail call void @_ZN11alglib_impl16linminnormalizedEPNS_9ae_vectorEPdlPNS_8ae_stateE(ptr noundef nonnull %399, ptr noundef nonnull %411, i64 noundef %.0577, ptr noundef %1)
  %412 = getelementptr inbounds i8, ptr %0, i64 800
  %413 = load double, ptr %412, align 8, !tbaa !63
  %414 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %413, double noundef 0.000000e+00)
  br i1 %414, label %415, label %417

415:                                              ; preds = %390
  %416 = load double, ptr %412, align 8, !tbaa !63
  store double %416, ptr %411, align 8, !tbaa !67
  br label %417

417:                                              ; preds = %415, %390
  %418 = getelementptr inbounds i8, ptr %0, i64 40
  %419 = load double, ptr %418, align 8, !tbaa !68
  %420 = getelementptr inbounds i8, ptr %0, i64 728
  store double %419, ptr %420, align 8, !tbaa !69
  %421 = getelementptr inbounds i8, ptr %0, i64 57
  %422 = load i8, ptr %421, align 1, !tbaa !49, !range !50, !noundef !51
  %423 = trunc nuw i8 %422 to i1
  br i1 %423, label %424, label %428

424:                                              ; preds = %417
  tail call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %425 = getelementptr inbounds i8, ptr %0, i64 1052
  store i8 1, ptr %425, align 4, !tbaa !70
  br label %835

426:                                              ; preds = %19
  %427 = getelementptr inbounds i8, ptr %0, i64 1052
  store i8 0, ptr %427, align 4, !tbaa !70
  br label %428

428:                                              ; preds = %417, %426
  %.10 = phi i64 [ %.9576, %417 ], [ %.0567, %426 ]
  %.2560 = phi double [ %.1559, %417 ], [ %.0558, %426 ]
  %.4554 = phi double [ %.3553, %417 ], [ %.0550, %426 ]
  %.2 = phi double [ %.1, %417 ], [ %.0, %426 ]
  %429 = getelementptr inbounds i8, ptr %0, i64 825
  %430 = load i8, ptr %429, align 1, !tbaa !27, !range !50, !noundef !51
  %431 = trunc nuw i8 %430 to i1
  br i1 %431, label %432, label %440

432:                                              ; preds = %428
  %433 = getelementptr inbounds i8, ptr %0, i64 576
  %434 = load ptr, ptr %433, align 8, !tbaa !23
  %435 = getelementptr inbounds i8, ptr %0, i64 968
  %436 = load ptr, ptr %435, align 8, !tbaa !23
  %437 = add nsw i64 %.0577, -1
  %438 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %437)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %434, i64 noundef 1, ptr noundef %436, i64 noundef 1, i64 noundef %438)
  %439 = getelementptr inbounds i8, ptr %0, i64 1336
  store i64 8, ptr %439, align 8, !tbaa !55
  br label %846

440:                                              ; preds = %428
  %441 = getelementptr inbounds i8, ptr %0, i64 1808
  %442 = getelementptr inbounds i8, ptr %0, i64 296
  %443 = getelementptr inbounds i8, ptr %0, i64 1728
  %444 = getelementptr inbounds i8, ptr %0, i64 912
  %445 = getelementptr inbounds i8, ptr %0, i64 976
  %446 = load double, ptr %445, align 8, !tbaa !39
  %447 = getelementptr inbounds i8, ptr %0, i64 984
  tail call void @_ZN11alglib_impl34smoothnessmonitorstartlinesearch1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_PNS_8ae_stateE(ptr noundef nonnull %441, ptr noundef nonnull %442, ptr noundef nonnull %443, ptr noundef nonnull %444, double noundef %446, ptr noundef nonnull %447, ptr noundef %1)
  %448 = getelementptr inbounds i8, ptr %0, i64 648
  %449 = getelementptr inbounds i8, ptr %0, i64 720
  %450 = getelementptr inbounds i8, ptr %0, i64 728
  %451 = load double, ptr %450, align 8, !tbaa !69
  %452 = load double, ptr @_ZN11alglib_implL10mincg_gtolE, align 8, !tbaa !25
  %453 = getelementptr inbounds i8, ptr %0, i64 816
  %454 = getelementptr inbounds i8, ptr %0, i64 368
  %455 = getelementptr inbounds i8, ptr %0, i64 1600
  %456 = getelementptr inbounds i8, ptr %0, i64 1352
  %457 = getelementptr inbounds i8, ptr %0, i64 376
  tail call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_S1_S2_ddPlS3_S1_PNS_11linminstateES3_PNS_8ae_stateE(i64 noundef %.0577, ptr noundef nonnull %444, ptr noundef nonnull %445, ptr noundef nonnull %447, ptr noundef nonnull %448, ptr noundef nonnull %449, double noundef %451, double noundef %452, ptr noundef nonnull %453, ptr noundef nonnull %454, ptr noundef nonnull %455, ptr noundef nonnull %456, ptr noundef nonnull %457, ptr noundef %1)
  br label %458

458:                                              ; preds = %570, %440
  %.11 = phi i64 [ %.10, %440 ], [ %.13, %570 ]
  %.3561 = phi double [ %.2560, %440 ], [ %.0558, %570 ]
  %.5555 = phi double [ %.4554, %440 ], [ %.0550, %570 ]
  %.3 = phi double [ %.2, %440 ], [ %.0, %570 ]
  %459 = getelementptr inbounds i8, ptr %0, i64 376
  %460 = load i64, ptr %459, align 8, !tbaa !66
  %461 = icmp eq i64 %460, 0
  br i1 %461, label %591, label %462

462:                                              ; preds = %458
  tail call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %463 = getelementptr inbounds i8, ptr %0, i64 360
  %464 = load double, ptr %463, align 8, !tbaa !32
  %465 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %464, double noundef 0.000000e+00)
  br i1 %465, label %470, label %466

466:                                              ; preds = %462
  %467 = getelementptr inbounds i8, ptr %0, i64 1049
  store i8 1, ptr %467, align 1, !tbaa !38
  br label %835

468:                                              ; preds = %19
  %469 = getelementptr inbounds i8, ptr %0, i64 1049
  store i8 0, ptr %469, align 1, !tbaa !38
  %.phi.trans.insert = getelementptr inbounds i8, ptr %0, i64 976
  %.pre = load double, ptr %.phi.trans.insert, align 8, !tbaa !39
  br label %570

470:                                              ; preds = %462
  %471 = getelementptr inbounds i8, ptr %0, i64 1048
  store i8 1, ptr %471, align 8, !tbaa !43
  br label %835

472:                                              ; preds = %19
  %473 = getelementptr inbounds i8, ptr %0, i64 976
  %474 = load double, ptr %473, align 8, !tbaa !39
  %475 = getelementptr inbounds i8, ptr %0, i64 1544
  store double %474, ptr %475, align 8, !tbaa !44
  br label %476

476:                                              ; preds = %534, %472
  %.12 = phi i64 [ 0, %472 ], [ %564, %534 ]
  %.not = icmp slt i64 %.12, %.0577
  br i1 %.not, label %477, label %565

477:                                              ; preds = %476
  %478 = getelementptr inbounds i8, ptr %0, i64 968
  %479 = load ptr, ptr %478, align 8, !tbaa !23
  %480 = getelementptr inbounds double, ptr %479, i64 %.12
  %481 = load double, ptr %480, align 8, !tbaa !25
  %482 = getelementptr inbounds i8, ptr %0, i64 360
  %483 = load double, ptr %482, align 8, !tbaa !32
  %484 = getelementptr inbounds i8, ptr %0, i64 352
  %485 = load ptr, ptr %484, align 8, !tbaa !23
  %486 = getelementptr inbounds double, ptr %485, i64 %.12
  %487 = load double, ptr %486, align 8, !tbaa !25
  %488 = fneg double %483
  %489 = tail call double @llvm.fmuladd.f64(double %488, double %487, double %481)
  store double %489, ptr %480, align 8, !tbaa !25
  br label %835

490:                                              ; preds = %19
  %491 = getelementptr inbounds i8, ptr %0, i64 976
  %492 = load double, ptr %491, align 8, !tbaa !39
  %493 = getelementptr inbounds i8, ptr %0, i64 1552
  store double %492, ptr %493, align 8, !tbaa !45
  %494 = getelementptr inbounds i8, ptr %0, i64 360
  %495 = load double, ptr %494, align 8, !tbaa !32
  %496 = getelementptr inbounds i8, ptr %0, i64 352
  %497 = load ptr, ptr %496, align 8, !tbaa !23
  %498 = getelementptr inbounds double, ptr %497, i64 %.0567
  %499 = load double, ptr %498, align 8, !tbaa !25
  %500 = fmul double %495, -5.000000e-01
  %501 = tail call double @llvm.fmuladd.f64(double %500, double %499, double %.0550)
  %502 = getelementptr inbounds i8, ptr %0, i64 968
  %503 = load ptr, ptr %502, align 8, !tbaa !23
  %504 = getelementptr inbounds double, ptr %503, i64 %.0567
  store double %501, ptr %504, align 8, !tbaa !25
  br label %835

505:                                              ; preds = %19
  %506 = getelementptr inbounds i8, ptr %0, i64 976
  %507 = load double, ptr %506, align 8, !tbaa !39
  %508 = getelementptr inbounds i8, ptr %0, i64 1560
  store double %507, ptr %508, align 8, !tbaa !46
  %509 = getelementptr inbounds i8, ptr %0, i64 360
  %510 = load double, ptr %509, align 8, !tbaa !32
  %511 = fmul double %510, 5.000000e-01
  %512 = getelementptr inbounds i8, ptr %0, i64 352
  %513 = load ptr, ptr %512, align 8, !tbaa !23
  %514 = getelementptr inbounds double, ptr %513, i64 %.0567
  %515 = load double, ptr %514, align 8, !tbaa !25
  %516 = tail call double @llvm.fmuladd.f64(double %511, double %515, double %.0550)
  %517 = getelementptr inbounds i8, ptr %0, i64 968
  %518 = load ptr, ptr %517, align 8, !tbaa !23
  %519 = getelementptr inbounds double, ptr %518, i64 %.0567
  store double %516, ptr %519, align 8, !tbaa !25
  br label %835

520:                                              ; preds = %19
  %521 = getelementptr inbounds i8, ptr %0, i64 976
  %522 = load double, ptr %521, align 8, !tbaa !39
  %523 = getelementptr inbounds i8, ptr %0, i64 1568
  store double %522, ptr %523, align 8, !tbaa !47
  %524 = getelementptr inbounds i8, ptr %0, i64 360
  %525 = load double, ptr %524, align 8, !tbaa !32
  %526 = getelementptr inbounds i8, ptr %0, i64 352
  %527 = load ptr, ptr %526, align 8, !tbaa !23
  %528 = getelementptr inbounds double, ptr %527, i64 %.0567
  %529 = load double, ptr %528, align 8, !tbaa !25
  %530 = tail call double @llvm.fmuladd.f64(double %525, double %529, double %.0550)
  %531 = getelementptr inbounds i8, ptr %0, i64 968
  %532 = load ptr, ptr %531, align 8, !tbaa !23
  %533 = getelementptr inbounds double, ptr %532, i64 %.0567
  store double %530, ptr %533, align 8, !tbaa !25
  br label %835

534:                                              ; preds = %19
  %535 = getelementptr inbounds i8, ptr %0, i64 976
  %536 = load double, ptr %535, align 8, !tbaa !39
  %537 = getelementptr inbounds i8, ptr %0, i64 1576
  store double %536, ptr %537, align 8, !tbaa !48
  %538 = getelementptr inbounds i8, ptr %0, i64 968
  %539 = load ptr, ptr %538, align 8, !tbaa !23
  %540 = getelementptr inbounds double, ptr %539, i64 %.0567
  store double %.0550, ptr %540, align 8, !tbaa !25
  %541 = getelementptr inbounds i8, ptr %0, i64 1568
  %542 = load double, ptr %541, align 8, !tbaa !47
  %543 = getelementptr inbounds i8, ptr %0, i64 1560
  %544 = load double, ptr %543, align 8, !tbaa !46
  %545 = fsub double %542, %544
  %546 = load double, ptr %537, align 8, !tbaa !48
  %547 = getelementptr inbounds i8, ptr %0, i64 1552
  %548 = load double, ptr %547, align 8, !tbaa !45
  %549 = fsub double %546, %548
  %550 = fneg double %549
  %551 = tail call double @llvm.fmuladd.f64(double %545, double 8.000000e+00, double %550)
  %552 = getelementptr inbounds i8, ptr %0, i64 360
  %553 = load double, ptr %552, align 8, !tbaa !32
  %554 = fmul double %553, 6.000000e+00
  %555 = getelementptr inbounds i8, ptr %0, i64 352
  %556 = load ptr, ptr %555, align 8, !tbaa !23
  %557 = getelementptr inbounds double, ptr %556, i64 %.0567
  %558 = load double, ptr %557, align 8, !tbaa !25
  %559 = fmul double %554, %558
  %560 = fdiv double %551, %559
  %561 = getelementptr inbounds i8, ptr %0, i64 1040
  %562 = load ptr, ptr %561, align 8, !tbaa !23
  %563 = getelementptr inbounds double, ptr %562, i64 %.0567
  store double %560, ptr %563, align 8, !tbaa !25
  %564 = add nsw i64 %.0567, 1
  br label %476

565:                                              ; preds = %476
  %566 = getelementptr inbounds i8, ptr %0, i64 1544
  %567 = load double, ptr %566, align 8, !tbaa !44
  %568 = getelementptr inbounds i8, ptr %0, i64 976
  store double %567, ptr %568, align 8, !tbaa !39
  %569 = getelementptr inbounds i8, ptr %0, i64 1048
  store i8 0, ptr %569, align 8, !tbaa !43
  br label %570

570:                                              ; preds = %565, %468
  %571 = phi double [ %.pre, %468 ], [ %567, %565 ]
  %.13 = phi i64 [ %.0567, %468 ], [ %.12, %565 ]
  %572 = getelementptr inbounds i8, ptr %0, i64 1808
  %573 = getelementptr inbounds i8, ptr %0, i64 296
  %574 = getelementptr inbounds i8, ptr %0, i64 1728
  %575 = getelementptr inbounds i8, ptr %0, i64 648
  %576 = getelementptr inbounds i8, ptr %0, i64 720
  %577 = load double, ptr %576, align 8, !tbaa !67
  %578 = getelementptr inbounds i8, ptr %0, i64 912
  %579 = getelementptr inbounds i8, ptr %0, i64 976
  %580 = getelementptr inbounds i8, ptr %0, i64 984
  tail call void @_ZN11alglib_impl31smoothnessmonitorenqueuepoint1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_dS3_PNS_8ae_stateE(ptr noundef nonnull %572, ptr noundef nonnull %573, ptr noundef nonnull %574, ptr noundef nonnull %575, double noundef %577, ptr noundef nonnull %578, double noundef %571, ptr noundef nonnull %580, ptr noundef %1)
  %581 = getelementptr inbounds i8, ptr %0, i64 832
  %582 = load double, ptr %581, align 8, !tbaa !71
  tail call void @_ZN11alglib_impl12trimfunctionEPdPNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef nonnull %579, ptr noundef nonnull %580, i64 noundef %.0577, double noundef %582, ptr noundef %1)
  %583 = getelementptr inbounds i8, ptr %0, i64 728
  %584 = load double, ptr %583, align 8, !tbaa !69
  %585 = load double, ptr @_ZN11alglib_implL10mincg_gtolE, align 8, !tbaa !25
  %586 = getelementptr inbounds i8, ptr %0, i64 816
  %587 = getelementptr inbounds i8, ptr %0, i64 368
  %588 = getelementptr inbounds i8, ptr %0, i64 1600
  %589 = getelementptr inbounds i8, ptr %0, i64 1352
  %590 = getelementptr inbounds i8, ptr %0, i64 376
  tail call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_S1_S2_ddPlS3_S1_PNS_11linminstateES3_PNS_8ae_stateE(i64 noundef %.0577, ptr noundef nonnull %578, ptr noundef nonnull %579, ptr noundef nonnull %580, ptr noundef nonnull %575, ptr noundef nonnull %576, double noundef %584, double noundef %585, ptr noundef nonnull %586, ptr noundef nonnull %587, ptr noundef nonnull %588, ptr noundef nonnull %589, ptr noundef nonnull %590, ptr noundef %1)
  br label %458

591:                                              ; preds = %458
  %592 = getelementptr inbounds i8, ptr %0, i64 1808
  tail call void @_ZN11alglib_impl35smoothnessmonitorfinalizelinesearchEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef nonnull %592, ptr noundef %1)
  %593 = getelementptr inbounds i8, ptr %0, i64 1054
  %594 = load i8, ptr %593, align 2, !tbaa !28, !range !50, !noundef !51
  %595 = trunc nuw i8 %594 to i1
  br i1 %595, label %596, label %604

596:                                              ; preds = %591
  %597 = getelementptr inbounds i8, ptr %0, i64 576
  %598 = load ptr, ptr %597, align 8, !tbaa !23
  %599 = getelementptr inbounds i8, ptr %0, i64 448
  %600 = load ptr, ptr %599, align 8, !tbaa !23
  %601 = add nsw i64 %.0577, -1
  %602 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %601)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %598, i64 noundef 1, ptr noundef %600, i64 noundef 1, i64 noundef %602)
  %603 = getelementptr inbounds i8, ptr %0, i64 1336
  store i64 8, ptr %603, align 8, !tbaa !55
  br label %846

604:                                              ; preds = %591
  %605 = getelementptr inbounds i8, ptr %0, i64 57
  %606 = load i8, ptr %605, align 1, !tbaa !49, !range !50, !noundef !51
  %607 = trunc nuw i8 %606 to i1
  br i1 %607, label %608, label %612

608:                                              ; preds = %604
  tail call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %609 = getelementptr inbounds i8, ptr %0, i64 1053
  store i8 1, ptr %609, align 1, !tbaa !72
  br label %835

610:                                              ; preds = %19
  %611 = getelementptr inbounds i8, ptr %0, i64 1053
  store i8 0, ptr %611, align 1, !tbaa !72
  br label %612

612:                                              ; preds = %604, %610
  %.14 = phi i64 [ %.11, %604 ], [ %.0567, %610 ]
  %.4562 = phi double [ %.3561, %604 ], [ %.0558, %610 ]
  %.6556 = phi double [ %.5555, %604 ], [ %.0550, %610 ]
  %.4 = phi double [ %.3, %604 ], [ %.0, %610 ]
  %613 = getelementptr inbounds i8, ptr %0, i64 576
  %614 = load ptr, ptr %613, align 8, !tbaa !23
  %615 = getelementptr inbounds i8, ptr %0, i64 968
  %616 = load ptr, ptr %615, align 8, !tbaa !23
  %617 = add nsw i64 %.0577, -1
  %618 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %617)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %614, i64 noundef 1, ptr noundef %616, i64 noundef 1, i64 noundef %618)
  %619 = getelementptr inbounds i8, ptr %0, i64 56
  %620 = load i8, ptr %619, align 8, !tbaa !53, !range !50, !noundef !51
  %621 = trunc nuw i8 %620 to i1
  br i1 %621, label %622, label %626

622:                                              ; preds = %612
  tail call void @_ZN11alglib_implL24mincg_clearrequestfieldsEPNS_10mincgstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %623 = getelementptr inbounds i8, ptr %0, i64 1050
  store i8 1, ptr %623, align 2, !tbaa !54
  br label %835

624:                                              ; preds = %19
  %625 = getelementptr inbounds i8, ptr %0, i64 1050
  store i8 0, ptr %625, align 2, !tbaa !54
  br label %626

626:                                              ; preds = %612, %624
  %.5563 = phi double [ %.4562, %612 ], [ %.0558, %624 ]
  %.5 = phi double [ %.4, %612 ], [ %.0, %624 ]
  %627 = getelementptr inbounds i8, ptr %0, i64 825
  %628 = load i8, ptr %627, align 1, !tbaa !27, !range !50, !noundef !51
  %629 = trunc nuw i8 %628 to i1
  br i1 %629, label %630, label %638

630:                                              ; preds = %626
  %631 = getelementptr inbounds i8, ptr %0, i64 576
  %632 = load ptr, ptr %631, align 8, !tbaa !23
  %633 = getelementptr inbounds i8, ptr %0, i64 968
  %634 = load ptr, ptr %633, align 8, !tbaa !23
  %635 = add nsw i64 %.0577, -1
  %636 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %635)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %632, i64 noundef 1, ptr noundef %634, i64 noundef 1, i64 noundef %636)
  %637 = getelementptr inbounds i8, ptr %0, i64 1336
  store i64 8, ptr %637, align 8, !tbaa !55
  br label %846

638:                                              ; preds = %626
  %639 = getelementptr inbounds i8, ptr %0, i64 816
  %640 = load i64, ptr %639, align 8, !tbaa !73
  %641 = icmp eq i64 %640, 1
  br i1 %641, label %642, label %675

642:                                              ; preds = %638
  %643 = getelementptr inbounds i8, ptr %0, i64 824
  %644 = load i8, ptr %643, align 8, !tbaa !65, !range !50, !noundef !51
  %645 = trunc nuw i8 %644 to i1
  br i1 %645, label %675, label %646

646:                                              ; preds = %642
  %647 = getelementptr inbounds i8, ptr %0, i64 736
  %648 = getelementptr inbounds i8, ptr %0, i64 792
  %649 = load ptr, ptr %648, align 8, !tbaa !23
  %650 = getelementptr inbounds i8, ptr %0, i64 984
  %651 = getelementptr inbounds i8, ptr %0, i64 1040
  %652 = load ptr, ptr %651, align 8, !tbaa !23
  %653 = add nsw i64 %.0577, -1
  %654 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %653)
  tail call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %649, i64 noundef 1, ptr noundef %652, i64 noundef 1, i64 noundef %654)
  %655 = load ptr, ptr %648, align 8, !tbaa !23
  %656 = getelementptr inbounds i8, ptr %0, i64 512
  %657 = load ptr, ptr %656, align 8, !tbaa !23
  %658 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %653)
  %659 = tail call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %655, i64 noundef 1, ptr noundef %657, i64 noundef 1, i64 noundef %658)
  %660 = getelementptr inbounds i8, ptr %0, i64 1600
  %661 = getelementptr inbounds i8, ptr %0, i64 1664
  %662 = tail call noundef double @_ZN11alglib_implL29mincg_preconditionedmultiply2EPNS_10mincgstateEPNS_9ae_vectorES3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %650, ptr noundef nonnull %650, ptr noundef nonnull %660, ptr noundef nonnull %661, ptr noundef %1)
  %663 = fdiv double %662, %659
  %664 = getelementptr inbounds i8, ptr %0, i64 1592
  store double %663, ptr %664, align 8, !tbaa !74
  %665 = tail call noundef double @_ZN11alglib_implL29mincg_preconditionedmultiply2EPNS_10mincgstateEPNS_9ae_vectorES3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %650, ptr noundef nonnull %647, ptr noundef nonnull %660, ptr noundef nonnull %661, ptr noundef %1)
  %666 = fdiv double %665, %659
  %667 = getelementptr inbounds i8, ptr %0, i64 1584
  store double %666, ptr %667, align 8, !tbaa !75
  %668 = getelementptr inbounds i8, ptr %0, i64 64
  %669 = load i64, ptr %668, align 8, !tbaa !76
  switch i64 %669, label %679 [
    i64 0, label %.thread
    i64 1, label %671
  ]

.thread:                                          ; preds = %646
  %670 = load double, ptr %664, align 8, !tbaa !74
  br label %679

671:                                              ; preds = %646
  %672 = load double, ptr %664, align 8, !tbaa !74
  %673 = tail call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %672, double noundef %666, ptr noundef %1)
  %674 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef 0.000000e+00, double noundef %673, ptr noundef %1)
  br label %679

675:                                              ; preds = %642, %638
  %676 = getelementptr inbounds i8, ptr %0, i64 1344
  %677 = load i64, ptr %676, align 8, !tbaa !77
  %678 = add nsw i64 %677, 1
  store i64 %678, ptr %676, align 8, !tbaa !77
  br label %679

679:                                              ; preds = %646, %.thread, %671, %675
  %.7565 = phi double [ 0.000000e+00, %675 ], [ %674, %671 ], [ %670, %.thread ], [ %.5563, %646 ]
  %.6 = phi double [ %.5, %675 ], [ %659, %671 ], [ %659, %.thread ], [ %659, %646 ]
  %680 = getelementptr inbounds i8, ptr %0, i64 1320
  %681 = load i64, ptr %680, align 8, !tbaa !78
  %682 = icmp sgt i64 %681, 0
  br i1 %682, label %683, label %688

683:                                              ; preds = %679
  %684 = add nsw i64 %.0577, 3
  %685 = srem i64 %681, %684
  %686 = icmp eq i64 %685, 0
  br i1 %686, label %687, label %688

687:                                              ; preds = %683
  br label %688

688:                                              ; preds = %687, %683, %679
  %.8566 = phi double [ 0.000000e+00, %687 ], [ %.7565, %683 ], [ %.7565, %679 ]
  %689 = load i64, ptr %639, align 8, !tbaa !73
  switch i64 %689, label %693 [
    i64 1, label %690
    i64 5, label %690
  ]

690:                                              ; preds = %688, %688
  %691 = load i64, ptr @_ZN11alglib_implL20mincg_rscountdownlenE, align 8, !tbaa !24
  %692 = getelementptr inbounds i8, ptr %0, i64 904
  store i64 %691, ptr %692, align 8, !tbaa !64
  br label %697

693:                                              ; preds = %688
  %694 = getelementptr inbounds i8, ptr %0, i64 904
  %695 = load i64, ptr %694, align 8, !tbaa !64
  %696 = add nsw i64 %695, -1
  store i64 %696, ptr %694, align 8, !tbaa !64
  br label %697

697:                                              ; preds = %693, %690
  %698 = getelementptr inbounds i8, ptr %0, i64 584
  %699 = getelementptr inbounds i8, ptr %0, i64 640
  %700 = load ptr, ptr %699, align 8, !tbaa !23
  %701 = getelementptr inbounds i8, ptr %0, i64 1040
  %702 = load ptr, ptr %701, align 8, !tbaa !23
  %703 = add nsw i64 %.0577, -1
  %704 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %703)
  tail call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %700, i64 noundef 1, ptr noundef %702, i64 noundef 1, i64 noundef %704)
  %705 = getelementptr inbounds i8, ptr %0, i64 1600
  %706 = getelementptr inbounds i8, ptr %0, i64 1664
  tail call void @_ZN11alglib_implL28mincg_preconditionedmultiplyEPNS_10mincgstateEPNS_9ae_vectorES3_S3_PNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %698, ptr noundef nonnull %705, ptr noundef nonnull %706, ptr noundef %1)
  %707 = load ptr, ptr %699, align 8, !tbaa !23
  %708 = getelementptr inbounds i8, ptr %0, i64 512
  %709 = load ptr, ptr %708, align 8, !tbaa !23
  %710 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %703)
  tail call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %707, i64 noundef 1, ptr noundef %709, i64 noundef 1, i64 noundef %710, double noundef %.8566)
  %711 = getelementptr inbounds i8, ptr %0, i64 808
  store double 0.000000e+00, ptr %711, align 8, !tbaa !79
  %.not592.not605 = icmp sgt i64 %.0577, 0
  br i1 %.not592.not605, label %.lr.ph608, label %._crit_edge609

.lr.ph608:                                        ; preds = %697
  %712 = getelementptr inbounds i8, ptr %0, i64 704
  %713 = getelementptr inbounds i8, ptr %0, i64 352
  br label %714

714:                                              ; preds = %.lr.ph608, %714
  %715 = phi double [ 0.000000e+00, %.lr.ph608 ], [ %724, %714 ]
  %.15606 = phi i64 [ 0, %.lr.ph608 ], [ %725, %714 ]
  %716 = load ptr, ptr %712, align 8, !tbaa !23
  %717 = getelementptr inbounds double, ptr %716, i64 %.15606
  %718 = load double, ptr %717, align 8, !tbaa !25
  %719 = load ptr, ptr %713, align 8, !tbaa !23
  %720 = getelementptr inbounds double, ptr %719, i64 %.15606
  %721 = load double, ptr %720, align 8, !tbaa !25
  %722 = fdiv double %718, %721
  %723 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %722, ptr noundef %1)
  %724 = fadd double %715, %723
  store double %724, ptr %711, align 8, !tbaa !79
  %725 = add nuw nsw i64 %.15606, 1
  %exitcond648.not = icmp eq i64 %725, %.0577
  br i1 %exitcond648.not, label %._crit_edge609, label %714, !llvm.loop !80

._crit_edge609:                                   ; preds = %714, %697
  %726 = phi double [ 0.000000e+00, %697 ], [ %724, %714 ]
  %727 = getelementptr inbounds i8, ptr %0, i64 720
  %728 = load double, ptr %727, align 8, !tbaa !67
  %729 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %726, ptr noundef %1)
  %730 = fmul double %728, %729
  store double %730, ptr %711, align 8, !tbaa !79
  %731 = load i64, ptr %639, align 8, !tbaa !73
  %732 = icmp eq i64 %731, 1
  br i1 %732, label %733, label %748

733:                                              ; preds = %._crit_edge609
  %734 = getelementptr inbounds i8, ptr %0, i64 800
  store double 0.000000e+00, ptr %734, align 8, !tbaa !63
  br i1 %.not592.not605, label %.lr.ph613, label %._crit_edge614

.lr.ph613:                                        ; preds = %733
  %735 = getelementptr inbounds i8, ptr %0, i64 704
  br label %736

736:                                              ; preds = %.lr.ph613, %736
  %737 = phi double [ 0.000000e+00, %.lr.ph613 ], [ %742, %736 ]
  %.16611 = phi i64 [ 0, %.lr.ph613 ], [ %743, %736 ]
  %738 = load ptr, ptr %735, align 8, !tbaa !23
  %739 = getelementptr inbounds double, ptr %738, i64 %.16611
  %740 = load double, ptr %739, align 8, !tbaa !25
  %741 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %740, ptr noundef %1)
  %742 = fadd double %737, %741
  store double %742, ptr %734, align 8, !tbaa !63
  %743 = add nuw nsw i64 %.16611, 1
  %exitcond649.not = icmp eq i64 %743, %.0577
  br i1 %exitcond649.not, label %._crit_edge614, label %736, !llvm.loop !81

._crit_edge614:                                   ; preds = %736, %733
  %744 = phi double [ 0.000000e+00, %733 ], [ %742, %736 ]
  %745 = load double, ptr %727, align 8, !tbaa !67
  %746 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %744, ptr noundef %1)
  %747 = fmul double %745, %746
  store double %747, ptr %734, align 8, !tbaa !63
  br label %748

748:                                              ; preds = %._crit_edge614, %._crit_edge609
  br i1 %.not592.not605, label %.lr.ph619, label %._crit_edge620

.lr.ph619:                                        ; preds = %748
  %749 = getelementptr inbounds i8, ptr %0, i64 352
  br label %750

750:                                              ; preds = %.lr.ph619, %750
  %.7557617 = phi double [ 0.000000e+00, %.lr.ph619 ], [ %759, %750 ]
  %.17616 = phi i64 [ 0, %.lr.ph619 ], [ %760, %750 ]
  %751 = load ptr, ptr %701, align 8, !tbaa !23
  %752 = getelementptr inbounds double, ptr %751, i64 %.17616
  %753 = load double, ptr %752, align 8, !tbaa !25
  %754 = load ptr, ptr %749, align 8, !tbaa !23
  %755 = getelementptr inbounds double, ptr %754, i64 %.17616
  %756 = load double, ptr %755, align 8, !tbaa !25
  %757 = fmul double %753, %756
  %758 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %757, ptr noundef %1)
  %759 = fadd double %.7557617, %758
  %760 = add nuw nsw i64 %.17616, 1
  %exitcond650.not = icmp eq i64 %760, %.0577
  br i1 %exitcond650.not, label %._crit_edge620, label %750, !llvm.loop !82

._crit_edge620:                                   ; preds = %750, %748
  %.17.lcssa = phi i64 [ 0, %748 ], [ %.0577, %750 ]
  %.7557.lcssa = phi double [ 0.000000e+00, %748 ], [ %759, %750 ]
  %761 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.7557.lcssa, ptr noundef %1)
  br i1 %761, label %762, label %766

762:                                              ; preds = %._crit_edge620
  %763 = getelementptr inbounds i8, ptr %0, i64 976
  %764 = load double, ptr %763, align 8, !tbaa !39
  %765 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %764, ptr noundef %1)
  br i1 %765, label %768, label %766

766:                                              ; preds = %762, %._crit_edge620
  %767 = getelementptr inbounds i8, ptr %0, i64 1336
  store i64 -8, ptr %767, align 8, !tbaa !55
  br label %846

768:                                              ; preds = %762
  %769 = getelementptr inbounds i8, ptr %0, i64 1328
  %770 = load i64, ptr %769, align 8, !tbaa !58
  %771 = getelementptr inbounds i8, ptr %0, i64 368
  %772 = load i64, ptr %771, align 8, !tbaa !83
  %773 = add nsw i64 %772, %770
  store i64 %773, ptr %769, align 8, !tbaa !58
  %774 = load i64, ptr %680, align 8, !tbaa !78
  %775 = add nsw i64 %774, 1
  store i64 %775, ptr %680, align 8, !tbaa !78
  %776 = getelementptr inbounds i8, ptr %0, i64 32
  %777 = load i64, ptr %776, align 8, !tbaa !84
  %.not595 = icmp sge i64 %775, %777
  %778 = icmp sgt i64 %777, 0
  %or.cond = and i1 %.not595, %778
  br i1 %or.cond, label %779, label %781

779:                                              ; preds = %768
  %780 = getelementptr inbounds i8, ptr %0, i64 1336
  store i64 5, ptr %780, align 8, !tbaa !55
  br label %846

781:                                              ; preds = %768
  %782 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.7557.lcssa, ptr noundef %1)
  %783 = getelementptr inbounds i8, ptr %0, i64 8
  %784 = load double, ptr %783, align 8, !tbaa !57
  %785 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %782, double noundef %784)
  br i1 %785, label %786, label %788

786:                                              ; preds = %781
  %787 = getelementptr inbounds i8, ptr %0, i64 1336
  store i64 4, ptr %787, align 8, !tbaa !55
  br label %846

788:                                              ; preds = %781
  %789 = getelementptr inbounds i8, ptr %0, i64 824
  %790 = load i8, ptr %789, align 8, !tbaa !65, !range !50, !noundef !51
  %791 = trunc nuw i8 %790 to i1
  br i1 %791, label %815, label %792

792:                                              ; preds = %788
  %793 = getelementptr inbounds i8, ptr %0, i64 712
  %794 = load double, ptr %793, align 8, !tbaa !60
  %795 = load double, ptr %763, align 8, !tbaa !39
  %796 = fsub double %794, %795
  %797 = getelementptr inbounds i8, ptr %0, i64 16
  %798 = load double, ptr %797, align 8, !tbaa !85
  %799 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %794, ptr noundef %1)
  %800 = load double, ptr %763, align 8, !tbaa !39
  %801 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %800, ptr noundef %1)
  %802 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %801, double noundef 1.000000e+00, ptr noundef %1)
  %803 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %799, double noundef %802, ptr noundef %1)
  %804 = fmul double %798, %803
  %805 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %796, double noundef %804)
  br i1 %805, label %806, label %808

806:                                              ; preds = %792
  %807 = getelementptr inbounds i8, ptr %0, i64 1336
  store i64 1, ptr %807, align 8, !tbaa !55
  br label %846

808:                                              ; preds = %792
  %809 = load double, ptr %711, align 8, !tbaa !79
  %810 = getelementptr inbounds i8, ptr %0, i64 24
  %811 = load double, ptr %810, align 8, !tbaa !86
  %812 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %809, double noundef %811)
  br i1 %812, label %813, label %815

813:                                              ; preds = %808
  %814 = getelementptr inbounds i8, ptr %0, i64 1336
  store i64 2, ptr %814, align 8, !tbaa !55
  br label %846

815:                                              ; preds = %808, %788
  %816 = getelementptr inbounds i8, ptr %0, i64 904
  %817 = load i64, ptr %816, align 8, !tbaa !64
  %818 = icmp slt i64 %817, 1
  br i1 %818, label %819, label %821

819:                                              ; preds = %815
  %820 = getelementptr inbounds i8, ptr %0, i64 1336
  store i64 7, ptr %820, align 8, !tbaa !55
  br label %846

821:                                              ; preds = %815
  %822 = getelementptr inbounds i8, ptr %0, i64 448
  %823 = load ptr, ptr %822, align 8, !tbaa !23
  %824 = getelementptr inbounds i8, ptr %0, i64 576
  %825 = load ptr, ptr %824, align 8, !tbaa !23
  %826 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %703)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %823, i64 noundef 1, ptr noundef %825, i64 noundef 1, i64 noundef %826)
  %827 = load ptr, ptr %708, align 8, !tbaa !23
  %828 = load ptr, ptr %699, align 8, !tbaa !23
  %829 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %703)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %827, i64 noundef 1, ptr noundef %828, i64 noundef 1, i64 noundef %829)
  %830 = load double, ptr %763, align 8, !tbaa !39
  %831 = getelementptr inbounds i8, ptr %0, i64 712
  store double %830, ptr %831, align 8, !tbaa !60
  %832 = getelementptr inbounds i8, ptr %0, i64 384
  %833 = load i64, ptr %832, align 8, !tbaa !59
  %834 = add nsw i64 %833, 1
  store i64 %834, ptr %832, align 8, !tbaa !59
  br label %390

835:                                              ; preds = %622, %608, %520, %505, %490, %477, %470, %466, %424, %320, %300, %246, %231, %216, %203, %196, %192, %._crit_edge641
  %.sink659 = phi i32 [ 17, %622 ], [ 16, %608 ], [ 15, %520 ], [ 14, %505 ], [ 13, %490 ], [ 12, %477 ], [ 11, %470 ], [ 10, %466 ], [ 9, %424 ], [ 8, %320 ], [ 7, %300 ], [ 6, %246 ], [ 5, %231 ], [ 4, %216 ], [ 3, %203 ], [ 2, %196 ], [ 1, %192 ], [ 0, %._crit_edge641 ]
  %.3580 = phi i64 [ %.0577, %622 ], [ %.0577, %608 ], [ %.0577, %520 ], [ %.0577, %505 ], [ %.0577, %490 ], [ %.0577, %477 ], [ %.0577, %470 ], [ %.0577, %466 ], [ %.0577, %424 ], [ %.0577, %320 ], [ %.0577, %300 ], [ %.0577, %246 ], [ %.0577, %231 ], [ %.0577, %216 ], [ %.0577, %203 ], [ %.2579, %196 ], [ %.2579, %192 ], [ %.1578, %._crit_edge641 ]
  %.18 = phi i64 [ %.14, %622 ], [ %.11, %608 ], [ %.0567, %520 ], [ %.0567, %505 ], [ %.0567, %490 ], [ %.12, %477 ], [ %.11, %470 ], [ %.11, %466 ], [ %.9576, %424 ], [ %.7574, %320 ], [ %.6573, %300 ], [ %.0567, %246 ], [ %.0567, %231 ], [ %.0567, %216 ], [ %.5572, %203 ], [ %.4571.lcssa, %196 ], [ %.4571.lcssa, %192 ], [ %.2569.lcssa, %._crit_edge641 ]
  %.9 = phi double [ %.4562, %622 ], [ %.3561, %608 ], [ %.0558, %520 ], [ %.0558, %505 ], [ %.0558, %490 ], [ %.0558, %477 ], [ %.3561, %470 ], [ %.3561, %466 ], [ %.1559, %424 ], [ %.0558, %320 ], [ %.0558, %300 ], [ %.0558, %246 ], [ %.0558, %231 ], [ %.0558, %216 ], [ %.0558, %203 ], [ %.0558, %196 ], [ %.0558, %192 ], [ %.0558, %._crit_edge641 ]
  %.8 = phi double [ %.6556, %622 ], [ %.5555, %608 ], [ %.0550, %520 ], [ %.0550, %505 ], [ %.0550, %490 ], [ %481, %477 ], [ %.5555, %470 ], [ %.5555, %466 ], [ %.3553, %424 ], [ %.0550, %320 ], [ %.0550, %300 ], [ %.0550, %246 ], [ %.0550, %231 ], [ %.0550, %216 ], [ %207, %203 ], [ %.0550, %196 ], [ %.0550, %192 ], [ %.0550, %._crit_edge641 ]
  %.7 = phi double [ %.4, %622 ], [ %.3, %608 ], [ %.0, %520 ], [ %.0, %505 ], [ %.0, %490 ], [ %.0, %477 ], [ %.3, %470 ], [ %.3, %466 ], [ %.1, %424 ], [ %.0, %320 ], [ %.0, %300 ], [ %.0, %246 ], [ %.0, %231 ], [ %.0, %216 ], [ %.0, %203 ], [ %.0, %196 ], [ %.0, %192 ], [ %.0, %._crit_edge641 ]
  store i32 %.sink659, ptr %3, align 8, !tbaa !5
  %836 = getelementptr inbounds i8, ptr %0, i64 1120
  %837 = load ptr, ptr %836, align 8, !tbaa !23
  store i64 %.3580, ptr %837, align 8, !tbaa !24
  %838 = load ptr, ptr %836, align 8, !tbaa !23
  %839 = getelementptr inbounds i8, ptr %838, i64 8
  store i64 %.18, ptr %839, align 8, !tbaa !24
  %840 = getelementptr inbounds i8, ptr %0, i64 1248
  %841 = load ptr, ptr %840, align 8, !tbaa !23
  store double %.9, ptr %841, align 8, !tbaa !25
  %842 = load ptr, ptr %840, align 8, !tbaa !23
  %843 = getelementptr inbounds i8, ptr %842, i64 8
  store double %.8, ptr %843, align 8, !tbaa !25
  %844 = load ptr, ptr %840, align 8, !tbaa !23
  %845 = getelementptr inbounds i8, ptr %844, i64 16
  store double %.7, ptr %845, align 8, !tbaa !25
  br label %846

846:                                              ; preds = %835, %819, %813, %806, %786, %779, %766, %630, %596, %432, %358, %334
  %.0581 = phi i1 [ true, %835 ], [ false, %334 ], [ false, %358 ], [ false, %432 ], [ false, %596 ], [ false, %630 ], [ false, %779 ], [ false, %786 ], [ false, %819 ], [ false, %806 ], [ false, %813 ], [ false, %766 ]
  ret i1 %.0581
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl11trimprepareEdPdPNS_8ae_stateE(double noundef, ptr noundef, ptr noundef) local_unnamed_addr #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 #1

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl21smoothnessmonitorinitEPNS_17smoothnessmonitorEllbPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, i1 noundef zeroext, ptr noundef) local_unnamed_addr #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_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

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

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

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

; 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 1056}
!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, !12, i64 912, !10, i64 976, !12, i64 984, !11, i64 1048, !11, i64 1049, !11, i64 1050, !11, i64 1051, !11, i64 1052, !11, i64 1053, !11, i64 1054, !16, i64 1056, !7, i64 1320, !7, i64 1328, !7, i64 1336, !7, i64 1344, !18, i64 1352, !10, i64 1544, !10, i64 1552, !10, i64 1560, !10, i64 1568, !10, i64 1576, !10, i64 1584, !10, i64 1592, !12, i64 1600, !12, i64 1664, !12, i64 1728, !10, i64 1792, !7, i64 1800, !19, i64 1808, !12, i64 5776}
!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, !7, i64 88, !12, i64 96, !12, i64 160, !12, i64 224, !15, i64 288, !12, i64 368, !12, i64 432, !7, i64 496, !11, i64 504, !11, i64 505, !10, i64 512, !10, i64 520, !11, i64 528, !20, i64 536, !10, i64 832, !10, i64 840, !21, i64 848, !21, i64 1152, !10, i64 1456, !10, i64 1464, !22, i64 1472, !22, i64 1784, !11, i64 2096, !12, i64 2104, !12, i64 2168, !15, i64 2232, !16, i64 2312, !12, i64 2576, !12, i64 2640, !12, i64 2704, !12, i64 2768, !12, i64 2832, !12, i64 2896, !12, i64 2960, !12, i64 3024, !15, i64 3088, !15, i64 3168, !12, i64 3248, !12, i64 3312, !12, i64 3376, !12, i64 3440, !12, i64 3504, !12, i64 3568, !12, i64 3632, !12, i64 3696, !12, i64 3760, !12, i64 3824, !15, i64 3888}
!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_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}
!22 = !{!"_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}
!23 = !{!8, !8, i64 0}
!24 = !{!7, !7, i64 0}
!25 = !{!10, !10, i64 0}
!26 = !{!6, !7, i64 0}
!27 = !{!6, !11, i64 825}
!28 = !{!6, !11, i64 1054}
!29 = !{!6, !7, i64 1800}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = !{!6, !10, i64 360}
!33 = !{!6, !10, i64 1792}
!34 = !{!14, !14, i64 0}
!35 = distinct !{!35, !31}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.unroll.disable"}
!38 = !{!6, !11, i64 1049}
!39 = !{!6, !10, i64 976}
!40 = distinct !{!40, !31}
!41 = distinct !{!41, !31}
!42 = distinct !{!42, !37}
!43 = !{!6, !11, i64 1048}
!44 = !{!6, !10, i64 1544}
!45 = !{!6, !10, i64 1552}
!46 = !{!6, !10, i64 1560}
!47 = !{!6, !10, i64 1568}
!48 = !{!6, !10, i64 1576}
!49 = !{!6, !11, i64 57}
!50 = !{i8 0, i8 2}
!51 = !{}
!52 = !{!6, !11, i64 1051}
!53 = !{!6, !11, i64 56}
!54 = !{!6, !11, i64 1050}
!55 = !{!6, !7, i64 1336}
!56 = distinct !{!56, !31}
!57 = !{!6, !10, i64 8}
!58 = !{!6, !7, i64 1328}
!59 = !{!6, !7, i64 384}
!60 = !{!6, !10, i64 712}
!61 = !{!6, !7, i64 72}
!62 = !{!6, !10, i64 48}
!63 = !{!6, !10, i64 800}
!64 = !{!6, !7, i64 904}
!65 = !{!6, !11, i64 824}
!66 = !{!6, !7, i64 376}
!67 = !{!6, !10, i64 720}
!68 = !{!6, !10, i64 40}
!69 = !{!6, !10, i64 728}
!70 = !{!6, !11, i64 1052}
!71 = !{!6, !10, i64 832}
!72 = !{!6, !11, i64 1053}
!73 = !{!6, !7, i64 816}
!74 = !{!6, !10, i64 1592}
!75 = !{!6, !10, i64 1584}
!76 = !{!6, !7, i64 64}
!77 = !{!6, !7, i64 1344}
!78 = !{!6, !7, i64 1320}
!79 = !{!6, !10, i64 808}
!80 = distinct !{!80, !31}
!81 = distinct !{!81, !31}
!82 = distinct !{!82, !31}
!83 = !{!6, !7, i64 368}
!84 = !{!6, !7, i64 32}
!85 = !{!6, !10, i64 16}
!86 = !{!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