; 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::minbcstate" = type { i64, double, double, double, i64, i8, double, double, %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", i8, i8, i8, i8, %"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", double, double, double, %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, %"struct.alglib_impl::ae_vector", double, double, double, double, double, double, double, double, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, double, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::linminstate", double, i64, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, double, i64, %"struct.alglib_impl::smoothnessmonitor", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::rcommstate" = type { i32, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::linminstate" = type { i8, i8, i64, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double }
%"struct.alglib_impl::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::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_implL18minbc_initialdecayE = external hidden global double, align 8
@.str.480 = external hidden unnamed_addr constant [30 x i8], align 1
@_ZN11alglib_implL10minbc_gtolE = external hidden global double, align 8
@_ZN11alglib_implL24minbc_maxnonmonotoniclenE = external hidden global double, align 8
@.str.481 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.482 = external hidden unnamed_addr constant [22 x i8], align 1
@_ZN11alglib_implL21minbc_decaycorrectionE = external hidden global double, align 8
@_ZN11alglib_implL14minbc_mindecayE = 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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl14minbciterationEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) #2 {
  %3 = alloca i1, align 1
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i64, align 8
  %7 = alloca double, align 8
  %8 = alloca double, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca i8, align 1
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca i8, align 1
  %22 = alloca double, align 8
  %23 = alloca i8, align 1
  %24 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #5
  %25 = load ptr, ptr %4, align 8, !tbaa !5
  %26 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %25, i32 0, i32 18
  %27 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %26, i32 0, i32 0
  %28 = load i32, ptr %27, align 8, !tbaa !9
  %29 = icmp sge i32 %28, 0
  br i1 %29, label %30, label %154

30:                                               ; preds = %2
  %31 = load ptr, ptr %4, align 8, !tbaa !5
  %32 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %31, i32 0, i32 18
  %33 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %32, i32 0, i32 1
  %34 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %33, i32 0, i32 4
  %35 = load ptr, ptr %34, align 8, !tbaa !24
  %36 = getelementptr inbounds i64, ptr %35, i64 0
  %37 = load i64, ptr %36, align 8, !tbaa !25
  store i64 %37, ptr %6, align 8, !tbaa !25
  %38 = load ptr, ptr %4, align 8, !tbaa !5
  %39 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %38, i32 0, i32 18
  %40 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %39, i32 0, i32 1
  %41 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %40, i32 0, i32 4
  %42 = load ptr, ptr %41, align 8, !tbaa !24
  %43 = getelementptr inbounds i64, ptr %42, i64 1
  %44 = load i64, ptr %43, align 8, !tbaa !25
  store i64 %44, ptr %9, align 8, !tbaa !25
  %45 = load ptr, ptr %4, align 8, !tbaa !5
  %46 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %45, i32 0, i32 18
  %47 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %46, i32 0, i32 1
  %48 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %47, i32 0, i32 4
  %49 = load ptr, ptr %48, align 8, !tbaa !24
  %50 = getelementptr inbounds i64, ptr %49, i64 2
  %51 = load i64, ptr %50, align 8, !tbaa !25
  store i64 %51, ptr %10, align 8, !tbaa !25
  %52 = load ptr, ptr %4, align 8, !tbaa !5
  %53 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %52, i32 0, i32 18
  %54 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %53, i32 0, i32 1
  %55 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %54, i32 0, i32 4
  %56 = load ptr, ptr %55, align 8, !tbaa !24
  %57 = getelementptr inbounds i64, ptr %56, i64 3
  %58 = load i64, ptr %57, align 8, !tbaa !25
  store i64 %58, ptr %11, align 8, !tbaa !25
  %59 = load ptr, ptr %4, align 8, !tbaa !5
  %60 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %59, i32 0, i32 18
  %61 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %60, i32 0, i32 1
  %62 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %61, i32 0, i32 4
  %63 = load ptr, ptr %62, align 8, !tbaa !24
  %64 = getelementptr inbounds i64, ptr %63, i64 4
  %65 = load i64, ptr %64, align 8, !tbaa !25
  store i64 %65, ptr %12, align 8, !tbaa !25
  %66 = load ptr, ptr %4, align 8, !tbaa !5
  %67 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %66, i32 0, i32 18
  %68 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %67, i32 0, i32 1
  %69 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %68, i32 0, i32 4
  %70 = load ptr, ptr %69, align 8, !tbaa !24
  %71 = getelementptr inbounds i64, ptr %70, i64 5
  %72 = load i64, ptr %71, align 8, !tbaa !25
  store i64 %72, ptr %17, align 8, !tbaa !25
  %73 = load ptr, ptr %4, align 8, !tbaa !5
  %74 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %73, i32 0, i32 18
  %75 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %74, i32 0, i32 1
  %76 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %75, i32 0, i32 4
  %77 = load ptr, ptr %76, align 8, !tbaa !24
  %78 = getelementptr inbounds i64, ptr %77, i64 6
  %79 = load i64, ptr %78, align 8, !tbaa !25
  store i64 %79, ptr %18, align 8, !tbaa !25
  %80 = load ptr, ptr %4, align 8, !tbaa !5
  %81 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %80, i32 0, i32 18
  %82 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %81, i32 0, i32 2
  %83 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %82, i32 0, i32 4
  %84 = load ptr, ptr %83, align 8, !tbaa !24
  %85 = getelementptr inbounds i8, ptr %84, i64 0
  %86 = load i8, ptr %85, align 1, !tbaa !26, !range !27, !noundef !28
  %87 = trunc i8 %86 to i1
  %88 = zext i1 %87 to i8
  store i8 %88, ptr %16, align 1, !tbaa !26
  %89 = load ptr, ptr %4, align 8, !tbaa !5
  %90 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %89, i32 0, i32 18
  %91 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %90, i32 0, i32 2
  %92 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %91, i32 0, i32 4
  %93 = load ptr, ptr %92, align 8, !tbaa !24
  %94 = getelementptr inbounds i8, ptr %93, i64 1
  %95 = load i8, ptr %94, align 1, !tbaa !26, !range !27, !noundef !28
  %96 = trunc i8 %95 to i1
  %97 = zext i1 %96 to i8
  store i8 %97, ptr %21, align 1, !tbaa !26
  %98 = load ptr, ptr %4, align 8, !tbaa !5
  %99 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %98, i32 0, i32 18
  %100 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %99, i32 0, i32 3
  %101 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %100, i32 0, i32 4
  %102 = load ptr, ptr %101, align 8, !tbaa !24
  %103 = getelementptr inbounds double, ptr %102, i64 0
  %104 = load double, ptr %103, align 8, !tbaa !29
  store double %104, ptr %7, align 8, !tbaa !29
  %105 = load ptr, ptr %4, align 8, !tbaa !5
  %106 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %105, i32 0, i32 18
  %107 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %106, i32 0, i32 3
  %108 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %107, i32 0, i32 4
  %109 = load ptr, ptr %108, align 8, !tbaa !24
  %110 = getelementptr inbounds double, ptr %109, i64 1
  %111 = load double, ptr %110, align 8, !tbaa !29
  store double %111, ptr %8, align 8, !tbaa !29
  %112 = load ptr, ptr %4, align 8, !tbaa !5
  %113 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %112, i32 0, i32 18
  %114 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %113, i32 0, i32 3
  %115 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %114, i32 0, i32 4
  %116 = load ptr, ptr %115, align 8, !tbaa !24
  %117 = getelementptr inbounds double, ptr %116, i64 2
  %118 = load double, ptr %117, align 8, !tbaa !29
  store double %118, ptr %13, align 8, !tbaa !29
  %119 = load ptr, ptr %4, align 8, !tbaa !5
  %120 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %119, i32 0, i32 18
  %121 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %120, i32 0, i32 3
  %122 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %121, i32 0, i32 4
  %123 = load ptr, ptr %122, align 8, !tbaa !24
  %124 = getelementptr inbounds double, ptr %123, i64 3
  %125 = load double, ptr %124, align 8, !tbaa !29
  store double %125, ptr %14, align 8, !tbaa !29
  %126 = load ptr, ptr %4, align 8, !tbaa !5
  %127 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %126, i32 0, i32 18
  %128 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %127, i32 0, i32 3
  %129 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %128, i32 0, i32 4
  %130 = load ptr, ptr %129, align 8, !tbaa !24
  %131 = getelementptr inbounds double, ptr %130, i64 4
  %132 = load double, ptr %131, align 8, !tbaa !29
  store double %132, ptr %15, align 8, !tbaa !29
  %133 = load ptr, ptr %4, align 8, !tbaa !5
  %134 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %133, i32 0, i32 18
  %135 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %134, i32 0, i32 3
  %136 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %135, i32 0, i32 4
  %137 = load ptr, ptr %136, align 8, !tbaa !24
  %138 = getelementptr inbounds double, ptr %137, i64 5
  %139 = load double, ptr %138, align 8, !tbaa !29
  store double %139, ptr %19, align 8, !tbaa !29
  %140 = load ptr, ptr %4, align 8, !tbaa !5
  %141 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %140, i32 0, i32 18
  %142 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %141, i32 0, i32 3
  %143 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %142, i32 0, i32 4
  %144 = load ptr, ptr %143, align 8, !tbaa !24
  %145 = getelementptr inbounds double, ptr %144, i64 6
  %146 = load double, ptr %145, align 8, !tbaa !29
  store double %146, ptr %20, align 8, !tbaa !29
  %147 = load ptr, ptr %4, align 8, !tbaa !5
  %148 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %147, i32 0, i32 18
  %149 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %148, i32 0, i32 3
  %150 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %149, i32 0, i32 4
  %151 = load ptr, ptr %150, align 8, !tbaa !24
  %152 = getelementptr inbounds double, ptr %151, i64 7
  %153 = load double, ptr %152, align 8, !tbaa !29
  store double %153, ptr %22, align 8, !tbaa !29
  br label %155

154:                                              ; preds = %2
  store i64 359, ptr %6, align 8, !tbaa !25
  store i64 -58, ptr %9, align 8, !tbaa !25
  store i64 -919, ptr %10, align 8, !tbaa !25
  store i64 -909, ptr %11, align 8, !tbaa !25
  store i64 81, ptr %12, align 8, !tbaa !25
  store i64 255, ptr %17, align 8, !tbaa !25
  store i64 74, ptr %18, align 8, !tbaa !25
  store i8 0, ptr %16, align 1, !tbaa !26
  store i8 1, ptr %21, align 1, !tbaa !26
  store double 2.050000e+02, ptr %7, align 8, !tbaa !29
  store double -8.380000e+02, ptr %8, align 8, !tbaa !29
  store double 9.390000e+02, ptr %13, align 8, !tbaa !29
  store double -5.260000e+02, ptr %14, align 8, !tbaa !29
  store double 7.630000e+02, ptr %15, align 8, !tbaa !29
  store double -5.410000e+02, ptr %19, align 8, !tbaa !29
  store double -6.980000e+02, ptr %20, align 8, !tbaa !29
  store double -9.000000e+02, ptr %22, align 8, !tbaa !29
  br label %155

155:                                              ; preds = %154, %30
  %156 = load ptr, ptr %4, align 8, !tbaa !5
  %157 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %156, i32 0, i32 18
  %158 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %157, i32 0, i32 0
  %159 = load i32, ptr %158, align 8, !tbaa !9
  %160 = icmp eq i32 %159, 0
  br i1 %160, label %161, label %162

161:                                              ; preds = %155
  br label %617

162:                                              ; preds = %155
  %163 = load ptr, ptr %4, align 8, !tbaa !5
  %164 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %163, i32 0, i32 18
  %165 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %164, i32 0, i32 0
  %166 = load i32, ptr %165, align 8, !tbaa !9
  %167 = icmp eq i32 %166, 1
  br i1 %167, label %168, label %169

168:                                              ; preds = %162
  br label %695

169:                                              ; preds = %162
  %170 = load ptr, ptr %4, align 8, !tbaa !5
  %171 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %170, i32 0, i32 18
  %172 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %171, i32 0, i32 0
  %173 = load i32, ptr %172, align 8, !tbaa !9
  %174 = icmp eq i32 %173, 2
  br i1 %174, label %175, label %176

175:                                              ; preds = %169
  br label %704

176:                                              ; preds = %169
  %177 = load ptr, ptr %4, align 8, !tbaa !5
  %178 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %177, i32 0, i32 18
  %179 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %178, i32 0, i32 0
  %180 = load i32, ptr %179, align 8, !tbaa !9
  %181 = icmp eq i32 %180, 3
  br i1 %181, label %182, label %183

182:                                              ; preds = %176
  br label %754

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

189:                                              ; preds = %183
  br label %795

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

196:                                              ; preds = %190
  br label %804

197:                                              ; preds = %190
  %198 = load ptr, ptr %4, align 8, !tbaa !5
  %199 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %198, i32 0, i32 18
  %200 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %199, i32 0, i32 0
  %201 = load i32, ptr %200, align 8, !tbaa !9
  %202 = icmp eq i32 %201, 6
  br i1 %202, label %203, label %204

203:                                              ; preds = %197
  br label %923

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

210:                                              ; preds = %204
  br label %952

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

217:                                              ; preds = %211
  br label %980

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

224:                                              ; preds = %218
  br label %1007

225:                                              ; preds = %218
  %226 = load ptr, ptr %4, align 8, !tbaa !5
  %227 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %226, i32 0, i32 18
  %228 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %227, i32 0, i32 0
  %229 = load i32, ptr %228, align 8, !tbaa !9
  %230 = icmp eq i32 %229, 10
  br i1 %230, label %231, label %232

231:                                              ; preds = %225
  br label %1152

232:                                              ; preds = %225
  %233 = load ptr, ptr %4, align 8, !tbaa !5
  %234 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %233, i32 0, i32 18
  %235 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %234, i32 0, i32 0
  %236 = load i32, ptr %235, align 8, !tbaa !9
  %237 = icmp eq i32 %236, 11
  br i1 %237, label %238, label %239

238:                                              ; preds = %232
  br label %1170

239:                                              ; preds = %232
  %240 = load ptr, ptr %4, align 8, !tbaa !5
  %241 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %240, i32 0, i32 18
  %242 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %241, i32 0, i32 0
  %243 = load i32, ptr %242, align 8, !tbaa !9
  %244 = icmp eq i32 %243, 12
  br i1 %244, label %245, label %246

245:                                              ; preds = %239
  br label %1683

246:                                              ; preds = %239
  %247 = load ptr, ptr %4, align 8, !tbaa !5
  %248 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %247, i32 0, i32 18
  %249 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %248, i32 0, i32 0
  %250 = load i32, ptr %249, align 8, !tbaa !9
  %251 = icmp eq i32 %250, 13
  br i1 %251, label %252, label %253

252:                                              ; preds = %246
  br label %1698

253:                                              ; preds = %246
  %254 = load ptr, ptr %4, align 8, !tbaa !5
  %255 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %254, i32 0, i32 18
  %256 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %255, i32 0, i32 0
  %257 = load i32, ptr %256, align 8, !tbaa !9
  %258 = icmp eq i32 %257, 14
  br i1 %258, label %259, label %260

259:                                              ; preds = %253
  br label %1817

260:                                              ; preds = %253
  %261 = load ptr, ptr %4, align 8, !tbaa !5
  %262 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %261, i32 0, i32 18
  %263 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %262, i32 0, i32 0
  %264 = load i32, ptr %263, align 8, !tbaa !9
  %265 = icmp eq i32 %264, 15
  br i1 %265, label %266, label %267

266:                                              ; preds = %260
  br label %1846

267:                                              ; preds = %260
  %268 = load ptr, ptr %4, align 8, !tbaa !5
  %269 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %268, i32 0, i32 18
  %270 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %269, i32 0, i32 0
  %271 = load i32, ptr %270, align 8, !tbaa !9
  %272 = icmp eq i32 %271, 16
  br i1 %272, label %273, label %274

273:                                              ; preds = %267
  br label %1874

274:                                              ; preds = %267
  %275 = load ptr, ptr %4, align 8, !tbaa !5
  %276 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %275, i32 0, i32 18
  %277 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %276, i32 0, i32 0
  %278 = load i32, ptr %277, align 8, !tbaa !9
  %279 = icmp eq i32 %278, 17
  br i1 %279, label %280, label %281

280:                                              ; preds = %274
  br label %1901

281:                                              ; preds = %274
  %282 = load ptr, ptr %4, align 8, !tbaa !5
  %283 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %282, i32 0, i32 18
  %284 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %283, i32 0, i32 0
  %285 = load i32, ptr %284, align 8, !tbaa !9
  %286 = icmp eq i32 %285, 18
  br i1 %286, label %287, label %288

287:                                              ; preds = %281
  br label %2052

288:                                              ; preds = %281
  %289 = load ptr, ptr %4, align 8, !tbaa !5
  %290 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %289, i32 0, i32 18
  %291 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %290, i32 0, i32 0
  %292 = load i32, ptr %291, align 8, !tbaa !9
  %293 = icmp eq i32 %292, 19
  br i1 %293, label %294, label %295

294:                                              ; preds = %288
  br label %2070

295:                                              ; preds = %288
  %296 = load ptr, ptr %4, align 8, !tbaa !5
  %297 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %296, i32 0, i32 18
  %298 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %297, i32 0, i32 0
  %299 = load i32, ptr %298, align 8, !tbaa !9
  %300 = icmp eq i32 %299, 20
  br i1 %300, label %301, label %302

301:                                              ; preds = %295
  br label %2484

302:                                              ; preds = %295
  %303 = load ptr, ptr %4, align 8, !tbaa !5
  %304 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %303, i32 0, i32 18
  %305 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %304, i32 0, i32 0
  %306 = load i32, ptr %305, align 8, !tbaa !9
  %307 = icmp eq i32 %306, 21
  br i1 %307, label %308, label %309

308:                                              ; preds = %302
  br label %3277

309:                                              ; preds = %302
  %310 = load ptr, ptr %4, align 8, !tbaa !5
  %311 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %310, i32 0, i32 18
  %312 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %311, i32 0, i32 0
  %313 = load i32, ptr %312, align 8, !tbaa !9
  %314 = icmp eq i32 %313, 22
  br i1 %314, label %315, label %316

315:                                              ; preds = %309
  br label %3292

316:                                              ; preds = %309
  %317 = load ptr, ptr %4, align 8, !tbaa !5
  %318 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %317, i32 0, i32 18
  %319 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %318, i32 0, i32 0
  %320 = load i32, ptr %319, align 8, !tbaa !9
  %321 = icmp eq i32 %320, 23
  br i1 %321, label %322, label %323

322:                                              ; preds = %316
  br label %3411

323:                                              ; preds = %316
  %324 = load ptr, ptr %4, align 8, !tbaa !5
  %325 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %324, i32 0, i32 18
  %326 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %325, i32 0, i32 0
  %327 = load i32, ptr %326, align 8, !tbaa !9
  %328 = icmp eq i32 %327, 24
  br i1 %328, label %329, label %330

329:                                              ; preds = %323
  br label %3440

330:                                              ; preds = %323
  %331 = load ptr, ptr %4, align 8, !tbaa !5
  %332 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %331, i32 0, i32 18
  %333 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %332, i32 0, i32 0
  %334 = load i32, ptr %333, align 8, !tbaa !9
  %335 = icmp eq i32 %334, 25
  br i1 %335, label %336, label %337

336:                                              ; preds = %330
  br label %3468

337:                                              ; preds = %330
  %338 = load ptr, ptr %4, align 8, !tbaa !5
  %339 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %338, i32 0, i32 18
  %340 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %339, i32 0, i32 0
  %341 = load i32, ptr %340, align 8, !tbaa !9
  %342 = icmp eq i32 %341, 26
  br i1 %342, label %343, label %344

343:                                              ; preds = %337
  br label %3495

344:                                              ; preds = %337
  %345 = load ptr, ptr %4, align 8, !tbaa !5
  %346 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %345, i32 0, i32 18
  %347 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %346, i32 0, i32 0
  %348 = load i32, ptr %347, align 8, !tbaa !9
  %349 = icmp eq i32 %348, 27
  br i1 %349, label %350, label %351

350:                                              ; preds = %344
  br label %3646

351:                                              ; preds = %344
  %352 = load ptr, ptr %4, align 8, !tbaa !5
  %353 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %352, i32 0, i32 18
  %354 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %353, i32 0, i32 0
  %355 = load i32, ptr %354, align 8, !tbaa !9
  %356 = icmp eq i32 %355, 28
  br i1 %356, label %357, label %358

357:                                              ; preds = %351
  br label %3664

358:                                              ; preds = %351
  %359 = load ptr, ptr %4, align 8, !tbaa !5
  %360 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %359, i32 0, i32 18
  %361 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %360, i32 0, i32 0
  %362 = load i32, ptr %361, align 8, !tbaa !9
  %363 = icmp eq i32 %362, 29
  br i1 %363, label %364, label %365

364:                                              ; preds = %358
  br label %4280

365:                                              ; preds = %358
  %366 = load ptr, ptr %4, align 8, !tbaa !5
  %367 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %366, i32 0, i32 0
  %368 = load i64, ptr %367, align 8, !tbaa !30
  %369 = load ptr, ptr %5, align 8, !tbaa !5
  %370 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef 5, i64 noundef %368, ptr noundef %369)
  store i64 %370, ptr %10, align 8, !tbaa !25
  %371 = load double, ptr @_ZN11alglib_implL18minbc_initialdecayE, align 8, !tbaa !29
  store double %371, ptr %20, align 8, !tbaa !29
  %372 = load ptr, ptr %4, align 8, !tbaa !5
  %373 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %372, i32 0, i32 0
  %374 = load i64, ptr %373, align 8, !tbaa !30
  store i64 %374, ptr %9, align 8, !tbaa !25
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %375

375:                                              ; preds = %394, %365
  %376 = load i64, ptr %11, align 8, !tbaa !25
  %377 = load i64, ptr %9, align 8, !tbaa !25
  %378 = sub nsw i64 %377, 1
  %379 = icmp sle i64 %376, %378
  br i1 %379, label %380, label %397

380:                                              ; preds = %375
  %381 = load ptr, ptr %4, align 8, !tbaa !5
  %382 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %381, i32 0, i32 39
  %383 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %382, i32 0, i32 4
  %384 = load ptr, ptr %383, align 8, !tbaa !24
  %385 = load i64, ptr %11, align 8, !tbaa !25
  %386 = getelementptr inbounds double, ptr %384, i64 %385
  %387 = load double, ptr %386, align 8, !tbaa !29
  %388 = load ptr, ptr %4, align 8, !tbaa !5
  %389 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %388, i32 0, i32 19
  %390 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %389, i32 0, i32 4
  %391 = load ptr, ptr %390, align 8, !tbaa !24
  %392 = load i64, ptr %11, align 8, !tbaa !25
  %393 = getelementptr inbounds double, ptr %391, i64 %392
  store double %387, ptr %393, align 8, !tbaa !29
  br label %394

394:                                              ; preds = %380
  %395 = load i64, ptr %11, align 8, !tbaa !25
  %396 = add nsw i64 %395, 1
  store i64 %396, ptr %11, align 8, !tbaa !25
  br label %375, !llvm.loop !31

397:                                              ; preds = %375
  %398 = load ptr, ptr %4, align 8, !tbaa !5
  %399 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %398, i32 0, i32 19
  %400 = load ptr, ptr %4, align 8, !tbaa !5
  %401 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %400, i32 0, i32 33
  %402 = load ptr, ptr %4, align 8, !tbaa !5
  %403 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %402, i32 0, i32 31
  %404 = load ptr, ptr %4, align 8, !tbaa !5
  %405 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %404, i32 0, i32 34
  %406 = load ptr, ptr %4, align 8, !tbaa !5
  %407 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %406, i32 0, i32 32
  %408 = load i64, ptr %9, align 8, !tbaa !25
  %409 = load ptr, ptr %5, align 8, !tbaa !5
  %410 = call noundef zeroext i1 @_ZN11alglib_impl26enforceboundaryconstraintsEPNS_9ae_vectorES1_S1_S1_S1_llPNS_8ae_stateE(ptr noundef %399, ptr noundef %401, ptr noundef %403, ptr noundef %405, ptr noundef %407, i64 noundef %408, i64 noundef 0, ptr noundef %409)
  br i1 %410, label %416, label %411

411:                                              ; preds = %397
  %412 = load ptr, ptr %4, align 8, !tbaa !5
  %413 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %412, i32 0, i32 38
  store i64 -3, ptr %413, align 8, !tbaa !33
  store i8 0, ptr %23, align 1, !tbaa !26
  %414 = load i8, ptr %23, align 1, !tbaa !26, !range !27, !noundef !28
  %415 = trunc i8 %414 to i1
  store i1 %415, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4735

416:                                              ; preds = %397
  %417 = load ptr, ptr %4, align 8, !tbaa !5
  %418 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %417, i32 0, i32 17
  store i8 0, ptr %418, align 1, !tbaa !34
  %419 = load ptr, ptr %4, align 8, !tbaa !5
  %420 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %419, i32 0, i32 38
  store i64 0, ptr %420, align 8, !tbaa !33
  %421 = load ptr, ptr %4, align 8, !tbaa !5
  %422 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %421, i32 0, i32 35
  store i64 0, ptr %422, align 8, !tbaa !35
  %423 = load ptr, ptr %4, align 8, !tbaa !5
  %424 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %423, i32 0, i32 36
  store i64 0, ptr %424, align 8, !tbaa !36
  %425 = load ptr, ptr %4, align 8, !tbaa !5
  %426 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %425, i32 0, i32 37
  store i64 -1, ptr %426, align 8, !tbaa !37
  %427 = load ptr, ptr %4, align 8, !tbaa !5
  %428 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %427, i32 0, i32 59
  %429 = load i64, ptr %10, align 8, !tbaa !25
  %430 = add nsw i64 %429, 1
  %431 = load i64, ptr %9, align 8, !tbaa !25
  %432 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %428, i64 noundef %430, i64 noundef %431, ptr noundef %432)
  %433 = load ptr, ptr %4, align 8, !tbaa !5
  %434 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %433, i32 0, i32 60
  %435 = load i64, ptr %10, align 8, !tbaa !25
  %436 = add nsw i64 %435, 1
  %437 = load i64, ptr %9, align 8, !tbaa !25
  %438 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %434, i64 noundef %436, i64 noundef %437, ptr noundef %438)
  %439 = load ptr, ptr %4, align 8, !tbaa !5
  %440 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %439, i32 0, i32 61
  %441 = load i64, ptr %10, align 8, !tbaa !25
  %442 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %440, i64 noundef %441, ptr noundef %442)
  %443 = load ptr, ptr %4, align 8, !tbaa !5
  %444 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %443, i32 0, i32 62
  %445 = load i64, ptr %10, align 8, !tbaa !25
  %446 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %444, i64 noundef %445, ptr noundef %446)
  %447 = load ptr, ptr %4, align 8, !tbaa !5
  %448 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %447, i32 0, i32 50
  %449 = load i64, ptr %9, align 8, !tbaa !25
  %450 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %448, i64 noundef %449, ptr noundef %450)
  %451 = load ptr, ptr %4, align 8, !tbaa !5
  %452 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %451, i32 0, i32 66
  %453 = load i64, ptr %9, align 8, !tbaa !25
  %454 = load ptr, ptr %4, align 8, !tbaa !5
  %455 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %454, i32 0, i32 65
  %456 = load i64, ptr %455, align 8, !tbaa !38
  %457 = icmp sgt i64 %456, 0
  %458 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl21smoothnessmonitorinitEPNS_17smoothnessmonitorEllbPNS_8ae_stateE(ptr noundef %452, i64 noundef %453, i64 noundef 1, i1 noundef zeroext %457, ptr noundef %458)
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %459

459:                                              ; preds = %492, %416
  %460 = load i64, ptr %11, align 8, !tbaa !25
  %461 = load i64, ptr %9, align 8, !tbaa !25
  %462 = sub nsw i64 %461, 1
  %463 = icmp sle i64 %460, %462
  br i1 %463, label %464, label %495

464:                                              ; preds = %459
  %465 = load ptr, ptr %4, align 8, !tbaa !5
  %466 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %465, i32 0, i32 8
  %467 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %466, i32 0, i32 4
  %468 = load ptr, ptr %467, align 8, !tbaa !24
  %469 = load i64, ptr %11, align 8, !tbaa !25
  %470 = getelementptr inbounds double, ptr %468, i64 %469
  %471 = load double, ptr %470, align 8, !tbaa !29
  %472 = load ptr, ptr %4, align 8, !tbaa !5
  %473 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %472, i32 0, i32 67
  %474 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %473, i32 0, i32 4
  %475 = load ptr, ptr %474, align 8, !tbaa !24
  %476 = load i64, ptr %11, align 8, !tbaa !25
  %477 = getelementptr inbounds double, ptr %475, i64 %476
  store double %471, ptr %477, align 8, !tbaa !29
  %478 = load ptr, ptr %4, align 8, !tbaa !5
  %479 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %478, i32 0, i32 8
  %480 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %479, i32 0, i32 4
  %481 = load ptr, ptr %480, align 8, !tbaa !24
  %482 = load i64, ptr %11, align 8, !tbaa !25
  %483 = getelementptr inbounds double, ptr %481, i64 %482
  %484 = load double, ptr %483, align 8, !tbaa !29
  %485 = fdiv double 1.000000e+00, %484
  %486 = load ptr, ptr %4, align 8, !tbaa !5
  %487 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %486, i32 0, i32 68
  %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 %11, align 8, !tbaa !25
  %491 = getelementptr inbounds double, ptr %489, i64 %490
  store double %485, ptr %491, align 8, !tbaa !29
  br label %492

492:                                              ; preds = %464
  %493 = load i64, ptr %11, align 8, !tbaa !25
  %494 = add nsw i64 %493, 1
  store i64 %494, ptr %11, align 8, !tbaa !25
  br label %459, !llvm.loop !39

495:                                              ; preds = %459
  %496 = load ptr, ptr %4, align 8, !tbaa !5
  %497 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %496, i32 0, i32 49
  %498 = load i64, ptr %9, align 8, !tbaa !25
  %499 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %497, i64 noundef %498, ptr noundef %499)
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %500

500:                                              ; preds = %553, %495
  %501 = load i64, ptr %11, align 8, !tbaa !25
  %502 = load i64, ptr %9, align 8, !tbaa !25
  %503 = sub nsw i64 %502, 1
  %504 = icmp sle i64 %501, %503
  br i1 %504, label %505, label %556

505:                                              ; preds = %500
  %506 = load ptr, ptr %4, align 8, !tbaa !5
  %507 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %506, i32 0, i32 9
  %508 = load i64, ptr %507, align 8, !tbaa !40
  %509 = icmp eq i64 %508, 2
  br i1 %509, label %510, label %525

510:                                              ; preds = %505
  %511 = load ptr, ptr %4, align 8, !tbaa !5
  %512 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %511, i32 0, i32 10
  %513 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %512, i32 0, i32 4
  %514 = load ptr, ptr %513, align 8, !tbaa !24
  %515 = load i64, ptr %11, align 8, !tbaa !25
  %516 = getelementptr inbounds double, ptr %514, i64 %515
  %517 = load double, ptr %516, align 8, !tbaa !29
  %518 = fdiv double 1.000000e+00, %517
  %519 = load ptr, ptr %4, align 8, !tbaa !5
  %520 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %519, i32 0, i32 49
  %521 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %520, i32 0, i32 4
  %522 = load ptr, ptr %521, align 8, !tbaa !24
  %523 = load i64, ptr %11, align 8, !tbaa !25
  %524 = getelementptr inbounds double, ptr %522, i64 %523
  store double %518, ptr %524, align 8, !tbaa !29
  br label %553

525:                                              ; preds = %505
  %526 = load ptr, ptr %4, align 8, !tbaa !5
  %527 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %526, i32 0, i32 9
  %528 = load i64, ptr %527, align 8, !tbaa !40
  %529 = icmp eq i64 %528, 3
  br i1 %529, label %530, label %546

530:                                              ; preds = %525
  %531 = load ptr, ptr %4, align 8, !tbaa !5
  %532 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %531, i32 0, i32 8
  %533 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %532, i32 0, i32 4
  %534 = load ptr, ptr %533, align 8, !tbaa !24
  %535 = load i64, ptr %11, align 8, !tbaa !25
  %536 = getelementptr inbounds double, ptr %534, i64 %535
  %537 = load double, ptr %536, align 8, !tbaa !29
  %538 = load ptr, ptr %5, align 8, !tbaa !5
  %539 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %537, ptr noundef %538)
  %540 = load ptr, ptr %4, align 8, !tbaa !5
  %541 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %540, i32 0, i32 49
  %542 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %541, i32 0, i32 4
  %543 = load ptr, ptr %542, align 8, !tbaa !24
  %544 = load i64, ptr %11, align 8, !tbaa !25
  %545 = getelementptr inbounds double, ptr %543, i64 %544
  store double %539, ptr %545, align 8, !tbaa !29
  br label %553

546:                                              ; preds = %525
  %547 = load ptr, ptr %4, align 8, !tbaa !5
  %548 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %547, i32 0, i32 49
  %549 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %548, i32 0, i32 4
  %550 = load ptr, ptr %549, align 8, !tbaa !24
  %551 = load i64, ptr %11, align 8, !tbaa !25
  %552 = getelementptr inbounds double, ptr %550, i64 %551
  store double 1.000000e+00, ptr %552, align 8, !tbaa !29
  br label %553

553:                                              ; preds = %546, %530, %510
  %554 = load i64, ptr %11, align 8, !tbaa !25
  %555 = add nsw i64 %554, 1
  store i64 %555, ptr %11, align 8, !tbaa !25
  br label %500, !llvm.loop !41

556:                                              ; preds = %500
  %557 = load ptr, ptr %4, align 8, !tbaa !5
  %558 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef %557, ptr noundef %558)
  %559 = load ptr, ptr %4, align 8, !tbaa !5
  %560 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %559, i32 0, i32 7
  %561 = load double, ptr %560, align 8, !tbaa !42
  %562 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %561, double noundef 0.000000e+00)
  br i1 %562, label %563, label %568

563:                                              ; preds = %556
  %564 = load ptr, ptr %4, align 8, !tbaa !5
  %565 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %564, i32 0, i32 64
  %566 = load double, ptr %565, align 8, !tbaa !43
  %567 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %566, double noundef 0.000000e+00)
  br i1 %567, label %569, label %568

568:                                              ; preds = %563, %556
  br label %656

569:                                              ; preds = %563
  br label %570

570:                                              ; preds = %654, %569
  %571 = load ptr, ptr %4, align 8, !tbaa !5
  %572 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %571, i32 0, i32 66
  %573 = load ptr, ptr %4, align 8, !tbaa !5
  %574 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %573, i32 0, i32 19
  %575 = load ptr, ptr %4, align 8, !tbaa !5
  %576 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %575, i32 0, i32 8
  %577 = load ptr, ptr %4, align 8, !tbaa !5
  %578 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %577, i32 0, i32 33
  %579 = load ptr, ptr %4, align 8, !tbaa !5
  %580 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %579, i32 0, i32 34
  %581 = load ptr, ptr %4, align 8, !tbaa !5
  %582 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %581, i32 0, i32 64
  %583 = load double, ptr %582, align 8, !tbaa !43
  %584 = load ptr, ptr %5, align 8, !tbaa !5
  %585 = call noundef zeroext i1 @_ZN11alglib_impl34smoothnessmonitorcheckgradientatx0EPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_S3_bdPNS_8ae_stateE(ptr noundef %572, ptr noundef %574, ptr noundef %576, ptr noundef %578, ptr noundef %580, i1 noundef zeroext true, double noundef %583, ptr noundef %584)
  br i1 %585, label %587, label %586

586:                                              ; preds = %570
  br label %655

587:                                              ; preds = %570
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %588

588:                                              ; preds = %608, %587
  %589 = load i64, ptr %11, align 8, !tbaa !25
  %590 = load i64, ptr %9, align 8, !tbaa !25
  %591 = sub nsw i64 %590, 1
  %592 = icmp sle i64 %589, %591
  br i1 %592, label %593, label %611

593:                                              ; preds = %588
  %594 = load ptr, ptr %4, align 8, !tbaa !5
  %595 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %594, i32 0, i32 66
  %596 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %595, i32 0, i32 27
  %597 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %596, i32 0, i32 4
  %598 = load ptr, ptr %597, align 8, !tbaa !24
  %599 = load i64, ptr %11, align 8, !tbaa !25
  %600 = getelementptr inbounds double, ptr %598, i64 %599
  %601 = load double, ptr %600, align 8, !tbaa !29
  %602 = load ptr, ptr %4, align 8, !tbaa !5
  %603 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %602, i32 0, i32 11
  %604 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %603, i32 0, i32 4
  %605 = load ptr, ptr %604, align 8, !tbaa !24
  %606 = load i64, ptr %11, align 8, !tbaa !25
  %607 = getelementptr inbounds double, ptr %605, i64 %606
  store double %601, ptr %607, align 8, !tbaa !29
  br label %608

608:                                              ; preds = %593
  %609 = load i64, ptr %11, align 8, !tbaa !25
  %610 = add nsw i64 %609, 1
  store i64 %610, ptr %11, align 8, !tbaa !25
  br label %588, !llvm.loop !44

611:                                              ; preds = %588
  %612 = load ptr, ptr %4, align 8, !tbaa !5
  %613 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %612, i32 0, i32 15
  store i8 1, ptr %613, align 1, !tbaa !45
  %614 = load ptr, ptr %4, align 8, !tbaa !5
  %615 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %614, i32 0, i32 18
  %616 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %615, i32 0, i32 0
  store i32 0, ptr %616, align 8, !tbaa !9
  br label %4609

617:                                              ; preds = %161
  %618 = load ptr, ptr %4, align 8, !tbaa !5
  %619 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %618, i32 0, i32 15
  store i8 0, ptr %619, align 1, !tbaa !45
  %620 = load ptr, ptr %4, align 8, !tbaa !5
  %621 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %620, i32 0, i32 12
  %622 = load double, ptr %621, align 8, !tbaa !46
  %623 = load ptr, ptr %4, align 8, !tbaa !5
  %624 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %623, i32 0, i32 66
  %625 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %624, i32 0, i32 28
  %626 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %625, i32 0, i32 4
  %627 = load ptr, ptr %626, align 8, !tbaa !24
  %628 = getelementptr inbounds double, ptr %627, i64 0
  store double %622, ptr %628, align 8, !tbaa !29
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %629

629:                                              ; preds = %651, %617
  %630 = load i64, ptr %11, align 8, !tbaa !25
  %631 = load i64, ptr %9, align 8, !tbaa !25
  %632 = sub nsw i64 %631, 1
  %633 = icmp sle i64 %630, %632
  br i1 %633, label %634, label %654

634:                                              ; preds = %629
  %635 = load ptr, ptr %4, align 8, !tbaa !5
  %636 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %635, i32 0, i32 13
  %637 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %636, i32 0, i32 4
  %638 = load ptr, ptr %637, align 8, !tbaa !24
  %639 = load i64, ptr %11, align 8, !tbaa !25
  %640 = getelementptr inbounds double, ptr %638, i64 %639
  %641 = load double, ptr %640, align 8, !tbaa !29
  %642 = load ptr, ptr %4, align 8, !tbaa !5
  %643 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %642, i32 0, i32 66
  %644 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %643, i32 0, i32 29
  %645 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %644, i32 0, i32 6
  %646 = load ptr, ptr %645, align 8, !tbaa !24
  %647 = getelementptr inbounds ptr, ptr %646, i64 0
  %648 = load ptr, ptr %647, align 8, !tbaa !5
  %649 = load i64, ptr %11, align 8, !tbaa !25
  %650 = getelementptr inbounds double, ptr %648, i64 %649
  store double %641, ptr %650, align 8, !tbaa !29
  br label %651

651:                                              ; preds = %634
  %652 = load i64, ptr %11, align 8, !tbaa !25
  %653 = add nsw i64 %652, 1
  store i64 %653, ptr %11, align 8, !tbaa !25
  br label %629, !llvm.loop !47

654:                                              ; preds = %629
  br label %570

655:                                              ; preds = %586
  br label %656

656:                                              ; preds = %655, %568
  %657 = load ptr, ptr %4, align 8, !tbaa !5
  %658 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %657, i32 0, i32 38
  store i64 0, ptr %658, align 8, !tbaa !33
  %659 = load ptr, ptr %4, align 8, !tbaa !5
  %660 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %659, i32 0, i32 30
  store double 0.000000e+00, ptr %660, align 8, !tbaa !48
  %661 = load i64, ptr %9, align 8, !tbaa !25
  %662 = sitofp i64 %661 to double
  %663 = fmul double 1.500000e+00, %662
  %664 = load ptr, ptr %5, align 8, !tbaa !5
  %665 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %663, ptr noundef %664)
  %666 = add nsw i64 %665, 5
  %667 = load ptr, ptr %4, align 8, !tbaa !5
  %668 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %667, i32 0, i32 58
  store i64 %666, ptr %668, align 8, !tbaa !49
  %669 = load ptr, ptr %4, align 8, !tbaa !5
  %670 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %669, i32 0, i32 11
  %671 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %670, i32 0, i32 4
  %672 = load ptr, ptr %671, align 8, !tbaa !24
  %673 = getelementptr inbounds double, ptr %672, i64 0
  %674 = load ptr, ptr %4, align 8, !tbaa !5
  %675 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %674, i32 0, i32 19
  %676 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %675, i32 0, i32 4
  %677 = load ptr, ptr %676, align 8, !tbaa !24
  %678 = getelementptr inbounds double, ptr %677, i64 0
  %679 = load i64, ptr %9, align 8, !tbaa !25
  %680 = sub nsw i64 %679, 1
  %681 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %680)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %673, i64 noundef 1, ptr noundef %678, i64 noundef 1, i64 noundef %681)
  %682 = load ptr, ptr %4, align 8, !tbaa !5
  %683 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef %682, ptr noundef %683)
  %684 = load ptr, ptr %4, align 8, !tbaa !5
  %685 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %684, i32 0, i32 7
  %686 = load double, ptr %685, align 8, !tbaa !42
  %687 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %686, double noundef 0.000000e+00)
  br i1 %687, label %688, label %689

688:                                              ; preds = %656
  br label %698

689:                                              ; preds = %656
  %690 = load ptr, ptr %4, align 8, !tbaa !5
  %691 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %690, i32 0, i32 15
  store i8 1, ptr %691, align 1, !tbaa !45
  %692 = load ptr, ptr %4, align 8, !tbaa !5
  %693 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %692, i32 0, i32 18
  %694 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %693, i32 0, i32 0
  store i32 1, ptr %694, align 8, !tbaa !9
  br label %4609

695:                                              ; preds = %168
  %696 = load ptr, ptr %4, align 8, !tbaa !5
  %697 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %696, i32 0, i32 15
  store i8 0, ptr %697, align 1, !tbaa !45
  br label %707

698:                                              ; preds = %688
  %699 = load ptr, ptr %4, align 8, !tbaa !5
  %700 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %699, i32 0, i32 14
  store i8 1, ptr %700, align 8, !tbaa !50
  %701 = load ptr, ptr %4, align 8, !tbaa !5
  %702 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %701, i32 0, i32 18
  %703 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %702, i32 0, i32 0
  store i32 2, ptr %703, align 8, !tbaa !9
  br label %4609

704:                                              ; preds = %175
  %705 = load ptr, ptr %4, align 8, !tbaa !5
  %706 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %705, i32 0, i32 14
  store i8 0, ptr %706, align 8, !tbaa !50
  br label %707

707:                                              ; preds = %704, %695
  %708 = load ptr, ptr %4, align 8, !tbaa !5
  %709 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %708, i32 0, i32 12
  %710 = load double, ptr %709, align 8, !tbaa !46
  %711 = load ptr, ptr %4, align 8, !tbaa !5
  %712 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %711, i32 0, i32 26
  store double %710, ptr %712, align 8, !tbaa !51
  %713 = load ptr, ptr %4, align 8, !tbaa !5
  %714 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %713, i32 0, i32 12
  %715 = load double, ptr %714, align 8, !tbaa !46
  %716 = load ptr, ptr %4, align 8, !tbaa !5
  %717 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %716, i32 0, i32 57
  %718 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11trimprepareEdPdPNS_8ae_stateE(double noundef %715, ptr noundef %717, ptr noundef %718)
  %719 = load ptr, ptr %4, align 8, !tbaa !5
  %720 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %719, i32 0, i32 36
  %721 = load i64, ptr %720, align 8, !tbaa !36
  %722 = add nsw i64 %721, 1
  %723 = load ptr, ptr %4, align 8, !tbaa !5
  %724 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %723, i32 0, i32 36
  store i64 %722, ptr %724, align 8, !tbaa !36
  %725 = load ptr, ptr %4, align 8, !tbaa !5
  %726 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %725, i32 0, i32 5
  %727 = load i8, ptr %726, align 8, !tbaa !52, !range !27, !noundef !28
  %728 = trunc i8 %727 to i1
  br i1 %728, label %730, label %729

729:                                              ; preds = %707
  br label %757

730:                                              ; preds = %707
  %731 = load ptr, ptr %4, align 8, !tbaa !5
  %732 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %731, i32 0, i32 11
  %733 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %732, i32 0, i32 4
  %734 = load ptr, ptr %733, align 8, !tbaa !24
  %735 = getelementptr inbounds double, ptr %734, i64 0
  %736 = load ptr, ptr %4, align 8, !tbaa !5
  %737 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %736, i32 0, i32 19
  %738 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %737, i32 0, i32 4
  %739 = load ptr, ptr %738, align 8, !tbaa !24
  %740 = getelementptr inbounds double, ptr %739, i64 0
  %741 = load i64, ptr %9, align 8, !tbaa !25
  %742 = sub nsw i64 %741, 1
  %743 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %742)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %735, i64 noundef 1, ptr noundef %740, i64 noundef 1, i64 noundef %743)
  %744 = load ptr, ptr %4, align 8, !tbaa !5
  %745 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %744, i32 0, i32 26
  %746 = load double, ptr %745, align 8, !tbaa !51
  %747 = load ptr, ptr %4, align 8, !tbaa !5
  %748 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %747, i32 0, i32 12
  store double %746, ptr %748, align 8, !tbaa !46
  %749 = load ptr, ptr %4, align 8, !tbaa !5
  %750 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %749, i32 0, i32 16
  store i8 1, ptr %750, align 2, !tbaa !53
  %751 = load ptr, ptr %4, align 8, !tbaa !5
  %752 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %751, i32 0, i32 18
  %753 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %752, i32 0, i32 0
  store i32 3, ptr %753, align 8, !tbaa !9
  br label %4609

754:                                              ; preds = %182
  %755 = load ptr, ptr %4, align 8, !tbaa !5
  %756 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %755, i32 0, i32 16
  store i8 0, ptr %756, align 2, !tbaa !53
  br label %757

757:                                              ; preds = %754, %729
  %758 = load ptr, ptr %4, align 8, !tbaa !5
  %759 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %758, i32 0, i32 17
  %760 = load i8, ptr %759, align 1, !tbaa !34, !range !27, !noundef !28
  %761 = trunc i8 %760 to i1
  br i1 %761, label %762, label %767

762:                                              ; preds = %757
  %763 = load ptr, ptr %4, align 8, !tbaa !5
  %764 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %763, i32 0, i32 38
  store i64 8, ptr %764, align 8, !tbaa !33
  store i8 0, ptr %23, align 1, !tbaa !26
  %765 = load i8, ptr %23, align 1, !tbaa !26, !range !27, !noundef !28
  %766 = trunc i8 %765 to i1
  store i1 %766, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4735

767:                                              ; preds = %757
  br label %768

768:                                              ; preds = %4599, %767
  %769 = load ptr, ptr %4, align 8, !tbaa !5
  %770 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %769, i32 0, i32 11
  %771 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %770, i32 0, i32 4
  %772 = load ptr, ptr %771, align 8, !tbaa !24
  %773 = getelementptr inbounds double, ptr %772, i64 0
  %774 = load ptr, ptr %4, align 8, !tbaa !5
  %775 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %774, i32 0, i32 19
  %776 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %775, i32 0, i32 4
  %777 = load ptr, ptr %776, align 8, !tbaa !24
  %778 = getelementptr inbounds double, ptr %777, i64 0
  %779 = load i64, ptr %9, align 8, !tbaa !25
  %780 = sub nsw i64 %779, 1
  %781 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %780)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %773, i64 noundef 1, ptr noundef %778, i64 noundef 1, i64 noundef %781)
  %782 = load ptr, ptr %4, align 8, !tbaa !5
  %783 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef %782, ptr noundef %783)
  %784 = load ptr, ptr %4, align 8, !tbaa !5
  %785 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %784, i32 0, i32 7
  %786 = load double, ptr %785, align 8, !tbaa !42
  %787 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %786, double noundef 0.000000e+00)
  br i1 %787, label %788, label %789

788:                                              ; preds = %768
  br label %798

789:                                              ; preds = %768
  %790 = load ptr, ptr %4, align 8, !tbaa !5
  %791 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %790, i32 0, i32 15
  store i8 1, ptr %791, align 1, !tbaa !45
  %792 = load ptr, ptr %4, align 8, !tbaa !5
  %793 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %792, i32 0, i32 18
  %794 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %793, i32 0, i32 0
  store i32 4, ptr %794, align 8, !tbaa !9
  br label %4609

795:                                              ; preds = %189
  %796 = load ptr, ptr %4, align 8, !tbaa !5
  %797 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %796, i32 0, i32 15
  store i8 0, ptr %797, align 1, !tbaa !45
  br label %1231

798:                                              ; preds = %788
  %799 = load ptr, ptr %4, align 8, !tbaa !5
  %800 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %799, i32 0, i32 14
  store i8 1, ptr %800, align 8, !tbaa !50
  %801 = load ptr, ptr %4, align 8, !tbaa !5
  %802 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %801, i32 0, i32 18
  %803 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %802, i32 0, i32 0
  store i32 5, ptr %803, align 8, !tbaa !9
  br label %4609

804:                                              ; preds = %196
  %805 = load ptr, ptr %4, align 8, !tbaa !5
  %806 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %805, i32 0, i32 12
  %807 = load double, ptr %806, align 8, !tbaa !46
  %808 = load ptr, ptr %4, align 8, !tbaa !5
  %809 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %808, i32 0, i32 40
  store double %807, ptr %809, align 8, !tbaa !54
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %810

810:                                              ; preds = %1213, %804
  %811 = load i64, ptr %11, align 8, !tbaa !25
  %812 = load i64, ptr %9, align 8, !tbaa !25
  %813 = sub nsw i64 %812, 1
  %814 = icmp sgt i64 %811, %813
  br i1 %814, label %815, label %816

815:                                              ; preds = %810
  br label %1223

816:                                              ; preds = %810
  %817 = load ptr, ptr %4, align 8, !tbaa !5
  %818 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %817, i32 0, i32 11
  %819 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %818, i32 0, i32 4
  %820 = load ptr, ptr %819, align 8, !tbaa !24
  %821 = load i64, ptr %11, align 8, !tbaa !25
  %822 = getelementptr inbounds double, ptr %820, i64 %821
  %823 = load double, ptr %822, align 8, !tbaa !29
  store double %823, ptr %13, align 8, !tbaa !29
  store i8 0, ptr %16, align 1, !tbaa !26
  %824 = load ptr, ptr %4, align 8, !tbaa !5
  %825 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %824, i32 0, i32 31
  %826 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %825, i32 0, i32 4
  %827 = load ptr, ptr %826, align 8, !tbaa !24
  %828 = load i64, ptr %11, align 8, !tbaa !25
  %829 = getelementptr inbounds i8, ptr %827, i64 %828
  %830 = load i8, ptr %829, align 1, !tbaa !26, !range !27, !noundef !28
  %831 = trunc i8 %830 to i1
  br i1 %831, label %832, label %860

832:                                              ; preds = %816
  %833 = load i8, ptr %16, align 1, !tbaa !26, !range !27, !noundef !28
  %834 = trunc i8 %833 to i1
  br i1 %834, label %857, label %835

835:                                              ; preds = %832
  %836 = load double, ptr %13, align 8, !tbaa !29
  %837 = load ptr, ptr %4, align 8, !tbaa !5
  %838 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %837, i32 0, i32 7
  %839 = load double, ptr %838, align 8, !tbaa !42
  %840 = load ptr, ptr %4, align 8, !tbaa !5
  %841 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %840, i32 0, i32 8
  %842 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %841, i32 0, i32 4
  %843 = load ptr, ptr %842, align 8, !tbaa !24
  %844 = load i64, ptr %11, align 8, !tbaa !25
  %845 = getelementptr inbounds double, ptr %843, i64 %844
  %846 = load double, ptr %845, align 8, !tbaa !29
  %847 = fneg double %839
  %848 = call double @llvm.fmuladd.f64(double %847, double %846, double %836)
  %849 = load ptr, ptr %4, align 8, !tbaa !5
  %850 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %849, i32 0, i32 33
  %851 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %850, i32 0, i32 4
  %852 = load ptr, ptr %851, align 8, !tbaa !24
  %853 = load i64, ptr %11, align 8, !tbaa !25
  %854 = getelementptr inbounds double, ptr %852, i64 %853
  %855 = load double, ptr %854, align 8, !tbaa !29
  %856 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %848, double noundef %855)
  br label %857

857:                                              ; preds = %835, %832
  %858 = phi i1 [ true, %832 ], [ %856, %835 ]
  %859 = zext i1 %858 to i8
  store i8 %859, ptr %16, align 1, !tbaa !26
  br label %860

860:                                              ; preds = %857, %816
  %861 = load ptr, ptr %4, align 8, !tbaa !5
  %862 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %861, i32 0, i32 32
  %863 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %862, i32 0, i32 4
  %864 = load ptr, ptr %863, align 8, !tbaa !24
  %865 = load i64, ptr %11, align 8, !tbaa !25
  %866 = getelementptr inbounds i8, ptr %864, i64 %865
  %867 = load i8, ptr %866, align 1, !tbaa !26, !range !27, !noundef !28
  %868 = trunc i8 %867 to i1
  br i1 %868, label %869, label %896

869:                                              ; preds = %860
  %870 = load i8, ptr %16, align 1, !tbaa !26, !range !27, !noundef !28
  %871 = trunc i8 %870 to i1
  br i1 %871, label %893, label %872

872:                                              ; preds = %869
  %873 = load double, ptr %13, align 8, !tbaa !29
  %874 = load ptr, ptr %4, align 8, !tbaa !5
  %875 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %874, i32 0, i32 7
  %876 = load double, ptr %875, align 8, !tbaa !42
  %877 = load ptr, ptr %4, align 8, !tbaa !5
  %878 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %877, i32 0, i32 8
  %879 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %878, i32 0, i32 4
  %880 = load ptr, ptr %879, align 8, !tbaa !24
  %881 = load i64, ptr %11, align 8, !tbaa !25
  %882 = getelementptr inbounds double, ptr %880, i64 %881
  %883 = load double, ptr %882, align 8, !tbaa !29
  %884 = call double @llvm.fmuladd.f64(double %876, double %883, double %873)
  %885 = load ptr, ptr %4, align 8, !tbaa !5
  %886 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %885, i32 0, i32 34
  %887 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %886, i32 0, i32 4
  %888 = load ptr, ptr %887, align 8, !tbaa !24
  %889 = load i64, ptr %11, align 8, !tbaa !25
  %890 = getelementptr inbounds double, ptr %888, i64 %889
  %891 = load double, ptr %890, align 8, !tbaa !29
  %892 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %884, double noundef %891)
  br label %893

893:                                              ; preds = %872, %869
  %894 = phi i1 [ true, %869 ], [ %892, %872 ]
  %895 = zext i1 %894 to i8
  store i8 %895, ptr %16, align 1, !tbaa !26
  br label %896

896:                                              ; preds = %893, %860
  %897 = load i8, ptr %16, align 1, !tbaa !26, !range !27, !noundef !28
  %898 = trunc i8 %897 to i1
  br i1 %898, label %899, label %900

899:                                              ; preds = %896
  br label %1048

900:                                              ; preds = %896
  %901 = load double, ptr %13, align 8, !tbaa !29
  %902 = load ptr, ptr %4, align 8, !tbaa !5
  %903 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %902, i32 0, i32 7
  %904 = load double, ptr %903, align 8, !tbaa !42
  %905 = load ptr, ptr %4, align 8, !tbaa !5
  %906 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %905, i32 0, i32 8
  %907 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %906, i32 0, i32 4
  %908 = load ptr, ptr %907, align 8, !tbaa !24
  %909 = load i64, ptr %11, align 8, !tbaa !25
  %910 = getelementptr inbounds double, ptr %908, i64 %909
  %911 = load double, ptr %910, align 8, !tbaa !29
  %912 = fneg double %904
  %913 = call double @llvm.fmuladd.f64(double %912, double %911, double %901)
  %914 = load ptr, ptr %4, align 8, !tbaa !5
  %915 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %914, i32 0, i32 11
  %916 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %915, i32 0, i32 4
  %917 = load ptr, ptr %916, align 8, !tbaa !24
  %918 = load i64, ptr %11, align 8, !tbaa !25
  %919 = getelementptr inbounds double, ptr %917, i64 %918
  store double %913, ptr %919, align 8, !tbaa !29
  %920 = load ptr, ptr %4, align 8, !tbaa !5
  %921 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %920, i32 0, i32 18
  %922 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %921, i32 0, i32 0
  store i32 6, ptr %922, align 8, !tbaa !9
  br label %4609

923:                                              ; preds = %203
  %924 = load ptr, ptr %4, align 8, !tbaa !5
  %925 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %924, i32 0, i32 12
  %926 = load double, ptr %925, align 8, !tbaa !46
  %927 = load ptr, ptr %4, align 8, !tbaa !5
  %928 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %927, i32 0, i32 41
  store double %926, ptr %928, align 8, !tbaa !55
  %929 = load double, ptr %13, align 8, !tbaa !29
  %930 = load ptr, ptr %4, align 8, !tbaa !5
  %931 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %930, i32 0, i32 7
  %932 = load double, ptr %931, align 8, !tbaa !42
  %933 = fmul double 5.000000e-01, %932
  %934 = load ptr, ptr %4, align 8, !tbaa !5
  %935 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %934, i32 0, i32 8
  %936 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %935, i32 0, i32 4
  %937 = load ptr, ptr %936, align 8, !tbaa !24
  %938 = load i64, ptr %11, align 8, !tbaa !25
  %939 = getelementptr inbounds double, ptr %937, i64 %938
  %940 = load double, ptr %939, align 8, !tbaa !29
  %941 = fneg double %933
  %942 = call double @llvm.fmuladd.f64(double %941, double %940, double %929)
  %943 = load ptr, ptr %4, align 8, !tbaa !5
  %944 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %943, i32 0, i32 11
  %945 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %944, i32 0, i32 4
  %946 = load ptr, ptr %945, align 8, !tbaa !24
  %947 = load i64, ptr %11, align 8, !tbaa !25
  %948 = getelementptr inbounds double, ptr %946, i64 %947
  store double %942, ptr %948, align 8, !tbaa !29
  %949 = load ptr, ptr %4, align 8, !tbaa !5
  %950 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %949, i32 0, i32 18
  %951 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %950, i32 0, i32 0
  store i32 7, ptr %951, align 8, !tbaa !9
  br label %4609

952:                                              ; preds = %210
  %953 = load ptr, ptr %4, align 8, !tbaa !5
  %954 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %953, i32 0, i32 12
  %955 = load double, ptr %954, align 8, !tbaa !46
  %956 = load ptr, ptr %4, align 8, !tbaa !5
  %957 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %956, i32 0, i32 42
  store double %955, ptr %957, align 8, !tbaa !56
  %958 = load double, ptr %13, align 8, !tbaa !29
  %959 = load ptr, ptr %4, align 8, !tbaa !5
  %960 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %959, i32 0, i32 7
  %961 = load double, ptr %960, align 8, !tbaa !42
  %962 = fmul double 5.000000e-01, %961
  %963 = load ptr, ptr %4, align 8, !tbaa !5
  %964 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %963, i32 0, i32 8
  %965 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %964, i32 0, i32 4
  %966 = load ptr, ptr %965, align 8, !tbaa !24
  %967 = load i64, ptr %11, align 8, !tbaa !25
  %968 = getelementptr inbounds double, ptr %966, i64 %967
  %969 = load double, ptr %968, align 8, !tbaa !29
  %970 = call double @llvm.fmuladd.f64(double %962, double %969, double %958)
  %971 = load ptr, ptr %4, align 8, !tbaa !5
  %972 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %971, i32 0, i32 11
  %973 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %972, i32 0, i32 4
  %974 = load ptr, ptr %973, align 8, !tbaa !24
  %975 = load i64, ptr %11, align 8, !tbaa !25
  %976 = getelementptr inbounds double, ptr %974, i64 %975
  store double %970, ptr %976, align 8, !tbaa !29
  %977 = load ptr, ptr %4, align 8, !tbaa !5
  %978 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %977, i32 0, i32 18
  %979 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %978, i32 0, i32 0
  store i32 8, ptr %979, align 8, !tbaa !9
  br label %4609

980:                                              ; preds = %217
  %981 = load ptr, ptr %4, align 8, !tbaa !5
  %982 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %981, i32 0, i32 12
  %983 = load double, ptr %982, align 8, !tbaa !46
  %984 = load ptr, ptr %4, align 8, !tbaa !5
  %985 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %984, i32 0, i32 43
  store double %983, ptr %985, align 8, !tbaa !57
  %986 = load double, ptr %13, align 8, !tbaa !29
  %987 = load ptr, ptr %4, align 8, !tbaa !5
  %988 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %987, i32 0, i32 7
  %989 = load double, ptr %988, align 8, !tbaa !42
  %990 = load ptr, ptr %4, align 8, !tbaa !5
  %991 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %990, i32 0, i32 8
  %992 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %991, i32 0, i32 4
  %993 = load ptr, ptr %992, align 8, !tbaa !24
  %994 = load i64, ptr %11, align 8, !tbaa !25
  %995 = getelementptr inbounds double, ptr %993, i64 %994
  %996 = load double, ptr %995, align 8, !tbaa !29
  %997 = call double @llvm.fmuladd.f64(double %989, double %996, double %986)
  %998 = load ptr, ptr %4, align 8, !tbaa !5
  %999 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %998, i32 0, i32 11
  %1000 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %999, i32 0, i32 4
  %1001 = load ptr, ptr %1000, align 8, !tbaa !24
  %1002 = load i64, ptr %11, align 8, !tbaa !25
  %1003 = getelementptr inbounds double, ptr %1001, i64 %1002
  store double %997, ptr %1003, align 8, !tbaa !29
  %1004 = load ptr, ptr %4, align 8, !tbaa !5
  %1005 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1004, i32 0, i32 18
  %1006 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1005, i32 0, i32 0
  store i32 9, ptr %1006, align 8, !tbaa !9
  br label %4609

1007:                                             ; preds = %224
  %1008 = load ptr, ptr %4, align 8, !tbaa !5
  %1009 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1008, i32 0, i32 12
  %1010 = load double, ptr %1009, align 8, !tbaa !46
  %1011 = load ptr, ptr %4, align 8, !tbaa !5
  %1012 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1011, i32 0, i32 44
  store double %1010, ptr %1012, align 8, !tbaa !58
  %1013 = load ptr, ptr %4, align 8, !tbaa !5
  %1014 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1013, i32 0, i32 43
  %1015 = load double, ptr %1014, align 8, !tbaa !57
  %1016 = load ptr, ptr %4, align 8, !tbaa !5
  %1017 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1016, i32 0, i32 42
  %1018 = load double, ptr %1017, align 8, !tbaa !56
  %1019 = fsub double %1015, %1018
  %1020 = load ptr, ptr %4, align 8, !tbaa !5
  %1021 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1020, i32 0, i32 44
  %1022 = load double, ptr %1021, align 8, !tbaa !58
  %1023 = load ptr, ptr %4, align 8, !tbaa !5
  %1024 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1023, i32 0, i32 41
  %1025 = load double, ptr %1024, align 8, !tbaa !55
  %1026 = fsub double %1022, %1025
  %1027 = fneg double %1026
  %1028 = call double @llvm.fmuladd.f64(double 8.000000e+00, double %1019, double %1027)
  %1029 = load ptr, ptr %4, align 8, !tbaa !5
  %1030 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1029, i32 0, i32 7
  %1031 = load double, ptr %1030, align 8, !tbaa !42
  %1032 = fmul double 6.000000e+00, %1031
  %1033 = load ptr, ptr %4, align 8, !tbaa !5
  %1034 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1033, i32 0, i32 8
  %1035 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1034, i32 0, i32 4
  %1036 = load ptr, ptr %1035, align 8, !tbaa !24
  %1037 = load i64, ptr %11, align 8, !tbaa !25
  %1038 = getelementptr inbounds double, ptr %1036, i64 %1037
  %1039 = load double, ptr %1038, align 8, !tbaa !29
  %1040 = fmul double %1032, %1039
  %1041 = fdiv double %1028, %1040
  %1042 = load ptr, ptr %4, align 8, !tbaa !5
  %1043 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1042, i32 0, i32 13
  %1044 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1043, i32 0, i32 4
  %1045 = load ptr, ptr %1044, align 8, !tbaa !24
  %1046 = load i64, ptr %11, align 8, !tbaa !25
  %1047 = getelementptr inbounds double, ptr %1045, i64 %1046
  store double %1041, ptr %1047, align 8, !tbaa !29
  br label %1213

1048:                                             ; preds = %899
  %1049 = load double, ptr %13, align 8, !tbaa !29
  %1050 = load ptr, ptr %4, align 8, !tbaa !5
  %1051 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1050, i32 0, i32 7
  %1052 = load double, ptr %1051, align 8, !tbaa !42
  %1053 = load ptr, ptr %4, align 8, !tbaa !5
  %1054 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1053, i32 0, i32 8
  %1055 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1054, i32 0, i32 4
  %1056 = load ptr, ptr %1055, align 8, !tbaa !24
  %1057 = load i64, ptr %11, align 8, !tbaa !25
  %1058 = getelementptr inbounds double, ptr %1056, i64 %1057
  %1059 = load double, ptr %1058, align 8, !tbaa !29
  %1060 = fneg double %1052
  %1061 = call double @llvm.fmuladd.f64(double %1060, double %1059, double %1049)
  %1062 = load ptr, ptr %4, align 8, !tbaa !5
  %1063 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1062, i32 0, i32 45
  store double %1061, ptr %1063, align 8, !tbaa !59
  %1064 = load double, ptr %13, align 8, !tbaa !29
  %1065 = load ptr, ptr %4, align 8, !tbaa !5
  %1066 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1065, i32 0, i32 7
  %1067 = load double, ptr %1066, align 8, !tbaa !42
  %1068 = load ptr, ptr %4, align 8, !tbaa !5
  %1069 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1068, i32 0, i32 8
  %1070 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1069, i32 0, i32 4
  %1071 = load ptr, ptr %1070, align 8, !tbaa !24
  %1072 = load i64, ptr %11, align 8, !tbaa !25
  %1073 = getelementptr inbounds double, ptr %1071, i64 %1072
  %1074 = load double, ptr %1073, align 8, !tbaa !29
  %1075 = call double @llvm.fmuladd.f64(double %1067, double %1074, double %1064)
  %1076 = load ptr, ptr %4, align 8, !tbaa !5
  %1077 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1076, i32 0, i32 46
  store double %1075, ptr %1077, align 8, !tbaa !60
  %1078 = load ptr, ptr %4, align 8, !tbaa !5
  %1079 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1078, i32 0, i32 31
  %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 %11, align 8, !tbaa !25
  %1083 = getelementptr inbounds i8, ptr %1081, i64 %1082
  %1084 = load i8, ptr %1083, align 1, !tbaa !26, !range !27, !noundef !28
  %1085 = trunc i8 %1084 to i1
  br i1 %1085, label %1086, label %1108

1086:                                             ; preds = %1048
  %1087 = load ptr, ptr %4, align 8, !tbaa !5
  %1088 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1087, i32 0, i32 45
  %1089 = load double, ptr %1088, align 8, !tbaa !59
  %1090 = load ptr, ptr %4, align 8, !tbaa !5
  %1091 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1090, i32 0, i32 33
  %1092 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1091, i32 0, i32 4
  %1093 = load ptr, ptr %1092, align 8, !tbaa !24
  %1094 = load i64, ptr %11, align 8, !tbaa !25
  %1095 = getelementptr inbounds double, ptr %1093, i64 %1094
  %1096 = load double, ptr %1095, align 8, !tbaa !29
  %1097 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1089, double noundef %1096)
  br i1 %1097, label %1098, label %1108

1098:                                             ; preds = %1086
  %1099 = load ptr, ptr %4, align 8, !tbaa !5
  %1100 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1099, i32 0, i32 33
  %1101 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1100, i32 0, i32 4
  %1102 = load ptr, ptr %1101, align 8, !tbaa !24
  %1103 = load i64, ptr %11, align 8, !tbaa !25
  %1104 = getelementptr inbounds double, ptr %1102, i64 %1103
  %1105 = load double, ptr %1104, align 8, !tbaa !29
  %1106 = load ptr, ptr %4, align 8, !tbaa !5
  %1107 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1106, i32 0, i32 45
  store double %1105, ptr %1107, align 8, !tbaa !59
  br label %1108

1108:                                             ; preds = %1098, %1086, %1048
  %1109 = load ptr, ptr %4, align 8, !tbaa !5
  %1110 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1109, i32 0, i32 32
  %1111 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1110, i32 0, i32 4
  %1112 = load ptr, ptr %1111, align 8, !tbaa !24
  %1113 = load i64, ptr %11, align 8, !tbaa !25
  %1114 = getelementptr inbounds i8, ptr %1112, i64 %1113
  %1115 = load i8, ptr %1114, align 1, !tbaa !26, !range !27, !noundef !28
  %1116 = trunc i8 %1115 to i1
  br i1 %1116, label %1117, label %1139

1117:                                             ; preds = %1108
  %1118 = load ptr, ptr %4, align 8, !tbaa !5
  %1119 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1118, i32 0, i32 46
  %1120 = load double, ptr %1119, align 8, !tbaa !60
  %1121 = load ptr, ptr %4, align 8, !tbaa !5
  %1122 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1121, i32 0, i32 34
  %1123 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1122, i32 0, i32 4
  %1124 = load ptr, ptr %1123, align 8, !tbaa !24
  %1125 = load i64, ptr %11, align 8, !tbaa !25
  %1126 = getelementptr inbounds double, ptr %1124, i64 %1125
  %1127 = load double, ptr %1126, align 8, !tbaa !29
  %1128 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1120, double noundef %1127)
  br i1 %1128, label %1129, label %1139

1129:                                             ; preds = %1117
  %1130 = load ptr, ptr %4, align 8, !tbaa !5
  %1131 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1130, i32 0, i32 34
  %1132 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1131, i32 0, i32 4
  %1133 = load ptr, ptr %1132, align 8, !tbaa !24
  %1134 = load i64, ptr %11, align 8, !tbaa !25
  %1135 = getelementptr inbounds double, ptr %1133, i64 %1134
  %1136 = load double, ptr %1135, align 8, !tbaa !29
  %1137 = load ptr, ptr %4, align 8, !tbaa !5
  %1138 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1137, i32 0, i32 46
  store double %1136, ptr %1138, align 8, !tbaa !60
  br label %1139

1139:                                             ; preds = %1129, %1117, %1108
  %1140 = load ptr, ptr %4, align 8, !tbaa !5
  %1141 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1140, i32 0, i32 45
  %1142 = load double, ptr %1141, align 8, !tbaa !59
  %1143 = load ptr, ptr %4, align 8, !tbaa !5
  %1144 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1143, i32 0, i32 11
  %1145 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1144, i32 0, i32 4
  %1146 = load ptr, ptr %1145, align 8, !tbaa !24
  %1147 = load i64, ptr %11, align 8, !tbaa !25
  %1148 = getelementptr inbounds double, ptr %1146, i64 %1147
  store double %1142, ptr %1148, align 8, !tbaa !29
  %1149 = load ptr, ptr %4, align 8, !tbaa !5
  %1150 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1149, i32 0, i32 18
  %1151 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1150, i32 0, i32 0
  store i32 10, ptr %1151, align 8, !tbaa !9
  br label %4609

1152:                                             ; preds = %231
  %1153 = load ptr, ptr %4, align 8, !tbaa !5
  %1154 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1153, i32 0, i32 12
  %1155 = load double, ptr %1154, align 8, !tbaa !46
  %1156 = load ptr, ptr %4, align 8, !tbaa !5
  %1157 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1156, i32 0, i32 42
  store double %1155, ptr %1157, align 8, !tbaa !56
  %1158 = load ptr, ptr %4, align 8, !tbaa !5
  %1159 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1158, i32 0, i32 46
  %1160 = load double, ptr %1159, align 8, !tbaa !60
  %1161 = load ptr, ptr %4, align 8, !tbaa !5
  %1162 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1161, i32 0, i32 11
  %1163 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1162, i32 0, i32 4
  %1164 = load ptr, ptr %1163, align 8, !tbaa !24
  %1165 = load i64, ptr %11, align 8, !tbaa !25
  %1166 = getelementptr inbounds double, ptr %1164, i64 %1165
  store double %1160, ptr %1166, align 8, !tbaa !29
  %1167 = load ptr, ptr %4, align 8, !tbaa !5
  %1168 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1167, i32 0, i32 18
  %1169 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1168, i32 0, i32 0
  store i32 11, ptr %1169, align 8, !tbaa !9
  br label %4609

1170:                                             ; preds = %238
  %1171 = load ptr, ptr %4, align 8, !tbaa !5
  %1172 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1171, i32 0, i32 12
  %1173 = load double, ptr %1172, align 8, !tbaa !46
  %1174 = load ptr, ptr %4, align 8, !tbaa !5
  %1175 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1174, i32 0, i32 43
  store double %1173, ptr %1175, align 8, !tbaa !57
  %1176 = load ptr, ptr %4, align 8, !tbaa !5
  %1177 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1176, i32 0, i32 45
  %1178 = load double, ptr %1177, align 8, !tbaa !59
  %1179 = load ptr, ptr %4, align 8, !tbaa !5
  %1180 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1179, i32 0, i32 46
  %1181 = load double, ptr %1180, align 8, !tbaa !60
  %1182 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1178, double noundef %1181)
  br i1 %1182, label %1183, label %1205

1183:                                             ; preds = %1170
  %1184 = load ptr, ptr %4, align 8, !tbaa !5
  %1185 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1184, i32 0, i32 43
  %1186 = load double, ptr %1185, align 8, !tbaa !57
  %1187 = load ptr, ptr %4, align 8, !tbaa !5
  %1188 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1187, i32 0, i32 42
  %1189 = load double, ptr %1188, align 8, !tbaa !56
  %1190 = fsub double %1186, %1189
  %1191 = load ptr, ptr %4, align 8, !tbaa !5
  %1192 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1191, i32 0, i32 46
  %1193 = load double, ptr %1192, align 8, !tbaa !60
  %1194 = load ptr, ptr %4, align 8, !tbaa !5
  %1195 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1194, i32 0, i32 45
  %1196 = load double, ptr %1195, align 8, !tbaa !59
  %1197 = fsub double %1193, %1196
  %1198 = fdiv double %1190, %1197
  %1199 = load ptr, ptr %4, align 8, !tbaa !5
  %1200 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1199, i32 0, i32 13
  %1201 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1200, i32 0, i32 4
  %1202 = load ptr, ptr %1201, align 8, !tbaa !24
  %1203 = load i64, ptr %11, align 8, !tbaa !25
  %1204 = getelementptr inbounds double, ptr %1202, i64 %1203
  store double %1198, ptr %1204, align 8, !tbaa !29
  br label %1212

1205:                                             ; preds = %1170
  %1206 = load ptr, ptr %4, align 8, !tbaa !5
  %1207 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1206, i32 0, i32 13
  %1208 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1207, i32 0, i32 4
  %1209 = load ptr, ptr %1208, align 8, !tbaa !24
  %1210 = load i64, ptr %11, align 8, !tbaa !25
  %1211 = getelementptr inbounds double, ptr %1209, i64 %1210
  store double 0.000000e+00, ptr %1211, align 8, !tbaa !29
  br label %1212

1212:                                             ; preds = %1205, %1183
  br label %1213

1213:                                             ; preds = %1212, %1007
  %1214 = load double, ptr %13, align 8, !tbaa !29
  %1215 = load ptr, ptr %4, align 8, !tbaa !5
  %1216 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1215, i32 0, i32 11
  %1217 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1216, i32 0, i32 4
  %1218 = load ptr, ptr %1217, align 8, !tbaa !24
  %1219 = load i64, ptr %11, align 8, !tbaa !25
  %1220 = getelementptr inbounds double, ptr %1218, i64 %1219
  store double %1214, ptr %1220, align 8, !tbaa !29
  %1221 = load i64, ptr %11, align 8, !tbaa !25
  %1222 = add nsw i64 %1221, 1
  store i64 %1222, ptr %11, align 8, !tbaa !25
  br label %810

1223:                                             ; preds = %815
  %1224 = load ptr, ptr %4, align 8, !tbaa !5
  %1225 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1224, i32 0, i32 40
  %1226 = load double, ptr %1225, align 8, !tbaa !54
  %1227 = load ptr, ptr %4, align 8, !tbaa !5
  %1228 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1227, i32 0, i32 12
  store double %1226, ptr %1228, align 8, !tbaa !46
  %1229 = load ptr, ptr %4, align 8, !tbaa !5
  %1230 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1229, i32 0, i32 14
  store i8 0, ptr %1230, align 8, !tbaa !50
  br label %1231

1231:                                             ; preds = %1223, %795
  %1232 = load ptr, ptr %4, align 8, !tbaa !5
  %1233 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1232, i32 0, i32 12
  %1234 = load double, ptr %1233, align 8, !tbaa !46
  %1235 = load ptr, ptr %4, align 8, !tbaa !5
  %1236 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1235, i32 0, i32 26
  store double %1234, ptr %1236, align 8, !tbaa !51
  %1237 = load ptr, ptr %4, align 8, !tbaa !5
  %1238 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1237, i32 0, i32 20
  %1239 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1238, i32 0, i32 4
  %1240 = load ptr, ptr %1239, align 8, !tbaa !24
  %1241 = getelementptr inbounds double, ptr %1240, i64 0
  %1242 = load ptr, ptr %4, align 8, !tbaa !5
  %1243 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1242, i32 0, i32 13
  %1244 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1243, i32 0, i32 4
  %1245 = load ptr, ptr %1244, align 8, !tbaa !24
  %1246 = getelementptr inbounds double, ptr %1245, i64 0
  %1247 = load i64, ptr %9, align 8, !tbaa !25
  %1248 = sub nsw i64 %1247, 1
  %1249 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1248)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1241, i64 noundef 1, ptr noundef %1246, i64 noundef 1, i64 noundef %1249)
  %1250 = load ptr, ptr %4, align 8, !tbaa !5
  %1251 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1250, i32 0, i32 21
  %1252 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1251, i32 0, i32 4
  %1253 = load ptr, ptr %1252, align 8, !tbaa !24
  %1254 = getelementptr inbounds double, ptr %1253, i64 0
  %1255 = load ptr, ptr %4, align 8, !tbaa !5
  %1256 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1255, i32 0, i32 13
  %1257 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1256, i32 0, i32 4
  %1258 = load ptr, ptr %1257, align 8, !tbaa !24
  %1259 = getelementptr inbounds double, ptr %1258, i64 0
  %1260 = load i64, ptr %9, align 8, !tbaa !25
  %1261 = sub nsw i64 %1260, 1
  %1262 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1261)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1254, i64 noundef 1, ptr noundef %1259, i64 noundef 1, i64 noundef %1262)
  %1263 = load ptr, ptr %4, align 8, !tbaa !5
  %1264 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1263, i32 0, i32 19
  %1265 = load ptr, ptr %4, align 8, !tbaa !5
  %1266 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1265, i32 0, i32 21
  %1267 = load ptr, ptr %4, align 8, !tbaa !5
  %1268 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1267, i32 0, i32 33
  %1269 = load ptr, ptr %4, align 8, !tbaa !5
  %1270 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1269, i32 0, i32 31
  %1271 = load ptr, ptr %4, align 8, !tbaa !5
  %1272 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1271, i32 0, i32 34
  %1273 = load ptr, ptr %4, align 8, !tbaa !5
  %1274 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1273, i32 0, i32 32
  %1275 = load i64, ptr %9, align 8, !tbaa !25
  %1276 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl21projectgradientintobcEPNS_9ae_vectorES1_S1_S1_S1_S1_llPNS_8ae_stateE(ptr noundef %1264, ptr noundef %1266, ptr noundef %1268, ptr noundef %1270, ptr noundef %1272, ptr noundef %1274, i64 noundef %1275, i64 noundef 0, ptr noundef %1276)
  store double 0.000000e+00, ptr %19, align 8, !tbaa !29
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %1277

1277:                                             ; preds = %1302, %1231
  %1278 = load i64, ptr %11, align 8, !tbaa !25
  %1279 = load i64, ptr %9, align 8, !tbaa !25
  %1280 = sub nsw i64 %1279, 1
  %1281 = icmp sle i64 %1278, %1280
  br i1 %1281, label %1282, label %1305

1282:                                             ; preds = %1277
  %1283 = load double, ptr %19, align 8, !tbaa !29
  %1284 = load ptr, ptr %4, align 8, !tbaa !5
  %1285 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1284, i32 0, i32 21
  %1286 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1285, i32 0, i32 4
  %1287 = load ptr, ptr %1286, align 8, !tbaa !24
  %1288 = load i64, ptr %11, align 8, !tbaa !25
  %1289 = getelementptr inbounds double, ptr %1287, i64 %1288
  %1290 = load double, ptr %1289, align 8, !tbaa !29
  %1291 = load ptr, ptr %4, align 8, !tbaa !5
  %1292 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1291, i32 0, i32 8
  %1293 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1292, i32 0, i32 4
  %1294 = load ptr, ptr %1293, align 8, !tbaa !24
  %1295 = load i64, ptr %11, align 8, !tbaa !25
  %1296 = getelementptr inbounds double, ptr %1294, i64 %1295
  %1297 = load double, ptr %1296, align 8, !tbaa !29
  %1298 = fmul double %1290, %1297
  %1299 = load ptr, ptr %5, align 8, !tbaa !5
  %1300 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1298, ptr noundef %1299)
  %1301 = fadd double %1283, %1300
  store double %1301, ptr %19, align 8, !tbaa !29
  br label %1302

1302:                                             ; preds = %1282
  %1303 = load i64, ptr %11, align 8, !tbaa !25
  %1304 = add nsw i64 %1303, 1
  store i64 %1304, ptr %11, align 8, !tbaa !25
  br label %1277, !llvm.loop !61

1305:                                             ; preds = %1277
  %1306 = load double, ptr %19, align 8, !tbaa !29
  %1307 = load ptr, ptr %5, align 8, !tbaa !5
  %1308 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1306, ptr noundef %1307)
  store double %1308, ptr %19, align 8, !tbaa !29
  %1309 = load double, ptr %19, align 8, !tbaa !29
  %1310 = load ptr, ptr %5, align 8, !tbaa !5
  %1311 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1309, ptr noundef %1310)
  br i1 %1311, label %1312, label %1318

1312:                                             ; preds = %1305
  %1313 = load ptr, ptr %4, align 8, !tbaa !5
  %1314 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1313, i32 0, i32 26
  %1315 = load double, ptr %1314, align 8, !tbaa !51
  %1316 = load ptr, ptr %5, align 8, !tbaa !5
  %1317 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1315, ptr noundef %1316)
  br i1 %1317, label %1323, label %1318

1318:                                             ; preds = %1312, %1305
  %1319 = load ptr, ptr %4, align 8, !tbaa !5
  %1320 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1319, i32 0, i32 38
  store i64 -8, ptr %1320, align 8, !tbaa !33
  store i8 0, ptr %23, align 1, !tbaa !26
  %1321 = load i8, ptr %23, align 1, !tbaa !26, !range !27, !noundef !28
  %1322 = trunc i8 %1321 to i1
  store i1 %1322, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4735

1323:                                             ; preds = %1312
  %1324 = load ptr, ptr %4, align 8, !tbaa !5
  %1325 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1324, i32 0, i32 17
  %1326 = load i8, ptr %1325, align 1, !tbaa !34, !range !27, !noundef !28
  %1327 = trunc i8 %1326 to i1
  br i1 %1327, label %1328, label %1333

1328:                                             ; preds = %1323
  %1329 = load ptr, ptr %4, align 8, !tbaa !5
  %1330 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1329, i32 0, i32 38
  store i64 8, ptr %1330, align 8, !tbaa !33
  store i8 0, ptr %23, align 1, !tbaa !26
  %1331 = load i8, ptr %23, align 1, !tbaa !26, !range !27, !noundef !28
  %1332 = trunc i8 %1331 to i1
  store i1 %1332, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4735

1333:                                             ; preds = %1323
  %1334 = load double, ptr %19, align 8, !tbaa !29
  %1335 = load ptr, ptr %4, align 8, !tbaa !5
  %1336 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1335, i32 0, i32 1
  %1337 = load double, ptr %1336, align 8, !tbaa !62
  %1338 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1334, double noundef %1337)
  br i1 %1338, label %1339, label %1344

1339:                                             ; preds = %1333
  %1340 = load ptr, ptr %4, align 8, !tbaa !5
  %1341 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1340, i32 0, i32 38
  store i64 4, ptr %1341, align 8, !tbaa !33
  store i8 0, ptr %23, align 1, !tbaa !26
  %1342 = load i8, ptr %23, align 1, !tbaa !26, !range !27, !noundef !28
  %1343 = trunc i8 %1342 to i1
  store i1 %1343, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4735

1344:                                             ; preds = %1333
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %1345

1345:                                             ; preds = %1373, %1344
  %1346 = load i64, ptr %11, align 8, !tbaa !25
  %1347 = load i64, ptr %9, align 8, !tbaa !25
  %1348 = sub nsw i64 %1347, 1
  %1349 = icmp sle i64 %1346, %1348
  br i1 %1349, label %1350, label %1376

1350:                                             ; preds = %1345
  %1351 = load ptr, ptr %4, align 8, !tbaa !5
  %1352 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1351, i32 0, i32 49
  %1353 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1352, i32 0, i32 4
  %1354 = load ptr, ptr %1353, align 8, !tbaa !24
  %1355 = load i64, ptr %11, align 8, !tbaa !25
  %1356 = getelementptr inbounds double, ptr %1354, i64 %1355
  %1357 = load double, ptr %1356, align 8, !tbaa !29
  %1358 = fneg double %1357
  %1359 = load ptr, ptr %4, align 8, !tbaa !5
  %1360 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1359, i32 0, i32 21
  %1361 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1360, i32 0, i32 4
  %1362 = load ptr, ptr %1361, align 8, !tbaa !24
  %1363 = load i64, ptr %11, align 8, !tbaa !25
  %1364 = getelementptr inbounds double, ptr %1362, i64 %1363
  %1365 = load double, ptr %1364, align 8, !tbaa !29
  %1366 = fmul double %1358, %1365
  %1367 = load ptr, ptr %4, align 8, !tbaa !5
  %1368 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1367, i32 0, i32 29
  %1369 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1368, i32 0, i32 4
  %1370 = load ptr, ptr %1369, align 8, !tbaa !24
  %1371 = load i64, ptr %11, align 8, !tbaa !25
  %1372 = getelementptr inbounds double, ptr %1370, i64 %1371
  store double %1366, ptr %1372, align 8, !tbaa !29
  br label %1373

1373:                                             ; preds = %1350
  %1374 = load i64, ptr %11, align 8, !tbaa !25
  %1375 = add nsw i64 %1374, 1
  store i64 %1375, ptr %11, align 8, !tbaa !25
  br label %1345, !llvm.loop !63

1376:                                             ; preds = %1345
  store double 0.000000e+00, ptr %8, align 8, !tbaa !29
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %1377

1377:                                             ; preds = %1402, %1376
  %1378 = load i64, ptr %11, align 8, !tbaa !25
  %1379 = load i64, ptr %9, align 8, !tbaa !25
  %1380 = sub nsw i64 %1379, 1
  %1381 = icmp sle i64 %1378, %1380
  br i1 %1381, label %1382, label %1405

1382:                                             ; preds = %1377
  %1383 = load double, ptr %8, align 8, !tbaa !29
  %1384 = load ptr, ptr %4, align 8, !tbaa !5
  %1385 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1384, i32 0, i32 29
  %1386 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1385, i32 0, i32 4
  %1387 = load ptr, ptr %1386, align 8, !tbaa !24
  %1388 = load i64, ptr %11, align 8, !tbaa !25
  %1389 = getelementptr inbounds double, ptr %1387, i64 %1388
  %1390 = load double, ptr %1389, align 8, !tbaa !29
  %1391 = load ptr, ptr %4, align 8, !tbaa !5
  %1392 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1391, i32 0, i32 8
  %1393 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1392, i32 0, i32 4
  %1394 = load ptr, ptr %1393, align 8, !tbaa !24
  %1395 = load i64, ptr %11, align 8, !tbaa !25
  %1396 = getelementptr inbounds double, ptr %1394, i64 %1395
  %1397 = load double, ptr %1396, align 8, !tbaa !29
  %1398 = fdiv double %1390, %1397
  %1399 = load ptr, ptr %5, align 8, !tbaa !5
  %1400 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1398, ptr noundef %1399)
  %1401 = fadd double %1383, %1400
  store double %1401, ptr %8, align 8, !tbaa !29
  br label %1402

1402:                                             ; preds = %1382
  %1403 = load i64, ptr %11, align 8, !tbaa !25
  %1404 = add nsw i64 %1403, 1
  store i64 %1404, ptr %11, align 8, !tbaa !25
  br label %1377, !llvm.loop !64

1405:                                             ; preds = %1377
  %1406 = load double, ptr %8, align 8, !tbaa !29
  %1407 = load ptr, ptr %5, align 8, !tbaa !5
  %1408 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1406, ptr noundef %1407)
  store double %1408, ptr %8, align 8, !tbaa !29
  %1409 = load double, ptr %8, align 8, !tbaa !29
  %1410 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1409, double noundef 0.000000e+00)
  %1411 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1410, ptr noundef @.str.480, ptr noundef %1411)
  %1412 = load ptr, ptr %4, align 8, !tbaa !5
  %1413 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1412, i32 0, i32 30
  %1414 = load double, ptr %1413, align 8, !tbaa !48
  %1415 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1414, double noundef 0.000000e+00)
  br i1 %1415, label %1416, label %1424

1416:                                             ; preds = %1405
  %1417 = load ptr, ptr %4, align 8, !tbaa !5
  %1418 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1417, i32 0, i32 30
  %1419 = load double, ptr %1418, align 8, !tbaa !48
  %1420 = load double, ptr %8, align 8, !tbaa !29
  %1421 = fdiv double %1419, %1420
  %1422 = load ptr, ptr %4, align 8, !tbaa !5
  %1423 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1422, i32 0, i32 53
  store double %1421, ptr %1423, align 8, !tbaa !65
  br label %1429

1424:                                             ; preds = %1405
  %1425 = load double, ptr %8, align 8, !tbaa !29
  %1426 = fdiv double 1.000000e+00, %1425
  %1427 = load ptr, ptr %4, align 8, !tbaa !5
  %1428 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1427, i32 0, i32 53
  store double %1426, ptr %1428, align 8, !tbaa !65
  br label %1429

1429:                                             ; preds = %1424, %1416
  %1430 = load ptr, ptr %4, align 8, !tbaa !5
  %1431 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1430, i32 0, i32 19
  %1432 = load ptr, ptr %4, align 8, !tbaa !5
  %1433 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1432, i32 0, i32 29
  %1434 = load ptr, ptr %4, align 8, !tbaa !5
  %1435 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1434, i32 0, i32 33
  %1436 = load ptr, ptr %4, align 8, !tbaa !5
  %1437 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1436, i32 0, i32 31
  %1438 = load ptr, ptr %4, align 8, !tbaa !5
  %1439 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1438, i32 0, i32 34
  %1440 = load ptr, ptr %4, align 8, !tbaa !5
  %1441 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1440, i32 0, i32 32
  %1442 = load i64, ptr %9, align 8, !tbaa !25
  %1443 = load ptr, ptr %4, align 8, !tbaa !5
  %1444 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1443, i32 0, i32 54
  %1445 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl18calculatestepboundEPNS_9ae_vectorES1_dS1_S1_S1_S1_llPlPdS3_PNS_8ae_stateE(ptr noundef %1431, ptr noundef %1433, double noundef 1.000000e+00, ptr noundef %1435, ptr noundef %1437, ptr noundef %1439, ptr noundef %1441, i64 noundef %1442, i64 noundef 0, ptr noundef %6, ptr noundef %7, ptr noundef %1444, ptr noundef %1445)
  %1446 = load ptr, ptr %4, align 8, !tbaa !5
  %1447 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1446, i32 0, i32 54
  %1448 = load double, ptr %1447, align 8, !tbaa !66
  store double %1448, ptr %22, align 8, !tbaa !29
  %1449 = load i64, ptr %6, align 8, !tbaa !25
  %1450 = icmp slt i64 %1449, 0
  br i1 %1450, label %1456, label %1451

1451:                                             ; preds = %1429
  %1452 = load ptr, ptr %4, align 8, !tbaa !5
  %1453 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1452, i32 0, i32 54
  %1454 = load double, ptr %1453, align 8, !tbaa !66
  %1455 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1454, double noundef 1.000000e+50)
  br i1 %1455, label %1456, label %1459

1456:                                             ; preds = %1451, %1429
  %1457 = load ptr, ptr %4, align 8, !tbaa !5
  %1458 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1457, i32 0, i32 54
  store double 1.000000e+50, ptr %1458, align 8, !tbaa !66
  br label %1459

1459:                                             ; preds = %1456, %1451
  %1460 = load ptr, ptr %4, align 8, !tbaa !5
  %1461 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1460, i32 0, i32 6
  %1462 = load double, ptr %1461, align 8, !tbaa !67
  %1463 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1462, double noundef 0.000000e+00)
  br i1 %1463, label %1464, label %1477

1464:                                             ; preds = %1459
  %1465 = load ptr, ptr %4, align 8, !tbaa !5
  %1466 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1465, i32 0, i32 54
  %1467 = load double, ptr %1466, align 8, !tbaa !66
  %1468 = load ptr, ptr %4, align 8, !tbaa !5
  %1469 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1468, i32 0, i32 6
  %1470 = load double, ptr %1469, align 8, !tbaa !67
  %1471 = load double, ptr %8, align 8, !tbaa !29
  %1472 = fdiv double %1470, %1471
  %1473 = load ptr, ptr %5, align 8, !tbaa !5
  %1474 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %1467, double noundef %1472, ptr noundef %1473)
  %1475 = load ptr, ptr %4, align 8, !tbaa !5
  %1476 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1475, i32 0, i32 54
  store double %1474, ptr %1476, align 8, !tbaa !66
  br label %1477

1477:                                             ; preds = %1464, %1459
  %1478 = load ptr, ptr %4, align 8, !tbaa !5
  %1479 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1478, i32 0, i32 22
  %1480 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1479, i32 0, i32 4
  %1481 = load ptr, ptr %1480, align 8, !tbaa !24
  %1482 = getelementptr inbounds double, ptr %1481, i64 0
  %1483 = load ptr, ptr %4, align 8, !tbaa !5
  %1484 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1483, i32 0, i32 19
  %1485 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1484, i32 0, i32 4
  %1486 = load ptr, ptr %1485, align 8, !tbaa !24
  %1487 = getelementptr inbounds double, ptr %1486, i64 0
  %1488 = load i64, ptr %9, align 8, !tbaa !25
  %1489 = sub nsw i64 %1488, 1
  %1490 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1489)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1482, i64 noundef 1, ptr noundef %1487, i64 noundef 1, i64 noundef %1490)
  %1491 = load ptr, ptr %4, align 8, !tbaa !5
  %1492 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1491, i32 0, i32 24
  %1493 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1492, i32 0, i32 4
  %1494 = load ptr, ptr %1493, align 8, !tbaa !24
  %1495 = getelementptr inbounds double, ptr %1494, i64 0
  %1496 = load ptr, ptr %4, align 8, !tbaa !5
  %1497 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1496, i32 0, i32 21
  %1498 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1497, i32 0, i32 4
  %1499 = load ptr, ptr %1498, align 8, !tbaa !24
  %1500 = getelementptr inbounds double, ptr %1499, i64 0
  %1501 = load i64, ptr %9, align 8, !tbaa !25
  %1502 = sub nsw i64 %1501, 1
  %1503 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1502)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1495, i64 noundef 1, ptr noundef %1500, i64 noundef 1, i64 noundef %1503)
  %1504 = load ptr, ptr %4, align 8, !tbaa !5
  %1505 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1504, i32 0, i32 23
  %1506 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1505, i32 0, i32 4
  %1507 = load ptr, ptr %1506, align 8, !tbaa !24
  %1508 = getelementptr inbounds double, ptr %1507, i64 0
  %1509 = load ptr, ptr %4, align 8, !tbaa !5
  %1510 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1509, i32 0, i32 20
  %1511 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1510, i32 0, i32 4
  %1512 = load ptr, ptr %1511, align 8, !tbaa !24
  %1513 = getelementptr inbounds double, ptr %1512, i64 0
  %1514 = load i64, ptr %9, align 8, !tbaa !25
  %1515 = sub nsw i64 %1514, 1
  %1516 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1515)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1508, i64 noundef 1, ptr noundef %1513, i64 noundef 1, i64 noundef %1516)
  %1517 = load ptr, ptr %4, align 8, !tbaa !5
  %1518 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1517, i32 0, i32 26
  %1519 = load double, ptr %1518, align 8, !tbaa !51
  %1520 = load ptr, ptr %4, align 8, !tbaa !5
  %1521 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1520, i32 0, i32 27
  store double %1519, ptr %1521, align 8, !tbaa !68
  %1522 = load ptr, ptr %4, align 8, !tbaa !5
  %1523 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1522, i32 0, i32 52
  store i64 0, ptr %1523, align 8, !tbaa !69
  %1524 = load ptr, ptr %4, align 8, !tbaa !5
  %1525 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1524, i32 0, i32 66
  %1526 = load ptr, ptr %4, align 8, !tbaa !5
  %1527 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1526, i32 0, i32 8
  %1528 = load ptr, ptr %4, align 8, !tbaa !5
  %1529 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1528, i32 0, i32 68
  %1530 = load ptr, ptr %4, align 8, !tbaa !5
  %1531 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1530, i32 0, i32 22
  %1532 = load ptr, ptr %4, align 8, !tbaa !5
  %1533 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1532, i32 0, i32 27
  %1534 = load double, ptr %1533, align 8, !tbaa !68
  %1535 = load ptr, ptr %4, align 8, !tbaa !5
  %1536 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1535, i32 0, i32 23
  %1537 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl34smoothnessmonitorstartlinesearch1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_PNS_8ae_stateE(ptr noundef %1525, ptr noundef %1527, ptr noundef %1529, ptr noundef %1531, double noundef %1534, ptr noundef %1536, ptr noundef %1537)
  %1538 = load i64, ptr %9, align 8, !tbaa !25
  %1539 = load ptr, ptr %4, align 8, !tbaa !5
  %1540 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1539, i32 0, i32 22
  %1541 = load ptr, ptr %4, align 8, !tbaa !5
  %1542 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1541, i32 0, i32 27
  %1543 = load ptr, ptr %4, align 8, !tbaa !5
  %1544 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1543, i32 0, i32 24
  %1545 = load ptr, ptr %4, align 8, !tbaa !5
  %1546 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1545, i32 0, i32 29
  %1547 = load ptr, ptr %4, align 8, !tbaa !5
  %1548 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1547, i32 0, i32 53
  %1549 = load ptr, ptr %4, align 8, !tbaa !5
  %1550 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1549, i32 0, i32 54
  %1551 = load double, ptr %1550, align 8, !tbaa !66
  %1552 = load double, ptr @_ZN11alglib_implL10minbc_gtolE, align 8, !tbaa !29
  %1553 = load ptr, ptr %4, align 8, !tbaa !5
  %1554 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1553, i32 0, i32 51
  %1555 = load ptr, ptr %4, align 8, !tbaa !5
  %1556 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1555, i32 0, i32 55
  %1557 = load ptr, ptr %4, align 8, !tbaa !5
  %1558 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1557, i32 0, i32 56
  %1559 = load ptr, ptr %4, align 8, !tbaa !5
  %1560 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1559, i32 0, i32 52
  %1561 = 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 %1538, ptr noundef %1540, ptr noundef %1542, ptr noundef %1544, ptr noundef %1546, ptr noundef %1548, double noundef %1551, double noundef %1552, ptr noundef %17, ptr noundef %1554, ptr noundef %1556, ptr noundef %1558, ptr noundef %1560, ptr noundef %1561)
  br label %1562

1562:                                             ; preds = %2222, %1477
  %1563 = load ptr, ptr %4, align 8, !tbaa !5
  %1564 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1563, i32 0, i32 52
  %1565 = load i64, ptr %1564, align 8, !tbaa !69
  %1566 = icmp eq i64 %1565, 0
  br i1 %1566, label %1567, label %1568

1567:                                             ; preds = %1562
  br label %2247

1568:                                             ; preds = %1562
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %1569

1569:                                             ; preds = %1666, %1568
  %1570 = load i64, ptr %11, align 8, !tbaa !25
  %1571 = load i64, ptr %9, align 8, !tbaa !25
  %1572 = sub nsw i64 %1571, 1
  %1573 = icmp sle i64 %1570, %1572
  br i1 %1573, label %1574, label %1669

1574:                                             ; preds = %1569
  %1575 = load ptr, ptr %4, align 8, !tbaa !5
  %1576 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1575, i32 0, i32 22
  %1577 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1576, i32 0, i32 4
  %1578 = load ptr, ptr %1577, align 8, !tbaa !24
  %1579 = load i64, ptr %11, align 8, !tbaa !25
  %1580 = getelementptr inbounds double, ptr %1578, i64 %1579
  %1581 = load double, ptr %1580, align 8, !tbaa !29
  %1582 = load ptr, ptr %4, align 8, !tbaa !5
  %1583 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1582, i32 0, i32 11
  %1584 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1583, i32 0, i32 4
  %1585 = load ptr, ptr %1584, align 8, !tbaa !24
  %1586 = load i64, ptr %11, align 8, !tbaa !25
  %1587 = getelementptr inbounds double, ptr %1585, i64 %1586
  store double %1581, ptr %1587, align 8, !tbaa !29
  %1588 = load ptr, ptr %4, align 8, !tbaa !5
  %1589 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1588, i32 0, i32 31
  %1590 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1589, i32 0, i32 4
  %1591 = load ptr, ptr %1590, align 8, !tbaa !24
  %1592 = load i64, ptr %11, align 8, !tbaa !25
  %1593 = getelementptr inbounds i8, ptr %1591, i64 %1592
  %1594 = load i8, ptr %1593, align 1, !tbaa !26, !range !27, !noundef !28
  %1595 = trunc i8 %1594 to i1
  br i1 %1595, label %1596, label %1626

1596:                                             ; preds = %1574
  %1597 = load ptr, ptr %4, align 8, !tbaa !5
  %1598 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1597, i32 0, i32 22
  %1599 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1598, i32 0, i32 4
  %1600 = load ptr, ptr %1599, align 8, !tbaa !24
  %1601 = load i64, ptr %11, align 8, !tbaa !25
  %1602 = getelementptr inbounds double, ptr %1600, i64 %1601
  %1603 = load double, ptr %1602, align 8, !tbaa !29
  %1604 = load ptr, ptr %4, align 8, !tbaa !5
  %1605 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1604, i32 0, i32 33
  %1606 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1605, i32 0, i32 4
  %1607 = load ptr, ptr %1606, align 8, !tbaa !24
  %1608 = load i64, ptr %11, align 8, !tbaa !25
  %1609 = getelementptr inbounds double, ptr %1607, i64 %1608
  %1610 = load double, ptr %1609, align 8, !tbaa !29
  %1611 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1603, double noundef %1610)
  br i1 %1611, label %1612, label %1626

1612:                                             ; preds = %1596
  %1613 = load ptr, ptr %4, align 8, !tbaa !5
  %1614 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1613, i32 0, i32 33
  %1615 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1614, i32 0, i32 4
  %1616 = load ptr, ptr %1615, align 8, !tbaa !24
  %1617 = load i64, ptr %11, align 8, !tbaa !25
  %1618 = getelementptr inbounds double, ptr %1616, i64 %1617
  %1619 = load double, ptr %1618, align 8, !tbaa !29
  %1620 = load ptr, ptr %4, align 8, !tbaa !5
  %1621 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1620, i32 0, i32 11
  %1622 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1621, i32 0, i32 4
  %1623 = load ptr, ptr %1622, align 8, !tbaa !24
  %1624 = load i64, ptr %11, align 8, !tbaa !25
  %1625 = getelementptr inbounds double, ptr %1623, i64 %1624
  store double %1619, ptr %1625, align 8, !tbaa !29
  br label %1626

1626:                                             ; preds = %1612, %1596, %1574
  %1627 = load ptr, ptr %4, align 8, !tbaa !5
  %1628 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1627, i32 0, i32 32
  %1629 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1628, i32 0, i32 4
  %1630 = load ptr, ptr %1629, align 8, !tbaa !24
  %1631 = load i64, ptr %11, align 8, !tbaa !25
  %1632 = getelementptr inbounds i8, ptr %1630, i64 %1631
  %1633 = load i8, ptr %1632, align 1, !tbaa !26, !range !27, !noundef !28
  %1634 = trunc i8 %1633 to i1
  br i1 %1634, label %1635, label %1665

1635:                                             ; preds = %1626
  %1636 = load ptr, ptr %4, align 8, !tbaa !5
  %1637 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1636, i32 0, i32 22
  %1638 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1637, i32 0, i32 4
  %1639 = load ptr, ptr %1638, align 8, !tbaa !24
  %1640 = load i64, ptr %11, align 8, !tbaa !25
  %1641 = getelementptr inbounds double, ptr %1639, i64 %1640
  %1642 = load double, ptr %1641, align 8, !tbaa !29
  %1643 = load ptr, ptr %4, align 8, !tbaa !5
  %1644 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1643, i32 0, i32 34
  %1645 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1644, i32 0, i32 4
  %1646 = load ptr, ptr %1645, align 8, !tbaa !24
  %1647 = load i64, ptr %11, align 8, !tbaa !25
  %1648 = getelementptr inbounds double, ptr %1646, i64 %1647
  %1649 = load double, ptr %1648, align 8, !tbaa !29
  %1650 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1642, double noundef %1649)
  br i1 %1650, label %1651, label %1665

1651:                                             ; preds = %1635
  %1652 = load ptr, ptr %4, align 8, !tbaa !5
  %1653 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1652, i32 0, i32 34
  %1654 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1653, i32 0, i32 4
  %1655 = load ptr, ptr %1654, align 8, !tbaa !24
  %1656 = load i64, ptr %11, align 8, !tbaa !25
  %1657 = getelementptr inbounds double, ptr %1655, i64 %1656
  %1658 = load double, ptr %1657, align 8, !tbaa !29
  %1659 = load ptr, ptr %4, align 8, !tbaa !5
  %1660 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1659, i32 0, i32 11
  %1661 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1660, i32 0, i32 4
  %1662 = load ptr, ptr %1661, align 8, !tbaa !24
  %1663 = load i64, ptr %11, align 8, !tbaa !25
  %1664 = getelementptr inbounds double, ptr %1662, i64 %1663
  store double %1658, ptr %1664, align 8, !tbaa !29
  br label %1665

1665:                                             ; preds = %1651, %1635, %1626
  br label %1666

1666:                                             ; preds = %1665
  %1667 = load i64, ptr %11, align 8, !tbaa !25
  %1668 = add nsw i64 %1667, 1
  store i64 %1668, ptr %11, align 8, !tbaa !25
  br label %1569, !llvm.loop !70

1669:                                             ; preds = %1569
  %1670 = load ptr, ptr %4, align 8, !tbaa !5
  %1671 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef %1670, ptr noundef %1671)
  %1672 = load ptr, ptr %4, align 8, !tbaa !5
  %1673 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1672, i32 0, i32 7
  %1674 = load double, ptr %1673, align 8, !tbaa !42
  %1675 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1674, double noundef 0.000000e+00)
  br i1 %1675, label %1676, label %1677

1676:                                             ; preds = %1669
  br label %1692

1677:                                             ; preds = %1669
  %1678 = load ptr, ptr %4, align 8, !tbaa !5
  %1679 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1678, i32 0, i32 15
  store i8 1, ptr %1679, align 1, !tbaa !45
  %1680 = load ptr, ptr %4, align 8, !tbaa !5
  %1681 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1680, i32 0, i32 18
  %1682 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1681, i32 0, i32 0
  store i32 12, ptr %1682, align 8, !tbaa !9
  br label %4609

1683:                                             ; preds = %245
  %1684 = load ptr, ptr %4, align 8, !tbaa !5
  %1685 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1684, i32 0, i32 15
  store i8 0, ptr %1685, align 1, !tbaa !45
  %1686 = load ptr, ptr %4, align 8, !tbaa !5
  %1687 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1686, i32 0, i32 36
  %1688 = load i64, ptr %1687, align 8, !tbaa !36
  %1689 = add nsw i64 %1688, 1
  %1690 = load ptr, ptr %4, align 8, !tbaa !5
  %1691 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1690, i32 0, i32 36
  store i64 %1689, ptr %1691, align 8, !tbaa !36
  br label %2137

1692:                                             ; preds = %1676
  %1693 = load ptr, ptr %4, align 8, !tbaa !5
  %1694 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1693, i32 0, i32 14
  store i8 1, ptr %1694, align 8, !tbaa !50
  %1695 = load ptr, ptr %4, align 8, !tbaa !5
  %1696 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1695, i32 0, i32 18
  %1697 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1696, i32 0, i32 0
  store i32 13, ptr %1697, align 8, !tbaa !9
  br label %4609

1698:                                             ; preds = %252
  %1699 = load ptr, ptr %4, align 8, !tbaa !5
  %1700 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1699, i32 0, i32 12
  %1701 = load double, ptr %1700, align 8, !tbaa !46
  %1702 = load ptr, ptr %4, align 8, !tbaa !5
  %1703 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1702, i32 0, i32 40
  store double %1701, ptr %1703, align 8, !tbaa !54
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %1704

1704:                                             ; preds = %2119, %1698
  %1705 = load i64, ptr %11, align 8, !tbaa !25
  %1706 = load i64, ptr %9, align 8, !tbaa !25
  %1707 = sub nsw i64 %1706, 1
  %1708 = icmp sgt i64 %1705, %1707
  br i1 %1708, label %1709, label %1710

1709:                                             ; preds = %1704
  br label %2129

1710:                                             ; preds = %1704
  %1711 = load ptr, ptr %4, align 8, !tbaa !5
  %1712 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1711, i32 0, i32 11
  %1713 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1712, i32 0, i32 4
  %1714 = load ptr, ptr %1713, align 8, !tbaa !24
  %1715 = load i64, ptr %11, align 8, !tbaa !25
  %1716 = getelementptr inbounds double, ptr %1714, i64 %1715
  %1717 = load double, ptr %1716, align 8, !tbaa !29
  store double %1717, ptr %13, align 8, !tbaa !29
  store i8 0, ptr %16, align 1, !tbaa !26
  %1718 = load ptr, ptr %4, align 8, !tbaa !5
  %1719 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1718, i32 0, i32 31
  %1720 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1719, i32 0, i32 4
  %1721 = load ptr, ptr %1720, align 8, !tbaa !24
  %1722 = load i64, ptr %11, align 8, !tbaa !25
  %1723 = getelementptr inbounds i8, ptr %1721, i64 %1722
  %1724 = load i8, ptr %1723, align 1, !tbaa !26, !range !27, !noundef !28
  %1725 = trunc i8 %1724 to i1
  br i1 %1725, label %1726, label %1754

1726:                                             ; preds = %1710
  %1727 = load i8, ptr %16, align 1, !tbaa !26, !range !27, !noundef !28
  %1728 = trunc i8 %1727 to i1
  br i1 %1728, label %1751, label %1729

1729:                                             ; preds = %1726
  %1730 = load double, ptr %13, align 8, !tbaa !29
  %1731 = load ptr, ptr %4, align 8, !tbaa !5
  %1732 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1731, i32 0, i32 7
  %1733 = load double, ptr %1732, align 8, !tbaa !42
  %1734 = load ptr, ptr %4, align 8, !tbaa !5
  %1735 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1734, i32 0, i32 8
  %1736 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1735, i32 0, i32 4
  %1737 = load ptr, ptr %1736, align 8, !tbaa !24
  %1738 = load i64, ptr %11, align 8, !tbaa !25
  %1739 = getelementptr inbounds double, ptr %1737, i64 %1738
  %1740 = load double, ptr %1739, align 8, !tbaa !29
  %1741 = fneg double %1733
  %1742 = call double @llvm.fmuladd.f64(double %1741, double %1740, double %1730)
  %1743 = load ptr, ptr %4, align 8, !tbaa !5
  %1744 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1743, i32 0, i32 33
  %1745 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1744, i32 0, i32 4
  %1746 = load ptr, ptr %1745, align 8, !tbaa !24
  %1747 = load i64, ptr %11, align 8, !tbaa !25
  %1748 = getelementptr inbounds double, ptr %1746, i64 %1747
  %1749 = load double, ptr %1748, align 8, !tbaa !29
  %1750 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1742, double noundef %1749)
  br label %1751

1751:                                             ; preds = %1729, %1726
  %1752 = phi i1 [ true, %1726 ], [ %1750, %1729 ]
  %1753 = zext i1 %1752 to i8
  store i8 %1753, ptr %16, align 1, !tbaa !26
  br label %1754

1754:                                             ; preds = %1751, %1710
  %1755 = load ptr, ptr %4, align 8, !tbaa !5
  %1756 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1755, i32 0, i32 32
  %1757 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1756, i32 0, i32 4
  %1758 = load ptr, ptr %1757, align 8, !tbaa !24
  %1759 = load i64, ptr %11, align 8, !tbaa !25
  %1760 = getelementptr inbounds i8, ptr %1758, i64 %1759
  %1761 = load i8, ptr %1760, align 1, !tbaa !26, !range !27, !noundef !28
  %1762 = trunc i8 %1761 to i1
  br i1 %1762, label %1763, label %1790

1763:                                             ; preds = %1754
  %1764 = load i8, ptr %16, align 1, !tbaa !26, !range !27, !noundef !28
  %1765 = trunc i8 %1764 to i1
  br i1 %1765, label %1787, label %1766

1766:                                             ; preds = %1763
  %1767 = load double, ptr %13, align 8, !tbaa !29
  %1768 = load ptr, ptr %4, align 8, !tbaa !5
  %1769 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1768, i32 0, i32 7
  %1770 = load double, ptr %1769, align 8, !tbaa !42
  %1771 = load ptr, ptr %4, align 8, !tbaa !5
  %1772 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1771, i32 0, i32 8
  %1773 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1772, i32 0, i32 4
  %1774 = load ptr, ptr %1773, align 8, !tbaa !24
  %1775 = load i64, ptr %11, align 8, !tbaa !25
  %1776 = getelementptr inbounds double, ptr %1774, i64 %1775
  %1777 = load double, ptr %1776, align 8, !tbaa !29
  %1778 = call double @llvm.fmuladd.f64(double %1770, double %1777, double %1767)
  %1779 = load ptr, ptr %4, align 8, !tbaa !5
  %1780 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1779, i32 0, i32 34
  %1781 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1780, i32 0, i32 4
  %1782 = load ptr, ptr %1781, align 8, !tbaa !24
  %1783 = load i64, ptr %11, align 8, !tbaa !25
  %1784 = getelementptr inbounds double, ptr %1782, i64 %1783
  %1785 = load double, ptr %1784, align 8, !tbaa !29
  %1786 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1778, double noundef %1785)
  br label %1787

1787:                                             ; preds = %1766, %1763
  %1788 = phi i1 [ true, %1763 ], [ %1786, %1766 ]
  %1789 = zext i1 %1788 to i8
  store i8 %1789, ptr %16, align 1, !tbaa !26
  br label %1790

1790:                                             ; preds = %1787, %1754
  %1791 = load i8, ptr %16, align 1, !tbaa !26, !range !27, !noundef !28
  %1792 = trunc i8 %1791 to i1
  br i1 %1792, label %1793, label %1794

1793:                                             ; preds = %1790
  br label %1948

1794:                                             ; preds = %1790
  %1795 = load double, ptr %13, align 8, !tbaa !29
  %1796 = load ptr, ptr %4, align 8, !tbaa !5
  %1797 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1796, i32 0, i32 7
  %1798 = load double, ptr %1797, align 8, !tbaa !42
  %1799 = load ptr, ptr %4, align 8, !tbaa !5
  %1800 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1799, i32 0, i32 8
  %1801 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1800, i32 0, i32 4
  %1802 = load ptr, ptr %1801, align 8, !tbaa !24
  %1803 = load i64, ptr %11, align 8, !tbaa !25
  %1804 = getelementptr inbounds double, ptr %1802, i64 %1803
  %1805 = load double, ptr %1804, align 8, !tbaa !29
  %1806 = fneg double %1798
  %1807 = call double @llvm.fmuladd.f64(double %1806, double %1805, double %1795)
  %1808 = load ptr, ptr %4, align 8, !tbaa !5
  %1809 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1808, i32 0, i32 11
  %1810 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1809, i32 0, i32 4
  %1811 = load ptr, ptr %1810, align 8, !tbaa !24
  %1812 = load i64, ptr %11, align 8, !tbaa !25
  %1813 = getelementptr inbounds double, ptr %1811, i64 %1812
  store double %1807, ptr %1813, align 8, !tbaa !29
  %1814 = load ptr, ptr %4, align 8, !tbaa !5
  %1815 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1814, i32 0, i32 18
  %1816 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1815, i32 0, i32 0
  store i32 14, ptr %1816, align 8, !tbaa !9
  br label %4609

1817:                                             ; preds = %259
  %1818 = load ptr, ptr %4, align 8, !tbaa !5
  %1819 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1818, i32 0, i32 12
  %1820 = load double, ptr %1819, align 8, !tbaa !46
  %1821 = load ptr, ptr %4, align 8, !tbaa !5
  %1822 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1821, i32 0, i32 41
  store double %1820, ptr %1822, align 8, !tbaa !55
  %1823 = load double, ptr %13, align 8, !tbaa !29
  %1824 = load ptr, ptr %4, align 8, !tbaa !5
  %1825 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1824, i32 0, i32 7
  %1826 = load double, ptr %1825, align 8, !tbaa !42
  %1827 = fmul double 5.000000e-01, %1826
  %1828 = load ptr, ptr %4, align 8, !tbaa !5
  %1829 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1828, i32 0, i32 8
  %1830 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1829, i32 0, i32 4
  %1831 = load ptr, ptr %1830, align 8, !tbaa !24
  %1832 = load i64, ptr %11, align 8, !tbaa !25
  %1833 = getelementptr inbounds double, ptr %1831, i64 %1832
  %1834 = load double, ptr %1833, align 8, !tbaa !29
  %1835 = fneg double %1827
  %1836 = call double @llvm.fmuladd.f64(double %1835, double %1834, double %1823)
  %1837 = load ptr, ptr %4, align 8, !tbaa !5
  %1838 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1837, i32 0, i32 11
  %1839 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1838, i32 0, i32 4
  %1840 = load ptr, ptr %1839, align 8, !tbaa !24
  %1841 = load i64, ptr %11, align 8, !tbaa !25
  %1842 = getelementptr inbounds double, ptr %1840, i64 %1841
  store double %1836, ptr %1842, align 8, !tbaa !29
  %1843 = load ptr, ptr %4, align 8, !tbaa !5
  %1844 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1843, i32 0, i32 18
  %1845 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1844, i32 0, i32 0
  store i32 15, ptr %1845, align 8, !tbaa !9
  br label %4609

1846:                                             ; preds = %266
  %1847 = load ptr, ptr %4, align 8, !tbaa !5
  %1848 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1847, i32 0, i32 12
  %1849 = load double, ptr %1848, align 8, !tbaa !46
  %1850 = load ptr, ptr %4, align 8, !tbaa !5
  %1851 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1850, i32 0, i32 42
  store double %1849, ptr %1851, align 8, !tbaa !56
  %1852 = load double, ptr %13, align 8, !tbaa !29
  %1853 = load ptr, ptr %4, align 8, !tbaa !5
  %1854 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1853, i32 0, i32 7
  %1855 = load double, ptr %1854, align 8, !tbaa !42
  %1856 = fmul double 5.000000e-01, %1855
  %1857 = load ptr, ptr %4, align 8, !tbaa !5
  %1858 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1857, i32 0, i32 8
  %1859 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1858, i32 0, i32 4
  %1860 = load ptr, ptr %1859, align 8, !tbaa !24
  %1861 = load i64, ptr %11, align 8, !tbaa !25
  %1862 = getelementptr inbounds double, ptr %1860, i64 %1861
  %1863 = load double, ptr %1862, align 8, !tbaa !29
  %1864 = call double @llvm.fmuladd.f64(double %1856, double %1863, double %1852)
  %1865 = load ptr, ptr %4, align 8, !tbaa !5
  %1866 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1865, i32 0, i32 11
  %1867 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1866, i32 0, i32 4
  %1868 = load ptr, ptr %1867, align 8, !tbaa !24
  %1869 = load i64, ptr %11, align 8, !tbaa !25
  %1870 = getelementptr inbounds double, ptr %1868, i64 %1869
  store double %1864, ptr %1870, align 8, !tbaa !29
  %1871 = load ptr, ptr %4, align 8, !tbaa !5
  %1872 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1871, i32 0, i32 18
  %1873 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1872, i32 0, i32 0
  store i32 16, ptr %1873, align 8, !tbaa !9
  br label %4609

1874:                                             ; preds = %273
  %1875 = load ptr, ptr %4, align 8, !tbaa !5
  %1876 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1875, i32 0, i32 12
  %1877 = load double, ptr %1876, align 8, !tbaa !46
  %1878 = load ptr, ptr %4, align 8, !tbaa !5
  %1879 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1878, i32 0, i32 43
  store double %1877, ptr %1879, align 8, !tbaa !57
  %1880 = load double, ptr %13, align 8, !tbaa !29
  %1881 = load ptr, ptr %4, align 8, !tbaa !5
  %1882 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1881, i32 0, i32 7
  %1883 = load double, ptr %1882, align 8, !tbaa !42
  %1884 = load ptr, ptr %4, align 8, !tbaa !5
  %1885 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1884, i32 0, i32 8
  %1886 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1885, i32 0, i32 4
  %1887 = load ptr, ptr %1886, align 8, !tbaa !24
  %1888 = load i64, ptr %11, align 8, !tbaa !25
  %1889 = getelementptr inbounds double, ptr %1887, i64 %1888
  %1890 = load double, ptr %1889, align 8, !tbaa !29
  %1891 = call double @llvm.fmuladd.f64(double %1883, double %1890, double %1880)
  %1892 = load ptr, ptr %4, align 8, !tbaa !5
  %1893 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1892, i32 0, i32 11
  %1894 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1893, i32 0, i32 4
  %1895 = load ptr, ptr %1894, align 8, !tbaa !24
  %1896 = load i64, ptr %11, align 8, !tbaa !25
  %1897 = getelementptr inbounds double, ptr %1895, i64 %1896
  store double %1891, ptr %1897, align 8, !tbaa !29
  %1898 = load ptr, ptr %4, align 8, !tbaa !5
  %1899 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1898, i32 0, i32 18
  %1900 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1899, i32 0, i32 0
  store i32 17, ptr %1900, align 8, !tbaa !9
  br label %4609

1901:                                             ; preds = %280
  %1902 = load ptr, ptr %4, align 8, !tbaa !5
  %1903 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1902, i32 0, i32 12
  %1904 = load double, ptr %1903, align 8, !tbaa !46
  %1905 = load ptr, ptr %4, align 8, !tbaa !5
  %1906 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1905, i32 0, i32 44
  store double %1904, ptr %1906, align 8, !tbaa !58
  %1907 = load ptr, ptr %4, align 8, !tbaa !5
  %1908 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1907, i32 0, i32 43
  %1909 = load double, ptr %1908, align 8, !tbaa !57
  %1910 = load ptr, ptr %4, align 8, !tbaa !5
  %1911 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1910, i32 0, i32 42
  %1912 = load double, ptr %1911, align 8, !tbaa !56
  %1913 = fsub double %1909, %1912
  %1914 = load ptr, ptr %4, align 8, !tbaa !5
  %1915 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1914, i32 0, i32 44
  %1916 = load double, ptr %1915, align 8, !tbaa !58
  %1917 = load ptr, ptr %4, align 8, !tbaa !5
  %1918 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1917, i32 0, i32 41
  %1919 = load double, ptr %1918, align 8, !tbaa !55
  %1920 = fsub double %1916, %1919
  %1921 = fneg double %1920
  %1922 = call double @llvm.fmuladd.f64(double 8.000000e+00, double %1913, double %1921)
  %1923 = load ptr, ptr %4, align 8, !tbaa !5
  %1924 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1923, i32 0, i32 7
  %1925 = load double, ptr %1924, align 8, !tbaa !42
  %1926 = fmul double 6.000000e+00, %1925
  %1927 = load ptr, ptr %4, align 8, !tbaa !5
  %1928 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1927, i32 0, i32 8
  %1929 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1928, i32 0, i32 4
  %1930 = load ptr, ptr %1929, align 8, !tbaa !24
  %1931 = load i64, ptr %11, align 8, !tbaa !25
  %1932 = getelementptr inbounds double, ptr %1930, i64 %1931
  %1933 = load double, ptr %1932, align 8, !tbaa !29
  %1934 = fmul double %1926, %1933
  %1935 = fdiv double %1922, %1934
  %1936 = load ptr, ptr %4, align 8, !tbaa !5
  %1937 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1936, i32 0, i32 13
  %1938 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1937, i32 0, i32 4
  %1939 = load ptr, ptr %1938, align 8, !tbaa !24
  %1940 = load i64, ptr %11, align 8, !tbaa !25
  %1941 = getelementptr inbounds double, ptr %1939, i64 %1940
  store double %1935, ptr %1941, align 8, !tbaa !29
  %1942 = load ptr, ptr %4, align 8, !tbaa !5
  %1943 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1942, i32 0, i32 36
  %1944 = load i64, ptr %1943, align 8, !tbaa !36
  %1945 = add nsw i64 %1944, 4
  %1946 = load ptr, ptr %4, align 8, !tbaa !5
  %1947 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1946, i32 0, i32 36
  store i64 %1945, ptr %1947, align 8, !tbaa !36
  br label %2119

1948:                                             ; preds = %1793
  %1949 = load double, ptr %13, align 8, !tbaa !29
  %1950 = load ptr, ptr %4, align 8, !tbaa !5
  %1951 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1950, i32 0, i32 7
  %1952 = load double, ptr %1951, align 8, !tbaa !42
  %1953 = load ptr, ptr %4, align 8, !tbaa !5
  %1954 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1953, i32 0, i32 8
  %1955 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1954, i32 0, i32 4
  %1956 = load ptr, ptr %1955, align 8, !tbaa !24
  %1957 = load i64, ptr %11, align 8, !tbaa !25
  %1958 = getelementptr inbounds double, ptr %1956, i64 %1957
  %1959 = load double, ptr %1958, align 8, !tbaa !29
  %1960 = fneg double %1952
  %1961 = call double @llvm.fmuladd.f64(double %1960, double %1959, double %1949)
  %1962 = load ptr, ptr %4, align 8, !tbaa !5
  %1963 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1962, i32 0, i32 45
  store double %1961, ptr %1963, align 8, !tbaa !59
  %1964 = load double, ptr %13, align 8, !tbaa !29
  %1965 = load ptr, ptr %4, align 8, !tbaa !5
  %1966 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1965, i32 0, i32 7
  %1967 = load double, ptr %1966, align 8, !tbaa !42
  %1968 = load ptr, ptr %4, align 8, !tbaa !5
  %1969 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1968, i32 0, i32 8
  %1970 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1969, i32 0, i32 4
  %1971 = load ptr, ptr %1970, align 8, !tbaa !24
  %1972 = load i64, ptr %11, align 8, !tbaa !25
  %1973 = getelementptr inbounds double, ptr %1971, i64 %1972
  %1974 = load double, ptr %1973, align 8, !tbaa !29
  %1975 = call double @llvm.fmuladd.f64(double %1967, double %1974, double %1964)
  %1976 = load ptr, ptr %4, align 8, !tbaa !5
  %1977 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1976, i32 0, i32 46
  store double %1975, ptr %1977, align 8, !tbaa !60
  %1978 = load ptr, ptr %4, align 8, !tbaa !5
  %1979 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1978, i32 0, i32 31
  %1980 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1979, i32 0, i32 4
  %1981 = load ptr, ptr %1980, align 8, !tbaa !24
  %1982 = load i64, ptr %11, align 8, !tbaa !25
  %1983 = getelementptr inbounds i8, ptr %1981, i64 %1982
  %1984 = load i8, ptr %1983, align 1, !tbaa !26, !range !27, !noundef !28
  %1985 = trunc i8 %1984 to i1
  br i1 %1985, label %1986, label %2008

1986:                                             ; preds = %1948
  %1987 = load ptr, ptr %4, align 8, !tbaa !5
  %1988 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1987, i32 0, i32 45
  %1989 = load double, ptr %1988, align 8, !tbaa !59
  %1990 = load ptr, ptr %4, align 8, !tbaa !5
  %1991 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1990, i32 0, i32 33
  %1992 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1991, i32 0, i32 4
  %1993 = load ptr, ptr %1992, align 8, !tbaa !24
  %1994 = load i64, ptr %11, align 8, !tbaa !25
  %1995 = getelementptr inbounds double, ptr %1993, i64 %1994
  %1996 = load double, ptr %1995, align 8, !tbaa !29
  %1997 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1989, double noundef %1996)
  br i1 %1997, label %1998, label %2008

1998:                                             ; preds = %1986
  %1999 = load ptr, ptr %4, align 8, !tbaa !5
  %2000 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1999, i32 0, i32 33
  %2001 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2000, i32 0, i32 4
  %2002 = load ptr, ptr %2001, align 8, !tbaa !24
  %2003 = load i64, ptr %11, align 8, !tbaa !25
  %2004 = getelementptr inbounds double, ptr %2002, i64 %2003
  %2005 = load double, ptr %2004, align 8, !tbaa !29
  %2006 = load ptr, ptr %4, align 8, !tbaa !5
  %2007 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2006, i32 0, i32 45
  store double %2005, ptr %2007, align 8, !tbaa !59
  br label %2008

2008:                                             ; preds = %1998, %1986, %1948
  %2009 = load ptr, ptr %4, align 8, !tbaa !5
  %2010 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2009, i32 0, i32 32
  %2011 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2010, i32 0, i32 4
  %2012 = load ptr, ptr %2011, align 8, !tbaa !24
  %2013 = load i64, ptr %11, align 8, !tbaa !25
  %2014 = getelementptr inbounds i8, ptr %2012, i64 %2013
  %2015 = load i8, ptr %2014, align 1, !tbaa !26, !range !27, !noundef !28
  %2016 = trunc i8 %2015 to i1
  br i1 %2016, label %2017, label %2039

2017:                                             ; preds = %2008
  %2018 = load ptr, ptr %4, align 8, !tbaa !5
  %2019 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2018, i32 0, i32 46
  %2020 = load double, ptr %2019, align 8, !tbaa !60
  %2021 = load ptr, ptr %4, align 8, !tbaa !5
  %2022 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2021, i32 0, i32 34
  %2023 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2022, i32 0, i32 4
  %2024 = load ptr, ptr %2023, align 8, !tbaa !24
  %2025 = load i64, ptr %11, align 8, !tbaa !25
  %2026 = getelementptr inbounds double, ptr %2024, i64 %2025
  %2027 = load double, ptr %2026, align 8, !tbaa !29
  %2028 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2020, double noundef %2027)
  br i1 %2028, label %2029, label %2039

2029:                                             ; preds = %2017
  %2030 = load ptr, ptr %4, align 8, !tbaa !5
  %2031 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2030, i32 0, i32 34
  %2032 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2031, i32 0, i32 4
  %2033 = load ptr, ptr %2032, align 8, !tbaa !24
  %2034 = load i64, ptr %11, align 8, !tbaa !25
  %2035 = getelementptr inbounds double, ptr %2033, i64 %2034
  %2036 = load double, ptr %2035, align 8, !tbaa !29
  %2037 = load ptr, ptr %4, align 8, !tbaa !5
  %2038 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2037, i32 0, i32 46
  store double %2036, ptr %2038, align 8, !tbaa !60
  br label %2039

2039:                                             ; preds = %2029, %2017, %2008
  %2040 = load ptr, ptr %4, align 8, !tbaa !5
  %2041 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2040, i32 0, i32 45
  %2042 = load double, ptr %2041, align 8, !tbaa !59
  %2043 = load ptr, ptr %4, align 8, !tbaa !5
  %2044 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2043, i32 0, i32 11
  %2045 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2044, i32 0, i32 4
  %2046 = load ptr, ptr %2045, align 8, !tbaa !24
  %2047 = load i64, ptr %11, align 8, !tbaa !25
  %2048 = getelementptr inbounds double, ptr %2046, i64 %2047
  store double %2042, ptr %2048, align 8, !tbaa !29
  %2049 = load ptr, ptr %4, align 8, !tbaa !5
  %2050 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2049, i32 0, i32 18
  %2051 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %2050, i32 0, i32 0
  store i32 18, ptr %2051, align 8, !tbaa !9
  br label %4609

2052:                                             ; preds = %287
  %2053 = load ptr, ptr %4, align 8, !tbaa !5
  %2054 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2053, i32 0, i32 12
  %2055 = load double, ptr %2054, align 8, !tbaa !46
  %2056 = load ptr, ptr %4, align 8, !tbaa !5
  %2057 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2056, i32 0, i32 42
  store double %2055, ptr %2057, align 8, !tbaa !56
  %2058 = load ptr, ptr %4, align 8, !tbaa !5
  %2059 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2058, i32 0, i32 46
  %2060 = load double, ptr %2059, align 8, !tbaa !60
  %2061 = load ptr, ptr %4, align 8, !tbaa !5
  %2062 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2061, i32 0, i32 11
  %2063 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2062, i32 0, i32 4
  %2064 = load ptr, ptr %2063, align 8, !tbaa !24
  %2065 = load i64, ptr %11, align 8, !tbaa !25
  %2066 = getelementptr inbounds double, ptr %2064, i64 %2065
  store double %2060, ptr %2066, align 8, !tbaa !29
  %2067 = load ptr, ptr %4, align 8, !tbaa !5
  %2068 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2067, i32 0, i32 18
  %2069 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %2068, i32 0, i32 0
  store i32 19, ptr %2069, align 8, !tbaa !9
  br label %4609

2070:                                             ; preds = %294
  %2071 = load ptr, ptr %4, align 8, !tbaa !5
  %2072 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2071, i32 0, i32 12
  %2073 = load double, ptr %2072, align 8, !tbaa !46
  %2074 = load ptr, ptr %4, align 8, !tbaa !5
  %2075 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2074, i32 0, i32 43
  store double %2073, ptr %2075, align 8, !tbaa !57
  %2076 = load ptr, ptr %4, align 8, !tbaa !5
  %2077 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2076, i32 0, i32 45
  %2078 = load double, ptr %2077, align 8, !tbaa !59
  %2079 = load ptr, ptr %4, align 8, !tbaa !5
  %2080 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2079, i32 0, i32 46
  %2081 = load double, ptr %2080, align 8, !tbaa !60
  %2082 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %2078, double noundef %2081)
  br i1 %2082, label %2083, label %2105

2083:                                             ; preds = %2070
  %2084 = load ptr, ptr %4, align 8, !tbaa !5
  %2085 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2084, i32 0, i32 43
  %2086 = load double, ptr %2085, align 8, !tbaa !57
  %2087 = load ptr, ptr %4, align 8, !tbaa !5
  %2088 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2087, i32 0, i32 42
  %2089 = load double, ptr %2088, align 8, !tbaa !56
  %2090 = fsub double %2086, %2089
  %2091 = load ptr, ptr %4, align 8, !tbaa !5
  %2092 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2091, i32 0, i32 46
  %2093 = load double, ptr %2092, align 8, !tbaa !60
  %2094 = load ptr, ptr %4, align 8, !tbaa !5
  %2095 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2094, i32 0, i32 45
  %2096 = load double, ptr %2095, align 8, !tbaa !59
  %2097 = fsub double %2093, %2096
  %2098 = fdiv double %2090, %2097
  %2099 = load ptr, ptr %4, align 8, !tbaa !5
  %2100 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2099, i32 0, i32 13
  %2101 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2100, i32 0, i32 4
  %2102 = load ptr, ptr %2101, align 8, !tbaa !24
  %2103 = load i64, ptr %11, align 8, !tbaa !25
  %2104 = getelementptr inbounds double, ptr %2102, i64 %2103
  store double %2098, ptr %2104, align 8, !tbaa !29
  br label %2112

2105:                                             ; preds = %2070
  %2106 = load ptr, ptr %4, align 8, !tbaa !5
  %2107 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2106, i32 0, i32 13
  %2108 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2107, i32 0, i32 4
  %2109 = load ptr, ptr %2108, align 8, !tbaa !24
  %2110 = load i64, ptr %11, align 8, !tbaa !25
  %2111 = getelementptr inbounds double, ptr %2109, i64 %2110
  store double 0.000000e+00, ptr %2111, align 8, !tbaa !29
  br label %2112

2112:                                             ; preds = %2105, %2083
  %2113 = load ptr, ptr %4, align 8, !tbaa !5
  %2114 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2113, i32 0, i32 36
  %2115 = load i64, ptr %2114, align 8, !tbaa !36
  %2116 = add nsw i64 %2115, 2
  %2117 = load ptr, ptr %4, align 8, !tbaa !5
  %2118 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2117, i32 0, i32 36
  store i64 %2116, ptr %2118, align 8, !tbaa !36
  br label %2119

2119:                                             ; preds = %2112, %1901
  %2120 = load double, ptr %13, align 8, !tbaa !29
  %2121 = load ptr, ptr %4, align 8, !tbaa !5
  %2122 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2121, i32 0, i32 11
  %2123 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2122, i32 0, i32 4
  %2124 = load ptr, ptr %2123, align 8, !tbaa !24
  %2125 = load i64, ptr %11, align 8, !tbaa !25
  %2126 = getelementptr inbounds double, ptr %2124, i64 %2125
  store double %2120, ptr %2126, align 8, !tbaa !29
  %2127 = load i64, ptr %11, align 8, !tbaa !25
  %2128 = add nsw i64 %2127, 1
  store i64 %2128, ptr %11, align 8, !tbaa !25
  br label %1704

2129:                                             ; preds = %1709
  %2130 = load ptr, ptr %4, align 8, !tbaa !5
  %2131 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2130, i32 0, i32 40
  %2132 = load double, ptr %2131, align 8, !tbaa !54
  %2133 = load ptr, ptr %4, align 8, !tbaa !5
  %2134 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2133, i32 0, i32 12
  store double %2132, ptr %2134, align 8, !tbaa !46
  %2135 = load ptr, ptr %4, align 8, !tbaa !5
  %2136 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2135, i32 0, i32 14
  store i8 0, ptr %2136, align 8, !tbaa !50
  br label %2137

2137:                                             ; preds = %2129, %1683
  %2138 = load ptr, ptr %4, align 8, !tbaa !5
  %2139 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2138, i32 0, i32 66
  %2140 = load ptr, ptr %4, align 8, !tbaa !5
  %2141 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2140, i32 0, i32 8
  %2142 = load ptr, ptr %4, align 8, !tbaa !5
  %2143 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2142, i32 0, i32 68
  %2144 = load ptr, ptr %4, align 8, !tbaa !5
  %2145 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2144, i32 0, i32 29
  %2146 = load ptr, ptr %4, align 8, !tbaa !5
  %2147 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2146, i32 0, i32 53
  %2148 = load double, ptr %2147, align 8, !tbaa !65
  %2149 = load ptr, ptr %4, align 8, !tbaa !5
  %2150 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2149, i32 0, i32 11
  %2151 = load ptr, ptr %4, align 8, !tbaa !5
  %2152 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2151, i32 0, i32 12
  %2153 = load double, ptr %2152, align 8, !tbaa !46
  %2154 = load ptr, ptr %4, align 8, !tbaa !5
  %2155 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2154, i32 0, i32 13
  %2156 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl31smoothnessmonitorenqueuepoint1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_dS3_PNS_8ae_stateE(ptr noundef %2139, ptr noundef %2141, ptr noundef %2143, ptr noundef %2145, double noundef %2148, ptr noundef %2150, double noundef %2153, ptr noundef %2155, ptr noundef %2156)
  %2157 = load ptr, ptr %4, align 8, !tbaa !5
  %2158 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2157, i32 0, i32 12
  %2159 = load ptr, ptr %4, align 8, !tbaa !5
  %2160 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2159, i32 0, i32 13
  %2161 = load i64, ptr %9, align 8, !tbaa !25
  %2162 = load ptr, ptr %4, align 8, !tbaa !5
  %2163 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2162, i32 0, i32 57
  %2164 = load double, ptr %2163, align 8, !tbaa !71
  %2165 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl12trimfunctionEPdPNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef %2158, ptr noundef %2160, i64 noundef %2161, double noundef %2164, ptr noundef %2165)
  %2166 = load ptr, ptr %4, align 8, !tbaa !5
  %2167 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2166, i32 0, i32 12
  %2168 = load double, ptr %2167, align 8, !tbaa !46
  %2169 = load ptr, ptr %4, align 8, !tbaa !5
  %2170 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2169, i32 0, i32 27
  store double %2168, ptr %2170, align 8, !tbaa !68
  %2171 = load ptr, ptr %4, align 8, !tbaa !5
  %2172 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2171, i32 0, i32 24
  %2173 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2172, i32 0, i32 4
  %2174 = load ptr, ptr %2173, align 8, !tbaa !24
  %2175 = getelementptr inbounds double, ptr %2174, i64 0
  %2176 = load ptr, ptr %4, align 8, !tbaa !5
  %2177 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2176, i32 0, i32 13
  %2178 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2177, i32 0, i32 4
  %2179 = load ptr, ptr %2178, align 8, !tbaa !24
  %2180 = getelementptr inbounds double, ptr %2179, i64 0
  %2181 = load i64, ptr %9, align 8, !tbaa !25
  %2182 = sub nsw i64 %2181, 1
  %2183 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2182)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2175, i64 noundef 1, ptr noundef %2180, i64 noundef 1, i64 noundef %2183)
  %2184 = load ptr, ptr %4, align 8, !tbaa !5
  %2185 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2184, i32 0, i32 23
  %2186 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2185, i32 0, i32 4
  %2187 = load ptr, ptr %2186, align 8, !tbaa !24
  %2188 = getelementptr inbounds double, ptr %2187, i64 0
  %2189 = load ptr, ptr %4, align 8, !tbaa !5
  %2190 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2189, i32 0, i32 13
  %2191 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2190, i32 0, i32 4
  %2192 = load ptr, ptr %2191, align 8, !tbaa !24
  %2193 = getelementptr inbounds double, ptr %2192, i64 0
  %2194 = load i64, ptr %9, align 8, !tbaa !25
  %2195 = sub nsw i64 %2194, 1
  %2196 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2195)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2188, i64 noundef 1, ptr noundef %2193, i64 noundef 1, i64 noundef %2196)
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %2197

2197:                                             ; preds = %2219, %2137
  %2198 = load i64, ptr %11, align 8, !tbaa !25
  %2199 = load i64, ptr %9, align 8, !tbaa !25
  %2200 = sub nsw i64 %2199, 1
  %2201 = icmp sle i64 %2198, %2200
  br i1 %2201, label %2202, label %2222

2202:                                             ; preds = %2197
  %2203 = load ptr, ptr %4, align 8, !tbaa !5
  %2204 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2203, i32 0, i32 29
  %2205 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2204, i32 0, i32 4
  %2206 = load ptr, ptr %2205, align 8, !tbaa !24
  %2207 = load i64, ptr %11, align 8, !tbaa !25
  %2208 = getelementptr inbounds double, ptr %2206, i64 %2207
  %2209 = load double, ptr %2208, align 8, !tbaa !29
  %2210 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2209, double noundef 0.000000e+00)
  br i1 %2210, label %2211, label %2218

2211:                                             ; preds = %2202
  %2212 = load ptr, ptr %4, align 8, !tbaa !5
  %2213 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2212, i32 0, i32 24
  %2214 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2213, i32 0, i32 4
  %2215 = load ptr, ptr %2214, align 8, !tbaa !24
  %2216 = load i64, ptr %11, align 8, !tbaa !25
  %2217 = getelementptr inbounds double, ptr %2215, i64 %2216
  store double 0.000000e+00, ptr %2217, align 8, !tbaa !29
  br label %2218

2218:                                             ; preds = %2211, %2202
  br label %2219

2219:                                             ; preds = %2218
  %2220 = load i64, ptr %11, align 8, !tbaa !25
  %2221 = add nsw i64 %2220, 1
  store i64 %2221, ptr %11, align 8, !tbaa !25
  br label %2197, !llvm.loop !72

2222:                                             ; preds = %2197
  %2223 = load i64, ptr %9, align 8, !tbaa !25
  %2224 = load ptr, ptr %4, align 8, !tbaa !5
  %2225 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2224, i32 0, i32 22
  %2226 = load ptr, ptr %4, align 8, !tbaa !5
  %2227 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2226, i32 0, i32 27
  %2228 = load ptr, ptr %4, align 8, !tbaa !5
  %2229 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2228, i32 0, i32 24
  %2230 = load ptr, ptr %4, align 8, !tbaa !5
  %2231 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2230, i32 0, i32 29
  %2232 = load ptr, ptr %4, align 8, !tbaa !5
  %2233 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2232, i32 0, i32 53
  %2234 = load ptr, ptr %4, align 8, !tbaa !5
  %2235 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2234, i32 0, i32 54
  %2236 = load double, ptr %2235, align 8, !tbaa !66
  %2237 = load double, ptr @_ZN11alglib_implL10minbc_gtolE, align 8, !tbaa !29
  %2238 = load ptr, ptr %4, align 8, !tbaa !5
  %2239 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2238, i32 0, i32 51
  %2240 = load ptr, ptr %4, align 8, !tbaa !5
  %2241 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2240, i32 0, i32 55
  %2242 = load ptr, ptr %4, align 8, !tbaa !5
  %2243 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2242, i32 0, i32 56
  %2244 = load ptr, ptr %4, align 8, !tbaa !5
  %2245 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2244, i32 0, i32 52
  %2246 = 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 %2223, ptr noundef %2225, ptr noundef %2227, ptr noundef %2229, ptr noundef %2231, ptr noundef %2233, double noundef %2236, double noundef %2237, ptr noundef %17, ptr noundef %2239, ptr noundef %2241, ptr noundef %2243, ptr noundef %2245, ptr noundef %2246)
  br label %1562

2247:                                             ; preds = %1567
  %2248 = load ptr, ptr %4, align 8, !tbaa !5
  %2249 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2248, i32 0, i32 66
  %2250 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl35smoothnessmonitorfinalizelinesearchEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef %2249, ptr noundef %2250)
  %2251 = load ptr, ptr %4, align 8, !tbaa !5
  %2252 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2251, i32 0, i32 27
  %2253 = load double, ptr %2252, align 8, !tbaa !68
  store double %2253, ptr %13, align 8, !tbaa !29
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %2254

2254:                                             ; preds = %2269, %2247
  %2255 = load i64, ptr %11, align 8, !tbaa !25
  %2256 = load i64, ptr %9, align 8, !tbaa !25
  %2257 = sub nsw i64 %2256, 1
  %2258 = icmp sle i64 %2255, %2257
  br i1 %2258, label %2259, label %2272

2259:                                             ; preds = %2254
  %2260 = load double, ptr %13, align 8, !tbaa !29
  %2261 = load ptr, ptr %4, align 8, !tbaa !5
  %2262 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2261, i32 0, i32 23
  %2263 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2262, i32 0, i32 4
  %2264 = load ptr, ptr %2263, align 8, !tbaa !24
  %2265 = load i64, ptr %11, align 8, !tbaa !25
  %2266 = getelementptr inbounds double, ptr %2264, i64 %2265
  %2267 = load double, ptr %2266, align 8, !tbaa !29
  %2268 = call double @llvm.fmuladd.f64(double 1.000000e-01, double %2260, double %2267)
  store double %2268, ptr %13, align 8, !tbaa !29
  br label %2269

2269:                                             ; preds = %2259
  %2270 = load i64, ptr %11, align 8, !tbaa !25
  %2271 = add nsw i64 %2270, 1
  store i64 %2271, ptr %11, align 8, !tbaa !25
  br label %2254, !llvm.loop !73

2272:                                             ; preds = %2254
  %2273 = load double, ptr %13, align 8, !tbaa !29
  %2274 = load ptr, ptr %5, align 8, !tbaa !5
  %2275 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %2273, ptr noundef %2274)
  br i1 %2275, label %2281, label %2276

2276:                                             ; preds = %2272
  %2277 = load ptr, ptr %4, align 8, !tbaa !5
  %2278 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2277, i32 0, i32 38
  store i64 -8, ptr %2278, align 8, !tbaa !33
  store i8 0, ptr %23, align 1, !tbaa !26
  %2279 = load i8, ptr %23, align 1, !tbaa !26, !range !27, !noundef !28
  %2280 = trunc i8 %2279 to i1
  store i1 %2280, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4735

2281:                                             ; preds = %2272
  %2282 = load i64, ptr %17, align 8, !tbaa !25
  %2283 = icmp ne i64 %2282, 1
  br i1 %2283, label %2284, label %2351

2284:                                             ; preds = %2281
  %2285 = load i64, ptr %17, align 8, !tbaa !25
  %2286 = icmp ne i64 %2285, 5
  br i1 %2286, label %2287, label %2351

2287:                                             ; preds = %2284
  %2288 = load i64, ptr %6, align 8, !tbaa !25
  %2289 = icmp sge i64 %2288, 0
  br i1 %2289, label %2290, label %2345

2290:                                             ; preds = %2287
  %2291 = load double, ptr %8, align 8, !tbaa !29
  %2292 = load ptr, ptr %4, align 8, !tbaa !5
  %2293 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2292, i32 0, i32 54
  %2294 = load double, ptr %2293, align 8, !tbaa !66
  %2295 = fmul double %2291, %2294
  %2296 = load double, ptr @_ZN11alglib_implL24minbc_maxnonmonotoniclenE, align 8, !tbaa !29
  %2297 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %2295, double noundef %2296)
  br i1 %2297, label %2298, label %2345

2298:                                             ; preds = %2290
  %2299 = load ptr, ptr %4, align 8, !tbaa !5
  %2300 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2299, i32 0, i32 58
  %2301 = load i64, ptr %2300, align 8, !tbaa !49
  %2302 = icmp sgt i64 %2301, 0
  br i1 %2302, label %2303, label %2345

2303:                                             ; preds = %2298
  %2304 = load ptr, ptr %4, align 8, !tbaa !5
  %2305 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2304, i32 0, i32 54
  %2306 = load double, ptr %2305, align 8, !tbaa !66
  %2307 = load ptr, ptr %4, align 8, !tbaa !5
  %2308 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2307, i32 0, i32 53
  store double %2306, ptr %2308, align 8, !tbaa !65
  store i64 5, ptr %17, align 8, !tbaa !25
  %2309 = load ptr, ptr %4, align 8, !tbaa !5
  %2310 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2309, i32 0, i32 54
  %2311 = load double, ptr %2310, align 8, !tbaa !66
  store double %2311, ptr %13, align 8, !tbaa !29
  %2312 = load ptr, ptr %4, align 8, !tbaa !5
  %2313 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2312, i32 0, i32 22
  %2314 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2313, i32 0, i32 4
  %2315 = load ptr, ptr %2314, align 8, !tbaa !24
  %2316 = getelementptr inbounds double, ptr %2315, i64 0
  %2317 = load ptr, ptr %4, align 8, !tbaa !5
  %2318 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2317, i32 0, i32 19
  %2319 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2318, i32 0, i32 4
  %2320 = load ptr, ptr %2319, align 8, !tbaa !24
  %2321 = getelementptr inbounds double, ptr %2320, i64 0
  %2322 = load i64, ptr %9, align 8, !tbaa !25
  %2323 = sub nsw i64 %2322, 1
  %2324 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2323)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2316, i64 noundef 1, ptr noundef %2321, i64 noundef 1, i64 noundef %2324)
  %2325 = load ptr, ptr %4, align 8, !tbaa !5
  %2326 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2325, i32 0, i32 22
  %2327 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2326, i32 0, i32 4
  %2328 = load ptr, ptr %2327, align 8, !tbaa !24
  %2329 = getelementptr inbounds double, ptr %2328, i64 0
  %2330 = load ptr, ptr %4, align 8, !tbaa !5
  %2331 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2330, i32 0, i32 29
  %2332 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2331, i32 0, i32 4
  %2333 = load ptr, ptr %2332, align 8, !tbaa !24
  %2334 = getelementptr inbounds double, ptr %2333, i64 0
  %2335 = load i64, ptr %9, align 8, !tbaa !25
  %2336 = sub nsw i64 %2335, 1
  %2337 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2336)
  %2338 = load double, ptr %13, align 8, !tbaa !29
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %2329, i64 noundef 1, ptr noundef %2334, i64 noundef 1, i64 noundef %2337, double noundef %2338)
  %2339 = load ptr, ptr %4, align 8, !tbaa !5
  %2340 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2339, i32 0, i32 58
  %2341 = load i64, ptr %2340, align 8, !tbaa !49
  %2342 = sub nsw i64 %2341, 1
  %2343 = load ptr, ptr %4, align 8, !tbaa !5
  %2344 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2343, i32 0, i32 58
  store i64 %2342, ptr %2344, align 8, !tbaa !49
  br label %2350

2345:                                             ; preds = %2298, %2290, %2287
  %2346 = load ptr, ptr %4, align 8, !tbaa !5
  %2347 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2346, i32 0, i32 38
  store i64 7, ptr %2347, align 8, !tbaa !33
  store i8 0, ptr %23, align 1, !tbaa !26
  %2348 = load i8, ptr %23, align 1, !tbaa !26, !range !27, !noundef !28
  %2349 = trunc i8 %2348 to i1
  store i1 %2349, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4735

2350:                                             ; preds = %2303
  br label %2351

2351:                                             ; preds = %2350, %2284, %2281
  %2352 = load ptr, ptr %4, align 8, !tbaa !5
  %2353 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2352, i32 0, i32 17
  %2354 = load i8, ptr %2353, align 1, !tbaa !34, !range !27, !noundef !28
  %2355 = trunc i8 %2354 to i1
  br i1 %2355, label %2356, label %2361

2356:                                             ; preds = %2351
  %2357 = load ptr, ptr %4, align 8, !tbaa !5
  %2358 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2357, i32 0, i32 38
  store i64 8, ptr %2358, align 8, !tbaa !33
  store i8 0, ptr %23, align 1, !tbaa !26
  %2359 = load i8, ptr %23, align 1, !tbaa !26, !range !27, !noundef !28
  %2360 = trunc i8 %2359 to i1
  store i1 %2360, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4735

2361:                                             ; preds = %2351
  %2362 = load i64, ptr %17, align 8, !tbaa !25
  %2363 = icmp ne i64 %2362, 5
  br i1 %2363, label %2372, label %2364

2364:                                             ; preds = %2361
  %2365 = load ptr, ptr %4, align 8, !tbaa !5
  %2366 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2365, i32 0, i32 53
  %2367 = load double, ptr %2366, align 8, !tbaa !65
  %2368 = load ptr, ptr %4, align 8, !tbaa !5
  %2369 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2368, i32 0, i32 54
  %2370 = load double, ptr %2369, align 8, !tbaa !66
  %2371 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2367, double noundef %2370)
  br label %2372

2372:                                             ; preds = %2364, %2361
  %2373 = phi i1 [ true, %2361 ], [ %2371, %2364 ]
  %2374 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %2373, ptr noundef @.str.480, ptr noundef %2374)
  %2375 = load ptr, ptr %4, align 8, !tbaa !5
  %2376 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2375, i32 0, i32 22
  %2377 = load ptr, ptr %4, align 8, !tbaa !5
  %2378 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2377, i32 0, i32 19
  %2379 = load ptr, ptr %4, align 8, !tbaa !5
  %2380 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2379, i32 0, i32 33
  %2381 = load ptr, ptr %4, align 8, !tbaa !5
  %2382 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2381, i32 0, i32 31
  %2383 = load ptr, ptr %4, align 8, !tbaa !5
  %2384 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2383, i32 0, i32 34
  %2385 = load ptr, ptr %4, align 8, !tbaa !5
  %2386 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2385, i32 0, i32 32
  %2387 = load i64, ptr %9, align 8, !tbaa !25
  %2388 = load i64, ptr %6, align 8, !tbaa !25
  %2389 = load double, ptr %7, align 8, !tbaa !29
  %2390 = load ptr, ptr %4, align 8, !tbaa !5
  %2391 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2390, i32 0, i32 53
  %2392 = load double, ptr %2391, align 8, !tbaa !65
  %2393 = load double, ptr %22, align 8, !tbaa !29
  %2394 = load ptr, ptr %5, align 8, !tbaa !5
  %2395 = call noundef i64 @_ZN11alglib_impl22postprocessboundedstepEPNS_9ae_vectorES1_S1_S1_S1_S1_llldddPNS_8ae_stateE(ptr noundef %2376, ptr noundef %2378, ptr noundef %2380, ptr noundef %2382, ptr noundef %2384, ptr noundef %2386, i64 noundef %2387, i64 noundef 0, i64 noundef %2388, double noundef %2389, double noundef %2392, double noundef %2393, ptr noundef %2394)
  %2396 = load ptr, ptr %4, align 8, !tbaa !5
  %2397 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2396, i32 0, i32 26
  %2398 = load double, ptr %2397, align 8, !tbaa !51
  %2399 = load ptr, ptr %4, align 8, !tbaa !5
  %2400 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2399, i32 0, i32 28
  store double %2398, ptr %2400, align 8, !tbaa !74
  %2401 = load ptr, ptr %4, align 8, !tbaa !5
  %2402 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2401, i32 0, i32 27
  %2403 = load double, ptr %2402, align 8, !tbaa !68
  %2404 = load ptr, ptr %4, align 8, !tbaa !5
  %2405 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2404, i32 0, i32 26
  store double %2403, ptr %2405, align 8, !tbaa !51
  %2406 = load ptr, ptr %4, align 8, !tbaa !5
  %2407 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2406, i32 0, i32 25
  %2408 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2407, i32 0, i32 4
  %2409 = load ptr, ptr %2408, align 8, !tbaa !24
  %2410 = getelementptr inbounds double, ptr %2409, i64 0
  %2411 = load ptr, ptr %4, align 8, !tbaa !5
  %2412 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2411, i32 0, i32 19
  %2413 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2412, i32 0, i32 4
  %2414 = load ptr, ptr %2413, align 8, !tbaa !24
  %2415 = getelementptr inbounds double, ptr %2414, i64 0
  %2416 = load i64, ptr %9, align 8, !tbaa !25
  %2417 = sub nsw i64 %2416, 1
  %2418 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2417)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2410, i64 noundef 1, ptr noundef %2415, i64 noundef 1, i64 noundef %2418)
  %2419 = load ptr, ptr %4, align 8, !tbaa !5
  %2420 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2419, i32 0, i32 19
  %2421 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2420, i32 0, i32 4
  %2422 = load ptr, ptr %2421, align 8, !tbaa !24
  %2423 = getelementptr inbounds double, ptr %2422, i64 0
  %2424 = load ptr, ptr %4, align 8, !tbaa !5
  %2425 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2424, i32 0, i32 22
  %2426 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2425, i32 0, i32 4
  %2427 = load ptr, ptr %2426, align 8, !tbaa !24
  %2428 = getelementptr inbounds double, ptr %2427, i64 0
  %2429 = load i64, ptr %9, align 8, !tbaa !25
  %2430 = sub nsw i64 %2429, 1
  %2431 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2430)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2423, i64 noundef 1, ptr noundef %2428, i64 noundef 1, i64 noundef %2431)
  %2432 = load ptr, ptr %4, align 8, !tbaa !5
  %2433 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2432, i32 0, i32 21
  %2434 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2433, i32 0, i32 4
  %2435 = load ptr, ptr %2434, align 8, !tbaa !24
  %2436 = getelementptr inbounds double, ptr %2435, i64 0
  %2437 = load ptr, ptr %4, align 8, !tbaa !5
  %2438 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2437, i32 0, i32 24
  %2439 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2438, i32 0, i32 4
  %2440 = load ptr, ptr %2439, align 8, !tbaa !24
  %2441 = getelementptr inbounds double, ptr %2440, i64 0
  %2442 = load i64, ptr %9, align 8, !tbaa !25
  %2443 = sub nsw i64 %2442, 1
  %2444 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2443)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2436, i64 noundef 1, ptr noundef %2441, i64 noundef 1, i64 noundef %2444)
  %2445 = load ptr, ptr %4, align 8, !tbaa !5
  %2446 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2445, i32 0, i32 20
  %2447 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2446, i32 0, i32 4
  %2448 = load ptr, ptr %2447, align 8, !tbaa !24
  %2449 = getelementptr inbounds double, ptr %2448, i64 0
  %2450 = load ptr, ptr %4, align 8, !tbaa !5
  %2451 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2450, i32 0, i32 23
  %2452 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2451, i32 0, i32 4
  %2453 = load ptr, ptr %2452, align 8, !tbaa !24
  %2454 = getelementptr inbounds double, ptr %2453, i64 0
  %2455 = load i64, ptr %9, align 8, !tbaa !25
  %2456 = sub nsw i64 %2455, 1
  %2457 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2456)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2449, i64 noundef 1, ptr noundef %2454, i64 noundef 1, i64 noundef %2457)
  %2458 = load ptr, ptr %4, align 8, !tbaa !5
  %2459 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2458, i32 0, i32 5
  %2460 = load i8, ptr %2459, align 8, !tbaa !52, !range !27, !noundef !28
  %2461 = trunc i8 %2460 to i1
  br i1 %2461, label %2463, label %2462

2462:                                             ; preds = %2372
  br label %2487

2463:                                             ; preds = %2372
  %2464 = load ptr, ptr %4, align 8, !tbaa !5
  %2465 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2464, i32 0, i32 11
  %2466 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2465, i32 0, i32 4
  %2467 = load ptr, ptr %2466, align 8, !tbaa !24
  %2468 = getelementptr inbounds double, ptr %2467, i64 0
  %2469 = load ptr, ptr %4, align 8, !tbaa !5
  %2470 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2469, i32 0, i32 19
  %2471 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2470, i32 0, i32 4
  %2472 = load ptr, ptr %2471, align 8, !tbaa !24
  %2473 = getelementptr inbounds double, ptr %2472, i64 0
  %2474 = load i64, ptr %9, align 8, !tbaa !25
  %2475 = sub nsw i64 %2474, 1
  %2476 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2475)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2468, i64 noundef 1, ptr noundef %2473, i64 noundef 1, i64 noundef %2476)
  %2477 = load ptr, ptr %4, align 8, !tbaa !5
  %2478 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef %2477, ptr noundef %2478)
  %2479 = load ptr, ptr %4, align 8, !tbaa !5
  %2480 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2479, i32 0, i32 16
  store i8 1, ptr %2480, align 2, !tbaa !53
  %2481 = load ptr, ptr %4, align 8, !tbaa !5
  %2482 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2481, i32 0, i32 18
  %2483 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %2482, i32 0, i32 0
  store i32 20, ptr %2483, align 8, !tbaa !9
  br label %4609

2484:                                             ; preds = %301
  %2485 = load ptr, ptr %4, align 8, !tbaa !5
  %2486 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2485, i32 0, i32 16
  store i8 0, ptr %2486, align 2, !tbaa !53
  br label %2487

2487:                                             ; preds = %2484, %2462
  %2488 = load ptr, ptr %4, align 8, !tbaa !5
  %2489 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2488, i32 0, i32 35
  %2490 = load i64, ptr %2489, align 8, !tbaa !35
  %2491 = add nsw i64 %2490, 1
  %2492 = load ptr, ptr %4, align 8, !tbaa !5
  %2493 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2492, i32 0, i32 35
  store i64 %2491, ptr %2493, align 8, !tbaa !35
  %2494 = load i64, ptr %17, align 8, !tbaa !25
  %2495 = icmp eq i64 %2494, 1
  br i1 %2495, label %2496, label %2582

2496:                                             ; preds = %2487
  store double 0.000000e+00, ptr %13, align 8, !tbaa !29
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %2497

2497:                                             ; preds = %2530, %2496
  %2498 = load i64, ptr %11, align 8, !tbaa !25
  %2499 = load i64, ptr %9, align 8, !tbaa !25
  %2500 = sub nsw i64 %2499, 1
  %2501 = icmp sle i64 %2498, %2500
  br i1 %2501, label %2502, label %2533

2502:                                             ; preds = %2497
  %2503 = load double, ptr %13, align 8, !tbaa !29
  %2504 = load ptr, ptr %4, align 8, !tbaa !5
  %2505 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2504, i32 0, i32 19
  %2506 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2505, i32 0, i32 4
  %2507 = load ptr, ptr %2506, align 8, !tbaa !24
  %2508 = load i64, ptr %11, align 8, !tbaa !25
  %2509 = getelementptr inbounds double, ptr %2507, i64 %2508
  %2510 = load double, ptr %2509, align 8, !tbaa !29
  %2511 = load ptr, ptr %4, align 8, !tbaa !5
  %2512 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2511, i32 0, i32 25
  %2513 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2512, i32 0, i32 4
  %2514 = load ptr, ptr %2513, align 8, !tbaa !24
  %2515 = load i64, ptr %11, align 8, !tbaa !25
  %2516 = getelementptr inbounds double, ptr %2514, i64 %2515
  %2517 = load double, ptr %2516, align 8, !tbaa !29
  %2518 = fsub double %2510, %2517
  %2519 = load ptr, ptr %4, align 8, !tbaa !5
  %2520 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2519, i32 0, i32 8
  %2521 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2520, i32 0, i32 4
  %2522 = load ptr, ptr %2521, align 8, !tbaa !24
  %2523 = load i64, ptr %11, align 8, !tbaa !25
  %2524 = getelementptr inbounds double, ptr %2522, i64 %2523
  %2525 = load double, ptr %2524, align 8, !tbaa !29
  %2526 = fdiv double %2518, %2525
  %2527 = load ptr, ptr %5, align 8, !tbaa !5
  %2528 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %2526, ptr noundef %2527)
  %2529 = fadd double %2503, %2528
  store double %2529, ptr %13, align 8, !tbaa !29
  br label %2530

2530:                                             ; preds = %2502
  %2531 = load i64, ptr %11, align 8, !tbaa !25
  %2532 = add nsw i64 %2531, 1
  store i64 %2532, ptr %11, align 8, !tbaa !25
  br label %2497, !llvm.loop !75

2533:                                             ; preds = %2497
  %2534 = load double, ptr %13, align 8, !tbaa !29
  %2535 = load ptr, ptr %5, align 8, !tbaa !5
  %2536 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %2534, ptr noundef %2535)
  store double %2536, ptr %13, align 8, !tbaa !29
  %2537 = load double, ptr %13, align 8, !tbaa !29
  %2538 = load ptr, ptr %4, align 8, !tbaa !5
  %2539 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2538, i32 0, i32 3
  %2540 = load double, ptr %2539, align 8, !tbaa !76
  %2541 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %2537, double noundef %2540)
  br i1 %2541, label %2542, label %2547

2542:                                             ; preds = %2533
  %2543 = load ptr, ptr %4, align 8, !tbaa !5
  %2544 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2543, i32 0, i32 38
  store i64 2, ptr %2544, align 8, !tbaa !33
  store i8 0, ptr %23, align 1, !tbaa !26
  %2545 = load i8, ptr %23, align 1, !tbaa !26, !range !27, !noundef !28
  %2546 = trunc i8 %2545 to i1
  store i1 %2546, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4735

2547:                                             ; preds = %2533
  %2548 = load ptr, ptr %4, align 8, !tbaa !5
  %2549 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2548, i32 0, i32 28
  %2550 = load double, ptr %2549, align 8, !tbaa !74
  %2551 = load ptr, ptr %4, align 8, !tbaa !5
  %2552 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2551, i32 0, i32 26
  %2553 = load double, ptr %2552, align 8, !tbaa !51
  %2554 = fsub double %2550, %2553
  %2555 = load ptr, ptr %5, align 8, !tbaa !5
  %2556 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2554, ptr noundef %2555)
  %2557 = load ptr, ptr %4, align 8, !tbaa !5
  %2558 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2557, i32 0, i32 2
  %2559 = load double, ptr %2558, align 8, !tbaa !77
  %2560 = load ptr, ptr %4, align 8, !tbaa !5
  %2561 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2560, i32 0, i32 26
  %2562 = load double, ptr %2561, align 8, !tbaa !51
  %2563 = load ptr, ptr %5, align 8, !tbaa !5
  %2564 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2562, ptr noundef %2563)
  %2565 = load ptr, ptr %4, align 8, !tbaa !5
  %2566 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2565, i32 0, i32 28
  %2567 = load double, ptr %2566, align 8, !tbaa !74
  %2568 = load ptr, ptr %5, align 8, !tbaa !5
  %2569 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2567, ptr noundef %2568)
  %2570 = load ptr, ptr %5, align 8, !tbaa !5
  %2571 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %2569, double noundef 1.000000e+00, ptr noundef %2570)
  %2572 = load ptr, ptr %5, align 8, !tbaa !5
  %2573 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %2564, double noundef %2571, ptr noundef %2572)
  %2574 = fmul double %2559, %2573
  %2575 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %2556, double noundef %2574)
  br i1 %2575, label %2576, label %2581

2576:                                             ; preds = %2547
  %2577 = load ptr, ptr %4, align 8, !tbaa !5
  %2578 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2577, i32 0, i32 38
  store i64 1, ptr %2578, align 8, !tbaa !33
  store i8 0, ptr %23, align 1, !tbaa !26
  %2579 = load i8, ptr %23, align 1, !tbaa !26, !range !27, !noundef !28
  %2580 = trunc i8 %2579 to i1
  store i1 %2580, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4735

2581:                                             ; preds = %2547
  br label %2582

2582:                                             ; preds = %2581, %2487
  %2583 = load ptr, ptr %4, align 8, !tbaa !5
  %2584 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2583, i32 0, i32 4
  %2585 = load i64, ptr %2584, align 8, !tbaa !78
  %2586 = icmp sgt i64 %2585, 0
  br i1 %2586, label %2587, label %2600

2587:                                             ; preds = %2582
  %2588 = load ptr, ptr %4, align 8, !tbaa !5
  %2589 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2588, i32 0, i32 35
  %2590 = load i64, ptr %2589, align 8, !tbaa !35
  %2591 = load ptr, ptr %4, align 8, !tbaa !5
  %2592 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2591, i32 0, i32 4
  %2593 = load i64, ptr %2592, align 8, !tbaa !78
  %2594 = icmp sge i64 %2590, %2593
  br i1 %2594, label %2595, label %2600

2595:                                             ; preds = %2587
  %2596 = load ptr, ptr %4, align 8, !tbaa !5
  %2597 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2596, i32 0, i32 38
  store i64 5, ptr %2597, align 8, !tbaa !33
  store i8 0, ptr %23, align 1, !tbaa !26
  %2598 = load i8, ptr %23, align 1, !tbaa !26, !range !27, !noundef !28
  %2599 = trunc i8 %2598 to i1
  store i1 %2599, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4735

2600:                                             ; preds = %2587, %2582
  store double 0.000000e+00, ptr %19, align 8, !tbaa !29
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %2601

2601:                                             ; preds = %2703, %2600
  %2602 = load i64, ptr %11, align 8, !tbaa !25
  %2603 = load i64, ptr %9, align 8, !tbaa !25
  %2604 = sub nsw i64 %2603, 1
  %2605 = icmp sle i64 %2602, %2604
  br i1 %2605, label %2606, label %2706

2606:                                             ; preds = %2601
  %2607 = load ptr, ptr %4, align 8, !tbaa !5
  %2608 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2607, i32 0, i32 20
  %2609 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2608, i32 0, i32 4
  %2610 = load ptr, ptr %2609, align 8, !tbaa !24
  %2611 = load i64, ptr %11, align 8, !tbaa !25
  %2612 = getelementptr inbounds double, ptr %2610, i64 %2611
  %2613 = load double, ptr %2612, align 8, !tbaa !29
  %2614 = load ptr, ptr %4, align 8, !tbaa !5
  %2615 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2614, i32 0, i32 21
  %2616 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2615, i32 0, i32 4
  %2617 = load ptr, ptr %2616, align 8, !tbaa !24
  %2618 = load i64, ptr %11, align 8, !tbaa !25
  %2619 = getelementptr inbounds double, ptr %2617, i64 %2618
  store double %2613, ptr %2619, align 8, !tbaa !29
  %2620 = load ptr, ptr %4, align 8, !tbaa !5
  %2621 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2620, i32 0, i32 31
  %2622 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2621, i32 0, i32 4
  %2623 = load ptr, ptr %2622, align 8, !tbaa !24
  %2624 = load i64, ptr %11, align 8, !tbaa !25
  %2625 = getelementptr inbounds i8, ptr %2623, i64 %2624
  %2626 = load i8, ptr %2625, align 1, !tbaa !26, !range !27, !noundef !28
  %2627 = trunc i8 %2626 to i1
  br i1 %2627, label %2628, label %2651

2628:                                             ; preds = %2606
  %2629 = load ptr, ptr %4, align 8, !tbaa !5
  %2630 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2629, i32 0, i32 19
  %2631 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2630, i32 0, i32 4
  %2632 = load ptr, ptr %2631, align 8, !tbaa !24
  %2633 = load i64, ptr %11, align 8, !tbaa !25
  %2634 = getelementptr inbounds double, ptr %2632, i64 %2633
  %2635 = load double, ptr %2634, align 8, !tbaa !29
  %2636 = load ptr, ptr %4, align 8, !tbaa !5
  %2637 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2636, i32 0, i32 33
  %2638 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2637, i32 0, i32 4
  %2639 = load ptr, ptr %2638, align 8, !tbaa !24
  %2640 = load i64, ptr %11, align 8, !tbaa !25
  %2641 = getelementptr inbounds double, ptr %2639, i64 %2640
  %2642 = load double, ptr %2641, align 8, !tbaa !29
  %2643 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2635, double noundef %2642)
  br i1 %2643, label %2644, label %2651

2644:                                             ; preds = %2628
  %2645 = load ptr, ptr %4, align 8, !tbaa !5
  %2646 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2645, i32 0, i32 21
  %2647 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2646, i32 0, i32 4
  %2648 = load ptr, ptr %2647, align 8, !tbaa !24
  %2649 = load i64, ptr %11, align 8, !tbaa !25
  %2650 = getelementptr inbounds double, ptr %2648, i64 %2649
  store double 0.000000e+00, ptr %2650, align 8, !tbaa !29
  br label %2651

2651:                                             ; preds = %2644, %2628, %2606
  %2652 = load ptr, ptr %4, align 8, !tbaa !5
  %2653 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2652, i32 0, i32 32
  %2654 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2653, i32 0, i32 4
  %2655 = load ptr, ptr %2654, align 8, !tbaa !24
  %2656 = load i64, ptr %11, align 8, !tbaa !25
  %2657 = getelementptr inbounds i8, ptr %2655, i64 %2656
  %2658 = load i8, ptr %2657, align 1, !tbaa !26, !range !27, !noundef !28
  %2659 = trunc i8 %2658 to i1
  br i1 %2659, label %2660, label %2683

2660:                                             ; preds = %2651
  %2661 = load ptr, ptr %4, align 8, !tbaa !5
  %2662 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2661, i32 0, i32 19
  %2663 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2662, i32 0, i32 4
  %2664 = load ptr, ptr %2663, align 8, !tbaa !24
  %2665 = load i64, ptr %11, align 8, !tbaa !25
  %2666 = getelementptr inbounds double, ptr %2664, i64 %2665
  %2667 = load double, ptr %2666, align 8, !tbaa !29
  %2668 = load ptr, ptr %4, align 8, !tbaa !5
  %2669 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2668, i32 0, i32 34
  %2670 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2669, i32 0, i32 4
  %2671 = load ptr, ptr %2670, align 8, !tbaa !24
  %2672 = load i64, ptr %11, align 8, !tbaa !25
  %2673 = getelementptr inbounds double, ptr %2671, i64 %2672
  %2674 = load double, ptr %2673, align 8, !tbaa !29
  %2675 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2667, double noundef %2674)
  br i1 %2675, label %2676, label %2683

2676:                                             ; preds = %2660
  %2677 = load ptr, ptr %4, align 8, !tbaa !5
  %2678 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2677, i32 0, i32 21
  %2679 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2678, i32 0, i32 4
  %2680 = load ptr, ptr %2679, align 8, !tbaa !24
  %2681 = load i64, ptr %11, align 8, !tbaa !25
  %2682 = getelementptr inbounds double, ptr %2680, i64 %2681
  store double 0.000000e+00, ptr %2682, align 8, !tbaa !29
  br label %2683

2683:                                             ; preds = %2676, %2660, %2651
  %2684 = load double, ptr %19, align 8, !tbaa !29
  %2685 = load ptr, ptr %4, align 8, !tbaa !5
  %2686 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2685, i32 0, i32 21
  %2687 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2686, i32 0, i32 4
  %2688 = load ptr, ptr %2687, align 8, !tbaa !24
  %2689 = load i64, ptr %11, align 8, !tbaa !25
  %2690 = getelementptr inbounds double, ptr %2688, i64 %2689
  %2691 = load double, ptr %2690, align 8, !tbaa !29
  %2692 = load ptr, ptr %4, align 8, !tbaa !5
  %2693 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2692, i32 0, i32 8
  %2694 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2693, i32 0, i32 4
  %2695 = load ptr, ptr %2694, align 8, !tbaa !24
  %2696 = load i64, ptr %11, align 8, !tbaa !25
  %2697 = getelementptr inbounds double, ptr %2695, i64 %2696
  %2698 = load double, ptr %2697, align 8, !tbaa !29
  %2699 = fmul double %2691, %2698
  %2700 = load ptr, ptr %5, align 8, !tbaa !5
  %2701 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %2699, ptr noundef %2700)
  %2702 = fadd double %2684, %2701
  store double %2702, ptr %19, align 8, !tbaa !29
  br label %2703

2703:                                             ; preds = %2683
  %2704 = load i64, ptr %11, align 8, !tbaa !25
  %2705 = add nsw i64 %2704, 1
  store i64 %2705, ptr %11, align 8, !tbaa !25
  br label %2601, !llvm.loop !79

2706:                                             ; preds = %2601
  %2707 = load double, ptr %19, align 8, !tbaa !29
  %2708 = load ptr, ptr %5, align 8, !tbaa !5
  %2709 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %2707, ptr noundef %2708)
  store double %2709, ptr %19, align 8, !tbaa !29
  %2710 = load ptr, ptr %4, align 8, !tbaa !5
  %2711 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2710, i32 0, i32 63
  store i64 0, ptr %2711, align 8, !tbaa !80
  store i64 0, ptr %18, align 8, !tbaa !25
  br label %2712

2712:                                             ; preds = %4596, %2706
  %2713 = load i64, ptr %18, align 8, !tbaa !25
  %2714 = load i64, ptr %9, align 8, !tbaa !25
  %2715 = sub nsw i64 %2714, 1
  %2716 = icmp sgt i64 %2713, %2715
  br i1 %2716, label %2717, label %2718

2717:                                             ; preds = %2712
  br label %4599

2718:                                             ; preds = %2712
  %2719 = load ptr, ptr %4, align 8, !tbaa !5
  %2720 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2719, i32 0, i32 55
  %2721 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2720, i32 0, i32 4
  %2722 = load ptr, ptr %2721, align 8, !tbaa !24
  %2723 = getelementptr inbounds double, ptr %2722, i64 0
  %2724 = load ptr, ptr %4, align 8, !tbaa !5
  %2725 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2724, i32 0, i32 21
  %2726 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2725, i32 0, i32 4
  %2727 = load ptr, ptr %2726, align 8, !tbaa !24
  %2728 = getelementptr inbounds double, ptr %2727, i64 0
  %2729 = load i64, ptr %9, align 8, !tbaa !25
  %2730 = sub nsw i64 %2729, 1
  %2731 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2730)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2723, i64 noundef 1, ptr noundef %2728, i64 noundef 1, i64 noundef %2731)
  %2732 = load ptr, ptr %4, align 8, !tbaa !5
  %2733 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2732, i32 0, i32 63
  %2734 = load i64, ptr %2733, align 8, !tbaa !80
  %2735 = sub nsw i64 %2734, 1
  store i64 %2735, ptr %11, align 8, !tbaa !25
  br label %2736

2736:                                             ; preds = %2790, %2718
  %2737 = load i64, ptr %11, align 8, !tbaa !25
  %2738 = icmp sge i64 %2737, 0
  br i1 %2738, label %2739, label %2793

2739:                                             ; preds = %2736
  %2740 = load ptr, ptr %4, align 8, !tbaa !5
  %2741 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2740, i32 0, i32 60
  %2742 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %2741, i32 0, i32 6
  %2743 = load ptr, ptr %2742, align 8, !tbaa !24
  %2744 = load i64, ptr %11, align 8, !tbaa !25
  %2745 = getelementptr inbounds ptr, ptr %2743, i64 %2744
  %2746 = load ptr, ptr %2745, align 8, !tbaa !5
  %2747 = getelementptr inbounds double, ptr %2746, i64 0
  %2748 = load ptr, ptr %4, align 8, !tbaa !5
  %2749 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2748, i32 0, i32 55
  %2750 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2749, i32 0, i32 4
  %2751 = load ptr, ptr %2750, align 8, !tbaa !24
  %2752 = getelementptr inbounds double, ptr %2751, i64 0
  %2753 = load i64, ptr %9, align 8, !tbaa !25
  %2754 = sub nsw i64 %2753, 1
  %2755 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2754)
  %2756 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %2747, i64 noundef 1, ptr noundef %2752, i64 noundef 1, i64 noundef %2755)
  store double %2756, ptr %13, align 8, !tbaa !29
  %2757 = load double, ptr %13, align 8, !tbaa !29
  %2758 = load ptr, ptr %4, align 8, !tbaa !5
  %2759 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2758, i32 0, i32 62
  %2760 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2759, i32 0, i32 4
  %2761 = load ptr, ptr %2760, align 8, !tbaa !24
  %2762 = load i64, ptr %11, align 8, !tbaa !25
  %2763 = getelementptr inbounds double, ptr %2761, i64 %2762
  store double %2757, ptr %2763, align 8, !tbaa !29
  %2764 = load double, ptr %13, align 8, !tbaa !29
  %2765 = load ptr, ptr %4, align 8, !tbaa !5
  %2766 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2765, i32 0, i32 61
  %2767 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2766, i32 0, i32 4
  %2768 = load ptr, ptr %2767, align 8, !tbaa !24
  %2769 = load i64, ptr %11, align 8, !tbaa !25
  %2770 = getelementptr inbounds double, ptr %2768, i64 %2769
  %2771 = load double, ptr %2770, align 8, !tbaa !29
  %2772 = fmul double %2764, %2771
  store double %2772, ptr %14, align 8, !tbaa !29
  %2773 = load ptr, ptr %4, align 8, !tbaa !5
  %2774 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2773, i32 0, i32 55
  %2775 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2774, i32 0, i32 4
  %2776 = load ptr, ptr %2775, align 8, !tbaa !24
  %2777 = getelementptr inbounds double, ptr %2776, i64 0
  %2778 = load ptr, ptr %4, align 8, !tbaa !5
  %2779 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2778, i32 0, i32 59
  %2780 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %2779, i32 0, i32 6
  %2781 = load ptr, ptr %2780, align 8, !tbaa !24
  %2782 = load i64, ptr %11, align 8, !tbaa !25
  %2783 = getelementptr inbounds ptr, ptr %2781, i64 %2782
  %2784 = load ptr, ptr %2783, align 8, !tbaa !5
  %2785 = getelementptr inbounds double, ptr %2784, i64 0
  %2786 = load i64, ptr %9, align 8, !tbaa !25
  %2787 = sub nsw i64 %2786, 1
  %2788 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2787)
  %2789 = load double, ptr %14, align 8, !tbaa !29
  call void @_ZN11alglib_impl9ae_v_subdEPdlPKdlld(ptr noundef %2777, i64 noundef 1, ptr noundef %2785, i64 noundef 1, i64 noundef %2788, double noundef %2789)
  br label %2790

2790:                                             ; preds = %2739
  %2791 = load i64, ptr %11, align 8, !tbaa !25
  %2792 = add nsw i64 %2791, -1
  store i64 %2792, ptr %11, align 8, !tbaa !25
  br label %2736, !llvm.loop !81

2793:                                             ; preds = %2736
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %2794

2794:                                             ; preds = %2821, %2793
  %2795 = load i64, ptr %11, align 8, !tbaa !25
  %2796 = load i64, ptr %9, align 8, !tbaa !25
  %2797 = sub nsw i64 %2796, 1
  %2798 = icmp sle i64 %2795, %2797
  br i1 %2798, label %2799, label %2824

2799:                                             ; preds = %2794
  %2800 = load ptr, ptr %4, align 8, !tbaa !5
  %2801 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2800, i32 0, i32 49
  %2802 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2801, i32 0, i32 4
  %2803 = load ptr, ptr %2802, align 8, !tbaa !24
  %2804 = load i64, ptr %11, align 8, !tbaa !25
  %2805 = getelementptr inbounds double, ptr %2803, i64 %2804
  %2806 = load double, ptr %2805, align 8, !tbaa !29
  %2807 = load ptr, ptr %4, align 8, !tbaa !5
  %2808 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2807, i32 0, i32 55
  %2809 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2808, i32 0, i32 4
  %2810 = load ptr, ptr %2809, align 8, !tbaa !24
  %2811 = load i64, ptr %11, align 8, !tbaa !25
  %2812 = getelementptr inbounds double, ptr %2810, i64 %2811
  %2813 = load double, ptr %2812, align 8, !tbaa !29
  %2814 = fmul double %2806, %2813
  %2815 = load ptr, ptr %4, align 8, !tbaa !5
  %2816 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2815, i32 0, i32 55
  %2817 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2816, i32 0, i32 4
  %2818 = load ptr, ptr %2817, align 8, !tbaa !24
  %2819 = load i64, ptr %11, align 8, !tbaa !25
  %2820 = getelementptr inbounds double, ptr %2818, i64 %2819
  store double %2814, ptr %2820, align 8, !tbaa !29
  br label %2821

2821:                                             ; preds = %2799
  %2822 = load i64, ptr %11, align 8, !tbaa !25
  %2823 = add nsw i64 %2822, 1
  store i64 %2823, ptr %11, align 8, !tbaa !25
  br label %2794, !llvm.loop !82

2824:                                             ; preds = %2794
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %2825

2825:                                             ; preds = %2885, %2824
  %2826 = load i64, ptr %11, align 8, !tbaa !25
  %2827 = load ptr, ptr %4, align 8, !tbaa !5
  %2828 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2827, i32 0, i32 63
  %2829 = load i64, ptr %2828, align 8, !tbaa !80
  %2830 = sub nsw i64 %2829, 1
  %2831 = icmp sle i64 %2826, %2830
  br i1 %2831, label %2832, label %2888

2832:                                             ; preds = %2825
  %2833 = load ptr, ptr %4, align 8, !tbaa !5
  %2834 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2833, i32 0, i32 59
  %2835 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %2834, i32 0, i32 6
  %2836 = load ptr, ptr %2835, align 8, !tbaa !24
  %2837 = load i64, ptr %11, align 8, !tbaa !25
  %2838 = getelementptr inbounds ptr, ptr %2836, i64 %2837
  %2839 = load ptr, ptr %2838, align 8, !tbaa !5
  %2840 = getelementptr inbounds double, ptr %2839, i64 0
  %2841 = load ptr, ptr %4, align 8, !tbaa !5
  %2842 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2841, i32 0, i32 55
  %2843 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2842, i32 0, i32 4
  %2844 = load ptr, ptr %2843, align 8, !tbaa !24
  %2845 = getelementptr inbounds double, ptr %2844, i64 0
  %2846 = load i64, ptr %9, align 8, !tbaa !25
  %2847 = sub nsw i64 %2846, 1
  %2848 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2847)
  %2849 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %2840, i64 noundef 1, ptr noundef %2845, i64 noundef 1, i64 noundef %2848)
  store double %2849, ptr %13, align 8, !tbaa !29
  %2850 = load ptr, ptr %4, align 8, !tbaa !5
  %2851 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2850, i32 0, i32 61
  %2852 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2851, i32 0, i32 4
  %2853 = load ptr, ptr %2852, align 8, !tbaa !24
  %2854 = load i64, ptr %11, align 8, !tbaa !25
  %2855 = getelementptr inbounds double, ptr %2853, i64 %2854
  %2856 = load double, ptr %2855, align 8, !tbaa !29
  %2857 = load double, ptr %13, align 8, !tbaa !29
  %2858 = fneg double %2857
  %2859 = load ptr, ptr %4, align 8, !tbaa !5
  %2860 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2859, i32 0, i32 62
  %2861 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2860, i32 0, i32 4
  %2862 = load ptr, ptr %2861, align 8, !tbaa !24
  %2863 = load i64, ptr %11, align 8, !tbaa !25
  %2864 = getelementptr inbounds double, ptr %2862, i64 %2863
  %2865 = load double, ptr %2864, align 8, !tbaa !29
  %2866 = fadd double %2858, %2865
  %2867 = fmul double %2856, %2866
  store double %2867, ptr %14, align 8, !tbaa !29
  %2868 = load ptr, ptr %4, align 8, !tbaa !5
  %2869 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2868, i32 0, i32 55
  %2870 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2869, i32 0, i32 4
  %2871 = load ptr, ptr %2870, align 8, !tbaa !24
  %2872 = getelementptr inbounds double, ptr %2871, i64 0
  %2873 = load ptr, ptr %4, align 8, !tbaa !5
  %2874 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2873, i32 0, i32 60
  %2875 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %2874, i32 0, i32 6
  %2876 = load ptr, ptr %2875, align 8, !tbaa !24
  %2877 = load i64, ptr %11, align 8, !tbaa !25
  %2878 = getelementptr inbounds ptr, ptr %2876, i64 %2877
  %2879 = load ptr, ptr %2878, align 8, !tbaa !5
  %2880 = getelementptr inbounds double, ptr %2879, i64 0
  %2881 = load i64, ptr %9, align 8, !tbaa !25
  %2882 = sub nsw i64 %2881, 1
  %2883 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2882)
  %2884 = load double, ptr %14, align 8, !tbaa !29
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %2872, i64 noundef 1, ptr noundef %2880, i64 noundef 1, i64 noundef %2883, double noundef %2884)
  br label %2885

2885:                                             ; preds = %2832
  %2886 = load i64, ptr %11, align 8, !tbaa !25
  %2887 = add nsw i64 %2886, 1
  store i64 %2887, ptr %11, align 8, !tbaa !25
  br label %2825, !llvm.loop !83

2888:                                             ; preds = %2825
  %2889 = load ptr, ptr %4, align 8, !tbaa !5
  %2890 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2889, i32 0, i32 29
  %2891 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2890, i32 0, i32 4
  %2892 = load ptr, ptr %2891, align 8, !tbaa !24
  %2893 = getelementptr inbounds double, ptr %2892, i64 0
  %2894 = load ptr, ptr %4, align 8, !tbaa !5
  %2895 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2894, i32 0, i32 55
  %2896 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2895, i32 0, i32 4
  %2897 = load ptr, ptr %2896, align 8, !tbaa !24
  %2898 = getelementptr inbounds double, ptr %2897, i64 0
  %2899 = load i64, ptr %9, align 8, !tbaa !25
  %2900 = sub nsw i64 %2899, 1
  %2901 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2900)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %2893, i64 noundef 1, ptr noundef %2898, i64 noundef 1, i64 noundef %2901)
  store i8 0, ptr %16, align 1, !tbaa !26
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %2902

2902:                                             ; preds = %2990, %2888
  %2903 = load i64, ptr %11, align 8, !tbaa !25
  %2904 = load i64, ptr %9, align 8, !tbaa !25
  %2905 = sub nsw i64 %2904, 1
  %2906 = icmp sle i64 %2903, %2905
  br i1 %2906, label %2907, label %2993

2907:                                             ; preds = %2902
  %2908 = load i8, ptr %16, align 1, !tbaa !26, !range !27, !noundef !28
  %2909 = trunc i8 %2908 to i1
  br i1 %2909, label %2946, label %2910

2910:                                             ; preds = %2907
  %2911 = load ptr, ptr %4, align 8, !tbaa !5
  %2912 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2911, i32 0, i32 31
  %2913 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2912, i32 0, i32 4
  %2914 = load ptr, ptr %2913, align 8, !tbaa !24
  %2915 = load i64, ptr %11, align 8, !tbaa !25
  %2916 = getelementptr inbounds i8, ptr %2914, i64 %2915
  %2917 = load i8, ptr %2916, align 1, !tbaa !26, !range !27, !noundef !28
  %2918 = trunc i8 %2917 to i1
  br i1 %2918, label %2919, label %2944

2919:                                             ; preds = %2910
  %2920 = load ptr, ptr %4, align 8, !tbaa !5
  %2921 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2920, i32 0, i32 19
  %2922 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2921, i32 0, i32 4
  %2923 = load ptr, ptr %2922, align 8, !tbaa !24
  %2924 = load i64, ptr %11, align 8, !tbaa !25
  %2925 = getelementptr inbounds double, ptr %2923, i64 %2924
  %2926 = load double, ptr %2925, align 8, !tbaa !29
  %2927 = load ptr, ptr %4, align 8, !tbaa !5
  %2928 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2927, i32 0, i32 33
  %2929 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2928, i32 0, i32 4
  %2930 = load ptr, ptr %2929, align 8, !tbaa !24
  %2931 = load i64, ptr %11, align 8, !tbaa !25
  %2932 = getelementptr inbounds double, ptr %2930, i64 %2931
  %2933 = load double, ptr %2932, align 8, !tbaa !29
  %2934 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2926, double noundef %2933)
  br i1 %2934, label %2935, label %2944

2935:                                             ; preds = %2919
  %2936 = load ptr, ptr %4, align 8, !tbaa !5
  %2937 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2936, i32 0, i32 29
  %2938 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2937, i32 0, i32 4
  %2939 = load ptr, ptr %2938, align 8, !tbaa !24
  %2940 = load i64, ptr %11, align 8, !tbaa !25
  %2941 = getelementptr inbounds double, ptr %2939, i64 %2940
  %2942 = load double, ptr %2941, align 8, !tbaa !29
  %2943 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %2942, double noundef 0.000000e+00)
  br label %2944

2944:                                             ; preds = %2935, %2919, %2910
  %2945 = phi i1 [ false, %2919 ], [ false, %2910 ], [ %2943, %2935 ]
  br label %2946

2946:                                             ; preds = %2944, %2907
  %2947 = phi i1 [ true, %2907 ], [ %2945, %2944 ]
  %2948 = zext i1 %2947 to i8
  store i8 %2948, ptr %16, align 1, !tbaa !26
  %2949 = load i8, ptr %16, align 1, !tbaa !26, !range !27, !noundef !28
  %2950 = trunc i8 %2949 to i1
  br i1 %2950, label %2987, label %2951

2951:                                             ; preds = %2946
  %2952 = load ptr, ptr %4, align 8, !tbaa !5
  %2953 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2952, i32 0, i32 32
  %2954 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2953, i32 0, i32 4
  %2955 = load ptr, ptr %2954, align 8, !tbaa !24
  %2956 = load i64, ptr %11, align 8, !tbaa !25
  %2957 = getelementptr inbounds i8, ptr %2955, i64 %2956
  %2958 = load i8, ptr %2957, align 1, !tbaa !26, !range !27, !noundef !28
  %2959 = trunc i8 %2958 to i1
  br i1 %2959, label %2960, label %2985

2960:                                             ; preds = %2951
  %2961 = load ptr, ptr %4, align 8, !tbaa !5
  %2962 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2961, i32 0, i32 19
  %2963 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2962, i32 0, i32 4
  %2964 = load ptr, ptr %2963, align 8, !tbaa !24
  %2965 = load i64, ptr %11, align 8, !tbaa !25
  %2966 = getelementptr inbounds double, ptr %2964, i64 %2965
  %2967 = load double, ptr %2966, align 8, !tbaa !29
  %2968 = load ptr, ptr %4, align 8, !tbaa !5
  %2969 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2968, i32 0, i32 34
  %2970 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2969, i32 0, i32 4
  %2971 = load ptr, ptr %2970, align 8, !tbaa !24
  %2972 = load i64, ptr %11, align 8, !tbaa !25
  %2973 = getelementptr inbounds double, ptr %2971, i64 %2972
  %2974 = load double, ptr %2973, align 8, !tbaa !29
  %2975 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2967, double noundef %2974)
  br i1 %2975, label %2976, label %2985

2976:                                             ; preds = %2960
  %2977 = load ptr, ptr %4, align 8, !tbaa !5
  %2978 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2977, i32 0, i32 29
  %2979 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2978, i32 0, i32 4
  %2980 = load ptr, ptr %2979, align 8, !tbaa !24
  %2981 = load i64, ptr %11, align 8, !tbaa !25
  %2982 = getelementptr inbounds double, ptr %2980, i64 %2981
  %2983 = load double, ptr %2982, align 8, !tbaa !29
  %2984 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %2983, double noundef 0.000000e+00)
  br label %2985

2985:                                             ; preds = %2976, %2960, %2951
  %2986 = phi i1 [ false, %2960 ], [ false, %2951 ], [ %2984, %2976 ]
  br label %2987

2987:                                             ; preds = %2985, %2946
  %2988 = phi i1 [ true, %2946 ], [ %2986, %2985 ]
  %2989 = zext i1 %2988 to i8
  store i8 %2989, ptr %16, align 1, !tbaa !26
  br label %2990

2990:                                             ; preds = %2987
  %2991 = load i64, ptr %11, align 8, !tbaa !25
  %2992 = add nsw i64 %2991, 1
  store i64 %2992, ptr %11, align 8, !tbaa !25
  br label %2902, !llvm.loop !84

2993:                                             ; preds = %2902
  %2994 = load i8, ptr %16, align 1, !tbaa !26, !range !27, !noundef !28
  %2995 = trunc i8 %2994 to i1
  %2996 = xor i1 %2995, true
  %2997 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %2996, ptr noundef @.str.481, ptr noundef %2997)
  store double 0.000000e+00, ptr %8, align 8, !tbaa !29
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %2998

2998:                                             ; preds = %3023, %2993
  %2999 = load i64, ptr %11, align 8, !tbaa !25
  %3000 = load i64, ptr %9, align 8, !tbaa !25
  %3001 = sub nsw i64 %3000, 1
  %3002 = icmp sle i64 %2999, %3001
  br i1 %3002, label %3003, label %3026

3003:                                             ; preds = %2998
  %3004 = load double, ptr %8, align 8, !tbaa !29
  %3005 = load ptr, ptr %4, align 8, !tbaa !5
  %3006 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3005, i32 0, i32 29
  %3007 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3006, i32 0, i32 4
  %3008 = load ptr, ptr %3007, align 8, !tbaa !24
  %3009 = load i64, ptr %11, align 8, !tbaa !25
  %3010 = getelementptr inbounds double, ptr %3008, i64 %3009
  %3011 = load double, ptr %3010, align 8, !tbaa !29
  %3012 = load ptr, ptr %4, align 8, !tbaa !5
  %3013 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3012, i32 0, i32 8
  %3014 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3013, i32 0, i32 4
  %3015 = load ptr, ptr %3014, align 8, !tbaa !24
  %3016 = load i64, ptr %11, align 8, !tbaa !25
  %3017 = getelementptr inbounds double, ptr %3015, i64 %3016
  %3018 = load double, ptr %3017, align 8, !tbaa !29
  %3019 = fdiv double %3011, %3018
  %3020 = load ptr, ptr %5, align 8, !tbaa !5
  %3021 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %3019, ptr noundef %3020)
  %3022 = fadd double %3004, %3021
  store double %3022, ptr %8, align 8, !tbaa !29
  br label %3023

3023:                                             ; preds = %3003
  %3024 = load i64, ptr %11, align 8, !tbaa !25
  %3025 = add nsw i64 %3024, 1
  store i64 %3025, ptr %11, align 8, !tbaa !25
  br label %2998, !llvm.loop !85

3026:                                             ; preds = %2998
  %3027 = load double, ptr %8, align 8, !tbaa !29
  %3028 = load ptr, ptr %5, align 8, !tbaa !5
  %3029 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %3027, ptr noundef %3028)
  store double %3029, ptr %8, align 8, !tbaa !29
  %3030 = load double, ptr %8, align 8, !tbaa !29
  %3031 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %3030, double noundef 0.000000e+00)
  br i1 %3031, label %3032, label %3033

3032:                                             ; preds = %3026
  br label %4599

3033:                                             ; preds = %3026
  %3034 = load ptr, ptr %4, align 8, !tbaa !5
  %3035 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3034, i32 0, i32 30
  %3036 = load double, ptr %3035, align 8, !tbaa !48
  %3037 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %3036, double noundef 0.000000e+00)
  br i1 %3037, label %3038, label %3046

3038:                                             ; preds = %3033
  %3039 = load ptr, ptr %4, align 8, !tbaa !5
  %3040 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3039, i32 0, i32 30
  %3041 = load double, ptr %3040, align 8, !tbaa !48
  %3042 = load double, ptr %8, align 8, !tbaa !29
  %3043 = fdiv double %3041, %3042
  %3044 = load ptr, ptr %4, align 8, !tbaa !5
  %3045 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3044, i32 0, i32 53
  store double %3043, ptr %3045, align 8, !tbaa !65
  br label %3051

3046:                                             ; preds = %3033
  %3047 = load double, ptr %8, align 8, !tbaa !29
  %3048 = fdiv double 1.000000e+00, %3047
  %3049 = load ptr, ptr %4, align 8, !tbaa !5
  %3050 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3049, i32 0, i32 53
  store double %3048, ptr %3050, align 8, !tbaa !65
  br label %3051

3051:                                             ; preds = %3046, %3038
  %3052 = load ptr, ptr %4, align 8, !tbaa !5
  %3053 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3052, i32 0, i32 54
  store double 1.000000e+50, ptr %3053, align 8, !tbaa !66
  %3054 = load ptr, ptr %4, align 8, !tbaa !5
  %3055 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3054, i32 0, i32 6
  %3056 = load double, ptr %3055, align 8, !tbaa !67
  %3057 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %3056, double noundef 0.000000e+00)
  br i1 %3057, label %3058, label %3071

3058:                                             ; preds = %3051
  %3059 = load ptr, ptr %4, align 8, !tbaa !5
  %3060 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3059, i32 0, i32 54
  %3061 = load double, ptr %3060, align 8, !tbaa !66
  %3062 = load ptr, ptr %4, align 8, !tbaa !5
  %3063 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3062, i32 0, i32 6
  %3064 = load double, ptr %3063, align 8, !tbaa !67
  %3065 = load double, ptr %8, align 8, !tbaa !29
  %3066 = fdiv double %3064, %3065
  %3067 = load ptr, ptr %5, align 8, !tbaa !5
  %3068 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %3061, double noundef %3066, ptr noundef %3067)
  %3069 = load ptr, ptr %4, align 8, !tbaa !5
  %3070 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3069, i32 0, i32 54
  store double %3068, ptr %3070, align 8, !tbaa !66
  br label %3071

3071:                                             ; preds = %3058, %3051
  %3072 = load ptr, ptr %4, align 8, !tbaa !5
  %3073 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3072, i32 0, i32 22
  %3074 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3073, i32 0, i32 4
  %3075 = load ptr, ptr %3074, align 8, !tbaa !24
  %3076 = getelementptr inbounds double, ptr %3075, i64 0
  %3077 = load ptr, ptr %4, align 8, !tbaa !5
  %3078 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3077, i32 0, i32 19
  %3079 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3078, i32 0, i32 4
  %3080 = load ptr, ptr %3079, align 8, !tbaa !24
  %3081 = getelementptr inbounds double, ptr %3080, i64 0
  %3082 = load i64, ptr %9, align 8, !tbaa !25
  %3083 = sub nsw i64 %3082, 1
  %3084 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %3083)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %3076, i64 noundef 1, ptr noundef %3081, i64 noundef 1, i64 noundef %3084)
  %3085 = load ptr, ptr %4, align 8, !tbaa !5
  %3086 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3085, i32 0, i32 24
  %3087 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3086, i32 0, i32 4
  %3088 = load ptr, ptr %3087, align 8, !tbaa !24
  %3089 = getelementptr inbounds double, ptr %3088, i64 0
  %3090 = load ptr, ptr %4, align 8, !tbaa !5
  %3091 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3090, i32 0, i32 21
  %3092 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3091, i32 0, i32 4
  %3093 = load ptr, ptr %3092, align 8, !tbaa !24
  %3094 = getelementptr inbounds double, ptr %3093, i64 0
  %3095 = load i64, ptr %9, align 8, !tbaa !25
  %3096 = sub nsw i64 %3095, 1
  %3097 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %3096)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %3089, i64 noundef 1, ptr noundef %3094, i64 noundef 1, i64 noundef %3097)
  %3098 = load ptr, ptr %4, align 8, !tbaa !5
  %3099 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3098, i32 0, i32 23
  %3100 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3099, i32 0, i32 4
  %3101 = load ptr, ptr %3100, align 8, !tbaa !24
  %3102 = getelementptr inbounds double, ptr %3101, i64 0
  %3103 = load ptr, ptr %4, align 8, !tbaa !5
  %3104 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3103, i32 0, i32 20
  %3105 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3104, i32 0, i32 4
  %3106 = load ptr, ptr %3105, align 8, !tbaa !24
  %3107 = getelementptr inbounds double, ptr %3106, i64 0
  %3108 = load i64, ptr %9, align 8, !tbaa !25
  %3109 = sub nsw i64 %3108, 1
  %3110 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %3109)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %3102, i64 noundef 1, ptr noundef %3107, i64 noundef 1, i64 noundef %3110)
  %3111 = load ptr, ptr %4, align 8, !tbaa !5
  %3112 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3111, i32 0, i32 26
  %3113 = load double, ptr %3112, align 8, !tbaa !51
  %3114 = load ptr, ptr %4, align 8, !tbaa !5
  %3115 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3114, i32 0, i32 27
  store double %3113, ptr %3115, align 8, !tbaa !68
  %3116 = load ptr, ptr %4, align 8, !tbaa !5
  %3117 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3116, i32 0, i32 52
  store i64 0, ptr %3117, align 8, !tbaa !69
  %3118 = load ptr, ptr %4, align 8, !tbaa !5
  %3119 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3118, i32 0, i32 66
  %3120 = load ptr, ptr %4, align 8, !tbaa !5
  %3121 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3120, i32 0, i32 8
  %3122 = load ptr, ptr %4, align 8, !tbaa !5
  %3123 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3122, i32 0, i32 68
  %3124 = load ptr, ptr %4, align 8, !tbaa !5
  %3125 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3124, i32 0, i32 22
  %3126 = load ptr, ptr %4, align 8, !tbaa !5
  %3127 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3126, i32 0, i32 27
  %3128 = load double, ptr %3127, align 8, !tbaa !68
  %3129 = load ptr, ptr %4, align 8, !tbaa !5
  %3130 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3129, i32 0, i32 23
  %3131 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl34smoothnessmonitorstartlinesearch1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_PNS_8ae_stateE(ptr noundef %3119, ptr noundef %3121, ptr noundef %3123, ptr noundef %3125, double noundef %3128, ptr noundef %3130, ptr noundef %3131)
  %3132 = load i64, ptr %9, align 8, !tbaa !25
  %3133 = load ptr, ptr %4, align 8, !tbaa !5
  %3134 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3133, i32 0, i32 22
  %3135 = load ptr, ptr %4, align 8, !tbaa !5
  %3136 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3135, i32 0, i32 27
  %3137 = load ptr, ptr %4, align 8, !tbaa !5
  %3138 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3137, i32 0, i32 24
  %3139 = load ptr, ptr %4, align 8, !tbaa !5
  %3140 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3139, i32 0, i32 29
  %3141 = load ptr, ptr %4, align 8, !tbaa !5
  %3142 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3141, i32 0, i32 53
  %3143 = load ptr, ptr %4, align 8, !tbaa !5
  %3144 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3143, i32 0, i32 54
  %3145 = load double, ptr %3144, align 8, !tbaa !66
  %3146 = load double, ptr @_ZN11alglib_implL10minbc_gtolE, align 8, !tbaa !29
  %3147 = load ptr, ptr %4, align 8, !tbaa !5
  %3148 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3147, i32 0, i32 51
  %3149 = load ptr, ptr %4, align 8, !tbaa !5
  %3150 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3149, i32 0, i32 55
  %3151 = load ptr, ptr %4, align 8, !tbaa !5
  %3152 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3151, i32 0, i32 56
  %3153 = load ptr, ptr %4, align 8, !tbaa !5
  %3154 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3153, i32 0, i32 52
  %3155 = 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 %3132, ptr noundef %3134, ptr noundef %3136, ptr noundef %3138, ptr noundef %3140, ptr noundef %3142, double noundef %3145, double noundef %3146, ptr noundef %17, ptr noundef %3148, ptr noundef %3150, ptr noundef %3152, ptr noundef %3154, ptr noundef %3155)
  br label %3156

3156:                                             ; preds = %3864, %3071
  %3157 = load ptr, ptr %4, align 8, !tbaa !5
  %3158 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3157, i32 0, i32 52
  %3159 = load i64, ptr %3158, align 8, !tbaa !69
  %3160 = icmp eq i64 %3159, 0
  br i1 %3160, label %3161, label %3162

3161:                                             ; preds = %3156
  br label %3889

3162:                                             ; preds = %3156
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %3163

3163:                                             ; preds = %3260, %3162
  %3164 = load i64, ptr %11, align 8, !tbaa !25
  %3165 = load i64, ptr %9, align 8, !tbaa !25
  %3166 = sub nsw i64 %3165, 1
  %3167 = icmp sle i64 %3164, %3166
  br i1 %3167, label %3168, label %3263

3168:                                             ; preds = %3163
  %3169 = load ptr, ptr %4, align 8, !tbaa !5
  %3170 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3169, i32 0, i32 22
  %3171 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3170, i32 0, i32 4
  %3172 = load ptr, ptr %3171, align 8, !tbaa !24
  %3173 = load i64, ptr %11, align 8, !tbaa !25
  %3174 = getelementptr inbounds double, ptr %3172, i64 %3173
  %3175 = load double, ptr %3174, align 8, !tbaa !29
  %3176 = load ptr, ptr %4, align 8, !tbaa !5
  %3177 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3176, i32 0, i32 11
  %3178 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3177, i32 0, i32 4
  %3179 = load ptr, ptr %3178, align 8, !tbaa !24
  %3180 = load i64, ptr %11, align 8, !tbaa !25
  %3181 = getelementptr inbounds double, ptr %3179, i64 %3180
  store double %3175, ptr %3181, align 8, !tbaa !29
  %3182 = load ptr, ptr %4, align 8, !tbaa !5
  %3183 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3182, i32 0, i32 31
  %3184 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3183, i32 0, i32 4
  %3185 = load ptr, ptr %3184, align 8, !tbaa !24
  %3186 = load i64, ptr %11, align 8, !tbaa !25
  %3187 = getelementptr inbounds i8, ptr %3185, i64 %3186
  %3188 = load i8, ptr %3187, align 1, !tbaa !26, !range !27, !noundef !28
  %3189 = trunc i8 %3188 to i1
  br i1 %3189, label %3190, label %3220

3190:                                             ; preds = %3168
  %3191 = load ptr, ptr %4, align 8, !tbaa !5
  %3192 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3191, i32 0, i32 22
  %3193 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3192, i32 0, i32 4
  %3194 = load ptr, ptr %3193, align 8, !tbaa !24
  %3195 = load i64, ptr %11, align 8, !tbaa !25
  %3196 = getelementptr inbounds double, ptr %3194, i64 %3195
  %3197 = load double, ptr %3196, align 8, !tbaa !29
  %3198 = load ptr, ptr %4, align 8, !tbaa !5
  %3199 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3198, i32 0, i32 33
  %3200 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3199, i32 0, i32 4
  %3201 = load ptr, ptr %3200, align 8, !tbaa !24
  %3202 = load i64, ptr %11, align 8, !tbaa !25
  %3203 = getelementptr inbounds double, ptr %3201, i64 %3202
  %3204 = load double, ptr %3203, align 8, !tbaa !29
  %3205 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %3197, double noundef %3204)
  br i1 %3205, label %3206, label %3220

3206:                                             ; preds = %3190
  %3207 = load ptr, ptr %4, align 8, !tbaa !5
  %3208 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3207, i32 0, i32 33
  %3209 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3208, i32 0, i32 4
  %3210 = load ptr, ptr %3209, align 8, !tbaa !24
  %3211 = load i64, ptr %11, align 8, !tbaa !25
  %3212 = getelementptr inbounds double, ptr %3210, i64 %3211
  %3213 = load double, ptr %3212, align 8, !tbaa !29
  %3214 = load ptr, ptr %4, align 8, !tbaa !5
  %3215 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3214, i32 0, i32 11
  %3216 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3215, i32 0, i32 4
  %3217 = load ptr, ptr %3216, align 8, !tbaa !24
  %3218 = load i64, ptr %11, align 8, !tbaa !25
  %3219 = getelementptr inbounds double, ptr %3217, i64 %3218
  store double %3213, ptr %3219, align 8, !tbaa !29
  br label %3220

3220:                                             ; preds = %3206, %3190, %3168
  %3221 = load ptr, ptr %4, align 8, !tbaa !5
  %3222 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3221, i32 0, i32 32
  %3223 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3222, i32 0, i32 4
  %3224 = load ptr, ptr %3223, align 8, !tbaa !24
  %3225 = load i64, ptr %11, align 8, !tbaa !25
  %3226 = getelementptr inbounds i8, ptr %3224, i64 %3225
  %3227 = load i8, ptr %3226, align 1, !tbaa !26, !range !27, !noundef !28
  %3228 = trunc i8 %3227 to i1
  br i1 %3228, label %3229, label %3259

3229:                                             ; preds = %3220
  %3230 = load ptr, ptr %4, align 8, !tbaa !5
  %3231 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3230, i32 0, i32 22
  %3232 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3231, i32 0, i32 4
  %3233 = load ptr, ptr %3232, align 8, !tbaa !24
  %3234 = load i64, ptr %11, align 8, !tbaa !25
  %3235 = getelementptr inbounds double, ptr %3233, i64 %3234
  %3236 = load double, ptr %3235, align 8, !tbaa !29
  %3237 = load ptr, ptr %4, align 8, !tbaa !5
  %3238 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3237, i32 0, i32 34
  %3239 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3238, i32 0, i32 4
  %3240 = load ptr, ptr %3239, align 8, !tbaa !24
  %3241 = load i64, ptr %11, align 8, !tbaa !25
  %3242 = getelementptr inbounds double, ptr %3240, i64 %3241
  %3243 = load double, ptr %3242, align 8, !tbaa !29
  %3244 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %3236, double noundef %3243)
  br i1 %3244, label %3245, label %3259

3245:                                             ; preds = %3229
  %3246 = load ptr, ptr %4, align 8, !tbaa !5
  %3247 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3246, i32 0, i32 34
  %3248 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3247, i32 0, i32 4
  %3249 = load ptr, ptr %3248, align 8, !tbaa !24
  %3250 = load i64, ptr %11, align 8, !tbaa !25
  %3251 = getelementptr inbounds double, ptr %3249, i64 %3250
  %3252 = load double, ptr %3251, align 8, !tbaa !29
  %3253 = load ptr, ptr %4, align 8, !tbaa !5
  %3254 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3253, i32 0, i32 11
  %3255 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3254, i32 0, i32 4
  %3256 = load ptr, ptr %3255, align 8, !tbaa !24
  %3257 = load i64, ptr %11, align 8, !tbaa !25
  %3258 = getelementptr inbounds double, ptr %3256, i64 %3257
  store double %3252, ptr %3258, align 8, !tbaa !29
  br label %3259

3259:                                             ; preds = %3245, %3229, %3220
  br label %3260

3260:                                             ; preds = %3259
  %3261 = load i64, ptr %11, align 8, !tbaa !25
  %3262 = add nsw i64 %3261, 1
  store i64 %3262, ptr %11, align 8, !tbaa !25
  br label %3163, !llvm.loop !86

3263:                                             ; preds = %3163
  %3264 = load ptr, ptr %4, align 8, !tbaa !5
  %3265 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef %3264, ptr noundef %3265)
  %3266 = load ptr, ptr %4, align 8, !tbaa !5
  %3267 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3266, i32 0, i32 7
  %3268 = load double, ptr %3267, align 8, !tbaa !42
  %3269 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %3268, double noundef 0.000000e+00)
  br i1 %3269, label %3270, label %3271

3270:                                             ; preds = %3263
  br label %3286

3271:                                             ; preds = %3263
  %3272 = load ptr, ptr %4, align 8, !tbaa !5
  %3273 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3272, i32 0, i32 15
  store i8 1, ptr %3273, align 1, !tbaa !45
  %3274 = load ptr, ptr %4, align 8, !tbaa !5
  %3275 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3274, i32 0, i32 18
  %3276 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %3275, i32 0, i32 0
  store i32 21, ptr %3276, align 8, !tbaa !9
  br label %4609

3277:                                             ; preds = %308
  %3278 = load ptr, ptr %4, align 8, !tbaa !5
  %3279 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3278, i32 0, i32 15
  store i8 0, ptr %3279, align 1, !tbaa !45
  %3280 = load ptr, ptr %4, align 8, !tbaa !5
  %3281 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3280, i32 0, i32 36
  %3282 = load i64, ptr %3281, align 8, !tbaa !36
  %3283 = add nsw i64 %3282, 1
  %3284 = load ptr, ptr %4, align 8, !tbaa !5
  %3285 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3284, i32 0, i32 36
  store i64 %3283, ptr %3285, align 8, !tbaa !36
  br label %3731

3286:                                             ; preds = %3270
  %3287 = load ptr, ptr %4, align 8, !tbaa !5
  %3288 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3287, i32 0, i32 14
  store i8 1, ptr %3288, align 8, !tbaa !50
  %3289 = load ptr, ptr %4, align 8, !tbaa !5
  %3290 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3289, i32 0, i32 18
  %3291 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %3290, i32 0, i32 0
  store i32 22, ptr %3291, align 8, !tbaa !9
  br label %4609

3292:                                             ; preds = %315
  %3293 = load ptr, ptr %4, align 8, !tbaa !5
  %3294 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3293, i32 0, i32 12
  %3295 = load double, ptr %3294, align 8, !tbaa !46
  %3296 = load ptr, ptr %4, align 8, !tbaa !5
  %3297 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3296, i32 0, i32 40
  store double %3295, ptr %3297, align 8, !tbaa !54
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %3298

3298:                                             ; preds = %3713, %3292
  %3299 = load i64, ptr %11, align 8, !tbaa !25
  %3300 = load i64, ptr %9, align 8, !tbaa !25
  %3301 = sub nsw i64 %3300, 1
  %3302 = icmp sgt i64 %3299, %3301
  br i1 %3302, label %3303, label %3304

3303:                                             ; preds = %3298
  br label %3723

3304:                                             ; preds = %3298
  %3305 = load ptr, ptr %4, align 8, !tbaa !5
  %3306 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3305, i32 0, i32 11
  %3307 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3306, i32 0, i32 4
  %3308 = load ptr, ptr %3307, align 8, !tbaa !24
  %3309 = load i64, ptr %11, align 8, !tbaa !25
  %3310 = getelementptr inbounds double, ptr %3308, i64 %3309
  %3311 = load double, ptr %3310, align 8, !tbaa !29
  store double %3311, ptr %13, align 8, !tbaa !29
  store i8 0, ptr %16, align 1, !tbaa !26
  %3312 = load ptr, ptr %4, align 8, !tbaa !5
  %3313 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3312, i32 0, i32 31
  %3314 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3313, i32 0, i32 4
  %3315 = load ptr, ptr %3314, align 8, !tbaa !24
  %3316 = load i64, ptr %11, align 8, !tbaa !25
  %3317 = getelementptr inbounds i8, ptr %3315, i64 %3316
  %3318 = load i8, ptr %3317, align 1, !tbaa !26, !range !27, !noundef !28
  %3319 = trunc i8 %3318 to i1
  br i1 %3319, label %3320, label %3348

3320:                                             ; preds = %3304
  %3321 = load i8, ptr %16, align 1, !tbaa !26, !range !27, !noundef !28
  %3322 = trunc i8 %3321 to i1
  br i1 %3322, label %3345, label %3323

3323:                                             ; preds = %3320
  %3324 = load double, ptr %13, align 8, !tbaa !29
  %3325 = load ptr, ptr %4, align 8, !tbaa !5
  %3326 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3325, i32 0, i32 7
  %3327 = load double, ptr %3326, align 8, !tbaa !42
  %3328 = load ptr, ptr %4, align 8, !tbaa !5
  %3329 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3328, i32 0, i32 8
  %3330 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3329, i32 0, i32 4
  %3331 = load ptr, ptr %3330, align 8, !tbaa !24
  %3332 = load i64, ptr %11, align 8, !tbaa !25
  %3333 = getelementptr inbounds double, ptr %3331, i64 %3332
  %3334 = load double, ptr %3333, align 8, !tbaa !29
  %3335 = fneg double %3327
  %3336 = call double @llvm.fmuladd.f64(double %3335, double %3334, double %3324)
  %3337 = load ptr, ptr %4, align 8, !tbaa !5
  %3338 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3337, i32 0, i32 33
  %3339 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3338, i32 0, i32 4
  %3340 = load ptr, ptr %3339, align 8, !tbaa !24
  %3341 = load i64, ptr %11, align 8, !tbaa !25
  %3342 = getelementptr inbounds double, ptr %3340, i64 %3341
  %3343 = load double, ptr %3342, align 8, !tbaa !29
  %3344 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %3336, double noundef %3343)
  br label %3345

3345:                                             ; preds = %3323, %3320
  %3346 = phi i1 [ true, %3320 ], [ %3344, %3323 ]
  %3347 = zext i1 %3346 to i8
  store i8 %3347, ptr %16, align 1, !tbaa !26
  br label %3348

3348:                                             ; preds = %3345, %3304
  %3349 = load ptr, ptr %4, align 8, !tbaa !5
  %3350 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3349, i32 0, i32 32
  %3351 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3350, i32 0, i32 4
  %3352 = load ptr, ptr %3351, align 8, !tbaa !24
  %3353 = load i64, ptr %11, align 8, !tbaa !25
  %3354 = getelementptr inbounds i8, ptr %3352, i64 %3353
  %3355 = load i8, ptr %3354, align 1, !tbaa !26, !range !27, !noundef !28
  %3356 = trunc i8 %3355 to i1
  br i1 %3356, label %3357, label %3384

3357:                                             ; preds = %3348
  %3358 = load i8, ptr %16, align 1, !tbaa !26, !range !27, !noundef !28
  %3359 = trunc i8 %3358 to i1
  br i1 %3359, label %3381, label %3360

3360:                                             ; preds = %3357
  %3361 = load double, ptr %13, align 8, !tbaa !29
  %3362 = load ptr, ptr %4, align 8, !tbaa !5
  %3363 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3362, i32 0, i32 7
  %3364 = load double, ptr %3363, align 8, !tbaa !42
  %3365 = load ptr, ptr %4, align 8, !tbaa !5
  %3366 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3365, i32 0, i32 8
  %3367 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3366, i32 0, i32 4
  %3368 = load ptr, ptr %3367, align 8, !tbaa !24
  %3369 = load i64, ptr %11, align 8, !tbaa !25
  %3370 = getelementptr inbounds double, ptr %3368, i64 %3369
  %3371 = load double, ptr %3370, align 8, !tbaa !29
  %3372 = call double @llvm.fmuladd.f64(double %3364, double %3371, double %3361)
  %3373 = load ptr, ptr %4, align 8, !tbaa !5
  %3374 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3373, i32 0, i32 34
  %3375 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3374, i32 0, i32 4
  %3376 = load ptr, ptr %3375, align 8, !tbaa !24
  %3377 = load i64, ptr %11, align 8, !tbaa !25
  %3378 = getelementptr inbounds double, ptr %3376, i64 %3377
  %3379 = load double, ptr %3378, align 8, !tbaa !29
  %3380 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %3372, double noundef %3379)
  br label %3381

3381:                                             ; preds = %3360, %3357
  %3382 = phi i1 [ true, %3357 ], [ %3380, %3360 ]
  %3383 = zext i1 %3382 to i8
  store i8 %3383, ptr %16, align 1, !tbaa !26
  br label %3384

3384:                                             ; preds = %3381, %3348
  %3385 = load i8, ptr %16, align 1, !tbaa !26, !range !27, !noundef !28
  %3386 = trunc i8 %3385 to i1
  br i1 %3386, label %3387, label %3388

3387:                                             ; preds = %3384
  br label %3542

3388:                                             ; preds = %3384
  %3389 = load double, ptr %13, align 8, !tbaa !29
  %3390 = load ptr, ptr %4, align 8, !tbaa !5
  %3391 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3390, i32 0, i32 7
  %3392 = load double, ptr %3391, align 8, !tbaa !42
  %3393 = load ptr, ptr %4, align 8, !tbaa !5
  %3394 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3393, i32 0, i32 8
  %3395 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3394, i32 0, i32 4
  %3396 = load ptr, ptr %3395, align 8, !tbaa !24
  %3397 = load i64, ptr %11, align 8, !tbaa !25
  %3398 = getelementptr inbounds double, ptr %3396, i64 %3397
  %3399 = load double, ptr %3398, align 8, !tbaa !29
  %3400 = fneg double %3392
  %3401 = call double @llvm.fmuladd.f64(double %3400, double %3399, double %3389)
  %3402 = load ptr, ptr %4, align 8, !tbaa !5
  %3403 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3402, i32 0, i32 11
  %3404 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3403, i32 0, i32 4
  %3405 = load ptr, ptr %3404, align 8, !tbaa !24
  %3406 = load i64, ptr %11, align 8, !tbaa !25
  %3407 = getelementptr inbounds double, ptr %3405, i64 %3406
  store double %3401, ptr %3407, align 8, !tbaa !29
  %3408 = load ptr, ptr %4, align 8, !tbaa !5
  %3409 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3408, i32 0, i32 18
  %3410 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %3409, i32 0, i32 0
  store i32 23, ptr %3410, align 8, !tbaa !9
  br label %4609

3411:                                             ; preds = %322
  %3412 = load ptr, ptr %4, align 8, !tbaa !5
  %3413 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3412, i32 0, i32 12
  %3414 = load double, ptr %3413, align 8, !tbaa !46
  %3415 = load ptr, ptr %4, align 8, !tbaa !5
  %3416 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3415, i32 0, i32 41
  store double %3414, ptr %3416, align 8, !tbaa !55
  %3417 = load double, ptr %13, align 8, !tbaa !29
  %3418 = load ptr, ptr %4, align 8, !tbaa !5
  %3419 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3418, i32 0, i32 7
  %3420 = load double, ptr %3419, align 8, !tbaa !42
  %3421 = fmul double 5.000000e-01, %3420
  %3422 = load ptr, ptr %4, align 8, !tbaa !5
  %3423 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3422, i32 0, i32 8
  %3424 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3423, i32 0, i32 4
  %3425 = load ptr, ptr %3424, align 8, !tbaa !24
  %3426 = load i64, ptr %11, align 8, !tbaa !25
  %3427 = getelementptr inbounds double, ptr %3425, i64 %3426
  %3428 = load double, ptr %3427, align 8, !tbaa !29
  %3429 = fneg double %3421
  %3430 = call double @llvm.fmuladd.f64(double %3429, double %3428, double %3417)
  %3431 = load ptr, ptr %4, align 8, !tbaa !5
  %3432 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3431, i32 0, i32 11
  %3433 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3432, i32 0, i32 4
  %3434 = load ptr, ptr %3433, align 8, !tbaa !24
  %3435 = load i64, ptr %11, align 8, !tbaa !25
  %3436 = getelementptr inbounds double, ptr %3434, i64 %3435
  store double %3430, ptr %3436, align 8, !tbaa !29
  %3437 = load ptr, ptr %4, align 8, !tbaa !5
  %3438 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3437, i32 0, i32 18
  %3439 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %3438, i32 0, i32 0
  store i32 24, ptr %3439, align 8, !tbaa !9
  br label %4609

3440:                                             ; preds = %329
  %3441 = load ptr, ptr %4, align 8, !tbaa !5
  %3442 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3441, i32 0, i32 12
  %3443 = load double, ptr %3442, align 8, !tbaa !46
  %3444 = load ptr, ptr %4, align 8, !tbaa !5
  %3445 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3444, i32 0, i32 42
  store double %3443, ptr %3445, align 8, !tbaa !56
  %3446 = load double, ptr %13, align 8, !tbaa !29
  %3447 = load ptr, ptr %4, align 8, !tbaa !5
  %3448 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3447, i32 0, i32 7
  %3449 = load double, ptr %3448, align 8, !tbaa !42
  %3450 = fmul double 5.000000e-01, %3449
  %3451 = load ptr, ptr %4, align 8, !tbaa !5
  %3452 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3451, i32 0, i32 8
  %3453 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3452, i32 0, i32 4
  %3454 = load ptr, ptr %3453, align 8, !tbaa !24
  %3455 = load i64, ptr %11, align 8, !tbaa !25
  %3456 = getelementptr inbounds double, ptr %3454, i64 %3455
  %3457 = load double, ptr %3456, align 8, !tbaa !29
  %3458 = call double @llvm.fmuladd.f64(double %3450, double %3457, double %3446)
  %3459 = load ptr, ptr %4, align 8, !tbaa !5
  %3460 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3459, i32 0, i32 11
  %3461 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3460, i32 0, i32 4
  %3462 = load ptr, ptr %3461, align 8, !tbaa !24
  %3463 = load i64, ptr %11, align 8, !tbaa !25
  %3464 = getelementptr inbounds double, ptr %3462, i64 %3463
  store double %3458, ptr %3464, align 8, !tbaa !29
  %3465 = load ptr, ptr %4, align 8, !tbaa !5
  %3466 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3465, i32 0, i32 18
  %3467 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %3466, i32 0, i32 0
  store i32 25, ptr %3467, align 8, !tbaa !9
  br label %4609

3468:                                             ; preds = %336
  %3469 = load ptr, ptr %4, align 8, !tbaa !5
  %3470 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3469, i32 0, i32 12
  %3471 = load double, ptr %3470, align 8, !tbaa !46
  %3472 = load ptr, ptr %4, align 8, !tbaa !5
  %3473 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3472, i32 0, i32 43
  store double %3471, ptr %3473, align 8, !tbaa !57
  %3474 = load double, ptr %13, align 8, !tbaa !29
  %3475 = load ptr, ptr %4, align 8, !tbaa !5
  %3476 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3475, i32 0, i32 7
  %3477 = load double, ptr %3476, align 8, !tbaa !42
  %3478 = load ptr, ptr %4, align 8, !tbaa !5
  %3479 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3478, i32 0, i32 8
  %3480 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3479, i32 0, i32 4
  %3481 = load ptr, ptr %3480, align 8, !tbaa !24
  %3482 = load i64, ptr %11, align 8, !tbaa !25
  %3483 = getelementptr inbounds double, ptr %3481, i64 %3482
  %3484 = load double, ptr %3483, align 8, !tbaa !29
  %3485 = call double @llvm.fmuladd.f64(double %3477, double %3484, double %3474)
  %3486 = load ptr, ptr %4, align 8, !tbaa !5
  %3487 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3486, i32 0, i32 11
  %3488 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3487, i32 0, i32 4
  %3489 = load ptr, ptr %3488, align 8, !tbaa !24
  %3490 = load i64, ptr %11, align 8, !tbaa !25
  %3491 = getelementptr inbounds double, ptr %3489, i64 %3490
  store double %3485, ptr %3491, align 8, !tbaa !29
  %3492 = load ptr, ptr %4, align 8, !tbaa !5
  %3493 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3492, i32 0, i32 18
  %3494 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %3493, i32 0, i32 0
  store i32 26, ptr %3494, align 8, !tbaa !9
  br label %4609

3495:                                             ; preds = %343
  %3496 = load ptr, ptr %4, align 8, !tbaa !5
  %3497 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3496, i32 0, i32 12
  %3498 = load double, ptr %3497, align 8, !tbaa !46
  %3499 = load ptr, ptr %4, align 8, !tbaa !5
  %3500 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3499, i32 0, i32 44
  store double %3498, ptr %3500, align 8, !tbaa !58
  %3501 = load ptr, ptr %4, align 8, !tbaa !5
  %3502 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3501, i32 0, i32 43
  %3503 = load double, ptr %3502, align 8, !tbaa !57
  %3504 = load ptr, ptr %4, align 8, !tbaa !5
  %3505 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3504, i32 0, i32 42
  %3506 = load double, ptr %3505, align 8, !tbaa !56
  %3507 = fsub double %3503, %3506
  %3508 = load ptr, ptr %4, align 8, !tbaa !5
  %3509 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3508, i32 0, i32 44
  %3510 = load double, ptr %3509, align 8, !tbaa !58
  %3511 = load ptr, ptr %4, align 8, !tbaa !5
  %3512 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3511, i32 0, i32 41
  %3513 = load double, ptr %3512, align 8, !tbaa !55
  %3514 = fsub double %3510, %3513
  %3515 = fneg double %3514
  %3516 = call double @llvm.fmuladd.f64(double 8.000000e+00, double %3507, double %3515)
  %3517 = load ptr, ptr %4, align 8, !tbaa !5
  %3518 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3517, i32 0, i32 7
  %3519 = load double, ptr %3518, align 8, !tbaa !42
  %3520 = fmul double 6.000000e+00, %3519
  %3521 = load ptr, ptr %4, align 8, !tbaa !5
  %3522 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3521, i32 0, i32 8
  %3523 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3522, i32 0, i32 4
  %3524 = load ptr, ptr %3523, align 8, !tbaa !24
  %3525 = load i64, ptr %11, align 8, !tbaa !25
  %3526 = getelementptr inbounds double, ptr %3524, i64 %3525
  %3527 = load double, ptr %3526, align 8, !tbaa !29
  %3528 = fmul double %3520, %3527
  %3529 = fdiv double %3516, %3528
  %3530 = load ptr, ptr %4, align 8, !tbaa !5
  %3531 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3530, i32 0, i32 13
  %3532 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3531, i32 0, i32 4
  %3533 = load ptr, ptr %3532, align 8, !tbaa !24
  %3534 = load i64, ptr %11, align 8, !tbaa !25
  %3535 = getelementptr inbounds double, ptr %3533, i64 %3534
  store double %3529, ptr %3535, align 8, !tbaa !29
  %3536 = load ptr, ptr %4, align 8, !tbaa !5
  %3537 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3536, i32 0, i32 36
  %3538 = load i64, ptr %3537, align 8, !tbaa !36
  %3539 = add nsw i64 %3538, 4
  %3540 = load ptr, ptr %4, align 8, !tbaa !5
  %3541 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3540, i32 0, i32 36
  store i64 %3539, ptr %3541, align 8, !tbaa !36
  br label %3713

3542:                                             ; preds = %3387
  %3543 = load double, ptr %13, align 8, !tbaa !29
  %3544 = load ptr, ptr %4, align 8, !tbaa !5
  %3545 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3544, i32 0, i32 7
  %3546 = load double, ptr %3545, align 8, !tbaa !42
  %3547 = load ptr, ptr %4, align 8, !tbaa !5
  %3548 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3547, i32 0, i32 8
  %3549 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3548, i32 0, i32 4
  %3550 = load ptr, ptr %3549, align 8, !tbaa !24
  %3551 = load i64, ptr %11, align 8, !tbaa !25
  %3552 = getelementptr inbounds double, ptr %3550, i64 %3551
  %3553 = load double, ptr %3552, align 8, !tbaa !29
  %3554 = fneg double %3546
  %3555 = call double @llvm.fmuladd.f64(double %3554, double %3553, double %3543)
  %3556 = load ptr, ptr %4, align 8, !tbaa !5
  %3557 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3556, i32 0, i32 45
  store double %3555, ptr %3557, align 8, !tbaa !59
  %3558 = load double, ptr %13, align 8, !tbaa !29
  %3559 = load ptr, ptr %4, align 8, !tbaa !5
  %3560 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3559, i32 0, i32 7
  %3561 = load double, ptr %3560, align 8, !tbaa !42
  %3562 = load ptr, ptr %4, align 8, !tbaa !5
  %3563 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3562, i32 0, i32 8
  %3564 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3563, i32 0, i32 4
  %3565 = load ptr, ptr %3564, align 8, !tbaa !24
  %3566 = load i64, ptr %11, align 8, !tbaa !25
  %3567 = getelementptr inbounds double, ptr %3565, i64 %3566
  %3568 = load double, ptr %3567, align 8, !tbaa !29
  %3569 = call double @llvm.fmuladd.f64(double %3561, double %3568, double %3558)
  %3570 = load ptr, ptr %4, align 8, !tbaa !5
  %3571 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3570, i32 0, i32 46
  store double %3569, ptr %3571, align 8, !tbaa !60
  %3572 = load ptr, ptr %4, align 8, !tbaa !5
  %3573 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3572, i32 0, i32 31
  %3574 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3573, i32 0, i32 4
  %3575 = load ptr, ptr %3574, align 8, !tbaa !24
  %3576 = load i64, ptr %11, align 8, !tbaa !25
  %3577 = getelementptr inbounds i8, ptr %3575, i64 %3576
  %3578 = load i8, ptr %3577, align 1, !tbaa !26, !range !27, !noundef !28
  %3579 = trunc i8 %3578 to i1
  br i1 %3579, label %3580, label %3602

3580:                                             ; preds = %3542
  %3581 = load ptr, ptr %4, align 8, !tbaa !5
  %3582 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3581, i32 0, i32 45
  %3583 = load double, ptr %3582, align 8, !tbaa !59
  %3584 = load ptr, ptr %4, align 8, !tbaa !5
  %3585 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3584, i32 0, i32 33
  %3586 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3585, i32 0, i32 4
  %3587 = load ptr, ptr %3586, align 8, !tbaa !24
  %3588 = load i64, ptr %11, align 8, !tbaa !25
  %3589 = getelementptr inbounds double, ptr %3587, i64 %3588
  %3590 = load double, ptr %3589, align 8, !tbaa !29
  %3591 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %3583, double noundef %3590)
  br i1 %3591, label %3592, label %3602

3592:                                             ; preds = %3580
  %3593 = load ptr, ptr %4, align 8, !tbaa !5
  %3594 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3593, i32 0, i32 33
  %3595 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3594, i32 0, i32 4
  %3596 = load ptr, ptr %3595, align 8, !tbaa !24
  %3597 = load i64, ptr %11, align 8, !tbaa !25
  %3598 = getelementptr inbounds double, ptr %3596, i64 %3597
  %3599 = load double, ptr %3598, align 8, !tbaa !29
  %3600 = load ptr, ptr %4, align 8, !tbaa !5
  %3601 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3600, i32 0, i32 45
  store double %3599, ptr %3601, align 8, !tbaa !59
  br label %3602

3602:                                             ; preds = %3592, %3580, %3542
  %3603 = load ptr, ptr %4, align 8, !tbaa !5
  %3604 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3603, i32 0, i32 32
  %3605 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3604, i32 0, i32 4
  %3606 = load ptr, ptr %3605, align 8, !tbaa !24
  %3607 = load i64, ptr %11, align 8, !tbaa !25
  %3608 = getelementptr inbounds i8, ptr %3606, i64 %3607
  %3609 = load i8, ptr %3608, align 1, !tbaa !26, !range !27, !noundef !28
  %3610 = trunc i8 %3609 to i1
  br i1 %3610, label %3611, label %3633

3611:                                             ; preds = %3602
  %3612 = load ptr, ptr %4, align 8, !tbaa !5
  %3613 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3612, i32 0, i32 46
  %3614 = load double, ptr %3613, align 8, !tbaa !60
  %3615 = load ptr, ptr %4, align 8, !tbaa !5
  %3616 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3615, i32 0, i32 34
  %3617 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3616, i32 0, i32 4
  %3618 = load ptr, ptr %3617, align 8, !tbaa !24
  %3619 = load i64, ptr %11, align 8, !tbaa !25
  %3620 = getelementptr inbounds double, ptr %3618, i64 %3619
  %3621 = load double, ptr %3620, align 8, !tbaa !29
  %3622 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %3614, double noundef %3621)
  br i1 %3622, label %3623, label %3633

3623:                                             ; preds = %3611
  %3624 = load ptr, ptr %4, align 8, !tbaa !5
  %3625 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3624, i32 0, i32 34
  %3626 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3625, i32 0, i32 4
  %3627 = load ptr, ptr %3626, align 8, !tbaa !24
  %3628 = load i64, ptr %11, align 8, !tbaa !25
  %3629 = getelementptr inbounds double, ptr %3627, i64 %3628
  %3630 = load double, ptr %3629, align 8, !tbaa !29
  %3631 = load ptr, ptr %4, align 8, !tbaa !5
  %3632 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3631, i32 0, i32 46
  store double %3630, ptr %3632, align 8, !tbaa !60
  br label %3633

3633:                                             ; preds = %3623, %3611, %3602
  %3634 = load ptr, ptr %4, align 8, !tbaa !5
  %3635 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3634, i32 0, i32 45
  %3636 = load double, ptr %3635, align 8, !tbaa !59
  %3637 = load ptr, ptr %4, align 8, !tbaa !5
  %3638 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3637, i32 0, i32 11
  %3639 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3638, i32 0, i32 4
  %3640 = load ptr, ptr %3639, align 8, !tbaa !24
  %3641 = load i64, ptr %11, align 8, !tbaa !25
  %3642 = getelementptr inbounds double, ptr %3640, i64 %3641
  store double %3636, ptr %3642, align 8, !tbaa !29
  %3643 = load ptr, ptr %4, align 8, !tbaa !5
  %3644 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3643, i32 0, i32 18
  %3645 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %3644, i32 0, i32 0
  store i32 27, ptr %3645, align 8, !tbaa !9
  br label %4609

3646:                                             ; preds = %350
  %3647 = load ptr, ptr %4, align 8, !tbaa !5
  %3648 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3647, i32 0, i32 12
  %3649 = load double, ptr %3648, align 8, !tbaa !46
  %3650 = load ptr, ptr %4, align 8, !tbaa !5
  %3651 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3650, i32 0, i32 42
  store double %3649, ptr %3651, align 8, !tbaa !56
  %3652 = load ptr, ptr %4, align 8, !tbaa !5
  %3653 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3652, i32 0, i32 46
  %3654 = load double, ptr %3653, align 8, !tbaa !60
  %3655 = load ptr, ptr %4, align 8, !tbaa !5
  %3656 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3655, i32 0, i32 11
  %3657 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3656, i32 0, i32 4
  %3658 = load ptr, ptr %3657, align 8, !tbaa !24
  %3659 = load i64, ptr %11, align 8, !tbaa !25
  %3660 = getelementptr inbounds double, ptr %3658, i64 %3659
  store double %3654, ptr %3660, align 8, !tbaa !29
  %3661 = load ptr, ptr %4, align 8, !tbaa !5
  %3662 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3661, i32 0, i32 18
  %3663 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %3662, i32 0, i32 0
  store i32 28, ptr %3663, align 8, !tbaa !9
  br label %4609

3664:                                             ; preds = %357
  %3665 = load ptr, ptr %4, align 8, !tbaa !5
  %3666 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3665, i32 0, i32 12
  %3667 = load double, ptr %3666, align 8, !tbaa !46
  %3668 = load ptr, ptr %4, align 8, !tbaa !5
  %3669 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3668, i32 0, i32 43
  store double %3667, ptr %3669, align 8, !tbaa !57
  %3670 = load ptr, ptr %4, align 8, !tbaa !5
  %3671 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3670, i32 0, i32 45
  %3672 = load double, ptr %3671, align 8, !tbaa !59
  %3673 = load ptr, ptr %4, align 8, !tbaa !5
  %3674 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3673, i32 0, i32 46
  %3675 = load double, ptr %3674, align 8, !tbaa !60
  %3676 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %3672, double noundef %3675)
  br i1 %3676, label %3677, label %3699

3677:                                             ; preds = %3664
  %3678 = load ptr, ptr %4, align 8, !tbaa !5
  %3679 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3678, i32 0, i32 43
  %3680 = load double, ptr %3679, align 8, !tbaa !57
  %3681 = load ptr, ptr %4, align 8, !tbaa !5
  %3682 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3681, i32 0, i32 42
  %3683 = load double, ptr %3682, align 8, !tbaa !56
  %3684 = fsub double %3680, %3683
  %3685 = load ptr, ptr %4, align 8, !tbaa !5
  %3686 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3685, i32 0, i32 46
  %3687 = load double, ptr %3686, align 8, !tbaa !60
  %3688 = load ptr, ptr %4, align 8, !tbaa !5
  %3689 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3688, i32 0, i32 45
  %3690 = load double, ptr %3689, align 8, !tbaa !59
  %3691 = fsub double %3687, %3690
  %3692 = fdiv double %3684, %3691
  %3693 = load ptr, ptr %4, align 8, !tbaa !5
  %3694 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3693, i32 0, i32 13
  %3695 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3694, i32 0, i32 4
  %3696 = load ptr, ptr %3695, align 8, !tbaa !24
  %3697 = load i64, ptr %11, align 8, !tbaa !25
  %3698 = getelementptr inbounds double, ptr %3696, i64 %3697
  store double %3692, ptr %3698, align 8, !tbaa !29
  br label %3706

3699:                                             ; preds = %3664
  %3700 = load ptr, ptr %4, align 8, !tbaa !5
  %3701 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3700, i32 0, i32 13
  %3702 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3701, i32 0, i32 4
  %3703 = load ptr, ptr %3702, align 8, !tbaa !24
  %3704 = load i64, ptr %11, align 8, !tbaa !25
  %3705 = getelementptr inbounds double, ptr %3703, i64 %3704
  store double 0.000000e+00, ptr %3705, align 8, !tbaa !29
  br label %3706

3706:                                             ; preds = %3699, %3677
  %3707 = load ptr, ptr %4, align 8, !tbaa !5
  %3708 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3707, i32 0, i32 36
  %3709 = load i64, ptr %3708, align 8, !tbaa !36
  %3710 = add nsw i64 %3709, 2
  %3711 = load ptr, ptr %4, align 8, !tbaa !5
  %3712 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3711, i32 0, i32 36
  store i64 %3710, ptr %3712, align 8, !tbaa !36
  br label %3713

3713:                                             ; preds = %3706, %3495
  %3714 = load double, ptr %13, align 8, !tbaa !29
  %3715 = load ptr, ptr %4, align 8, !tbaa !5
  %3716 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3715, i32 0, i32 11
  %3717 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3716, i32 0, i32 4
  %3718 = load ptr, ptr %3717, align 8, !tbaa !24
  %3719 = load i64, ptr %11, align 8, !tbaa !25
  %3720 = getelementptr inbounds double, ptr %3718, i64 %3719
  store double %3714, ptr %3720, align 8, !tbaa !29
  %3721 = load i64, ptr %11, align 8, !tbaa !25
  %3722 = add nsw i64 %3721, 1
  store i64 %3722, ptr %11, align 8, !tbaa !25
  br label %3298

3723:                                             ; preds = %3303
  %3724 = load ptr, ptr %4, align 8, !tbaa !5
  %3725 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3724, i32 0, i32 40
  %3726 = load double, ptr %3725, align 8, !tbaa !54
  %3727 = load ptr, ptr %4, align 8, !tbaa !5
  %3728 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3727, i32 0, i32 12
  store double %3726, ptr %3728, align 8, !tbaa !46
  %3729 = load ptr, ptr %4, align 8, !tbaa !5
  %3730 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3729, i32 0, i32 14
  store i8 0, ptr %3730, align 8, !tbaa !50
  br label %3731

3731:                                             ; preds = %3723, %3277
  %3732 = load ptr, ptr %4, align 8, !tbaa !5
  %3733 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3732, i32 0, i32 66
  %3734 = load ptr, ptr %4, align 8, !tbaa !5
  %3735 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3734, i32 0, i32 8
  %3736 = load ptr, ptr %4, align 8, !tbaa !5
  %3737 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3736, i32 0, i32 68
  %3738 = load ptr, ptr %4, align 8, !tbaa !5
  %3739 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3738, i32 0, i32 29
  %3740 = load ptr, ptr %4, align 8, !tbaa !5
  %3741 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3740, i32 0, i32 53
  %3742 = load double, ptr %3741, align 8, !tbaa !65
  %3743 = load ptr, ptr %4, align 8, !tbaa !5
  %3744 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3743, i32 0, i32 11
  %3745 = load ptr, ptr %4, align 8, !tbaa !5
  %3746 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3745, i32 0, i32 12
  %3747 = load double, ptr %3746, align 8, !tbaa !46
  %3748 = load ptr, ptr %4, align 8, !tbaa !5
  %3749 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3748, i32 0, i32 13
  %3750 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl31smoothnessmonitorenqueuepoint1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_dS3_PNS_8ae_stateE(ptr noundef %3733, ptr noundef %3735, ptr noundef %3737, ptr noundef %3739, double noundef %3742, ptr noundef %3744, double noundef %3747, ptr noundef %3749, ptr noundef %3750)
  %3751 = load ptr, ptr %4, align 8, !tbaa !5
  %3752 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3751, i32 0, i32 12
  %3753 = load ptr, ptr %4, align 8, !tbaa !5
  %3754 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3753, i32 0, i32 13
  %3755 = load i64, ptr %9, align 8, !tbaa !25
  %3756 = load ptr, ptr %4, align 8, !tbaa !5
  %3757 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3756, i32 0, i32 57
  %3758 = load double, ptr %3757, align 8, !tbaa !71
  %3759 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl12trimfunctionEPdPNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef %3752, ptr noundef %3754, i64 noundef %3755, double noundef %3758, ptr noundef %3759)
  %3760 = load ptr, ptr %4, align 8, !tbaa !5
  %3761 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3760, i32 0, i32 12
  %3762 = load double, ptr %3761, align 8, !tbaa !46
  %3763 = load ptr, ptr %4, align 8, !tbaa !5
  %3764 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3763, i32 0, i32 27
  store double %3762, ptr %3764, align 8, !tbaa !68
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %3765

3765:                                             ; preds = %3861, %3731
  %3766 = load i64, ptr %11, align 8, !tbaa !25
  %3767 = load i64, ptr %9, align 8, !tbaa !25
  %3768 = sub nsw i64 %3767, 1
  %3769 = icmp sle i64 %3766, %3768
  br i1 %3769, label %3770, label %3864

3770:                                             ; preds = %3765
  %3771 = load ptr, ptr %4, align 8, !tbaa !5
  %3772 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3771, i32 0, i32 13
  %3773 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3772, i32 0, i32 4
  %3774 = load ptr, ptr %3773, align 8, !tbaa !24
  %3775 = load i64, ptr %11, align 8, !tbaa !25
  %3776 = getelementptr inbounds double, ptr %3774, i64 %3775
  %3777 = load double, ptr %3776, align 8, !tbaa !29
  %3778 = load ptr, ptr %4, align 8, !tbaa !5
  %3779 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3778, i32 0, i32 23
  %3780 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3779, i32 0, i32 4
  %3781 = load ptr, ptr %3780, align 8, !tbaa !24
  %3782 = load i64, ptr %11, align 8, !tbaa !25
  %3783 = getelementptr inbounds double, ptr %3781, i64 %3782
  store double %3777, ptr %3783, align 8, !tbaa !29
  %3784 = load ptr, ptr %4, align 8, !tbaa !5
  %3785 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3784, i32 0, i32 13
  %3786 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3785, i32 0, i32 4
  %3787 = load ptr, ptr %3786, align 8, !tbaa !24
  %3788 = load i64, ptr %11, align 8, !tbaa !25
  %3789 = getelementptr inbounds double, ptr %3787, i64 %3788
  %3790 = load double, ptr %3789, align 8, !tbaa !29
  %3791 = load ptr, ptr %4, align 8, !tbaa !5
  %3792 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3791, i32 0, i32 24
  %3793 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3792, i32 0, i32 4
  %3794 = load ptr, ptr %3793, align 8, !tbaa !24
  %3795 = load i64, ptr %11, align 8, !tbaa !25
  %3796 = getelementptr inbounds double, ptr %3794, i64 %3795
  store double %3790, ptr %3796, align 8, !tbaa !29
  %3797 = load ptr, ptr %4, align 8, !tbaa !5
  %3798 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3797, i32 0, i32 31
  %3799 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3798, i32 0, i32 4
  %3800 = load ptr, ptr %3799, align 8, !tbaa !24
  %3801 = load i64, ptr %11, align 8, !tbaa !25
  %3802 = getelementptr inbounds i8, ptr %3800, i64 %3801
  %3803 = load i8, ptr %3802, align 1, !tbaa !26, !range !27, !noundef !28
  %3804 = trunc i8 %3803 to i1
  br i1 %3804, label %3805, label %3828

3805:                                             ; preds = %3770
  %3806 = load ptr, ptr %4, align 8, !tbaa !5
  %3807 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3806, i32 0, i32 22
  %3808 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3807, i32 0, i32 4
  %3809 = load ptr, ptr %3808, align 8, !tbaa !24
  %3810 = load i64, ptr %11, align 8, !tbaa !25
  %3811 = getelementptr inbounds double, ptr %3809, i64 %3810
  %3812 = load double, ptr %3811, align 8, !tbaa !29
  %3813 = load ptr, ptr %4, align 8, !tbaa !5
  %3814 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3813, i32 0, i32 33
  %3815 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3814, i32 0, i32 4
  %3816 = load ptr, ptr %3815, align 8, !tbaa !24
  %3817 = load i64, ptr %11, align 8, !tbaa !25
  %3818 = getelementptr inbounds double, ptr %3816, i64 %3817
  %3819 = load double, ptr %3818, align 8, !tbaa !29
  %3820 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %3812, double noundef %3819)
  br i1 %3820, label %3821, label %3828

3821:                                             ; preds = %3805
  %3822 = load ptr, ptr %4, align 8, !tbaa !5
  %3823 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3822, i32 0, i32 24
  %3824 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3823, i32 0, i32 4
  %3825 = load ptr, ptr %3824, align 8, !tbaa !24
  %3826 = load i64, ptr %11, align 8, !tbaa !25
  %3827 = getelementptr inbounds double, ptr %3825, i64 %3826
  store double 0.000000e+00, ptr %3827, align 8, !tbaa !29
  br label %3828

3828:                                             ; preds = %3821, %3805, %3770
  %3829 = load ptr, ptr %4, align 8, !tbaa !5
  %3830 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3829, i32 0, i32 32
  %3831 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3830, i32 0, i32 4
  %3832 = load ptr, ptr %3831, align 8, !tbaa !24
  %3833 = load i64, ptr %11, align 8, !tbaa !25
  %3834 = getelementptr inbounds i8, ptr %3832, i64 %3833
  %3835 = load i8, ptr %3834, align 1, !tbaa !26, !range !27, !noundef !28
  %3836 = trunc i8 %3835 to i1
  br i1 %3836, label %3837, label %3860

3837:                                             ; preds = %3828
  %3838 = load ptr, ptr %4, align 8, !tbaa !5
  %3839 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3838, i32 0, i32 22
  %3840 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3839, i32 0, i32 4
  %3841 = load ptr, ptr %3840, align 8, !tbaa !24
  %3842 = load i64, ptr %11, align 8, !tbaa !25
  %3843 = getelementptr inbounds double, ptr %3841, i64 %3842
  %3844 = load double, ptr %3843, align 8, !tbaa !29
  %3845 = load ptr, ptr %4, align 8, !tbaa !5
  %3846 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3845, i32 0, i32 34
  %3847 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3846, i32 0, i32 4
  %3848 = load ptr, ptr %3847, align 8, !tbaa !24
  %3849 = load i64, ptr %11, align 8, !tbaa !25
  %3850 = getelementptr inbounds double, ptr %3848, i64 %3849
  %3851 = load double, ptr %3850, align 8, !tbaa !29
  %3852 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %3844, double noundef %3851)
  br i1 %3852, label %3853, label %3860

3853:                                             ; preds = %3837
  %3854 = load ptr, ptr %4, align 8, !tbaa !5
  %3855 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3854, i32 0, i32 24
  %3856 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3855, i32 0, i32 4
  %3857 = load ptr, ptr %3856, align 8, !tbaa !24
  %3858 = load i64, ptr %11, align 8, !tbaa !25
  %3859 = getelementptr inbounds double, ptr %3857, i64 %3858
  store double 0.000000e+00, ptr %3859, align 8, !tbaa !29
  br label %3860

3860:                                             ; preds = %3853, %3837, %3828
  br label %3861

3861:                                             ; preds = %3860
  %3862 = load i64, ptr %11, align 8, !tbaa !25
  %3863 = add nsw i64 %3862, 1
  store i64 %3863, ptr %11, align 8, !tbaa !25
  br label %3765, !llvm.loop !87

3864:                                             ; preds = %3765
  %3865 = load i64, ptr %9, align 8, !tbaa !25
  %3866 = load ptr, ptr %4, align 8, !tbaa !5
  %3867 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3866, i32 0, i32 22
  %3868 = load ptr, ptr %4, align 8, !tbaa !5
  %3869 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3868, i32 0, i32 27
  %3870 = load ptr, ptr %4, align 8, !tbaa !5
  %3871 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3870, i32 0, i32 24
  %3872 = load ptr, ptr %4, align 8, !tbaa !5
  %3873 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3872, i32 0, i32 29
  %3874 = load ptr, ptr %4, align 8, !tbaa !5
  %3875 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3874, i32 0, i32 53
  %3876 = load ptr, ptr %4, align 8, !tbaa !5
  %3877 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3876, i32 0, i32 54
  %3878 = load double, ptr %3877, align 8, !tbaa !66
  %3879 = load double, ptr @_ZN11alglib_implL10minbc_gtolE, align 8, !tbaa !29
  %3880 = load ptr, ptr %4, align 8, !tbaa !5
  %3881 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3880, i32 0, i32 51
  %3882 = load ptr, ptr %4, align 8, !tbaa !5
  %3883 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3882, i32 0, i32 55
  %3884 = load ptr, ptr %4, align 8, !tbaa !5
  %3885 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3884, i32 0, i32 56
  %3886 = load ptr, ptr %4, align 8, !tbaa !5
  %3887 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3886, i32 0, i32 52
  %3888 = 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 %3865, ptr noundef %3867, ptr noundef %3869, ptr noundef %3871, ptr noundef %3873, ptr noundef %3875, double noundef %3878, double noundef %3879, ptr noundef %17, ptr noundef %3881, ptr noundef %3883, ptr noundef %3885, ptr noundef %3887, ptr noundef %3888)
  br label %3156

3889:                                             ; preds = %3161
  %3890 = load ptr, ptr %4, align 8, !tbaa !5
  %3891 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3890, i32 0, i32 66
  %3892 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl35smoothnessmonitorfinalizelinesearchEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef %3891, ptr noundef %3892)
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %3893

3893:                                             ; preds = %3977, %3889
  %3894 = load i64, ptr %11, align 8, !tbaa !25
  %3895 = load i64, ptr %9, align 8, !tbaa !25
  %3896 = sub nsw i64 %3895, 1
  %3897 = icmp sle i64 %3894, %3896
  br i1 %3897, label %3898, label %3980

3898:                                             ; preds = %3893
  %3899 = load ptr, ptr %4, align 8, !tbaa !5
  %3900 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3899, i32 0, i32 31
  %3901 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3900, i32 0, i32 4
  %3902 = load ptr, ptr %3901, align 8, !tbaa !24
  %3903 = load i64, ptr %11, align 8, !tbaa !25
  %3904 = getelementptr inbounds i8, ptr %3902, i64 %3903
  %3905 = load i8, ptr %3904, align 1, !tbaa !26, !range !27, !noundef !28
  %3906 = trunc i8 %3905 to i1
  br i1 %3906, label %3907, label %3937

3907:                                             ; preds = %3898
  %3908 = load ptr, ptr %4, align 8, !tbaa !5
  %3909 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3908, i32 0, i32 22
  %3910 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3909, i32 0, i32 4
  %3911 = load ptr, ptr %3910, align 8, !tbaa !24
  %3912 = load i64, ptr %11, align 8, !tbaa !25
  %3913 = getelementptr inbounds double, ptr %3911, i64 %3912
  %3914 = load double, ptr %3913, align 8, !tbaa !29
  %3915 = load ptr, ptr %4, align 8, !tbaa !5
  %3916 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3915, i32 0, i32 33
  %3917 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3916, i32 0, i32 4
  %3918 = load ptr, ptr %3917, align 8, !tbaa !24
  %3919 = load i64, ptr %11, align 8, !tbaa !25
  %3920 = getelementptr inbounds double, ptr %3918, i64 %3919
  %3921 = load double, ptr %3920, align 8, !tbaa !29
  %3922 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %3914, double noundef %3921)
  br i1 %3922, label %3923, label %3937

3923:                                             ; preds = %3907
  %3924 = load ptr, ptr %4, align 8, !tbaa !5
  %3925 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3924, i32 0, i32 33
  %3926 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3925, i32 0, i32 4
  %3927 = load ptr, ptr %3926, align 8, !tbaa !24
  %3928 = load i64, ptr %11, align 8, !tbaa !25
  %3929 = getelementptr inbounds double, ptr %3927, i64 %3928
  %3930 = load double, ptr %3929, align 8, !tbaa !29
  %3931 = load ptr, ptr %4, align 8, !tbaa !5
  %3932 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3931, i32 0, i32 22
  %3933 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3932, i32 0, i32 4
  %3934 = load ptr, ptr %3933, align 8, !tbaa !24
  %3935 = load i64, ptr %11, align 8, !tbaa !25
  %3936 = getelementptr inbounds double, ptr %3934, i64 %3935
  store double %3930, ptr %3936, align 8, !tbaa !29
  br label %3937

3937:                                             ; preds = %3923, %3907, %3898
  %3938 = load ptr, ptr %4, align 8, !tbaa !5
  %3939 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3938, i32 0, i32 32
  %3940 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3939, i32 0, i32 4
  %3941 = load ptr, ptr %3940, align 8, !tbaa !24
  %3942 = load i64, ptr %11, align 8, !tbaa !25
  %3943 = getelementptr inbounds i8, ptr %3941, i64 %3942
  %3944 = load i8, ptr %3943, align 1, !tbaa !26, !range !27, !noundef !28
  %3945 = trunc i8 %3944 to i1
  br i1 %3945, label %3946, label %3976

3946:                                             ; preds = %3937
  %3947 = load ptr, ptr %4, align 8, !tbaa !5
  %3948 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3947, i32 0, i32 22
  %3949 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3948, i32 0, i32 4
  %3950 = load ptr, ptr %3949, align 8, !tbaa !24
  %3951 = load i64, ptr %11, align 8, !tbaa !25
  %3952 = getelementptr inbounds double, ptr %3950, i64 %3951
  %3953 = load double, ptr %3952, align 8, !tbaa !29
  %3954 = load ptr, ptr %4, align 8, !tbaa !5
  %3955 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3954, i32 0, i32 34
  %3956 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3955, i32 0, i32 4
  %3957 = load ptr, ptr %3956, align 8, !tbaa !24
  %3958 = load i64, ptr %11, align 8, !tbaa !25
  %3959 = getelementptr inbounds double, ptr %3957, i64 %3958
  %3960 = load double, ptr %3959, align 8, !tbaa !29
  %3961 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %3953, double noundef %3960)
  br i1 %3961, label %3962, label %3976

3962:                                             ; preds = %3946
  %3963 = load ptr, ptr %4, align 8, !tbaa !5
  %3964 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3963, i32 0, i32 34
  %3965 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3964, i32 0, i32 4
  %3966 = load ptr, ptr %3965, align 8, !tbaa !24
  %3967 = load i64, ptr %11, align 8, !tbaa !25
  %3968 = getelementptr inbounds double, ptr %3966, i64 %3967
  %3969 = load double, ptr %3968, align 8, !tbaa !29
  %3970 = load ptr, ptr %4, align 8, !tbaa !5
  %3971 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3970, i32 0, i32 22
  %3972 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3971, i32 0, i32 4
  %3973 = load ptr, ptr %3972, align 8, !tbaa !24
  %3974 = load i64, ptr %11, align 8, !tbaa !25
  %3975 = getelementptr inbounds double, ptr %3973, i64 %3974
  store double %3969, ptr %3975, align 8, !tbaa !29
  br label %3976

3976:                                             ; preds = %3962, %3946, %3937
  br label %3977

3977:                                             ; preds = %3976
  %3978 = load i64, ptr %11, align 8, !tbaa !25
  %3979 = add nsw i64 %3978, 1
  store i64 %3979, ptr %11, align 8, !tbaa !25
  br label %3893, !llvm.loop !88

3980:                                             ; preds = %3893
  %3981 = load ptr, ptr %4, align 8, !tbaa !5
  %3982 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3981, i32 0, i32 60
  %3983 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %3982, i32 0, i32 6
  %3984 = load ptr, ptr %3983, align 8, !tbaa !24
  %3985 = load ptr, ptr %4, align 8, !tbaa !5
  %3986 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3985, i32 0, i32 63
  %3987 = load i64, ptr %3986, align 8, !tbaa !80
  %3988 = getelementptr inbounds ptr, ptr %3984, i64 %3987
  %3989 = load ptr, ptr %3988, align 8, !tbaa !5
  %3990 = getelementptr inbounds double, ptr %3989, i64 0
  %3991 = load ptr, ptr %4, align 8, !tbaa !5
  %3992 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3991, i32 0, i32 19
  %3993 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3992, i32 0, i32 4
  %3994 = load ptr, ptr %3993, align 8, !tbaa !24
  %3995 = getelementptr inbounds double, ptr %3994, i64 0
  %3996 = load i64, ptr %9, align 8, !tbaa !25
  %3997 = sub nsw i64 %3996, 1
  %3998 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %3997)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %3990, i64 noundef 1, ptr noundef %3995, i64 noundef 1, i64 noundef %3998)
  %3999 = load ptr, ptr %4, align 8, !tbaa !5
  %4000 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3999, i32 0, i32 59
  %4001 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %4000, i32 0, i32 6
  %4002 = load ptr, ptr %4001, align 8, !tbaa !24
  %4003 = load ptr, ptr %4, align 8, !tbaa !5
  %4004 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4003, i32 0, i32 63
  %4005 = load i64, ptr %4004, align 8, !tbaa !80
  %4006 = getelementptr inbounds ptr, ptr %4002, i64 %4005
  %4007 = load ptr, ptr %4006, align 8, !tbaa !5
  %4008 = getelementptr inbounds double, ptr %4007, i64 0
  %4009 = load ptr, ptr %4, align 8, !tbaa !5
  %4010 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4009, i32 0, i32 21
  %4011 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4010, i32 0, i32 4
  %4012 = load ptr, ptr %4011, align 8, !tbaa !24
  %4013 = getelementptr inbounds double, ptr %4012, i64 0
  %4014 = load i64, ptr %9, align 8, !tbaa !25
  %4015 = sub nsw i64 %4014, 1
  %4016 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %4015)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %4008, i64 noundef 1, ptr noundef %4013, i64 noundef 1, i64 noundef %4016)
  %4017 = load ptr, ptr %4, align 8, !tbaa !5
  %4018 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4017, i32 0, i32 60
  %4019 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %4018, i32 0, i32 6
  %4020 = load ptr, ptr %4019, align 8, !tbaa !24
  %4021 = load ptr, ptr %4, align 8, !tbaa !5
  %4022 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4021, i32 0, i32 63
  %4023 = load i64, ptr %4022, align 8, !tbaa !80
  %4024 = getelementptr inbounds ptr, ptr %4020, i64 %4023
  %4025 = load ptr, ptr %4024, align 8, !tbaa !5
  %4026 = getelementptr inbounds double, ptr %4025, i64 0
  %4027 = load ptr, ptr %4, align 8, !tbaa !5
  %4028 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4027, i32 0, i32 22
  %4029 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4028, i32 0, i32 4
  %4030 = load ptr, ptr %4029, align 8, !tbaa !24
  %4031 = getelementptr inbounds double, ptr %4030, i64 0
  %4032 = load i64, ptr %9, align 8, !tbaa !25
  %4033 = sub nsw i64 %4032, 1
  %4034 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %4033)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %4026, i64 noundef 1, ptr noundef %4031, i64 noundef 1, i64 noundef %4034)
  %4035 = load ptr, ptr %4, align 8, !tbaa !5
  %4036 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4035, i32 0, i32 59
  %4037 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %4036, i32 0, i32 6
  %4038 = load ptr, ptr %4037, align 8, !tbaa !24
  %4039 = load ptr, ptr %4, align 8, !tbaa !5
  %4040 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4039, i32 0, i32 63
  %4041 = load i64, ptr %4040, align 8, !tbaa !80
  %4042 = getelementptr inbounds ptr, ptr %4038, i64 %4041
  %4043 = load ptr, ptr %4042, align 8, !tbaa !5
  %4044 = getelementptr inbounds double, ptr %4043, i64 0
  %4045 = load ptr, ptr %4, align 8, !tbaa !5
  %4046 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4045, i32 0, i32 24
  %4047 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4046, i32 0, i32 4
  %4048 = load ptr, ptr %4047, align 8, !tbaa !24
  %4049 = getelementptr inbounds double, ptr %4048, i64 0
  %4050 = load i64, ptr %9, align 8, !tbaa !25
  %4051 = sub nsw i64 %4050, 1
  %4052 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %4051)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %4044, i64 noundef 1, ptr noundef %4049, i64 noundef 1, i64 noundef %4052)
  %4053 = load ptr, ptr %4, align 8, !tbaa !5
  %4054 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4053, i32 0, i32 27
  %4055 = load double, ptr %4054, align 8, !tbaa !68
  store double %4055, ptr %13, align 8, !tbaa !29
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %4056

4056:                                             ; preds = %4071, %3980
  %4057 = load i64, ptr %11, align 8, !tbaa !25
  %4058 = load i64, ptr %9, align 8, !tbaa !25
  %4059 = sub nsw i64 %4058, 1
  %4060 = icmp sle i64 %4057, %4059
  br i1 %4060, label %4061, label %4074

4061:                                             ; preds = %4056
  %4062 = load double, ptr %13, align 8, !tbaa !29
  %4063 = load ptr, ptr %4, align 8, !tbaa !5
  %4064 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4063, i32 0, i32 23
  %4065 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4064, i32 0, i32 4
  %4066 = load ptr, ptr %4065, align 8, !tbaa !24
  %4067 = load i64, ptr %11, align 8, !tbaa !25
  %4068 = getelementptr inbounds double, ptr %4066, i64 %4067
  %4069 = load double, ptr %4068, align 8, !tbaa !29
  %4070 = call double @llvm.fmuladd.f64(double 1.000000e-01, double %4062, double %4069)
  store double %4070, ptr %13, align 8, !tbaa !29
  br label %4071

4071:                                             ; preds = %4061
  %4072 = load i64, ptr %11, align 8, !tbaa !25
  %4073 = add nsw i64 %4072, 1
  store i64 %4073, ptr %11, align 8, !tbaa !25
  br label %4056, !llvm.loop !89

4074:                                             ; preds = %4056
  %4075 = load double, ptr %13, align 8, !tbaa !29
  %4076 = load ptr, ptr %5, align 8, !tbaa !5
  %4077 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %4075, ptr noundef %4076)
  br i1 %4077, label %4083, label %4078

4078:                                             ; preds = %4074
  %4079 = load ptr, ptr %4, align 8, !tbaa !5
  %4080 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4079, i32 0, i32 38
  store i64 -8, ptr %4080, align 8, !tbaa !33
  store i8 0, ptr %23, align 1, !tbaa !26
  %4081 = load i8, ptr %23, align 1, !tbaa !26, !range !27, !noundef !28
  %4082 = trunc i8 %4081 to i1
  store i1 %4082, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4735

4083:                                             ; preds = %4074
  %4084 = load ptr, ptr %4, align 8, !tbaa !5
  %4085 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4084, i32 0, i32 17
  %4086 = load i8, ptr %4085, align 1, !tbaa !34, !range !27, !noundef !28
  %4087 = trunc i8 %4086 to i1
  br i1 %4087, label %4088, label %4093

4088:                                             ; preds = %4083
  %4089 = load ptr, ptr %4, align 8, !tbaa !5
  %4090 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4089, i32 0, i32 38
  store i64 8, ptr %4090, align 8, !tbaa !33
  store i8 0, ptr %23, align 1, !tbaa !26
  %4091 = load i8, ptr %23, align 1, !tbaa !26, !range !27, !noundef !28
  %4092 = trunc i8 %4091 to i1
  store i1 %4092, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4735

4093:                                             ; preds = %4083
  %4094 = load i64, ptr %17, align 8, !tbaa !25
  %4095 = icmp ne i64 %4094, 1
  br i1 %4095, label %4096, label %4097

4096:                                             ; preds = %4093
  br label %4599

4097:                                             ; preds = %4093
  store i8 0, ptr %21, align 1, !tbaa !26
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %4098

4098:                                             ; preds = %4188, %4097
  %4099 = load i64, ptr %11, align 8, !tbaa !25
  %4100 = load i64, ptr %9, align 8, !tbaa !25
  %4101 = sub nsw i64 %4100, 1
  %4102 = icmp sle i64 %4099, %4101
  br i1 %4102, label %4103, label %4191

4103:                                             ; preds = %4098
  %4104 = load ptr, ptr %4, align 8, !tbaa !5
  %4105 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4104, i32 0, i32 31
  %4106 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4105, i32 0, i32 4
  %4107 = load ptr, ptr %4106, align 8, !tbaa !24
  %4108 = load i64, ptr %11, align 8, !tbaa !25
  %4109 = getelementptr inbounds i8, ptr %4107, i64 %4108
  %4110 = load i8, ptr %4109, align 1, !tbaa !26, !range !27, !noundef !28
  %4111 = trunc i8 %4110 to i1
  br i1 %4111, label %4112, label %4145

4112:                                             ; preds = %4103
  %4113 = load ptr, ptr %4, align 8, !tbaa !5
  %4114 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4113, i32 0, i32 22
  %4115 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4114, i32 0, i32 4
  %4116 = load ptr, ptr %4115, align 8, !tbaa !24
  %4117 = load i64, ptr %11, align 8, !tbaa !25
  %4118 = getelementptr inbounds double, ptr %4116, i64 %4117
  %4119 = load double, ptr %4118, align 8, !tbaa !29
  %4120 = load ptr, ptr %4, align 8, !tbaa !5
  %4121 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4120, i32 0, i32 33
  %4122 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4121, i32 0, i32 4
  %4123 = load ptr, ptr %4122, align 8, !tbaa !24
  %4124 = load i64, ptr %11, align 8, !tbaa !25
  %4125 = getelementptr inbounds double, ptr %4123, i64 %4124
  %4126 = load double, ptr %4125, align 8, !tbaa !29
  %4127 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %4119, double noundef %4126)
  br i1 %4127, label %4128, label %4145

4128:                                             ; preds = %4112
  %4129 = load ptr, ptr %4, align 8, !tbaa !5
  %4130 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4129, i32 0, i32 22
  %4131 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4130, i32 0, i32 4
  %4132 = load ptr, ptr %4131, align 8, !tbaa !24
  %4133 = load i64, ptr %11, align 8, !tbaa !25
  %4134 = getelementptr inbounds double, ptr %4132, i64 %4133
  %4135 = load double, ptr %4134, align 8, !tbaa !29
  %4136 = load ptr, ptr %4, align 8, !tbaa !5
  %4137 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4136, i32 0, i32 19
  %4138 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4137, i32 0, i32 4
  %4139 = load ptr, ptr %4138, align 8, !tbaa !24
  %4140 = load i64, ptr %11, align 8, !tbaa !25
  %4141 = getelementptr inbounds double, ptr %4139, i64 %4140
  %4142 = load double, ptr %4141, align 8, !tbaa !29
  %4143 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %4135, double noundef %4142)
  br i1 %4143, label %4144, label %4145

4144:                                             ; preds = %4128
  store i8 1, ptr %21, align 1, !tbaa !26
  br label %4145

4145:                                             ; preds = %4144, %4128, %4112, %4103
  %4146 = load ptr, ptr %4, align 8, !tbaa !5
  %4147 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4146, i32 0, i32 32
  %4148 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4147, i32 0, i32 4
  %4149 = load ptr, ptr %4148, align 8, !tbaa !24
  %4150 = load i64, ptr %11, align 8, !tbaa !25
  %4151 = getelementptr inbounds i8, ptr %4149, i64 %4150
  %4152 = load i8, ptr %4151, align 1, !tbaa !26, !range !27, !noundef !28
  %4153 = trunc i8 %4152 to i1
  br i1 %4153, label %4154, label %4187

4154:                                             ; preds = %4145
  %4155 = load ptr, ptr %4, align 8, !tbaa !5
  %4156 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4155, i32 0, i32 22
  %4157 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4156, i32 0, i32 4
  %4158 = load ptr, ptr %4157, align 8, !tbaa !24
  %4159 = load i64, ptr %11, align 8, !tbaa !25
  %4160 = getelementptr inbounds double, ptr %4158, i64 %4159
  %4161 = load double, ptr %4160, align 8, !tbaa !29
  %4162 = load ptr, ptr %4, align 8, !tbaa !5
  %4163 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4162, i32 0, i32 34
  %4164 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4163, i32 0, i32 4
  %4165 = load ptr, ptr %4164, align 8, !tbaa !24
  %4166 = load i64, ptr %11, align 8, !tbaa !25
  %4167 = getelementptr inbounds double, ptr %4165, i64 %4166
  %4168 = load double, ptr %4167, align 8, !tbaa !29
  %4169 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %4161, double noundef %4168)
  br i1 %4169, label %4170, label %4187

4170:                                             ; preds = %4154
  %4171 = load ptr, ptr %4, align 8, !tbaa !5
  %4172 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4171, i32 0, i32 22
  %4173 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4172, i32 0, i32 4
  %4174 = load ptr, ptr %4173, align 8, !tbaa !24
  %4175 = load i64, ptr %11, align 8, !tbaa !25
  %4176 = getelementptr inbounds double, ptr %4174, i64 %4175
  %4177 = load double, ptr %4176, align 8, !tbaa !29
  %4178 = load ptr, ptr %4, align 8, !tbaa !5
  %4179 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4178, i32 0, i32 19
  %4180 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4179, i32 0, i32 4
  %4181 = load ptr, ptr %4180, align 8, !tbaa !24
  %4182 = load i64, ptr %11, align 8, !tbaa !25
  %4183 = getelementptr inbounds double, ptr %4181, i64 %4182
  %4184 = load double, ptr %4183, align 8, !tbaa !29
  %4185 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %4177, double noundef %4184)
  br i1 %4185, label %4186, label %4187

4186:                                             ; preds = %4170
  store i8 1, ptr %21, align 1, !tbaa !26
  br label %4187

4187:                                             ; preds = %4186, %4170, %4154, %4145
  br label %4188

4188:                                             ; preds = %4187
  %4189 = load i64, ptr %11, align 8, !tbaa !25
  %4190 = add nsw i64 %4189, 1
  store i64 %4190, ptr %11, align 8, !tbaa !25
  br label %4098, !llvm.loop !90

4191:                                             ; preds = %4098
  %4192 = load ptr, ptr %4, align 8, !tbaa !5
  %4193 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4192, i32 0, i32 26
  %4194 = load double, ptr %4193, align 8, !tbaa !51
  %4195 = load ptr, ptr %4, align 8, !tbaa !5
  %4196 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4195, i32 0, i32 28
  store double %4194, ptr %4196, align 8, !tbaa !74
  %4197 = load ptr, ptr %4, align 8, !tbaa !5
  %4198 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4197, i32 0, i32 27
  %4199 = load double, ptr %4198, align 8, !tbaa !68
  %4200 = load ptr, ptr %4, align 8, !tbaa !5
  %4201 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4200, i32 0, i32 26
  store double %4199, ptr %4201, align 8, !tbaa !51
  %4202 = load ptr, ptr %4, align 8, !tbaa !5
  %4203 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4202, i32 0, i32 25
  %4204 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4203, i32 0, i32 4
  %4205 = load ptr, ptr %4204, align 8, !tbaa !24
  %4206 = getelementptr inbounds double, ptr %4205, i64 0
  %4207 = load ptr, ptr %4, align 8, !tbaa !5
  %4208 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4207, i32 0, i32 19
  %4209 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4208, i32 0, i32 4
  %4210 = load ptr, ptr %4209, align 8, !tbaa !24
  %4211 = getelementptr inbounds double, ptr %4210, i64 0
  %4212 = load i64, ptr %9, align 8, !tbaa !25
  %4213 = sub nsw i64 %4212, 1
  %4214 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %4213)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %4206, i64 noundef 1, ptr noundef %4211, i64 noundef 1, i64 noundef %4214)
  %4215 = load ptr, ptr %4, align 8, !tbaa !5
  %4216 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4215, i32 0, i32 19
  %4217 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4216, i32 0, i32 4
  %4218 = load ptr, ptr %4217, align 8, !tbaa !24
  %4219 = getelementptr inbounds double, ptr %4218, i64 0
  %4220 = load ptr, ptr %4, align 8, !tbaa !5
  %4221 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4220, i32 0, i32 22
  %4222 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4221, i32 0, i32 4
  %4223 = load ptr, ptr %4222, align 8, !tbaa !24
  %4224 = getelementptr inbounds double, ptr %4223, i64 0
  %4225 = load i64, ptr %9, align 8, !tbaa !25
  %4226 = sub nsw i64 %4225, 1
  %4227 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %4226)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %4219, i64 noundef 1, ptr noundef %4224, i64 noundef 1, i64 noundef %4227)
  %4228 = load ptr, ptr %4, align 8, !tbaa !5
  %4229 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4228, i32 0, i32 21
  %4230 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4229, i32 0, i32 4
  %4231 = load ptr, ptr %4230, align 8, !tbaa !24
  %4232 = getelementptr inbounds double, ptr %4231, i64 0
  %4233 = load ptr, ptr %4, align 8, !tbaa !5
  %4234 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4233, i32 0, i32 24
  %4235 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4234, i32 0, i32 4
  %4236 = load ptr, ptr %4235, align 8, !tbaa !24
  %4237 = getelementptr inbounds double, ptr %4236, i64 0
  %4238 = load i64, ptr %9, align 8, !tbaa !25
  %4239 = sub nsw i64 %4238, 1
  %4240 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %4239)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %4232, i64 noundef 1, ptr noundef %4237, i64 noundef 1, i64 noundef %4240)
  %4241 = load ptr, ptr %4, align 8, !tbaa !5
  %4242 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4241, i32 0, i32 20
  %4243 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4242, i32 0, i32 4
  %4244 = load ptr, ptr %4243, align 8, !tbaa !24
  %4245 = getelementptr inbounds double, ptr %4244, i64 0
  %4246 = load ptr, ptr %4, align 8, !tbaa !5
  %4247 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4246, i32 0, i32 23
  %4248 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4247, i32 0, i32 4
  %4249 = load ptr, ptr %4248, align 8, !tbaa !24
  %4250 = getelementptr inbounds double, ptr %4249, i64 0
  %4251 = load i64, ptr %9, align 8, !tbaa !25
  %4252 = sub nsw i64 %4251, 1
  %4253 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %4252)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %4245, i64 noundef 1, ptr noundef %4250, i64 noundef 1, i64 noundef %4253)
  %4254 = load ptr, ptr %4, align 8, !tbaa !5
  %4255 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4254, i32 0, i32 5
  %4256 = load i8, ptr %4255, align 8, !tbaa !52, !range !27, !noundef !28
  %4257 = trunc i8 %4256 to i1
  br i1 %4257, label %4259, label %4258

4258:                                             ; preds = %4191
  br label %4283

4259:                                             ; preds = %4191
  %4260 = load ptr, ptr %4, align 8, !tbaa !5
  %4261 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4260, i32 0, i32 11
  %4262 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4261, i32 0, i32 4
  %4263 = load ptr, ptr %4262, align 8, !tbaa !24
  %4264 = getelementptr inbounds double, ptr %4263, i64 0
  %4265 = load ptr, ptr %4, align 8, !tbaa !5
  %4266 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4265, i32 0, i32 19
  %4267 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4266, i32 0, i32 4
  %4268 = load ptr, ptr %4267, align 8, !tbaa !24
  %4269 = getelementptr inbounds double, ptr %4268, i64 0
  %4270 = load i64, ptr %9, align 8, !tbaa !25
  %4271 = sub nsw i64 %4270, 1
  %4272 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %4271)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %4264, i64 noundef 1, ptr noundef %4269, i64 noundef 1, i64 noundef %4272)
  %4273 = load ptr, ptr %4, align 8, !tbaa !5
  %4274 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef %4273, ptr noundef %4274)
  %4275 = load ptr, ptr %4, align 8, !tbaa !5
  %4276 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4275, i32 0, i32 16
  store i8 1, ptr %4276, align 2, !tbaa !53
  %4277 = load ptr, ptr %4, align 8, !tbaa !5
  %4278 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4277, i32 0, i32 18
  %4279 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4278, i32 0, i32 0
  store i32 29, ptr %4279, align 8, !tbaa !9
  br label %4609

4280:                                             ; preds = %364
  %4281 = load ptr, ptr %4, align 8, !tbaa !5
  %4282 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4281, i32 0, i32 16
  store i8 0, ptr %4282, align 2, !tbaa !53
  br label %4283

4283:                                             ; preds = %4280, %4258
  %4284 = load ptr, ptr %4, align 8, !tbaa !5
  %4285 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4284, i32 0, i32 35
  %4286 = load i64, ptr %4285, align 8, !tbaa !35
  %4287 = add nsw i64 %4286, 1
  %4288 = load ptr, ptr %4, align 8, !tbaa !5
  %4289 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4288, i32 0, i32 35
  store i64 %4287, ptr %4289, align 8, !tbaa !35
  %4290 = load ptr, ptr %4, align 8, !tbaa !5
  %4291 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4290, i32 0, i32 63
  %4292 = load i64, ptr %4291, align 8, !tbaa !80
  %4293 = load i64, ptr %10, align 8, !tbaa !25
  %4294 = icmp eq i64 %4292, %4293
  br i1 %4294, label %4295, label %4388

4295:                                             ; preds = %4283
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %4296

4296:                                             ; preds = %4344, %4295
  %4297 = load i64, ptr %11, align 8, !tbaa !25
  %4298 = load ptr, ptr %4, align 8, !tbaa !5
  %4299 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4298, i32 0, i32 63
  %4300 = load i64, ptr %4299, align 8, !tbaa !80
  %4301 = sub nsw i64 %4300, 1
  %4302 = icmp sle i64 %4297, %4301
  br i1 %4302, label %4303, label %4347

4303:                                             ; preds = %4296
  %4304 = load ptr, ptr %4, align 8, !tbaa !5
  %4305 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4304, i32 0, i32 60
  %4306 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %4305, i32 0, i32 6
  %4307 = load ptr, ptr %4306, align 8, !tbaa !24
  %4308 = load i64, ptr %11, align 8, !tbaa !25
  %4309 = getelementptr inbounds ptr, ptr %4307, i64 %4308
  %4310 = load ptr, ptr %4309, align 8, !tbaa !5
  %4311 = getelementptr inbounds double, ptr %4310, i64 0
  %4312 = load ptr, ptr %4, align 8, !tbaa !5
  %4313 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4312, i32 0, i32 60
  %4314 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %4313, i32 0, i32 6
  %4315 = load ptr, ptr %4314, align 8, !tbaa !24
  %4316 = load i64, ptr %11, align 8, !tbaa !25
  %4317 = add nsw i64 %4316, 1
  %4318 = getelementptr inbounds ptr, ptr %4315, i64 %4317
  %4319 = load ptr, ptr %4318, align 8, !tbaa !5
  %4320 = getelementptr inbounds double, ptr %4319, i64 0
  %4321 = load i64, ptr %9, align 8, !tbaa !25
  %4322 = sub nsw i64 %4321, 1
  %4323 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %4322)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %4311, i64 noundef 1, ptr noundef %4320, i64 noundef 1, i64 noundef %4323)
  %4324 = load ptr, ptr %4, align 8, !tbaa !5
  %4325 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4324, i32 0, i32 59
  %4326 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %4325, i32 0, i32 6
  %4327 = load ptr, ptr %4326, align 8, !tbaa !24
  %4328 = load i64, ptr %11, align 8, !tbaa !25
  %4329 = getelementptr inbounds ptr, ptr %4327, i64 %4328
  %4330 = load ptr, ptr %4329, align 8, !tbaa !5
  %4331 = getelementptr inbounds double, ptr %4330, i64 0
  %4332 = load ptr, ptr %4, align 8, !tbaa !5
  %4333 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4332, i32 0, i32 59
  %4334 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %4333, i32 0, i32 6
  %4335 = load ptr, ptr %4334, align 8, !tbaa !24
  %4336 = load i64, ptr %11, align 8, !tbaa !25
  %4337 = add nsw i64 %4336, 1
  %4338 = getelementptr inbounds ptr, ptr %4335, i64 %4337
  %4339 = load ptr, ptr %4338, align 8, !tbaa !5
  %4340 = getelementptr inbounds double, ptr %4339, i64 0
  %4341 = load i64, ptr %9, align 8, !tbaa !25
  %4342 = sub nsw i64 %4341, 1
  %4343 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %4342)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %4331, i64 noundef 1, ptr noundef %4340, i64 noundef 1, i64 noundef %4343)
  br label %4344

4344:                                             ; preds = %4303
  %4345 = load i64, ptr %11, align 8, !tbaa !25
  %4346 = add nsw i64 %4345, 1
  store i64 %4346, ptr %11, align 8, !tbaa !25
  br label %4296, !llvm.loop !91

4347:                                             ; preds = %4296
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %4348

4348:                                             ; preds = %4384, %4347
  %4349 = load i64, ptr %11, align 8, !tbaa !25
  %4350 = load ptr, ptr %4, align 8, !tbaa !5
  %4351 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4350, i32 0, i32 63
  %4352 = load i64, ptr %4351, align 8, !tbaa !80
  %4353 = sub nsw i64 %4352, 2
  %4354 = icmp sle i64 %4349, %4353
  br i1 %4354, label %4355, label %4387

4355:                                             ; preds = %4348
  %4356 = load ptr, ptr %4, align 8, !tbaa !5
  %4357 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4356, i32 0, i32 61
  %4358 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4357, i32 0, i32 4
  %4359 = load ptr, ptr %4358, align 8, !tbaa !24
  %4360 = load i64, ptr %11, align 8, !tbaa !25
  %4361 = add nsw i64 %4360, 1
  %4362 = getelementptr inbounds double, ptr %4359, i64 %4361
  %4363 = load double, ptr %4362, align 8, !tbaa !29
  %4364 = load ptr, ptr %4, align 8, !tbaa !5
  %4365 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4364, i32 0, i32 61
  %4366 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4365, i32 0, i32 4
  %4367 = load ptr, ptr %4366, align 8, !tbaa !24
  %4368 = load i64, ptr %11, align 8, !tbaa !25
  %4369 = getelementptr inbounds double, ptr %4367, i64 %4368
  store double %4363, ptr %4369, align 8, !tbaa !29
  %4370 = load ptr, ptr %4, align 8, !tbaa !5
  %4371 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4370, i32 0, i32 62
  %4372 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4371, i32 0, i32 4
  %4373 = load ptr, ptr %4372, align 8, !tbaa !24
  %4374 = load i64, ptr %11, align 8, !tbaa !25
  %4375 = add nsw i64 %4374, 1
  %4376 = getelementptr inbounds double, ptr %4373, i64 %4375
  %4377 = load double, ptr %4376, align 8, !tbaa !29
  %4378 = load ptr, ptr %4, align 8, !tbaa !5
  %4379 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4378, i32 0, i32 62
  %4380 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4379, i32 0, i32 4
  %4381 = load ptr, ptr %4380, align 8, !tbaa !24
  %4382 = load i64, ptr %11, align 8, !tbaa !25
  %4383 = getelementptr inbounds double, ptr %4381, i64 %4382
  store double %4377, ptr %4383, align 8, !tbaa !29
  br label %4384

4384:                                             ; preds = %4355
  %4385 = load i64, ptr %11, align 8, !tbaa !25
  %4386 = add nsw i64 %4385, 1
  store i64 %4386, ptr %11, align 8, !tbaa !25
  br label %4348, !llvm.loop !92

4387:                                             ; preds = %4348
  br label %4395

4388:                                             ; preds = %4283
  %4389 = load ptr, ptr %4, align 8, !tbaa !5
  %4390 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4389, i32 0, i32 63
  %4391 = load i64, ptr %4390, align 8, !tbaa !80
  %4392 = add nsw i64 %4391, 1
  %4393 = load ptr, ptr %4, align 8, !tbaa !5
  %4394 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4393, i32 0, i32 63
  store i64 %4392, ptr %4394, align 8, !tbaa !80
  br label %4395

4395:                                             ; preds = %4388, %4387
  %4396 = load ptr, ptr %4, align 8, !tbaa !5
  %4397 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4396, i32 0, i32 59
  %4398 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %4397, i32 0, i32 6
  %4399 = load ptr, ptr %4398, align 8, !tbaa !24
  %4400 = load ptr, ptr %4, align 8, !tbaa !5
  %4401 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4400, i32 0, i32 63
  %4402 = load i64, ptr %4401, align 8, !tbaa !80
  %4403 = sub nsw i64 %4402, 1
  %4404 = getelementptr inbounds ptr, ptr %4399, i64 %4403
  %4405 = load ptr, ptr %4404, align 8, !tbaa !5
  %4406 = getelementptr inbounds double, ptr %4405, i64 0
  %4407 = load ptr, ptr %4, align 8, !tbaa !5
  %4408 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4407, i32 0, i32 60
  %4409 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %4408, i32 0, i32 6
  %4410 = load ptr, ptr %4409, align 8, !tbaa !24
  %4411 = load ptr, ptr %4, align 8, !tbaa !5
  %4412 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4411, i32 0, i32 63
  %4413 = load i64, ptr %4412, align 8, !tbaa !80
  %4414 = sub nsw i64 %4413, 1
  %4415 = getelementptr inbounds ptr, ptr %4410, i64 %4414
  %4416 = load ptr, ptr %4415, align 8, !tbaa !5
  %4417 = getelementptr inbounds double, ptr %4416, i64 0
  %4418 = load i64, ptr %9, align 8, !tbaa !25
  %4419 = sub nsw i64 %4418, 1
  %4420 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %4419)
  %4421 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %4406, i64 noundef 1, ptr noundef %4417, i64 noundef 1, i64 noundef %4420)
  store double %4421, ptr %13, align 8, !tbaa !29
  %4422 = load ptr, ptr %4, align 8, !tbaa !5
  %4423 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4422, i32 0, i32 59
  %4424 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %4423, i32 0, i32 6
  %4425 = load ptr, ptr %4424, align 8, !tbaa !24
  %4426 = load ptr, ptr %4, align 8, !tbaa !5
  %4427 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4426, i32 0, i32 63
  %4428 = load i64, ptr %4427, align 8, !tbaa !80
  %4429 = sub nsw i64 %4428, 1
  %4430 = getelementptr inbounds ptr, ptr %4425, i64 %4429
  %4431 = load ptr, ptr %4430, align 8, !tbaa !5
  %4432 = getelementptr inbounds double, ptr %4431, i64 0
  %4433 = load ptr, ptr %4, align 8, !tbaa !5
  %4434 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4433, i32 0, i32 59
  %4435 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %4434, i32 0, i32 6
  %4436 = load ptr, ptr %4435, align 8, !tbaa !24
  %4437 = load ptr, ptr %4, align 8, !tbaa !5
  %4438 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4437, i32 0, i32 63
  %4439 = load i64, ptr %4438, align 8, !tbaa !80
  %4440 = sub nsw i64 %4439, 1
  %4441 = getelementptr inbounds ptr, ptr %4436, i64 %4440
  %4442 = load ptr, ptr %4441, align 8, !tbaa !5
  %4443 = getelementptr inbounds double, ptr %4442, i64 0
  %4444 = load i64, ptr %9, align 8, !tbaa !25
  %4445 = sub nsw i64 %4444, 1
  %4446 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %4445)
  %4447 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %4432, i64 noundef 1, ptr noundef %4443, i64 noundef 1, i64 noundef %4446)
  store double %4447, ptr %14, align 8, !tbaa !29
  %4448 = load double, ptr %13, align 8, !tbaa !29
  %4449 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %4448, double noundef 0.000000e+00)
  br i1 %4449, label %4453, label %4450

4450:                                             ; preds = %4395
  %4451 = load double, ptr %14, align 8, !tbaa !29
  %4452 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %4451, double noundef 0.000000e+00)
  br i1 %4452, label %4453, label %4454

4453:                                             ; preds = %4450, %4395
  br label %4599

4454:                                             ; preds = %4450
  %4455 = load double, ptr %13, align 8, !tbaa !29
  %4456 = fdiv double 1.000000e+00, %4455
  %4457 = load ptr, ptr %4, align 8, !tbaa !5
  %4458 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4457, i32 0, i32 61
  %4459 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4458, i32 0, i32 4
  %4460 = load ptr, ptr %4459, align 8, !tbaa !24
  %4461 = load ptr, ptr %4, align 8, !tbaa !5
  %4462 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4461, i32 0, i32 63
  %4463 = load i64, ptr %4462, align 8, !tbaa !80
  %4464 = sub nsw i64 %4463, 1
  %4465 = getelementptr inbounds double, ptr %4460, i64 %4464
  store double %4456, ptr %4465, align 8, !tbaa !29
  %4466 = load ptr, ptr %4, align 8, !tbaa !5
  %4467 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4466, i32 0, i32 63
  %4468 = load i64, ptr %4467, align 8, !tbaa !80
  %4469 = load i64, ptr %10, align 8, !tbaa !25
  %4470 = icmp sle i64 %4468, %4469
  %4471 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %4470, ptr noundef @.str.482, ptr noundef %4471)
  store double 0.000000e+00, ptr %13, align 8, !tbaa !29
  store double 0.000000e+00, ptr %14, align 8, !tbaa !29
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %4472

4472:                                             ; preds = %4524, %4454
  %4473 = load i64, ptr %11, align 8, !tbaa !25
  %4474 = load i64, ptr %9, align 8, !tbaa !25
  %4475 = sub nsw i64 %4474, 1
  %4476 = icmp sle i64 %4473, %4475
  br i1 %4476, label %4477, label %4527

4477:                                             ; preds = %4472
  %4478 = load double, ptr %13, align 8, !tbaa !29
  %4479 = load ptr, ptr %4, align 8, !tbaa !5
  %4480 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4479, i32 0, i32 19
  %4481 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4480, i32 0, i32 4
  %4482 = load ptr, ptr %4481, align 8, !tbaa !24
  %4483 = load i64, ptr %11, align 8, !tbaa !25
  %4484 = getelementptr inbounds double, ptr %4482, i64 %4483
  %4485 = load double, ptr %4484, align 8, !tbaa !29
  %4486 = load ptr, ptr %4, align 8, !tbaa !5
  %4487 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4486, i32 0, i32 25
  %4488 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4487, i32 0, i32 4
  %4489 = load ptr, ptr %4488, align 8, !tbaa !24
  %4490 = load i64, ptr %11, align 8, !tbaa !25
  %4491 = getelementptr inbounds double, ptr %4489, i64 %4490
  %4492 = load double, ptr %4491, align 8, !tbaa !29
  %4493 = fsub double %4485, %4492
  %4494 = load ptr, ptr %4, align 8, !tbaa !5
  %4495 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4494, i32 0, i32 8
  %4496 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4495, i32 0, i32 4
  %4497 = load ptr, ptr %4496, align 8, !tbaa !24
  %4498 = load i64, ptr %11, align 8, !tbaa !25
  %4499 = getelementptr inbounds double, ptr %4497, i64 %4498
  %4500 = load double, ptr %4499, align 8, !tbaa !29
  %4501 = fdiv double %4493, %4500
  %4502 = load ptr, ptr %5, align 8, !tbaa !5
  %4503 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %4501, ptr noundef %4502)
  %4504 = fadd double %4478, %4503
  store double %4504, ptr %13, align 8, !tbaa !29
  %4505 = load double, ptr %14, align 8, !tbaa !29
  %4506 = load ptr, ptr %4, align 8, !tbaa !5
  %4507 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4506, i32 0, i32 19
  %4508 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4507, i32 0, i32 4
  %4509 = load ptr, ptr %4508, align 8, !tbaa !24
  %4510 = load i64, ptr %11, align 8, !tbaa !25
  %4511 = getelementptr inbounds double, ptr %4509, i64 %4510
  %4512 = load double, ptr %4511, align 8, !tbaa !29
  %4513 = load ptr, ptr %4, align 8, !tbaa !5
  %4514 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4513, i32 0, i32 25
  %4515 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4514, i32 0, i32 4
  %4516 = load ptr, ptr %4515, align 8, !tbaa !24
  %4517 = load i64, ptr %11, align 8, !tbaa !25
  %4518 = getelementptr inbounds double, ptr %4516, i64 %4517
  %4519 = load double, ptr %4518, align 8, !tbaa !29
  %4520 = fsub double %4512, %4519
  %4521 = load ptr, ptr %5, align 8, !tbaa !5
  %4522 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %4520, ptr noundef %4521)
  %4523 = fadd double %4505, %4522
  store double %4523, ptr %14, align 8, !tbaa !29
  br label %4524

4524:                                             ; preds = %4477
  %4525 = load i64, ptr %11, align 8, !tbaa !25
  %4526 = add nsw i64 %4525, 1
  store i64 %4526, ptr %11, align 8, !tbaa !25
  br label %4472, !llvm.loop !93

4527:                                             ; preds = %4472
  %4528 = load ptr, ptr %4, align 8, !tbaa !5
  %4529 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4528, i32 0, i32 30
  %4530 = load double, ptr %13, align 8, !tbaa !29
  %4531 = load ptr, ptr %5, align 8, !tbaa !5
  %4532 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %4530, ptr noundef %4531)
  %4533 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL30minbc_updateestimateofgoodstepEPddPNS_8ae_stateE(ptr noundef %4529, double noundef %4532, ptr noundef %4533)
  %4534 = load ptr, ptr %4, align 8, !tbaa !5
  %4535 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4534, i32 0, i32 4
  %4536 = load i64, ptr %4535, align 8, !tbaa !78
  %4537 = icmp sgt i64 %4536, 0
  br i1 %4537, label %4538, label %4551

4538:                                             ; preds = %4527
  %4539 = load ptr, ptr %4, align 8, !tbaa !5
  %4540 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4539, i32 0, i32 35
  %4541 = load i64, ptr %4540, align 8, !tbaa !35
  %4542 = load ptr, ptr %4, align 8, !tbaa !5
  %4543 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4542, i32 0, i32 4
  %4544 = load i64, ptr %4543, align 8, !tbaa !78
  %4545 = icmp sge i64 %4541, %4544
  br i1 %4545, label %4546, label %4551

4546:                                             ; preds = %4538
  %4547 = load ptr, ptr %4, align 8, !tbaa !5
  %4548 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4547, i32 0, i32 38
  store i64 5, ptr %4548, align 8, !tbaa !33
  store i8 0, ptr %23, align 1, !tbaa !26
  %4549 = load i8, ptr %23, align 1, !tbaa !26, !range !27, !noundef !28
  %4550 = trunc i8 %4549 to i1
  store i1 %4550, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4735

4551:                                             ; preds = %4538, %4527
  %4552 = load i8, ptr %21, align 1, !tbaa !26, !range !27, !noundef !28
  %4553 = trunc i8 %4552 to i1
  br i1 %4553, label %4554, label %4557

4554:                                             ; preds = %4551
  %4555 = load ptr, ptr %4, align 8, !tbaa !5
  %4556 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4555, i32 0, i32 63
  store i64 0, ptr %4556, align 8, !tbaa !80
  br label %4596

4557:                                             ; preds = %4551
  store double 0.000000e+00, ptr %13, align 8, !tbaa !29
  store i64 0, ptr %11, align 8, !tbaa !25
  br label %4558

4558:                                             ; preds = %4583, %4557
  %4559 = load i64, ptr %11, align 8, !tbaa !25
  %4560 = load i64, ptr %9, align 8, !tbaa !25
  %4561 = sub nsw i64 %4560, 1
  %4562 = icmp sle i64 %4559, %4561
  br i1 %4562, label %4563, label %4586

4563:                                             ; preds = %4558
  %4564 = load double, ptr %13, align 8, !tbaa !29
  %4565 = load ptr, ptr %4, align 8, !tbaa !5
  %4566 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4565, i32 0, i32 21
  %4567 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4566, i32 0, i32 4
  %4568 = load ptr, ptr %4567, align 8, !tbaa !24
  %4569 = load i64, ptr %11, align 8, !tbaa !25
  %4570 = getelementptr inbounds double, ptr %4568, i64 %4569
  %4571 = load double, ptr %4570, align 8, !tbaa !29
  %4572 = load ptr, ptr %4, align 8, !tbaa !5
  %4573 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4572, i32 0, i32 8
  %4574 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4573, i32 0, i32 4
  %4575 = load ptr, ptr %4574, align 8, !tbaa !24
  %4576 = load i64, ptr %11, align 8, !tbaa !25
  %4577 = getelementptr inbounds double, ptr %4575, i64 %4576
  %4578 = load double, ptr %4577, align 8, !tbaa !29
  %4579 = fmul double %4571, %4578
  %4580 = load ptr, ptr %5, align 8, !tbaa !5
  %4581 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %4579, ptr noundef %4580)
  %4582 = fadd double %4564, %4581
  store double %4582, ptr %13, align 8, !tbaa !29
  br label %4583

4583:                                             ; preds = %4563
  %4584 = load i64, ptr %11, align 8, !tbaa !25
  %4585 = add nsw i64 %4584, 1
  store i64 %4585, ptr %11, align 8, !tbaa !25
  br label %4558, !llvm.loop !94

4586:                                             ; preds = %4558
  %4587 = load double, ptr %13, align 8, !tbaa !29
  %4588 = load ptr, ptr %5, align 8, !tbaa !5
  %4589 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %4587, ptr noundef %4588)
  %4590 = load double, ptr %20, align 8, !tbaa !29
  %4591 = load double, ptr %19, align 8, !tbaa !29
  %4592 = fmul double %4590, %4591
  %4593 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %4589, double noundef %4592)
  br i1 %4593, label %4594, label %4595

4594:                                             ; preds = %4586
  br label %4599

4595:                                             ; preds = %4586
  br label %4596

4596:                                             ; preds = %4595, %4554
  %4597 = load i64, ptr %18, align 8, !tbaa !25
  %4598 = add nsw i64 %4597, 1
  store i64 %4598, ptr %18, align 8, !tbaa !25
  br label %2712

4599:                                             ; preds = %4594, %4453, %4096, %3032, %2717
  %4600 = load double, ptr %20, align 8, !tbaa !29
  %4601 = load double, ptr @_ZN11alglib_implL21minbc_decaycorrectionE, align 8, !tbaa !29
  %4602 = fmul double %4600, %4601
  %4603 = load double, ptr @_ZN11alglib_implL14minbc_mindecayE, align 8, !tbaa !29
  %4604 = load ptr, ptr %5, align 8, !tbaa !5
  %4605 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %4602, double noundef %4603, ptr noundef %4604)
  store double %4605, ptr %20, align 8, !tbaa !29
  br label %768

4606:                                             ; No predecessors!
  store i8 0, ptr %23, align 1, !tbaa !26
  %4607 = load i8, ptr %23, align 1, !tbaa !26, !range !27, !noundef !28
  %4608 = trunc i8 %4607 to i1
  store i1 %4608, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4735

4609:                                             ; preds = %4259, %3646, %3633, %3468, %3440, %3411, %3388, %3286, %3271, %2463, %2052, %2039, %1874, %1846, %1817, %1794, %1692, %1677, %1152, %1139, %980, %952, %923, %900, %798, %789, %730, %698, %689, %611
  store i8 1, ptr %23, align 1, !tbaa !26
  %4610 = load i64, ptr %6, align 8, !tbaa !25
  %4611 = load ptr, ptr %4, align 8, !tbaa !5
  %4612 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4611, i32 0, i32 18
  %4613 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4612, i32 0, i32 1
  %4614 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4613, i32 0, i32 4
  %4615 = load ptr, ptr %4614, align 8, !tbaa !24
  %4616 = getelementptr inbounds i64, ptr %4615, i64 0
  store i64 %4610, ptr %4616, align 8, !tbaa !25
  %4617 = load i64, ptr %9, align 8, !tbaa !25
  %4618 = load ptr, ptr %4, align 8, !tbaa !5
  %4619 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4618, i32 0, i32 18
  %4620 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4619, i32 0, i32 1
  %4621 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4620, i32 0, i32 4
  %4622 = load ptr, ptr %4621, align 8, !tbaa !24
  %4623 = getelementptr inbounds i64, ptr %4622, i64 1
  store i64 %4617, ptr %4623, align 8, !tbaa !25
  %4624 = load i64, ptr %10, align 8, !tbaa !25
  %4625 = load ptr, ptr %4, align 8, !tbaa !5
  %4626 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4625, i32 0, i32 18
  %4627 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4626, i32 0, i32 1
  %4628 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4627, i32 0, i32 4
  %4629 = load ptr, ptr %4628, align 8, !tbaa !24
  %4630 = getelementptr inbounds i64, ptr %4629, i64 2
  store i64 %4624, ptr %4630, align 8, !tbaa !25
  %4631 = load i64, ptr %11, align 8, !tbaa !25
  %4632 = load ptr, ptr %4, align 8, !tbaa !5
  %4633 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4632, i32 0, i32 18
  %4634 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4633, i32 0, i32 1
  %4635 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4634, i32 0, i32 4
  %4636 = load ptr, ptr %4635, align 8, !tbaa !24
  %4637 = getelementptr inbounds i64, ptr %4636, i64 3
  store i64 %4631, ptr %4637, align 8, !tbaa !25
  %4638 = load i64, ptr %12, align 8, !tbaa !25
  %4639 = load ptr, ptr %4, align 8, !tbaa !5
  %4640 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4639, i32 0, i32 18
  %4641 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4640, i32 0, i32 1
  %4642 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4641, i32 0, i32 4
  %4643 = load ptr, ptr %4642, align 8, !tbaa !24
  %4644 = getelementptr inbounds i64, ptr %4643, i64 4
  store i64 %4638, ptr %4644, align 8, !tbaa !25
  %4645 = load i64, ptr %17, align 8, !tbaa !25
  %4646 = load ptr, ptr %4, align 8, !tbaa !5
  %4647 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4646, i32 0, i32 18
  %4648 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4647, i32 0, i32 1
  %4649 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4648, i32 0, i32 4
  %4650 = load ptr, ptr %4649, align 8, !tbaa !24
  %4651 = getelementptr inbounds i64, ptr %4650, i64 5
  store i64 %4645, ptr %4651, align 8, !tbaa !25
  %4652 = load i64, ptr %18, align 8, !tbaa !25
  %4653 = load ptr, ptr %4, align 8, !tbaa !5
  %4654 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4653, i32 0, i32 18
  %4655 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4654, i32 0, i32 1
  %4656 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4655, i32 0, i32 4
  %4657 = load ptr, ptr %4656, align 8, !tbaa !24
  %4658 = getelementptr inbounds i64, ptr %4657, i64 6
  store i64 %4652, ptr %4658, align 8, !tbaa !25
  %4659 = load i8, ptr %16, align 1, !tbaa !26, !range !27, !noundef !28
  %4660 = trunc i8 %4659 to i1
  %4661 = load ptr, ptr %4, align 8, !tbaa !5
  %4662 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4661, i32 0, i32 18
  %4663 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4662, i32 0, i32 2
  %4664 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4663, i32 0, i32 4
  %4665 = load ptr, ptr %4664, align 8, !tbaa !24
  %4666 = getelementptr inbounds i8, ptr %4665, i64 0
  %4667 = zext i1 %4660 to i8
  store i8 %4667, ptr %4666, align 1, !tbaa !26
  %4668 = load i8, ptr %21, align 1, !tbaa !26, !range !27, !noundef !28
  %4669 = trunc i8 %4668 to i1
  %4670 = load ptr, ptr %4, align 8, !tbaa !5
  %4671 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4670, i32 0, i32 18
  %4672 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4671, i32 0, i32 2
  %4673 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4672, i32 0, i32 4
  %4674 = load ptr, ptr %4673, align 8, !tbaa !24
  %4675 = getelementptr inbounds i8, ptr %4674, i64 1
  %4676 = zext i1 %4669 to i8
  store i8 %4676, ptr %4675, align 1, !tbaa !26
  %4677 = load double, ptr %7, align 8, !tbaa !29
  %4678 = load ptr, ptr %4, align 8, !tbaa !5
  %4679 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4678, i32 0, i32 18
  %4680 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4679, i32 0, i32 3
  %4681 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4680, i32 0, i32 4
  %4682 = load ptr, ptr %4681, align 8, !tbaa !24
  %4683 = getelementptr inbounds double, ptr %4682, i64 0
  store double %4677, ptr %4683, align 8, !tbaa !29
  %4684 = load double, ptr %8, align 8, !tbaa !29
  %4685 = load ptr, ptr %4, align 8, !tbaa !5
  %4686 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4685, i32 0, i32 18
  %4687 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4686, i32 0, i32 3
  %4688 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4687, i32 0, i32 4
  %4689 = load ptr, ptr %4688, align 8, !tbaa !24
  %4690 = getelementptr inbounds double, ptr %4689, i64 1
  store double %4684, ptr %4690, align 8, !tbaa !29
  %4691 = load double, ptr %13, align 8, !tbaa !29
  %4692 = load ptr, ptr %4, align 8, !tbaa !5
  %4693 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4692, i32 0, i32 18
  %4694 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4693, i32 0, i32 3
  %4695 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4694, i32 0, i32 4
  %4696 = load ptr, ptr %4695, align 8, !tbaa !24
  %4697 = getelementptr inbounds double, ptr %4696, i64 2
  store double %4691, ptr %4697, align 8, !tbaa !29
  %4698 = load double, ptr %14, align 8, !tbaa !29
  %4699 = load ptr, ptr %4, align 8, !tbaa !5
  %4700 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4699, i32 0, i32 18
  %4701 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4700, i32 0, i32 3
  %4702 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4701, i32 0, i32 4
  %4703 = load ptr, ptr %4702, align 8, !tbaa !24
  %4704 = getelementptr inbounds double, ptr %4703, i64 3
  store double %4698, ptr %4704, align 8, !tbaa !29
  %4705 = load double, ptr %15, align 8, !tbaa !29
  %4706 = load ptr, ptr %4, align 8, !tbaa !5
  %4707 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4706, i32 0, i32 18
  %4708 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4707, i32 0, i32 3
  %4709 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4708, i32 0, i32 4
  %4710 = load ptr, ptr %4709, align 8, !tbaa !24
  %4711 = getelementptr inbounds double, ptr %4710, i64 4
  store double %4705, ptr %4711, align 8, !tbaa !29
  %4712 = load double, ptr %19, align 8, !tbaa !29
  %4713 = load ptr, ptr %4, align 8, !tbaa !5
  %4714 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4713, i32 0, i32 18
  %4715 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4714, i32 0, i32 3
  %4716 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4715, i32 0, i32 4
  %4717 = load ptr, ptr %4716, align 8, !tbaa !24
  %4718 = getelementptr inbounds double, ptr %4717, i64 5
  store double %4712, ptr %4718, align 8, !tbaa !29
  %4719 = load double, ptr %20, align 8, !tbaa !29
  %4720 = load ptr, ptr %4, align 8, !tbaa !5
  %4721 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4720, i32 0, i32 18
  %4722 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4721, i32 0, i32 3
  %4723 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4722, i32 0, i32 4
  %4724 = load ptr, ptr %4723, align 8, !tbaa !24
  %4725 = getelementptr inbounds double, ptr %4724, i64 6
  store double %4719, ptr %4725, align 8, !tbaa !29
  %4726 = load double, ptr %22, align 8, !tbaa !29
  %4727 = load ptr, ptr %4, align 8, !tbaa !5
  %4728 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4727, i32 0, i32 18
  %4729 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4728, i32 0, i32 3
  %4730 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4729, i32 0, i32 4
  %4731 = load ptr, ptr %4730, align 8, !tbaa !24
  %4732 = getelementptr inbounds double, ptr %4731, i64 7
  store double %4726, ptr %4732, align 8, !tbaa !29
  %4733 = load i8, ptr %23, align 1, !tbaa !26, !range !27, !noundef !28
  %4734 = trunc i8 %4733 to i1
  store i1 %4734, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4735

4735:                                             ; preds = %4609, %4606, %4546, %4088, %4078, %2595, %2576, %2542, %2356, %2345, %2276, %1339, %1328, %1318, %762, %411
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #5
  %4736 = load i1, ptr %3, align 1
  ret i1 %4736
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef) #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) #1

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !17, i64 344}
!10 = !{!"_ZTSN11alglib_impl10minbcstateE", !11, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !11, i64 32, !13, i64 40, !12, i64 48, !12, i64 56, !14, i64 64, !11, i64 128, !14, i64 136, !14, i64 200, !12, i64 264, !14, i64 272, !13, i64 336, !13, i64 337, !13, i64 338, !13, i64 339, !16, i64 344, !14, i64 608, !14, i64 672, !14, i64 736, !14, i64 800, !14, i64 864, !14, i64 928, !14, i64 992, !12, i64 1056, !12, i64 1064, !12, i64 1072, !14, i64 1080, !12, i64 1144, !14, i64 1152, !14, i64 1216, !14, i64 1280, !14, i64 1344, !11, i64 1408, !11, i64 1416, !11, i64 1424, !11, i64 1432, !14, i64 1440, !12, i64 1504, !12, i64 1512, !12, i64 1520, !12, i64 1528, !12, i64 1536, !12, i64 1544, !12, i64 1552, !12, i64 1560, !12, i64 1568, !14, i64 1576, !14, i64 1640, !11, i64 1704, !11, i64 1712, !12, i64 1720, !12, i64 1728, !14, i64 1736, !18, i64 1800, !12, i64 1992, !11, i64 2000, !19, i64 2008, !19, i64 2088, !14, i64 2168, !14, i64 2232, !11, i64 2296, !12, i64 2304, !11, i64 2312, !20, i64 2320, !14, i64 6288, !14, i64 6352}
!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_impl10rcommstateE", !17, i64 0, !14, i64 8, !14, i64 72, !14, i64 136, !14, i64 200}
!17 = !{!"int", !7, i64 0}
!18 = !{!"_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}
!19 = !{!"_ZTSN11alglib_impl9ae_matrixE", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !13, i64 32, !15, i64 40, !7, i64 72}
!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, !19, 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, !19, i64 2232, !16, 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, !19, i64 3088, !19, 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, !19, 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, !19, i64 136, !19, 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 = !{!13, !13, i64 0}
!27 = !{i8 0, i8 2}
!28 = !{}
!29 = !{!12, !12, i64 0}
!30 = !{!10, !11, i64 0}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = !{!10, !11, i64 1432}
!34 = !{!10, !13, i64 339}
!35 = !{!10, !11, i64 1408}
!36 = !{!10, !11, i64 1416}
!37 = !{!10, !11, i64 1424}
!38 = !{!10, !11, i64 2312}
!39 = distinct !{!39, !32}
!40 = !{!10, !11, i64 128}
!41 = distinct !{!41, !32}
!42 = !{!10, !12, i64 56}
!43 = !{!10, !12, i64 2304}
!44 = distinct !{!44, !32}
!45 = !{!10, !13, i64 337}
!46 = !{!10, !12, i64 264}
!47 = distinct !{!47, !32}
!48 = !{!10, !12, i64 1144}
!49 = !{!10, !11, i64 2000}
!50 = !{!10, !13, i64 336}
!51 = !{!10, !12, i64 1056}
!52 = !{!10, !13, i64 40}
!53 = !{!10, !13, i64 338}
!54 = !{!10, !12, i64 1504}
!55 = !{!10, !12, i64 1512}
!56 = !{!10, !12, i64 1520}
!57 = !{!10, !12, i64 1528}
!58 = !{!10, !12, i64 1536}
!59 = !{!10, !12, i64 1544}
!60 = !{!10, !12, i64 1552}
!61 = distinct !{!61, !32}
!62 = !{!10, !12, i64 8}
!63 = distinct !{!63, !32}
!64 = distinct !{!64, !32}
!65 = !{!10, !12, i64 1720}
!66 = !{!10, !12, i64 1728}
!67 = !{!10, !12, i64 48}
!68 = !{!10, !12, i64 1064}
!69 = !{!10, !11, i64 1712}
!70 = distinct !{!70, !32}
!71 = !{!10, !12, i64 1992}
!72 = distinct !{!72, !32}
!73 = distinct !{!73, !32}
!74 = !{!10, !12, i64 1072}
!75 = distinct !{!75, !32}
!76 = !{!10, !12, i64 24}
!77 = !{!10, !12, i64 16}
!78 = !{!10, !11, i64 32}
!79 = distinct !{!79, !32}
!80 = !{!10, !11, i64 2296}
!81 = distinct !{!81, !32}
!82 = distinct !{!82, !32}
!83 = distinct !{!83, !32}
!84 = distinct !{!84, !32}
!85 = distinct !{!85, !32}
!86 = distinct !{!86, !32}
!87 = distinct !{!87, !32}
!88 = distinct !{!88, !32}
!89 = distinct !{!89, !32}
!90 = distinct !{!90, !32}
!91 = distinct !{!91, !32}
!92 = distinct !{!92, !32}
!93 = distinct !{!93, !32}
!94 = distinct !{!94, !32}


; 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_implL18minbc_initialdecayE = external hidden local_unnamed_addr global double, align 8
@.str.480 = external hidden unnamed_addr constant [30 x i8], align 1
@_ZN11alglib_implL10minbc_gtolE = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL24minbc_maxnonmonotoniclenE = external hidden local_unnamed_addr global double, align 8
@.str.481 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.482 = external hidden unnamed_addr constant [22 x i8], align 1
@_ZN11alglib_implL21minbc_decaycorrectionE = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL14minbc_mindecayE = external hidden local_unnamed_addr global double, align 8

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl14minbciterationEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) local_unnamed_addr #2 {
  %3 = alloca i64, align 8
  %4 = alloca double, align 8
  %5 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #6
  %6 = getelementptr inbounds i8, ptr %0, i64 344
  %7 = load i32, ptr %6, align 8, !tbaa !5
  %8 = icmp sgt i32 %7, -1
  br i1 %8, label %9, label %47

9:                                                ; preds = %2
  %10 = getelementptr inbounds i8, ptr %0, i64 408
  %11 = load ptr, ptr %10, align 8, !tbaa !23
  %12 = load i64, ptr %11, align 8, !tbaa !24
  %13 = getelementptr inbounds i8, ptr %11, i64 8
  %14 = load i64, ptr %13, align 8, !tbaa !24
  %15 = getelementptr inbounds i8, ptr %11, i64 16
  %16 = load i64, ptr %15, align 8, !tbaa !24
  %17 = getelementptr inbounds i8, ptr %11, i64 24
  %18 = load i64, ptr %17, align 8, !tbaa !24
  %19 = getelementptr inbounds i8, ptr %11, i64 32
  %20 = load i64, ptr %19, align 8, !tbaa !24
  %21 = getelementptr inbounds i8, ptr %11, i64 40
  %22 = load i64, ptr %21, align 8, !tbaa !24
  %23 = getelementptr inbounds i8, ptr %11, i64 48
  %24 = load i64, ptr %23, align 8, !tbaa !24
  %25 = getelementptr inbounds i8, ptr %0, i64 472
  %26 = load ptr, ptr %25, align 8, !tbaa !23
  %27 = load i8, ptr %26, align 1, !tbaa !25, !range !26, !noundef !27
  %28 = getelementptr inbounds i8, ptr %26, i64 1
  %29 = load i8, ptr %28, align 1, !tbaa !25, !range !26, !noundef !27
  %30 = getelementptr inbounds i8, ptr %0, i64 536
  %31 = load ptr, ptr %30, align 8, !tbaa !23
  %32 = load double, ptr %31, align 8, !tbaa !28
  %33 = getelementptr inbounds i8, ptr %31, i64 8
  %34 = load double, ptr %33, align 8, !tbaa !28
  %35 = getelementptr inbounds i8, ptr %31, i64 16
  %36 = load double, ptr %35, align 8, !tbaa !28
  %37 = getelementptr inbounds i8, ptr %31, i64 24
  %38 = load double, ptr %37, align 8, !tbaa !28
  %39 = getelementptr inbounds i8, ptr %31, i64 32
  %40 = load double, ptr %39, align 8, !tbaa !28
  %41 = getelementptr inbounds i8, ptr %31, i64 40
  %42 = load double, ptr %41, align 8, !tbaa !28
  %43 = getelementptr inbounds i8, ptr %31, i64 48
  %44 = load double, ptr %43, align 8, !tbaa !28
  %45 = getelementptr inbounds i8, ptr %31, i64 56
  %46 = load double, ptr %45, align 8, !tbaa !28
  br label %47

47:                                               ; preds = %2, %9
  %.sink1748 = phi i64 [ %12, %9 ], [ 359, %2 ]
  %.sink1747 = phi i64 [ %22, %9 ], [ 255, %2 ]
  %.sink = phi double [ %32, %9 ], [ 2.050000e+02, %2 ]
  %.01461 = phi double [ %34, %9 ], [ -8.380000e+02, %2 ]
  %.01457 = phi i64 [ %14, %9 ], [ -58, %2 ]
  %.01453 = phi i64 [ %16, %9 ], [ -919, %2 ]
  %.01436 = phi i64 [ %18, %9 ], [ -909, %2 ]
  %.01435 = phi i64 [ %20, %9 ], [ 81, %2 ]
  %.01421 = phi double [ %36, %9 ], [ 9.390000e+02, %2 ]
  %.01412 = phi double [ %38, %9 ], [ -5.260000e+02, %2 ]
  %.01411 = phi double [ %40, %9 ], [ 7.630000e+02, %2 ]
  %.01401 = phi i8 [ %27, %9 ], [ 0, %2 ]
  %.01394 = phi i64 [ %24, %9 ], [ 74, %2 ]
  %.01384 = phi double [ %42, %9 ], [ -5.410000e+02, %2 ]
  %.01379 = phi double [ %44, %9 ], [ -6.980000e+02, %2 ]
  %.01370 = phi i8 [ %29, %9 ], [ 1, %2 ]
  %.0 = phi double [ %46, %9 ], [ -9.000000e+02, %2 ]
  store i64 %.sink1748, ptr %3, align 8
  store i64 %.sink1747, ptr %5, align 8
  store double %.sink, ptr %4, align 8
  switch i32 %7, label %48 [
    i32 0, label %228
    i32 1, label %271
    i32 2, label %275
    i32 3, label %297
    i32 4, label %317
    i32 5, label %321
    i32 6, label %386
    i32 7, label %401
    i32 8, label %416
    i32 9, label %430
    i32 10, label %499
    i32 11, label %508
    i32 12, label %752
    i32 13, label %759
    i32 14, label %824
    i32 15, label %839
    i32 16, label %854
    i32 17, label %868
    i32 18, label %937
    i32 19, label %946
    i32 20, label %1149
    i32 21, label %1524
    i32 22, label %1531
    i32 23, label %1596
    i32 24, label %1611
    i32 25, label %1626
    i32 26, label %1640
    i32 27, label %1709
    i32 28, label %1718
    i32 29, label %2021
  ]

48:                                               ; preds = %47
  %49 = load i64, ptr %0, align 8, !tbaa !29
  %50 = tail call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef 5, i64 noundef %49, ptr noundef %1)
  %51 = load double, ptr @_ZN11alglib_implL18minbc_initialdecayE, align 8, !tbaa !28
  %52 = load i64, ptr %0, align 8, !tbaa !29
  %.not.not1674 = icmp sgt i64 %52, 0
  br i1 %.not.not1674, label %.lr.ph1677, label %._crit_edge1678

.lr.ph1677:                                       ; preds = %48
  %53 = getelementptr inbounds i8, ptr %0, i64 1496
  %54 = getelementptr inbounds i8, ptr %0, i64 664
  %xtraiter1871 = and i64 %52, 3
  %55 = icmp ult i64 %52, 4
  br i1 %55, label %._crit_edge1678.loopexit.unr-lcssa, label %.lr.ph1677.new

.lr.ph1677.new:                                   ; preds = %.lr.ph1677
  %unroll_iter1874 = and i64 %52, 9223372036854775804
  br label %56

56:                                               ; preds = %56, %.lr.ph1677.new
  %.114371675 = phi i64 [ 0, %.lr.ph1677.new ], [ %80, %56 ]
  %niter1875 = phi i64 [ 0, %.lr.ph1677.new ], [ %niter1875.next.3, %56 ]
  %57 = load ptr, ptr %53, align 8, !tbaa !23
  %58 = getelementptr inbounds double, ptr %57, i64 %.114371675
  %59 = load double, ptr %58, align 8, !tbaa !28
  %60 = load ptr, ptr %54, align 8, !tbaa !23
  %61 = getelementptr inbounds double, ptr %60, i64 %.114371675
  store double %59, ptr %61, align 8, !tbaa !28
  %62 = or disjoint i64 %.114371675, 1
  %63 = load ptr, ptr %53, align 8, !tbaa !23
  %64 = getelementptr inbounds double, ptr %63, i64 %62
  %65 = load double, ptr %64, align 8, !tbaa !28
  %66 = load ptr, ptr %54, align 8, !tbaa !23
  %67 = getelementptr inbounds double, ptr %66, i64 %62
  store double %65, ptr %67, align 8, !tbaa !28
  %68 = or disjoint i64 %.114371675, 2
  %69 = load ptr, ptr %53, align 8, !tbaa !23
  %70 = getelementptr inbounds double, ptr %69, i64 %68
  %71 = load double, ptr %70, align 8, !tbaa !28
  %72 = load ptr, ptr %54, align 8, !tbaa !23
  %73 = getelementptr inbounds double, ptr %72, i64 %68
  store double %71, ptr %73, align 8, !tbaa !28
  %74 = or disjoint i64 %.114371675, 3
  %75 = load ptr, ptr %53, align 8, !tbaa !23
  %76 = getelementptr inbounds double, ptr %75, i64 %74
  %77 = load double, ptr %76, align 8, !tbaa !28
  %78 = load ptr, ptr %54, align 8, !tbaa !23
  %79 = getelementptr inbounds double, ptr %78, i64 %74
  store double %77, ptr %79, align 8, !tbaa !28
  %80 = add nuw nsw i64 %.114371675, 4
  %niter1875.next.3 = add i64 %niter1875, 4
  %niter1875.ncmp.3 = icmp eq i64 %niter1875.next.3, %unroll_iter1874
  br i1 %niter1875.ncmp.3, label %._crit_edge1678.loopexit.unr-lcssa, label %56, !llvm.loop !30

._crit_edge1678.loopexit.unr-lcssa:               ; preds = %56, %.lr.ph1677
  %.114371675.unr = phi i64 [ 0, %.lr.ph1677 ], [ %80, %56 ]
  %lcmp.mod1873.not = icmp eq i64 %xtraiter1871, 0
  br i1 %lcmp.mod1873.not, label %._crit_edge1678, label %.epil.preheader1870

.epil.preheader1870:                              ; preds = %._crit_edge1678.loopexit.unr-lcssa, %.epil.preheader1870
  %.114371675.epil = phi i64 [ %86, %.epil.preheader1870 ], [ %.114371675.unr, %._crit_edge1678.loopexit.unr-lcssa ]
  %epil.iter1872 = phi i64 [ %epil.iter1872.next, %.epil.preheader1870 ], [ 0, %._crit_edge1678.loopexit.unr-lcssa ]
  %81 = load ptr, ptr %53, align 8, !tbaa !23
  %82 = getelementptr inbounds double, ptr %81, i64 %.114371675.epil
  %83 = load double, ptr %82, align 8, !tbaa !28
  %84 = load ptr, ptr %54, align 8, !tbaa !23
  %85 = getelementptr inbounds double, ptr %84, i64 %.114371675.epil
  store double %83, ptr %85, align 8, !tbaa !28
  %86 = add nuw nsw i64 %.114371675.epil, 1
  %epil.iter1872.next = add i64 %epil.iter1872, 1
  %epil.iter1872.cmp.not = icmp eq i64 %epil.iter1872.next, %xtraiter1871
  br i1 %epil.iter1872.cmp.not, label %._crit_edge1678, label %.epil.preheader1870, !llvm.loop !32

._crit_edge1678:                                  ; preds = %._crit_edge1678.loopexit.unr-lcssa, %.epil.preheader1870, %48
  %87 = getelementptr inbounds i8, ptr %0, i64 608
  %88 = getelementptr inbounds i8, ptr %0, i64 1280
  %89 = getelementptr inbounds i8, ptr %0, i64 1152
  %90 = getelementptr inbounds i8, ptr %0, i64 1344
  %91 = getelementptr inbounds i8, ptr %0, i64 1216
  %92 = tail call noundef zeroext i1 @_ZN11alglib_impl26enforceboundaryconstraintsEPNS_9ae_vectorES1_S1_S1_S1_llPNS_8ae_stateE(ptr noundef nonnull %87, ptr noundef nonnull %88, ptr noundef nonnull %89, ptr noundef nonnull %90, ptr noundef nonnull %91, i64 noundef %52, i64 noundef 0, ptr noundef %1)
  br i1 %92, label %95, label %93

93:                                               ; preds = %._crit_edge1678
  %94 = getelementptr inbounds i8, ptr %0, i64 1432
  store i64 -3, ptr %94, align 8, !tbaa !34
  br label %2215

95:                                               ; preds = %._crit_edge1678
  %96 = getelementptr inbounds i8, ptr %0, i64 339
  store i8 0, ptr %96, align 1, !tbaa !35
  %97 = getelementptr inbounds i8, ptr %0, i64 1432
  store i64 0, ptr %97, align 8, !tbaa !34
  %98 = getelementptr inbounds i8, ptr %0, i64 1408
  %99 = getelementptr inbounds i8, ptr %0, i64 1424
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %98, i8 0, i64 16, i1 false)
  store i64 -1, ptr %99, align 8, !tbaa !36
  %100 = getelementptr inbounds i8, ptr %0, i64 2008
  %101 = add nsw i64 %50, 1
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %100, i64 noundef %101, i64 noundef %52, ptr noundef %1)
  %102 = getelementptr inbounds i8, ptr %0, i64 2088
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %102, i64 noundef %101, i64 noundef %52, ptr noundef %1)
  %103 = getelementptr inbounds i8, ptr %0, i64 2168
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %103, i64 noundef %50, ptr noundef %1)
  %104 = getelementptr inbounds i8, ptr %0, i64 2232
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %104, i64 noundef %50, ptr noundef %1)
  %105 = getelementptr inbounds i8, ptr %0, i64 1640
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %105, i64 noundef %52, ptr noundef %1)
  %106 = getelementptr inbounds i8, ptr %0, i64 2320
  %107 = getelementptr inbounds i8, ptr %0, i64 2312
  %108 = load i64, ptr %107, align 8, !tbaa !37
  %109 = icmp sgt i64 %108, 0
  tail call void @_ZN11alglib_impl21smoothnessmonitorinitEPNS_17smoothnessmonitorEllbPNS_8ae_stateE(ptr noundef nonnull %106, i64 noundef %52, i64 noundef 1, i1 noundef zeroext %109, ptr noundef %1)
  br i1 %.not.not1674, label %.lr.ph1682, label %._crit_edge1683.thread

._crit_edge1683.thread:                           ; preds = %95
  %110 = getelementptr inbounds i8, ptr %0, i64 1576
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %110, i64 noundef %52, ptr noundef %1)
  br label %._crit_edge1688

.lr.ph1682:                                       ; preds = %95
  %111 = getelementptr inbounds i8, ptr %0, i64 120
  %112 = getelementptr inbounds i8, ptr %0, i64 6344
  %113 = getelementptr inbounds i8, ptr %0, i64 6408
  %xtraiter1877 = and i64 %52, 1
  %114 = icmp eq i64 %52, 1
  br i1 %114, label %._crit_edge1683.unr-lcssa, label %.lr.ph1682.new

.lr.ph1682.new:                                   ; preds = %.lr.ph1682
  %unroll_iter1880 = and i64 %52, 9223372036854775806
  br label %115

115:                                              ; preds = %115, %.lr.ph1682.new
  %.214381680 = phi i64 [ 0, %.lr.ph1682.new ], [ %139, %115 ]
  %niter1881 = phi i64 [ 0, %.lr.ph1682.new ], [ %niter1881.next.1, %115 ]
  %116 = load ptr, ptr %111, align 8, !tbaa !23
  %117 = getelementptr inbounds double, ptr %116, i64 %.214381680
  %118 = load double, ptr %117, align 8, !tbaa !28
  %119 = load ptr, ptr %112, align 8, !tbaa !23
  %120 = getelementptr inbounds double, ptr %119, i64 %.214381680
  store double %118, ptr %120, align 8, !tbaa !28
  %121 = load ptr, ptr %111, align 8, !tbaa !23
  %122 = getelementptr inbounds double, ptr %121, i64 %.214381680
  %123 = load double, ptr %122, align 8, !tbaa !28
  %124 = fdiv double 1.000000e+00, %123
  %125 = load ptr, ptr %113, align 8, !tbaa !23
  %126 = getelementptr inbounds double, ptr %125, i64 %.214381680
  store double %124, ptr %126, align 8, !tbaa !28
  %127 = or disjoint i64 %.214381680, 1
  %128 = load ptr, ptr %111, align 8, !tbaa !23
  %129 = getelementptr inbounds double, ptr %128, i64 %127
  %130 = load double, ptr %129, align 8, !tbaa !28
  %131 = load ptr, ptr %112, align 8, !tbaa !23
  %132 = getelementptr inbounds double, ptr %131, i64 %127
  store double %130, ptr %132, align 8, !tbaa !28
  %133 = load ptr, ptr %111, align 8, !tbaa !23
  %134 = getelementptr inbounds double, ptr %133, i64 %127
  %135 = load double, ptr %134, align 8, !tbaa !28
  %136 = fdiv double 1.000000e+00, %135
  %137 = load ptr, ptr %113, align 8, !tbaa !23
  %138 = getelementptr inbounds double, ptr %137, i64 %127
  store double %136, ptr %138, align 8, !tbaa !28
  %139 = add nuw nsw i64 %.214381680, 2
  %niter1881.next.1 = add i64 %niter1881, 2
  %niter1881.ncmp.1 = icmp eq i64 %niter1881.next.1, %unroll_iter1880
  br i1 %niter1881.ncmp.1, label %._crit_edge1683.unr-lcssa, label %115, !llvm.loop !38

._crit_edge1683.unr-lcssa:                        ; preds = %115, %.lr.ph1682
  %.214381680.unr = phi i64 [ 0, %.lr.ph1682 ], [ %139, %115 ]
  %lcmp.mod1879.not = icmp eq i64 %xtraiter1877, 0
  br i1 %lcmp.mod1879.not, label %._crit_edge1683, label %._crit_edge1683.epilog-lcssa

._crit_edge1683.epilog-lcssa:                     ; preds = %._crit_edge1683.unr-lcssa
  %140 = load ptr, ptr %111, align 8, !tbaa !23
  %141 = getelementptr inbounds double, ptr %140, i64 %.214381680.unr
  %142 = load double, ptr %141, align 8, !tbaa !28
  %143 = load ptr, ptr %112, align 8, !tbaa !23
  %144 = getelementptr inbounds double, ptr %143, i64 %.214381680.unr
  store double %142, ptr %144, align 8, !tbaa !28
  %145 = load ptr, ptr %111, align 8, !tbaa !23
  %146 = getelementptr inbounds double, ptr %145, i64 %.214381680.unr
  %147 = load double, ptr %146, align 8, !tbaa !28
  %148 = fdiv double 1.000000e+00, %147
  %149 = load ptr, ptr %113, align 8, !tbaa !23
  %150 = getelementptr inbounds double, ptr %149, i64 %.214381680.unr
  store double %148, ptr %150, align 8, !tbaa !28
  br label %._crit_edge1683

._crit_edge1683:                                  ; preds = %._crit_edge1683.unr-lcssa, %._crit_edge1683.epilog-lcssa
  %151 = getelementptr inbounds i8, ptr %0, i64 1576
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %151, i64 noundef %52, ptr noundef %1)
  br i1 %.not.not1674, label %.lr.ph1687, label %._crit_edge1688

.lr.ph1687:                                       ; preds = %._crit_edge1683
  %152 = getelementptr inbounds i8, ptr %0, i64 128
  %153 = getelementptr inbounds i8, ptr %0, i64 120
  %154 = getelementptr inbounds i8, ptr %0, i64 1632
  %155 = getelementptr inbounds i8, ptr %0, i64 192
  br label %156

156:                                              ; preds = %.lr.ph1687, %168
  %.314391685 = phi i64 [ 0, %.lr.ph1687 ], [ %171, %168 ]
  %157 = load i64, ptr %152, align 8, !tbaa !39
  switch i64 %157, label %168 [
    i64 2, label %158
    i64 3, label %163
  ]

158:                                              ; preds = %156
  %159 = load ptr, ptr %155, align 8, !tbaa !23
  %160 = getelementptr inbounds double, ptr %159, i64 %.314391685
  %161 = load double, ptr %160, align 8, !tbaa !28
  %162 = fdiv double 1.000000e+00, %161
  br label %168

163:                                              ; preds = %156
  %164 = load ptr, ptr %153, align 8, !tbaa !23
  %165 = getelementptr inbounds double, ptr %164, i64 %.314391685
  %166 = load double, ptr %165, align 8, !tbaa !28
  %167 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %166, ptr noundef %1)
  br label %168

168:                                              ; preds = %156, %163, %158
  %.sink1777 = phi double [ %167, %163 ], [ %162, %158 ], [ 1.000000e+00, %156 ]
  %169 = load ptr, ptr %154, align 8, !tbaa !23
  %170 = getelementptr inbounds double, ptr %169, i64 %.314391685
  store double %.sink1777, ptr %170, align 8, !tbaa !28
  %171 = add nuw nsw i64 %.314391685, 1
  %exitcond1745.not = icmp eq i64 %171, %52
  br i1 %exitcond1745.not, label %._crit_edge1688, label %156, !llvm.loop !40

._crit_edge1688:                                  ; preds = %168, %._crit_edge1683.thread, %._crit_edge1683
  %.31439.lcssa = phi i64 [ 0, %._crit_edge1683 ], [ 0, %._crit_edge1683.thread ], [ %52, %168 ]
  tail call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %172 = getelementptr inbounds i8, ptr %0, i64 56
  %173 = load double, ptr %172, align 8, !tbaa !41
  %174 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %173, double noundef 0.000000e+00)
  br i1 %174, label %175, label %252

175:                                              ; preds = %._crit_edge1688
  %176 = getelementptr inbounds i8, ptr %0, i64 2304
  %177 = load double, ptr %176, align 8, !tbaa !42
  %178 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %177, double noundef 0.000000e+00)
  br i1 %178, label %.loopexit, label %252

.loopexit.loopexit.unr-lcssa:                     ; preds = %237, %.lr.ph1672
  %.614421670.unr = phi i64 [ 0, %.lr.ph1672 ], [ %251, %237 ]
  %lcmp.mod1867.not = icmp eq i64 %xtraiter1865, 0
  br i1 %lcmp.mod1867.not, label %.loopexit, label %.loopexit.loopexit.epilog-lcssa

.loopexit.loopexit.epilog-lcssa:                  ; preds = %.loopexit.loopexit.unr-lcssa
  %179 = load ptr, ptr %234, align 8, !tbaa !23
  %180 = getelementptr inbounds double, ptr %179, i64 %.614421670.unr
  %181 = load double, ptr %180, align 8, !tbaa !28
  %182 = load ptr, ptr %235, align 8, !tbaa !23
  %183 = load ptr, ptr %182, align 8, !tbaa !43
  %184 = getelementptr inbounds double, ptr %183, i64 %.614421670.unr
  store double %181, ptr %184, align 8, !tbaa !28
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit.epilog-lcssa, %.loopexit.loopexit.unr-lcssa, %228, %175
  %.11458 = phi i64 [ %52, %175 ], [ %.01457, %228 ], [ %.01457, %.loopexit.loopexit.unr-lcssa ], [ %.01457, %.loopexit.loopexit.epilog-lcssa ]
  %.11454 = phi i64 [ %50, %175 ], [ %.01453, %228 ], [ %.01453, %.loopexit.loopexit.unr-lcssa ], [ %.01453, %.loopexit.loopexit.epilog-lcssa ]
  %.41440 = phi i64 [ %.31439.lcssa, %175 ], [ 0, %228 ], [ %.01457, %.loopexit.loopexit.unr-lcssa ], [ %.01457, %.loopexit.loopexit.epilog-lcssa ]
  %.11380 = phi double [ %51, %175 ], [ %.01379, %228 ], [ %.01379, %.loopexit.loopexit.unr-lcssa ], [ %.01379, %.loopexit.loopexit.epilog-lcssa ]
  %185 = getelementptr inbounds i8, ptr %0, i64 2320
  %186 = getelementptr inbounds i8, ptr %0, i64 608
  %187 = getelementptr inbounds i8, ptr %0, i64 64
  %188 = getelementptr inbounds i8, ptr %0, i64 1280
  %189 = getelementptr inbounds i8, ptr %0, i64 1344
  %190 = getelementptr inbounds i8, ptr %0, i64 2304
  %191 = load double, ptr %190, align 8, !tbaa !42
  %192 = tail call noundef zeroext i1 @_ZN11alglib_impl34smoothnessmonitorcheckgradientatx0EPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_S3_bdPNS_8ae_stateE(ptr noundef nonnull %185, ptr noundef nonnull %186, ptr noundef nonnull %187, ptr noundef nonnull %188, ptr noundef nonnull %189, i1 noundef zeroext true, double noundef %191, ptr noundef %1)
  br i1 %192, label %.preheader, label %252

.preheader:                                       ; preds = %.loopexit
  %.not1515.not1690 = icmp sgt i64 %.11458, 0
  br i1 %.not1515.not1690, label %.lr.ph1692, label %._crit_edge1693

.lr.ph1692:                                       ; preds = %.preheader
  %193 = getelementptr inbounds i8, ptr %0, i64 4480
  %194 = getelementptr inbounds i8, ptr %0, i64 256
  %xtraiter1883 = and i64 %.11458, 3
  %195 = icmp ult i64 %.11458, 4
  br i1 %195, label %._crit_edge1693.loopexit.unr-lcssa, label %.lr.ph1692.new

.lr.ph1692.new:                                   ; preds = %.lr.ph1692
  %unroll_iter1886 = and i64 %.11458, 9223372036854775804
  br label %196

196:                                              ; preds = %196, %.lr.ph1692.new
  %.514411691 = phi i64 [ 0, %.lr.ph1692.new ], [ %220, %196 ]
  %niter1887 = phi i64 [ 0, %.lr.ph1692.new ], [ %niter1887.next.3, %196 ]
  %197 = load ptr, ptr %193, align 8, !tbaa !23
  %198 = getelementptr inbounds double, ptr %197, i64 %.514411691
  %199 = load double, ptr %198, align 8, !tbaa !28
  %200 = load ptr, ptr %194, align 8, !tbaa !23
  %201 = getelementptr inbounds double, ptr %200, i64 %.514411691
  store double %199, ptr %201, align 8, !tbaa !28
  %202 = or disjoint i64 %.514411691, 1
  %203 = load ptr, ptr %193, align 8, !tbaa !23
  %204 = getelementptr inbounds double, ptr %203, i64 %202
  %205 = load double, ptr %204, align 8, !tbaa !28
  %206 = load ptr, ptr %194, align 8, !tbaa !23
  %207 = getelementptr inbounds double, ptr %206, i64 %202
  store double %205, ptr %207, align 8, !tbaa !28
  %208 = or disjoint i64 %.514411691, 2
  %209 = load ptr, ptr %193, align 8, !tbaa !23
  %210 = getelementptr inbounds double, ptr %209, i64 %208
  %211 = load double, ptr %210, align 8, !tbaa !28
  %212 = load ptr, ptr %194, align 8, !tbaa !23
  %213 = getelementptr inbounds double, ptr %212, i64 %208
  store double %211, ptr %213, align 8, !tbaa !28
  %214 = or disjoint i64 %.514411691, 3
  %215 = load ptr, ptr %193, align 8, !tbaa !23
  %216 = getelementptr inbounds double, ptr %215, i64 %214
  %217 = load double, ptr %216, align 8, !tbaa !28
  %218 = load ptr, ptr %194, align 8, !tbaa !23
  %219 = getelementptr inbounds double, ptr %218, i64 %214
  store double %217, ptr %219, align 8, !tbaa !28
  %220 = add nuw nsw i64 %.514411691, 4
  %niter1887.next.3 = add i64 %niter1887, 4
  %niter1887.ncmp.3 = icmp eq i64 %niter1887.next.3, %unroll_iter1886
  br i1 %niter1887.ncmp.3, label %._crit_edge1693.loopexit.unr-lcssa, label %196, !llvm.loop !44

._crit_edge1693.loopexit.unr-lcssa:               ; preds = %196, %.lr.ph1692
  %.514411691.unr = phi i64 [ 0, %.lr.ph1692 ], [ %220, %196 ]
  %lcmp.mod1885.not = icmp eq i64 %xtraiter1883, 0
  br i1 %lcmp.mod1885.not, label %._crit_edge1693, label %.epil.preheader1882

.epil.preheader1882:                              ; preds = %._crit_edge1693.loopexit.unr-lcssa, %.epil.preheader1882
  %.514411691.epil = phi i64 [ %226, %.epil.preheader1882 ], [ %.514411691.unr, %._crit_edge1693.loopexit.unr-lcssa ]
  %epil.iter1884 = phi i64 [ %epil.iter1884.next, %.epil.preheader1882 ], [ 0, %._crit_edge1693.loopexit.unr-lcssa ]
  %221 = load ptr, ptr %193, align 8, !tbaa !23
  %222 = getelementptr inbounds double, ptr %221, i64 %.514411691.epil
  %223 = load double, ptr %222, align 8, !tbaa !28
  %224 = load ptr, ptr %194, align 8, !tbaa !23
  %225 = getelementptr inbounds double, ptr %224, i64 %.514411691.epil
  store double %223, ptr %225, align 8, !tbaa !28
  %226 = add nuw nsw i64 %.514411691.epil, 1
  %epil.iter1884.next = add i64 %epil.iter1884, 1
  %epil.iter1884.cmp.not = icmp eq i64 %epil.iter1884.next, %xtraiter1883
  br i1 %epil.iter1884.cmp.not, label %._crit_edge1693, label %.epil.preheader1882, !llvm.loop !45

._crit_edge1693:                                  ; preds = %._crit_edge1693.loopexit.unr-lcssa, %.epil.preheader1882, %.preheader
  %.51441.lcssa = phi i64 [ 0, %.preheader ], [ %.11458, %.epil.preheader1882 ], [ %.11458, %._crit_edge1693.loopexit.unr-lcssa ]
  %227 = getelementptr inbounds i8, ptr %0, i64 337
  store i8 1, ptr %227, align 1, !tbaa !46
  br label %2175

228:                                              ; preds = %47
  %229 = getelementptr inbounds i8, ptr %0, i64 337
  store i8 0, ptr %229, align 1, !tbaa !46
  %230 = getelementptr inbounds i8, ptr %0, i64 264
  %231 = load double, ptr %230, align 8, !tbaa !47
  %232 = getelementptr inbounds i8, ptr %0, i64 4544
  %233 = load ptr, ptr %232, align 8, !tbaa !23
  store double %231, ptr %233, align 8, !tbaa !28
  %.not1514.not1669 = icmp sgt i64 %.01457, 0
  br i1 %.not1514.not1669, label %.lr.ph1672, label %.loopexit

.lr.ph1672:                                       ; preds = %228
  %234 = getelementptr inbounds i8, ptr %0, i64 328
  %235 = getelementptr inbounds i8, ptr %0, i64 4624
  %xtraiter1865 = and i64 %.01457, 1
  %236 = icmp eq i64 %.01457, 1
  br i1 %236, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph1672.new

.lr.ph1672.new:                                   ; preds = %.lr.ph1672
  %unroll_iter1868 = and i64 %.01457, 9223372036854775806
  br label %237

237:                                              ; preds = %237, %.lr.ph1672.new
  %.614421670 = phi i64 [ 0, %.lr.ph1672.new ], [ %251, %237 ]
  %niter1869 = phi i64 [ 0, %.lr.ph1672.new ], [ %niter1869.next.1, %237 ]
  %238 = load ptr, ptr %234, align 8, !tbaa !23
  %239 = getelementptr inbounds double, ptr %238, i64 %.614421670
  %240 = load double, ptr %239, align 8, !tbaa !28
  %241 = load ptr, ptr %235, align 8, !tbaa !23
  %242 = load ptr, ptr %241, align 8, !tbaa !43
  %243 = getelementptr inbounds double, ptr %242, i64 %.614421670
  store double %240, ptr %243, align 8, !tbaa !28
  %244 = or disjoint i64 %.614421670, 1
  %245 = load ptr, ptr %234, align 8, !tbaa !23
  %246 = getelementptr inbounds double, ptr %245, i64 %244
  %247 = load double, ptr %246, align 8, !tbaa !28
  %248 = load ptr, ptr %235, align 8, !tbaa !23
  %249 = load ptr, ptr %248, align 8, !tbaa !43
  %250 = getelementptr inbounds double, ptr %249, i64 %244
  store double %247, ptr %250, align 8, !tbaa !28
  %251 = add nuw nsw i64 %.614421670, 2
  %niter1869.next.1 = add i64 %niter1869, 2
  %niter1869.ncmp.1 = icmp eq i64 %niter1869.next.1, %unroll_iter1868
  br i1 %niter1869.ncmp.1, label %.loopexit.loopexit.unr-lcssa, label %237, !llvm.loop !48

252:                                              ; preds = %.loopexit, %._crit_edge1688, %175
  %.21459 = phi i64 [ %.11458, %.loopexit ], [ %52, %175 ], [ %52, %._crit_edge1688 ]
  %.21455 = phi i64 [ %.11454, %.loopexit ], [ %50, %175 ], [ %50, %._crit_edge1688 ]
  %.71443 = phi i64 [ %.41440, %.loopexit ], [ %.31439.lcssa, %175 ], [ %.31439.lcssa, %._crit_edge1688 ]
  %.21381 = phi double [ %.11380, %.loopexit ], [ %51, %175 ], [ %51, %._crit_edge1688 ]
  %253 = getelementptr inbounds i8, ptr %0, i64 1432
  store i64 0, ptr %253, align 8, !tbaa !34
  %254 = getelementptr inbounds i8, ptr %0, i64 1144
  store double 0.000000e+00, ptr %254, align 8, !tbaa !49
  %255 = sitofp i64 %.21459 to double
  %256 = fmul double %255, 1.500000e+00
  %257 = tail call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %256, ptr noundef %1)
  %258 = add nsw i64 %257, 5
  %259 = getelementptr inbounds i8, ptr %0, i64 2000
  store i64 %258, ptr %259, align 8, !tbaa !50
  %260 = getelementptr inbounds i8, ptr %0, i64 256
  %261 = load ptr, ptr %260, align 8, !tbaa !23
  %262 = getelementptr inbounds i8, ptr %0, i64 664
  %263 = load ptr, ptr %262, align 8, !tbaa !23
  %264 = add nsw i64 %.21459, -1
  %265 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %264)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %261, i64 noundef 1, ptr noundef %263, i64 noundef 1, i64 noundef %265)
  tail call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %266 = getelementptr inbounds i8, ptr %0, i64 56
  %267 = load double, ptr %266, align 8, !tbaa !41
  %268 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %267, double noundef 0.000000e+00)
  br i1 %268, label %273, label %269

269:                                              ; preds = %252
  %270 = getelementptr inbounds i8, ptr %0, i64 337
  store i8 1, ptr %270, align 1, !tbaa !46
  br label %2175

271:                                              ; preds = %47
  %272 = getelementptr inbounds i8, ptr %0, i64 337
  store i8 0, ptr %272, align 1, !tbaa !46
  br label %277

273:                                              ; preds = %252
  %274 = getelementptr inbounds i8, ptr %0, i64 336
  store i8 1, ptr %274, align 8, !tbaa !51
  br label %2175

275:                                              ; preds = %47
  %276 = getelementptr inbounds i8, ptr %0, i64 336
  store i8 0, ptr %276, align 8, !tbaa !51
  br label %277

277:                                              ; preds = %275, %271
  %278 = getelementptr inbounds i8, ptr %0, i64 264
  %279 = load double, ptr %278, align 8, !tbaa !47
  %280 = getelementptr inbounds i8, ptr %0, i64 1056
  store double %279, ptr %280, align 8, !tbaa !52
  %281 = getelementptr inbounds i8, ptr %0, i64 1992
  tail call void @_ZN11alglib_impl11trimprepareEdPdPNS_8ae_stateE(double noundef %279, ptr noundef nonnull %281, ptr noundef %1)
  %282 = getelementptr inbounds i8, ptr %0, i64 1416
  %283 = load i64, ptr %282, align 8, !tbaa !53
  %284 = add nsw i64 %283, 1
  store i64 %284, ptr %282, align 8, !tbaa !53
  %285 = getelementptr inbounds i8, ptr %0, i64 40
  %286 = load i8, ptr %285, align 8, !tbaa !54, !range !26, !noundef !27
  %287 = trunc nuw i8 %286 to i1
  br i1 %287, label %288, label %299

288:                                              ; preds = %277
  %289 = getelementptr inbounds i8, ptr %0, i64 256
  %290 = load ptr, ptr %289, align 8, !tbaa !23
  %291 = getelementptr inbounds i8, ptr %0, i64 664
  %292 = load ptr, ptr %291, align 8, !tbaa !23
  %293 = add nsw i64 %.01457, -1
  %294 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %293)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %290, i64 noundef 1, ptr noundef %292, i64 noundef 1, i64 noundef %294)
  %295 = load double, ptr %280, align 8, !tbaa !52
  store double %295, ptr %278, align 8, !tbaa !47
  %296 = getelementptr inbounds i8, ptr %0, i64 338
  store i8 1, ptr %296, align 2, !tbaa !55
  br label %2175

297:                                              ; preds = %47
  %298 = getelementptr inbounds i8, ptr %0, i64 338
  store i8 0, ptr %298, align 2, !tbaa !55
  br label %299

299:                                              ; preds = %277, %297
  %300 = getelementptr inbounds i8, ptr %0, i64 339
  %301 = load i8, ptr %300, align 1, !tbaa !35, !range !26, !noundef !27
  %302 = trunc nuw i8 %301 to i1
  br i1 %302, label %303, label %305

303:                                              ; preds = %299
  %304 = getelementptr inbounds i8, ptr %0, i64 1432
  store i64 8, ptr %304, align 8, !tbaa !34
  br label %2215

305:                                              ; preds = %299, %2170
  %.11462 = phi double [ %.01461, %299 ], [ %.91470, %2170 ]
  %.81444 = phi i64 [ %.01436, %299 ], [ %.38, %2170 ]
  %.11422 = phi double [ %.01421, %299 ], [ %.15, %2170 ]
  %.11413 = phi double [ %.01412, %299 ], [ %.71419, %2170 ]
  %.11402 = phi i8 [ %.01401, %299 ], [ %.12, %2170 ]
  %.11395 = phi i64 [ %.01394, %299 ], [ %.51399, %2170 ]
  %.11385 = phi double [ %.01384, %299 ], [ %.81392, %2170 ]
  %.31382 = phi double [ %.01379, %299 ], [ %2174, %2170 ]
  %.11371 = phi i8 [ %.01370, %299 ], [ %.81378, %2170 ]
  %.1 = phi double [ %.0, %299 ], [ %.7, %2170 ]
  %306 = getelementptr inbounds i8, ptr %0, i64 256
  %307 = load ptr, ptr %306, align 8, !tbaa !23
  %308 = getelementptr inbounds i8, ptr %0, i64 664
  %309 = load ptr, ptr %308, align 8, !tbaa !23
  %310 = add nsw i64 %.01457, -1
  %311 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %310)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %307, i64 noundef 1, ptr noundef %309, i64 noundef 1, i64 noundef %311)
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1)
  %312 = getelementptr inbounds i8, ptr %0, i64 56
  %313 = load double, ptr %312, align 8, !tbaa !41
  %314 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %313, double noundef 0.000000e+00)
  br i1 %314, label %319, label %315

315:                                              ; preds = %305
  %316 = getelementptr inbounds i8, ptr %0, i64 337
  store i8 1, ptr %316, align 1, !tbaa !46
  br label %2175

317:                                              ; preds = %47
  %318 = getelementptr inbounds i8, ptr %0, i64 337
  store i8 0, ptr %318, align 1, !tbaa !46
  %.phi.trans.insert1753 = getelementptr inbounds i8, ptr %0, i64 264
  %.pre1754 = load double, ptr %.phi.trans.insert1753, align 8, !tbaa !47
  br label %539

319:                                              ; preds = %305
  %320 = getelementptr inbounds i8, ptr %0, i64 336
  store i8 1, ptr %320, align 8, !tbaa !51
  br label %2175

321:                                              ; preds = %47
  %322 = getelementptr inbounds i8, ptr %0, i64 264
  %323 = load double, ptr %322, align 8, !tbaa !47
  %324 = getelementptr inbounds i8, ptr %0, i64 1504
  store double %323, ptr %324, align 8, !tbaa !56
  br label %325

325:                                              ; preds = %526, %321
  %.91445 = phi i64 [ 0, %321 ], [ %533, %526 ]
  %.not1489 = icmp slt i64 %.91445, %.01457
  br i1 %.not1489, label %326, label %534

326:                                              ; preds = %325
  %327 = getelementptr inbounds i8, ptr %0, i64 256
  %328 = load ptr, ptr %327, align 8, !tbaa !23
  %329 = getelementptr inbounds double, ptr %328, i64 %.91445
  %330 = load double, ptr %329, align 8, !tbaa !28
  %331 = getelementptr inbounds i8, ptr %0, i64 1208
  %332 = load ptr, ptr %331, align 8, !tbaa !23
  %333 = getelementptr inbounds i8, ptr %332, i64 %.91445
  %334 = load i8, ptr %333, align 1, !tbaa !25, !range !26, !noundef !27
  %335 = trunc nuw i8 %334 to i1
  br i1 %335, label %336, label %351

336:                                              ; preds = %326
  %337 = getelementptr inbounds i8, ptr %0, i64 56
  %338 = load double, ptr %337, align 8, !tbaa !41
  %339 = getelementptr inbounds i8, ptr %0, i64 120
  %340 = load ptr, ptr %339, align 8, !tbaa !23
  %341 = getelementptr inbounds double, ptr %340, i64 %.91445
  %342 = load double, ptr %341, align 8, !tbaa !28
  %343 = fneg double %338
  %344 = tail call double @llvm.fmuladd.f64(double %343, double %342, double %330)
  %345 = getelementptr inbounds i8, ptr %0, i64 1336
  %346 = load ptr, ptr %345, align 8, !tbaa !23
  %347 = getelementptr inbounds double, ptr %346, i64 %.91445
  %348 = load double, ptr %347, align 8, !tbaa !28
  %349 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %344, double noundef %348)
  %350 = zext i1 %349 to i8
  br label %351

351:                                              ; preds = %336, %326
  %.21403 = phi i8 [ %350, %336 ], [ 0, %326 ]
  %352 = getelementptr inbounds i8, ptr %0, i64 1272
  %353 = load ptr, ptr %352, align 8, !tbaa !23
  %354 = getelementptr inbounds i8, ptr %353, i64 %.91445
  %355 = load i8, ptr %354, align 1, !tbaa !25, !range !26, !noundef !27
  %356 = trunc nuw i8 %355 to i1
  br i1 %356, label %357, label %373

357:                                              ; preds = %351
  %358 = trunc nuw i8 %.21403 to i1
  br i1 %358, label %.thread, label %359

359:                                              ; preds = %357
  %360 = getelementptr inbounds i8, ptr %0, i64 56
  %361 = load double, ptr %360, align 8, !tbaa !41
  %362 = getelementptr inbounds i8, ptr %0, i64 120
  %363 = load ptr, ptr %362, align 8, !tbaa !23
  %364 = getelementptr inbounds double, ptr %363, i64 %.91445
  %365 = load double, ptr %364, align 8, !tbaa !28
  %366 = tail call double @llvm.fmuladd.f64(double %361, double %365, double %330)
  %367 = getelementptr inbounds i8, ptr %0, i64 1400
  %368 = load ptr, ptr %367, align 8, !tbaa !23
  %369 = getelementptr inbounds double, ptr %368, i64 %.91445
  %370 = load double, ptr %369, align 8, !tbaa !28
  %371 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %366, double noundef %370)
  %372 = zext i1 %371 to i8
  br label %373

373:                                              ; preds = %359, %351
  %.31404 = phi i8 [ %.21403, %351 ], [ %372, %359 ]
  %374 = trunc nuw i8 %.31404 to i1
  br i1 %374, label %.thread, label %375

375:                                              ; preds = %373
  %376 = getelementptr inbounds i8, ptr %0, i64 56
  %377 = load double, ptr %376, align 8, !tbaa !41
  %378 = getelementptr inbounds i8, ptr %0, i64 120
  %379 = load ptr, ptr %378, align 8, !tbaa !23
  %380 = getelementptr inbounds double, ptr %379, i64 %.91445
  %381 = load double, ptr %380, align 8, !tbaa !28
  %382 = fneg double %377
  %383 = tail call double @llvm.fmuladd.f64(double %382, double %381, double %330)
  %384 = load ptr, ptr %327, align 8, !tbaa !23
  %385 = getelementptr inbounds double, ptr %384, i64 %.91445
  store double %383, ptr %385, align 8, !tbaa !28
  br label %2175

386:                                              ; preds = %47
  %387 = getelementptr inbounds i8, ptr %0, i64 264
  %388 = load double, ptr %387, align 8, !tbaa !47
  %389 = getelementptr inbounds i8, ptr %0, i64 1512
  store double %388, ptr %389, align 8, !tbaa !57
  %390 = getelementptr inbounds i8, ptr %0, i64 56
  %391 = load double, ptr %390, align 8, !tbaa !41
  %392 = getelementptr inbounds i8, ptr %0, i64 120
  %393 = load ptr, ptr %392, align 8, !tbaa !23
  %394 = getelementptr inbounds double, ptr %393, i64 %.01436
  %395 = load double, ptr %394, align 8, !tbaa !28
  %396 = fmul double %391, -5.000000e-01
  %397 = tail call double @llvm.fmuladd.f64(double %396, double %395, double %.01421)
  %398 = getelementptr inbounds i8, ptr %0, i64 256
  %399 = load ptr, ptr %398, align 8, !tbaa !23
  %400 = getelementptr inbounds double, ptr %399, i64 %.01436
  store double %397, ptr %400, align 8, !tbaa !28
  br label %2175

401:                                              ; preds = %47
  %402 = getelementptr inbounds i8, ptr %0, i64 264
  %403 = load double, ptr %402, align 8, !tbaa !47
  %404 = getelementptr inbounds i8, ptr %0, i64 1520
  store double %403, ptr %404, align 8, !tbaa !58
  %405 = getelementptr inbounds i8, ptr %0, i64 56
  %406 = load double, ptr %405, align 8, !tbaa !41
  %407 = fmul double %406, 5.000000e-01
  %408 = getelementptr inbounds i8, ptr %0, i64 120
  %409 = load ptr, ptr %408, align 8, !tbaa !23
  %410 = getelementptr inbounds double, ptr %409, i64 %.01436
  %411 = load double, ptr %410, align 8, !tbaa !28
  %412 = tail call double @llvm.fmuladd.f64(double %407, double %411, double %.01421)
  %413 = getelementptr inbounds i8, ptr %0, i64 256
  %414 = load ptr, ptr %413, align 8, !tbaa !23
  %415 = getelementptr inbounds double, ptr %414, i64 %.01436
  store double %412, ptr %415, align 8, !tbaa !28
  br label %2175

416:                                              ; preds = %47
  %417 = getelementptr inbounds i8, ptr %0, i64 264
  %418 = load double, ptr %417, align 8, !tbaa !47
  %419 = getelementptr inbounds i8, ptr %0, i64 1528
  store double %418, ptr %419, align 8, !tbaa !59
  %420 = getelementptr inbounds i8, ptr %0, i64 56
  %421 = load double, ptr %420, align 8, !tbaa !41
  %422 = getelementptr inbounds i8, ptr %0, i64 120
  %423 = load ptr, ptr %422, align 8, !tbaa !23
  %424 = getelementptr inbounds double, ptr %423, i64 %.01436
  %425 = load double, ptr %424, align 8, !tbaa !28
  %426 = tail call double @llvm.fmuladd.f64(double %421, double %425, double %.01421)
  %427 = getelementptr inbounds i8, ptr %0, i64 256
  %428 = load ptr, ptr %427, align 8, !tbaa !23
  %429 = getelementptr inbounds double, ptr %428, i64 %.01436
  store double %426, ptr %429, align 8, !tbaa !28
  br label %2175

430:                                              ; preds = %47
  %431 = getelementptr inbounds i8, ptr %0, i64 264
  %432 = load double, ptr %431, align 8, !tbaa !47
  %433 = getelementptr inbounds i8, ptr %0, i64 1536
  store double %432, ptr %433, align 8, !tbaa !60
  %434 = getelementptr inbounds i8, ptr %0, i64 1528
  %435 = load double, ptr %434, align 8, !tbaa !59
  %436 = getelementptr inbounds i8, ptr %0, i64 1520
  %437 = load double, ptr %436, align 8, !tbaa !58
  %438 = fsub double %435, %437
  %439 = getelementptr inbounds i8, ptr %0, i64 1512
  %440 = load double, ptr %439, align 8, !tbaa !57
  %441 = fsub double %432, %440
  %442 = fneg double %441
  %443 = tail call double @llvm.fmuladd.f64(double %438, double 8.000000e+00, double %442)
  %444 = getelementptr inbounds i8, ptr %0, i64 56
  %445 = load double, ptr %444, align 8, !tbaa !41
  %446 = fmul double %445, 6.000000e+00
  %447 = getelementptr inbounds i8, ptr %0, i64 120
  %448 = load ptr, ptr %447, align 8, !tbaa !23
  %449 = getelementptr inbounds double, ptr %448, i64 %.01436
  %450 = load double, ptr %449, align 8, !tbaa !28
  %451 = fmul double %446, %450
  %452 = fdiv double %443, %451
  br label %526

.thread:                                          ; preds = %357, %373
  %.314041520 = phi i8 [ %.31404, %373 ], [ 1, %357 ]
  %453 = getelementptr inbounds i8, ptr %0, i64 56
  %454 = load double, ptr %453, align 8, !tbaa !41
  %455 = getelementptr inbounds i8, ptr %0, i64 120
  %456 = load ptr, ptr %455, align 8, !tbaa !23
  %457 = getelementptr inbounds double, ptr %456, i64 %.91445
  %458 = load double, ptr %457, align 8, !tbaa !28
  %459 = fneg double %454
  %460 = tail call double @llvm.fmuladd.f64(double %459, double %458, double %330)
  %461 = getelementptr inbounds i8, ptr %0, i64 1544
  store double %460, ptr %461, align 8, !tbaa !61
  %462 = load double, ptr %457, align 8, !tbaa !28
  %463 = tail call double @llvm.fmuladd.f64(double %454, double %462, double %330)
  %464 = getelementptr inbounds i8, ptr %0, i64 1552
  store double %463, ptr %464, align 8, !tbaa !62
  %465 = load ptr, ptr %331, align 8, !tbaa !23
  %466 = getelementptr inbounds i8, ptr %465, i64 %.91445
  %467 = load i8, ptr %466, align 1, !tbaa !25, !range !26, !noundef !27
  %468 = trunc nuw i8 %467 to i1
  br i1 %468, label %469, label %479

469:                                              ; preds = %.thread
  %470 = getelementptr inbounds i8, ptr %0, i64 1336
  %471 = load ptr, ptr %470, align 8, !tbaa !23
  %472 = getelementptr inbounds double, ptr %471, i64 %.91445
  %473 = load double, ptr %472, align 8, !tbaa !28
  %474 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %460, double noundef %473)
  br i1 %474, label %475, label %479

475:                                              ; preds = %469
  %476 = load ptr, ptr %470, align 8, !tbaa !23
  %477 = getelementptr inbounds double, ptr %476, i64 %.91445
  %478 = load double, ptr %477, align 8, !tbaa !28
  store double %478, ptr %461, align 8, !tbaa !61
  br label %479

479:                                              ; preds = %475, %469, %.thread
  %480 = load ptr, ptr %352, align 8, !tbaa !23
  %481 = getelementptr inbounds i8, ptr %480, i64 %.91445
  %482 = load i8, ptr %481, align 1, !tbaa !25, !range !26, !noundef !27
  %483 = trunc nuw i8 %482 to i1
  br i1 %483, label %484, label %495

484:                                              ; preds = %479
  %485 = load double, ptr %464, align 8, !tbaa !62
  %486 = getelementptr inbounds i8, ptr %0, i64 1400
  %487 = load ptr, ptr %486, align 8, !tbaa !23
  %488 = getelementptr inbounds double, ptr %487, i64 %.91445
  %489 = load double, ptr %488, align 8, !tbaa !28
  %490 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %485, double noundef %489)
  br i1 %490, label %491, label %495

491:                                              ; preds = %484
  %492 = load ptr, ptr %486, align 8, !tbaa !23
  %493 = getelementptr inbounds double, ptr %492, i64 %.91445
  %494 = load double, ptr %493, align 8, !tbaa !28
  store double %494, ptr %464, align 8, !tbaa !62
  br label %495

495:                                              ; preds = %491, %484, %479
  %496 = load double, ptr %461, align 8, !tbaa !61
  %497 = load ptr, ptr %327, align 8, !tbaa !23
  %498 = getelementptr inbounds double, ptr %497, i64 %.91445
  store double %496, ptr %498, align 8, !tbaa !28
  br label %2175

499:                                              ; preds = %47
  %500 = getelementptr inbounds i8, ptr %0, i64 264
  %501 = load double, ptr %500, align 8, !tbaa !47
  %502 = getelementptr inbounds i8, ptr %0, i64 1520
  store double %501, ptr %502, align 8, !tbaa !58
  %503 = getelementptr inbounds i8, ptr %0, i64 1552
  %504 = load double, ptr %503, align 8, !tbaa !62
  %505 = getelementptr inbounds i8, ptr %0, i64 256
  %506 = load ptr, ptr %505, align 8, !tbaa !23
  %507 = getelementptr inbounds double, ptr %506, i64 %.01436
  store double %504, ptr %507, align 8, !tbaa !28
  br label %2175

508:                                              ; preds = %47
  %509 = getelementptr inbounds i8, ptr %0, i64 264
  %510 = load double, ptr %509, align 8, !tbaa !47
  %511 = getelementptr inbounds i8, ptr %0, i64 1528
  store double %510, ptr %511, align 8, !tbaa !59
  %512 = getelementptr inbounds i8, ptr %0, i64 1544
  %513 = load double, ptr %512, align 8, !tbaa !61
  %514 = getelementptr inbounds i8, ptr %0, i64 1552
  %515 = load double, ptr %514, align 8, !tbaa !62
  %516 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %513, double noundef %515)
  br i1 %516, label %517, label %526

517:                                              ; preds = %508
  %518 = load double, ptr %511, align 8, !tbaa !59
  %519 = getelementptr inbounds i8, ptr %0, i64 1520
  %520 = load double, ptr %519, align 8, !tbaa !58
  %521 = fsub double %518, %520
  %522 = load double, ptr %514, align 8, !tbaa !62
  %523 = load double, ptr %512, align 8, !tbaa !61
  %524 = fsub double %522, %523
  %525 = fdiv double %521, %524
  br label %526

526:                                              ; preds = %508, %517, %430
  %.sink1780 = phi double [ %525, %517 ], [ %452, %430 ], [ 0.000000e+00, %508 ]
  %527 = getelementptr inbounds i8, ptr %0, i64 328
  %528 = load ptr, ptr %527, align 8, !tbaa !23
  %529 = getelementptr inbounds double, ptr %528, i64 %.01436
  store double %.sink1780, ptr %529, align 8, !tbaa !28
  %530 = getelementptr inbounds i8, ptr %0, i64 256
  %531 = load ptr, ptr %530, align 8, !tbaa !23
  %532 = getelementptr inbounds double, ptr %531, i64 %.01436
  store double %.01421, ptr %532, align 8, !tbaa !28
  %533 = add nsw i64 %.01436, 1
  br label %325

534:                                              ; preds = %325
  %535 = getelementptr inbounds i8, ptr %0, i64 1504
  %536 = load double, ptr %535, align 8, !tbaa !56
  %537 = getelementptr inbounds i8, ptr %0, i64 264
  store double %536, ptr %537, align 8, !tbaa !47
  %538 = getelementptr inbounds i8, ptr %0, i64 336
  store i8 0, ptr %538, align 8, !tbaa !51
  br label %539

539:                                              ; preds = %534, %317
  %540 = phi double [ %536, %534 ], [ %.pre1754, %317 ]
  %541 = getelementptr inbounds i8, ptr %0, i64 1056
  store double %540, ptr %541, align 8, !tbaa !52
  %542 = getelementptr inbounds i8, ptr %0, i64 728
  %543 = load ptr, ptr %542, align 8, !tbaa !23
  %544 = getelementptr inbounds i8, ptr %0, i64 328
  %545 = load ptr, ptr %544, align 8, !tbaa !23
  %546 = add nsw i64 %.01457, -1
  %547 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %546)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %543, i64 noundef 1, ptr noundef %545, i64 noundef 1, i64 noundef %547)
  %548 = getelementptr inbounds i8, ptr %0, i64 736
  %549 = getelementptr inbounds i8, ptr %0, i64 792
  %550 = load ptr, ptr %549, align 8, !tbaa !23
  %551 = load ptr, ptr %544, align 8, !tbaa !23
  %552 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %546)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %550, i64 noundef 1, ptr noundef %551, i64 noundef 1, i64 noundef %552)
  %553 = getelementptr inbounds i8, ptr %0, i64 608
  %554 = getelementptr inbounds i8, ptr %0, i64 1280
  %555 = getelementptr inbounds i8, ptr %0, i64 1152
  %556 = getelementptr inbounds i8, ptr %0, i64 1344
  %557 = getelementptr inbounds i8, ptr %0, i64 1216
  tail call void @_ZN11alglib_impl21projectgradientintobcEPNS_9ae_vectorES1_S1_S1_S1_S1_llPNS_8ae_stateE(ptr noundef nonnull %553, ptr noundef nonnull %548, ptr noundef nonnull %554, ptr noundef nonnull %555, ptr noundef nonnull %556, ptr noundef nonnull %557, i64 noundef %.01457, i64 noundef 0, ptr noundef %1)
  %.not1490.not1548 = icmp sgt i64 %.01457, 0
  br i1 %.not1490.not1548, label %.lr.ph1552, label %._crit_edge1553

.lr.ph1552:                                       ; preds = %539
  %558 = getelementptr inbounds i8, ptr %0, i64 120
  br label %559

559:                                              ; preds = %.lr.ph1552, %559
  %.213861550 = phi double [ 0.000000e+00, %.lr.ph1552 ], [ %568, %559 ]
  %.1014461549 = phi i64 [ 0, %.lr.ph1552 ], [ %569, %559 ]
  %560 = load ptr, ptr %549, align 8, !tbaa !23
  %561 = getelementptr inbounds double, ptr %560, i64 %.1014461549
  %562 = load double, ptr %561, align 8, !tbaa !28
  %563 = load ptr, ptr %558, align 8, !tbaa !23
  %564 = getelementptr inbounds double, ptr %563, i64 %.1014461549
  %565 = load double, ptr %564, align 8, !tbaa !28
  %566 = fmul double %562, %565
  %567 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %566, ptr noundef %1)
  %568 = fadd double %.213861550, %567
  %569 = add nuw nsw i64 %.1014461549, 1
  %exitcond1725.not = icmp eq i64 %569, %.01457
  br i1 %exitcond1725.not, label %._crit_edge1553, label %559, !llvm.loop !63

._crit_edge1553:                                  ; preds = %559, %539
  %.21386.lcssa = phi double [ 0.000000e+00, %539 ], [ %568, %559 ]
  %570 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.21386.lcssa, ptr noundef %1)
  %571 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %570, ptr noundef %1)
  br i1 %571, label %572, label %575

572:                                              ; preds = %._crit_edge1553
  %573 = load double, ptr %541, align 8, !tbaa !52
  %574 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %573, ptr noundef %1)
  br i1 %574, label %577, label %575

575:                                              ; preds = %572, %._crit_edge1553
  %576 = getelementptr inbounds i8, ptr %0, i64 1432
  store i64 -8, ptr %576, align 8, !tbaa !34
  br label %2215

577:                                              ; preds = %572
  %578 = getelementptr inbounds i8, ptr %0, i64 339
  %579 = load i8, ptr %578, align 1, !tbaa !35, !range !26, !noundef !27
  %580 = trunc nuw i8 %579 to i1
  br i1 %580, label %581, label %583

581:                                              ; preds = %577
  %582 = getelementptr inbounds i8, ptr %0, i64 1432
  store i64 8, ptr %582, align 8, !tbaa !34
  br label %2215

583:                                              ; preds = %577
  %584 = getelementptr inbounds i8, ptr %0, i64 8
  %585 = load double, ptr %584, align 8, !tbaa !64
  %586 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %570, double noundef %585)
  br i1 %586, label %590, label %.preheader1538

.preheader1538:                                   ; preds = %583
  br i1 %.not1490.not1548, label %.lr.ph1556, label %._crit_edge1561

.lr.ph1556:                                       ; preds = %.preheader1538
  %587 = getelementptr inbounds i8, ptr %0, i64 1632
  %588 = getelementptr inbounds i8, ptr %0, i64 1136
  %xtraiter = and i64 %.01457, 1
  %589 = icmp eq i64 %.01457, 1
  br i1 %589, label %.preheader1537.unr-lcssa, label %.lr.ph1556.new

.lr.ph1556.new:                                   ; preds = %.lr.ph1556
  %unroll_iter = and i64 %.01457, 9223372036854775806
  br label %604

590:                                              ; preds = %583
  %591 = getelementptr inbounds i8, ptr %0, i64 1432
  store i64 4, ptr %591, align 8, !tbaa !34
  br label %2215

.preheader1537.unr-lcssa:                         ; preds = %604, %.lr.ph1556
  %.1114471555.unr = phi i64 [ 0, %.lr.ph1556 ], [ %626, %604 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader1537, label %.preheader1537.epilog-lcssa

.preheader1537.epilog-lcssa:                      ; preds = %.preheader1537.unr-lcssa
  %592 = load ptr, ptr %587, align 8, !tbaa !23
  %593 = getelementptr inbounds double, ptr %592, i64 %.1114471555.unr
  %594 = load double, ptr %593, align 8, !tbaa !28
  %595 = fneg double %594
  %596 = load ptr, ptr %549, align 8, !tbaa !23
  %597 = getelementptr inbounds double, ptr %596, i64 %.1114471555.unr
  %598 = load double, ptr %597, align 8, !tbaa !28
  %599 = fmul double %598, %595
  %600 = load ptr, ptr %588, align 8, !tbaa !23
  %601 = getelementptr inbounds double, ptr %600, i64 %.1114471555.unr
  store double %599, ptr %601, align 8, !tbaa !28
  br label %.preheader1537

.preheader1537:                                   ; preds = %.preheader1537.unr-lcssa, %.preheader1537.epilog-lcssa
  br i1 %.not1490.not1548, label %.lr.ph1560, label %._crit_edge1561

.lr.ph1560:                                       ; preds = %.preheader1537
  %602 = getelementptr inbounds i8, ptr %0, i64 1136
  %603 = getelementptr inbounds i8, ptr %0, i64 120
  br label %627

604:                                              ; preds = %604, %.lr.ph1556.new
  %.1114471555 = phi i64 [ 0, %.lr.ph1556.new ], [ %626, %604 ]
  %niter = phi i64 [ 0, %.lr.ph1556.new ], [ %niter.next.1, %604 ]
  %605 = load ptr, ptr %587, align 8, !tbaa !23
  %606 = getelementptr inbounds double, ptr %605, i64 %.1114471555
  %607 = load double, ptr %606, align 8, !tbaa !28
  %608 = fneg double %607
  %609 = load ptr, ptr %549, align 8, !tbaa !23
  %610 = getelementptr inbounds double, ptr %609, i64 %.1114471555
  %611 = load double, ptr %610, align 8, !tbaa !28
  %612 = fmul double %611, %608
  %613 = load ptr, ptr %588, align 8, !tbaa !23
  %614 = getelementptr inbounds double, ptr %613, i64 %.1114471555
  store double %612, ptr %614, align 8, !tbaa !28
  %615 = or disjoint i64 %.1114471555, 1
  %616 = load ptr, ptr %587, align 8, !tbaa !23
  %617 = getelementptr inbounds double, ptr %616, i64 %615
  %618 = load double, ptr %617, align 8, !tbaa !28
  %619 = fneg double %618
  %620 = load ptr, ptr %549, align 8, !tbaa !23
  %621 = getelementptr inbounds double, ptr %620, i64 %615
  %622 = load double, ptr %621, align 8, !tbaa !28
  %623 = fmul double %622, %619
  %624 = load ptr, ptr %588, align 8, !tbaa !23
  %625 = getelementptr inbounds double, ptr %624, i64 %615
  store double %623, ptr %625, align 8, !tbaa !28
  %626 = add nuw nsw i64 %.1114471555, 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 %.preheader1537.unr-lcssa, label %604, !llvm.loop !65

627:                                              ; preds = %.lr.ph1560, %627
  %.1214481559 = phi i64 [ 0, %.lr.ph1560 ], [ %637, %627 ]
  %.214631558 = phi double [ 0.000000e+00, %.lr.ph1560 ], [ %636, %627 ]
  %628 = load ptr, ptr %602, align 8, !tbaa !23
  %629 = getelementptr inbounds double, ptr %628, i64 %.1214481559
  %630 = load double, ptr %629, align 8, !tbaa !28
  %631 = load ptr, ptr %603, align 8, !tbaa !23
  %632 = getelementptr inbounds double, ptr %631, i64 %.1214481559
  %633 = load double, ptr %632, align 8, !tbaa !28
  %634 = fdiv double %630, %633
  %635 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %634, ptr noundef %1)
  %636 = fadd double %.214631558, %635
  %637 = add nuw nsw i64 %.1214481559, 1
  %exitcond1727.not = icmp eq i64 %637, %.01457
  br i1 %exitcond1727.not, label %._crit_edge1561, label %627, !llvm.loop !66

._crit_edge1561:                                  ; preds = %627, %.preheader1538, %.preheader1537
  %.21463.lcssa = phi double [ 0.000000e+00, %.preheader1537 ], [ 0.000000e+00, %.preheader1538 ], [ %636, %627 ]
  %638 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.21463.lcssa, ptr noundef %1)
  %639 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %638, double noundef 0.000000e+00)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %639, ptr noundef nonnull @.str.480, ptr noundef %1)
  %640 = getelementptr inbounds i8, ptr %0, i64 1144
  %641 = load double, ptr %640, align 8, !tbaa !49
  %642 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %641, double noundef 0.000000e+00)
  br i1 %642, label %643, label %645

643:                                              ; preds = %._crit_edge1561
  %644 = load double, ptr %640, align 8, !tbaa !49
  br label %645

645:                                              ; preds = %._crit_edge1561, %643
  %.pn = phi double [ %644, %643 ], [ 1.000000e+00, %._crit_edge1561 ]
  %.sink1749 = fdiv double %.pn, %638
  %646 = getelementptr inbounds i8, ptr %0, i64 1720
  store double %.sink1749, ptr %646, align 8
  %647 = getelementptr inbounds i8, ptr %0, i64 1080
  %648 = getelementptr inbounds i8, ptr %0, i64 1728
  call void @_ZN11alglib_impl18calculatestepboundEPNS_9ae_vectorES1_dS1_S1_S1_S1_llPlPdS3_PNS_8ae_stateE(ptr noundef nonnull %553, ptr noundef nonnull %647, double noundef 1.000000e+00, ptr noundef nonnull %554, ptr noundef nonnull %555, ptr noundef nonnull %556, ptr noundef nonnull %557, i64 noundef %.01457, i64 noundef 0, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %648, ptr noundef %1)
  %649 = load double, ptr %648, align 8, !tbaa !67
  %650 = load i64, ptr %3, align 8, !tbaa !24
  %651 = icmp slt i64 %650, 0
  br i1 %651, label %654, label %652

652:                                              ; preds = %645
  %653 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %649, double noundef 1.000000e+50)
  br i1 %653, label %654, label %655

654:                                              ; preds = %652, %645
  store double 1.000000e+50, ptr %648, align 8, !tbaa !67
  br label %655

655:                                              ; preds = %654, %652
  %656 = getelementptr inbounds i8, ptr %0, i64 48
  %657 = load double, ptr %656, align 8, !tbaa !68
  %658 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %657, double noundef 0.000000e+00)
  br i1 %658, label %659, label %664

659:                                              ; preds = %655
  %660 = load double, ptr %648, align 8, !tbaa !67
  %661 = load double, ptr %656, align 8, !tbaa !68
  %662 = fdiv double %661, %638
  %663 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %660, double noundef %662, ptr noundef %1)
  store double %663, ptr %648, align 8, !tbaa !67
  br label %664

664:                                              ; preds = %659, %655
  %665 = getelementptr inbounds i8, ptr %0, i64 800
  %666 = getelementptr inbounds i8, ptr %0, i64 856
  %667 = load ptr, ptr %666, align 8, !tbaa !23
  %668 = getelementptr inbounds i8, ptr %0, i64 664
  %669 = load ptr, ptr %668, align 8, !tbaa !23
  %670 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %546)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %667, i64 noundef 1, ptr noundef %669, i64 noundef 1, i64 noundef %670)
  %671 = getelementptr inbounds i8, ptr %0, i64 928
  %672 = getelementptr inbounds i8, ptr %0, i64 984
  %673 = load ptr, ptr %672, align 8, !tbaa !23
  %674 = load ptr, ptr %549, align 8, !tbaa !23
  %675 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %546)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %673, i64 noundef 1, ptr noundef %674, i64 noundef 1, i64 noundef %675)
  %676 = getelementptr inbounds i8, ptr %0, i64 864
  %677 = getelementptr inbounds i8, ptr %0, i64 920
  %678 = load ptr, ptr %677, align 8, !tbaa !23
  %679 = load ptr, ptr %542, align 8, !tbaa !23
  %680 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %546)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %678, i64 noundef 1, ptr noundef %679, i64 noundef 1, i64 noundef %680)
  %681 = load double, ptr %541, align 8, !tbaa !52
  %682 = getelementptr inbounds i8, ptr %0, i64 1064
  store double %681, ptr %682, align 8, !tbaa !69
  %683 = getelementptr inbounds i8, ptr %0, i64 1712
  store i64 0, ptr %683, align 8, !tbaa !70
  %684 = getelementptr inbounds i8, ptr %0, i64 2320
  %685 = getelementptr inbounds i8, ptr %0, i64 64
  %686 = getelementptr inbounds i8, ptr %0, i64 6352
  call void @_ZN11alglib_impl34smoothnessmonitorstartlinesearch1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_PNS_8ae_stateE(ptr noundef nonnull %684, ptr noundef nonnull %685, ptr noundef nonnull %686, ptr noundef nonnull %665, double noundef %681, ptr noundef nonnull %676, ptr noundef %1)
  %687 = load double, ptr %648, align 8, !tbaa !67
  %688 = load double, ptr @_ZN11alglib_implL10minbc_gtolE, align 8, !tbaa !28
  %689 = getelementptr inbounds i8, ptr %0, i64 1704
  %690 = getelementptr inbounds i8, ptr %0, i64 1736
  %691 = getelementptr inbounds i8, ptr %0, i64 1800
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_S1_S2_ddPlS3_S1_PNS_11linminstateES3_PNS_8ae_stateE(i64 noundef %.01457, ptr noundef nonnull %665, ptr noundef nonnull %682, ptr noundef nonnull %671, ptr noundef nonnull %647, ptr noundef nonnull %646, double noundef %687, double noundef %688, ptr noundef nonnull %5, ptr noundef nonnull %689, ptr noundef nonnull %690, ptr noundef nonnull %691, ptr noundef nonnull %683, ptr noundef %1)
  br label %692

692:                                              ; preds = %._crit_edge1547, %664
  %.31464 = phi double [ %638, %664 ], [ %.01461, %._crit_edge1547 ]
  %.31387 = phi double [ %570, %664 ], [ %.01384, %._crit_edge1547 ]
  %.2 = phi double [ %649, %664 ], [ %.0, %._crit_edge1547 ]
  %693 = getelementptr inbounds i8, ptr %0, i64 1712
  %694 = load i64, ptr %693, align 8, !tbaa !70
  %695 = icmp eq i64 %694, 0
  br i1 %695, label %1025, label %.preheader1536

.preheader1536:                                   ; preds = %692
  %.not1493.not1563 = icmp sgt i64 %.01457, 0
  br i1 %.not1493.not1563, label %.lr.ph1565, label %._crit_edge1566

.lr.ph1565:                                       ; preds = %.preheader1536
  %696 = getelementptr inbounds i8, ptr %0, i64 856
  %697 = getelementptr inbounds i8, ptr %0, i64 256
  %698 = getelementptr inbounds i8, ptr %0, i64 1208
  %699 = getelementptr inbounds i8, ptr %0, i64 1336
  %700 = getelementptr inbounds i8, ptr %0, i64 1272
  %701 = getelementptr inbounds i8, ptr %0, i64 1400
  br label %702

702:                                              ; preds = %.lr.ph1565, %745
  %.1314491564 = phi i64 [ 0, %.lr.ph1565 ], [ %746, %745 ]
  %703 = load ptr, ptr %696, align 8, !tbaa !23
  %704 = getelementptr inbounds double, ptr %703, i64 %.1314491564
  %705 = load double, ptr %704, align 8, !tbaa !28
  %706 = load ptr, ptr %697, align 8, !tbaa !23
  %707 = getelementptr inbounds double, ptr %706, i64 %.1314491564
  store double %705, ptr %707, align 8, !tbaa !28
  %708 = load ptr, ptr %698, align 8, !tbaa !23
  %709 = getelementptr inbounds i8, ptr %708, i64 %.1314491564
  %710 = load i8, ptr %709, align 1, !tbaa !25, !range !26, !noundef !27
  %711 = trunc nuw i8 %710 to i1
  br i1 %711, label %712, label %726

712:                                              ; preds = %702
  %713 = load ptr, ptr %696, align 8, !tbaa !23
  %714 = getelementptr inbounds double, ptr %713, i64 %.1314491564
  %715 = load double, ptr %714, align 8, !tbaa !28
  %716 = load ptr, ptr %699, align 8, !tbaa !23
  %717 = getelementptr inbounds double, ptr %716, i64 %.1314491564
  %718 = load double, ptr %717, align 8, !tbaa !28
  %719 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %715, double noundef %718)
  br i1 %719, label %720, label %726

720:                                              ; preds = %712
  %721 = load ptr, ptr %699, align 8, !tbaa !23
  %722 = getelementptr inbounds double, ptr %721, i64 %.1314491564
  %723 = load double, ptr %722, align 8, !tbaa !28
  %724 = load ptr, ptr %697, align 8, !tbaa !23
  %725 = getelementptr inbounds double, ptr %724, i64 %.1314491564
  store double %723, ptr %725, align 8, !tbaa !28
  br label %726

726:                                              ; preds = %720, %712, %702
  %727 = load ptr, ptr %700, align 8, !tbaa !23
  %728 = getelementptr inbounds i8, ptr %727, i64 %.1314491564
  %729 = load i8, ptr %728, align 1, !tbaa !25, !range !26, !noundef !27
  %730 = trunc nuw i8 %729 to i1
  br i1 %730, label %731, label %745

731:                                              ; preds = %726
  %732 = load ptr, ptr %696, align 8, !tbaa !23
  %733 = getelementptr inbounds double, ptr %732, i64 %.1314491564
  %734 = load double, ptr %733, align 8, !tbaa !28
  %735 = load ptr, ptr %701, align 8, !tbaa !23
  %736 = getelementptr inbounds double, ptr %735, i64 %.1314491564
  %737 = load double, ptr %736, align 8, !tbaa !28
  %738 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %734, double noundef %737)
  br i1 %738, label %739, label %745

739:                                              ; preds = %731
  %740 = load ptr, ptr %701, align 8, !tbaa !23
  %741 = getelementptr inbounds double, ptr %740, i64 %.1314491564
  %742 = load double, ptr %741, align 8, !tbaa !28
  %743 = load ptr, ptr %697, align 8, !tbaa !23
  %744 = getelementptr inbounds double, ptr %743, i64 %.1314491564
  store double %742, ptr %744, align 8, !tbaa !28
  br label %745

745:                                              ; preds = %726, %731, %739
  %746 = add nuw nsw i64 %.1314491564, 1
  %exitcond1728.not = icmp eq i64 %746, %.01457
  br i1 %exitcond1728.not, label %._crit_edge1566, label %702, !llvm.loop !71

._crit_edge1566:                                  ; preds = %745, %.preheader1536
  %.131449.lcssa = phi i64 [ 0, %.preheader1536 ], [ %.01457, %745 ]
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %747 = getelementptr inbounds i8, ptr %0, i64 56
  %748 = load double, ptr %747, align 8, !tbaa !41
  %749 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %748, double noundef 0.000000e+00)
  br i1 %749, label %757, label %750

750:                                              ; preds = %._crit_edge1566
  %751 = getelementptr inbounds i8, ptr %0, i64 337
  store i8 1, ptr %751, align 1, !tbaa !46
  br label %2175

752:                                              ; preds = %47
  %753 = getelementptr inbounds i8, ptr %0, i64 337
  store i8 0, ptr %753, align 1, !tbaa !46
  %754 = getelementptr inbounds i8, ptr %0, i64 1416
  %755 = load i64, ptr %754, align 8, !tbaa !53
  %756 = add nsw i64 %755, 1
  store i64 %756, ptr %754, align 8, !tbaa !53
  %.phi.trans.insert1751 = getelementptr inbounds i8, ptr %0, i64 264
  %.pre1752 = load double, ptr %.phi.trans.insert1751, align 8, !tbaa !47
  br label %980

757:                                              ; preds = %._crit_edge1566
  %758 = getelementptr inbounds i8, ptr %0, i64 336
  store i8 1, ptr %758, align 8, !tbaa !51
  br label %2175

759:                                              ; preds = %47
  %760 = getelementptr inbounds i8, ptr %0, i64 264
  %761 = load double, ptr %760, align 8, !tbaa !47
  %762 = getelementptr inbounds i8, ptr %0, i64 1504
  store double %761, ptr %762, align 8, !tbaa !56
  br label %763

763:                                              ; preds = %964, %759
  %.141450 = phi i64 [ 0, %759 ], [ %974, %964 ]
  %.not1487 = icmp slt i64 %.141450, %.01457
  br i1 %.not1487, label %764, label %975

764:                                              ; preds = %763
  %765 = getelementptr inbounds i8, ptr %0, i64 256
  %766 = load ptr, ptr %765, align 8, !tbaa !23
  %767 = getelementptr inbounds double, ptr %766, i64 %.141450
  %768 = load double, ptr %767, align 8, !tbaa !28
  %769 = getelementptr inbounds i8, ptr %0, i64 1208
  %770 = load ptr, ptr %769, align 8, !tbaa !23
  %771 = getelementptr inbounds i8, ptr %770, i64 %.141450
  %772 = load i8, ptr %771, align 1, !tbaa !25, !range !26, !noundef !27
  %773 = trunc nuw i8 %772 to i1
  br i1 %773, label %774, label %789

774:                                              ; preds = %764
  %775 = getelementptr inbounds i8, ptr %0, i64 56
  %776 = load double, ptr %775, align 8, !tbaa !41
  %777 = getelementptr inbounds i8, ptr %0, i64 120
  %778 = load ptr, ptr %777, align 8, !tbaa !23
  %779 = getelementptr inbounds double, ptr %778, i64 %.141450
  %780 = load double, ptr %779, align 8, !tbaa !28
  %781 = fneg double %776
  %782 = tail call double @llvm.fmuladd.f64(double %781, double %780, double %768)
  %783 = getelementptr inbounds i8, ptr %0, i64 1336
  %784 = load ptr, ptr %783, align 8, !tbaa !23
  %785 = getelementptr inbounds double, ptr %784, i64 %.141450
  %786 = load double, ptr %785, align 8, !tbaa !28
  %787 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %782, double noundef %786)
  %788 = zext i1 %787 to i8
  br label %789

789:                                              ; preds = %774, %764
  %.41405 = phi i8 [ %788, %774 ], [ 0, %764 ]
  %790 = getelementptr inbounds i8, ptr %0, i64 1272
  %791 = load ptr, ptr %790, align 8, !tbaa !23
  %792 = getelementptr inbounds i8, ptr %791, i64 %.141450
  %793 = load i8, ptr %792, align 1, !tbaa !25, !range !26, !noundef !27
  %794 = trunc nuw i8 %793 to i1
  br i1 %794, label %795, label %811

795:                                              ; preds = %789
  %796 = trunc nuw i8 %.41405 to i1
  br i1 %796, label %.thread1521, label %797

797:                                              ; preds = %795
  %798 = getelementptr inbounds i8, ptr %0, i64 56
  %799 = load double, ptr %798, align 8, !tbaa !41
  %800 = getelementptr inbounds i8, ptr %0, i64 120
  %801 = load ptr, ptr %800, align 8, !tbaa !23
  %802 = getelementptr inbounds double, ptr %801, i64 %.141450
  %803 = load double, ptr %802, align 8, !tbaa !28
  %804 = tail call double @llvm.fmuladd.f64(double %799, double %803, double %768)
  %805 = getelementptr inbounds i8, ptr %0, i64 1400
  %806 = load ptr, ptr %805, align 8, !tbaa !23
  %807 = getelementptr inbounds double, ptr %806, i64 %.141450
  %808 = load double, ptr %807, align 8, !tbaa !28
  %809 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %804, double noundef %808)
  %810 = zext i1 %809 to i8
  br label %811

811:                                              ; preds = %797, %789
  %.51406 = phi i8 [ %.41405, %789 ], [ %810, %797 ]
  %812 = trunc nuw i8 %.51406 to i1
  br i1 %812, label %.thread1521, label %813

813:                                              ; preds = %811
  %814 = getelementptr inbounds i8, ptr %0, i64 56
  %815 = load double, ptr %814, align 8, !tbaa !41
  %816 = getelementptr inbounds i8, ptr %0, i64 120
  %817 = load ptr, ptr %816, align 8, !tbaa !23
  %818 = getelementptr inbounds double, ptr %817, i64 %.141450
  %819 = load double, ptr %818, align 8, !tbaa !28
  %820 = fneg double %815
  %821 = tail call double @llvm.fmuladd.f64(double %820, double %819, double %768)
  %822 = load ptr, ptr %765, align 8, !tbaa !23
  %823 = getelementptr inbounds double, ptr %822, i64 %.141450
  store double %821, ptr %823, align 8, !tbaa !28
  br label %2175

824:                                              ; preds = %47
  %825 = getelementptr inbounds i8, ptr %0, i64 264
  %826 = load double, ptr %825, align 8, !tbaa !47
  %827 = getelementptr inbounds i8, ptr %0, i64 1512
  store double %826, ptr %827, align 8, !tbaa !57
  %828 = getelementptr inbounds i8, ptr %0, i64 56
  %829 = load double, ptr %828, align 8, !tbaa !41
  %830 = getelementptr inbounds i8, ptr %0, i64 120
  %831 = load ptr, ptr %830, align 8, !tbaa !23
  %832 = getelementptr inbounds double, ptr %831, i64 %.01436
  %833 = load double, ptr %832, align 8, !tbaa !28
  %834 = fmul double %829, -5.000000e-01
  %835 = tail call double @llvm.fmuladd.f64(double %834, double %833, double %.01421)
  %836 = getelementptr inbounds i8, ptr %0, i64 256
  %837 = load ptr, ptr %836, align 8, !tbaa !23
  %838 = getelementptr inbounds double, ptr %837, i64 %.01436
  store double %835, ptr %838, align 8, !tbaa !28
  br label %2175

839:                                              ; preds = %47
  %840 = getelementptr inbounds i8, ptr %0, i64 264
  %841 = load double, ptr %840, align 8, !tbaa !47
  %842 = getelementptr inbounds i8, ptr %0, i64 1520
  store double %841, ptr %842, align 8, !tbaa !58
  %843 = getelementptr inbounds i8, ptr %0, i64 56
  %844 = load double, ptr %843, align 8, !tbaa !41
  %845 = fmul double %844, 5.000000e-01
  %846 = getelementptr inbounds i8, ptr %0, i64 120
  %847 = load ptr, ptr %846, align 8, !tbaa !23
  %848 = getelementptr inbounds double, ptr %847, i64 %.01436
  %849 = load double, ptr %848, align 8, !tbaa !28
  %850 = tail call double @llvm.fmuladd.f64(double %845, double %849, double %.01421)
  %851 = getelementptr inbounds i8, ptr %0, i64 256
  %852 = load ptr, ptr %851, align 8, !tbaa !23
  %853 = getelementptr inbounds double, ptr %852, i64 %.01436
  store double %850, ptr %853, align 8, !tbaa !28
  br label %2175

854:                                              ; preds = %47
  %855 = getelementptr inbounds i8, ptr %0, i64 264
  %856 = load double, ptr %855, align 8, !tbaa !47
  %857 = getelementptr inbounds i8, ptr %0, i64 1528
  store double %856, ptr %857, align 8, !tbaa !59
  %858 = getelementptr inbounds i8, ptr %0, i64 56
  %859 = load double, ptr %858, align 8, !tbaa !41
  %860 = getelementptr inbounds i8, ptr %0, i64 120
  %861 = load ptr, ptr %860, align 8, !tbaa !23
  %862 = getelementptr inbounds double, ptr %861, i64 %.01436
  %863 = load double, ptr %862, align 8, !tbaa !28
  %864 = tail call double @llvm.fmuladd.f64(double %859, double %863, double %.01421)
  %865 = getelementptr inbounds i8, ptr %0, i64 256
  %866 = load ptr, ptr %865, align 8, !tbaa !23
  %867 = getelementptr inbounds double, ptr %866, i64 %.01436
  store double %864, ptr %867, align 8, !tbaa !28
  br label %2175

868:                                              ; preds = %47
  %869 = getelementptr inbounds i8, ptr %0, i64 264
  %870 = load double, ptr %869, align 8, !tbaa !47
  %871 = getelementptr inbounds i8, ptr %0, i64 1536
  store double %870, ptr %871, align 8, !tbaa !60
  %872 = getelementptr inbounds i8, ptr %0, i64 1528
  %873 = load double, ptr %872, align 8, !tbaa !59
  %874 = getelementptr inbounds i8, ptr %0, i64 1520
  %875 = load double, ptr %874, align 8, !tbaa !58
  %876 = fsub double %873, %875
  %877 = getelementptr inbounds i8, ptr %0, i64 1512
  %878 = load double, ptr %877, align 8, !tbaa !57
  %879 = fsub double %870, %878
  %880 = fneg double %879
  %881 = tail call double @llvm.fmuladd.f64(double %876, double 8.000000e+00, double %880)
  %882 = getelementptr inbounds i8, ptr %0, i64 56
  %883 = load double, ptr %882, align 8, !tbaa !41
  %884 = fmul double %883, 6.000000e+00
  %885 = getelementptr inbounds i8, ptr %0, i64 120
  %886 = load ptr, ptr %885, align 8, !tbaa !23
  %887 = getelementptr inbounds double, ptr %886, i64 %.01436
  %888 = load double, ptr %887, align 8, !tbaa !28
  %889 = fmul double %884, %888
  %890 = fdiv double %881, %889
  br label %964

.thread1521:                                      ; preds = %795, %811
  %.514061523 = phi i8 [ %.51406, %811 ], [ 1, %795 ]
  %891 = getelementptr inbounds i8, ptr %0, i64 56
  %892 = load double, ptr %891, align 8, !tbaa !41
  %893 = getelementptr inbounds i8, ptr %0, i64 120
  %894 = load ptr, ptr %893, align 8, !tbaa !23
  %895 = getelementptr inbounds double, ptr %894, i64 %.141450
  %896 = load double, ptr %895, align 8, !tbaa !28
  %897 = fneg double %892
  %898 = tail call double @llvm.fmuladd.f64(double %897, double %896, double %768)
  %899 = getelementptr inbounds i8, ptr %0, i64 1544
  store double %898, ptr %899, align 8, !tbaa !61
  %900 = load double, ptr %895, align 8, !tbaa !28
  %901 = tail call double @llvm.fmuladd.f64(double %892, double %900, double %768)
  %902 = getelementptr inbounds i8, ptr %0, i64 1552
  store double %901, ptr %902, align 8, !tbaa !62
  %903 = load ptr, ptr %769, align 8, !tbaa !23
  %904 = getelementptr inbounds i8, ptr %903, i64 %.141450
  %905 = load i8, ptr %904, align 1, !tbaa !25, !range !26, !noundef !27
  %906 = trunc nuw i8 %905 to i1
  br i1 %906, label %907, label %917

907:                                              ; preds = %.thread1521
  %908 = getelementptr inbounds i8, ptr %0, i64 1336
  %909 = load ptr, ptr %908, align 8, !tbaa !23
  %910 = getelementptr inbounds double, ptr %909, i64 %.141450
  %911 = load double, ptr %910, align 8, !tbaa !28
  %912 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %898, double noundef %911)
  br i1 %912, label %913, label %917

913:                                              ; preds = %907
  %914 = load ptr, ptr %908, align 8, !tbaa !23
  %915 = getelementptr inbounds double, ptr %914, i64 %.141450
  %916 = load double, ptr %915, align 8, !tbaa !28
  store double %916, ptr %899, align 8, !tbaa !61
  br label %917

917:                                              ; preds = %913, %907, %.thread1521
  %918 = load ptr, ptr %790, align 8, !tbaa !23
  %919 = getelementptr inbounds i8, ptr %918, i64 %.141450
  %920 = load i8, ptr %919, align 1, !tbaa !25, !range !26, !noundef !27
  %921 = trunc nuw i8 %920 to i1
  br i1 %921, label %922, label %933

922:                                              ; preds = %917
  %923 = load double, ptr %902, align 8, !tbaa !62
  %924 = getelementptr inbounds i8, ptr %0, i64 1400
  %925 = load ptr, ptr %924, align 8, !tbaa !23
  %926 = getelementptr inbounds double, ptr %925, i64 %.141450
  %927 = load double, ptr %926, align 8, !tbaa !28
  %928 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %923, double noundef %927)
  br i1 %928, label %929, label %933

929:                                              ; preds = %922
  %930 = load ptr, ptr %924, align 8, !tbaa !23
  %931 = getelementptr inbounds double, ptr %930, i64 %.141450
  %932 = load double, ptr %931, align 8, !tbaa !28
  store double %932, ptr %902, align 8, !tbaa !62
  br label %933

933:                                              ; preds = %929, %922, %917
  %934 = load double, ptr %899, align 8, !tbaa !61
  %935 = load ptr, ptr %765, align 8, !tbaa !23
  %936 = getelementptr inbounds double, ptr %935, i64 %.141450
  store double %934, ptr %936, align 8, !tbaa !28
  br label %2175

937:                                              ; preds = %47
  %938 = getelementptr inbounds i8, ptr %0, i64 264
  %939 = load double, ptr %938, align 8, !tbaa !47
  %940 = getelementptr inbounds i8, ptr %0, i64 1520
  store double %939, ptr %940, align 8, !tbaa !58
  %941 = getelementptr inbounds i8, ptr %0, i64 1552
  %942 = load double, ptr %941, align 8, !tbaa !62
  %943 = getelementptr inbounds i8, ptr %0, i64 256
  %944 = load ptr, ptr %943, align 8, !tbaa !23
  %945 = getelementptr inbounds double, ptr %944, i64 %.01436
  store double %942, ptr %945, align 8, !tbaa !28
  br label %2175

946:                                              ; preds = %47
  %947 = getelementptr inbounds i8, ptr %0, i64 264
  %948 = load double, ptr %947, align 8, !tbaa !47
  %949 = getelementptr inbounds i8, ptr %0, i64 1528
  store double %948, ptr %949, align 8, !tbaa !59
  %950 = getelementptr inbounds i8, ptr %0, i64 1544
  %951 = load double, ptr %950, align 8, !tbaa !61
  %952 = getelementptr inbounds i8, ptr %0, i64 1552
  %953 = load double, ptr %952, align 8, !tbaa !62
  %954 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %951, double noundef %953)
  br i1 %954, label %955, label %964

955:                                              ; preds = %946
  %956 = load double, ptr %949, align 8, !tbaa !59
  %957 = getelementptr inbounds i8, ptr %0, i64 1520
  %958 = load double, ptr %957, align 8, !tbaa !58
  %959 = fsub double %956, %958
  %960 = load double, ptr %952, align 8, !tbaa !62
  %961 = load double, ptr %950, align 8, !tbaa !61
  %962 = fsub double %960, %961
  %963 = fdiv double %959, %962
  br label %964

964:                                              ; preds = %955, %946, %868
  %.sink1784.sink = phi double [ %890, %868 ], [ %963, %955 ], [ 0.000000e+00, %946 ]
  %.sink1791 = phi i64 [ 4, %868 ], [ 2, %955 ], [ 2, %946 ]
  %965 = getelementptr inbounds i8, ptr %0, i64 328
  %966 = load ptr, ptr %965, align 8, !tbaa !23
  %967 = getelementptr inbounds double, ptr %966, i64 %.01436
  store double %.sink1784.sink, ptr %967, align 8, !tbaa !28
  %968 = getelementptr inbounds i8, ptr %0, i64 1416
  %969 = load i64, ptr %968, align 8, !tbaa !53
  %970 = add nsw i64 %969, %.sink1791
  store i64 %970, ptr %968, align 8, !tbaa !53
  %971 = getelementptr inbounds i8, ptr %0, i64 256
  %972 = load ptr, ptr %971, align 8, !tbaa !23
  %973 = getelementptr inbounds double, ptr %972, i64 %.01436
  store double %.01421, ptr %973, align 8, !tbaa !28
  %974 = add nsw i64 %.01436, 1
  br label %763

975:                                              ; preds = %763
  %976 = getelementptr inbounds i8, ptr %0, i64 1504
  %977 = load double, ptr %976, align 8, !tbaa !56
  %978 = getelementptr inbounds i8, ptr %0, i64 264
  store double %977, ptr %978, align 8, !tbaa !47
  %979 = getelementptr inbounds i8, ptr %0, i64 336
  store i8 0, ptr %979, align 8, !tbaa !51
  br label %980

980:                                              ; preds = %975, %752
  %981 = phi double [ %977, %975 ], [ %.pre1752, %752 ]
  %982 = getelementptr inbounds i8, ptr %0, i64 2320
  %983 = getelementptr inbounds i8, ptr %0, i64 64
  %984 = getelementptr inbounds i8, ptr %0, i64 6352
  %985 = getelementptr inbounds i8, ptr %0, i64 1080
  %986 = getelementptr inbounds i8, ptr %0, i64 1720
  %987 = load double, ptr %986, align 8, !tbaa !72
  %988 = getelementptr inbounds i8, ptr %0, i64 200
  %989 = getelementptr inbounds i8, ptr %0, i64 264
  %990 = getelementptr inbounds i8, ptr %0, i64 272
  tail call void @_ZN11alglib_impl31smoothnessmonitorenqueuepoint1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_dS3_PNS_8ae_stateE(ptr noundef nonnull %982, ptr noundef nonnull %983, ptr noundef nonnull %984, ptr noundef nonnull %985, double noundef %987, ptr noundef nonnull %988, double noundef %981, ptr noundef nonnull %990, ptr noundef %1)
  %991 = getelementptr inbounds i8, ptr %0, i64 1992
  %992 = load double, ptr %991, align 8, !tbaa !73
  tail call void @_ZN11alglib_impl12trimfunctionEPdPNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef nonnull %989, ptr noundef nonnull %990, i64 noundef %.01457, double noundef %992, ptr noundef %1)
  %993 = load double, ptr %989, align 8, !tbaa !47
  %994 = getelementptr inbounds i8, ptr %0, i64 1064
  store double %993, ptr %994, align 8, !tbaa !69
  %995 = getelementptr inbounds i8, ptr %0, i64 928
  %996 = getelementptr inbounds i8, ptr %0, i64 984
  %997 = load ptr, ptr %996, align 8, !tbaa !23
  %998 = getelementptr inbounds i8, ptr %0, i64 328
  %999 = load ptr, ptr %998, align 8, !tbaa !23
  %1000 = add nsw i64 %.01457, -1
  %1001 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1000)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %997, i64 noundef 1, ptr noundef %999, i64 noundef 1, i64 noundef %1001)
  %1002 = getelementptr inbounds i8, ptr %0, i64 920
  %1003 = load ptr, ptr %1002, align 8, !tbaa !23
  %1004 = load ptr, ptr %998, align 8, !tbaa !23
  %1005 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1000)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1003, i64 noundef 1, ptr noundef %1004, i64 noundef 1, i64 noundef %1005)
  %.not1488.not1543 = icmp sgt i64 %.01457, 0
  br i1 %.not1488.not1543, label %.lr.ph1546, label %._crit_edge1547

.lr.ph1546:                                       ; preds = %980
  %1006 = getelementptr inbounds i8, ptr %0, i64 1136
  br label %1007

1007:                                             ; preds = %.lr.ph1546, %1015
  %.1514511544 = phi i64 [ 0, %.lr.ph1546 ], [ %1016, %1015 ]
  %1008 = load ptr, ptr %1006, align 8, !tbaa !23
  %1009 = getelementptr inbounds double, ptr %1008, i64 %.1514511544
  %1010 = load double, ptr %1009, align 8, !tbaa !28
  %1011 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1010, double noundef 0.000000e+00)
  br i1 %1011, label %1012, label %1015

1012:                                             ; preds = %1007
  %1013 = load ptr, ptr %996, align 8, !tbaa !23
  %1014 = getelementptr inbounds double, ptr %1013, i64 %.1514511544
  store double 0.000000e+00, ptr %1014, align 8, !tbaa !28
  br label %1015

1015:                                             ; preds = %1007, %1012
  %1016 = add nuw nsw i64 %.1514511544, 1
  %exitcond1724.not = icmp eq i64 %1016, %.01457
  br i1 %exitcond1724.not, label %._crit_edge1547, label %1007, !llvm.loop !74

._crit_edge1547:                                  ; preds = %1015, %980
  %1017 = getelementptr inbounds i8, ptr %0, i64 800
  %1018 = getelementptr inbounds i8, ptr %0, i64 1728
  %1019 = load double, ptr %1018, align 8, !tbaa !67
  %1020 = load double, ptr @_ZN11alglib_implL10minbc_gtolE, align 8, !tbaa !28
  %1021 = getelementptr inbounds i8, ptr %0, i64 1704
  %1022 = getelementptr inbounds i8, ptr %0, i64 1736
  %1023 = getelementptr inbounds i8, ptr %0, i64 1800
  %1024 = getelementptr inbounds i8, ptr %0, i64 1712
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_S1_S2_ddPlS3_S1_PNS_11linminstateES3_PNS_8ae_stateE(i64 noundef %.01457, ptr noundef nonnull %1017, ptr noundef nonnull %994, ptr noundef nonnull %995, ptr noundef nonnull %985, ptr noundef nonnull %986, double noundef %1019, double noundef %1020, ptr noundef nonnull %5, ptr noundef nonnull %1021, ptr noundef nonnull %1022, ptr noundef nonnull %1023, ptr noundef nonnull %1024, ptr noundef %1)
  br label %692

1025:                                             ; preds = %692
  %1026 = getelementptr inbounds i8, ptr %0, i64 2320
  call void @_ZN11alglib_impl35smoothnessmonitorfinalizelinesearchEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef nonnull %1026, ptr noundef %1)
  %1027 = getelementptr inbounds i8, ptr %0, i64 1064
  %1028 = load double, ptr %1027, align 8, !tbaa !69
  %.not1494.not1568 = icmp sgt i64 %.01457, 0
  br i1 %.not1494.not1568, label %.lr.ph1572, label %._crit_edge1573

.lr.ph1572:                                       ; preds = %1025
  %1029 = getelementptr inbounds i8, ptr %0, i64 920
  %1030 = load ptr, ptr %1029, align 8, !tbaa !23
  %1031 = add nsw i64 %.01457, -1
  %xtraiter1840 = and i64 %.01457, 3
  %1032 = icmp ult i64 %1031, 3
  br i1 %1032, label %._crit_edge1573.loopexit.unr-lcssa, label %.lr.ph1572.new

.lr.ph1572.new:                                   ; preds = %.lr.ph1572
  %unroll_iter1843 = and i64 %.01457, 9223372036854775804
  br label %1033

1033:                                             ; preds = %1033, %.lr.ph1572.new
  %.214231570 = phi double [ %1028, %.lr.ph1572.new ], [ %1048, %1033 ]
  %.1614521569 = phi i64 [ 0, %.lr.ph1572.new ], [ %1049, %1033 ]
  %niter1844 = phi i64 [ 0, %.lr.ph1572.new ], [ %niter1844.next.3, %1033 ]
  %1034 = getelementptr inbounds double, ptr %1030, i64 %.1614521569
  %1035 = load double, ptr %1034, align 8, !tbaa !28
  %1036 = call double @llvm.fmuladd.f64(double %.214231570, double 1.000000e-01, double %1035)
  %1037 = or disjoint i64 %.1614521569, 1
  %1038 = getelementptr inbounds double, ptr %1030, i64 %1037
  %1039 = load double, ptr %1038, align 8, !tbaa !28
  %1040 = call double @llvm.fmuladd.f64(double %1036, double 1.000000e-01, double %1039)
  %1041 = or disjoint i64 %.1614521569, 2
  %1042 = getelementptr inbounds double, ptr %1030, i64 %1041
  %1043 = load double, ptr %1042, align 8, !tbaa !28
  %1044 = call double @llvm.fmuladd.f64(double %1040, double 1.000000e-01, double %1043)
  %1045 = or disjoint i64 %.1614521569, 3
  %1046 = getelementptr inbounds double, ptr %1030, i64 %1045
  %1047 = load double, ptr %1046, align 8, !tbaa !28
  %1048 = call double @llvm.fmuladd.f64(double %1044, double 1.000000e-01, double %1047)
  %1049 = add nuw nsw i64 %.1614521569, 4
  %niter1844.next.3 = add i64 %niter1844, 4
  %niter1844.ncmp.3 = icmp eq i64 %niter1844.next.3, %unroll_iter1843
  br i1 %niter1844.ncmp.3, label %._crit_edge1573.loopexit.unr-lcssa, label %1033, !llvm.loop !75

._crit_edge1573.loopexit.unr-lcssa:               ; preds = %1033, %.lr.ph1572
  %.lcssa1836.ph = phi double [ poison, %.lr.ph1572 ], [ %1048, %1033 ]
  %.214231570.unr = phi double [ %1028, %.lr.ph1572 ], [ %1048, %1033 ]
  %.1614521569.unr = phi i64 [ 0, %.lr.ph1572 ], [ %1049, %1033 ]
  %lcmp.mod1841.not = icmp eq i64 %xtraiter1840, 0
  br i1 %lcmp.mod1841.not, label %._crit_edge1573, label %.epil.preheader1839

.epil.preheader1839:                              ; preds = %._crit_edge1573.loopexit.unr-lcssa, %.epil.preheader1839
  %.214231570.epil = phi double [ %1052, %.epil.preheader1839 ], [ %.214231570.unr, %._crit_edge1573.loopexit.unr-lcssa ]
  %.1614521569.epil = phi i64 [ %1053, %.epil.preheader1839 ], [ %.1614521569.unr, %._crit_edge1573.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader1839 ], [ 0, %._crit_edge1573.loopexit.unr-lcssa ]
  %1050 = getelementptr inbounds double, ptr %1030, i64 %.1614521569.epil
  %1051 = load double, ptr %1050, align 8, !tbaa !28
  %1052 = call double @llvm.fmuladd.f64(double %.214231570.epil, double 1.000000e-01, double %1051)
  %1053 = add nuw nsw i64 %.1614521569.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter1840
  br i1 %epil.iter.cmp.not, label %._crit_edge1573, label %.epil.preheader1839, !llvm.loop !76

._crit_edge1573:                                  ; preds = %._crit_edge1573.loopexit.unr-lcssa, %.epil.preheader1839, %1025
  %.161452.lcssa = phi i64 [ 0, %1025 ], [ %.01457, %.epil.preheader1839 ], [ %.01457, %._crit_edge1573.loopexit.unr-lcssa ]
  %.21423.lcssa = phi double [ %1028, %1025 ], [ %.lcssa1836.ph, %._crit_edge1573.loopexit.unr-lcssa ], [ %1052, %.epil.preheader1839 ]
  %1054 = add nsw i64 %.01457, -1
  %1055 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.21423.lcssa, ptr noundef %1)
  br i1 %1055, label %1058, label %1056

1056:                                             ; preds = %._crit_edge1573
  %1057 = getelementptr inbounds i8, ptr %0, i64 1432
  store i64 -8, ptr %1057, align 8, !tbaa !34
  br label %2215

1058:                                             ; preds = %._crit_edge1573
  %1059 = load i64, ptr %5, align 8
  %1060 = and i64 %1059, -5
  %or.cond.not = icmp eq i64 %1060, 1
  br i1 %or.cond.not, label %1090, label %1061

1061:                                             ; preds = %1058
  %1062 = load i64, ptr %3, align 8, !tbaa !24
  %1063 = icmp sgt i64 %1062, -1
  br i1 %1063, label %1064, label %1088

1064:                                             ; preds = %1061
  %1065 = getelementptr inbounds i8, ptr %0, i64 1728
  %1066 = load double, ptr %1065, align 8, !tbaa !67
  %1067 = fmul double %.31464, %1066
  %1068 = load double, ptr @_ZN11alglib_implL24minbc_maxnonmonotoniclenE, align 8, !tbaa !28
  %1069 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1067, double noundef %1068)
  br i1 %1069, label %1070, label %1088

1070:                                             ; preds = %1064
  %1071 = getelementptr inbounds i8, ptr %0, i64 2000
  %1072 = load i64, ptr %1071, align 8, !tbaa !50
  %1073 = icmp sgt i64 %1072, 0
  br i1 %1073, label %1074, label %1088

1074:                                             ; preds = %1070
  %1075 = load double, ptr %1065, align 8, !tbaa !67
  %1076 = getelementptr inbounds i8, ptr %0, i64 1720
  store double %1075, ptr %1076, align 8, !tbaa !72
  store i64 5, ptr %5, align 8, !tbaa !24
  %1077 = getelementptr inbounds i8, ptr %0, i64 856
  %1078 = load ptr, ptr %1077, align 8, !tbaa !23
  %1079 = getelementptr inbounds i8, ptr %0, i64 664
  %1080 = load ptr, ptr %1079, align 8, !tbaa !23
  %1081 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1054)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1078, i64 noundef 1, ptr noundef %1080, i64 noundef 1, i64 noundef %1081)
  %1082 = load ptr, ptr %1077, align 8, !tbaa !23
  %1083 = getelementptr inbounds i8, ptr %0, i64 1136
  %1084 = load ptr, ptr %1083, align 8, !tbaa !23
  %1085 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1054)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %1082, i64 noundef 1, ptr noundef %1084, i64 noundef 1, i64 noundef %1085, double noundef %1075)
  %1086 = load i64, ptr %1071, align 8, !tbaa !50
  %1087 = add nsw i64 %1086, -1
  store i64 %1087, ptr %1071, align 8, !tbaa !50
  br label %1090

1088:                                             ; preds = %1070, %1064, %1061
  %1089 = getelementptr inbounds i8, ptr %0, i64 1432
  store i64 7, ptr %1089, align 8, !tbaa !34
  br label %2215

1090:                                             ; preds = %1074, %1058
  %.31424 = phi double [ %1075, %1074 ], [ %.21423.lcssa, %1058 ]
  %1091 = getelementptr inbounds i8, ptr %0, i64 339
  %1092 = load i8, ptr %1091, align 1, !tbaa !35, !range !26, !noundef !27
  %1093 = trunc nuw i8 %1092 to i1
  br i1 %1093, label %1094, label %1096

1094:                                             ; preds = %1090
  %1095 = getelementptr inbounds i8, ptr %0, i64 1432
  store i64 8, ptr %1095, align 8, !tbaa !34
  br label %2215

1096:                                             ; preds = %1090
  %1097 = load i64, ptr %5, align 8, !tbaa !24
  %.not1495 = icmp eq i64 %1097, 5
  br i1 %.not1495, label %1098, label %1104

1098:                                             ; preds = %1096
  %1099 = getelementptr inbounds i8, ptr %0, i64 1720
  %1100 = load double, ptr %1099, align 8, !tbaa !72
  %1101 = getelementptr inbounds i8, ptr %0, i64 1728
  %1102 = load double, ptr %1101, align 8, !tbaa !67
  %1103 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1100, double noundef %1102)
  br label %1104

1104:                                             ; preds = %1098, %1096
  %1105 = phi i1 [ true, %1096 ], [ %1103, %1098 ]
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1105, ptr noundef nonnull @.str.480, ptr noundef %1)
  %1106 = getelementptr inbounds i8, ptr %0, i64 800
  %1107 = getelementptr inbounds i8, ptr %0, i64 608
  %1108 = getelementptr inbounds i8, ptr %0, i64 1280
  %1109 = getelementptr inbounds i8, ptr %0, i64 1152
  %1110 = getelementptr inbounds i8, ptr %0, i64 1344
  %1111 = getelementptr inbounds i8, ptr %0, i64 1216
  %1112 = load i64, ptr %3, align 8, !tbaa !24
  %1113 = load double, ptr %4, align 8, !tbaa !28
  %1114 = getelementptr inbounds i8, ptr %0, i64 1720
  %1115 = load double, ptr %1114, align 8, !tbaa !72
  %1116 = call noundef i64 @_ZN11alglib_impl22postprocessboundedstepEPNS_9ae_vectorES1_S1_S1_S1_S1_llldddPNS_8ae_stateE(ptr noundef nonnull %1106, ptr noundef nonnull %1107, ptr noundef nonnull %1108, ptr noundef nonnull %1109, ptr noundef nonnull %1110, ptr noundef nonnull %1111, i64 noundef %.01457, i64 noundef 0, i64 noundef %1112, double noundef %1113, double noundef %1115, double noundef %.2, ptr noundef %1)
  %1117 = getelementptr inbounds i8, ptr %0, i64 1056
  %1118 = load double, ptr %1117, align 8, !tbaa !52
  %1119 = getelementptr inbounds i8, ptr %0, i64 1072
  store double %1118, ptr %1119, align 8, !tbaa !77
  %1120 = load double, ptr %1027, align 8, !tbaa !69
  store double %1120, ptr %1117, align 8, !tbaa !52
  %1121 = getelementptr inbounds i8, ptr %0, i64 1048
  %1122 = load ptr, ptr %1121, align 8, !tbaa !23
  %1123 = getelementptr inbounds i8, ptr %0, i64 664
  %1124 = load ptr, ptr %1123, align 8, !tbaa !23
  %1125 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1054)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1122, i64 noundef 1, ptr noundef %1124, i64 noundef 1, i64 noundef %1125)
  %1126 = load ptr, ptr %1123, align 8, !tbaa !23
  %1127 = getelementptr inbounds i8, ptr %0, i64 856
  %1128 = load ptr, ptr %1127, align 8, !tbaa !23
  %1129 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1054)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1126, i64 noundef 1, ptr noundef %1128, i64 noundef 1, i64 noundef %1129)
  %1130 = getelementptr inbounds i8, ptr %0, i64 792
  %1131 = load ptr, ptr %1130, align 8, !tbaa !23
  %1132 = getelementptr inbounds i8, ptr %0, i64 984
  %1133 = load ptr, ptr %1132, align 8, !tbaa !23
  %1134 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1054)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1131, i64 noundef 1, ptr noundef %1133, i64 noundef 1, i64 noundef %1134)
  %1135 = getelementptr inbounds i8, ptr %0, i64 728
  %1136 = load ptr, ptr %1135, align 8, !tbaa !23
  %1137 = getelementptr inbounds i8, ptr %0, i64 920
  %1138 = load ptr, ptr %1137, align 8, !tbaa !23
  %1139 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1054)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1136, i64 noundef 1, ptr noundef %1138, i64 noundef 1, i64 noundef %1139)
  %1140 = getelementptr inbounds i8, ptr %0, i64 40
  %1141 = load i8, ptr %1140, align 8, !tbaa !54, !range !26, !noundef !27
  %1142 = trunc nuw i8 %1141 to i1
  br i1 %1142, label %1143, label %._crit_edge1755

._crit_edge1755:                                  ; preds = %1104
  %.pre1756 = load i64, ptr %5, align 8, !tbaa !24
  br label %1151

1143:                                             ; preds = %1104
  %1144 = getelementptr inbounds i8, ptr %0, i64 256
  %1145 = load ptr, ptr %1144, align 8, !tbaa !23
  %1146 = load ptr, ptr %1123, align 8, !tbaa !23
  %1147 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1054)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1145, i64 noundef 1, ptr noundef %1146, i64 noundef 1, i64 noundef %1147)
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %1148 = getelementptr inbounds i8, ptr %0, i64 338
  store i8 1, ptr %1148, align 2, !tbaa !55
  br label %2175

1149:                                             ; preds = %47
  %1150 = getelementptr inbounds i8, ptr %0, i64 338
  store i8 0, ptr %1150, align 2, !tbaa !55
  br label %1151

1151:                                             ; preds = %._crit_edge1755, %1149
  %1152 = phi i64 [ %.pre1756, %._crit_edge1755 ], [ %.sink1747, %1149 ]
  %.41465 = phi double [ %.31464, %._crit_edge1755 ], [ %.01461, %1149 ]
  %.41425 = phi double [ %.31424, %._crit_edge1755 ], [ %.01421, %1149 ]
  %.3 = phi double [ %.2, %._crit_edge1755 ], [ %.0, %1149 ]
  %1153 = getelementptr inbounds i8, ptr %0, i64 1408
  %1154 = load i64, ptr %1153, align 8, !tbaa !78
  %1155 = add nsw i64 %1154, 1
  store i64 %1155, ptr %1153, align 8, !tbaa !78
  %1156 = icmp eq i64 %1152, 1
  br i1 %1156, label %.preheader1535, label %1200

.preheader1535:                                   ; preds = %1151
  %.not1496.not1576 = icmp sgt i64 %.01457, 0
  br i1 %.not1496.not1576, label %.lr.ph1579, label %._crit_edge1580

.lr.ph1579:                                       ; preds = %.preheader1535
  %1157 = getelementptr inbounds i8, ptr %0, i64 664
  %1158 = getelementptr inbounds i8, ptr %0, i64 1048
  %1159 = getelementptr inbounds i8, ptr %0, i64 120
  br label %1160

1160:                                             ; preds = %.lr.ph1579, %1160
  %.514261578 = phi double [ 0.000000e+00, %.lr.ph1579 ], [ %1173, %1160 ]
  %.171577 = phi i64 [ 0, %.lr.ph1579 ], [ %1174, %1160 ]
  %1161 = load ptr, ptr %1157, align 8, !tbaa !23
  %1162 = getelementptr inbounds double, ptr %1161, i64 %.171577
  %1163 = load double, ptr %1162, align 8, !tbaa !28
  %1164 = load ptr, ptr %1158, align 8, !tbaa !23
  %1165 = getelementptr inbounds double, ptr %1164, i64 %.171577
  %1166 = load double, ptr %1165, align 8, !tbaa !28
  %1167 = fsub double %1163, %1166
  %1168 = load ptr, ptr %1159, align 8, !tbaa !23
  %1169 = getelementptr inbounds double, ptr %1168, i64 %.171577
  %1170 = load double, ptr %1169, align 8, !tbaa !28
  %1171 = fdiv double %1167, %1170
  %1172 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1171, ptr noundef %1)
  %1173 = fadd double %.514261578, %1172
  %1174 = add nuw nsw i64 %.171577, 1
  %exitcond1730.not = icmp eq i64 %1174, %.01457
  br i1 %exitcond1730.not, label %._crit_edge1580, label %1160, !llvm.loop !79

._crit_edge1580:                                  ; preds = %1160, %.preheader1535
  %.51426.lcssa = phi double [ 0.000000e+00, %.preheader1535 ], [ %1173, %1160 ]
  %1175 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.51426.lcssa, ptr noundef %1)
  %1176 = getelementptr inbounds i8, ptr %0, i64 24
  %1177 = load double, ptr %1176, align 8, !tbaa !80
  %1178 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1175, double noundef %1177)
  br i1 %1178, label %1179, label %1181

1179:                                             ; preds = %._crit_edge1580
  %1180 = getelementptr inbounds i8, ptr %0, i64 1432
  store i64 2, ptr %1180, align 8, !tbaa !34
  br label %2215

1181:                                             ; preds = %._crit_edge1580
  %1182 = getelementptr inbounds i8, ptr %0, i64 1072
  %1183 = load double, ptr %1182, align 8, !tbaa !77
  %1184 = getelementptr inbounds i8, ptr %0, i64 1056
  %1185 = load double, ptr %1184, align 8, !tbaa !52
  %1186 = fsub double %1183, %1185
  %1187 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1186, ptr noundef %1)
  %1188 = getelementptr inbounds i8, ptr %0, i64 16
  %1189 = load double, ptr %1188, align 8, !tbaa !81
  %1190 = load double, ptr %1184, align 8, !tbaa !52
  %1191 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1190, ptr noundef %1)
  %1192 = load double, ptr %1182, align 8, !tbaa !77
  %1193 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1192, ptr noundef %1)
  %1194 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1193, double noundef 1.000000e+00, ptr noundef %1)
  %1195 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1191, double noundef %1194, ptr noundef %1)
  %1196 = fmul double %1189, %1195
  %1197 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1187, double noundef %1196)
  br i1 %1197, label %1198, label %1200

1198:                                             ; preds = %1181
  %1199 = getelementptr inbounds i8, ptr %0, i64 1432
  store i64 1, ptr %1199, align 8, !tbaa !34
  br label %2215

1200:                                             ; preds = %1181, %1151
  %.61427 = phi double [ %1175, %1181 ], [ %.41425, %1151 ]
  %1201 = getelementptr inbounds i8, ptr %0, i64 32
  %1202 = load i64, ptr %1201, align 8, !tbaa !82
  %1203 = icmp sgt i64 %1202, 0
  br i1 %1203, label %1204, label %1208

1204:                                             ; preds = %1200
  %1205 = load i64, ptr %1153, align 8, !tbaa !78
  %.not1497 = icmp slt i64 %1205, %1202
  br i1 %.not1497, label %1208, label %1206

1206:                                             ; preds = %1204
  %1207 = getelementptr inbounds i8, ptr %0, i64 1432
  store i64 5, ptr %1207, align 8, !tbaa !34
  br label %2215

1208:                                             ; preds = %1204, %1200
  %.not1498.not1582 = icmp sgt i64 %.01457, 0
  br i1 %.not1498.not1582, label %.lr.ph1586, label %._crit_edge1587

.lr.ph1586:                                       ; preds = %1208
  %1209 = getelementptr inbounds i8, ptr %0, i64 728
  %1210 = getelementptr inbounds i8, ptr %0, i64 792
  %1211 = getelementptr inbounds i8, ptr %0, i64 1208
  %1212 = getelementptr inbounds i8, ptr %0, i64 664
  %1213 = getelementptr inbounds i8, ptr %0, i64 1336
  %1214 = getelementptr inbounds i8, ptr %0, i64 1272
  %1215 = getelementptr inbounds i8, ptr %0, i64 1400
  %1216 = getelementptr inbounds i8, ptr %0, i64 120
  br label %1217

1217:                                             ; preds = %.lr.ph1586, %1254
  %.413881584 = phi double [ 0.000000e+00, %.lr.ph1586 ], [ %1263, %1254 ]
  %.181583 = phi i64 [ 0, %.lr.ph1586 ], [ %1264, %1254 ]
  %1218 = load ptr, ptr %1209, align 8, !tbaa !23
  %1219 = getelementptr inbounds double, ptr %1218, i64 %.181583
  %1220 = load double, ptr %1219, align 8, !tbaa !28
  %1221 = load ptr, ptr %1210, align 8, !tbaa !23
  %1222 = getelementptr inbounds double, ptr %1221, i64 %.181583
  store double %1220, ptr %1222, align 8, !tbaa !28
  %1223 = load ptr, ptr %1211, align 8, !tbaa !23
  %1224 = getelementptr inbounds i8, ptr %1223, i64 %.181583
  %1225 = load i8, ptr %1224, align 1, !tbaa !25, !range !26, !noundef !27
  %1226 = trunc nuw i8 %1225 to i1
  br i1 %1226, label %1227, label %1238

1227:                                             ; preds = %1217
  %1228 = load ptr, ptr %1212, align 8, !tbaa !23
  %1229 = getelementptr inbounds double, ptr %1228, i64 %.181583
  %1230 = load double, ptr %1229, align 8, !tbaa !28
  %1231 = load ptr, ptr %1213, align 8, !tbaa !23
  %1232 = getelementptr inbounds double, ptr %1231, i64 %.181583
  %1233 = load double, ptr %1232, align 8, !tbaa !28
  %1234 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1230, double noundef %1233)
  br i1 %1234, label %1235, label %1238

1235:                                             ; preds = %1227
  %1236 = load ptr, ptr %1210, align 8, !tbaa !23
  %1237 = getelementptr inbounds double, ptr %1236, i64 %.181583
  store double 0.000000e+00, ptr %1237, align 8, !tbaa !28
  br label %1238

1238:                                             ; preds = %1235, %1227, %1217
  %1239 = load ptr, ptr %1214, align 8, !tbaa !23
  %1240 = getelementptr inbounds i8, ptr %1239, i64 %.181583
  %1241 = load i8, ptr %1240, align 1, !tbaa !25, !range !26, !noundef !27
  %1242 = trunc nuw i8 %1241 to i1
  br i1 %1242, label %1243, label %1254

1243:                                             ; preds = %1238
  %1244 = load ptr, ptr %1212, align 8, !tbaa !23
  %1245 = getelementptr inbounds double, ptr %1244, i64 %.181583
  %1246 = load double, ptr %1245, align 8, !tbaa !28
  %1247 = load ptr, ptr %1215, align 8, !tbaa !23
  %1248 = getelementptr inbounds double, ptr %1247, i64 %.181583
  %1249 = load double, ptr %1248, align 8, !tbaa !28
  %1250 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1246, double noundef %1249)
  br i1 %1250, label %1251, label %1254

1251:                                             ; preds = %1243
  %1252 = load ptr, ptr %1210, align 8, !tbaa !23
  %1253 = getelementptr inbounds double, ptr %1252, i64 %.181583
  store double 0.000000e+00, ptr %1253, align 8, !tbaa !28
  br label %1254

1254:                                             ; preds = %1251, %1243, %1238
  %1255 = load ptr, ptr %1210, align 8, !tbaa !23
  %1256 = getelementptr inbounds double, ptr %1255, i64 %.181583
  %1257 = load double, ptr %1256, align 8, !tbaa !28
  %1258 = load ptr, ptr %1216, align 8, !tbaa !23
  %1259 = getelementptr inbounds double, ptr %1258, i64 %.181583
  %1260 = load double, ptr %1259, align 8, !tbaa !28
  %1261 = fmul double %1257, %1260
  %1262 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1261, ptr noundef %1)
  %1263 = fadd double %.413881584, %1262
  %1264 = add nuw nsw i64 %.181583, 1
  %exitcond1731.not = icmp eq i64 %1264, %.01457
  br i1 %exitcond1731.not, label %._crit_edge1587, label %1217, !llvm.loop !83

._crit_edge1587:                                  ; preds = %1254, %1208
  %.18.lcssa = phi i64 [ 0, %1208 ], [ %.01457, %1254 ]
  %.41388.lcssa = phi double [ 0.000000e+00, %1208 ], [ %1263, %1254 ]
  %1265 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.41388.lcssa, ptr noundef %1)
  %1266 = getelementptr inbounds i8, ptr %0, i64 2296
  store i64 0, ptr %1266, align 8, !tbaa !84
  br label %1267

1267:                                             ; preds = %2168, %._crit_edge1587
  %.51466 = phi double [ %.41465, %._crit_edge1587 ], [ %.81469, %2168 ]
  %.19 = phi i64 [ %.18.lcssa, %._crit_edge1587 ], [ %.37, %2168 ]
  %.71428 = phi double [ %.61427, %._crit_edge1587 ], [ %.14, %2168 ]
  %.21414 = phi double [ %.01412, %._crit_edge1587 ], [ %.61418.lcssa, %2168 ]
  %.61407 = phi i8 [ %.01401, %._crit_edge1587 ], [ %.11, %2168 ]
  %.21396 = phi i64 [ 0, %._crit_edge1587 ], [ %2169, %2168 ]
  %.51389 = phi double [ %1265, %._crit_edge1587 ], [ %.71391, %2168 ]
  %.21372 = phi i8 [ %.01370, %._crit_edge1587 ], [ %.71377, %2168 ]
  %.4 = phi double [ %.3, %._crit_edge1587 ], [ %.6, %2168 ]
  %1268 = add nsw i64 %.01457, -1
  %.not1499 = icmp slt i64 %.21396, %.01457
  br i1 %.not1499, label %1269, label %2170

1269:                                             ; preds = %1267
  %1270 = getelementptr inbounds i8, ptr %0, i64 1736
  %1271 = getelementptr inbounds i8, ptr %0, i64 1792
  %1272 = load ptr, ptr %1271, align 8, !tbaa !23
  %1273 = getelementptr inbounds i8, ptr %0, i64 792
  %1274 = load ptr, ptr %1273, align 8, !tbaa !23
  %1275 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1268)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1272, i64 noundef 1, ptr noundef %1274, i64 noundef 1, i64 noundef %1275)
  %1276 = getelementptr inbounds i8, ptr %0, i64 2296
  %1277 = load i64, ptr %1276, align 8, !tbaa !84
  %1278 = icmp sgt i64 %1277, 0
  br i1 %1278, label %.lr.ph1592, label %.preheader1534

.lr.ph1592:                                       ; preds = %1269
  %1279 = getelementptr inbounds i8, ptr %0, i64 2160
  %1280 = getelementptr inbounds i8, ptr %0, i64 2288
  %1281 = getelementptr inbounds i8, ptr %0, i64 2224
  %1282 = getelementptr inbounds i8, ptr %0, i64 2080
  br label %1285

.preheader1534:                                   ; preds = %1285, %1269
  %.81429.lcssa = phi double [ %.71428, %1269 ], [ %1291, %1285 ]
  %.31415.lcssa = phi double [ %.21414, %1269 ], [ %1297, %1285 ]
  %.not1500.not1595 = icmp sgt i64 %.01457, 0
  br i1 %.not1500.not1595, label %.lr.ph1597, label %.preheader1533

.lr.ph1597:                                       ; preds = %.preheader1534
  %1283 = getelementptr inbounds i8, ptr %0, i64 1632
  %xtraiter1846 = and i64 %.01457, 1
  %1284 = icmp eq i64 %.01457, 1
  br i1 %1284, label %.preheader1533.loopexit.unr-lcssa, label %.lr.ph1597.new

.lr.ph1597.new:                                   ; preds = %.lr.ph1597
  %unroll_iter1849 = and i64 %.01457, 9223372036854775806
  br label %1316

1285:                                             ; preds = %.lr.ph1592, %1285
  %.20.in1590 = phi i64 [ %1277, %.lr.ph1592 ], [ %.20, %1285 ]
  %.20 = add nsw i64 %.20.in1590, -1
  %1286 = load ptr, ptr %1279, align 8, !tbaa !23
  %1287 = getelementptr inbounds ptr, ptr %1286, i64 %.20
  %1288 = load ptr, ptr %1287, align 8, !tbaa !43
  %1289 = load ptr, ptr %1271, align 8, !tbaa !23
  %1290 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1268)
  %1291 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1288, i64 noundef 1, ptr noundef %1289, i64 noundef 1, i64 noundef %1290)
  %1292 = load ptr, ptr %1280, align 8, !tbaa !23
  %1293 = getelementptr inbounds double, ptr %1292, i64 %.20
  store double %1291, ptr %1293, align 8, !tbaa !28
  %1294 = load ptr, ptr %1281, align 8, !tbaa !23
  %1295 = getelementptr inbounds double, ptr %1294, i64 %.20
  %1296 = load double, ptr %1295, align 8, !tbaa !28
  %1297 = fmul double %1291, %1296
  %1298 = load ptr, ptr %1271, align 8, !tbaa !23
  %1299 = load ptr, ptr %1282, align 8, !tbaa !23
  %1300 = getelementptr inbounds ptr, ptr %1299, i64 %.20
  %1301 = load ptr, ptr %1300, align 8, !tbaa !43
  %1302 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1268)
  call void @_ZN11alglib_impl9ae_v_subdEPdlPKdlld(ptr noundef %1298, i64 noundef 1, ptr noundef %1301, i64 noundef 1, i64 noundef %1302, double noundef %1297)
  %1303 = icmp ugt i64 %.20.in1590, 1
  br i1 %1303, label %1285, label %.preheader1534, !llvm.loop !85

.preheader1533.loopexit.unr-lcssa:                ; preds = %1316, %.lr.ph1597
  %.211596.unr = phi i64 [ 0, %.lr.ph1597 ], [ %1332, %1316 ]
  %lcmp.mod1848.not = icmp eq i64 %xtraiter1846, 0
  br i1 %lcmp.mod1848.not, label %.preheader1533, label %.preheader1533.loopexit.epilog-lcssa

.preheader1533.loopexit.epilog-lcssa:             ; preds = %.preheader1533.loopexit.unr-lcssa
  %1304 = load ptr, ptr %1283, align 8, !tbaa !23
  %1305 = getelementptr inbounds double, ptr %1304, i64 %.211596.unr
  %1306 = load double, ptr %1305, align 8, !tbaa !28
  %1307 = load ptr, ptr %1271, align 8, !tbaa !23
  %1308 = getelementptr inbounds double, ptr %1307, i64 %.211596.unr
  %1309 = load double, ptr %1308, align 8, !tbaa !28
  %1310 = fmul double %1306, %1309
  store double %1310, ptr %1308, align 8, !tbaa !28
  br label %.preheader1533

.preheader1533:                                   ; preds = %.preheader1533.loopexit.epilog-lcssa, %.preheader1533.loopexit.unr-lcssa, %.preheader1534
  %1311 = load i64, ptr %1276, align 8, !tbaa !84
  %.not1501.not1598 = icmp sgt i64 %1311, 0
  br i1 %.not1501.not1598, label %.lr.ph1600, label %._crit_edge1601

.lr.ph1600:                                       ; preds = %.preheader1533
  %1312 = getelementptr inbounds i8, ptr %0, i64 2080
  %1313 = getelementptr inbounds i8, ptr %0, i64 2224
  %1314 = getelementptr inbounds i8, ptr %0, i64 2288
  %1315 = getelementptr inbounds i8, ptr %0, i64 2160
  br label %1333

1316:                                             ; preds = %1316, %.lr.ph1597.new
  %.211596 = phi i64 [ 0, %.lr.ph1597.new ], [ %1332, %1316 ]
  %niter1850 = phi i64 [ 0, %.lr.ph1597.new ], [ %niter1850.next.1, %1316 ]
  %1317 = load ptr, ptr %1283, align 8, !tbaa !23
  %1318 = getelementptr inbounds double, ptr %1317, i64 %.211596
  %1319 = load double, ptr %1318, align 8, !tbaa !28
  %1320 = load ptr, ptr %1271, align 8, !tbaa !23
  %1321 = getelementptr inbounds double, ptr %1320, i64 %.211596
  %1322 = load double, ptr %1321, align 8, !tbaa !28
  %1323 = fmul double %1319, %1322
  store double %1323, ptr %1321, align 8, !tbaa !28
  %1324 = or disjoint i64 %.211596, 1
  %1325 = load ptr, ptr %1283, align 8, !tbaa !23
  %1326 = getelementptr inbounds double, ptr %1325, i64 %1324
  %1327 = load double, ptr %1326, align 8, !tbaa !28
  %1328 = load ptr, ptr %1271, align 8, !tbaa !23
  %1329 = getelementptr inbounds double, ptr %1328, i64 %1324
  %1330 = load double, ptr %1329, align 8, !tbaa !28
  %1331 = fmul double %1327, %1330
  store double %1331, ptr %1329, align 8, !tbaa !28
  %1332 = add nuw nsw i64 %.211596, 2
  %niter1850.next.1 = add i64 %niter1850, 2
  %niter1850.ncmp.1 = icmp eq i64 %niter1850.next.1, %unroll_iter1849
  br i1 %niter1850.ncmp.1, label %.preheader1533.loopexit.unr-lcssa, label %1316, !llvm.loop !86

1333:                                             ; preds = %.lr.ph1600, %1333
  %.221599 = phi i64 [ 0, %.lr.ph1600 ], [ %1353, %1333 ]
  %1334 = load ptr, ptr %1312, align 8, !tbaa !23
  %1335 = getelementptr inbounds ptr, ptr %1334, i64 %.221599
  %1336 = load ptr, ptr %1335, align 8, !tbaa !43
  %1337 = load ptr, ptr %1271, align 8, !tbaa !23
  %1338 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1268)
  %1339 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1336, i64 noundef 1, ptr noundef %1337, i64 noundef 1, i64 noundef %1338)
  %1340 = load ptr, ptr %1313, align 8, !tbaa !23
  %1341 = getelementptr inbounds double, ptr %1340, i64 %.221599
  %1342 = load double, ptr %1341, align 8, !tbaa !28
  %1343 = load ptr, ptr %1314, align 8, !tbaa !23
  %1344 = getelementptr inbounds double, ptr %1343, i64 %.221599
  %1345 = load double, ptr %1344, align 8, !tbaa !28
  %1346 = fsub double %1345, %1339
  %1347 = fmul double %1342, %1346
  %1348 = load ptr, ptr %1271, align 8, !tbaa !23
  %1349 = load ptr, ptr %1315, align 8, !tbaa !23
  %1350 = getelementptr inbounds ptr, ptr %1349, i64 %.221599
  %1351 = load ptr, ptr %1350, align 8, !tbaa !43
  %1352 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1268)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %1348, i64 noundef 1, ptr noundef %1351, i64 noundef 1, i64 noundef %1352, double noundef %1347)
  %1353 = add nuw nsw i64 %.221599, 1
  %1354 = load i64, ptr %1276, align 8, !tbaa !84
  %.not1501.not = icmp slt i64 %1353, %1354
  br i1 %.not1501.not, label %1333, label %._crit_edge1601, !llvm.loop !87

._crit_edge1601:                                  ; preds = %1333, %.preheader1533
  %.91430.lcssa = phi double [ %.81429.lcssa, %.preheader1533 ], [ %1339, %1333 ]
  %.41416.lcssa = phi double [ %.31415.lcssa, %.preheader1533 ], [ %1347, %1333 ]
  %1355 = getelementptr inbounds i8, ptr %0, i64 1080
  %1356 = getelementptr inbounds i8, ptr %0, i64 1136
  %1357 = load ptr, ptr %1356, align 8, !tbaa !23
  %1358 = load ptr, ptr %1271, align 8, !tbaa !23
  %1359 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1268)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %1357, i64 noundef 1, ptr noundef %1358, i64 noundef 1, i64 noundef %1359)
  br i1 %.not1500.not1595, label %.lr.ph1608, label %._crit_edge1609.thread

._crit_edge1609.thread:                           ; preds = %._crit_edge1601
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext true, ptr noundef nonnull @.str.481, ptr noundef %1)
  br label %._crit_edge1616

.lr.ph1608:                                       ; preds = %._crit_edge1601
  %1360 = getelementptr inbounds i8, ptr %0, i64 1208
  %1361 = getelementptr inbounds i8, ptr %0, i64 664
  %1362 = getelementptr inbounds i8, ptr %0, i64 1336
  %1363 = getelementptr inbounds i8, ptr %0, i64 1272
  %1364 = getelementptr inbounds i8, ptr %0, i64 1400
  br label %1365

1365:                                             ; preds = %.lr.ph1608, %.critedge
  %.714081606 = phi i1 [ false, %.lr.ph1608 ], [ %1401, %.critedge ]
  %.231605 = phi i64 [ 0, %.lr.ph1608 ], [ %1402, %.critedge ]
  br i1 %.714081606, label %.critedge, label %1366

1366:                                             ; preds = %1365
  %1367 = load ptr, ptr %1360, align 8, !tbaa !23
  %1368 = getelementptr inbounds i8, ptr %1367, i64 %.231605
  %1369 = load i8, ptr %1368, align 1, !tbaa !25, !range !26, !noundef !27
  %1370 = trunc nuw i8 %1369 to i1
  br i1 %1370, label %1371, label %.critedge1517

1371:                                             ; preds = %1366
  %1372 = load ptr, ptr %1361, align 8, !tbaa !23
  %1373 = getelementptr inbounds double, ptr %1372, i64 %.231605
  %1374 = load double, ptr %1373, align 8, !tbaa !28
  %1375 = load ptr, ptr %1362, align 8, !tbaa !23
  %1376 = getelementptr inbounds double, ptr %1375, i64 %.231605
  %1377 = load double, ptr %1376, align 8, !tbaa !28
  %1378 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1374, double noundef %1377)
  br i1 %1378, label %1379, label %.critedge1517

1379:                                             ; preds = %1371
  %1380 = load ptr, ptr %1356, align 8, !tbaa !23
  %1381 = getelementptr inbounds double, ptr %1380, i64 %.231605
  %1382 = load double, ptr %1381, align 8, !tbaa !28
  %1383 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1382, double noundef 0.000000e+00)
  br i1 %1383, label %.critedge, label %.critedge1517

.critedge1517:                                    ; preds = %1371, %1366, %1379
  %1384 = load ptr, ptr %1363, align 8, !tbaa !23
  %1385 = getelementptr inbounds i8, ptr %1384, i64 %.231605
  %1386 = load i8, ptr %1385, align 1, !tbaa !25, !range !26, !noundef !27
  %1387 = trunc nuw i8 %1386 to i1
  br i1 %1387, label %1388, label %.critedge

1388:                                             ; preds = %.critedge1517
  %1389 = load ptr, ptr %1361, align 8, !tbaa !23
  %1390 = getelementptr inbounds double, ptr %1389, i64 %.231605
  %1391 = load double, ptr %1390, align 8, !tbaa !28
  %1392 = load ptr, ptr %1364, align 8, !tbaa !23
  %1393 = getelementptr inbounds double, ptr %1392, i64 %.231605
  %1394 = load double, ptr %1393, align 8, !tbaa !28
  %1395 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1391, double noundef %1394)
  br i1 %1395, label %1396, label %.critedge

1396:                                             ; preds = %1388
  %1397 = load ptr, ptr %1356, align 8, !tbaa !23
  %1398 = getelementptr inbounds double, ptr %1397, i64 %.231605
  %1399 = load double, ptr %1398, align 8, !tbaa !28
  %1400 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1399, double noundef 0.000000e+00)
  br label %.critedge

.critedge:                                        ; preds = %1365, %.critedge1517, %1388, %1396, %1379
  %1401 = phi i1 [ true, %1379 ], [ false, %1388 ], [ false, %.critedge1517 ], [ %1400, %1396 ], [ true, %1365 ]
  %1402 = add nuw nsw i64 %.231605, 1
  %exitcond1733.not = icmp eq i64 %1402, %.01457
  br i1 %exitcond1733.not, label %._crit_edge1609, label %1365, !llvm.loop !88

._crit_edge1609:                                  ; preds = %.critedge
  %1403 = xor i1 %1401, true
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1403, ptr noundef nonnull @.str.481, ptr noundef %1)
  br i1 %.not1500.not1595, label %.lr.ph1615, label %._crit_edge1616

.lr.ph1615:                                       ; preds = %._crit_edge1609
  %1404 = getelementptr inbounds i8, ptr %0, i64 120
  br label %1405

1405:                                             ; preds = %.lr.ph1615, %1405
  %.241613 = phi i64 [ 0, %.lr.ph1615 ], [ %1415, %1405 ]
  %.614671612 = phi double [ 0.000000e+00, %.lr.ph1615 ], [ %1414, %1405 ]
  %1406 = load ptr, ptr %1356, align 8, !tbaa !23
  %1407 = getelementptr inbounds double, ptr %1406, i64 %.241613
  %1408 = load double, ptr %1407, align 8, !tbaa !28
  %1409 = load ptr, ptr %1404, align 8, !tbaa !23
  %1410 = getelementptr inbounds double, ptr %1409, i64 %.241613
  %1411 = load double, ptr %1410, align 8, !tbaa !28
  %1412 = fdiv double %1408, %1411
  %1413 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1412, ptr noundef %1)
  %1414 = fadd double %.614671612, %1413
  %1415 = add nuw nsw i64 %.241613, 1
  %exitcond1734.not = icmp eq i64 %1415, %.01457
  br i1 %exitcond1734.not, label %._crit_edge1616, label %1405, !llvm.loop !89

._crit_edge1616:                                  ; preds = %1405, %._crit_edge1609.thread, %._crit_edge1609
  %.71408.lcssa1759.shrunk = phi i1 [ %1401, %._crit_edge1609 ], [ false, %._crit_edge1609.thread ], [ %1401, %1405 ]
  %.61467.lcssa = phi double [ 0.000000e+00, %._crit_edge1609 ], [ 0.000000e+00, %._crit_edge1609.thread ], [ %1414, %1405 ]
  %.24.lcssa = phi i64 [ 0, %._crit_edge1609 ], [ 0, %._crit_edge1609.thread ], [ %.01457, %1405 ]
  %.71408.lcssa1759 = zext i1 %.71408.lcssa1759.shrunk to i8
  %1416 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.61467.lcssa, ptr noundef %1)
  %1417 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1416, double noundef 0.000000e+00)
  br i1 %1417, label %2170, label %1418

1418:                                             ; preds = %._crit_edge1616
  %1419 = getelementptr inbounds i8, ptr %0, i64 1144
  %1420 = load double, ptr %1419, align 8, !tbaa !49
  %1421 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1420, double noundef 0.000000e+00)
  br i1 %1421, label %1422, label %1424

1422:                                             ; preds = %1418
  %1423 = load double, ptr %1419, align 8, !tbaa !49
  br label %1424

1424:                                             ; preds = %1418, %1422
  %.pn1757 = phi double [ %1423, %1422 ], [ 1.000000e+00, %1418 ]
  %.sink1750 = fdiv double %.pn1757, %1416
  %1425 = getelementptr inbounds i8, ptr %0, i64 1720
  store double %.sink1750, ptr %1425, align 8
  %1426 = getelementptr inbounds i8, ptr %0, i64 1728
  store double 1.000000e+50, ptr %1426, align 8, !tbaa !67
  %1427 = getelementptr inbounds i8, ptr %0, i64 48
  %1428 = load double, ptr %1427, align 8, !tbaa !68
  %1429 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1428, double noundef 0.000000e+00)
  br i1 %1429, label %1430, label %1435

1430:                                             ; preds = %1424
  %1431 = load double, ptr %1426, align 8, !tbaa !67
  %1432 = load double, ptr %1427, align 8, !tbaa !68
  %1433 = fdiv double %1432, %1416
  %1434 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %1431, double noundef %1433, ptr noundef %1)
  store double %1434, ptr %1426, align 8, !tbaa !67
  br label %1435

1435:                                             ; preds = %1430, %1424
  %1436 = getelementptr inbounds i8, ptr %0, i64 800
  %1437 = getelementptr inbounds i8, ptr %0, i64 856
  %1438 = load ptr, ptr %1437, align 8, !tbaa !23
  %1439 = getelementptr inbounds i8, ptr %0, i64 664
  %1440 = load ptr, ptr %1439, align 8, !tbaa !23
  %1441 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1268)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1438, i64 noundef 1, ptr noundef %1440, i64 noundef 1, i64 noundef %1441)
  %1442 = getelementptr inbounds i8, ptr %0, i64 928
  %1443 = getelementptr inbounds i8, ptr %0, i64 984
  %1444 = load ptr, ptr %1443, align 8, !tbaa !23
  %1445 = load ptr, ptr %1273, align 8, !tbaa !23
  %1446 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1268)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1444, i64 noundef 1, ptr noundef %1445, i64 noundef 1, i64 noundef %1446)
  %1447 = getelementptr inbounds i8, ptr %0, i64 864
  %1448 = getelementptr inbounds i8, ptr %0, i64 920
  %1449 = load ptr, ptr %1448, align 8, !tbaa !23
  %1450 = getelementptr inbounds i8, ptr %0, i64 728
  %1451 = load ptr, ptr %1450, align 8, !tbaa !23
  %1452 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1268)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1449, i64 noundef 1, ptr noundef %1451, i64 noundef 1, i64 noundef %1452)
  %1453 = getelementptr inbounds i8, ptr %0, i64 1056
  %1454 = load double, ptr %1453, align 8, !tbaa !52
  %1455 = getelementptr inbounds i8, ptr %0, i64 1064
  store double %1454, ptr %1455, align 8, !tbaa !69
  %1456 = getelementptr inbounds i8, ptr %0, i64 1712
  store i64 0, ptr %1456, align 8, !tbaa !70
  %1457 = getelementptr inbounds i8, ptr %0, i64 2320
  %1458 = getelementptr inbounds i8, ptr %0, i64 64
  %1459 = getelementptr inbounds i8, ptr %0, i64 6352
  call void @_ZN11alglib_impl34smoothnessmonitorstartlinesearch1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_PNS_8ae_stateE(ptr noundef nonnull %1457, ptr noundef nonnull %1458, ptr noundef nonnull %1459, ptr noundef nonnull %1436, double noundef %1454, ptr noundef nonnull %1447, ptr noundef %1)
  %1460 = load double, ptr %1426, align 8, !tbaa !67
  %1461 = load double, ptr @_ZN11alglib_implL10minbc_gtolE, align 8, !tbaa !28
  %1462 = getelementptr inbounds i8, ptr %0, i64 1704
  %1463 = getelementptr inbounds i8, ptr %0, i64 1800
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_S1_S2_ddPlS3_S1_PNS_11linminstateES3_PNS_8ae_stateE(i64 noundef %.01457, ptr noundef nonnull %1436, ptr noundef nonnull %1455, ptr noundef nonnull %1442, ptr noundef nonnull %1355, ptr noundef nonnull %1425, double noundef %1460, double noundef %1461, ptr noundef nonnull %5, ptr noundef nonnull %1462, ptr noundef nonnull %1270, ptr noundef nonnull %1463, ptr noundef nonnull %1456, ptr noundef %1)
  br label %1464

1464:                                             ; preds = %._crit_edge, %1435
  %.71468 = phi double [ %1416, %1435 ], [ %.01461, %._crit_edge ]
  %.101431 = phi double [ %.91430.lcssa, %1435 ], [ %.01421, %._crit_edge ]
  %.51417 = phi double [ %.41416.lcssa, %1435 ], [ %.01412, %._crit_edge ]
  %.81409 = phi i8 [ %.71408.lcssa1759, %1435 ], [ %.01401, %._crit_edge ]
  %.31397 = phi i64 [ %.21396, %1435 ], [ %.01394, %._crit_edge ]
  %.61390 = phi double [ %.51389, %1435 ], [ %.01384, %._crit_edge ]
  %.31373 = phi i8 [ %.21372, %1435 ], [ %.01370, %._crit_edge ]
  %.5 = phi double [ %.4, %1435 ], [ %.0, %._crit_edge ]
  %1465 = getelementptr inbounds i8, ptr %0, i64 1712
  %1466 = load i64, ptr %1465, align 8, !tbaa !70
  %1467 = icmp eq i64 %1466, 0
  br i1 %1467, label %1828, label %.preheader1532

.preheader1532:                                   ; preds = %1464
  %.not1504.not1619 = icmp sgt i64 %.01457, 0
  br i1 %.not1504.not1619, label %.lr.ph1621, label %._crit_edge1622

.lr.ph1621:                                       ; preds = %.preheader1532
  %1468 = getelementptr inbounds i8, ptr %0, i64 856
  %1469 = getelementptr inbounds i8, ptr %0, i64 256
  %1470 = getelementptr inbounds i8, ptr %0, i64 1208
  %1471 = getelementptr inbounds i8, ptr %0, i64 1336
  %1472 = getelementptr inbounds i8, ptr %0, i64 1272
  %1473 = getelementptr inbounds i8, ptr %0, i64 1400
  br label %1474

1474:                                             ; preds = %.lr.ph1621, %1517
  %.251620 = phi i64 [ 0, %.lr.ph1621 ], [ %1518, %1517 ]
  %1475 = load ptr, ptr %1468, align 8, !tbaa !23
  %1476 = getelementptr inbounds double, ptr %1475, i64 %.251620
  %1477 = load double, ptr %1476, align 8, !tbaa !28
  %1478 = load ptr, ptr %1469, align 8, !tbaa !23
  %1479 = getelementptr inbounds double, ptr %1478, i64 %.251620
  store double %1477, ptr %1479, align 8, !tbaa !28
  %1480 = load ptr, ptr %1470, align 8, !tbaa !23
  %1481 = getelementptr inbounds i8, ptr %1480, i64 %.251620
  %1482 = load i8, ptr %1481, align 1, !tbaa !25, !range !26, !noundef !27
  %1483 = trunc nuw i8 %1482 to i1
  br i1 %1483, label %1484, label %1498

1484:                                             ; preds = %1474
  %1485 = load ptr, ptr %1468, align 8, !tbaa !23
  %1486 = getelementptr inbounds double, ptr %1485, i64 %.251620
  %1487 = load double, ptr %1486, align 8, !tbaa !28
  %1488 = load ptr, ptr %1471, align 8, !tbaa !23
  %1489 = getelementptr inbounds double, ptr %1488, i64 %.251620
  %1490 = load double, ptr %1489, align 8, !tbaa !28
  %1491 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1487, double noundef %1490)
  br i1 %1491, label %1492, label %1498

1492:                                             ; preds = %1484
  %1493 = load ptr, ptr %1471, align 8, !tbaa !23
  %1494 = getelementptr inbounds double, ptr %1493, i64 %.251620
  %1495 = load double, ptr %1494, align 8, !tbaa !28
  %1496 = load ptr, ptr %1469, align 8, !tbaa !23
  %1497 = getelementptr inbounds double, ptr %1496, i64 %.251620
  store double %1495, ptr %1497, align 8, !tbaa !28
  br label %1498

1498:                                             ; preds = %1492, %1484, %1474
  %1499 = load ptr, ptr %1472, align 8, !tbaa !23
  %1500 = getelementptr inbounds i8, ptr %1499, i64 %.251620
  %1501 = load i8, ptr %1500, align 1, !tbaa !25, !range !26, !noundef !27
  %1502 = trunc nuw i8 %1501 to i1
  br i1 %1502, label %1503, label %1517

1503:                                             ; preds = %1498
  %1504 = load ptr, ptr %1468, align 8, !tbaa !23
  %1505 = getelementptr inbounds double, ptr %1504, i64 %.251620
  %1506 = load double, ptr %1505, align 8, !tbaa !28
  %1507 = load ptr, ptr %1473, align 8, !tbaa !23
  %1508 = getelementptr inbounds double, ptr %1507, i64 %.251620
  %1509 = load double, ptr %1508, align 8, !tbaa !28
  %1510 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %1506, double noundef %1509)
  br i1 %1510, label %1511, label %1517

1511:                                             ; preds = %1503
  %1512 = load ptr, ptr %1473, align 8, !tbaa !23
  %1513 = getelementptr inbounds double, ptr %1512, i64 %.251620
  %1514 = load double, ptr %1513, align 8, !tbaa !28
  %1515 = load ptr, ptr %1469, align 8, !tbaa !23
  %1516 = getelementptr inbounds double, ptr %1515, i64 %.251620
  store double %1514, ptr %1516, align 8, !tbaa !28
  br label %1517

1517:                                             ; preds = %1498, %1503, %1511
  %1518 = add nuw nsw i64 %.251620, 1
  %exitcond1735.not = icmp eq i64 %1518, %.01457
  br i1 %exitcond1735.not, label %._crit_edge1622, label %1474, !llvm.loop !90

._crit_edge1622:                                  ; preds = %1517, %.preheader1532
  %.25.lcssa = phi i64 [ 0, %.preheader1532 ], [ %.01457, %1517 ]
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %1519 = getelementptr inbounds i8, ptr %0, i64 56
  %1520 = load double, ptr %1519, align 8, !tbaa !41
  %1521 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1520, double noundef 0.000000e+00)
  br i1 %1521, label %1529, label %1522

1522:                                             ; preds = %._crit_edge1622
  %1523 = getelementptr inbounds i8, ptr %0, i64 337
  store i8 1, ptr %1523, align 1, !tbaa !46
  br label %2175

1524:                                             ; preds = %47
  %1525 = getelementptr inbounds i8, ptr %0, i64 337
  store i8 0, ptr %1525, align 1, !tbaa !46
  %1526 = getelementptr inbounds i8, ptr %0, i64 1416
  %1527 = load i64, ptr %1526, align 8, !tbaa !53
  %1528 = add nsw i64 %1527, 1
  store i64 %1528, ptr %1526, align 8, !tbaa !53
  %.phi.trans.insert = getelementptr inbounds i8, ptr %0, i64 264
  %.pre = load double, ptr %.phi.trans.insert, align 8, !tbaa !47
  br label %1752

1529:                                             ; preds = %._crit_edge1622
  %1530 = getelementptr inbounds i8, ptr %0, i64 336
  store i8 1, ptr %1530, align 8, !tbaa !51
  br label %2175

1531:                                             ; preds = %47
  %1532 = getelementptr inbounds i8, ptr %0, i64 264
  %1533 = load double, ptr %1532, align 8, !tbaa !47
  %1534 = getelementptr inbounds i8, ptr %0, i64 1504
  store double %1533, ptr %1534, align 8, !tbaa !56
  br label %1535

1535:                                             ; preds = %1736, %1531
  %.26 = phi i64 [ 0, %1531 ], [ %1746, %1736 ]
  %.not = icmp slt i64 %.26, %.01457
  br i1 %.not, label %1536, label %1747

1536:                                             ; preds = %1535
  %1537 = getelementptr inbounds i8, ptr %0, i64 256
  %1538 = load ptr, ptr %1537, align 8, !tbaa !23
  %1539 = getelementptr inbounds double, ptr %1538, i64 %.26
  %1540 = load double, ptr %1539, align 8, !tbaa !28
  %1541 = getelementptr inbounds i8, ptr %0, i64 1208
  %1542 = load ptr, ptr %1541, align 8, !tbaa !23
  %1543 = getelementptr inbounds i8, ptr %1542, i64 %.26
  %1544 = load i8, ptr %1543, align 1, !tbaa !25, !range !26, !noundef !27
  %1545 = trunc nuw i8 %1544 to i1
  br i1 %1545, label %1546, label %1561

1546:                                             ; preds = %1536
  %1547 = getelementptr inbounds i8, ptr %0, i64 56
  %1548 = load double, ptr %1547, align 8, !tbaa !41
  %1549 = getelementptr inbounds i8, ptr %0, i64 120
  %1550 = load ptr, ptr %1549, align 8, !tbaa !23
  %1551 = getelementptr inbounds double, ptr %1550, i64 %.26
  %1552 = load double, ptr %1551, align 8, !tbaa !28
  %1553 = fneg double %1548
  %1554 = tail call double @llvm.fmuladd.f64(double %1553, double %1552, double %1540)
  %1555 = getelementptr inbounds i8, ptr %0, i64 1336
  %1556 = load ptr, ptr %1555, align 8, !tbaa !23
  %1557 = getelementptr inbounds double, ptr %1556, i64 %.26
  %1558 = load double, ptr %1557, align 8, !tbaa !28
  %1559 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1554, double noundef %1558)
  %1560 = zext i1 %1559 to i8
  br label %1561

1561:                                             ; preds = %1546, %1536
  %.91410 = phi i8 [ %1560, %1546 ], [ 0, %1536 ]
  %1562 = getelementptr inbounds i8, ptr %0, i64 1272
  %1563 = load ptr, ptr %1562, align 8, !tbaa !23
  %1564 = getelementptr inbounds i8, ptr %1563, i64 %.26
  %1565 = load i8, ptr %1564, align 1, !tbaa !25, !range !26, !noundef !27
  %1566 = trunc nuw i8 %1565 to i1
  br i1 %1566, label %1567, label %1583

1567:                                             ; preds = %1561
  %1568 = trunc nuw i8 %.91410 to i1
  br i1 %1568, label %.thread1524, label %1569

1569:                                             ; preds = %1567
  %1570 = getelementptr inbounds i8, ptr %0, i64 56
  %1571 = load double, ptr %1570, align 8, !tbaa !41
  %1572 = getelementptr inbounds i8, ptr %0, i64 120
  %1573 = load ptr, ptr %1572, align 8, !tbaa !23
  %1574 = getelementptr inbounds double, ptr %1573, i64 %.26
  %1575 = load double, ptr %1574, align 8, !tbaa !28
  %1576 = tail call double @llvm.fmuladd.f64(double %1571, double %1575, double %1540)
  %1577 = getelementptr inbounds i8, ptr %0, i64 1400
  %1578 = load ptr, ptr %1577, align 8, !tbaa !23
  %1579 = getelementptr inbounds double, ptr %1578, i64 %.26
  %1580 = load double, ptr %1579, align 8, !tbaa !28
  %1581 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1576, double noundef %1580)
  %1582 = zext i1 %1581 to i8
  br label %1583

1583:                                             ; preds = %1569, %1561
  %.10 = phi i8 [ %.91410, %1561 ], [ %1582, %1569 ]
  %1584 = trunc nuw i8 %.10 to i1
  br i1 %1584, label %.thread1524, label %1585

1585:                                             ; preds = %1583
  %1586 = getelementptr inbounds i8, ptr %0, i64 56
  %1587 = load double, ptr %1586, align 8, !tbaa !41
  %1588 = getelementptr inbounds i8, ptr %0, i64 120
  %1589 = load ptr, ptr %1588, align 8, !tbaa !23
  %1590 = getelementptr inbounds double, ptr %1589, i64 %.26
  %1591 = load double, ptr %1590, align 8, !tbaa !28
  %1592 = fneg double %1587
  %1593 = tail call double @llvm.fmuladd.f64(double %1592, double %1591, double %1540)
  %1594 = load ptr, ptr %1537, align 8, !tbaa !23
  %1595 = getelementptr inbounds double, ptr %1594, i64 %.26
  store double %1593, ptr %1595, align 8, !tbaa !28
  br label %2175

1596:                                             ; preds = %47
  %1597 = getelementptr inbounds i8, ptr %0, i64 264
  %1598 = load double, ptr %1597, align 8, !tbaa !47
  %1599 = getelementptr inbounds i8, ptr %0, i64 1512
  store double %1598, ptr %1599, align 8, !tbaa !57
  %1600 = getelementptr inbounds i8, ptr %0, i64 56
  %1601 = load double, ptr %1600, align 8, !tbaa !41
  %1602 = getelementptr inbounds i8, ptr %0, i64 120
  %1603 = load ptr, ptr %1602, align 8, !tbaa !23
  %1604 = getelementptr inbounds double, ptr %1603, i64 %.01436
  %1605 = load double, ptr %1604, align 8, !tbaa !28
  %1606 = fmul double %1601, -5.000000e-01
  %1607 = tail call double @llvm.fmuladd.f64(double %1606, double %1605, double %.01421)
  %1608 = getelementptr inbounds i8, ptr %0, i64 256
  %1609 = load ptr, ptr %1608, align 8, !tbaa !23
  %1610 = getelementptr inbounds double, ptr %1609, i64 %.01436
  store double %1607, ptr %1610, align 8, !tbaa !28
  br label %2175

1611:                                             ; preds = %47
  %1612 = getelementptr inbounds i8, ptr %0, i64 264
  %1613 = load double, ptr %1612, align 8, !tbaa !47
  %1614 = getelementptr inbounds i8, ptr %0, i64 1520
  store double %1613, ptr %1614, align 8, !tbaa !58
  %1615 = getelementptr inbounds i8, ptr %0, i64 56
  %1616 = load double, ptr %1615, align 8, !tbaa !41
  %1617 = fmul double %1616, 5.000000e-01
  %1618 = getelementptr inbounds i8, ptr %0, i64 120
  %1619 = load ptr, ptr %1618, align 8, !tbaa !23
  %1620 = getelementptr inbounds double, ptr %1619, i64 %.01436
  %1621 = load double, ptr %1620, align 8, !tbaa !28
  %1622 = tail call double @llvm.fmuladd.f64(double %1617, double %1621, double %.01421)
  %1623 = getelementptr inbounds i8, ptr %0, i64 256
  %1624 = load ptr, ptr %1623, align 8, !tbaa !23
  %1625 = getelementptr inbounds double, ptr %1624, i64 %.01436
  store double %1622, ptr %1625, align 8, !tbaa !28
  br label %2175

1626:                                             ; preds = %47
  %1627 = getelementptr inbounds i8, ptr %0, i64 264
  %1628 = load double, ptr %1627, align 8, !tbaa !47
  %1629 = getelementptr inbounds i8, ptr %0, i64 1528
  store double %1628, ptr %1629, align 8, !tbaa !59
  %1630 = getelementptr inbounds i8, ptr %0, i64 56
  %1631 = load double, ptr %1630, align 8, !tbaa !41
  %1632 = getelementptr inbounds i8, ptr %0, i64 120
  %1633 = load ptr, ptr %1632, align 8, !tbaa !23
  %1634 = getelementptr inbounds double, ptr %1633, i64 %.01436
  %1635 = load double, ptr %1634, align 8, !tbaa !28
  %1636 = tail call double @llvm.fmuladd.f64(double %1631, double %1635, double %.01421)
  %1637 = getelementptr inbounds i8, ptr %0, i64 256
  %1638 = load ptr, ptr %1637, align 8, !tbaa !23
  %1639 = getelementptr inbounds double, ptr %1638, i64 %.01436
  store double %1636, ptr %1639, align 8, !tbaa !28
  br label %2175

1640:                                             ; preds = %47
  %1641 = getelementptr inbounds i8, ptr %0, i64 264
  %1642 = load double, ptr %1641, align 8, !tbaa !47
  %1643 = getelementptr inbounds i8, ptr %0, i64 1536
  store double %1642, ptr %1643, align 8, !tbaa !60
  %1644 = getelementptr inbounds i8, ptr %0, i64 1528
  %1645 = load double, ptr %1644, align 8, !tbaa !59
  %1646 = getelementptr inbounds i8, ptr %0, i64 1520
  %1647 = load double, ptr %1646, align 8, !tbaa !58
  %1648 = fsub double %1645, %1647
  %1649 = getelementptr inbounds i8, ptr %0, i64 1512
  %1650 = load double, ptr %1649, align 8, !tbaa !57
  %1651 = fsub double %1642, %1650
  %1652 = fneg double %1651
  %1653 = tail call double @llvm.fmuladd.f64(double %1648, double 8.000000e+00, double %1652)
  %1654 = getelementptr inbounds i8, ptr %0, i64 56
  %1655 = load double, ptr %1654, align 8, !tbaa !41
  %1656 = fmul double %1655, 6.000000e+00
  %1657 = getelementptr inbounds i8, ptr %0, i64 120
  %1658 = load ptr, ptr %1657, align 8, !tbaa !23
  %1659 = getelementptr inbounds double, ptr %1658, i64 %.01436
  %1660 = load double, ptr %1659, align 8, !tbaa !28
  %1661 = fmul double %1656, %1660
  %1662 = fdiv double %1653, %1661
  br label %1736

.thread1524:                                      ; preds = %1567, %1583
  %.101526 = phi i8 [ %.10, %1583 ], [ 1, %1567 ]
  %1663 = getelementptr inbounds i8, ptr %0, i64 56
  %1664 = load double, ptr %1663, align 8, !tbaa !41
  %1665 = getelementptr inbounds i8, ptr %0, i64 120
  %1666 = load ptr, ptr %1665, align 8, !tbaa !23
  %1667 = getelementptr inbounds double, ptr %1666, i64 %.26
  %1668 = load double, ptr %1667, align 8, !tbaa !28
  %1669 = fneg double %1664
  %1670 = tail call double @llvm.fmuladd.f64(double %1669, double %1668, double %1540)
  %1671 = getelementptr inbounds i8, ptr %0, i64 1544
  store double %1670, ptr %1671, align 8, !tbaa !61
  %1672 = load double, ptr %1667, align 8, !tbaa !28
  %1673 = tail call double @llvm.fmuladd.f64(double %1664, double %1672, double %1540)
  %1674 = getelementptr inbounds i8, ptr %0, i64 1552
  store double %1673, ptr %1674, align 8, !tbaa !62
  %1675 = load ptr, ptr %1541, align 8, !tbaa !23
  %1676 = getelementptr inbounds i8, ptr %1675, i64 %.26
  %1677 = load i8, ptr %1676, align 1, !tbaa !25, !range !26, !noundef !27
  %1678 = trunc nuw i8 %1677 to i1
  br i1 %1678, label %1679, label %1689

1679:                                             ; preds = %.thread1524
  %1680 = getelementptr inbounds i8, ptr %0, i64 1336
  %1681 = load ptr, ptr %1680, align 8, !tbaa !23
  %1682 = getelementptr inbounds double, ptr %1681, i64 %.26
  %1683 = load double, ptr %1682, align 8, !tbaa !28
  %1684 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1670, double noundef %1683)
  br i1 %1684, label %1685, label %1689

1685:                                             ; preds = %1679
  %1686 = load ptr, ptr %1680, align 8, !tbaa !23
  %1687 = getelementptr inbounds double, ptr %1686, i64 %.26
  %1688 = load double, ptr %1687, align 8, !tbaa !28
  store double %1688, ptr %1671, align 8, !tbaa !61
  br label %1689

1689:                                             ; preds = %1685, %1679, %.thread1524
  %1690 = load ptr, ptr %1562, align 8, !tbaa !23
  %1691 = getelementptr inbounds i8, ptr %1690, i64 %.26
  %1692 = load i8, ptr %1691, align 1, !tbaa !25, !range !26, !noundef !27
  %1693 = trunc nuw i8 %1692 to i1
  br i1 %1693, label %1694, label %1705

1694:                                             ; preds = %1689
  %1695 = load double, ptr %1674, align 8, !tbaa !62
  %1696 = getelementptr inbounds i8, ptr %0, i64 1400
  %1697 = load ptr, ptr %1696, align 8, !tbaa !23
  %1698 = getelementptr inbounds double, ptr %1697, i64 %.26
  %1699 = load double, ptr %1698, align 8, !tbaa !28
  %1700 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1695, double noundef %1699)
  br i1 %1700, label %1701, label %1705

1701:                                             ; preds = %1694
  %1702 = load ptr, ptr %1696, align 8, !tbaa !23
  %1703 = getelementptr inbounds double, ptr %1702, i64 %.26
  %1704 = load double, ptr %1703, align 8, !tbaa !28
  store double %1704, ptr %1674, align 8, !tbaa !62
  br label %1705

1705:                                             ; preds = %1701, %1694, %1689
  %1706 = load double, ptr %1671, align 8, !tbaa !61
  %1707 = load ptr, ptr %1537, align 8, !tbaa !23
  %1708 = getelementptr inbounds double, ptr %1707, i64 %.26
  store double %1706, ptr %1708, align 8, !tbaa !28
  br label %2175

1709:                                             ; preds = %47
  %1710 = getelementptr inbounds i8, ptr %0, i64 264
  %1711 = load double, ptr %1710, align 8, !tbaa !47
  %1712 = getelementptr inbounds i8, ptr %0, i64 1520
  store double %1711, ptr %1712, align 8, !tbaa !58
  %1713 = getelementptr inbounds i8, ptr %0, i64 1552
  %1714 = load double, ptr %1713, align 8, !tbaa !62
  %1715 = getelementptr inbounds i8, ptr %0, i64 256
  %1716 = load ptr, ptr %1715, align 8, !tbaa !23
  %1717 = getelementptr inbounds double, ptr %1716, i64 %.01436
  store double %1714, ptr %1717, align 8, !tbaa !28
  br label %2175

1718:                                             ; preds = %47
  %1719 = getelementptr inbounds i8, ptr %0, i64 264
  %1720 = load double, ptr %1719, align 8, !tbaa !47
  %1721 = getelementptr inbounds i8, ptr %0, i64 1528
  store double %1720, ptr %1721, align 8, !tbaa !59
  %1722 = getelementptr inbounds i8, ptr %0, i64 1544
  %1723 = load double, ptr %1722, align 8, !tbaa !61
  %1724 = getelementptr inbounds i8, ptr %0, i64 1552
  %1725 = load double, ptr %1724, align 8, !tbaa !62
  %1726 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1723, double noundef %1725)
  br i1 %1726, label %1727, label %1736

1727:                                             ; preds = %1718
  %1728 = load double, ptr %1721, align 8, !tbaa !59
  %1729 = getelementptr inbounds i8, ptr %0, i64 1520
  %1730 = load double, ptr %1729, align 8, !tbaa !58
  %1731 = fsub double %1728, %1730
  %1732 = load double, ptr %1724, align 8, !tbaa !62
  %1733 = load double, ptr %1722, align 8, !tbaa !61
  %1734 = fsub double %1732, %1733
  %1735 = fdiv double %1731, %1734
  br label %1736

1736:                                             ; preds = %1727, %1718, %1640
  %.sink1796.sink = phi double [ %1662, %1640 ], [ %1735, %1727 ], [ 0.000000e+00, %1718 ]
  %.sink1803 = phi i64 [ 4, %1640 ], [ 2, %1727 ], [ 2, %1718 ]
  %1737 = getelementptr inbounds i8, ptr %0, i64 328
  %1738 = load ptr, ptr %1737, align 8, !tbaa !23
  %1739 = getelementptr inbounds double, ptr %1738, i64 %.01436
  store double %.sink1796.sink, ptr %1739, align 8, !tbaa !28
  %1740 = getelementptr inbounds i8, ptr %0, i64 1416
  %1741 = load i64, ptr %1740, align 8, !tbaa !53
  %1742 = add nsw i64 %1741, %.sink1803
  store i64 %1742, ptr %1740, align 8, !tbaa !53
  %1743 = getelementptr inbounds i8, ptr %0, i64 256
  %1744 = load ptr, ptr %1743, align 8, !tbaa !23
  %1745 = getelementptr inbounds double, ptr %1744, i64 %.01436
  store double %.01421, ptr %1745, align 8, !tbaa !28
  %1746 = add nsw i64 %.01436, 1
  br label %1535

1747:                                             ; preds = %1535
  %1748 = getelementptr inbounds i8, ptr %0, i64 1504
  %1749 = load double, ptr %1748, align 8, !tbaa !56
  %1750 = getelementptr inbounds i8, ptr %0, i64 264
  store double %1749, ptr %1750, align 8, !tbaa !47
  %1751 = getelementptr inbounds i8, ptr %0, i64 336
  store i8 0, ptr %1751, align 8, !tbaa !51
  br label %1752

1752:                                             ; preds = %1747, %1524
  %1753 = phi double [ %1749, %1747 ], [ %.pre, %1524 ]
  %1754 = getelementptr inbounds i8, ptr %0, i64 2320
  %1755 = getelementptr inbounds i8, ptr %0, i64 64
  %1756 = getelementptr inbounds i8, ptr %0, i64 6352
  %1757 = getelementptr inbounds i8, ptr %0, i64 1080
  %1758 = getelementptr inbounds i8, ptr %0, i64 1720
  %1759 = load double, ptr %1758, align 8, !tbaa !72
  %1760 = getelementptr inbounds i8, ptr %0, i64 200
  %1761 = getelementptr inbounds i8, ptr %0, i64 264
  %1762 = getelementptr inbounds i8, ptr %0, i64 272
  tail call void @_ZN11alglib_impl31smoothnessmonitorenqueuepoint1uEPNS_17smoothnessmonitorEPNS_9ae_vectorES3_S3_dS3_dS3_PNS_8ae_stateE(ptr noundef nonnull %1754, ptr noundef nonnull %1755, ptr noundef nonnull %1756, ptr noundef nonnull %1757, double noundef %1759, ptr noundef nonnull %1760, double noundef %1753, ptr noundef nonnull %1762, ptr noundef %1)
  %1763 = getelementptr inbounds i8, ptr %0, i64 1992
  %1764 = load double, ptr %1763, align 8, !tbaa !73
  tail call void @_ZN11alglib_impl12trimfunctionEPdPNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef nonnull %1761, ptr noundef nonnull %1762, i64 noundef %.01457, double noundef %1764, ptr noundef %1)
  %1765 = load double, ptr %1761, align 8, !tbaa !47
  %1766 = getelementptr inbounds i8, ptr %0, i64 1064
  store double %1765, ptr %1766, align 8, !tbaa !69
  %.not1486.not1541 = icmp sgt i64 %.01457, 0
  br i1 %.not1486.not1541, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %1752
  %1767 = getelementptr inbounds i8, ptr %0, i64 328
  %1768 = getelementptr inbounds i8, ptr %0, i64 920
  %1769 = getelementptr inbounds i8, ptr %0, i64 984
  %1770 = getelementptr inbounds i8, ptr %0, i64 1208
  %1771 = getelementptr inbounds i8, ptr %0, i64 856
  %1772 = getelementptr inbounds i8, ptr %0, i64 1336
  %1773 = getelementptr inbounds i8, ptr %0, i64 1272
  %1774 = getelementptr inbounds i8, ptr %0, i64 1400
  br label %1775

1775:                                             ; preds = %.lr.ph, %1817
  %.271542 = phi i64 [ 0, %.lr.ph ], [ %1818, %1817 ]
  %1776 = load ptr, ptr %1767, align 8, !tbaa !23
  %1777 = getelementptr inbounds double, ptr %1776, i64 %.271542
  %1778 = load double, ptr %1777, align 8, !tbaa !28
  %1779 = load ptr, ptr %1768, align 8, !tbaa !23
  %1780 = getelementptr inbounds double, ptr %1779, i64 %.271542
  store double %1778, ptr %1780, align 8, !tbaa !28
  %1781 = load ptr, ptr %1767, align 8, !tbaa !23
  %1782 = getelementptr inbounds double, ptr %1781, i64 %.271542
  %1783 = load double, ptr %1782, align 8, !tbaa !28
  %1784 = load ptr, ptr %1769, align 8, !tbaa !23
  %1785 = getelementptr inbounds double, ptr %1784, i64 %.271542
  store double %1783, ptr %1785, align 8, !tbaa !28
  %1786 = load ptr, ptr %1770, align 8, !tbaa !23
  %1787 = getelementptr inbounds i8, ptr %1786, i64 %.271542
  %1788 = load i8, ptr %1787, align 1, !tbaa !25, !range !26, !noundef !27
  %1789 = trunc nuw i8 %1788 to i1
  br i1 %1789, label %1790, label %1801

1790:                                             ; preds = %1775
  %1791 = load ptr, ptr %1771, align 8, !tbaa !23
  %1792 = getelementptr inbounds double, ptr %1791, i64 %.271542
  %1793 = load double, ptr %1792, align 8, !tbaa !28
  %1794 = load ptr, ptr %1772, align 8, !tbaa !23
  %1795 = getelementptr inbounds double, ptr %1794, i64 %.271542
  %1796 = load double, ptr %1795, align 8, !tbaa !28
  %1797 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1793, double noundef %1796)
  br i1 %1797, label %1798, label %1801

1798:                                             ; preds = %1790
  %1799 = load ptr, ptr %1769, align 8, !tbaa !23
  %1800 = getelementptr inbounds double, ptr %1799, i64 %.271542
  store double 0.000000e+00, ptr %1800, align 8, !tbaa !28
  br label %1801

1801:                                             ; preds = %1798, %1790, %1775
  %1802 = load ptr, ptr %1773, align 8, !tbaa !23
  %1803 = getelementptr inbounds i8, ptr %1802, i64 %.271542
  %1804 = load i8, ptr %1803, align 1, !tbaa !25, !range !26, !noundef !27
  %1805 = trunc nuw i8 %1804 to i1
  br i1 %1805, label %1806, label %1817

1806:                                             ; preds = %1801
  %1807 = load ptr, ptr %1771, align 8, !tbaa !23
  %1808 = getelementptr inbounds double, ptr %1807, i64 %.271542
  %1809 = load double, ptr %1808, align 8, !tbaa !28
  %1810 = load ptr, ptr %1774, align 8, !tbaa !23
  %1811 = getelementptr inbounds double, ptr %1810, i64 %.271542
  %1812 = load double, ptr %1811, align 8, !tbaa !28
  %1813 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %1809, double noundef %1812)
  br i1 %1813, label %1814, label %1817

1814:                                             ; preds = %1806
  %1815 = load ptr, ptr %1769, align 8, !tbaa !23
  %1816 = getelementptr inbounds double, ptr %1815, i64 %.271542
  store double 0.000000e+00, ptr %1816, align 8, !tbaa !28
  br label %1817

1817:                                             ; preds = %1801, %1806, %1814
  %1818 = add nuw nsw i64 %.271542, 1
  %exitcond.not = icmp eq i64 %1818, %.01457
  br i1 %exitcond.not, label %._crit_edge, label %1775, !llvm.loop !91

._crit_edge:                                      ; preds = %1817, %1752
  %1819 = getelementptr inbounds i8, ptr %0, i64 800
  %1820 = getelementptr inbounds i8, ptr %0, i64 928
  %1821 = getelementptr inbounds i8, ptr %0, i64 1728
  %1822 = load double, ptr %1821, align 8, !tbaa !67
  %1823 = load double, ptr @_ZN11alglib_implL10minbc_gtolE, align 8, !tbaa !28
  %1824 = getelementptr inbounds i8, ptr %0, i64 1704
  %1825 = getelementptr inbounds i8, ptr %0, i64 1736
  %1826 = getelementptr inbounds i8, ptr %0, i64 1800
  %1827 = getelementptr inbounds i8, ptr %0, i64 1712
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_S1_S2_ddPlS3_S1_PNS_11linminstateES3_PNS_8ae_stateE(i64 noundef %.01457, ptr noundef nonnull %1819, ptr noundef nonnull %1766, ptr noundef nonnull %1820, ptr noundef nonnull %1757, ptr noundef nonnull %1758, double noundef %1822, double noundef %1823, ptr noundef nonnull %5, ptr noundef nonnull %1824, ptr noundef nonnull %1825, ptr noundef nonnull %1826, ptr noundef nonnull %1827, ptr noundef %1)
  br label %1464

1828:                                             ; preds = %1464
  %1829 = getelementptr inbounds i8, ptr %0, i64 2320
  call void @_ZN11alglib_impl35smoothnessmonitorfinalizelinesearchEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef nonnull %1829, ptr noundef %1)
  %.not1505.not1624 = icmp sgt i64 %.01457, 0
  br i1 %.not1505.not1624, label %.lr.ph1627, label %._crit_edge1628

.lr.ph1627:                                       ; preds = %1828
  %1830 = getelementptr inbounds i8, ptr %0, i64 1208
  %1831 = getelementptr inbounds i8, ptr %0, i64 856
  %1832 = getelementptr inbounds i8, ptr %0, i64 1336
  %1833 = getelementptr inbounds i8, ptr %0, i64 1272
  %1834 = getelementptr inbounds i8, ptr %0, i64 1400
  br label %1835

1835:                                             ; preds = %.lr.ph1627, %1873
  %.281625 = phi i64 [ 0, %.lr.ph1627 ], [ %1874, %1873 ]
  %1836 = load ptr, ptr %1830, align 8, !tbaa !23
  %1837 = getelementptr inbounds i8, ptr %1836, i64 %.281625
  %1838 = load i8, ptr %1837, align 1, !tbaa !25, !range !26, !noundef !27
  %1839 = trunc nuw i8 %1838 to i1
  br i1 %1839, label %1840, label %1854

1840:                                             ; preds = %1835
  %1841 = load ptr, ptr %1831, align 8, !tbaa !23
  %1842 = getelementptr inbounds double, ptr %1841, i64 %.281625
  %1843 = load double, ptr %1842, align 8, !tbaa !28
  %1844 = load ptr, ptr %1832, align 8, !tbaa !23
  %1845 = getelementptr inbounds double, ptr %1844, i64 %.281625
  %1846 = load double, ptr %1845, align 8, !tbaa !28
  %1847 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1843, double noundef %1846)
  br i1 %1847, label %1848, label %1854

1848:                                             ; preds = %1840
  %1849 = load ptr, ptr %1832, align 8, !tbaa !23
  %1850 = getelementptr inbounds double, ptr %1849, i64 %.281625
  %1851 = load double, ptr %1850, align 8, !tbaa !28
  %1852 = load ptr, ptr %1831, align 8, !tbaa !23
  %1853 = getelementptr inbounds double, ptr %1852, i64 %.281625
  store double %1851, ptr %1853, align 8, !tbaa !28
  br label %1854

1854:                                             ; preds = %1848, %1840, %1835
  %1855 = load ptr, ptr %1833, align 8, !tbaa !23
  %1856 = getelementptr inbounds i8, ptr %1855, i64 %.281625
  %1857 = load i8, ptr %1856, align 1, !tbaa !25, !range !26, !noundef !27
  %1858 = trunc nuw i8 %1857 to i1
  br i1 %1858, label %1859, label %1873

1859:                                             ; preds = %1854
  %1860 = load ptr, ptr %1831, align 8, !tbaa !23
  %1861 = getelementptr inbounds double, ptr %1860, i64 %.281625
  %1862 = load double, ptr %1861, align 8, !tbaa !28
  %1863 = load ptr, ptr %1834, align 8, !tbaa !23
  %1864 = getelementptr inbounds double, ptr %1863, i64 %.281625
  %1865 = load double, ptr %1864, align 8, !tbaa !28
  %1866 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %1862, double noundef %1865)
  br i1 %1866, label %1867, label %1873

1867:                                             ; preds = %1859
  %1868 = load ptr, ptr %1834, align 8, !tbaa !23
  %1869 = getelementptr inbounds double, ptr %1868, i64 %.281625
  %1870 = load double, ptr %1869, align 8, !tbaa !28
  %1871 = load ptr, ptr %1831, align 8, !tbaa !23
  %1872 = getelementptr inbounds double, ptr %1871, i64 %.281625
  store double %1870, ptr %1872, align 8, !tbaa !28
  br label %1873

1873:                                             ; preds = %1854, %1859, %1867
  %1874 = add nuw nsw i64 %.281625, 1
  %exitcond1736.not = icmp eq i64 %1874, %.01457
  br i1 %exitcond1736.not, label %._crit_edge1628, label %1835, !llvm.loop !92

._crit_edge1628:                                  ; preds = %1873, %1828
  %1875 = add nsw i64 %.01457, -1
  %1876 = getelementptr inbounds i8, ptr %0, i64 2160
  %1877 = load ptr, ptr %1876, align 8, !tbaa !23
  %1878 = getelementptr inbounds i8, ptr %0, i64 2296
  %1879 = load i64, ptr %1878, align 8, !tbaa !84
  %1880 = getelementptr inbounds ptr, ptr %1877, i64 %1879
  %1881 = load ptr, ptr %1880, align 8, !tbaa !43
  %1882 = getelementptr inbounds i8, ptr %0, i64 664
  %1883 = load ptr, ptr %1882, align 8, !tbaa !23
  %1884 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1875)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %1881, i64 noundef 1, ptr noundef %1883, i64 noundef 1, i64 noundef %1884)
  %1885 = getelementptr inbounds i8, ptr %0, i64 2080
  %1886 = load ptr, ptr %1885, align 8, !tbaa !23
  %1887 = load i64, ptr %1878, align 8, !tbaa !84
  %1888 = getelementptr inbounds ptr, ptr %1886, i64 %1887
  %1889 = load ptr, ptr %1888, align 8, !tbaa !43
  %1890 = getelementptr inbounds i8, ptr %0, i64 792
  %1891 = load ptr, ptr %1890, align 8, !tbaa !23
  %1892 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1875)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %1889, i64 noundef 1, ptr noundef %1891, i64 noundef 1, i64 noundef %1892)
  %1893 = load ptr, ptr %1876, align 8, !tbaa !23
  %1894 = load i64, ptr %1878, align 8, !tbaa !84
  %1895 = getelementptr inbounds ptr, ptr %1893, i64 %1894
  %1896 = load ptr, ptr %1895, align 8, !tbaa !43
  %1897 = getelementptr inbounds i8, ptr %0, i64 856
  %1898 = load ptr, ptr %1897, align 8, !tbaa !23
  %1899 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1875)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %1896, i64 noundef 1, ptr noundef %1898, i64 noundef 1, i64 noundef %1899)
  %1900 = load ptr, ptr %1885, align 8, !tbaa !23
  %1901 = load i64, ptr %1878, align 8, !tbaa !84
  %1902 = getelementptr inbounds ptr, ptr %1900, i64 %1901
  %1903 = load ptr, ptr %1902, align 8, !tbaa !43
  %1904 = getelementptr inbounds i8, ptr %0, i64 984
  %1905 = load ptr, ptr %1904, align 8, !tbaa !23
  %1906 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1875)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %1903, i64 noundef 1, ptr noundef %1905, i64 noundef 1, i64 noundef %1906)
  %1907 = getelementptr inbounds i8, ptr %0, i64 1064
  %1908 = load double, ptr %1907, align 8, !tbaa !69
  br i1 %.not1505.not1624, label %.lr.ph1633, label %._crit_edge1634

.lr.ph1633:                                       ; preds = %._crit_edge1628
  %1909 = getelementptr inbounds i8, ptr %0, i64 920
  %1910 = load ptr, ptr %1909, align 8, !tbaa !23
  %1911 = add nsw i64 %.01457, -1
  %xtraiter1852 = and i64 %.01457, 3
  %1912 = icmp ult i64 %1911, 3
  br i1 %1912, label %._crit_edge1634.loopexit.unr-lcssa, label %.lr.ph1633.new

.lr.ph1633.new:                                   ; preds = %.lr.ph1633
  %unroll_iter1856 = and i64 %.01457, 9223372036854775804
  br label %1913

1913:                                             ; preds = %1913, %.lr.ph1633.new
  %.1114321631 = phi double [ %1908, %.lr.ph1633.new ], [ %1928, %1913 ]
  %.291630 = phi i64 [ 0, %.lr.ph1633.new ], [ %1929, %1913 ]
  %niter1857 = phi i64 [ 0, %.lr.ph1633.new ], [ %niter1857.next.3, %1913 ]
  %1914 = getelementptr inbounds double, ptr %1910, i64 %.291630
  %1915 = load double, ptr %1914, align 8, !tbaa !28
  %1916 = call double @llvm.fmuladd.f64(double %.1114321631, double 1.000000e-01, double %1915)
  %1917 = or disjoint i64 %.291630, 1
  %1918 = getelementptr inbounds double, ptr %1910, i64 %1917
  %1919 = load double, ptr %1918, align 8, !tbaa !28
  %1920 = call double @llvm.fmuladd.f64(double %1916, double 1.000000e-01, double %1919)
  %1921 = or disjoint i64 %.291630, 2
  %1922 = getelementptr inbounds double, ptr %1910, i64 %1921
  %1923 = load double, ptr %1922, align 8, !tbaa !28
  %1924 = call double @llvm.fmuladd.f64(double %1920, double 1.000000e-01, double %1923)
  %1925 = or disjoint i64 %.291630, 3
  %1926 = getelementptr inbounds double, ptr %1910, i64 %1925
  %1927 = load double, ptr %1926, align 8, !tbaa !28
  %1928 = call double @llvm.fmuladd.f64(double %1924, double 1.000000e-01, double %1927)
  %1929 = add nuw nsw i64 %.291630, 4
  %niter1857.next.3 = add i64 %niter1857, 4
  %niter1857.ncmp.3 = icmp eq i64 %niter1857.next.3, %unroll_iter1856
  br i1 %niter1857.ncmp.3, label %._crit_edge1634.loopexit.unr-lcssa, label %1913, !llvm.loop !93

._crit_edge1634.loopexit.unr-lcssa:               ; preds = %1913, %.lr.ph1633
  %.lcssa1827.ph = phi double [ poison, %.lr.ph1633 ], [ %1928, %1913 ]
  %.1114321631.unr = phi double [ %1908, %.lr.ph1633 ], [ %1928, %1913 ]
  %.291630.unr = phi i64 [ 0, %.lr.ph1633 ], [ %1929, %1913 ]
  %lcmp.mod1854.not = icmp eq i64 %xtraiter1852, 0
  br i1 %lcmp.mod1854.not, label %._crit_edge1634, label %.epil.preheader1851

.epil.preheader1851:                              ; preds = %._crit_edge1634.loopexit.unr-lcssa, %.epil.preheader1851
  %.1114321631.epil = phi double [ %1932, %.epil.preheader1851 ], [ %.1114321631.unr, %._crit_edge1634.loopexit.unr-lcssa ]
  %.291630.epil = phi i64 [ %1933, %.epil.preheader1851 ], [ %.291630.unr, %._crit_edge1634.loopexit.unr-lcssa ]
  %epil.iter1853 = phi i64 [ %epil.iter1853.next, %.epil.preheader1851 ], [ 0, %._crit_edge1634.loopexit.unr-lcssa ]
  %1930 = getelementptr inbounds double, ptr %1910, i64 %.291630.epil
  %1931 = load double, ptr %1930, align 8, !tbaa !28
  %1932 = call double @llvm.fmuladd.f64(double %.1114321631.epil, double 1.000000e-01, double %1931)
  %1933 = add nuw nsw i64 %.291630.epil, 1
  %epil.iter1853.next = add i64 %epil.iter1853, 1
  %epil.iter1853.cmp.not = icmp eq i64 %epil.iter1853.next, %xtraiter1852
  br i1 %epil.iter1853.cmp.not, label %._crit_edge1634, label %.epil.preheader1851, !llvm.loop !94

._crit_edge1634:                                  ; preds = %._crit_edge1634.loopexit.unr-lcssa, %.epil.preheader1851, %._crit_edge1628
  %.29.lcssa = phi i64 [ 0, %._crit_edge1628 ], [ %.01457, %.epil.preheader1851 ], [ %.01457, %._crit_edge1634.loopexit.unr-lcssa ]
  %.111432.lcssa = phi double [ %1908, %._crit_edge1628 ], [ %.lcssa1827.ph, %._crit_edge1634.loopexit.unr-lcssa ], [ %1932, %.epil.preheader1851 ]
  %1934 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.111432.lcssa, ptr noundef %1)
  br i1 %1934, label %1937, label %1935

1935:                                             ; preds = %._crit_edge1634
  %1936 = getelementptr inbounds i8, ptr %0, i64 1432
  store i64 -8, ptr %1936, align 8, !tbaa !34
  br label %2215

1937:                                             ; preds = %._crit_edge1634
  %1938 = getelementptr inbounds i8, ptr %0, i64 339
  %1939 = load i8, ptr %1938, align 1, !tbaa !35, !range !26, !noundef !27
  %1940 = trunc nuw i8 %1939 to i1
  br i1 %1940, label %1941, label %1943

1941:                                             ; preds = %1937
  %1942 = getelementptr inbounds i8, ptr %0, i64 1432
  store i64 8, ptr %1942, align 8, !tbaa !34
  br label %2215

1943:                                             ; preds = %1937
  %1944 = load i64, ptr %5, align 8, !tbaa !24
  %.not1507 = icmp eq i64 %1944, 1
  br i1 %.not1507, label %.preheader1531, label %2170

.preheader1531:                                   ; preds = %1943
  br i1 %.not1505.not1624, label %.lr.ph1640, label %._crit_edge1641

.lr.ph1640:                                       ; preds = %.preheader1531
  %1945 = getelementptr inbounds i8, ptr %0, i64 1208
  %1946 = getelementptr inbounds i8, ptr %0, i64 1336
  %1947 = getelementptr inbounds i8, ptr %0, i64 1272
  %1948 = getelementptr inbounds i8, ptr %0, i64 1400
  br label %1949

1949:                                             ; preds = %.lr.ph1640, %1991
  %.413741639 = phi i8 [ 0, %.lr.ph1640 ], [ %.61376, %1991 ]
  %.301638 = phi i64 [ 0, %.lr.ph1640 ], [ %1992, %1991 ]
  %1950 = load ptr, ptr %1945, align 8, !tbaa !23
  %1951 = getelementptr inbounds i8, ptr %1950, i64 %.301638
  %1952 = load i8, ptr %1951, align 1, !tbaa !25, !range !26, !noundef !27
  %1953 = trunc nuw i8 %1952 to i1
  br i1 %1953, label %1954, label %1970

1954:                                             ; preds = %1949
  %1955 = load ptr, ptr %1897, align 8, !tbaa !23
  %1956 = getelementptr inbounds double, ptr %1955, i64 %.301638
  %1957 = load double, ptr %1956, align 8, !tbaa !28
  %1958 = load ptr, ptr %1946, align 8, !tbaa !23
  %1959 = getelementptr inbounds double, ptr %1958, i64 %.301638
  %1960 = load double, ptr %1959, align 8, !tbaa !28
  %1961 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1957, double noundef %1960)
  br i1 %1961, label %1962, label %1970

1962:                                             ; preds = %1954
  %1963 = load ptr, ptr %1897, align 8, !tbaa !23
  %1964 = getelementptr inbounds double, ptr %1963, i64 %.301638
  %1965 = load double, ptr %1964, align 8, !tbaa !28
  %1966 = load ptr, ptr %1882, align 8, !tbaa !23
  %1967 = getelementptr inbounds double, ptr %1966, i64 %.301638
  %1968 = load double, ptr %1967, align 8, !tbaa !28
  %1969 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1965, double noundef %1968)
  %spec.select = select i1 %1969, i8 1, i8 %.413741639
  br label %1970

1970:                                             ; preds = %1962, %1954, %1949
  %.51375 = phi i8 [ %.413741639, %1954 ], [ %.413741639, %1949 ], [ %spec.select, %1962 ]
  %1971 = load ptr, ptr %1947, align 8, !tbaa !23
  %1972 = getelementptr inbounds i8, ptr %1971, i64 %.301638
  %1973 = load i8, ptr %1972, align 1, !tbaa !25, !range !26, !noundef !27
  %1974 = trunc nuw i8 %1973 to i1
  br i1 %1974, label %1975, label %1991

1975:                                             ; preds = %1970
  %1976 = load ptr, ptr %1897, align 8, !tbaa !23
  %1977 = getelementptr inbounds double, ptr %1976, i64 %.301638
  %1978 = load double, ptr %1977, align 8, !tbaa !28
  %1979 = load ptr, ptr %1948, align 8, !tbaa !23
  %1980 = getelementptr inbounds double, ptr %1979, i64 %.301638
  %1981 = load double, ptr %1980, align 8, !tbaa !28
  %1982 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1978, double noundef %1981)
  br i1 %1982, label %1983, label %1991

1983:                                             ; preds = %1975
  %1984 = load ptr, ptr %1897, align 8, !tbaa !23
  %1985 = getelementptr inbounds double, ptr %1984, i64 %.301638
  %1986 = load double, ptr %1985, align 8, !tbaa !28
  %1987 = load ptr, ptr %1882, align 8, !tbaa !23
  %1988 = getelementptr inbounds double, ptr %1987, i64 %.301638
  %1989 = load double, ptr %1988, align 8, !tbaa !28
  %1990 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1986, double noundef %1989)
  %spec.select1518 = select i1 %1990, i8 1, i8 %.51375
  br label %1991

1991:                                             ; preds = %1983, %1970, %1975
  %.61376 = phi i8 [ %.51375, %1975 ], [ %.51375, %1970 ], [ %spec.select1518, %1983 ]
  %1992 = add nuw nsw i64 %.301638, 1
  %exitcond1738.not = icmp eq i64 %1992, %.01457
  br i1 %exitcond1738.not, label %._crit_edge1641, label %1949, !llvm.loop !95

._crit_edge1641:                                  ; preds = %1991, %.preheader1531
  %.30.lcssa = phi i64 [ 0, %.preheader1531 ], [ %.01457, %1991 ]
  %.41374.lcssa = phi i8 [ 0, %.preheader1531 ], [ %.61376, %1991 ]
  %1993 = getelementptr inbounds i8, ptr %0, i64 1056
  %1994 = load double, ptr %1993, align 8, !tbaa !52
  %1995 = getelementptr inbounds i8, ptr %0, i64 1072
  store double %1994, ptr %1995, align 8, !tbaa !77
  %1996 = load double, ptr %1907, align 8, !tbaa !69
  store double %1996, ptr %1993, align 8, !tbaa !52
  %1997 = getelementptr inbounds i8, ptr %0, i64 1048
  %1998 = load ptr, ptr %1997, align 8, !tbaa !23
  %1999 = load ptr, ptr %1882, align 8, !tbaa !23
  %2000 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1875)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1998, i64 noundef 1, ptr noundef %1999, i64 noundef 1, i64 noundef %2000)
  %2001 = load ptr, ptr %1882, align 8, !tbaa !23
  %2002 = load ptr, ptr %1897, align 8, !tbaa !23
  %2003 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1875)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2001, i64 noundef 1, ptr noundef %2002, i64 noundef 1, i64 noundef %2003)
  %2004 = load ptr, ptr %1890, align 8, !tbaa !23
  %2005 = load ptr, ptr %1904, align 8, !tbaa !23
  %2006 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1875)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2004, i64 noundef 1, ptr noundef %2005, i64 noundef 1, i64 noundef %2006)
  %2007 = getelementptr inbounds i8, ptr %0, i64 728
  %2008 = load ptr, ptr %2007, align 8, !tbaa !23
  %2009 = getelementptr inbounds i8, ptr %0, i64 920
  %2010 = load ptr, ptr %2009, align 8, !tbaa !23
  %2011 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1875)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2008, i64 noundef 1, ptr noundef %2010, i64 noundef 1, i64 noundef %2011)
  %2012 = getelementptr inbounds i8, ptr %0, i64 40
  %2013 = load i8, ptr %2012, align 8, !tbaa !54, !range !26, !noundef !27
  %2014 = trunc nuw i8 %2013 to i1
  br i1 %2014, label %2015, label %2023

2015:                                             ; preds = %._crit_edge1641
  %2016 = getelementptr inbounds i8, ptr %0, i64 256
  %2017 = load ptr, ptr %2016, align 8, !tbaa !23
  %2018 = load ptr, ptr %1882, align 8, !tbaa !23
  %2019 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1875)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2017, i64 noundef 1, ptr noundef %2018, i64 noundef 1, i64 noundef %2019)
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %2020 = getelementptr inbounds i8, ptr %0, i64 338
  store i8 1, ptr %2020, align 2, !tbaa !55
  br label %2175

2021:                                             ; preds = %47
  %2022 = getelementptr inbounds i8, ptr %0, i64 338
  store i8 0, ptr %2022, align 2, !tbaa !55
  br label %2023

2023:                                             ; preds = %._crit_edge1641, %2021
  %.81469 = phi double [ %.71468, %._crit_edge1641 ], [ %.01461, %2021 ]
  %.31 = phi i64 [ %.30.lcssa, %._crit_edge1641 ], [ %.01436, %2021 ]
  %.11 = phi i8 [ %.81409, %._crit_edge1641 ], [ %.01401, %2021 ]
  %.41398 = phi i64 [ %.31397, %._crit_edge1641 ], [ %.01394, %2021 ]
  %.71391 = phi double [ %.61390, %._crit_edge1641 ], [ %.01384, %2021 ]
  %.71377 = phi i8 [ %.41374.lcssa, %._crit_edge1641 ], [ %.01370, %2021 ]
  %.6 = phi double [ %.5, %._crit_edge1641 ], [ %.0, %2021 ]
  %2024 = getelementptr inbounds i8, ptr %0, i64 1408
  %2025 = load i64, ptr %2024, align 8, !tbaa !78
  %2026 = add nsw i64 %2025, 1
  store i64 %2026, ptr %2024, align 8, !tbaa !78
  %2027 = getelementptr inbounds i8, ptr %0, i64 2296
  %2028 = load i64, ptr %2027, align 8, !tbaa !84
  %2029 = icmp eq i64 %2028, %.01453
  br i1 %2029, label %.preheader1530, label %2071

.preheader1530:                                   ; preds = %2023
  %.not1509.not1644 = icmp sgt i64 %.01453, 0
  br i1 %.not1509.not1644, label %.lr.ph1646, label %.loopexit1529

.lr.ph1646:                                       ; preds = %.preheader1530
  %2030 = getelementptr inbounds i8, ptr %0, i64 2160
  %2031 = add nsw i64 %.01457, -1
  %2032 = getelementptr inbounds i8, ptr %0, i64 2080
  br label %2037

.preheader1528:                                   ; preds = %2037
  %.not15101648 = icmp slt i64 %2051, 2
  br i1 %.not15101648, label %.loopexit1529, label %.lr.ph1650

.lr.ph1650:                                       ; preds = %.preheader1528
  %2033 = getelementptr inbounds i8, ptr %0, i64 2224
  %2034 = getelementptr inbounds i8, ptr %0, i64 2288
  %2035 = add nsw i64 %2051, -1
  %xtraiter1859 = and i64 %2035, 1
  %2036 = icmp eq i64 %2051, 2
  br i1 %2036, label %.loopexit1529.loopexit.unr-lcssa, label %.lr.ph1650.new

.lr.ph1650.new:                                   ; preds = %.lr.ph1650
  %unroll_iter1862 = and i64 %2035, -2
  br label %2052

2037:                                             ; preds = %.lr.ph1646, %2037
  %.321645 = phi i64 [ 0, %.lr.ph1646 ], [ %2041, %2037 ]
  %2038 = load ptr, ptr %2030, align 8, !tbaa !23
  %2039 = getelementptr inbounds ptr, ptr %2038, i64 %.321645
  %2040 = load ptr, ptr %2039, align 8, !tbaa !43
  %2041 = add nuw nsw i64 %.321645, 1
  %2042 = getelementptr inbounds ptr, ptr %2038, i64 %2041
  %2043 = load ptr, ptr %2042, align 8, !tbaa !43
  %2044 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2031)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2040, i64 noundef 1, ptr noundef %2043, i64 noundef 1, i64 noundef %2044)
  %2045 = load ptr, ptr %2032, align 8, !tbaa !23
  %2046 = getelementptr inbounds ptr, ptr %2045, i64 %.321645
  %2047 = load ptr, ptr %2046, align 8, !tbaa !43
  %2048 = getelementptr inbounds ptr, ptr %2045, i64 %2041
  %2049 = load ptr, ptr %2048, align 8, !tbaa !43
  %2050 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2031)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2047, i64 noundef 1, ptr noundef %2049, i64 noundef 1, i64 noundef %2050)
  %2051 = load i64, ptr %2027, align 8, !tbaa !84
  %.not1509.not = icmp slt i64 %2041, %2051
  br i1 %.not1509.not, label %2037, label %.preheader1528, !llvm.loop !96

2052:                                             ; preds = %2052, %.lr.ph1650.new
  %.331649 = phi i64 [ 0, %.lr.ph1650.new ], [ %2063, %2052 ]
  %niter1863 = phi i64 [ 0, %.lr.ph1650.new ], [ %niter1863.next.1, %2052 ]
  %2053 = load ptr, ptr %2033, align 8, !tbaa !23
  %2054 = or disjoint i64 %.331649, 1
  %2055 = getelementptr inbounds double, ptr %2053, i64 %2054
  %2056 = load double, ptr %2055, align 8, !tbaa !28
  %2057 = getelementptr inbounds double, ptr %2053, i64 %.331649
  store double %2056, ptr %2057, align 8, !tbaa !28
  %2058 = load ptr, ptr %2034, align 8, !tbaa !23
  %2059 = getelementptr inbounds double, ptr %2058, i64 %2054
  %2060 = load double, ptr %2059, align 8, !tbaa !28
  %2061 = getelementptr inbounds double, ptr %2058, i64 %.331649
  store double %2060, ptr %2061, align 8, !tbaa !28
  %2062 = load ptr, ptr %2033, align 8, !tbaa !23
  %2063 = add nuw nsw i64 %.331649, 2
  %2064 = getelementptr inbounds double, ptr %2062, i64 %2063
  %2065 = load double, ptr %2064, align 8, !tbaa !28
  %2066 = getelementptr inbounds double, ptr %2062, i64 %2054
  store double %2065, ptr %2066, align 8, !tbaa !28
  %2067 = load ptr, ptr %2034, align 8, !tbaa !23
  %2068 = getelementptr inbounds double, ptr %2067, i64 %2063
  %2069 = load double, ptr %2068, align 8, !tbaa !28
  %2070 = getelementptr inbounds double, ptr %2067, i64 %2054
  store double %2069, ptr %2070, align 8, !tbaa !28
  %niter1863.next.1 = add i64 %niter1863, 2
  %niter1863.ncmp.1 = icmp eq i64 %niter1863.next.1, %unroll_iter1862
  br i1 %niter1863.ncmp.1, label %.loopexit1529.loopexit.unr-lcssa, label %2052, !llvm.loop !97

2071:                                             ; preds = %2023
  %2072 = add nsw i64 %2028, 1
  store i64 %2072, ptr %2027, align 8, !tbaa !84
  br label %.loopexit1529

.loopexit1529.loopexit.unr-lcssa:                 ; preds = %2052, %.lr.ph1650
  %.331649.unr = phi i64 [ 0, %.lr.ph1650 ], [ %2063, %2052 ]
  %lcmp.mod1861.not = icmp eq i64 %xtraiter1859, 0
  br i1 %lcmp.mod1861.not, label %.loopexit1529, label %.loopexit1529.loopexit.epilog-lcssa

.loopexit1529.loopexit.epilog-lcssa:              ; preds = %.loopexit1529.loopexit.unr-lcssa
  %2073 = load ptr, ptr %2033, align 8, !tbaa !23
  %2074 = add nuw nsw i64 %.331649.unr, 1
  %2075 = getelementptr inbounds double, ptr %2073, i64 %2074
  %2076 = load double, ptr %2075, align 8, !tbaa !28
  %2077 = getelementptr inbounds double, ptr %2073, i64 %.331649.unr
  store double %2076, ptr %2077, align 8, !tbaa !28
  %2078 = load ptr, ptr %2034, align 8, !tbaa !23
  %2079 = getelementptr inbounds double, ptr %2078, i64 %2074
  %2080 = load double, ptr %2079, align 8, !tbaa !28
  %2081 = getelementptr inbounds double, ptr %2078, i64 %.331649.unr
  store double %2080, ptr %2081, align 8, !tbaa !28
  br label %.loopexit1529

.loopexit1529:                                    ; preds = %.loopexit1529.loopexit.epilog-lcssa, %.loopexit1529.loopexit.unr-lcssa, %.preheader1530, %.preheader1528, %2071
  %2082 = phi i64 [ %2072, %2071 ], [ %2051, %.preheader1528 ], [ %.01453, %.preheader1530 ], [ %2051, %.loopexit1529.loopexit.unr-lcssa ], [ %2051, %.loopexit1529.loopexit.epilog-lcssa ]
  %.34 = phi i64 [ %.31, %2071 ], [ 0, %.preheader1528 ], [ 0, %.preheader1530 ], [ %2035, %.loopexit1529.loopexit.unr-lcssa ], [ %2035, %.loopexit1529.loopexit.epilog-lcssa ]
  %2083 = getelementptr inbounds i8, ptr %0, i64 2080
  %2084 = load ptr, ptr %2083, align 8, !tbaa !23
  %2085 = add nsw i64 %2082, -1
  %2086 = getelementptr inbounds ptr, ptr %2084, i64 %2085
  %2087 = load ptr, ptr %2086, align 8, !tbaa !43
  %2088 = getelementptr inbounds i8, ptr %0, i64 2160
  %2089 = load ptr, ptr %2088, align 8, !tbaa !23
  %2090 = getelementptr inbounds ptr, ptr %2089, i64 %2085
  %2091 = load ptr, ptr %2090, align 8, !tbaa !43
  %2092 = add nsw i64 %.01457, -1
  %2093 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2092)
  %2094 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %2087, i64 noundef 1, ptr noundef %2091, i64 noundef 1, i64 noundef %2093)
  %2095 = load ptr, ptr %2083, align 8, !tbaa !23
  %2096 = load i64, ptr %2027, align 8, !tbaa !84
  %2097 = getelementptr ptr, ptr %2095, i64 %2096
  %2098 = getelementptr i8, ptr %2097, i64 -8
  %2099 = load ptr, ptr %2098, align 8, !tbaa !43
  %2100 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2092)
  %2101 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %2099, i64 noundef 1, ptr noundef %2099, i64 noundef 1, i64 noundef %2100)
  %2102 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2094, double noundef 0.000000e+00)
  br i1 %2102, label %2170, label %2103

2103:                                             ; preds = %.loopexit1529
  %2104 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2101, double noundef 0.000000e+00)
  br i1 %2104, label %2170, label %2105

2105:                                             ; preds = %2103
  %2106 = fdiv double 1.000000e+00, %2094
  %2107 = getelementptr inbounds i8, ptr %0, i64 2224
  %2108 = load ptr, ptr %2107, align 8, !tbaa !23
  %2109 = load i64, ptr %2027, align 8, !tbaa !84
  %2110 = getelementptr double, ptr %2108, i64 %2109
  %2111 = getelementptr i8, ptr %2110, i64 -8
  store double %2106, ptr %2111, align 8, !tbaa !28
  %2112 = icmp sle i64 %2109, %.01453
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %2112, ptr noundef nonnull @.str.482, ptr noundef %1)
  %.not1511.not1652 = icmp sgt i64 %.01457, 0
  br i1 %.not1511.not1652, label %.lr.ph1657, label %._crit_edge1658

.lr.ph1657:                                       ; preds = %2105
  %2113 = getelementptr inbounds i8, ptr %0, i64 664
  %2114 = getelementptr inbounds i8, ptr %0, i64 1048
  %2115 = getelementptr inbounds i8, ptr %0, i64 120
  br label %2116

2116:                                             ; preds = %.lr.ph1657, %2116
  %.614181655 = phi double [ 0.000000e+00, %.lr.ph1657 ], [ %2138, %2116 ]
  %.1214331654 = phi double [ 0.000000e+00, %.lr.ph1657 ], [ %2129, %2116 ]
  %.351653 = phi i64 [ 0, %.lr.ph1657 ], [ %2139, %2116 ]
  %2117 = load ptr, ptr %2113, align 8, !tbaa !23
  %2118 = getelementptr inbounds double, ptr %2117, i64 %.351653
  %2119 = load double, ptr %2118, align 8, !tbaa !28
  %2120 = load ptr, ptr %2114, align 8, !tbaa !23
  %2121 = getelementptr inbounds double, ptr %2120, i64 %.351653
  %2122 = load double, ptr %2121, align 8, !tbaa !28
  %2123 = fsub double %2119, %2122
  %2124 = load ptr, ptr %2115, align 8, !tbaa !23
  %2125 = getelementptr inbounds double, ptr %2124, i64 %.351653
  %2126 = load double, ptr %2125, align 8, !tbaa !28
  %2127 = fdiv double %2123, %2126
  %2128 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %2127, ptr noundef %1)
  %2129 = fadd double %.1214331654, %2128
  %2130 = load ptr, ptr %2113, align 8, !tbaa !23
  %2131 = getelementptr inbounds double, ptr %2130, i64 %.351653
  %2132 = load double, ptr %2131, align 8, !tbaa !28
  %2133 = load ptr, ptr %2114, align 8, !tbaa !23
  %2134 = getelementptr inbounds double, ptr %2133, i64 %.351653
  %2135 = load double, ptr %2134, align 8, !tbaa !28
  %2136 = fsub double %2132, %2135
  %2137 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %2136, ptr noundef %1)
  %2138 = fadd double %.614181655, %2137
  %2139 = add nuw nsw i64 %.351653, 1
  %exitcond1740.not = icmp eq i64 %2139, %.01457
  br i1 %exitcond1740.not, label %._crit_edge1658, label %2116, !llvm.loop !98

._crit_edge1658:                                  ; preds = %2116, %2105
  %.35.lcssa = phi i64 [ 0, %2105 ], [ %.01457, %2116 ]
  %.121433.lcssa = phi double [ 0.000000e+00, %2105 ], [ %2129, %2116 ]
  %.61418.lcssa = phi double [ 0.000000e+00, %2105 ], [ %2138, %2116 ]
  %2140 = getelementptr inbounds i8, ptr %0, i64 1144
  %2141 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.121433.lcssa, ptr noundef %1)
  call void @_ZN11alglib_implL30minbc_updateestimateofgoodstepEPddPNS_8ae_stateE(ptr noundef nonnull %2140, double noundef %2141, ptr noundef %1)
  %2142 = getelementptr inbounds i8, ptr %0, i64 32
  %2143 = load i64, ptr %2142, align 8, !tbaa !82
  %2144 = icmp sgt i64 %2143, 0
  br i1 %2144, label %2145, label %2149

2145:                                             ; preds = %._crit_edge1658
  %2146 = load i64, ptr %2024, align 8, !tbaa !78
  %.not1512 = icmp slt i64 %2146, %2143
  br i1 %.not1512, label %2149, label %2147

2147:                                             ; preds = %2145
  %2148 = getelementptr inbounds i8, ptr %0, i64 1432
  store i64 5, ptr %2148, align 8, !tbaa !34
  br label %2215

2149:                                             ; preds = %2145, %._crit_edge1658
  %2150 = trunc nuw i8 %.71377 to i1
  br i1 %2150, label %2153, label %.preheader1527

.preheader1527:                                   ; preds = %2149
  br i1 %.not1511.not1652, label %.lr.ph1665, label %._crit_edge1666

.lr.ph1665:                                       ; preds = %.preheader1527
  %2151 = getelementptr inbounds i8, ptr %0, i64 792
  %2152 = getelementptr inbounds i8, ptr %0, i64 120
  br label %2154

2153:                                             ; preds = %2149
  store i64 0, ptr %2027, align 8, !tbaa !84
  br label %2168

2154:                                             ; preds = %.lr.ph1665, %2154
  %.1314341664 = phi double [ 0.000000e+00, %.lr.ph1665 ], [ %2163, %2154 ]
  %.361663 = phi i64 [ 0, %.lr.ph1665 ], [ %2164, %2154 ]
  %2155 = load ptr, ptr %2151, align 8, !tbaa !23
  %2156 = getelementptr inbounds double, ptr %2155, i64 %.361663
  %2157 = load double, ptr %2156, align 8, !tbaa !28
  %2158 = load ptr, ptr %2152, align 8, !tbaa !23
  %2159 = getelementptr inbounds double, ptr %2158, i64 %.361663
  %2160 = load double, ptr %2159, align 8, !tbaa !28
  %2161 = fmul double %2157, %2160
  %2162 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %2161, ptr noundef %1)
  %2163 = fadd double %.1314341664, %2162
  %2164 = add nuw nsw i64 %.361663, 1
  %exitcond1741.not = icmp eq i64 %2164, %.01457
  br i1 %exitcond1741.not, label %._crit_edge1666, label %2154, !llvm.loop !99

._crit_edge1666:                                  ; preds = %2154, %.preheader1527
  %.36.lcssa = phi i64 [ 0, %.preheader1527 ], [ %.01457, %2154 ]
  %.131434.lcssa = phi double [ 0.000000e+00, %.preheader1527 ], [ %2163, %2154 ]
  %2165 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.131434.lcssa, ptr noundef %1)
  %2166 = fmul double %.01379, %.71391
  %2167 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %2165, double noundef %2166)
  br i1 %2167, label %2170, label %2168

2168:                                             ; preds = %._crit_edge1666, %2153
  %.37 = phi i64 [ %.35.lcssa, %2153 ], [ %.36.lcssa, %._crit_edge1666 ]
  %.14 = phi double [ %.121433.lcssa, %2153 ], [ %.131434.lcssa, %._crit_edge1666 ]
  %2169 = add nsw i64 %.41398, 1
  br label %1267

2170:                                             ; preds = %._crit_edge1666, %.loopexit1529, %2103, %1943, %._crit_edge1616, %1267
  %.91470 = phi double [ %.51466, %1267 ], [ %1416, %._crit_edge1616 ], [ %.71468, %1943 ], [ %.81469, %.loopexit1529 ], [ %.81469, %2103 ], [ %.81469, %._crit_edge1666 ]
  %.38 = phi i64 [ %.19, %1267 ], [ %.24.lcssa, %._crit_edge1616 ], [ %.29.lcssa, %1943 ], [ %.34, %.loopexit1529 ], [ %.34, %2103 ], [ %.36.lcssa, %._crit_edge1666 ]
  %.15 = phi double [ %.71428, %1267 ], [ %.91430.lcssa, %._crit_edge1616 ], [ %.111432.lcssa, %1943 ], [ %2094, %.loopexit1529 ], [ %2094, %2103 ], [ %.131434.lcssa, %._crit_edge1666 ]
  %.71419 = phi double [ %.21414, %1267 ], [ %.41416.lcssa, %._crit_edge1616 ], [ %.51417, %1943 ], [ %2101, %.loopexit1529 ], [ %2101, %2103 ], [ %.61418.lcssa, %._crit_edge1666 ]
  %.12 = phi i8 [ %.61407, %1267 ], [ %.71408.lcssa1759, %._crit_edge1616 ], [ %.81409, %1943 ], [ %.11, %.loopexit1529 ], [ %.11, %2103 ], [ %.11, %._crit_edge1666 ]
  %.51399 = phi i64 [ %.21396, %1267 ], [ %.21396, %._crit_edge1616 ], [ %.31397, %1943 ], [ %.41398, %.loopexit1529 ], [ %.41398, %2103 ], [ %.41398, %._crit_edge1666 ]
  %.81392 = phi double [ %.51389, %1267 ], [ %.51389, %._crit_edge1616 ], [ %.61390, %1943 ], [ %.71391, %.loopexit1529 ], [ %.71391, %2103 ], [ %.71391, %._crit_edge1666 ]
  %.81378 = phi i8 [ %.21372, %1267 ], [ %.21372, %._crit_edge1616 ], [ %.31373, %1943 ], [ %.71377, %.loopexit1529 ], [ %.71377, %2103 ], [ %.71377, %._crit_edge1666 ]
  %.7 = phi double [ %.4, %1267 ], [ %.4, %._crit_edge1616 ], [ %.5, %1943 ], [ %.6, %.loopexit1529 ], [ %.6, %2103 ], [ %.6, %._crit_edge1666 ]
  %2171 = load double, ptr @_ZN11alglib_implL21minbc_decaycorrectionE, align 8, !tbaa !28
  %2172 = fmul double %.01379, %2171
  %2173 = load double, ptr @_ZN11alglib_implL14minbc_mindecayE, align 8, !tbaa !28
  %2174 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %2172, double noundef %2173, ptr noundef %1)
  br label %305

2175:                                             ; preds = %2015, %1709, %1705, %1626, %1611, %1596, %1585, %1529, %1522, %1143, %937, %933, %854, %839, %824, %813, %757, %750, %499, %495, %416, %401, %386, %375, %319, %315, %288, %273, %269, %._crit_edge1693
  %.sink1808 = phi i32 [ 29, %2015 ], [ 28, %1709 ], [ 27, %1705 ], [ 26, %1626 ], [ 25, %1611 ], [ 24, %1596 ], [ 23, %1585 ], [ 22, %1529 ], [ 21, %1522 ], [ 20, %1143 ], [ 19, %937 ], [ 18, %933 ], [ 17, %854 ], [ 16, %839 ], [ 15, %824 ], [ 14, %813 ], [ 13, %757 ], [ 12, %750 ], [ 11, %499 ], [ 10, %495 ], [ 9, %416 ], [ 8, %401 ], [ 7, %386 ], [ 6, %375 ], [ 5, %319 ], [ 4, %315 ], [ 3, %288 ], [ 2, %273 ], [ 1, %269 ], [ 0, %._crit_edge1693 ]
  %.101471 = phi double [ %.71468, %2015 ], [ %.01461, %1709 ], [ %.01461, %1705 ], [ %.01461, %1626 ], [ %.01461, %1611 ], [ %.01461, %1596 ], [ %.01461, %1585 ], [ %.71468, %1529 ], [ %.71468, %1522 ], [ %.31464, %1143 ], [ %.01461, %937 ], [ %.01461, %933 ], [ %.01461, %854 ], [ %.01461, %839 ], [ %.01461, %824 ], [ %.01461, %813 ], [ %.31464, %757 ], [ %.31464, %750 ], [ %.01461, %499 ], [ %.01461, %495 ], [ %.01461, %416 ], [ %.01461, %401 ], [ %.01461, %386 ], [ %.01461, %375 ], [ %.11462, %319 ], [ %.11462, %315 ], [ %.01461, %288 ], [ %.01461, %273 ], [ %.01461, %269 ], [ %.01461, %._crit_edge1693 ]
  %.31460 = phi i64 [ %.01457, %2015 ], [ %.01457, %1709 ], [ %.01457, %1705 ], [ %.01457, %1626 ], [ %.01457, %1611 ], [ %.01457, %1596 ], [ %.01457, %1585 ], [ %.01457, %1529 ], [ %.01457, %1522 ], [ %.01457, %1143 ], [ %.01457, %937 ], [ %.01457, %933 ], [ %.01457, %854 ], [ %.01457, %839 ], [ %.01457, %824 ], [ %.01457, %813 ], [ %.01457, %757 ], [ %.01457, %750 ], [ %.01457, %499 ], [ %.01457, %495 ], [ %.01457, %416 ], [ %.01457, %401 ], [ %.01457, %386 ], [ %.01457, %375 ], [ %.01457, %319 ], [ %.01457, %315 ], [ %.01457, %288 ], [ %.21459, %273 ], [ %.21459, %269 ], [ %.11458, %._crit_edge1693 ]
  %.31456 = phi i64 [ %.01453, %2015 ], [ %.01453, %1709 ], [ %.01453, %1705 ], [ %.01453, %1626 ], [ %.01453, %1611 ], [ %.01453, %1596 ], [ %.01453, %1585 ], [ %.01453, %1529 ], [ %.01453, %1522 ], [ %.01453, %1143 ], [ %.01453, %937 ], [ %.01453, %933 ], [ %.01453, %854 ], [ %.01453, %839 ], [ %.01453, %824 ], [ %.01453, %813 ], [ %.01453, %757 ], [ %.01453, %750 ], [ %.01453, %499 ], [ %.01453, %495 ], [ %.01453, %416 ], [ %.01453, %401 ], [ %.01453, %386 ], [ %.01453, %375 ], [ %.01453, %319 ], [ %.01453, %315 ], [ %.01453, %288 ], [ %.21455, %273 ], [ %.21455, %269 ], [ %.11454, %._crit_edge1693 ]
  %.39 = phi i64 [ %.30.lcssa, %2015 ], [ %.01436, %1709 ], [ %.26, %1705 ], [ %.01436, %1626 ], [ %.01436, %1611 ], [ %.01436, %1596 ], [ %.26, %1585 ], [ %.25.lcssa, %1529 ], [ %.25.lcssa, %1522 ], [ %.161452.lcssa, %1143 ], [ %.01436, %937 ], [ %.141450, %933 ], [ %.01436, %854 ], [ %.01436, %839 ], [ %.01436, %824 ], [ %.141450, %813 ], [ %.131449.lcssa, %757 ], [ %.131449.lcssa, %750 ], [ %.01436, %499 ], [ %.91445, %495 ], [ %.01436, %416 ], [ %.01436, %401 ], [ %.01436, %386 ], [ %.91445, %375 ], [ %.81444, %319 ], [ %.81444, %315 ], [ %.01436, %288 ], [ %.71443, %273 ], [ %.71443, %269 ], [ %.51441.lcssa, %._crit_edge1693 ]
  %.16 = phi double [ %.111432.lcssa, %2015 ], [ %.01421, %1709 ], [ %1540, %1705 ], [ %.01421, %1626 ], [ %.01421, %1611 ], [ %.01421, %1596 ], [ %1540, %1585 ], [ %.101431, %1529 ], [ %.101431, %1522 ], [ %.31424, %1143 ], [ %.01421, %937 ], [ %768, %933 ], [ %.01421, %854 ], [ %.01421, %839 ], [ %.01421, %824 ], [ %768, %813 ], [ %.01421, %757 ], [ %.01421, %750 ], [ %.01421, %499 ], [ %330, %495 ], [ %.01421, %416 ], [ %.01421, %401 ], [ %.01421, %386 ], [ %330, %375 ], [ %.11422, %319 ], [ %.11422, %315 ], [ %.01421, %288 ], [ %.01421, %273 ], [ %.01421, %269 ], [ %.01421, %._crit_edge1693 ]
  %.81420 = phi double [ %.51417, %2015 ], [ %.01412, %1709 ], [ %.01412, %1705 ], [ %.01412, %1626 ], [ %.01412, %1611 ], [ %.01412, %1596 ], [ %.01412, %1585 ], [ %.51417, %1529 ], [ %.51417, %1522 ], [ %.01412, %1143 ], [ %.01412, %937 ], [ %.01412, %933 ], [ %.01412, %854 ], [ %.01412, %839 ], [ %.01412, %824 ], [ %.01412, %813 ], [ %.01412, %757 ], [ %.01412, %750 ], [ %.01412, %499 ], [ %.01412, %495 ], [ %.01412, %416 ], [ %.01412, %401 ], [ %.01412, %386 ], [ %.01412, %375 ], [ %.11413, %319 ], [ %.11413, %315 ], [ %.01412, %288 ], [ %.01412, %273 ], [ %.01412, %269 ], [ %.01412, %._crit_edge1693 ]
  %.13 = phi i8 [ %.81409, %2015 ], [ %.01401, %1709 ], [ %.101526, %1705 ], [ %.01401, %1626 ], [ %.01401, %1611 ], [ %.01401, %1596 ], [ %.10, %1585 ], [ %.81409, %1529 ], [ %.81409, %1522 ], [ %.01401, %1143 ], [ %.01401, %937 ], [ %.514061523, %933 ], [ %.01401, %854 ], [ %.01401, %839 ], [ %.01401, %824 ], [ %.51406, %813 ], [ %.01401, %757 ], [ %.01401, %750 ], [ %.01401, %499 ], [ %.314041520, %495 ], [ %.01401, %416 ], [ %.01401, %401 ], [ %.01401, %386 ], [ %.31404, %375 ], [ %.11402, %319 ], [ %.11402, %315 ], [ %.01401, %288 ], [ %.01401, %273 ], [ %.01401, %269 ], [ %.01401, %._crit_edge1693 ]
  %.61400 = phi i64 [ %.31397, %2015 ], [ %.01394, %1709 ], [ %.01394, %1705 ], [ %.01394, %1626 ], [ %.01394, %1611 ], [ %.01394, %1596 ], [ %.01394, %1585 ], [ %.31397, %1529 ], [ %.31397, %1522 ], [ %.01394, %1143 ], [ %.01394, %937 ], [ %.01394, %933 ], [ %.01394, %854 ], [ %.01394, %839 ], [ %.01394, %824 ], [ %.01394, %813 ], [ %.01394, %757 ], [ %.01394, %750 ], [ %.01394, %499 ], [ %.01394, %495 ], [ %.01394, %416 ], [ %.01394, %401 ], [ %.01394, %386 ], [ %.01394, %375 ], [ %.11395, %319 ], [ %.11395, %315 ], [ %.01394, %288 ], [ %.01394, %273 ], [ %.01394, %269 ], [ %.01394, %._crit_edge1693 ]
  %.91393 = phi double [ %.61390, %2015 ], [ %.01384, %1709 ], [ %.01384, %1705 ], [ %.01384, %1626 ], [ %.01384, %1611 ], [ %.01384, %1596 ], [ %.01384, %1585 ], [ %.61390, %1529 ], [ %.61390, %1522 ], [ %.31387, %1143 ], [ %.01384, %937 ], [ %.01384, %933 ], [ %.01384, %854 ], [ %.01384, %839 ], [ %.01384, %824 ], [ %.01384, %813 ], [ %.31387, %757 ], [ %.31387, %750 ], [ %.01384, %499 ], [ %.01384, %495 ], [ %.01384, %416 ], [ %.01384, %401 ], [ %.01384, %386 ], [ %.01384, %375 ], [ %.11385, %319 ], [ %.11385, %315 ], [ %.01384, %288 ], [ %.01384, %273 ], [ %.01384, %269 ], [ %.01384, %._crit_edge1693 ]
  %.41383 = phi double [ %.01379, %2015 ], [ %.01379, %1709 ], [ %.01379, %1705 ], [ %.01379, %1626 ], [ %.01379, %1611 ], [ %.01379, %1596 ], [ %.01379, %1585 ], [ %.01379, %1529 ], [ %.01379, %1522 ], [ %.01379, %1143 ], [ %.01379, %937 ], [ %.01379, %933 ], [ %.01379, %854 ], [ %.01379, %839 ], [ %.01379, %824 ], [ %.01379, %813 ], [ %.01379, %757 ], [ %.01379, %750 ], [ %.01379, %499 ], [ %.01379, %495 ], [ %.01379, %416 ], [ %.01379, %401 ], [ %.01379, %386 ], [ %.01379, %375 ], [ %.31382, %319 ], [ %.31382, %315 ], [ %.01379, %288 ], [ %.21381, %273 ], [ %.21381, %269 ], [ %.11380, %._crit_edge1693 ]
  %.9 = phi i8 [ %.41374.lcssa, %2015 ], [ %.01370, %1709 ], [ %.01370, %1705 ], [ %.01370, %1626 ], [ %.01370, %1611 ], [ %.01370, %1596 ], [ %.01370, %1585 ], [ %.31373, %1529 ], [ %.31373, %1522 ], [ %.01370, %1143 ], [ %.01370, %937 ], [ %.01370, %933 ], [ %.01370, %854 ], [ %.01370, %839 ], [ %.01370, %824 ], [ %.01370, %813 ], [ %.01370, %757 ], [ %.01370, %750 ], [ %.01370, %499 ], [ %.01370, %495 ], [ %.01370, %416 ], [ %.01370, %401 ], [ %.01370, %386 ], [ %.01370, %375 ], [ %.11371, %319 ], [ %.11371, %315 ], [ %.01370, %288 ], [ %.01370, %273 ], [ %.01370, %269 ], [ %.01370, %._crit_edge1693 ]
  %.8 = phi double [ %.5, %2015 ], [ %.0, %1709 ], [ %.0, %1705 ], [ %.0, %1626 ], [ %.0, %1611 ], [ %.0, %1596 ], [ %.0, %1585 ], [ %.5, %1529 ], [ %.5, %1522 ], [ %.2, %1143 ], [ %.0, %937 ], [ %.0, %933 ], [ %.0, %854 ], [ %.0, %839 ], [ %.0, %824 ], [ %.0, %813 ], [ %.2, %757 ], [ %.2, %750 ], [ %.0, %499 ], [ %.0, %495 ], [ %.0, %416 ], [ %.0, %401 ], [ %.0, %386 ], [ %.0, %375 ], [ %.1, %319 ], [ %.1, %315 ], [ %.0, %288 ], [ %.0, %273 ], [ %.0, %269 ], [ %.0, %._crit_edge1693 ]
  store i32 %.sink1808, ptr %6, align 8, !tbaa !5
  %2176 = load i64, ptr %3, align 8, !tbaa !24
  %2177 = getelementptr inbounds i8, ptr %0, i64 408
  %2178 = load ptr, ptr %2177, align 8, !tbaa !23
  store i64 %2176, ptr %2178, align 8, !tbaa !24
  %2179 = load ptr, ptr %2177, align 8, !tbaa !23
  %2180 = getelementptr inbounds i8, ptr %2179, i64 8
  store i64 %.31460, ptr %2180, align 8, !tbaa !24
  %2181 = load ptr, ptr %2177, align 8, !tbaa !23
  %2182 = getelementptr inbounds i8, ptr %2181, i64 16
  store i64 %.31456, ptr %2182, align 8, !tbaa !24
  %2183 = load ptr, ptr %2177, align 8, !tbaa !23
  %2184 = getelementptr inbounds i8, ptr %2183, i64 24
  store i64 %.39, ptr %2184, align 8, !tbaa !24
  %2185 = load ptr, ptr %2177, align 8, !tbaa !23
  %2186 = getelementptr inbounds i8, ptr %2185, i64 32
  store i64 %.01435, ptr %2186, align 8, !tbaa !24
  %2187 = load i64, ptr %5, align 8, !tbaa !24
  %2188 = load ptr, ptr %2177, align 8, !tbaa !23
  %2189 = getelementptr inbounds i8, ptr %2188, i64 40
  store i64 %2187, ptr %2189, align 8, !tbaa !24
  %2190 = load ptr, ptr %2177, align 8, !tbaa !23
  %2191 = getelementptr inbounds i8, ptr %2190, i64 48
  store i64 %.61400, ptr %2191, align 8, !tbaa !24
  %2192 = getelementptr inbounds i8, ptr %0, i64 472
  %2193 = load ptr, ptr %2192, align 8, !tbaa !23
  %2194 = and i8 %.13, 1
  store i8 %2194, ptr %2193, align 1, !tbaa !25
  %2195 = load ptr, ptr %2192, align 8, !tbaa !23
  %2196 = getelementptr inbounds i8, ptr %2195, i64 1
  %2197 = and i8 %.9, 1
  store i8 %2197, ptr %2196, align 1, !tbaa !25
  %2198 = load double, ptr %4, align 8, !tbaa !28
  %2199 = getelementptr inbounds i8, ptr %0, i64 536
  %2200 = load ptr, ptr %2199, align 8, !tbaa !23
  store double %2198, ptr %2200, align 8, !tbaa !28
  %2201 = load ptr, ptr %2199, align 8, !tbaa !23
  %2202 = getelementptr inbounds i8, ptr %2201, i64 8
  store double %.101471, ptr %2202, align 8, !tbaa !28
  %2203 = load ptr, ptr %2199, align 8, !tbaa !23
  %2204 = getelementptr inbounds i8, ptr %2203, i64 16
  store double %.16, ptr %2204, align 8, !tbaa !28
  %2205 = load ptr, ptr %2199, align 8, !tbaa !23
  %2206 = getelementptr inbounds i8, ptr %2205, i64 24
  store double %.81420, ptr %2206, align 8, !tbaa !28
  %2207 = load ptr, ptr %2199, align 8, !tbaa !23
  %2208 = getelementptr inbounds i8, ptr %2207, i64 32
  store double %.01411, ptr %2208, align 8, !tbaa !28
  %2209 = load ptr, ptr %2199, align 8, !tbaa !23
  %2210 = getelementptr inbounds i8, ptr %2209, i64 40
  store double %.91393, ptr %2210, align 8, !tbaa !28
  %2211 = load ptr, ptr %2199, align 8, !tbaa !23
  %2212 = getelementptr inbounds i8, ptr %2211, i64 48
  store double %.41383, ptr %2212, align 8, !tbaa !28
  %2213 = load ptr, ptr %2199, align 8, !tbaa !23
  %2214 = getelementptr inbounds i8, ptr %2213, i64 56
  store double %.8, ptr %2214, align 8, !tbaa !28
  br label %2215

2215:                                             ; preds = %2175, %2147, %1941, %1935, %1206, %1198, %1179, %1094, %1088, %1056, %590, %581, %575, %303, %93
  %.01472 = phi i1 [ true, %2175 ], [ false, %303 ], [ false, %581 ], [ false, %590 ], [ false, %1094 ], [ false, %1179 ], [ false, %1198 ], [ false, %1206 ], [ false, %1941 ], [ false, %2147 ], [ false, %1935 ], [ false, %1088 ], [ false, %1056 ], [ false, %575 ], [ false, %93 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  ret i1 %.01472
}

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_impl16ae_fp_greater_eqEdd(double noundef, double noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 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_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #4

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !16, i64 344}
!6 = !{!"_ZTSN11alglib_impl10minbcstateE", !7, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !7, i64 32, !11, i64 40, !10, i64 48, !10, i64 56, !12, i64 64, !7, i64 128, !12, i64 136, !12, i64 200, !10, i64 264, !12, i64 272, !11, i64 336, !11, i64 337, !11, i64 338, !11, i64 339, !15, i64 344, !12, i64 608, !12, i64 672, !12, i64 736, !12, i64 800, !12, i64 864, !12, i64 928, !12, i64 992, !10, i64 1056, !10, i64 1064, !10, i64 1072, !12, i64 1080, !10, i64 1144, !12, i64 1152, !12, i64 1216, !12, i64 1280, !12, i64 1344, !7, i64 1408, !7, i64 1416, !7, i64 1424, !7, i64 1432, !12, i64 1440, !10, i64 1504, !10, i64 1512, !10, i64 1520, !10, i64 1528, !10, i64 1536, !10, i64 1544, !10, i64 1552, !10, i64 1560, !10, i64 1568, !12, i64 1576, !12, i64 1640, !7, i64 1704, !7, i64 1712, !10, i64 1720, !10, i64 1728, !12, i64 1736, !17, i64 1800, !10, i64 1992, !7, i64 2000, !18, i64 2008, !18, i64 2088, !12, i64 2168, !12, i64 2232, !7, i64 2296, !10, i64 2304, !7, i64 2312, !19, i64 2320, !12, i64 6288, !12, i64 6352}
!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_impl10rcommstateE", !16, i64 0, !12, i64 8, !12, i64 72, !12, i64 136, !12, i64 200}
!16 = !{!"int", !8, i64 0}
!17 = !{!"_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}
!18 = !{!"_ZTSN11alglib_impl9ae_matrixE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !11, i64 32, !13, i64 40, !8, i64 72}
!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, !18, 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, !18, i64 2232, !15, 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, !18, i64 3088, !18, 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, !18, 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, !18, i64 136, !18, 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 = !{!11, !11, i64 0}
!26 = !{i8 0, i8 2}
!27 = !{}
!28 = !{!10, !10, i64 0}
!29 = !{!6, !7, i64 0}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.unroll.disable"}
!34 = !{!6, !7, i64 1432}
!35 = !{!6, !11, i64 339}
!36 = !{!6, !7, i64 1424}
!37 = !{!6, !7, i64 2312}
!38 = distinct !{!38, !31}
!39 = !{!6, !7, i64 128}
!40 = distinct !{!40, !31}
!41 = !{!6, !10, i64 56}
!42 = !{!6, !10, i64 2304}
!43 = !{!14, !14, i64 0}
!44 = distinct !{!44, !31}
!45 = distinct !{!45, !33}
!46 = !{!6, !11, i64 337}
!47 = !{!6, !10, i64 264}
!48 = distinct !{!48, !31}
!49 = !{!6, !10, i64 1144}
!50 = !{!6, !7, i64 2000}
!51 = !{!6, !11, i64 336}
!52 = !{!6, !10, i64 1056}
!53 = !{!6, !7, i64 1416}
!54 = !{!6, !11, i64 40}
!55 = !{!6, !11, i64 338}
!56 = !{!6, !10, i64 1504}
!57 = !{!6, !10, i64 1512}
!58 = !{!6, !10, i64 1520}
!59 = !{!6, !10, i64 1528}
!60 = !{!6, !10, i64 1536}
!61 = !{!6, !10, i64 1544}
!62 = !{!6, !10, i64 1552}
!63 = distinct !{!63, !31}
!64 = !{!6, !10, i64 8}
!65 = distinct !{!65, !31}
!66 = distinct !{!66, !31}
!67 = !{!6, !10, i64 1728}
!68 = !{!6, !10, i64 48}
!69 = !{!6, !10, i64 1064}
!70 = !{!6, !7, i64 1712}
!71 = distinct !{!71, !31}
!72 = !{!6, !10, i64 1720}
!73 = !{!6, !10, i64 1992}
!74 = distinct !{!74, !31}
!75 = distinct !{!75, !31}
!76 = distinct !{!76, !33}
!77 = !{!6, !10, i64 1072}
!78 = !{!6, !7, i64 1408}
!79 = distinct !{!79, !31}
!80 = !{!6, !10, i64 24}
!81 = !{!6, !10, i64 16}
!82 = !{!6, !7, i64 32}
!83 = distinct !{!83, !31}
!84 = !{!6, !7, i64 2296}
!85 = distinct !{!85, !31}
!86 = distinct !{!86, !31}
!87 = distinct !{!87, !31}
!88 = distinct !{!88, !31}
!89 = distinct !{!89, !31}
!90 = distinct !{!90, !31}
!91 = distinct !{!91, !31}
!92 = distinct !{!92, !31}
!93 = distinct !{!93, !31}
!94 = distinct !{!94, !33}
!95 = distinct !{!95, !31}
!96 = distinct !{!96, !31}
!97 = distinct !{!97, !31}
!98 = distinct !{!98, !31}
!99 = distinct !{!99, !31}


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