; LLVM IR from Dimandragon/non-parametric-dsp :: alglib-cpp/src (optimization)

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

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

@_ZN11alglib_implL18minbc_initialdecayE = external hidden global double, align 8
@.str.1814 = 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.1815 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1816 = 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 19
  %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 19
  %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 !25
  %36 = getelementptr inbounds i64, ptr %35, i64 0
  %37 = load i64, ptr %36, align 8, !tbaa !26
  store i64 %37, ptr %6, align 8, !tbaa !26
  %38 = load ptr, ptr %4, align 8, !tbaa !5
  %39 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %38, i32 0, i32 19
  %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 !25
  %43 = getelementptr inbounds i64, ptr %42, i64 1
  %44 = load i64, ptr %43, align 8, !tbaa !26
  store i64 %44, ptr %9, align 8, !tbaa !26
  %45 = load ptr, ptr %4, align 8, !tbaa !5
  %46 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %45, i32 0, i32 19
  %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 !25
  %50 = getelementptr inbounds i64, ptr %49, i64 2
  %51 = load i64, ptr %50, align 8, !tbaa !26
  store i64 %51, ptr %10, align 8, !tbaa !26
  %52 = load ptr, ptr %4, align 8, !tbaa !5
  %53 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %52, i32 0, i32 19
  %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 !25
  %57 = getelementptr inbounds i64, ptr %56, i64 3
  %58 = load i64, ptr %57, align 8, !tbaa !26
  store i64 %58, ptr %11, align 8, !tbaa !26
  %59 = load ptr, ptr %4, align 8, !tbaa !5
  %60 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %59, i32 0, i32 19
  %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 !25
  %64 = getelementptr inbounds i64, ptr %63, i64 4
  %65 = load i64, ptr %64, align 8, !tbaa !26
  store i64 %65, ptr %12, align 8, !tbaa !26
  %66 = load ptr, ptr %4, align 8, !tbaa !5
  %67 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %66, i32 0, i32 19
  %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 !25
  %71 = getelementptr inbounds i64, ptr %70, i64 5
  %72 = load i64, ptr %71, align 8, !tbaa !26
  store i64 %72, ptr %17, align 8, !tbaa !26
  %73 = load ptr, ptr %4, align 8, !tbaa !5
  %74 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %73, i32 0, i32 19
  %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 !25
  %78 = getelementptr inbounds i64, ptr %77, i64 6
  %79 = load i64, ptr %78, align 8, !tbaa !26
  store i64 %79, ptr %18, align 8, !tbaa !26
  %80 = load ptr, ptr %4, align 8, !tbaa !5
  %81 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %80, i32 0, i32 19
  %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 !25
  %85 = getelementptr inbounds i8, ptr %84, i64 0
  %86 = load i8, ptr %85, align 1, !tbaa !27, !range !28, !noundef !29
  %87 = trunc i8 %86 to i1
  %88 = zext i1 %87 to i8
  store i8 %88, ptr %16, align 1, !tbaa !27
  %89 = load ptr, ptr %4, align 8, !tbaa !5
  %90 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %89, i32 0, i32 19
  %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 !25
  %94 = getelementptr inbounds i8, ptr %93, i64 1
  %95 = load i8, ptr %94, align 1, !tbaa !27, !range !28, !noundef !29
  %96 = trunc i8 %95 to i1
  %97 = zext i1 %96 to i8
  store i8 %97, ptr %21, align 1, !tbaa !27
  %98 = load ptr, ptr %4, align 8, !tbaa !5
  %99 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %98, i32 0, i32 19
  %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 !25
  %103 = getelementptr inbounds double, ptr %102, i64 0
  %104 = load double, ptr %103, align 8, !tbaa !30
  store double %104, ptr %7, align 8, !tbaa !30
  %105 = load ptr, ptr %4, align 8, !tbaa !5
  %106 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %105, i32 0, i32 19
  %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 !25
  %110 = getelementptr inbounds double, ptr %109, i64 1
  %111 = load double, ptr %110, align 8, !tbaa !30
  store double %111, ptr %8, align 8, !tbaa !30
  %112 = load ptr, ptr %4, align 8, !tbaa !5
  %113 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %112, i32 0, i32 19
  %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 !25
  %117 = getelementptr inbounds double, ptr %116, i64 2
  %118 = load double, ptr %117, align 8, !tbaa !30
  store double %118, ptr %13, align 8, !tbaa !30
  %119 = load ptr, ptr %4, align 8, !tbaa !5
  %120 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %119, i32 0, i32 19
  %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 !25
  %124 = getelementptr inbounds double, ptr %123, i64 3
  %125 = load double, ptr %124, align 8, !tbaa !30
  store double %125, ptr %14, align 8, !tbaa !30
  %126 = load ptr, ptr %4, align 8, !tbaa !5
  %127 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %126, i32 0, i32 19
  %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 !25
  %131 = getelementptr inbounds double, ptr %130, i64 4
  %132 = load double, ptr %131, align 8, !tbaa !30
  store double %132, ptr %15, align 8, !tbaa !30
  %133 = load ptr, ptr %4, align 8, !tbaa !5
  %134 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %133, i32 0, i32 19
  %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 !25
  %138 = getelementptr inbounds double, ptr %137, i64 5
  %139 = load double, ptr %138, align 8, !tbaa !30
  store double %139, ptr %19, align 8, !tbaa !30
  %140 = load ptr, ptr %4, align 8, !tbaa !5
  %141 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %140, i32 0, i32 19
  %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 !25
  %145 = getelementptr inbounds double, ptr %144, i64 6
  %146 = load double, ptr %145, align 8, !tbaa !30
  store double %146, ptr %20, align 8, !tbaa !30
  %147 = load ptr, ptr %4, align 8, !tbaa !5
  %148 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %147, i32 0, i32 19
  %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 !25
  %152 = getelementptr inbounds double, ptr %151, i64 7
  %153 = load double, ptr %152, align 8, !tbaa !30
  store double %153, ptr %22, align 8, !tbaa !30
  br label %155

154:                                              ; preds = %2
  store i64 359, ptr %6, align 8, !tbaa !26
  store i64 -58, ptr %9, align 8, !tbaa !26
  store i64 -919, ptr %10, align 8, !tbaa !26
  store i64 -909, ptr %11, align 8, !tbaa !26
  store i64 81, ptr %12, align 8, !tbaa !26
  store i64 255, ptr %17, align 8, !tbaa !26
  store i64 74, ptr %18, align 8, !tbaa !26
  store i8 0, ptr %16, align 1, !tbaa !27
  store i8 1, ptr %21, align 1, !tbaa !27
  store double 2.050000e+02, ptr %7, align 8, !tbaa !30
  store double -8.380000e+02, ptr %8, align 8, !tbaa !30
  store double 9.390000e+02, ptr %13, align 8, !tbaa !30
  store double -5.260000e+02, ptr %14, align 8, !tbaa !30
  store double 7.630000e+02, ptr %15, align 8, !tbaa !30
  store double -5.410000e+02, ptr %19, align 8, !tbaa !30
  store double -6.980000e+02, ptr %20, align 8, !tbaa !30
  store double -9.000000e+02, ptr %22, align 8, !tbaa !30
  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 19
  %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 %619

162:                                              ; preds = %155
  %163 = load ptr, ptr %4, align 8, !tbaa !5
  %164 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %163, i32 0, i32 19
  %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 %697

169:                                              ; preds = %162
  %170 = load ptr, ptr %4, align 8, !tbaa !5
  %171 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %170, i32 0, i32 19
  %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 %706

176:                                              ; preds = %169
  %177 = load ptr, ptr %4, align 8, !tbaa !5
  %178 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %177, i32 0, i32 19
  %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 %756

183:                                              ; preds = %176
  %184 = load ptr, ptr %4, align 8, !tbaa !5
  %185 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %184, i32 0, i32 19
  %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 %797

190:                                              ; preds = %183
  %191 = load ptr, ptr %4, align 8, !tbaa !5
  %192 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %191, i32 0, i32 19
  %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 %806

197:                                              ; preds = %190
  %198 = load ptr, ptr %4, align 8, !tbaa !5
  %199 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %198, i32 0, i32 19
  %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 %925

204:                                              ; preds = %197
  %205 = load ptr, ptr %4, align 8, !tbaa !5
  %206 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %205, i32 0, i32 19
  %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 %954

211:                                              ; preds = %204
  %212 = load ptr, ptr %4, align 8, !tbaa !5
  %213 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %212, i32 0, i32 19
  %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 %982

218:                                              ; preds = %211
  %219 = load ptr, ptr %4, align 8, !tbaa !5
  %220 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %219, i32 0, i32 19
  %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 %1009

225:                                              ; preds = %218
  %226 = load ptr, ptr %4, align 8, !tbaa !5
  %227 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %226, i32 0, i32 19
  %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 %1154

232:                                              ; preds = %225
  %233 = load ptr, ptr %4, align 8, !tbaa !5
  %234 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %233, i32 0, i32 19
  %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 %1172

239:                                              ; preds = %232
  %240 = load ptr, ptr %4, align 8, !tbaa !5
  %241 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %240, i32 0, i32 19
  %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 %1688

246:                                              ; preds = %239
  %247 = load ptr, ptr %4, align 8, !tbaa !5
  %248 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %247, i32 0, i32 19
  %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 %1703

253:                                              ; preds = %246
  %254 = load ptr, ptr %4, align 8, !tbaa !5
  %255 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %254, i32 0, i32 19
  %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 %1822

260:                                              ; preds = %253
  %261 = load ptr, ptr %4, align 8, !tbaa !5
  %262 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %261, i32 0, i32 19
  %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 %1851

267:                                              ; preds = %260
  %268 = load ptr, ptr %4, align 8, !tbaa !5
  %269 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %268, i32 0, i32 19
  %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 %1879

274:                                              ; preds = %267
  %275 = load ptr, ptr %4, align 8, !tbaa !5
  %276 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %275, i32 0, i32 19
  %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 %1906

281:                                              ; preds = %274
  %282 = load ptr, ptr %4, align 8, !tbaa !5
  %283 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %282, i32 0, i32 19
  %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 %2057

288:                                              ; preds = %281
  %289 = load ptr, ptr %4, align 8, !tbaa !5
  %290 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %289, i32 0, i32 19
  %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 %2075

295:                                              ; preds = %288
  %296 = load ptr, ptr %4, align 8, !tbaa !5
  %297 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %296, i32 0, i32 19
  %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 %2489

302:                                              ; preds = %295
  %303 = load ptr, ptr %4, align 8, !tbaa !5
  %304 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %303, i32 0, i32 19
  %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 %3285

309:                                              ; preds = %302
  %310 = load ptr, ptr %4, align 8, !tbaa !5
  %311 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %310, i32 0, i32 19
  %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 %3300

316:                                              ; preds = %309
  %317 = load ptr, ptr %4, align 8, !tbaa !5
  %318 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %317, i32 0, i32 19
  %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 %3419

323:                                              ; preds = %316
  %324 = load ptr, ptr %4, align 8, !tbaa !5
  %325 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %324, i32 0, i32 19
  %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 %3448

330:                                              ; preds = %323
  %331 = load ptr, ptr %4, align 8, !tbaa !5
  %332 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %331, i32 0, i32 19
  %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 %3476

337:                                              ; preds = %330
  %338 = load ptr, ptr %4, align 8, !tbaa !5
  %339 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %338, i32 0, i32 19
  %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 %3503

344:                                              ; preds = %337
  %345 = load ptr, ptr %4, align 8, !tbaa !5
  %346 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %345, i32 0, i32 19
  %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 %3654

351:                                              ; preds = %344
  %352 = load ptr, ptr %4, align 8, !tbaa !5
  %353 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %352, i32 0, i32 19
  %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 %3672

358:                                              ; preds = %351
  %359 = load ptr, ptr %4, align 8, !tbaa !5
  %360 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %359, i32 0, i32 19
  %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 %4288

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 !31
  %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 !26
  %371 = load double, ptr @_ZN11alglib_implL18minbc_initialdecayE, align 8, !tbaa !30
  store double %371, ptr %20, align 8, !tbaa !30
  %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 !31
  store i64 %374, ptr %9, align 8, !tbaa !26
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %375

375:                                              ; preds = %394, %365
  %376 = load i64, ptr %11, align 8, !tbaa !26
  %377 = load i64, ptr %9, align 8, !tbaa !26
  %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 40
  %383 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %382, i32 0, i32 4
  %384 = load ptr, ptr %383, align 8, !tbaa !25
  %385 = load i64, ptr %11, align 8, !tbaa !26
  %386 = getelementptr inbounds double, ptr %384, i64 %385
  %387 = load double, ptr %386, align 8, !tbaa !30
  %388 = load ptr, ptr %4, align 8, !tbaa !5
  %389 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %388, i32 0, i32 20
  %390 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %389, i32 0, i32 4
  %391 = load ptr, ptr %390, align 8, !tbaa !25
  %392 = load i64, ptr %11, align 8, !tbaa !26
  %393 = getelementptr inbounds double, ptr %391, i64 %392
  store double %387, ptr %393, align 8, !tbaa !30
  br label %394

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

397:                                              ; preds = %375
  %398 = load ptr, ptr %4, align 8, !tbaa !5
  %399 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %398, i32 0, i32 20
  %400 = load ptr, ptr %4, align 8, !tbaa !5
  %401 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %400, i32 0, i32 34
  %402 = load ptr, ptr %4, align 8, !tbaa !5
  %403 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %402, i32 0, i32 32
  %404 = load ptr, ptr %4, align 8, !tbaa !5
  %405 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %404, i32 0, i32 35
  %406 = load ptr, ptr %4, align 8, !tbaa !5
  %407 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %406, i32 0, i32 33
  %408 = load i64, ptr %9, align 8, !tbaa !26
  %409 = load ptr, ptr %5, align 8, !tbaa !5
  %410 = call noundef zeroext i1 @_ZN11alglib_impl26enforceboundaryconstraintsEPNS_9ae_vectorEPKS0_S3_S3_S3_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 39
  store i64 -3, ptr %413, align 8, !tbaa !34
  store i8 0, ptr %23, align 1, !tbaa !27
  %414 = load i8, ptr %23, align 1, !tbaa !27, !range !28, !noundef !29
  %415 = trunc i8 %414 to i1
  store i1 %415, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4743

416:                                              ; preds = %397
  %417 = load ptr, ptr %4, align 8, !tbaa !5
  %418 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %417, i32 0, i32 18
  store i8 0, ptr %418, align 1, !tbaa !35
  %419 = load ptr, ptr %4, align 8, !tbaa !5
  %420 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %419, i32 0, i32 39
  store i64 0, ptr %420, align 8, !tbaa !34
  %421 = load ptr, ptr %4, align 8, !tbaa !5
  %422 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %421, i32 0, i32 36
  store i64 0, ptr %422, align 8, !tbaa !36
  %423 = load ptr, ptr %4, align 8, !tbaa !5
  %424 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %423, i32 0, i32 37
  store i64 0, ptr %424, align 8, !tbaa !37
  %425 = load ptr, ptr %4, align 8, !tbaa !5
  %426 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %425, i32 0, i32 38
  store i64 -1, ptr %426, align 8, !tbaa !38
  %427 = load ptr, ptr %4, align 8, !tbaa !5
  %428 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %427, i32 0, i32 60
  %429 = load i64, ptr %10, align 8, !tbaa !26
  %430 = add nsw i64 %429, 1
  %431 = load i64, ptr %9, align 8, !tbaa !26
  %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 61
  %435 = load i64, ptr %10, align 8, !tbaa !26
  %436 = add nsw i64 %435, 1
  %437 = load i64, ptr %9, align 8, !tbaa !26
  %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 62
  %441 = load i64, ptr %10, align 8, !tbaa !26
  %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 63
  %445 = load i64, ptr %10, align 8, !tbaa !26
  %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 51
  %449 = load i64, ptr %9, align 8, !tbaa !26
  %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 67
  %453 = load ptr, ptr %4, align 8, !tbaa !5
  %454 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %453, i32 0, i32 8
  %455 = load i64, ptr %9, align 8, !tbaa !26
  %456 = load ptr, ptr %4, align 8, !tbaa !5
  %457 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %456, i32 0, i32 66
  %458 = load i64, ptr %457, align 8, !tbaa !39
  %459 = icmp sgt i64 %458, 0
  %460 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl21smoothnessmonitorinitEPNS_17smoothnessmonitorEPKNS_9ae_vectorEllbPNS_8ae_stateE(ptr noundef %452, ptr noundef %454, i64 noundef %455, i64 noundef 1, i1 noundef zeroext %459, ptr noundef %460)
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %461

461:                                              ; preds = %494, %416
  %462 = load i64, ptr %11, align 8, !tbaa !26
  %463 = load i64, ptr %9, align 8, !tbaa !26
  %464 = sub nsw i64 %463, 1
  %465 = icmp sle i64 %462, %464
  br i1 %465, label %466, label %497

466:                                              ; preds = %461
  %467 = load ptr, ptr %4, align 8, !tbaa !5
  %468 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %467, i32 0, i32 8
  %469 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %468, i32 0, i32 4
  %470 = load ptr, ptr %469, align 8, !tbaa !25
  %471 = load i64, ptr %11, align 8, !tbaa !26
  %472 = getelementptr inbounds double, ptr %470, i64 %471
  %473 = load double, ptr %472, align 8, !tbaa !30
  %474 = load ptr, ptr %4, align 8, !tbaa !5
  %475 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %474, i32 0, i32 68
  %476 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %475, i32 0, i32 4
  %477 = load ptr, ptr %476, align 8, !tbaa !25
  %478 = load i64, ptr %11, align 8, !tbaa !26
  %479 = getelementptr inbounds double, ptr %477, i64 %478
  store double %473, ptr %479, align 8, !tbaa !30
  %480 = load ptr, ptr %4, align 8, !tbaa !5
  %481 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %480, i32 0, i32 8
  %482 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %481, i32 0, i32 4
  %483 = load ptr, ptr %482, align 8, !tbaa !25
  %484 = load i64, ptr %11, align 8, !tbaa !26
  %485 = getelementptr inbounds double, ptr %483, i64 %484
  %486 = load double, ptr %485, align 8, !tbaa !30
  %487 = fdiv double 1.000000e+00, %486
  %488 = load ptr, ptr %4, align 8, !tbaa !5
  %489 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %488, i32 0, i32 69
  %490 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %489, i32 0, i32 4
  %491 = load ptr, ptr %490, align 8, !tbaa !25
  %492 = load i64, ptr %11, align 8, !tbaa !26
  %493 = getelementptr inbounds double, ptr %491, i64 %492
  store double %487, ptr %493, align 8, !tbaa !30
  br label %494

494:                                              ; preds = %466
  %495 = load i64, ptr %11, align 8, !tbaa !26
  %496 = add nsw i64 %495, 1
  store i64 %496, ptr %11, align 8, !tbaa !26
  br label %461, !llvm.loop !40

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

502:                                              ; preds = %555, %497
  %503 = load i64, ptr %11, align 8, !tbaa !26
  %504 = load i64, ptr %9, align 8, !tbaa !26
  %505 = sub nsw i64 %504, 1
  %506 = icmp sle i64 %503, %505
  br i1 %506, label %507, label %558

507:                                              ; preds = %502
  %508 = load ptr, ptr %4, align 8, !tbaa !5
  %509 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %508, i32 0, i32 9
  %510 = load i64, ptr %509, align 8, !tbaa !41
  %511 = icmp eq i64 %510, 2
  br i1 %511, label %512, label %527

512:                                              ; preds = %507
  %513 = load ptr, ptr %4, align 8, !tbaa !5
  %514 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %513, i32 0, i32 10
  %515 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %514, i32 0, i32 4
  %516 = load ptr, ptr %515, align 8, !tbaa !25
  %517 = load i64, ptr %11, align 8, !tbaa !26
  %518 = getelementptr inbounds double, ptr %516, i64 %517
  %519 = load double, ptr %518, align 8, !tbaa !30
  %520 = fdiv double 1.000000e+00, %519
  %521 = load ptr, ptr %4, align 8, !tbaa !5
  %522 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %521, i32 0, i32 50
  %523 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %522, i32 0, i32 4
  %524 = load ptr, ptr %523, align 8, !tbaa !25
  %525 = load i64, ptr %11, align 8, !tbaa !26
  %526 = getelementptr inbounds double, ptr %524, i64 %525
  store double %520, ptr %526, align 8, !tbaa !30
  br label %555

527:                                              ; preds = %507
  %528 = load ptr, ptr %4, align 8, !tbaa !5
  %529 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %528, i32 0, i32 9
  %530 = load i64, ptr %529, align 8, !tbaa !41
  %531 = icmp eq i64 %530, 3
  br i1 %531, label %532, label %548

532:                                              ; preds = %527
  %533 = load ptr, ptr %4, align 8, !tbaa !5
  %534 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %533, i32 0, i32 8
  %535 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %534, i32 0, i32 4
  %536 = load ptr, ptr %535, align 8, !tbaa !25
  %537 = load i64, ptr %11, align 8, !tbaa !26
  %538 = getelementptr inbounds double, ptr %536, i64 %537
  %539 = load double, ptr %538, align 8, !tbaa !30
  %540 = load ptr, ptr %5, align 8, !tbaa !5
  %541 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %539, ptr noundef %540)
  %542 = load ptr, ptr %4, align 8, !tbaa !5
  %543 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %542, i32 0, i32 50
  %544 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %543, i32 0, i32 4
  %545 = load ptr, ptr %544, align 8, !tbaa !25
  %546 = load i64, ptr %11, align 8, !tbaa !26
  %547 = getelementptr inbounds double, ptr %545, i64 %546
  store double %541, ptr %547, align 8, !tbaa !30
  br label %555

548:                                              ; preds = %527
  %549 = load ptr, ptr %4, align 8, !tbaa !5
  %550 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %549, i32 0, i32 50
  %551 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %550, i32 0, i32 4
  %552 = load ptr, ptr %551, align 8, !tbaa !25
  %553 = load i64, ptr %11, align 8, !tbaa !26
  %554 = getelementptr inbounds double, ptr %552, i64 %553
  store double 1.000000e+00, ptr %554, align 8, !tbaa !30
  br label %555

555:                                              ; preds = %548, %532, %512
  %556 = load i64, ptr %11, align 8, !tbaa !26
  %557 = add nsw i64 %556, 1
  store i64 %557, ptr %11, align 8, !tbaa !26
  br label %502, !llvm.loop !42

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

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

570:                                              ; preds = %565, %558
  br label %658

571:                                              ; preds = %565
  br label %572

572:                                              ; preds = %656, %571
  %573 = load ptr, ptr %4, align 8, !tbaa !5
  %574 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %573, i32 0, i32 67
  %575 = load ptr, ptr %4, align 8, !tbaa !5
  %576 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %575, i32 0, i32 20
  %577 = load ptr, ptr %4, align 8, !tbaa !5
  %578 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %577, i32 0, i32 8
  %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 35
  %583 = load ptr, ptr %4, align 8, !tbaa !5
  %584 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %583, i32 0, i32 65
  %585 = load double, ptr %584, align 8, !tbaa !44
  %586 = load ptr, ptr %5, align 8, !tbaa !5
  %587 = call noundef zeroext i1 @_ZN11alglib_impl34smoothnessmonitorcheckgradientatx0EPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_S4_bdPNS_8ae_stateE(ptr noundef %574, ptr noundef %576, ptr noundef %578, ptr noundef %580, ptr noundef %582, i1 noundef zeroext true, double noundef %585, ptr noundef %586)
  br i1 %587, label %589, label %588

588:                                              ; preds = %572
  br label %657

589:                                              ; preds = %572
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %590

590:                                              ; preds = %610, %589
  %591 = load i64, ptr %11, align 8, !tbaa !26
  %592 = load i64, ptr %9, align 8, !tbaa !26
  %593 = sub nsw i64 %592, 1
  %594 = icmp sle i64 %591, %593
  br i1 %594, label %595, label %613

595:                                              ; preds = %590
  %596 = load ptr, ptr %4, align 8, !tbaa !5
  %597 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %596, i32 0, i32 67
  %598 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %597, i32 0, i32 50
  %599 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %598, i32 0, i32 4
  %600 = load ptr, ptr %599, align 8, !tbaa !25
  %601 = load i64, ptr %11, align 8, !tbaa !26
  %602 = getelementptr inbounds double, ptr %600, i64 %601
  %603 = load double, ptr %602, align 8, !tbaa !30
  %604 = load ptr, ptr %4, align 8, !tbaa !5
  %605 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %604, i32 0, i32 12
  %606 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %605, i32 0, i32 4
  %607 = load ptr, ptr %606, align 8, !tbaa !25
  %608 = load i64, ptr %11, align 8, !tbaa !26
  %609 = getelementptr inbounds double, ptr %607, i64 %608
  store double %603, ptr %609, align 8, !tbaa !30
  br label %610

610:                                              ; preds = %595
  %611 = load i64, ptr %11, align 8, !tbaa !26
  %612 = add nsw i64 %611, 1
  store i64 %612, ptr %11, align 8, !tbaa !26
  br label %590, !llvm.loop !45

613:                                              ; preds = %590
  %614 = load ptr, ptr %4, align 8, !tbaa !5
  %615 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %614, i32 0, i32 16
  store i8 1, ptr %615, align 1, !tbaa !46
  %616 = load ptr, ptr %4, align 8, !tbaa !5
  %617 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %616, i32 0, i32 19
  %618 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %617, i32 0, i32 0
  store i32 0, ptr %618, align 8, !tbaa !9
  br label %4617

619:                                              ; preds = %161
  %620 = load ptr, ptr %4, align 8, !tbaa !5
  %621 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %620, i32 0, i32 16
  store i8 0, ptr %621, align 1, !tbaa !46
  %622 = load ptr, ptr %4, align 8, !tbaa !5
  %623 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %622, i32 0, i32 13
  %624 = load double, ptr %623, align 8, !tbaa !47
  %625 = load ptr, ptr %4, align 8, !tbaa !5
  %626 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %625, i32 0, i32 67
  %627 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %626, i32 0, i32 51
  %628 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %627, i32 0, i32 4
  %629 = load ptr, ptr %628, align 8, !tbaa !25
  %630 = getelementptr inbounds double, ptr %629, i64 0
  store double %624, ptr %630, align 8, !tbaa !30
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %631

631:                                              ; preds = %653, %619
  %632 = load i64, ptr %11, align 8, !tbaa !26
  %633 = load i64, ptr %9, align 8, !tbaa !26
  %634 = sub nsw i64 %633, 1
  %635 = icmp sle i64 %632, %634
  br i1 %635, label %636, label %656

636:                                              ; preds = %631
  %637 = load ptr, ptr %4, align 8, !tbaa !5
  %638 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %637, i32 0, i32 14
  %639 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %638, i32 0, i32 4
  %640 = load ptr, ptr %639, align 8, !tbaa !25
  %641 = load i64, ptr %11, align 8, !tbaa !26
  %642 = getelementptr inbounds double, ptr %640, i64 %641
  %643 = load double, ptr %642, align 8, !tbaa !30
  %644 = load ptr, ptr %4, align 8, !tbaa !5
  %645 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %644, i32 0, i32 67
  %646 = getelementptr inbounds %"struct.alglib_impl::smoothnessmonitor", ptr %645, i32 0, i32 52
  %647 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %646, i32 0, i32 6
  %648 = load ptr, ptr %647, align 8, !tbaa !25
  %649 = getelementptr inbounds ptr, ptr %648, i64 0
  %650 = load ptr, ptr %649, align 8, !tbaa !5
  %651 = load i64, ptr %11, align 8, !tbaa !26
  %652 = getelementptr inbounds double, ptr %650, i64 %651
  store double %643, ptr %652, align 8, !tbaa !30
  br label %653

653:                                              ; preds = %636
  %654 = load i64, ptr %11, align 8, !tbaa !26
  %655 = add nsw i64 %654, 1
  store i64 %655, ptr %11, align 8, !tbaa !26
  br label %631, !llvm.loop !48

656:                                              ; preds = %631
  br label %572

657:                                              ; preds = %588
  br label %658

658:                                              ; preds = %657, %570
  %659 = load ptr, ptr %4, align 8, !tbaa !5
  %660 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %659, i32 0, i32 39
  store i64 0, ptr %660, align 8, !tbaa !34
  %661 = load ptr, ptr %4, align 8, !tbaa !5
  %662 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %661, i32 0, i32 31
  store double 0.000000e+00, ptr %662, align 8, !tbaa !49
  %663 = load i64, ptr %9, align 8, !tbaa !26
  %664 = sitofp i64 %663 to double
  %665 = fmul double 1.500000e+00, %664
  %666 = load ptr, ptr %5, align 8, !tbaa !5
  %667 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %665, ptr noundef %666)
  %668 = add nsw i64 %667, 5
  %669 = load ptr, ptr %4, align 8, !tbaa !5
  %670 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %669, i32 0, i32 59
  store i64 %668, ptr %670, align 8, !tbaa !50
  %671 = load ptr, ptr %4, align 8, !tbaa !5
  %672 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %671, i32 0, i32 12
  %673 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %672, i32 0, i32 4
  %674 = load ptr, ptr %673, align 8, !tbaa !25
  %675 = getelementptr inbounds double, ptr %674, i64 0
  %676 = load ptr, ptr %4, align 8, !tbaa !5
  %677 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %676, i32 0, i32 20
  %678 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %677, i32 0, i32 4
  %679 = load ptr, ptr %678, align 8, !tbaa !25
  %680 = getelementptr inbounds double, ptr %679, i64 0
  %681 = load i64, ptr %9, align 8, !tbaa !26
  %682 = sub nsw i64 %681, 1
  %683 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %682)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %675, i64 noundef 1, ptr noundef %680, i64 noundef 1, i64 noundef %683)
  %684 = load ptr, ptr %4, align 8, !tbaa !5
  %685 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef %684, ptr noundef %685)
  %686 = load ptr, ptr %4, align 8, !tbaa !5
  %687 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %686, i32 0, i32 7
  %688 = load double, ptr %687, align 8, !tbaa !43
  %689 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %688, double noundef 0.000000e+00)
  br i1 %689, label %690, label %691

690:                                              ; preds = %658
  br label %700

691:                                              ; preds = %658
  %692 = load ptr, ptr %4, align 8, !tbaa !5
  %693 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %692, i32 0, i32 16
  store i8 1, ptr %693, align 1, !tbaa !46
  %694 = load ptr, ptr %4, align 8, !tbaa !5
  %695 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %694, i32 0, i32 19
  %696 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %695, i32 0, i32 0
  store i32 1, ptr %696, align 8, !tbaa !9
  br label %4617

697:                                              ; preds = %168
  %698 = load ptr, ptr %4, align 8, !tbaa !5
  %699 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %698, i32 0, i32 16
  store i8 0, ptr %699, align 1, !tbaa !46
  br label %709

700:                                              ; preds = %690
  %701 = load ptr, ptr %4, align 8, !tbaa !5
  %702 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %701, i32 0, i32 15
  store i8 1, ptr %702, align 8, !tbaa !51
  %703 = load ptr, ptr %4, align 8, !tbaa !5
  %704 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %703, i32 0, i32 19
  %705 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %704, i32 0, i32 0
  store i32 2, ptr %705, align 8, !tbaa !9
  br label %4617

706:                                              ; preds = %175
  %707 = load ptr, ptr %4, align 8, !tbaa !5
  %708 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %707, i32 0, i32 15
  store i8 0, ptr %708, align 8, !tbaa !51
  br label %709

709:                                              ; preds = %706, %697
  %710 = load ptr, ptr %4, align 8, !tbaa !5
  %711 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %710, i32 0, i32 13
  %712 = load double, ptr %711, align 8, !tbaa !47
  %713 = load ptr, ptr %4, align 8, !tbaa !5
  %714 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %713, i32 0, i32 27
  store double %712, ptr %714, align 8, !tbaa !52
  %715 = load ptr, ptr %4, align 8, !tbaa !5
  %716 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %715, i32 0, i32 13
  %717 = load double, ptr %716, align 8, !tbaa !47
  %718 = load ptr, ptr %4, align 8, !tbaa !5
  %719 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %718, i32 0, i32 58
  %720 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11trimprepareEdPdPNS_8ae_stateE(double noundef %717, ptr noundef %719, ptr noundef %720)
  %721 = load ptr, ptr %4, align 8, !tbaa !5
  %722 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %721, i32 0, i32 37
  %723 = load i64, ptr %722, align 8, !tbaa !37
  %724 = add nsw i64 %723, 1
  %725 = load ptr, ptr %4, align 8, !tbaa !5
  %726 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %725, i32 0, i32 37
  store i64 %724, ptr %726, align 8, !tbaa !37
  %727 = load ptr, ptr %4, align 8, !tbaa !5
  %728 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %727, i32 0, i32 5
  %729 = load i8, ptr %728, align 8, !tbaa !53, !range !28, !noundef !29
  %730 = trunc i8 %729 to i1
  br i1 %730, label %732, label %731

731:                                              ; preds = %709
  br label %759

732:                                              ; preds = %709
  %733 = load ptr, ptr %4, align 8, !tbaa !5
  %734 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %733, i32 0, i32 12
  %735 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %734, i32 0, i32 4
  %736 = load ptr, ptr %735, align 8, !tbaa !25
  %737 = getelementptr inbounds double, ptr %736, i64 0
  %738 = load ptr, ptr %4, align 8, !tbaa !5
  %739 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %738, i32 0, i32 20
  %740 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %739, i32 0, i32 4
  %741 = load ptr, ptr %740, align 8, !tbaa !25
  %742 = getelementptr inbounds double, ptr %741, i64 0
  %743 = load i64, ptr %9, align 8, !tbaa !26
  %744 = sub nsw i64 %743, 1
  %745 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %744)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %737, i64 noundef 1, ptr noundef %742, i64 noundef 1, i64 noundef %745)
  %746 = load ptr, ptr %4, align 8, !tbaa !5
  %747 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %746, i32 0, i32 27
  %748 = load double, ptr %747, align 8, !tbaa !52
  %749 = load ptr, ptr %4, align 8, !tbaa !5
  %750 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %749, i32 0, i32 13
  store double %748, ptr %750, align 8, !tbaa !47
  %751 = load ptr, ptr %4, align 8, !tbaa !5
  %752 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %751, i32 0, i32 17
  store i8 1, ptr %752, align 2, !tbaa !54
  %753 = load ptr, ptr %4, align 8, !tbaa !5
  %754 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %753, i32 0, i32 19
  %755 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %754, i32 0, i32 0
  store i32 3, ptr %755, align 8, !tbaa !9
  br label %4617

756:                                              ; preds = %182
  %757 = load ptr, ptr %4, align 8, !tbaa !5
  %758 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %757, i32 0, i32 17
  store i8 0, ptr %758, align 2, !tbaa !54
  br label %759

759:                                              ; preds = %756, %731
  %760 = load ptr, ptr %4, align 8, !tbaa !5
  %761 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %760, i32 0, i32 18
  %762 = load i8, ptr %761, align 1, !tbaa !35, !range !28, !noundef !29
  %763 = trunc i8 %762 to i1
  br i1 %763, label %764, label %769

764:                                              ; preds = %759
  %765 = load ptr, ptr %4, align 8, !tbaa !5
  %766 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %765, i32 0, i32 39
  store i64 8, ptr %766, align 8, !tbaa !34
  store i8 0, ptr %23, align 1, !tbaa !27
  %767 = load i8, ptr %23, align 1, !tbaa !27, !range !28, !noundef !29
  %768 = trunc i8 %767 to i1
  store i1 %768, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4743

769:                                              ; preds = %759
  br label %770

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

790:                                              ; preds = %770
  br label %800

791:                                              ; preds = %770
  %792 = load ptr, ptr %4, align 8, !tbaa !5
  %793 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %792, i32 0, i32 16
  store i8 1, ptr %793, align 1, !tbaa !46
  %794 = load ptr, ptr %4, align 8, !tbaa !5
  %795 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %794, i32 0, i32 19
  %796 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %795, i32 0, i32 0
  store i32 4, ptr %796, align 8, !tbaa !9
  br label %4617

797:                                              ; preds = %189
  %798 = load ptr, ptr %4, align 8, !tbaa !5
  %799 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %798, i32 0, i32 16
  store i8 0, ptr %799, align 1, !tbaa !46
  br label %1233

800:                                              ; preds = %790
  %801 = load ptr, ptr %4, align 8, !tbaa !5
  %802 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %801, i32 0, i32 15
  store i8 1, ptr %802, align 8, !tbaa !51
  %803 = load ptr, ptr %4, align 8, !tbaa !5
  %804 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %803, i32 0, i32 19
  %805 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %804, i32 0, i32 0
  store i32 5, ptr %805, align 8, !tbaa !9
  br label %4617

806:                                              ; preds = %196
  %807 = load ptr, ptr %4, align 8, !tbaa !5
  %808 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %807, i32 0, i32 13
  %809 = load double, ptr %808, align 8, !tbaa !47
  %810 = load ptr, ptr %4, align 8, !tbaa !5
  %811 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %810, i32 0, i32 41
  store double %809, ptr %811, align 8, !tbaa !55
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %812

812:                                              ; preds = %1215, %806
  %813 = load i64, ptr %11, align 8, !tbaa !26
  %814 = load i64, ptr %9, align 8, !tbaa !26
  %815 = sub nsw i64 %814, 1
  %816 = icmp sgt i64 %813, %815
  br i1 %816, label %817, label %818

817:                                              ; preds = %812
  br label %1225

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

834:                                              ; preds = %818
  %835 = load i8, ptr %16, align 1, !tbaa !27, !range !28, !noundef !29
  %836 = trunc i8 %835 to i1
  br i1 %836, label %859, label %837

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

859:                                              ; preds = %837, %834
  %860 = phi i1 [ true, %834 ], [ %858, %837 ]
  %861 = zext i1 %860 to i8
  store i8 %861, ptr %16, align 1, !tbaa !27
  br label %862

862:                                              ; preds = %859, %818
  %863 = load ptr, ptr %4, align 8, !tbaa !5
  %864 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %863, i32 0, i32 33
  %865 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %864, i32 0, i32 4
  %866 = load ptr, ptr %865, align 8, !tbaa !25
  %867 = load i64, ptr %11, align 8, !tbaa !26
  %868 = getelementptr inbounds i8, ptr %866, i64 %867
  %869 = load i8, ptr %868, align 1, !tbaa !27, !range !28, !noundef !29
  %870 = trunc i8 %869 to i1
  br i1 %870, label %871, label %898

871:                                              ; preds = %862
  %872 = load i8, ptr %16, align 1, !tbaa !27, !range !28, !noundef !29
  %873 = trunc i8 %872 to i1
  br i1 %873, label %895, label %874

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

895:                                              ; preds = %874, %871
  %896 = phi i1 [ true, %871 ], [ %894, %874 ]
  %897 = zext i1 %896 to i8
  store i8 %897, ptr %16, align 1, !tbaa !27
  br label %898

898:                                              ; preds = %895, %862
  %899 = load i8, ptr %16, align 1, !tbaa !27, !range !28, !noundef !29
  %900 = trunc i8 %899 to i1
  br i1 %900, label %901, label %902

901:                                              ; preds = %898
  br label %1050

902:                                              ; preds = %898
  %903 = load double, ptr %13, align 8, !tbaa !30
  %904 = load ptr, ptr %4, align 8, !tbaa !5
  %905 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %904, i32 0, i32 7
  %906 = load double, ptr %905, align 8, !tbaa !43
  %907 = load ptr, ptr %4, align 8, !tbaa !5
  %908 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %907, i32 0, i32 8
  %909 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %908, i32 0, i32 4
  %910 = load ptr, ptr %909, align 8, !tbaa !25
  %911 = load i64, ptr %11, align 8, !tbaa !26
  %912 = getelementptr inbounds double, ptr %910, i64 %911
  %913 = load double, ptr %912, align 8, !tbaa !30
  %914 = fneg double %906
  %915 = call double @llvm.fmuladd.f64(double %914, double %913, double %903)
  %916 = load ptr, ptr %4, align 8, !tbaa !5
  %917 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %916, i32 0, i32 12
  %918 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %917, i32 0, i32 4
  %919 = load ptr, ptr %918, align 8, !tbaa !25
  %920 = load i64, ptr %11, align 8, !tbaa !26
  %921 = getelementptr inbounds double, ptr %919, i64 %920
  store double %915, ptr %921, align 8, !tbaa !30
  %922 = load ptr, ptr %4, align 8, !tbaa !5
  %923 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %922, i32 0, i32 19
  %924 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %923, i32 0, i32 0
  store i32 6, ptr %924, align 8, !tbaa !9
  br label %4617

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

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

982:                                              ; preds = %217
  %983 = load ptr, ptr %4, align 8, !tbaa !5
  %984 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %983, i32 0, i32 13
  %985 = load double, ptr %984, align 8, !tbaa !47
  %986 = load ptr, ptr %4, align 8, !tbaa !5
  %987 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %986, i32 0, i32 44
  store double %985, ptr %987, align 8, !tbaa !58
  %988 = load double, ptr %13, align 8, !tbaa !30
  %989 = load ptr, ptr %4, align 8, !tbaa !5
  %990 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %989, i32 0, i32 7
  %991 = load double, ptr %990, align 8, !tbaa !43
  %992 = load ptr, ptr %4, align 8, !tbaa !5
  %993 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %992, i32 0, i32 8
  %994 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %993, i32 0, i32 4
  %995 = load ptr, ptr %994, align 8, !tbaa !25
  %996 = load i64, ptr %11, align 8, !tbaa !26
  %997 = getelementptr inbounds double, ptr %995, i64 %996
  %998 = load double, ptr %997, align 8, !tbaa !30
  %999 = call double @llvm.fmuladd.f64(double %991, double %998, double %988)
  %1000 = load ptr, ptr %4, align 8, !tbaa !5
  %1001 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1000, i32 0, i32 12
  %1002 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1001, i32 0, i32 4
  %1003 = load ptr, ptr %1002, align 8, !tbaa !25
  %1004 = load i64, ptr %11, align 8, !tbaa !26
  %1005 = getelementptr inbounds double, ptr %1003, i64 %1004
  store double %999, ptr %1005, align 8, !tbaa !30
  %1006 = load ptr, ptr %4, align 8, !tbaa !5
  %1007 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1006, i32 0, i32 19
  %1008 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1007, i32 0, i32 0
  store i32 9, ptr %1008, align 8, !tbaa !9
  br label %4617

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

1050:                                             ; preds = %901
  %1051 = load double, ptr %13, align 8, !tbaa !30
  %1052 = load ptr, ptr %4, align 8, !tbaa !5
  %1053 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1052, i32 0, i32 7
  %1054 = load double, ptr %1053, align 8, !tbaa !43
  %1055 = load ptr, ptr %4, align 8, !tbaa !5
  %1056 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1055, i32 0, i32 8
  %1057 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1056, i32 0, i32 4
  %1058 = load ptr, ptr %1057, align 8, !tbaa !25
  %1059 = load i64, ptr %11, align 8, !tbaa !26
  %1060 = getelementptr inbounds double, ptr %1058, i64 %1059
  %1061 = load double, ptr %1060, align 8, !tbaa !30
  %1062 = fneg double %1054
  %1063 = call double @llvm.fmuladd.f64(double %1062, double %1061, double %1051)
  %1064 = load ptr, ptr %4, align 8, !tbaa !5
  %1065 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1064, i32 0, i32 46
  store double %1063, ptr %1065, align 8, !tbaa !60
  %1066 = load double, ptr %13, align 8, !tbaa !30
  %1067 = load ptr, ptr %4, align 8, !tbaa !5
  %1068 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1067, i32 0, i32 7
  %1069 = load double, ptr %1068, align 8, !tbaa !43
  %1070 = load ptr, ptr %4, align 8, !tbaa !5
  %1071 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1070, i32 0, i32 8
  %1072 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1071, i32 0, i32 4
  %1073 = load ptr, ptr %1072, align 8, !tbaa !25
  %1074 = load i64, ptr %11, align 8, !tbaa !26
  %1075 = getelementptr inbounds double, ptr %1073, i64 %1074
  %1076 = load double, ptr %1075, align 8, !tbaa !30
  %1077 = call double @llvm.fmuladd.f64(double %1069, double %1076, double %1066)
  %1078 = load ptr, ptr %4, align 8, !tbaa !5
  %1079 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1078, i32 0, i32 47
  store double %1077, ptr %1079, align 8, !tbaa !61
  %1080 = load ptr, ptr %4, align 8, !tbaa !5
  %1081 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1080, i32 0, i32 32
  %1082 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1081, i32 0, i32 4
  %1083 = load ptr, ptr %1082, align 8, !tbaa !25
  %1084 = load i64, ptr %11, align 8, !tbaa !26
  %1085 = getelementptr inbounds i8, ptr %1083, i64 %1084
  %1086 = load i8, ptr %1085, align 1, !tbaa !27, !range !28, !noundef !29
  %1087 = trunc i8 %1086 to i1
  br i1 %1087, label %1088, label %1110

1088:                                             ; preds = %1050
  %1089 = load ptr, ptr %4, align 8, !tbaa !5
  %1090 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1089, i32 0, i32 46
  %1091 = load double, ptr %1090, align 8, !tbaa !60
  %1092 = load ptr, ptr %4, align 8, !tbaa !5
  %1093 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1092, i32 0, i32 34
  %1094 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1093, i32 0, i32 4
  %1095 = load ptr, ptr %1094, align 8, !tbaa !25
  %1096 = load i64, ptr %11, align 8, !tbaa !26
  %1097 = getelementptr inbounds double, ptr %1095, i64 %1096
  %1098 = load double, ptr %1097, align 8, !tbaa !30
  %1099 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1091, double noundef %1098)
  br i1 %1099, label %1100, label %1110

1100:                                             ; preds = %1088
  %1101 = load ptr, ptr %4, align 8, !tbaa !5
  %1102 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1101, i32 0, i32 34
  %1103 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1102, i32 0, i32 4
  %1104 = load ptr, ptr %1103, align 8, !tbaa !25
  %1105 = load i64, ptr %11, align 8, !tbaa !26
  %1106 = getelementptr inbounds double, ptr %1104, i64 %1105
  %1107 = load double, ptr %1106, align 8, !tbaa !30
  %1108 = load ptr, ptr %4, align 8, !tbaa !5
  %1109 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1108, i32 0, i32 46
  store double %1107, ptr %1109, align 8, !tbaa !60
  br label %1110

1110:                                             ; preds = %1100, %1088, %1050
  %1111 = load ptr, ptr %4, align 8, !tbaa !5
  %1112 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1111, i32 0, i32 33
  %1113 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1112, i32 0, i32 4
  %1114 = load ptr, ptr %1113, align 8, !tbaa !25
  %1115 = load i64, ptr %11, align 8, !tbaa !26
  %1116 = getelementptr inbounds i8, ptr %1114, i64 %1115
  %1117 = load i8, ptr %1116, align 1, !tbaa !27, !range !28, !noundef !29
  %1118 = trunc i8 %1117 to i1
  br i1 %1118, label %1119, label %1141

1119:                                             ; preds = %1110
  %1120 = load ptr, ptr %4, align 8, !tbaa !5
  %1121 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1120, i32 0, i32 47
  %1122 = load double, ptr %1121, align 8, !tbaa !61
  %1123 = load ptr, ptr %4, align 8, !tbaa !5
  %1124 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1123, i32 0, i32 35
  %1125 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1124, i32 0, i32 4
  %1126 = load ptr, ptr %1125, align 8, !tbaa !25
  %1127 = load i64, ptr %11, align 8, !tbaa !26
  %1128 = getelementptr inbounds double, ptr %1126, i64 %1127
  %1129 = load double, ptr %1128, align 8, !tbaa !30
  %1130 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1122, double noundef %1129)
  br i1 %1130, label %1131, label %1141

1131:                                             ; preds = %1119
  %1132 = load ptr, ptr %4, align 8, !tbaa !5
  %1133 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1132, i32 0, i32 35
  %1134 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1133, i32 0, i32 4
  %1135 = load ptr, ptr %1134, align 8, !tbaa !25
  %1136 = load i64, ptr %11, align 8, !tbaa !26
  %1137 = getelementptr inbounds double, ptr %1135, i64 %1136
  %1138 = load double, ptr %1137, align 8, !tbaa !30
  %1139 = load ptr, ptr %4, align 8, !tbaa !5
  %1140 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1139, i32 0, i32 47
  store double %1138, ptr %1140, align 8, !tbaa !61
  br label %1141

1141:                                             ; preds = %1131, %1119, %1110
  %1142 = load ptr, ptr %4, align 8, !tbaa !5
  %1143 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1142, i32 0, i32 46
  %1144 = load double, ptr %1143, align 8, !tbaa !60
  %1145 = load ptr, ptr %4, align 8, !tbaa !5
  %1146 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1145, i32 0, i32 12
  %1147 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1146, i32 0, i32 4
  %1148 = load ptr, ptr %1147, align 8, !tbaa !25
  %1149 = load i64, ptr %11, align 8, !tbaa !26
  %1150 = getelementptr inbounds double, ptr %1148, i64 %1149
  store double %1144, ptr %1150, align 8, !tbaa !30
  %1151 = load ptr, ptr %4, align 8, !tbaa !5
  %1152 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1151, i32 0, i32 19
  %1153 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1152, i32 0, i32 0
  store i32 10, ptr %1153, align 8, !tbaa !9
  br label %4617

1154:                                             ; preds = %231
  %1155 = load ptr, ptr %4, align 8, !tbaa !5
  %1156 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1155, i32 0, i32 13
  %1157 = load double, ptr %1156, align 8, !tbaa !47
  %1158 = load ptr, ptr %4, align 8, !tbaa !5
  %1159 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1158, i32 0, i32 43
  store double %1157, ptr %1159, align 8, !tbaa !57
  %1160 = load ptr, ptr %4, align 8, !tbaa !5
  %1161 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1160, i32 0, i32 47
  %1162 = load double, ptr %1161, align 8, !tbaa !61
  %1163 = load ptr, ptr %4, align 8, !tbaa !5
  %1164 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1163, i32 0, i32 12
  %1165 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1164, i32 0, i32 4
  %1166 = load ptr, ptr %1165, align 8, !tbaa !25
  %1167 = load i64, ptr %11, align 8, !tbaa !26
  %1168 = getelementptr inbounds double, ptr %1166, i64 %1167
  store double %1162, ptr %1168, align 8, !tbaa !30
  %1169 = load ptr, ptr %4, align 8, !tbaa !5
  %1170 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1169, i32 0, i32 19
  %1171 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1170, i32 0, i32 0
  store i32 11, ptr %1171, align 8, !tbaa !9
  br label %4617

1172:                                             ; preds = %238
  %1173 = load ptr, ptr %4, align 8, !tbaa !5
  %1174 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1173, i32 0, i32 13
  %1175 = load double, ptr %1174, align 8, !tbaa !47
  %1176 = load ptr, ptr %4, align 8, !tbaa !5
  %1177 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1176, i32 0, i32 44
  store double %1175, ptr %1177, align 8, !tbaa !58
  %1178 = load ptr, ptr %4, align 8, !tbaa !5
  %1179 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1178, i32 0, i32 46
  %1180 = load double, ptr %1179, align 8, !tbaa !60
  %1181 = load ptr, ptr %4, align 8, !tbaa !5
  %1182 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1181, i32 0, i32 47
  %1183 = load double, ptr %1182, align 8, !tbaa !61
  %1184 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1180, double noundef %1183)
  br i1 %1184, label %1185, label %1207

1185:                                             ; preds = %1172
  %1186 = load ptr, ptr %4, align 8, !tbaa !5
  %1187 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1186, i32 0, i32 44
  %1188 = load double, ptr %1187, align 8, !tbaa !58
  %1189 = load ptr, ptr %4, align 8, !tbaa !5
  %1190 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1189, i32 0, i32 43
  %1191 = load double, ptr %1190, align 8, !tbaa !57
  %1192 = fsub double %1188, %1191
  %1193 = load ptr, ptr %4, align 8, !tbaa !5
  %1194 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1193, i32 0, i32 47
  %1195 = load double, ptr %1194, align 8, !tbaa !61
  %1196 = load ptr, ptr %4, align 8, !tbaa !5
  %1197 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1196, i32 0, i32 46
  %1198 = load double, ptr %1197, align 8, !tbaa !60
  %1199 = fsub double %1195, %1198
  %1200 = fdiv double %1192, %1199
  %1201 = load ptr, ptr %4, align 8, !tbaa !5
  %1202 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1201, i32 0, i32 14
  %1203 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1202, i32 0, i32 4
  %1204 = load ptr, ptr %1203, align 8, !tbaa !25
  %1205 = load i64, ptr %11, align 8, !tbaa !26
  %1206 = getelementptr inbounds double, ptr %1204, i64 %1205
  store double %1200, ptr %1206, align 8, !tbaa !30
  br label %1214

1207:                                             ; preds = %1172
  %1208 = load ptr, ptr %4, align 8, !tbaa !5
  %1209 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1208, i32 0, i32 14
  %1210 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1209, i32 0, i32 4
  %1211 = load ptr, ptr %1210, align 8, !tbaa !25
  %1212 = load i64, ptr %11, align 8, !tbaa !26
  %1213 = getelementptr inbounds double, ptr %1211, i64 %1212
  store double 0.000000e+00, ptr %1213, align 8, !tbaa !30
  br label %1214

1214:                                             ; preds = %1207, %1185
  br label %1215

1215:                                             ; preds = %1214, %1009
  %1216 = load double, ptr %13, align 8, !tbaa !30
  %1217 = load ptr, ptr %4, align 8, !tbaa !5
  %1218 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1217, i32 0, i32 12
  %1219 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1218, i32 0, i32 4
  %1220 = load ptr, ptr %1219, align 8, !tbaa !25
  %1221 = load i64, ptr %11, align 8, !tbaa !26
  %1222 = getelementptr inbounds double, ptr %1220, i64 %1221
  store double %1216, ptr %1222, align 8, !tbaa !30
  %1223 = load i64, ptr %11, align 8, !tbaa !26
  %1224 = add nsw i64 %1223, 1
  store i64 %1224, ptr %11, align 8, !tbaa !26
  br label %812

1225:                                             ; preds = %817
  %1226 = load ptr, ptr %4, align 8, !tbaa !5
  %1227 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1226, i32 0, i32 41
  %1228 = load double, ptr %1227, align 8, !tbaa !55
  %1229 = load ptr, ptr %4, align 8, !tbaa !5
  %1230 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1229, i32 0, i32 13
  store double %1228, ptr %1230, align 8, !tbaa !47
  %1231 = load ptr, ptr %4, align 8, !tbaa !5
  %1232 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1231, i32 0, i32 15
  store i8 0, ptr %1232, align 8, !tbaa !51
  br label %1233

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

1279:                                             ; preds = %1304, %1233
  %1280 = load i64, ptr %11, align 8, !tbaa !26
  %1281 = load i64, ptr %9, align 8, !tbaa !26
  %1282 = sub nsw i64 %1281, 1
  %1283 = icmp sle i64 %1280, %1282
  br i1 %1283, label %1284, label %1307

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

1304:                                             ; preds = %1284
  %1305 = load i64, ptr %11, align 8, !tbaa !26
  %1306 = add nsw i64 %1305, 1
  store i64 %1306, ptr %11, align 8, !tbaa !26
  br label %1279, !llvm.loop !62

1307:                                             ; preds = %1279
  %1308 = load double, ptr %19, align 8, !tbaa !30
  %1309 = load ptr, ptr %5, align 8, !tbaa !5
  %1310 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1308, ptr noundef %1309)
  store double %1310, ptr %19, align 8, !tbaa !30
  %1311 = load double, ptr %19, align 8, !tbaa !30
  %1312 = load ptr, ptr %5, align 8, !tbaa !5
  %1313 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1311, ptr noundef %1312)
  br i1 %1313, label %1314, label %1320

1314:                                             ; preds = %1307
  %1315 = load ptr, ptr %4, align 8, !tbaa !5
  %1316 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1315, i32 0, i32 27
  %1317 = load double, ptr %1316, align 8, !tbaa !52
  %1318 = load ptr, ptr %5, align 8, !tbaa !5
  %1319 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %1317, ptr noundef %1318)
  br i1 %1319, label %1325, label %1320

1320:                                             ; preds = %1314, %1307
  %1321 = load ptr, ptr %4, align 8, !tbaa !5
  %1322 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1321, i32 0, i32 39
  store i64 -8, ptr %1322, align 8, !tbaa !34
  store i8 0, ptr %23, align 1, !tbaa !27
  %1323 = load i8, ptr %23, align 1, !tbaa !27, !range !28, !noundef !29
  %1324 = trunc i8 %1323 to i1
  store i1 %1324, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4743

1325:                                             ; preds = %1314
  %1326 = load ptr, ptr %4, align 8, !tbaa !5
  %1327 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1326, i32 0, i32 18
  %1328 = load i8, ptr %1327, align 1, !tbaa !35, !range !28, !noundef !29
  %1329 = trunc i8 %1328 to i1
  br i1 %1329, label %1330, label %1335

1330:                                             ; preds = %1325
  %1331 = load ptr, ptr %4, align 8, !tbaa !5
  %1332 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1331, i32 0, i32 39
  store i64 8, ptr %1332, align 8, !tbaa !34
  store i8 0, ptr %23, align 1, !tbaa !27
  %1333 = load i8, ptr %23, align 1, !tbaa !27, !range !28, !noundef !29
  %1334 = trunc i8 %1333 to i1
  store i1 %1334, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4743

1335:                                             ; preds = %1325
  %1336 = load double, ptr %19, align 8, !tbaa !30
  %1337 = load ptr, ptr %4, align 8, !tbaa !5
  %1338 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1337, i32 0, i32 1
  %1339 = load double, ptr %1338, align 8, !tbaa !63
  %1340 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1336, double noundef %1339)
  br i1 %1340, label %1341, label %1346

1341:                                             ; preds = %1335
  %1342 = load ptr, ptr %4, align 8, !tbaa !5
  %1343 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1342, i32 0, i32 39
  store i64 4, ptr %1343, align 8, !tbaa !34
  store i8 0, ptr %23, align 1, !tbaa !27
  %1344 = load i8, ptr %23, align 1, !tbaa !27, !range !28, !noundef !29
  %1345 = trunc i8 %1344 to i1
  store i1 %1345, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4743

1346:                                             ; preds = %1335
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %1347

1347:                                             ; preds = %1375, %1346
  %1348 = load i64, ptr %11, align 8, !tbaa !26
  %1349 = load i64, ptr %9, align 8, !tbaa !26
  %1350 = sub nsw i64 %1349, 1
  %1351 = icmp sle i64 %1348, %1350
  br i1 %1351, label %1352, label %1378

1352:                                             ; preds = %1347
  %1353 = load ptr, ptr %4, align 8, !tbaa !5
  %1354 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1353, i32 0, i32 50
  %1355 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1354, i32 0, i32 4
  %1356 = load ptr, ptr %1355, align 8, !tbaa !25
  %1357 = load i64, ptr %11, align 8, !tbaa !26
  %1358 = getelementptr inbounds double, ptr %1356, i64 %1357
  %1359 = load double, ptr %1358, align 8, !tbaa !30
  %1360 = fneg double %1359
  %1361 = load ptr, ptr %4, align 8, !tbaa !5
  %1362 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1361, i32 0, i32 22
  %1363 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1362, i32 0, i32 4
  %1364 = load ptr, ptr %1363, align 8, !tbaa !25
  %1365 = load i64, ptr %11, align 8, !tbaa !26
  %1366 = getelementptr inbounds double, ptr %1364, i64 %1365
  %1367 = load double, ptr %1366, align 8, !tbaa !30
  %1368 = fmul double %1360, %1367
  %1369 = load ptr, ptr %4, align 8, !tbaa !5
  %1370 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1369, i32 0, i32 30
  %1371 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1370, i32 0, i32 4
  %1372 = load ptr, ptr %1371, align 8, !tbaa !25
  %1373 = load i64, ptr %11, align 8, !tbaa !26
  %1374 = getelementptr inbounds double, ptr %1372, i64 %1373
  store double %1368, ptr %1374, align 8, !tbaa !30
  br label %1375

1375:                                             ; preds = %1352
  %1376 = load i64, ptr %11, align 8, !tbaa !26
  %1377 = add nsw i64 %1376, 1
  store i64 %1377, ptr %11, align 8, !tbaa !26
  br label %1347, !llvm.loop !64

1378:                                             ; preds = %1347
  store double 0.000000e+00, ptr %8, align 8, !tbaa !30
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %1379

1379:                                             ; preds = %1404, %1378
  %1380 = load i64, ptr %11, align 8, !tbaa !26
  %1381 = load i64, ptr %9, align 8, !tbaa !26
  %1382 = sub nsw i64 %1381, 1
  %1383 = icmp sle i64 %1380, %1382
  br i1 %1383, label %1384, label %1407

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

1404:                                             ; preds = %1384
  %1405 = load i64, ptr %11, align 8, !tbaa !26
  %1406 = add nsw i64 %1405, 1
  store i64 %1406, ptr %11, align 8, !tbaa !26
  br label %1379, !llvm.loop !65

1407:                                             ; preds = %1379
  %1408 = load double, ptr %8, align 8, !tbaa !30
  %1409 = load ptr, ptr %5, align 8, !tbaa !5
  %1410 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1408, ptr noundef %1409)
  store double %1410, ptr %8, align 8, !tbaa !30
  %1411 = load double, ptr %8, align 8, !tbaa !30
  %1412 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1411, double noundef 0.000000e+00)
  %1413 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1412, ptr noundef @.str.1814, ptr noundef %1413)
  %1414 = load ptr, ptr %4, align 8, !tbaa !5
  %1415 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1414, i32 0, i32 31
  %1416 = load double, ptr %1415, align 8, !tbaa !49
  %1417 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1416, double noundef 0.000000e+00)
  br i1 %1417, label %1418, label %1426

1418:                                             ; preds = %1407
  %1419 = load ptr, ptr %4, align 8, !tbaa !5
  %1420 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1419, i32 0, i32 31
  %1421 = load double, ptr %1420, align 8, !tbaa !49
  %1422 = load double, ptr %8, align 8, !tbaa !30
  %1423 = fdiv double %1421, %1422
  %1424 = load ptr, ptr %4, align 8, !tbaa !5
  %1425 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1424, i32 0, i32 54
  store double %1423, ptr %1425, align 8, !tbaa !66
  br label %1431

1426:                                             ; preds = %1407
  %1427 = load double, ptr %8, align 8, !tbaa !30
  %1428 = fdiv double 1.000000e+00, %1427
  %1429 = load ptr, ptr %4, align 8, !tbaa !5
  %1430 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1429, i32 0, i32 54
  store double %1428, ptr %1430, align 8, !tbaa !66
  br label %1431

1431:                                             ; preds = %1426, %1418
  %1432 = load ptr, ptr %4, align 8, !tbaa !5
  %1433 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1432, i32 0, i32 20
  %1434 = load ptr, ptr %4, align 8, !tbaa !5
  %1435 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1434, i32 0, i32 30
  %1436 = load ptr, ptr %4, align 8, !tbaa !5
  %1437 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1436, i32 0, i32 34
  %1438 = load ptr, ptr %4, align 8, !tbaa !5
  %1439 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1438, i32 0, i32 32
  %1440 = load ptr, ptr %4, align 8, !tbaa !5
  %1441 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1440, i32 0, i32 35
  %1442 = load ptr, ptr %4, align 8, !tbaa !5
  %1443 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1442, i32 0, i32 33
  %1444 = load i64, ptr %9, align 8, !tbaa !26
  %1445 = load ptr, ptr %4, align 8, !tbaa !5
  %1446 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1445, i32 0, i32 55
  %1447 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl18calculatestepboundEPKNS_9ae_vectorES2_dS2_S2_S2_S2_llPlPdS4_PNS_8ae_stateE(ptr noundef %1433, ptr noundef %1435, double noundef 1.000000e+00, ptr noundef %1437, ptr noundef %1439, ptr noundef %1441, ptr noundef %1443, i64 noundef %1444, i64 noundef 0, ptr noundef %6, ptr noundef %7, ptr noundef %1446, ptr noundef %1447)
  %1448 = load ptr, ptr %4, align 8, !tbaa !5
  %1449 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1448, i32 0, i32 55
  %1450 = load double, ptr %1449, align 8, !tbaa !67
  store double %1450, ptr %22, align 8, !tbaa !30
  %1451 = load i64, ptr %6, align 8, !tbaa !26
  %1452 = icmp slt i64 %1451, 0
  br i1 %1452, label %1458, label %1453

1453:                                             ; preds = %1431
  %1454 = load ptr, ptr %4, align 8, !tbaa !5
  %1455 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1454, i32 0, i32 55
  %1456 = load double, ptr %1455, align 8, !tbaa !67
  %1457 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1456, double noundef 1.000000e+50)
  br i1 %1457, label %1458, label %1461

1458:                                             ; preds = %1453, %1431
  %1459 = load ptr, ptr %4, align 8, !tbaa !5
  %1460 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1459, i32 0, i32 55
  store double 1.000000e+50, ptr %1460, align 8, !tbaa !67
  br label %1461

1461:                                             ; preds = %1458, %1453
  %1462 = load ptr, ptr %4, align 8, !tbaa !5
  %1463 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1462, i32 0, i32 6
  %1464 = load double, ptr %1463, align 8, !tbaa !68
  %1465 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1464, double noundef 0.000000e+00)
  br i1 %1465, label %1466, label %1479

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

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

1567:                                             ; preds = %2227, %1479
  %1568 = load ptr, ptr %4, align 8, !tbaa !5
  %1569 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1568, i32 0, i32 53
  %1570 = load i64, ptr %1569, align 8, !tbaa !70
  %1571 = icmp eq i64 %1570, 0
  br i1 %1571, label %1572, label %1573

1572:                                             ; preds = %1567
  br label %2252

1573:                                             ; preds = %1567
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %1574

1574:                                             ; preds = %1671, %1573
  %1575 = load i64, ptr %11, align 8, !tbaa !26
  %1576 = load i64, ptr %9, align 8, !tbaa !26
  %1577 = sub nsw i64 %1576, 1
  %1578 = icmp sle i64 %1575, %1577
  br i1 %1578, label %1579, label %1674

1579:                                             ; preds = %1574
  %1580 = load ptr, ptr %4, align 8, !tbaa !5
  %1581 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1580, i32 0, i32 23
  %1582 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1581, i32 0, i32 4
  %1583 = load ptr, ptr %1582, align 8, !tbaa !25
  %1584 = load i64, ptr %11, align 8, !tbaa !26
  %1585 = getelementptr inbounds double, ptr %1583, i64 %1584
  %1586 = load double, ptr %1585, align 8, !tbaa !30
  %1587 = load ptr, ptr %4, align 8, !tbaa !5
  %1588 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1587, i32 0, i32 12
  %1589 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1588, i32 0, i32 4
  %1590 = load ptr, ptr %1589, align 8, !tbaa !25
  %1591 = load i64, ptr %11, align 8, !tbaa !26
  %1592 = getelementptr inbounds double, ptr %1590, i64 %1591
  store double %1586, ptr %1592, align 8, !tbaa !30
  %1593 = load ptr, ptr %4, align 8, !tbaa !5
  %1594 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1593, i32 0, i32 32
  %1595 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1594, i32 0, i32 4
  %1596 = load ptr, ptr %1595, align 8, !tbaa !25
  %1597 = load i64, ptr %11, align 8, !tbaa !26
  %1598 = getelementptr inbounds i8, ptr %1596, i64 %1597
  %1599 = load i8, ptr %1598, align 1, !tbaa !27, !range !28, !noundef !29
  %1600 = trunc i8 %1599 to i1
  br i1 %1600, label %1601, label %1631

1601:                                             ; preds = %1579
  %1602 = load ptr, ptr %4, align 8, !tbaa !5
  %1603 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1602, i32 0, i32 23
  %1604 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1603, i32 0, i32 4
  %1605 = load ptr, ptr %1604, align 8, !tbaa !25
  %1606 = load i64, ptr %11, align 8, !tbaa !26
  %1607 = getelementptr inbounds double, ptr %1605, i64 %1606
  %1608 = load double, ptr %1607, align 8, !tbaa !30
  %1609 = load ptr, ptr %4, align 8, !tbaa !5
  %1610 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1609, i32 0, i32 34
  %1611 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1610, i32 0, i32 4
  %1612 = load ptr, ptr %1611, align 8, !tbaa !25
  %1613 = load i64, ptr %11, align 8, !tbaa !26
  %1614 = getelementptr inbounds double, ptr %1612, i64 %1613
  %1615 = load double, ptr %1614, align 8, !tbaa !30
  %1616 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1608, double noundef %1615)
  br i1 %1616, label %1617, label %1631

1617:                                             ; preds = %1601
  %1618 = load ptr, ptr %4, align 8, !tbaa !5
  %1619 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1618, i32 0, i32 34
  %1620 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1619, i32 0, i32 4
  %1621 = load ptr, ptr %1620, align 8, !tbaa !25
  %1622 = load i64, ptr %11, align 8, !tbaa !26
  %1623 = getelementptr inbounds double, ptr %1621, i64 %1622
  %1624 = load double, ptr %1623, align 8, !tbaa !30
  %1625 = load ptr, ptr %4, align 8, !tbaa !5
  %1626 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1625, i32 0, i32 12
  %1627 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1626, i32 0, i32 4
  %1628 = load ptr, ptr %1627, align 8, !tbaa !25
  %1629 = load i64, ptr %11, align 8, !tbaa !26
  %1630 = getelementptr inbounds double, ptr %1628, i64 %1629
  store double %1624, ptr %1630, align 8, !tbaa !30
  br label %1631

1631:                                             ; preds = %1617, %1601, %1579
  %1632 = load ptr, ptr %4, align 8, !tbaa !5
  %1633 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1632, i32 0, i32 33
  %1634 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1633, i32 0, i32 4
  %1635 = load ptr, ptr %1634, align 8, !tbaa !25
  %1636 = load i64, ptr %11, align 8, !tbaa !26
  %1637 = getelementptr inbounds i8, ptr %1635, i64 %1636
  %1638 = load i8, ptr %1637, align 1, !tbaa !27, !range !28, !noundef !29
  %1639 = trunc i8 %1638 to i1
  br i1 %1639, label %1640, label %1670

1640:                                             ; preds = %1631
  %1641 = load ptr, ptr %4, align 8, !tbaa !5
  %1642 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1641, i32 0, i32 23
  %1643 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1642, i32 0, i32 4
  %1644 = load ptr, ptr %1643, align 8, !tbaa !25
  %1645 = load i64, ptr %11, align 8, !tbaa !26
  %1646 = getelementptr inbounds double, ptr %1644, i64 %1645
  %1647 = load double, ptr %1646, align 8, !tbaa !30
  %1648 = load ptr, ptr %4, align 8, !tbaa !5
  %1649 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1648, i32 0, i32 35
  %1650 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1649, i32 0, i32 4
  %1651 = load ptr, ptr %1650, align 8, !tbaa !25
  %1652 = load i64, ptr %11, align 8, !tbaa !26
  %1653 = getelementptr inbounds double, ptr %1651, i64 %1652
  %1654 = load double, ptr %1653, align 8, !tbaa !30
  %1655 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1647, double noundef %1654)
  br i1 %1655, label %1656, label %1670

1656:                                             ; preds = %1640
  %1657 = load ptr, ptr %4, align 8, !tbaa !5
  %1658 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1657, i32 0, i32 35
  %1659 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1658, i32 0, i32 4
  %1660 = load ptr, ptr %1659, align 8, !tbaa !25
  %1661 = load i64, ptr %11, align 8, !tbaa !26
  %1662 = getelementptr inbounds double, ptr %1660, i64 %1661
  %1663 = load double, ptr %1662, align 8, !tbaa !30
  %1664 = load ptr, ptr %4, align 8, !tbaa !5
  %1665 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1664, i32 0, i32 12
  %1666 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1665, i32 0, i32 4
  %1667 = load ptr, ptr %1666, align 8, !tbaa !25
  %1668 = load i64, ptr %11, align 8, !tbaa !26
  %1669 = getelementptr inbounds double, ptr %1667, i64 %1668
  store double %1663, ptr %1669, align 8, !tbaa !30
  br label %1670

1670:                                             ; preds = %1656, %1640, %1631
  br label %1671

1671:                                             ; preds = %1670
  %1672 = load i64, ptr %11, align 8, !tbaa !26
  %1673 = add nsw i64 %1672, 1
  store i64 %1673, ptr %11, align 8, !tbaa !26
  br label %1574, !llvm.loop !71

1674:                                             ; preds = %1574
  %1675 = load ptr, ptr %4, align 8, !tbaa !5
  %1676 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef %1675, ptr noundef %1676)
  %1677 = load ptr, ptr %4, align 8, !tbaa !5
  %1678 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1677, i32 0, i32 7
  %1679 = load double, ptr %1678, align 8, !tbaa !43
  %1680 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1679, double noundef 0.000000e+00)
  br i1 %1680, label %1681, label %1682

1681:                                             ; preds = %1674
  br label %1697

1682:                                             ; preds = %1674
  %1683 = load ptr, ptr %4, align 8, !tbaa !5
  %1684 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1683, i32 0, i32 16
  store i8 1, ptr %1684, align 1, !tbaa !46
  %1685 = load ptr, ptr %4, align 8, !tbaa !5
  %1686 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1685, i32 0, i32 19
  %1687 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1686, i32 0, i32 0
  store i32 12, ptr %1687, align 8, !tbaa !9
  br label %4617

1688:                                             ; preds = %245
  %1689 = load ptr, ptr %4, align 8, !tbaa !5
  %1690 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1689, i32 0, i32 16
  store i8 0, ptr %1690, align 1, !tbaa !46
  %1691 = load ptr, ptr %4, align 8, !tbaa !5
  %1692 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1691, i32 0, i32 37
  %1693 = load i64, ptr %1692, align 8, !tbaa !37
  %1694 = add nsw i64 %1693, 1
  %1695 = load ptr, ptr %4, align 8, !tbaa !5
  %1696 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1695, i32 0, i32 37
  store i64 %1694, ptr %1696, align 8, !tbaa !37
  br label %2142

1697:                                             ; preds = %1681
  %1698 = load ptr, ptr %4, align 8, !tbaa !5
  %1699 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1698, i32 0, i32 15
  store i8 1, ptr %1699, align 8, !tbaa !51
  %1700 = load ptr, ptr %4, align 8, !tbaa !5
  %1701 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1700, i32 0, i32 19
  %1702 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1701, i32 0, i32 0
  store i32 13, ptr %1702, align 8, !tbaa !9
  br label %4617

1703:                                             ; preds = %252
  %1704 = load ptr, ptr %4, align 8, !tbaa !5
  %1705 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1704, i32 0, i32 13
  %1706 = load double, ptr %1705, align 8, !tbaa !47
  %1707 = load ptr, ptr %4, align 8, !tbaa !5
  %1708 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1707, i32 0, i32 41
  store double %1706, ptr %1708, align 8, !tbaa !55
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %1709

1709:                                             ; preds = %2124, %1703
  %1710 = load i64, ptr %11, align 8, !tbaa !26
  %1711 = load i64, ptr %9, align 8, !tbaa !26
  %1712 = sub nsw i64 %1711, 1
  %1713 = icmp sgt i64 %1710, %1712
  br i1 %1713, label %1714, label %1715

1714:                                             ; preds = %1709
  br label %2134

1715:                                             ; preds = %1709
  %1716 = load ptr, ptr %4, align 8, !tbaa !5
  %1717 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1716, i32 0, i32 12
  %1718 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1717, i32 0, i32 4
  %1719 = load ptr, ptr %1718, align 8, !tbaa !25
  %1720 = load i64, ptr %11, align 8, !tbaa !26
  %1721 = getelementptr inbounds double, ptr %1719, i64 %1720
  %1722 = load double, ptr %1721, align 8, !tbaa !30
  store double %1722, ptr %13, align 8, !tbaa !30
  store i8 0, ptr %16, align 1, !tbaa !27
  %1723 = load ptr, ptr %4, align 8, !tbaa !5
  %1724 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1723, i32 0, i32 32
  %1725 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1724, i32 0, i32 4
  %1726 = load ptr, ptr %1725, align 8, !tbaa !25
  %1727 = load i64, ptr %11, align 8, !tbaa !26
  %1728 = getelementptr inbounds i8, ptr %1726, i64 %1727
  %1729 = load i8, ptr %1728, align 1, !tbaa !27, !range !28, !noundef !29
  %1730 = trunc i8 %1729 to i1
  br i1 %1730, label %1731, label %1759

1731:                                             ; preds = %1715
  %1732 = load i8, ptr %16, align 1, !tbaa !27, !range !28, !noundef !29
  %1733 = trunc i8 %1732 to i1
  br i1 %1733, label %1756, label %1734

1734:                                             ; preds = %1731
  %1735 = load double, ptr %13, align 8, !tbaa !30
  %1736 = load ptr, ptr %4, align 8, !tbaa !5
  %1737 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1736, i32 0, i32 7
  %1738 = load double, ptr %1737, align 8, !tbaa !43
  %1739 = load ptr, ptr %4, align 8, !tbaa !5
  %1740 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1739, i32 0, i32 8
  %1741 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1740, i32 0, i32 4
  %1742 = load ptr, ptr %1741, align 8, !tbaa !25
  %1743 = load i64, ptr %11, align 8, !tbaa !26
  %1744 = getelementptr inbounds double, ptr %1742, i64 %1743
  %1745 = load double, ptr %1744, align 8, !tbaa !30
  %1746 = fneg double %1738
  %1747 = call double @llvm.fmuladd.f64(double %1746, double %1745, double %1735)
  %1748 = load ptr, ptr %4, align 8, !tbaa !5
  %1749 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1748, i32 0, i32 34
  %1750 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1749, i32 0, i32 4
  %1751 = load ptr, ptr %1750, align 8, !tbaa !25
  %1752 = load i64, ptr %11, align 8, !tbaa !26
  %1753 = getelementptr inbounds double, ptr %1751, i64 %1752
  %1754 = load double, ptr %1753, align 8, !tbaa !30
  %1755 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1747, double noundef %1754)
  br label %1756

1756:                                             ; preds = %1734, %1731
  %1757 = phi i1 [ true, %1731 ], [ %1755, %1734 ]
  %1758 = zext i1 %1757 to i8
  store i8 %1758, ptr %16, align 1, !tbaa !27
  br label %1759

1759:                                             ; preds = %1756, %1715
  %1760 = load ptr, ptr %4, align 8, !tbaa !5
  %1761 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1760, i32 0, i32 33
  %1762 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1761, i32 0, i32 4
  %1763 = load ptr, ptr %1762, align 8, !tbaa !25
  %1764 = load i64, ptr %11, align 8, !tbaa !26
  %1765 = getelementptr inbounds i8, ptr %1763, i64 %1764
  %1766 = load i8, ptr %1765, align 1, !tbaa !27, !range !28, !noundef !29
  %1767 = trunc i8 %1766 to i1
  br i1 %1767, label %1768, label %1795

1768:                                             ; preds = %1759
  %1769 = load i8, ptr %16, align 1, !tbaa !27, !range !28, !noundef !29
  %1770 = trunc i8 %1769 to i1
  br i1 %1770, label %1792, label %1771

1771:                                             ; preds = %1768
  %1772 = load double, ptr %13, align 8, !tbaa !30
  %1773 = load ptr, ptr %4, align 8, !tbaa !5
  %1774 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1773, i32 0, i32 7
  %1775 = load double, ptr %1774, align 8, !tbaa !43
  %1776 = load ptr, ptr %4, align 8, !tbaa !5
  %1777 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1776, i32 0, i32 8
  %1778 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1777, i32 0, i32 4
  %1779 = load ptr, ptr %1778, align 8, !tbaa !25
  %1780 = load i64, ptr %11, align 8, !tbaa !26
  %1781 = getelementptr inbounds double, ptr %1779, i64 %1780
  %1782 = load double, ptr %1781, align 8, !tbaa !30
  %1783 = call double @llvm.fmuladd.f64(double %1775, double %1782, double %1772)
  %1784 = load ptr, ptr %4, align 8, !tbaa !5
  %1785 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1784, i32 0, i32 35
  %1786 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1785, i32 0, i32 4
  %1787 = load ptr, ptr %1786, align 8, !tbaa !25
  %1788 = load i64, ptr %11, align 8, !tbaa !26
  %1789 = getelementptr inbounds double, ptr %1787, i64 %1788
  %1790 = load double, ptr %1789, align 8, !tbaa !30
  %1791 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1783, double noundef %1790)
  br label %1792

1792:                                             ; preds = %1771, %1768
  %1793 = phi i1 [ true, %1768 ], [ %1791, %1771 ]
  %1794 = zext i1 %1793 to i8
  store i8 %1794, ptr %16, align 1, !tbaa !27
  br label %1795

1795:                                             ; preds = %1792, %1759
  %1796 = load i8, ptr %16, align 1, !tbaa !27, !range !28, !noundef !29
  %1797 = trunc i8 %1796 to i1
  br i1 %1797, label %1798, label %1799

1798:                                             ; preds = %1795
  br label %1953

1799:                                             ; preds = %1795
  %1800 = load double, ptr %13, align 8, !tbaa !30
  %1801 = load ptr, ptr %4, align 8, !tbaa !5
  %1802 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1801, i32 0, i32 7
  %1803 = load double, ptr %1802, align 8, !tbaa !43
  %1804 = load ptr, ptr %4, align 8, !tbaa !5
  %1805 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1804, i32 0, i32 8
  %1806 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1805, i32 0, i32 4
  %1807 = load ptr, ptr %1806, align 8, !tbaa !25
  %1808 = load i64, ptr %11, align 8, !tbaa !26
  %1809 = getelementptr inbounds double, ptr %1807, i64 %1808
  %1810 = load double, ptr %1809, align 8, !tbaa !30
  %1811 = fneg double %1803
  %1812 = call double @llvm.fmuladd.f64(double %1811, double %1810, double %1800)
  %1813 = load ptr, ptr %4, align 8, !tbaa !5
  %1814 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1813, i32 0, i32 12
  %1815 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1814, i32 0, i32 4
  %1816 = load ptr, ptr %1815, align 8, !tbaa !25
  %1817 = load i64, ptr %11, align 8, !tbaa !26
  %1818 = getelementptr inbounds double, ptr %1816, i64 %1817
  store double %1812, ptr %1818, align 8, !tbaa !30
  %1819 = load ptr, ptr %4, align 8, !tbaa !5
  %1820 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1819, i32 0, i32 19
  %1821 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1820, i32 0, i32 0
  store i32 14, ptr %1821, align 8, !tbaa !9
  br label %4617

1822:                                             ; preds = %259
  %1823 = load ptr, ptr %4, align 8, !tbaa !5
  %1824 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1823, i32 0, i32 13
  %1825 = load double, ptr %1824, align 8, !tbaa !47
  %1826 = load ptr, ptr %4, align 8, !tbaa !5
  %1827 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1826, i32 0, i32 42
  store double %1825, ptr %1827, align 8, !tbaa !56
  %1828 = load double, ptr %13, align 8, !tbaa !30
  %1829 = load ptr, ptr %4, align 8, !tbaa !5
  %1830 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1829, i32 0, i32 7
  %1831 = load double, ptr %1830, align 8, !tbaa !43
  %1832 = fmul double 5.000000e-01, %1831
  %1833 = load ptr, ptr %4, align 8, !tbaa !5
  %1834 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1833, i32 0, i32 8
  %1835 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1834, i32 0, i32 4
  %1836 = load ptr, ptr %1835, align 8, !tbaa !25
  %1837 = load i64, ptr %11, align 8, !tbaa !26
  %1838 = getelementptr inbounds double, ptr %1836, i64 %1837
  %1839 = load double, ptr %1838, align 8, !tbaa !30
  %1840 = fneg double %1832
  %1841 = call double @llvm.fmuladd.f64(double %1840, double %1839, double %1828)
  %1842 = load ptr, ptr %4, align 8, !tbaa !5
  %1843 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1842, i32 0, i32 12
  %1844 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1843, i32 0, i32 4
  %1845 = load ptr, ptr %1844, align 8, !tbaa !25
  %1846 = load i64, ptr %11, align 8, !tbaa !26
  %1847 = getelementptr inbounds double, ptr %1845, i64 %1846
  store double %1841, ptr %1847, align 8, !tbaa !30
  %1848 = load ptr, ptr %4, align 8, !tbaa !5
  %1849 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1848, i32 0, i32 19
  %1850 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1849, i32 0, i32 0
  store i32 15, ptr %1850, align 8, !tbaa !9
  br label %4617

1851:                                             ; preds = %266
  %1852 = load ptr, ptr %4, align 8, !tbaa !5
  %1853 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1852, i32 0, i32 13
  %1854 = load double, ptr %1853, align 8, !tbaa !47
  %1855 = load ptr, ptr %4, align 8, !tbaa !5
  %1856 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1855, i32 0, i32 43
  store double %1854, ptr %1856, align 8, !tbaa !57
  %1857 = load double, ptr %13, align 8, !tbaa !30
  %1858 = load ptr, ptr %4, align 8, !tbaa !5
  %1859 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1858, i32 0, i32 7
  %1860 = load double, ptr %1859, align 8, !tbaa !43
  %1861 = fmul double 5.000000e-01, %1860
  %1862 = load ptr, ptr %4, align 8, !tbaa !5
  %1863 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1862, i32 0, i32 8
  %1864 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1863, i32 0, i32 4
  %1865 = load ptr, ptr %1864, align 8, !tbaa !25
  %1866 = load i64, ptr %11, align 8, !tbaa !26
  %1867 = getelementptr inbounds double, ptr %1865, i64 %1866
  %1868 = load double, ptr %1867, align 8, !tbaa !30
  %1869 = call double @llvm.fmuladd.f64(double %1861, double %1868, double %1857)
  %1870 = load ptr, ptr %4, align 8, !tbaa !5
  %1871 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1870, i32 0, i32 12
  %1872 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1871, i32 0, i32 4
  %1873 = load ptr, ptr %1872, align 8, !tbaa !25
  %1874 = load i64, ptr %11, align 8, !tbaa !26
  %1875 = getelementptr inbounds double, ptr %1873, i64 %1874
  store double %1869, ptr %1875, align 8, !tbaa !30
  %1876 = load ptr, ptr %4, align 8, !tbaa !5
  %1877 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1876, i32 0, i32 19
  %1878 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1877, i32 0, i32 0
  store i32 16, ptr %1878, align 8, !tbaa !9
  br label %4617

1879:                                             ; preds = %273
  %1880 = load ptr, ptr %4, align 8, !tbaa !5
  %1881 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1880, i32 0, i32 13
  %1882 = load double, ptr %1881, align 8, !tbaa !47
  %1883 = load ptr, ptr %4, align 8, !tbaa !5
  %1884 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1883, i32 0, i32 44
  store double %1882, ptr %1884, align 8, !tbaa !58
  %1885 = load double, ptr %13, align 8, !tbaa !30
  %1886 = load ptr, ptr %4, align 8, !tbaa !5
  %1887 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1886, i32 0, i32 7
  %1888 = load double, ptr %1887, align 8, !tbaa !43
  %1889 = load ptr, ptr %4, align 8, !tbaa !5
  %1890 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1889, i32 0, i32 8
  %1891 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1890, i32 0, i32 4
  %1892 = load ptr, ptr %1891, align 8, !tbaa !25
  %1893 = load i64, ptr %11, align 8, !tbaa !26
  %1894 = getelementptr inbounds double, ptr %1892, i64 %1893
  %1895 = load double, ptr %1894, align 8, !tbaa !30
  %1896 = call double @llvm.fmuladd.f64(double %1888, double %1895, double %1885)
  %1897 = load ptr, ptr %4, align 8, !tbaa !5
  %1898 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1897, i32 0, i32 12
  %1899 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1898, i32 0, i32 4
  %1900 = load ptr, ptr %1899, align 8, !tbaa !25
  %1901 = load i64, ptr %11, align 8, !tbaa !26
  %1902 = getelementptr inbounds double, ptr %1900, i64 %1901
  store double %1896, ptr %1902, align 8, !tbaa !30
  %1903 = load ptr, ptr %4, align 8, !tbaa !5
  %1904 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1903, i32 0, i32 19
  %1905 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %1904, i32 0, i32 0
  store i32 17, ptr %1905, align 8, !tbaa !9
  br label %4617

1906:                                             ; preds = %280
  %1907 = load ptr, ptr %4, align 8, !tbaa !5
  %1908 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1907, i32 0, i32 13
  %1909 = load double, ptr %1908, align 8, !tbaa !47
  %1910 = load ptr, ptr %4, align 8, !tbaa !5
  %1911 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1910, i32 0, i32 45
  store double %1909, ptr %1911, align 8, !tbaa !59
  %1912 = load ptr, ptr %4, align 8, !tbaa !5
  %1913 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1912, i32 0, i32 44
  %1914 = load double, ptr %1913, align 8, !tbaa !58
  %1915 = load ptr, ptr %4, align 8, !tbaa !5
  %1916 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1915, i32 0, i32 43
  %1917 = load double, ptr %1916, align 8, !tbaa !57
  %1918 = fsub double %1914, %1917
  %1919 = load ptr, ptr %4, align 8, !tbaa !5
  %1920 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1919, i32 0, i32 45
  %1921 = load double, ptr %1920, align 8, !tbaa !59
  %1922 = load ptr, ptr %4, align 8, !tbaa !5
  %1923 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1922, i32 0, i32 42
  %1924 = load double, ptr %1923, align 8, !tbaa !56
  %1925 = fsub double %1921, %1924
  %1926 = fneg double %1925
  %1927 = call double @llvm.fmuladd.f64(double 8.000000e+00, double %1918, double %1926)
  %1928 = load ptr, ptr %4, align 8, !tbaa !5
  %1929 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1928, i32 0, i32 7
  %1930 = load double, ptr %1929, align 8, !tbaa !43
  %1931 = fmul double 6.000000e+00, %1930
  %1932 = load ptr, ptr %4, align 8, !tbaa !5
  %1933 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1932, i32 0, i32 8
  %1934 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1933, i32 0, i32 4
  %1935 = load ptr, ptr %1934, align 8, !tbaa !25
  %1936 = load i64, ptr %11, align 8, !tbaa !26
  %1937 = getelementptr inbounds double, ptr %1935, i64 %1936
  %1938 = load double, ptr %1937, align 8, !tbaa !30
  %1939 = fmul double %1931, %1938
  %1940 = fdiv double %1927, %1939
  %1941 = load ptr, ptr %4, align 8, !tbaa !5
  %1942 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1941, i32 0, i32 14
  %1943 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1942, i32 0, i32 4
  %1944 = load ptr, ptr %1943, align 8, !tbaa !25
  %1945 = load i64, ptr %11, align 8, !tbaa !26
  %1946 = getelementptr inbounds double, ptr %1944, i64 %1945
  store double %1940, ptr %1946, align 8, !tbaa !30
  %1947 = load ptr, ptr %4, align 8, !tbaa !5
  %1948 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1947, i32 0, i32 37
  %1949 = load i64, ptr %1948, align 8, !tbaa !37
  %1950 = add nsw i64 %1949, 4
  %1951 = load ptr, ptr %4, align 8, !tbaa !5
  %1952 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1951, i32 0, i32 37
  store i64 %1950, ptr %1952, align 8, !tbaa !37
  br label %2124

1953:                                             ; preds = %1798
  %1954 = load double, ptr %13, align 8, !tbaa !30
  %1955 = load ptr, ptr %4, align 8, !tbaa !5
  %1956 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1955, i32 0, i32 7
  %1957 = load double, ptr %1956, align 8, !tbaa !43
  %1958 = load ptr, ptr %4, align 8, !tbaa !5
  %1959 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1958, i32 0, i32 8
  %1960 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1959, i32 0, i32 4
  %1961 = load ptr, ptr %1960, align 8, !tbaa !25
  %1962 = load i64, ptr %11, align 8, !tbaa !26
  %1963 = getelementptr inbounds double, ptr %1961, i64 %1962
  %1964 = load double, ptr %1963, align 8, !tbaa !30
  %1965 = fneg double %1957
  %1966 = call double @llvm.fmuladd.f64(double %1965, double %1964, double %1954)
  %1967 = load ptr, ptr %4, align 8, !tbaa !5
  %1968 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1967, i32 0, i32 46
  store double %1966, ptr %1968, align 8, !tbaa !60
  %1969 = load double, ptr %13, align 8, !tbaa !30
  %1970 = load ptr, ptr %4, align 8, !tbaa !5
  %1971 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1970, i32 0, i32 7
  %1972 = load double, ptr %1971, align 8, !tbaa !43
  %1973 = load ptr, ptr %4, align 8, !tbaa !5
  %1974 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1973, i32 0, i32 8
  %1975 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1974, i32 0, i32 4
  %1976 = load ptr, ptr %1975, align 8, !tbaa !25
  %1977 = load i64, ptr %11, align 8, !tbaa !26
  %1978 = getelementptr inbounds double, ptr %1976, i64 %1977
  %1979 = load double, ptr %1978, align 8, !tbaa !30
  %1980 = call double @llvm.fmuladd.f64(double %1972, double %1979, double %1969)
  %1981 = load ptr, ptr %4, align 8, !tbaa !5
  %1982 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1981, i32 0, i32 47
  store double %1980, ptr %1982, align 8, !tbaa !61
  %1983 = load ptr, ptr %4, align 8, !tbaa !5
  %1984 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1983, i32 0, i32 32
  %1985 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1984, i32 0, i32 4
  %1986 = load ptr, ptr %1985, align 8, !tbaa !25
  %1987 = load i64, ptr %11, align 8, !tbaa !26
  %1988 = getelementptr inbounds i8, ptr %1986, i64 %1987
  %1989 = load i8, ptr %1988, align 1, !tbaa !27, !range !28, !noundef !29
  %1990 = trunc i8 %1989 to i1
  br i1 %1990, label %1991, label %2013

1991:                                             ; preds = %1953
  %1992 = load ptr, ptr %4, align 8, !tbaa !5
  %1993 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1992, i32 0, i32 46
  %1994 = load double, ptr %1993, align 8, !tbaa !60
  %1995 = load ptr, ptr %4, align 8, !tbaa !5
  %1996 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %1995, i32 0, i32 34
  %1997 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1996, i32 0, i32 4
  %1998 = load ptr, ptr %1997, align 8, !tbaa !25
  %1999 = load i64, ptr %11, align 8, !tbaa !26
  %2000 = getelementptr inbounds double, ptr %1998, i64 %1999
  %2001 = load double, ptr %2000, align 8, !tbaa !30
  %2002 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1994, double noundef %2001)
  br i1 %2002, label %2003, label %2013

2003:                                             ; preds = %1991
  %2004 = load ptr, ptr %4, align 8, !tbaa !5
  %2005 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2004, i32 0, i32 34
  %2006 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2005, i32 0, i32 4
  %2007 = load ptr, ptr %2006, align 8, !tbaa !25
  %2008 = load i64, ptr %11, align 8, !tbaa !26
  %2009 = getelementptr inbounds double, ptr %2007, i64 %2008
  %2010 = load double, ptr %2009, align 8, !tbaa !30
  %2011 = load ptr, ptr %4, align 8, !tbaa !5
  %2012 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2011, i32 0, i32 46
  store double %2010, ptr %2012, align 8, !tbaa !60
  br label %2013

2013:                                             ; preds = %2003, %1991, %1953
  %2014 = load ptr, ptr %4, align 8, !tbaa !5
  %2015 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2014, i32 0, i32 33
  %2016 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2015, i32 0, i32 4
  %2017 = load ptr, ptr %2016, align 8, !tbaa !25
  %2018 = load i64, ptr %11, align 8, !tbaa !26
  %2019 = getelementptr inbounds i8, ptr %2017, i64 %2018
  %2020 = load i8, ptr %2019, align 1, !tbaa !27, !range !28, !noundef !29
  %2021 = trunc i8 %2020 to i1
  br i1 %2021, label %2022, label %2044

2022:                                             ; preds = %2013
  %2023 = load ptr, ptr %4, align 8, !tbaa !5
  %2024 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2023, i32 0, i32 47
  %2025 = load double, ptr %2024, align 8, !tbaa !61
  %2026 = load ptr, ptr %4, align 8, !tbaa !5
  %2027 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2026, i32 0, i32 35
  %2028 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2027, i32 0, i32 4
  %2029 = load ptr, ptr %2028, align 8, !tbaa !25
  %2030 = load i64, ptr %11, align 8, !tbaa !26
  %2031 = getelementptr inbounds double, ptr %2029, i64 %2030
  %2032 = load double, ptr %2031, align 8, !tbaa !30
  %2033 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2025, double noundef %2032)
  br i1 %2033, label %2034, label %2044

2034:                                             ; preds = %2022
  %2035 = load ptr, ptr %4, align 8, !tbaa !5
  %2036 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2035, i32 0, i32 35
  %2037 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2036, i32 0, i32 4
  %2038 = load ptr, ptr %2037, align 8, !tbaa !25
  %2039 = load i64, ptr %11, align 8, !tbaa !26
  %2040 = getelementptr inbounds double, ptr %2038, i64 %2039
  %2041 = load double, ptr %2040, align 8, !tbaa !30
  %2042 = load ptr, ptr %4, align 8, !tbaa !5
  %2043 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2042, i32 0, i32 47
  store double %2041, ptr %2043, align 8, !tbaa !61
  br label %2044

2044:                                             ; preds = %2034, %2022, %2013
  %2045 = load ptr, ptr %4, align 8, !tbaa !5
  %2046 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2045, i32 0, i32 46
  %2047 = load double, ptr %2046, align 8, !tbaa !60
  %2048 = load ptr, ptr %4, align 8, !tbaa !5
  %2049 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2048, i32 0, i32 12
  %2050 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2049, i32 0, i32 4
  %2051 = load ptr, ptr %2050, align 8, !tbaa !25
  %2052 = load i64, ptr %11, align 8, !tbaa !26
  %2053 = getelementptr inbounds double, ptr %2051, i64 %2052
  store double %2047, ptr %2053, align 8, !tbaa !30
  %2054 = load ptr, ptr %4, align 8, !tbaa !5
  %2055 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2054, i32 0, i32 19
  %2056 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %2055, i32 0, i32 0
  store i32 18, ptr %2056, align 8, !tbaa !9
  br label %4617

2057:                                             ; preds = %287
  %2058 = load ptr, ptr %4, align 8, !tbaa !5
  %2059 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2058, i32 0, i32 13
  %2060 = load double, ptr %2059, align 8, !tbaa !47
  %2061 = load ptr, ptr %4, align 8, !tbaa !5
  %2062 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2061, i32 0, i32 43
  store double %2060, ptr %2062, align 8, !tbaa !57
  %2063 = load ptr, ptr %4, align 8, !tbaa !5
  %2064 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2063, i32 0, i32 47
  %2065 = load double, ptr %2064, align 8, !tbaa !61
  %2066 = load ptr, ptr %4, align 8, !tbaa !5
  %2067 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2066, i32 0, i32 12
  %2068 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2067, i32 0, i32 4
  %2069 = load ptr, ptr %2068, align 8, !tbaa !25
  %2070 = load i64, ptr %11, align 8, !tbaa !26
  %2071 = getelementptr inbounds double, ptr %2069, i64 %2070
  store double %2065, ptr %2071, align 8, !tbaa !30
  %2072 = load ptr, ptr %4, align 8, !tbaa !5
  %2073 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2072, i32 0, i32 19
  %2074 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %2073, i32 0, i32 0
  store i32 19, ptr %2074, align 8, !tbaa !9
  br label %4617

2075:                                             ; preds = %294
  %2076 = load ptr, ptr %4, align 8, !tbaa !5
  %2077 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2076, i32 0, i32 13
  %2078 = load double, ptr %2077, align 8, !tbaa !47
  %2079 = load ptr, ptr %4, align 8, !tbaa !5
  %2080 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2079, i32 0, i32 44
  store double %2078, ptr %2080, align 8, !tbaa !58
  %2081 = load ptr, ptr %4, align 8, !tbaa !5
  %2082 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2081, i32 0, i32 46
  %2083 = load double, ptr %2082, align 8, !tbaa !60
  %2084 = load ptr, ptr %4, align 8, !tbaa !5
  %2085 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2084, i32 0, i32 47
  %2086 = load double, ptr %2085, align 8, !tbaa !61
  %2087 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %2083, double noundef %2086)
  br i1 %2087, label %2088, label %2110

2088:                                             ; preds = %2075
  %2089 = load ptr, ptr %4, align 8, !tbaa !5
  %2090 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2089, i32 0, i32 44
  %2091 = load double, ptr %2090, align 8, !tbaa !58
  %2092 = load ptr, ptr %4, align 8, !tbaa !5
  %2093 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2092, i32 0, i32 43
  %2094 = load double, ptr %2093, align 8, !tbaa !57
  %2095 = fsub double %2091, %2094
  %2096 = load ptr, ptr %4, align 8, !tbaa !5
  %2097 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2096, i32 0, i32 47
  %2098 = load double, ptr %2097, align 8, !tbaa !61
  %2099 = load ptr, ptr %4, align 8, !tbaa !5
  %2100 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2099, i32 0, i32 46
  %2101 = load double, ptr %2100, align 8, !tbaa !60
  %2102 = fsub double %2098, %2101
  %2103 = fdiv double %2095, %2102
  %2104 = load ptr, ptr %4, align 8, !tbaa !5
  %2105 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2104, i32 0, i32 14
  %2106 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2105, i32 0, i32 4
  %2107 = load ptr, ptr %2106, align 8, !tbaa !25
  %2108 = load i64, ptr %11, align 8, !tbaa !26
  %2109 = getelementptr inbounds double, ptr %2107, i64 %2108
  store double %2103, ptr %2109, align 8, !tbaa !30
  br label %2117

2110:                                             ; preds = %2075
  %2111 = load ptr, ptr %4, align 8, !tbaa !5
  %2112 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2111, i32 0, i32 14
  %2113 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2112, i32 0, i32 4
  %2114 = load ptr, ptr %2113, align 8, !tbaa !25
  %2115 = load i64, ptr %11, align 8, !tbaa !26
  %2116 = getelementptr inbounds double, ptr %2114, i64 %2115
  store double 0.000000e+00, ptr %2116, align 8, !tbaa !30
  br label %2117

2117:                                             ; preds = %2110, %2088
  %2118 = load ptr, ptr %4, align 8, !tbaa !5
  %2119 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2118, i32 0, i32 37
  %2120 = load i64, ptr %2119, align 8, !tbaa !37
  %2121 = add nsw i64 %2120, 2
  %2122 = load ptr, ptr %4, align 8, !tbaa !5
  %2123 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2122, i32 0, i32 37
  store i64 %2121, ptr %2123, align 8, !tbaa !37
  br label %2124

2124:                                             ; preds = %2117, %1906
  %2125 = load double, ptr %13, align 8, !tbaa !30
  %2126 = load ptr, ptr %4, align 8, !tbaa !5
  %2127 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2126, i32 0, i32 12
  %2128 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2127, i32 0, i32 4
  %2129 = load ptr, ptr %2128, align 8, !tbaa !25
  %2130 = load i64, ptr %11, align 8, !tbaa !26
  %2131 = getelementptr inbounds double, ptr %2129, i64 %2130
  store double %2125, ptr %2131, align 8, !tbaa !30
  %2132 = load i64, ptr %11, align 8, !tbaa !26
  %2133 = add nsw i64 %2132, 1
  store i64 %2133, ptr %11, align 8, !tbaa !26
  br label %1709

2134:                                             ; preds = %1714
  %2135 = load ptr, ptr %4, align 8, !tbaa !5
  %2136 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2135, i32 0, i32 41
  %2137 = load double, ptr %2136, align 8, !tbaa !55
  %2138 = load ptr, ptr %4, align 8, !tbaa !5
  %2139 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2138, i32 0, i32 13
  store double %2137, ptr %2139, align 8, !tbaa !47
  %2140 = load ptr, ptr %4, align 8, !tbaa !5
  %2141 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2140, i32 0, i32 15
  store i8 0, ptr %2141, align 8, !tbaa !51
  br label %2142

2142:                                             ; preds = %2134, %1688
  %2143 = load ptr, ptr %4, align 8, !tbaa !5
  %2144 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2143, i32 0, i32 67
  %2145 = load ptr, ptr %4, align 8, !tbaa !5
  %2146 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2145, i32 0, i32 8
  %2147 = load ptr, ptr %4, align 8, !tbaa !5
  %2148 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2147, i32 0, i32 69
  %2149 = load ptr, ptr %4, align 8, !tbaa !5
  %2150 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2149, i32 0, i32 30
  %2151 = load ptr, ptr %4, align 8, !tbaa !5
  %2152 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2151, i32 0, i32 54
  %2153 = load double, ptr %2152, align 8, !tbaa !66
  %2154 = load ptr, ptr %4, align 8, !tbaa !5
  %2155 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2154, i32 0, i32 12
  %2156 = load ptr, ptr %4, align 8, !tbaa !5
  %2157 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2156, i32 0, i32 13
  %2158 = load double, ptr %2157, align 8, !tbaa !47
  %2159 = load ptr, ptr %4, align 8, !tbaa !5
  %2160 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2159, i32 0, i32 14
  %2161 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl31smoothnessmonitorenqueuepoint1uEPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_dS4_dS4_PNS_8ae_stateE(ptr noundef %2144, ptr noundef %2146, ptr noundef %2148, ptr noundef %2150, double noundef %2153, ptr noundef %2155, double noundef %2158, ptr noundef %2160, ptr noundef %2161)
  %2162 = load ptr, ptr %4, align 8, !tbaa !5
  %2163 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2162, i32 0, i32 13
  %2164 = load ptr, ptr %4, align 8, !tbaa !5
  %2165 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2164, i32 0, i32 14
  %2166 = load i64, ptr %9, align 8, !tbaa !26
  %2167 = load ptr, ptr %4, align 8, !tbaa !5
  %2168 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2167, i32 0, i32 58
  %2169 = load double, ptr %2168, align 8, !tbaa !72
  %2170 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl12trimfunctionEPdPNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef %2163, ptr noundef %2165, i64 noundef %2166, double noundef %2169, ptr noundef %2170)
  %2171 = load ptr, ptr %4, align 8, !tbaa !5
  %2172 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2171, i32 0, i32 13
  %2173 = load double, ptr %2172, align 8, !tbaa !47
  %2174 = load ptr, ptr %4, align 8, !tbaa !5
  %2175 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2174, i32 0, i32 28
  store double %2173, ptr %2175, align 8, !tbaa !69
  %2176 = load ptr, ptr %4, align 8, !tbaa !5
  %2177 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2176, i32 0, i32 25
  %2178 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2177, i32 0, i32 4
  %2179 = load ptr, ptr %2178, align 8, !tbaa !25
  %2180 = getelementptr inbounds double, ptr %2179, i64 0
  %2181 = load ptr, ptr %4, align 8, !tbaa !5
  %2182 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2181, i32 0, i32 14
  %2183 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2182, i32 0, i32 4
  %2184 = load ptr, ptr %2183, align 8, !tbaa !25
  %2185 = getelementptr inbounds double, ptr %2184, i64 0
  %2186 = load i64, ptr %9, align 8, !tbaa !26
  %2187 = sub nsw i64 %2186, 1
  %2188 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2187)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2180, i64 noundef 1, ptr noundef %2185, i64 noundef 1, i64 noundef %2188)
  %2189 = load ptr, ptr %4, align 8, !tbaa !5
  %2190 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2189, i32 0, i32 24
  %2191 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2190, i32 0, i32 4
  %2192 = load ptr, ptr %2191, align 8, !tbaa !25
  %2193 = getelementptr inbounds double, ptr %2192, i64 0
  %2194 = load ptr, ptr %4, align 8, !tbaa !5
  %2195 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2194, i32 0, i32 14
  %2196 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2195, i32 0, i32 4
  %2197 = load ptr, ptr %2196, align 8, !tbaa !25
  %2198 = getelementptr inbounds double, ptr %2197, i64 0
  %2199 = load i64, ptr %9, align 8, !tbaa !26
  %2200 = sub nsw i64 %2199, 1
  %2201 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2200)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2193, i64 noundef 1, ptr noundef %2198, i64 noundef 1, i64 noundef %2201)
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %2202

2202:                                             ; preds = %2224, %2142
  %2203 = load i64, ptr %11, align 8, !tbaa !26
  %2204 = load i64, ptr %9, align 8, !tbaa !26
  %2205 = sub nsw i64 %2204, 1
  %2206 = icmp sle i64 %2203, %2205
  br i1 %2206, label %2207, label %2227

2207:                                             ; preds = %2202
  %2208 = load ptr, ptr %4, align 8, !tbaa !5
  %2209 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2208, i32 0, i32 30
  %2210 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2209, i32 0, i32 4
  %2211 = load ptr, ptr %2210, align 8, !tbaa !25
  %2212 = load i64, ptr %11, align 8, !tbaa !26
  %2213 = getelementptr inbounds double, ptr %2211, i64 %2212
  %2214 = load double, ptr %2213, align 8, !tbaa !30
  %2215 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2214, double noundef 0.000000e+00)
  br i1 %2215, label %2216, label %2223

2216:                                             ; preds = %2207
  %2217 = load ptr, ptr %4, align 8, !tbaa !5
  %2218 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2217, i32 0, i32 25
  %2219 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2218, i32 0, i32 4
  %2220 = load ptr, ptr %2219, align 8, !tbaa !25
  %2221 = load i64, ptr %11, align 8, !tbaa !26
  %2222 = getelementptr inbounds double, ptr %2220, i64 %2221
  store double 0.000000e+00, ptr %2222, align 8, !tbaa !30
  br label %2223

2223:                                             ; preds = %2216, %2207
  br label %2224

2224:                                             ; preds = %2223
  %2225 = load i64, ptr %11, align 8, !tbaa !26
  %2226 = add nsw i64 %2225, 1
  store i64 %2226, ptr %11, align 8, !tbaa !26
  br label %2202, !llvm.loop !73

2227:                                             ; preds = %2202
  %2228 = load i64, ptr %9, align 8, !tbaa !26
  %2229 = load ptr, ptr %4, align 8, !tbaa !5
  %2230 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2229, i32 0, i32 23
  %2231 = load ptr, ptr %4, align 8, !tbaa !5
  %2232 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2231, i32 0, i32 28
  %2233 = load ptr, ptr %4, align 8, !tbaa !5
  %2234 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2233, i32 0, i32 25
  %2235 = load ptr, ptr %4, align 8, !tbaa !5
  %2236 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2235, i32 0, i32 30
  %2237 = load ptr, ptr %4, align 8, !tbaa !5
  %2238 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2237, i32 0, i32 54
  %2239 = load ptr, ptr %4, align 8, !tbaa !5
  %2240 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2239, i32 0, i32 55
  %2241 = load double, ptr %2240, align 8, !tbaa !67
  %2242 = load double, ptr @_ZN11alglib_implL10minbc_gtolE, align 8, !tbaa !30
  %2243 = load ptr, ptr %4, align 8, !tbaa !5
  %2244 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2243, i32 0, i32 52
  %2245 = load ptr, ptr %4, align 8, !tbaa !5
  %2246 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2245, i32 0, i32 56
  %2247 = load ptr, ptr %4, align 8, !tbaa !5
  %2248 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2247, i32 0, i32 57
  %2249 = load ptr, ptr %4, align 8, !tbaa !5
  %2250 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2249, i32 0, i32 53
  %2251 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_PKS0_S2_ddPlS5_S1_PNS_11linminstateES5_PNS_8ae_stateE(i64 noundef %2228, ptr noundef %2230, ptr noundef %2232, ptr noundef %2234, ptr noundef %2236, ptr noundef %2238, double noundef %2241, double noundef %2242, ptr noundef %17, ptr noundef %2244, ptr noundef %2246, ptr noundef %2248, ptr noundef %2250, ptr noundef %2251)
  br label %1567

2252:                                             ; preds = %1572
  %2253 = load ptr, ptr %4, align 8, !tbaa !5
  %2254 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2253, i32 0, i32 67
  %2255 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl35smoothnessmonitorfinalizelinesearchEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef %2254, ptr noundef %2255)
  %2256 = load ptr, ptr %4, align 8, !tbaa !5
  %2257 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2256, i32 0, i32 28
  %2258 = load double, ptr %2257, align 8, !tbaa !69
  store double %2258, ptr %13, align 8, !tbaa !30
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %2259

2259:                                             ; preds = %2274, %2252
  %2260 = load i64, ptr %11, align 8, !tbaa !26
  %2261 = load i64, ptr %9, align 8, !tbaa !26
  %2262 = sub nsw i64 %2261, 1
  %2263 = icmp sle i64 %2260, %2262
  br i1 %2263, label %2264, label %2277

2264:                                             ; preds = %2259
  %2265 = load double, ptr %13, align 8, !tbaa !30
  %2266 = load ptr, ptr %4, align 8, !tbaa !5
  %2267 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2266, i32 0, i32 24
  %2268 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2267, i32 0, i32 4
  %2269 = load ptr, ptr %2268, align 8, !tbaa !25
  %2270 = load i64, ptr %11, align 8, !tbaa !26
  %2271 = getelementptr inbounds double, ptr %2269, i64 %2270
  %2272 = load double, ptr %2271, align 8, !tbaa !30
  %2273 = call double @llvm.fmuladd.f64(double 1.000000e-01, double %2265, double %2272)
  store double %2273, ptr %13, align 8, !tbaa !30
  br label %2274

2274:                                             ; preds = %2264
  %2275 = load i64, ptr %11, align 8, !tbaa !26
  %2276 = add nsw i64 %2275, 1
  store i64 %2276, ptr %11, align 8, !tbaa !26
  br label %2259, !llvm.loop !74

2277:                                             ; preds = %2259
  %2278 = load double, ptr %13, align 8, !tbaa !30
  %2279 = load ptr, ptr %5, align 8, !tbaa !5
  %2280 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %2278, ptr noundef %2279)
  br i1 %2280, label %2286, label %2281

2281:                                             ; preds = %2277
  %2282 = load ptr, ptr %4, align 8, !tbaa !5
  %2283 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2282, i32 0, i32 39
  store i64 -8, ptr %2283, align 8, !tbaa !34
  store i8 0, ptr %23, align 1, !tbaa !27
  %2284 = load i8, ptr %23, align 1, !tbaa !27, !range !28, !noundef !29
  %2285 = trunc i8 %2284 to i1
  store i1 %2285, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4743

2286:                                             ; preds = %2277
  %2287 = load i64, ptr %17, align 8, !tbaa !26
  %2288 = icmp ne i64 %2287, 1
  br i1 %2288, label %2289, label %2356

2289:                                             ; preds = %2286
  %2290 = load i64, ptr %17, align 8, !tbaa !26
  %2291 = icmp ne i64 %2290, 5
  br i1 %2291, label %2292, label %2356

2292:                                             ; preds = %2289
  %2293 = load i64, ptr %6, align 8, !tbaa !26
  %2294 = icmp sge i64 %2293, 0
  br i1 %2294, label %2295, label %2350

2295:                                             ; preds = %2292
  %2296 = load double, ptr %8, align 8, !tbaa !30
  %2297 = load ptr, ptr %4, align 8, !tbaa !5
  %2298 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2297, i32 0, i32 55
  %2299 = load double, ptr %2298, align 8, !tbaa !67
  %2300 = fmul double %2296, %2299
  %2301 = load double, ptr @_ZN11alglib_implL24minbc_maxnonmonotoniclenE, align 8, !tbaa !30
  %2302 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %2300, double noundef %2301)
  br i1 %2302, label %2303, label %2350

2303:                                             ; preds = %2295
  %2304 = load ptr, ptr %4, align 8, !tbaa !5
  %2305 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2304, i32 0, i32 59
  %2306 = load i64, ptr %2305, align 8, !tbaa !50
  %2307 = icmp sgt i64 %2306, 0
  br i1 %2307, label %2308, label %2350

2308:                                             ; preds = %2303
  %2309 = load ptr, ptr %4, align 8, !tbaa !5
  %2310 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2309, i32 0, i32 55
  %2311 = load double, ptr %2310, align 8, !tbaa !67
  %2312 = load ptr, ptr %4, align 8, !tbaa !5
  %2313 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2312, i32 0, i32 54
  store double %2311, ptr %2313, align 8, !tbaa !66
  store i64 5, ptr %17, align 8, !tbaa !26
  %2314 = load ptr, ptr %4, align 8, !tbaa !5
  %2315 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2314, i32 0, i32 55
  %2316 = load double, ptr %2315, align 8, !tbaa !67
  store double %2316, ptr %13, align 8, !tbaa !30
  %2317 = load ptr, ptr %4, align 8, !tbaa !5
  %2318 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2317, i32 0, i32 23
  %2319 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2318, i32 0, i32 4
  %2320 = load ptr, ptr %2319, align 8, !tbaa !25
  %2321 = getelementptr inbounds double, ptr %2320, i64 0
  %2322 = load ptr, ptr %4, align 8, !tbaa !5
  %2323 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2322, i32 0, i32 20
  %2324 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2323, i32 0, i32 4
  %2325 = load ptr, ptr %2324, align 8, !tbaa !25
  %2326 = getelementptr inbounds double, ptr %2325, i64 0
  %2327 = load i64, ptr %9, align 8, !tbaa !26
  %2328 = sub nsw i64 %2327, 1
  %2329 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2328)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2321, i64 noundef 1, ptr noundef %2326, i64 noundef 1, i64 noundef %2329)
  %2330 = load ptr, ptr %4, align 8, !tbaa !5
  %2331 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2330, i32 0, i32 23
  %2332 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2331, i32 0, i32 4
  %2333 = load ptr, ptr %2332, align 8, !tbaa !25
  %2334 = getelementptr inbounds double, ptr %2333, i64 0
  %2335 = load ptr, ptr %4, align 8, !tbaa !5
  %2336 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2335, i32 0, i32 30
  %2337 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2336, i32 0, i32 4
  %2338 = load ptr, ptr %2337, align 8, !tbaa !25
  %2339 = getelementptr inbounds double, ptr %2338, i64 0
  %2340 = load i64, ptr %9, align 8, !tbaa !26
  %2341 = sub nsw i64 %2340, 1
  %2342 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2341)
  %2343 = load double, ptr %13, align 8, !tbaa !30
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %2334, i64 noundef 1, ptr noundef %2339, i64 noundef 1, i64 noundef %2342, double noundef %2343)
  %2344 = load ptr, ptr %4, align 8, !tbaa !5
  %2345 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2344, i32 0, i32 59
  %2346 = load i64, ptr %2345, align 8, !tbaa !50
  %2347 = sub nsw i64 %2346, 1
  %2348 = load ptr, ptr %4, align 8, !tbaa !5
  %2349 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2348, i32 0, i32 59
  store i64 %2347, ptr %2349, align 8, !tbaa !50
  br label %2355

2350:                                             ; preds = %2303, %2295, %2292
  %2351 = load ptr, ptr %4, align 8, !tbaa !5
  %2352 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2351, i32 0, i32 39
  store i64 7, ptr %2352, align 8, !tbaa !34
  store i8 0, ptr %23, align 1, !tbaa !27
  %2353 = load i8, ptr %23, align 1, !tbaa !27, !range !28, !noundef !29
  %2354 = trunc i8 %2353 to i1
  store i1 %2354, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4743

2355:                                             ; preds = %2308
  br label %2356

2356:                                             ; preds = %2355, %2289, %2286
  %2357 = load ptr, ptr %4, align 8, !tbaa !5
  %2358 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2357, i32 0, i32 18
  %2359 = load i8, ptr %2358, align 1, !tbaa !35, !range !28, !noundef !29
  %2360 = trunc i8 %2359 to i1
  br i1 %2360, label %2361, label %2366

2361:                                             ; preds = %2356
  %2362 = load ptr, ptr %4, align 8, !tbaa !5
  %2363 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2362, i32 0, i32 39
  store i64 8, ptr %2363, align 8, !tbaa !34
  store i8 0, ptr %23, align 1, !tbaa !27
  %2364 = load i8, ptr %23, align 1, !tbaa !27, !range !28, !noundef !29
  %2365 = trunc i8 %2364 to i1
  store i1 %2365, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4743

2366:                                             ; preds = %2356
  %2367 = load i64, ptr %17, align 8, !tbaa !26
  %2368 = icmp ne i64 %2367, 5
  br i1 %2368, label %2377, label %2369

2369:                                             ; preds = %2366
  %2370 = load ptr, ptr %4, align 8, !tbaa !5
  %2371 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2370, i32 0, i32 54
  %2372 = load double, ptr %2371, align 8, !tbaa !66
  %2373 = load ptr, ptr %4, align 8, !tbaa !5
  %2374 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2373, i32 0, i32 55
  %2375 = load double, ptr %2374, align 8, !tbaa !67
  %2376 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2372, double noundef %2375)
  br label %2377

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

2467:                                             ; preds = %2377
  br label %2492

2468:                                             ; preds = %2377
  %2469 = load ptr, ptr %4, align 8, !tbaa !5
  %2470 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2469, i32 0, i32 12
  %2471 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2470, i32 0, i32 4
  %2472 = load ptr, ptr %2471, align 8, !tbaa !25
  %2473 = getelementptr inbounds double, ptr %2472, i64 0
  %2474 = load ptr, ptr %4, align 8, !tbaa !5
  %2475 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2474, i32 0, i32 20
  %2476 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2475, i32 0, i32 4
  %2477 = load ptr, ptr %2476, align 8, !tbaa !25
  %2478 = getelementptr inbounds double, ptr %2477, i64 0
  %2479 = load i64, ptr %9, align 8, !tbaa !26
  %2480 = sub nsw i64 %2479, 1
  %2481 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2480)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2473, i64 noundef 1, ptr noundef %2478, i64 noundef 1, i64 noundef %2481)
  %2482 = load ptr, ptr %4, align 8, !tbaa !5
  %2483 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef %2482, ptr noundef %2483)
  %2484 = load ptr, ptr %4, align 8, !tbaa !5
  %2485 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2484, i32 0, i32 17
  store i8 1, ptr %2485, align 2, !tbaa !54
  %2486 = load ptr, ptr %4, align 8, !tbaa !5
  %2487 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2486, i32 0, i32 19
  %2488 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %2487, i32 0, i32 0
  store i32 20, ptr %2488, align 8, !tbaa !9
  br label %4617

2489:                                             ; preds = %301
  %2490 = load ptr, ptr %4, align 8, !tbaa !5
  %2491 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2490, i32 0, i32 17
  store i8 0, ptr %2491, align 2, !tbaa !54
  br label %2492

2492:                                             ; preds = %2489, %2467
  %2493 = load ptr, ptr %4, align 8, !tbaa !5
  %2494 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2493, i32 0, i32 36
  %2495 = load i64, ptr %2494, align 8, !tbaa !36
  %2496 = add nsw i64 %2495, 1
  %2497 = load ptr, ptr %4, align 8, !tbaa !5
  %2498 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2497, i32 0, i32 36
  store i64 %2496, ptr %2498, align 8, !tbaa !36
  %2499 = load i64, ptr %17, align 8, !tbaa !26
  %2500 = icmp eq i64 %2499, 1
  br i1 %2500, label %2501, label %2587

2501:                                             ; preds = %2492
  store double 0.000000e+00, ptr %13, align 8, !tbaa !30
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %2502

2502:                                             ; preds = %2535, %2501
  %2503 = load i64, ptr %11, align 8, !tbaa !26
  %2504 = load i64, ptr %9, align 8, !tbaa !26
  %2505 = sub nsw i64 %2504, 1
  %2506 = icmp sle i64 %2503, %2505
  br i1 %2506, label %2507, label %2538

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

2535:                                             ; preds = %2507
  %2536 = load i64, ptr %11, align 8, !tbaa !26
  %2537 = add nsw i64 %2536, 1
  store i64 %2537, ptr %11, align 8, !tbaa !26
  br label %2502, !llvm.loop !76

2538:                                             ; preds = %2502
  %2539 = load double, ptr %13, align 8, !tbaa !30
  %2540 = load ptr, ptr %5, align 8, !tbaa !5
  %2541 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %2539, ptr noundef %2540)
  store double %2541, ptr %13, align 8, !tbaa !30
  %2542 = load double, ptr %13, align 8, !tbaa !30
  %2543 = load ptr, ptr %4, align 8, !tbaa !5
  %2544 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2543, i32 0, i32 3
  %2545 = load double, ptr %2544, align 8, !tbaa !77
  %2546 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %2542, double noundef %2545)
  br i1 %2546, label %2547, label %2552

2547:                                             ; preds = %2538
  %2548 = load ptr, ptr %4, align 8, !tbaa !5
  %2549 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2548, i32 0, i32 39
  store i64 2, ptr %2549, align 8, !tbaa !34
  store i8 0, ptr %23, align 1, !tbaa !27
  %2550 = load i8, ptr %23, align 1, !tbaa !27, !range !28, !noundef !29
  %2551 = trunc i8 %2550 to i1
  store i1 %2551, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4743

2552:                                             ; preds = %2538
  %2553 = load ptr, ptr %4, align 8, !tbaa !5
  %2554 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2553, i32 0, i32 29
  %2555 = load double, ptr %2554, align 8, !tbaa !75
  %2556 = load ptr, ptr %4, align 8, !tbaa !5
  %2557 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2556, i32 0, i32 27
  %2558 = load double, ptr %2557, align 8, !tbaa !52
  %2559 = fsub double %2555, %2558
  %2560 = load ptr, ptr %5, align 8, !tbaa !5
  %2561 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2559, ptr noundef %2560)
  %2562 = load ptr, ptr %4, align 8, !tbaa !5
  %2563 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2562, i32 0, i32 2
  %2564 = load double, ptr %2563, align 8, !tbaa !78
  %2565 = load ptr, ptr %4, align 8, !tbaa !5
  %2566 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2565, i32 0, i32 27
  %2567 = load double, ptr %2566, align 8, !tbaa !52
  %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 %4, align 8, !tbaa !5
  %2571 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2570, i32 0, i32 29
  %2572 = load double, ptr %2571, align 8, !tbaa !75
  %2573 = load ptr, ptr %5, align 8, !tbaa !5
  %2574 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2572, ptr noundef %2573)
  %2575 = load ptr, ptr %5, align 8, !tbaa !5
  %2576 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %2574, double noundef 1.000000e+00, ptr noundef %2575)
  %2577 = load ptr, ptr %5, align 8, !tbaa !5
  %2578 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %2569, double noundef %2576, ptr noundef %2577)
  %2579 = fmul double %2564, %2578
  %2580 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %2561, double noundef %2579)
  br i1 %2580, label %2581, label %2586

2581:                                             ; preds = %2552
  %2582 = load ptr, ptr %4, align 8, !tbaa !5
  %2583 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2582, i32 0, i32 39
  store i64 1, ptr %2583, align 8, !tbaa !34
  store i8 0, ptr %23, align 1, !tbaa !27
  %2584 = load i8, ptr %23, align 1, !tbaa !27, !range !28, !noundef !29
  %2585 = trunc i8 %2584 to i1
  store i1 %2585, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4743

2586:                                             ; preds = %2552
  br label %2587

2587:                                             ; preds = %2586, %2492
  %2588 = load ptr, ptr %4, align 8, !tbaa !5
  %2589 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2588, i32 0, i32 4
  %2590 = load i64, ptr %2589, align 8, !tbaa !79
  %2591 = icmp sgt i64 %2590, 0
  br i1 %2591, label %2592, label %2605

2592:                                             ; preds = %2587
  %2593 = load ptr, ptr %4, align 8, !tbaa !5
  %2594 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2593, i32 0, i32 36
  %2595 = load i64, ptr %2594, align 8, !tbaa !36
  %2596 = load ptr, ptr %4, align 8, !tbaa !5
  %2597 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2596, i32 0, i32 4
  %2598 = load i64, ptr %2597, align 8, !tbaa !79
  %2599 = icmp sge i64 %2595, %2598
  br i1 %2599, label %2600, label %2605

2600:                                             ; preds = %2592
  %2601 = load ptr, ptr %4, align 8, !tbaa !5
  %2602 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2601, i32 0, i32 39
  store i64 5, ptr %2602, align 8, !tbaa !34
  store i8 0, ptr %23, align 1, !tbaa !27
  %2603 = load i8, ptr %23, align 1, !tbaa !27, !range !28, !noundef !29
  %2604 = trunc i8 %2603 to i1
  store i1 %2604, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4743

2605:                                             ; preds = %2592, %2587
  store double 0.000000e+00, ptr %19, align 8, !tbaa !30
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %2606

2606:                                             ; preds = %2708, %2605
  %2607 = load i64, ptr %11, align 8, !tbaa !26
  %2608 = load i64, ptr %9, align 8, !tbaa !26
  %2609 = sub nsw i64 %2608, 1
  %2610 = icmp sle i64 %2607, %2609
  br i1 %2610, label %2611, label %2711

2611:                                             ; preds = %2606
  %2612 = load ptr, ptr %4, align 8, !tbaa !5
  %2613 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2612, i32 0, i32 21
  %2614 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2613, i32 0, i32 4
  %2615 = load ptr, ptr %2614, align 8, !tbaa !25
  %2616 = load i64, ptr %11, align 8, !tbaa !26
  %2617 = getelementptr inbounds double, ptr %2615, i64 %2616
  %2618 = load double, ptr %2617, align 8, !tbaa !30
  %2619 = load ptr, ptr %4, align 8, !tbaa !5
  %2620 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2619, i32 0, i32 22
  %2621 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2620, i32 0, i32 4
  %2622 = load ptr, ptr %2621, align 8, !tbaa !25
  %2623 = load i64, ptr %11, align 8, !tbaa !26
  %2624 = getelementptr inbounds double, ptr %2622, i64 %2623
  store double %2618, ptr %2624, align 8, !tbaa !30
  %2625 = load ptr, ptr %4, align 8, !tbaa !5
  %2626 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2625, i32 0, i32 32
  %2627 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2626, i32 0, i32 4
  %2628 = load ptr, ptr %2627, align 8, !tbaa !25
  %2629 = load i64, ptr %11, align 8, !tbaa !26
  %2630 = getelementptr inbounds i8, ptr %2628, i64 %2629
  %2631 = load i8, ptr %2630, align 1, !tbaa !27, !range !28, !noundef !29
  %2632 = trunc i8 %2631 to i1
  br i1 %2632, label %2633, label %2656

2633:                                             ; preds = %2611
  %2634 = load ptr, ptr %4, align 8, !tbaa !5
  %2635 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2634, i32 0, i32 20
  %2636 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2635, i32 0, i32 4
  %2637 = load ptr, ptr %2636, align 8, !tbaa !25
  %2638 = load i64, ptr %11, align 8, !tbaa !26
  %2639 = getelementptr inbounds double, ptr %2637, i64 %2638
  %2640 = load double, ptr %2639, align 8, !tbaa !30
  %2641 = load ptr, ptr %4, align 8, !tbaa !5
  %2642 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2641, i32 0, i32 34
  %2643 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2642, i32 0, i32 4
  %2644 = load ptr, ptr %2643, align 8, !tbaa !25
  %2645 = load i64, ptr %11, align 8, !tbaa !26
  %2646 = getelementptr inbounds double, ptr %2644, i64 %2645
  %2647 = load double, ptr %2646, align 8, !tbaa !30
  %2648 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2640, double noundef %2647)
  br i1 %2648, label %2649, label %2656

2649:                                             ; preds = %2633
  %2650 = load ptr, ptr %4, align 8, !tbaa !5
  %2651 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2650, i32 0, i32 22
  %2652 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2651, i32 0, i32 4
  %2653 = load ptr, ptr %2652, align 8, !tbaa !25
  %2654 = load i64, ptr %11, align 8, !tbaa !26
  %2655 = getelementptr inbounds double, ptr %2653, i64 %2654
  store double 0.000000e+00, ptr %2655, align 8, !tbaa !30
  br label %2656

2656:                                             ; preds = %2649, %2633, %2611
  %2657 = load ptr, ptr %4, align 8, !tbaa !5
  %2658 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2657, i32 0, i32 33
  %2659 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2658, i32 0, i32 4
  %2660 = load ptr, ptr %2659, align 8, !tbaa !25
  %2661 = load i64, ptr %11, align 8, !tbaa !26
  %2662 = getelementptr inbounds i8, ptr %2660, i64 %2661
  %2663 = load i8, ptr %2662, align 1, !tbaa !27, !range !28, !noundef !29
  %2664 = trunc i8 %2663 to i1
  br i1 %2664, label %2665, label %2688

2665:                                             ; preds = %2656
  %2666 = load ptr, ptr %4, align 8, !tbaa !5
  %2667 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2666, i32 0, i32 20
  %2668 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2667, i32 0, i32 4
  %2669 = load ptr, ptr %2668, align 8, !tbaa !25
  %2670 = load i64, ptr %11, align 8, !tbaa !26
  %2671 = getelementptr inbounds double, ptr %2669, i64 %2670
  %2672 = load double, ptr %2671, align 8, !tbaa !30
  %2673 = load ptr, ptr %4, align 8, !tbaa !5
  %2674 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2673, i32 0, i32 35
  %2675 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2674, i32 0, i32 4
  %2676 = load ptr, ptr %2675, align 8, !tbaa !25
  %2677 = load i64, ptr %11, align 8, !tbaa !26
  %2678 = getelementptr inbounds double, ptr %2676, i64 %2677
  %2679 = load double, ptr %2678, align 8, !tbaa !30
  %2680 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2672, double noundef %2679)
  br i1 %2680, label %2681, label %2688

2681:                                             ; preds = %2665
  %2682 = load ptr, ptr %4, align 8, !tbaa !5
  %2683 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2682, i32 0, i32 22
  %2684 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2683, i32 0, i32 4
  %2685 = load ptr, ptr %2684, align 8, !tbaa !25
  %2686 = load i64, ptr %11, align 8, !tbaa !26
  %2687 = getelementptr inbounds double, ptr %2685, i64 %2686
  store double 0.000000e+00, ptr %2687, align 8, !tbaa !30
  br label %2688

2688:                                             ; preds = %2681, %2665, %2656
  %2689 = load double, ptr %19, align 8, !tbaa !30
  %2690 = load ptr, ptr %4, align 8, !tbaa !5
  %2691 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2690, i32 0, i32 22
  %2692 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2691, i32 0, i32 4
  %2693 = load ptr, ptr %2692, align 8, !tbaa !25
  %2694 = load i64, ptr %11, align 8, !tbaa !26
  %2695 = getelementptr inbounds double, ptr %2693, i64 %2694
  %2696 = load double, ptr %2695, align 8, !tbaa !30
  %2697 = load ptr, ptr %4, align 8, !tbaa !5
  %2698 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2697, i32 0, i32 8
  %2699 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2698, i32 0, i32 4
  %2700 = load ptr, ptr %2699, align 8, !tbaa !25
  %2701 = load i64, ptr %11, align 8, !tbaa !26
  %2702 = getelementptr inbounds double, ptr %2700, i64 %2701
  %2703 = load double, ptr %2702, align 8, !tbaa !30
  %2704 = fmul double %2696, %2703
  %2705 = load ptr, ptr %5, align 8, !tbaa !5
  %2706 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %2704, ptr noundef %2705)
  %2707 = fadd double %2689, %2706
  store double %2707, ptr %19, align 8, !tbaa !30
  br label %2708

2708:                                             ; preds = %2688
  %2709 = load i64, ptr %11, align 8, !tbaa !26
  %2710 = add nsw i64 %2709, 1
  store i64 %2710, ptr %11, align 8, !tbaa !26
  br label %2606, !llvm.loop !80

2711:                                             ; preds = %2606
  %2712 = load double, ptr %19, align 8, !tbaa !30
  %2713 = load ptr, ptr %5, align 8, !tbaa !5
  %2714 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %2712, ptr noundef %2713)
  store double %2714, ptr %19, align 8, !tbaa !30
  %2715 = load ptr, ptr %4, align 8, !tbaa !5
  %2716 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2715, i32 0, i32 64
  store i64 0, ptr %2716, align 8, !tbaa !81
  store i64 0, ptr %18, align 8, !tbaa !26
  br label %2717

2717:                                             ; preds = %4604, %2711
  %2718 = load i64, ptr %18, align 8, !tbaa !26
  %2719 = load i64, ptr %9, align 8, !tbaa !26
  %2720 = sub nsw i64 %2719, 1
  %2721 = icmp sgt i64 %2718, %2720
  br i1 %2721, label %2722, label %2723

2722:                                             ; preds = %2717
  br label %4607

2723:                                             ; preds = %2717
  %2724 = load ptr, ptr %4, align 8, !tbaa !5
  %2725 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2724, i32 0, i32 56
  %2726 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2725, i32 0, i32 4
  %2727 = load ptr, ptr %2726, align 8, !tbaa !25
  %2728 = getelementptr inbounds double, ptr %2727, i64 0
  %2729 = load ptr, ptr %4, align 8, !tbaa !5
  %2730 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2729, i32 0, i32 22
  %2731 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2730, i32 0, i32 4
  %2732 = load ptr, ptr %2731, align 8, !tbaa !25
  %2733 = getelementptr inbounds double, ptr %2732, i64 0
  %2734 = load i64, ptr %9, align 8, !tbaa !26
  %2735 = sub nsw i64 %2734, 1
  %2736 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2735)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2728, i64 noundef 1, ptr noundef %2733, i64 noundef 1, i64 noundef %2736)
  %2737 = load ptr, ptr %4, align 8, !tbaa !5
  %2738 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2737, i32 0, i32 64
  %2739 = load i64, ptr %2738, align 8, !tbaa !81
  %2740 = sub nsw i64 %2739, 1
  store i64 %2740, ptr %11, align 8, !tbaa !26
  br label %2741

2741:                                             ; preds = %2795, %2723
  %2742 = load i64, ptr %11, align 8, !tbaa !26
  %2743 = icmp sge i64 %2742, 0
  br i1 %2743, label %2744, label %2798

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

2795:                                             ; preds = %2744
  %2796 = load i64, ptr %11, align 8, !tbaa !26
  %2797 = add nsw i64 %2796, -1
  store i64 %2797, ptr %11, align 8, !tbaa !26
  br label %2741, !llvm.loop !82

2798:                                             ; preds = %2741
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %2799

2799:                                             ; preds = %2826, %2798
  %2800 = load i64, ptr %11, align 8, !tbaa !26
  %2801 = load i64, ptr %9, align 8, !tbaa !26
  %2802 = sub nsw i64 %2801, 1
  %2803 = icmp sle i64 %2800, %2802
  br i1 %2803, label %2804, label %2829

2804:                                             ; preds = %2799
  %2805 = load ptr, ptr %4, align 8, !tbaa !5
  %2806 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2805, i32 0, i32 50
  %2807 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2806, i32 0, i32 4
  %2808 = load ptr, ptr %2807, align 8, !tbaa !25
  %2809 = load i64, ptr %11, align 8, !tbaa !26
  %2810 = getelementptr inbounds double, ptr %2808, i64 %2809
  %2811 = load double, ptr %2810, align 8, !tbaa !30
  %2812 = load ptr, ptr %4, align 8, !tbaa !5
  %2813 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2812, i32 0, i32 56
  %2814 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2813, i32 0, i32 4
  %2815 = load ptr, ptr %2814, align 8, !tbaa !25
  %2816 = load i64, ptr %11, align 8, !tbaa !26
  %2817 = getelementptr inbounds double, ptr %2815, i64 %2816
  %2818 = load double, ptr %2817, align 8, !tbaa !30
  %2819 = fmul double %2811, %2818
  %2820 = load ptr, ptr %4, align 8, !tbaa !5
  %2821 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2820, i32 0, i32 56
  %2822 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2821, i32 0, i32 4
  %2823 = load ptr, ptr %2822, align 8, !tbaa !25
  %2824 = load i64, ptr %11, align 8, !tbaa !26
  %2825 = getelementptr inbounds double, ptr %2823, i64 %2824
  store double %2819, ptr %2825, align 8, !tbaa !30
  br label %2826

2826:                                             ; preds = %2804
  %2827 = load i64, ptr %11, align 8, !tbaa !26
  %2828 = add nsw i64 %2827, 1
  store i64 %2828, ptr %11, align 8, !tbaa !26
  br label %2799, !llvm.loop !83

2829:                                             ; preds = %2799
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %2830

2830:                                             ; preds = %2890, %2829
  %2831 = load i64, ptr %11, align 8, !tbaa !26
  %2832 = load ptr, ptr %4, align 8, !tbaa !5
  %2833 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2832, i32 0, i32 64
  %2834 = load i64, ptr %2833, align 8, !tbaa !81
  %2835 = sub nsw i64 %2834, 1
  %2836 = icmp sle i64 %2831, %2835
  br i1 %2836, label %2837, label %2893

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

2890:                                             ; preds = %2837
  %2891 = load i64, ptr %11, align 8, !tbaa !26
  %2892 = add nsw i64 %2891, 1
  store i64 %2892, ptr %11, align 8, !tbaa !26
  br label %2830, !llvm.loop !84

2893:                                             ; preds = %2830
  %2894 = load ptr, ptr %4, align 8, !tbaa !5
  %2895 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2894, i32 0, i32 30
  %2896 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2895, i32 0, i32 4
  %2897 = load ptr, ptr %2896, align 8, !tbaa !25
  %2898 = getelementptr inbounds double, ptr %2897, i64 0
  %2899 = load ptr, ptr %4, align 8, !tbaa !5
  %2900 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2899, i32 0, i32 56
  %2901 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2900, i32 0, i32 4
  %2902 = load ptr, ptr %2901, align 8, !tbaa !25
  %2903 = getelementptr inbounds double, ptr %2902, i64 0
  %2904 = load i64, ptr %9, align 8, !tbaa !26
  %2905 = sub nsw i64 %2904, 1
  %2906 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2905)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %2898, i64 noundef 1, ptr noundef %2903, i64 noundef 1, i64 noundef %2906)
  store i8 0, ptr %16, align 1, !tbaa !27
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %2907

2907:                                             ; preds = %2995, %2893
  %2908 = load i64, ptr %11, align 8, !tbaa !26
  %2909 = load i64, ptr %9, align 8, !tbaa !26
  %2910 = sub nsw i64 %2909, 1
  %2911 = icmp sle i64 %2908, %2910
  br i1 %2911, label %2912, label %2998

2912:                                             ; preds = %2907
  %2913 = load i8, ptr %16, align 1, !tbaa !27, !range !28, !noundef !29
  %2914 = trunc i8 %2913 to i1
  br i1 %2914, label %2951, label %2915

2915:                                             ; preds = %2912
  %2916 = load ptr, ptr %4, align 8, !tbaa !5
  %2917 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2916, i32 0, i32 32
  %2918 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2917, i32 0, i32 4
  %2919 = load ptr, ptr %2918, align 8, !tbaa !25
  %2920 = load i64, ptr %11, align 8, !tbaa !26
  %2921 = getelementptr inbounds i8, ptr %2919, i64 %2920
  %2922 = load i8, ptr %2921, align 1, !tbaa !27, !range !28, !noundef !29
  %2923 = trunc i8 %2922 to i1
  br i1 %2923, label %2924, label %2949

2924:                                             ; preds = %2915
  %2925 = load ptr, ptr %4, align 8, !tbaa !5
  %2926 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2925, i32 0, i32 20
  %2927 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2926, i32 0, i32 4
  %2928 = load ptr, ptr %2927, align 8, !tbaa !25
  %2929 = load i64, ptr %11, align 8, !tbaa !26
  %2930 = getelementptr inbounds double, ptr %2928, i64 %2929
  %2931 = load double, ptr %2930, align 8, !tbaa !30
  %2932 = load ptr, ptr %4, align 8, !tbaa !5
  %2933 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2932, i32 0, i32 34
  %2934 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2933, i32 0, i32 4
  %2935 = load ptr, ptr %2934, align 8, !tbaa !25
  %2936 = load i64, ptr %11, align 8, !tbaa !26
  %2937 = getelementptr inbounds double, ptr %2935, i64 %2936
  %2938 = load double, ptr %2937, align 8, !tbaa !30
  %2939 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2931, double noundef %2938)
  br i1 %2939, label %2940, label %2949

2940:                                             ; preds = %2924
  %2941 = load ptr, ptr %4, align 8, !tbaa !5
  %2942 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2941, i32 0, i32 30
  %2943 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2942, i32 0, i32 4
  %2944 = load ptr, ptr %2943, align 8, !tbaa !25
  %2945 = load i64, ptr %11, align 8, !tbaa !26
  %2946 = getelementptr inbounds double, ptr %2944, i64 %2945
  %2947 = load double, ptr %2946, align 8, !tbaa !30
  %2948 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %2947, double noundef 0.000000e+00)
  br label %2949

2949:                                             ; preds = %2940, %2924, %2915
  %2950 = phi i1 [ false, %2924 ], [ false, %2915 ], [ %2948, %2940 ]
  br label %2951

2951:                                             ; preds = %2949, %2912
  %2952 = phi i1 [ true, %2912 ], [ %2950, %2949 ]
  %2953 = zext i1 %2952 to i8
  store i8 %2953, ptr %16, align 1, !tbaa !27
  %2954 = load i8, ptr %16, align 1, !tbaa !27, !range !28, !noundef !29
  %2955 = trunc i8 %2954 to i1
  br i1 %2955, label %2992, label %2956

2956:                                             ; preds = %2951
  %2957 = load ptr, ptr %4, align 8, !tbaa !5
  %2958 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2957, i32 0, i32 33
  %2959 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2958, i32 0, i32 4
  %2960 = load ptr, ptr %2959, align 8, !tbaa !25
  %2961 = load i64, ptr %11, align 8, !tbaa !26
  %2962 = getelementptr inbounds i8, ptr %2960, i64 %2961
  %2963 = load i8, ptr %2962, align 1, !tbaa !27, !range !28, !noundef !29
  %2964 = trunc i8 %2963 to i1
  br i1 %2964, label %2965, label %2990

2965:                                             ; preds = %2956
  %2966 = load ptr, ptr %4, align 8, !tbaa !5
  %2967 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2966, i32 0, i32 20
  %2968 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2967, i32 0, i32 4
  %2969 = load ptr, ptr %2968, align 8, !tbaa !25
  %2970 = load i64, ptr %11, align 8, !tbaa !26
  %2971 = getelementptr inbounds double, ptr %2969, i64 %2970
  %2972 = load double, ptr %2971, align 8, !tbaa !30
  %2973 = load ptr, ptr %4, align 8, !tbaa !5
  %2974 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2973, i32 0, i32 35
  %2975 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2974, i32 0, i32 4
  %2976 = load ptr, ptr %2975, align 8, !tbaa !25
  %2977 = load i64, ptr %11, align 8, !tbaa !26
  %2978 = getelementptr inbounds double, ptr %2976, i64 %2977
  %2979 = load double, ptr %2978, align 8, !tbaa !30
  %2980 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2972, double noundef %2979)
  br i1 %2980, label %2981, label %2990

2981:                                             ; preds = %2965
  %2982 = load ptr, ptr %4, align 8, !tbaa !5
  %2983 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %2982, i32 0, i32 30
  %2984 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2983, i32 0, i32 4
  %2985 = load ptr, ptr %2984, align 8, !tbaa !25
  %2986 = load i64, ptr %11, align 8, !tbaa !26
  %2987 = getelementptr inbounds double, ptr %2985, i64 %2986
  %2988 = load double, ptr %2987, align 8, !tbaa !30
  %2989 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %2988, double noundef 0.000000e+00)
  br label %2990

2990:                                             ; preds = %2981, %2965, %2956
  %2991 = phi i1 [ false, %2965 ], [ false, %2956 ], [ %2989, %2981 ]
  br label %2992

2992:                                             ; preds = %2990, %2951
  %2993 = phi i1 [ true, %2951 ], [ %2991, %2990 ]
  %2994 = zext i1 %2993 to i8
  store i8 %2994, ptr %16, align 1, !tbaa !27
  br label %2995

2995:                                             ; preds = %2992
  %2996 = load i64, ptr %11, align 8, !tbaa !26
  %2997 = add nsw i64 %2996, 1
  store i64 %2997, ptr %11, align 8, !tbaa !26
  br label %2907, !llvm.loop !85

2998:                                             ; preds = %2907
  %2999 = load i8, ptr %16, align 1, !tbaa !27, !range !28, !noundef !29
  %3000 = trunc i8 %2999 to i1
  %3001 = xor i1 %3000, true
  %3002 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %3001, ptr noundef @.str.1815, ptr noundef %3002)
  store double 0.000000e+00, ptr %8, align 8, !tbaa !30
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %3003

3003:                                             ; preds = %3028, %2998
  %3004 = load i64, ptr %11, align 8, !tbaa !26
  %3005 = load i64, ptr %9, align 8, !tbaa !26
  %3006 = sub nsw i64 %3005, 1
  %3007 = icmp sle i64 %3004, %3006
  br i1 %3007, label %3008, label %3031

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

3028:                                             ; preds = %3008
  %3029 = load i64, ptr %11, align 8, !tbaa !26
  %3030 = add nsw i64 %3029, 1
  store i64 %3030, ptr %11, align 8, !tbaa !26
  br label %3003, !llvm.loop !86

3031:                                             ; preds = %3003
  %3032 = load double, ptr %8, align 8, !tbaa !30
  %3033 = load ptr, ptr %5, align 8, !tbaa !5
  %3034 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %3032, ptr noundef %3033)
  store double %3034, ptr %8, align 8, !tbaa !30
  %3035 = load double, ptr %8, align 8, !tbaa !30
  %3036 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %3035, double noundef 0.000000e+00)
  br i1 %3036, label %3037, label %3038

3037:                                             ; preds = %3031
  br label %4607

3038:                                             ; preds = %3031
  %3039 = load ptr, ptr %4, align 8, !tbaa !5
  %3040 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3039, i32 0, i32 31
  %3041 = load double, ptr %3040, align 8, !tbaa !49
  %3042 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %3041, double noundef 0.000000e+00)
  br i1 %3042, label %3043, label %3051

3043:                                             ; preds = %3038
  %3044 = load ptr, ptr %4, align 8, !tbaa !5
  %3045 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3044, i32 0, i32 31
  %3046 = load double, ptr %3045, align 8, !tbaa !49
  %3047 = load double, ptr %8, align 8, !tbaa !30
  %3048 = fdiv double %3046, %3047
  %3049 = load ptr, ptr %4, align 8, !tbaa !5
  %3050 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3049, i32 0, i32 54
  store double %3048, ptr %3050, align 8, !tbaa !66
  br label %3056

3051:                                             ; preds = %3038
  %3052 = load double, ptr %8, align 8, !tbaa !30
  %3053 = fdiv double 1.000000e+00, %3052
  %3054 = load ptr, ptr %4, align 8, !tbaa !5
  %3055 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3054, i32 0, i32 54
  store double %3053, ptr %3055, align 8, !tbaa !66
  br label %3056

3056:                                             ; preds = %3051, %3043
  %3057 = load ptr, ptr %4, align 8, !tbaa !5
  %3058 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3057, i32 0, i32 55
  store double 1.000000e+50, ptr %3058, align 8, !tbaa !67
  %3059 = load ptr, ptr %4, align 8, !tbaa !5
  %3060 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3059, i32 0, i32 6
  %3061 = load double, ptr %3060, align 8, !tbaa !68
  %3062 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %3061, double noundef 0.000000e+00)
  br i1 %3062, label %3063, label %3076

3063:                                             ; preds = %3056
  %3064 = load ptr, ptr %4, align 8, !tbaa !5
  %3065 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3064, i32 0, i32 55
  %3066 = load double, ptr %3065, align 8, !tbaa !67
  %3067 = load ptr, ptr %4, align 8, !tbaa !5
  %3068 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3067, i32 0, i32 6
  %3069 = load double, ptr %3068, align 8, !tbaa !68
  %3070 = load double, ptr %8, align 8, !tbaa !30
  %3071 = fdiv double %3069, %3070
  %3072 = load ptr, ptr %5, align 8, !tbaa !5
  %3073 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %3066, double noundef %3071, ptr noundef %3072)
  %3074 = load ptr, ptr %4, align 8, !tbaa !5
  %3075 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3074, i32 0, i32 55
  store double %3073, ptr %3075, align 8, !tbaa !67
  br label %3076

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

3164:                                             ; preds = %3872, %3076
  %3165 = load ptr, ptr %4, align 8, !tbaa !5
  %3166 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3165, i32 0, i32 53
  %3167 = load i64, ptr %3166, align 8, !tbaa !70
  %3168 = icmp eq i64 %3167, 0
  br i1 %3168, label %3169, label %3170

3169:                                             ; preds = %3164
  br label %3897

3170:                                             ; preds = %3164
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %3171

3171:                                             ; preds = %3268, %3170
  %3172 = load i64, ptr %11, align 8, !tbaa !26
  %3173 = load i64, ptr %9, align 8, !tbaa !26
  %3174 = sub nsw i64 %3173, 1
  %3175 = icmp sle i64 %3172, %3174
  br i1 %3175, label %3176, label %3271

3176:                                             ; preds = %3171
  %3177 = load ptr, ptr %4, align 8, !tbaa !5
  %3178 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3177, i32 0, i32 23
  %3179 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3178, i32 0, i32 4
  %3180 = load ptr, ptr %3179, align 8, !tbaa !25
  %3181 = load i64, ptr %11, align 8, !tbaa !26
  %3182 = getelementptr inbounds double, ptr %3180, i64 %3181
  %3183 = load double, ptr %3182, align 8, !tbaa !30
  %3184 = load ptr, ptr %4, align 8, !tbaa !5
  %3185 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3184, i32 0, i32 12
  %3186 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3185, i32 0, i32 4
  %3187 = load ptr, ptr %3186, align 8, !tbaa !25
  %3188 = load i64, ptr %11, align 8, !tbaa !26
  %3189 = getelementptr inbounds double, ptr %3187, i64 %3188
  store double %3183, ptr %3189, align 8, !tbaa !30
  %3190 = load ptr, ptr %4, align 8, !tbaa !5
  %3191 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3190, i32 0, i32 32
  %3192 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3191, i32 0, i32 4
  %3193 = load ptr, ptr %3192, align 8, !tbaa !25
  %3194 = load i64, ptr %11, align 8, !tbaa !26
  %3195 = getelementptr inbounds i8, ptr %3193, i64 %3194
  %3196 = load i8, ptr %3195, align 1, !tbaa !27, !range !28, !noundef !29
  %3197 = trunc i8 %3196 to i1
  br i1 %3197, label %3198, label %3228

3198:                                             ; preds = %3176
  %3199 = load ptr, ptr %4, align 8, !tbaa !5
  %3200 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3199, i32 0, i32 23
  %3201 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3200, i32 0, i32 4
  %3202 = load ptr, ptr %3201, align 8, !tbaa !25
  %3203 = load i64, ptr %11, align 8, !tbaa !26
  %3204 = getelementptr inbounds double, ptr %3202, i64 %3203
  %3205 = load double, ptr %3204, align 8, !tbaa !30
  %3206 = load ptr, ptr %4, align 8, !tbaa !5
  %3207 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3206, i32 0, i32 34
  %3208 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3207, i32 0, i32 4
  %3209 = load ptr, ptr %3208, align 8, !tbaa !25
  %3210 = load i64, ptr %11, align 8, !tbaa !26
  %3211 = getelementptr inbounds double, ptr %3209, i64 %3210
  %3212 = load double, ptr %3211, align 8, !tbaa !30
  %3213 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %3205, double noundef %3212)
  br i1 %3213, label %3214, label %3228

3214:                                             ; preds = %3198
  %3215 = load ptr, ptr %4, align 8, !tbaa !5
  %3216 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3215, i32 0, i32 34
  %3217 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3216, i32 0, i32 4
  %3218 = load ptr, ptr %3217, align 8, !tbaa !25
  %3219 = load i64, ptr %11, align 8, !tbaa !26
  %3220 = getelementptr inbounds double, ptr %3218, i64 %3219
  %3221 = load double, ptr %3220, align 8, !tbaa !30
  %3222 = load ptr, ptr %4, align 8, !tbaa !5
  %3223 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3222, i32 0, i32 12
  %3224 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3223, i32 0, i32 4
  %3225 = load ptr, ptr %3224, align 8, !tbaa !25
  %3226 = load i64, ptr %11, align 8, !tbaa !26
  %3227 = getelementptr inbounds double, ptr %3225, i64 %3226
  store double %3221, ptr %3227, align 8, !tbaa !30
  br label %3228

3228:                                             ; preds = %3214, %3198, %3176
  %3229 = load ptr, ptr %4, align 8, !tbaa !5
  %3230 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3229, i32 0, i32 33
  %3231 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3230, i32 0, i32 4
  %3232 = load ptr, ptr %3231, align 8, !tbaa !25
  %3233 = load i64, ptr %11, align 8, !tbaa !26
  %3234 = getelementptr inbounds i8, ptr %3232, i64 %3233
  %3235 = load i8, ptr %3234, align 1, !tbaa !27, !range !28, !noundef !29
  %3236 = trunc i8 %3235 to i1
  br i1 %3236, label %3237, label %3267

3237:                                             ; preds = %3228
  %3238 = load ptr, ptr %4, align 8, !tbaa !5
  %3239 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3238, i32 0, i32 23
  %3240 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3239, i32 0, i32 4
  %3241 = load ptr, ptr %3240, align 8, !tbaa !25
  %3242 = load i64, ptr %11, align 8, !tbaa !26
  %3243 = getelementptr inbounds double, ptr %3241, i64 %3242
  %3244 = load double, ptr %3243, align 8, !tbaa !30
  %3245 = load ptr, ptr %4, align 8, !tbaa !5
  %3246 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3245, i32 0, i32 35
  %3247 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3246, i32 0, i32 4
  %3248 = load ptr, ptr %3247, align 8, !tbaa !25
  %3249 = load i64, ptr %11, align 8, !tbaa !26
  %3250 = getelementptr inbounds double, ptr %3248, i64 %3249
  %3251 = load double, ptr %3250, align 8, !tbaa !30
  %3252 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %3244, double noundef %3251)
  br i1 %3252, label %3253, label %3267

3253:                                             ; preds = %3237
  %3254 = load ptr, ptr %4, align 8, !tbaa !5
  %3255 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3254, i32 0, i32 35
  %3256 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3255, i32 0, i32 4
  %3257 = load ptr, ptr %3256, align 8, !tbaa !25
  %3258 = load i64, ptr %11, align 8, !tbaa !26
  %3259 = getelementptr inbounds double, ptr %3257, i64 %3258
  %3260 = load double, ptr %3259, align 8, !tbaa !30
  %3261 = load ptr, ptr %4, align 8, !tbaa !5
  %3262 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3261, i32 0, i32 12
  %3263 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3262, i32 0, i32 4
  %3264 = load ptr, ptr %3263, align 8, !tbaa !25
  %3265 = load i64, ptr %11, align 8, !tbaa !26
  %3266 = getelementptr inbounds double, ptr %3264, i64 %3265
  store double %3260, ptr %3266, align 8, !tbaa !30
  br label %3267

3267:                                             ; preds = %3253, %3237, %3228
  br label %3268

3268:                                             ; preds = %3267
  %3269 = load i64, ptr %11, align 8, !tbaa !26
  %3270 = add nsw i64 %3269, 1
  store i64 %3270, ptr %11, align 8, !tbaa !26
  br label %3171, !llvm.loop !87

3271:                                             ; preds = %3171
  %3272 = load ptr, ptr %4, align 8, !tbaa !5
  %3273 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef %3272, ptr noundef %3273)
  %3274 = load ptr, ptr %4, align 8, !tbaa !5
  %3275 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3274, i32 0, i32 7
  %3276 = load double, ptr %3275, align 8, !tbaa !43
  %3277 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %3276, double noundef 0.000000e+00)
  br i1 %3277, label %3278, label %3279

3278:                                             ; preds = %3271
  br label %3294

3279:                                             ; preds = %3271
  %3280 = load ptr, ptr %4, align 8, !tbaa !5
  %3281 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3280, i32 0, i32 16
  store i8 1, ptr %3281, align 1, !tbaa !46
  %3282 = load ptr, ptr %4, align 8, !tbaa !5
  %3283 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3282, i32 0, i32 19
  %3284 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %3283, i32 0, i32 0
  store i32 21, ptr %3284, align 8, !tbaa !9
  br label %4617

3285:                                             ; preds = %308
  %3286 = load ptr, ptr %4, align 8, !tbaa !5
  %3287 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3286, i32 0, i32 16
  store i8 0, ptr %3287, align 1, !tbaa !46
  %3288 = load ptr, ptr %4, align 8, !tbaa !5
  %3289 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3288, i32 0, i32 37
  %3290 = load i64, ptr %3289, align 8, !tbaa !37
  %3291 = add nsw i64 %3290, 1
  %3292 = load ptr, ptr %4, align 8, !tbaa !5
  %3293 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3292, i32 0, i32 37
  store i64 %3291, ptr %3293, align 8, !tbaa !37
  br label %3739

3294:                                             ; preds = %3278
  %3295 = load ptr, ptr %4, align 8, !tbaa !5
  %3296 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3295, i32 0, i32 15
  store i8 1, ptr %3296, align 8, !tbaa !51
  %3297 = load ptr, ptr %4, align 8, !tbaa !5
  %3298 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3297, i32 0, i32 19
  %3299 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %3298, i32 0, i32 0
  store i32 22, ptr %3299, align 8, !tbaa !9
  br label %4617

3300:                                             ; preds = %315
  %3301 = load ptr, ptr %4, align 8, !tbaa !5
  %3302 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3301, i32 0, i32 13
  %3303 = load double, ptr %3302, align 8, !tbaa !47
  %3304 = load ptr, ptr %4, align 8, !tbaa !5
  %3305 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3304, i32 0, i32 41
  store double %3303, ptr %3305, align 8, !tbaa !55
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %3306

3306:                                             ; preds = %3721, %3300
  %3307 = load i64, ptr %11, align 8, !tbaa !26
  %3308 = load i64, ptr %9, align 8, !tbaa !26
  %3309 = sub nsw i64 %3308, 1
  %3310 = icmp sgt i64 %3307, %3309
  br i1 %3310, label %3311, label %3312

3311:                                             ; preds = %3306
  br label %3731

3312:                                             ; preds = %3306
  %3313 = load ptr, ptr %4, align 8, !tbaa !5
  %3314 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3313, i32 0, i32 12
  %3315 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3314, i32 0, i32 4
  %3316 = load ptr, ptr %3315, align 8, !tbaa !25
  %3317 = load i64, ptr %11, align 8, !tbaa !26
  %3318 = getelementptr inbounds double, ptr %3316, i64 %3317
  %3319 = load double, ptr %3318, align 8, !tbaa !30
  store double %3319, ptr %13, align 8, !tbaa !30
  store i8 0, ptr %16, align 1, !tbaa !27
  %3320 = load ptr, ptr %4, align 8, !tbaa !5
  %3321 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3320, i32 0, i32 32
  %3322 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3321, i32 0, i32 4
  %3323 = load ptr, ptr %3322, align 8, !tbaa !25
  %3324 = load i64, ptr %11, align 8, !tbaa !26
  %3325 = getelementptr inbounds i8, ptr %3323, i64 %3324
  %3326 = load i8, ptr %3325, align 1, !tbaa !27, !range !28, !noundef !29
  %3327 = trunc i8 %3326 to i1
  br i1 %3327, label %3328, label %3356

3328:                                             ; preds = %3312
  %3329 = load i8, ptr %16, align 1, !tbaa !27, !range !28, !noundef !29
  %3330 = trunc i8 %3329 to i1
  br i1 %3330, label %3353, label %3331

3331:                                             ; preds = %3328
  %3332 = load double, ptr %13, align 8, !tbaa !30
  %3333 = load ptr, ptr %4, align 8, !tbaa !5
  %3334 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3333, i32 0, i32 7
  %3335 = load double, ptr %3334, align 8, !tbaa !43
  %3336 = load ptr, ptr %4, align 8, !tbaa !5
  %3337 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3336, i32 0, i32 8
  %3338 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3337, i32 0, i32 4
  %3339 = load ptr, ptr %3338, align 8, !tbaa !25
  %3340 = load i64, ptr %11, align 8, !tbaa !26
  %3341 = getelementptr inbounds double, ptr %3339, i64 %3340
  %3342 = load double, ptr %3341, align 8, !tbaa !30
  %3343 = fneg double %3335
  %3344 = call double @llvm.fmuladd.f64(double %3343, double %3342, double %3332)
  %3345 = load ptr, ptr %4, align 8, !tbaa !5
  %3346 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3345, i32 0, i32 34
  %3347 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3346, i32 0, i32 4
  %3348 = load ptr, ptr %3347, align 8, !tbaa !25
  %3349 = load i64, ptr %11, align 8, !tbaa !26
  %3350 = getelementptr inbounds double, ptr %3348, i64 %3349
  %3351 = load double, ptr %3350, align 8, !tbaa !30
  %3352 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %3344, double noundef %3351)
  br label %3353

3353:                                             ; preds = %3331, %3328
  %3354 = phi i1 [ true, %3328 ], [ %3352, %3331 ]
  %3355 = zext i1 %3354 to i8
  store i8 %3355, ptr %16, align 1, !tbaa !27
  br label %3356

3356:                                             ; preds = %3353, %3312
  %3357 = load ptr, ptr %4, align 8, !tbaa !5
  %3358 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3357, i32 0, i32 33
  %3359 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3358, i32 0, i32 4
  %3360 = load ptr, ptr %3359, align 8, !tbaa !25
  %3361 = load i64, ptr %11, align 8, !tbaa !26
  %3362 = getelementptr inbounds i8, ptr %3360, i64 %3361
  %3363 = load i8, ptr %3362, align 1, !tbaa !27, !range !28, !noundef !29
  %3364 = trunc i8 %3363 to i1
  br i1 %3364, label %3365, label %3392

3365:                                             ; preds = %3356
  %3366 = load i8, ptr %16, align 1, !tbaa !27, !range !28, !noundef !29
  %3367 = trunc i8 %3366 to i1
  br i1 %3367, label %3389, label %3368

3368:                                             ; preds = %3365
  %3369 = load double, ptr %13, align 8, !tbaa !30
  %3370 = load ptr, ptr %4, align 8, !tbaa !5
  %3371 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3370, i32 0, i32 7
  %3372 = load double, ptr %3371, align 8, !tbaa !43
  %3373 = load ptr, ptr %4, align 8, !tbaa !5
  %3374 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3373, i32 0, i32 8
  %3375 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3374, i32 0, i32 4
  %3376 = load ptr, ptr %3375, align 8, !tbaa !25
  %3377 = load i64, ptr %11, align 8, !tbaa !26
  %3378 = getelementptr inbounds double, ptr %3376, i64 %3377
  %3379 = load double, ptr %3378, align 8, !tbaa !30
  %3380 = call double @llvm.fmuladd.f64(double %3372, double %3379, double %3369)
  %3381 = load ptr, ptr %4, align 8, !tbaa !5
  %3382 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3381, i32 0, i32 35
  %3383 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3382, i32 0, i32 4
  %3384 = load ptr, ptr %3383, align 8, !tbaa !25
  %3385 = load i64, ptr %11, align 8, !tbaa !26
  %3386 = getelementptr inbounds double, ptr %3384, i64 %3385
  %3387 = load double, ptr %3386, align 8, !tbaa !30
  %3388 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %3380, double noundef %3387)
  br label %3389

3389:                                             ; preds = %3368, %3365
  %3390 = phi i1 [ true, %3365 ], [ %3388, %3368 ]
  %3391 = zext i1 %3390 to i8
  store i8 %3391, ptr %16, align 1, !tbaa !27
  br label %3392

3392:                                             ; preds = %3389, %3356
  %3393 = load i8, ptr %16, align 1, !tbaa !27, !range !28, !noundef !29
  %3394 = trunc i8 %3393 to i1
  br i1 %3394, label %3395, label %3396

3395:                                             ; preds = %3392
  br label %3550

3396:                                             ; preds = %3392
  %3397 = load double, ptr %13, align 8, !tbaa !30
  %3398 = load ptr, ptr %4, align 8, !tbaa !5
  %3399 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3398, i32 0, i32 7
  %3400 = load double, ptr %3399, align 8, !tbaa !43
  %3401 = load ptr, ptr %4, align 8, !tbaa !5
  %3402 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3401, i32 0, i32 8
  %3403 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3402, i32 0, i32 4
  %3404 = load ptr, ptr %3403, align 8, !tbaa !25
  %3405 = load i64, ptr %11, align 8, !tbaa !26
  %3406 = getelementptr inbounds double, ptr %3404, i64 %3405
  %3407 = load double, ptr %3406, align 8, !tbaa !30
  %3408 = fneg double %3400
  %3409 = call double @llvm.fmuladd.f64(double %3408, double %3407, double %3397)
  %3410 = load ptr, ptr %4, align 8, !tbaa !5
  %3411 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3410, i32 0, i32 12
  %3412 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3411, i32 0, i32 4
  %3413 = load ptr, ptr %3412, align 8, !tbaa !25
  %3414 = load i64, ptr %11, align 8, !tbaa !26
  %3415 = getelementptr inbounds double, ptr %3413, i64 %3414
  store double %3409, ptr %3415, align 8, !tbaa !30
  %3416 = load ptr, ptr %4, align 8, !tbaa !5
  %3417 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3416, i32 0, i32 19
  %3418 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %3417, i32 0, i32 0
  store i32 23, ptr %3418, align 8, !tbaa !9
  br label %4617

3419:                                             ; preds = %322
  %3420 = load ptr, ptr %4, align 8, !tbaa !5
  %3421 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3420, i32 0, i32 13
  %3422 = load double, ptr %3421, align 8, !tbaa !47
  %3423 = load ptr, ptr %4, align 8, !tbaa !5
  %3424 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3423, i32 0, i32 42
  store double %3422, ptr %3424, align 8, !tbaa !56
  %3425 = load double, ptr %13, align 8, !tbaa !30
  %3426 = load ptr, ptr %4, align 8, !tbaa !5
  %3427 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3426, i32 0, i32 7
  %3428 = load double, ptr %3427, align 8, !tbaa !43
  %3429 = fmul double 5.000000e-01, %3428
  %3430 = load ptr, ptr %4, align 8, !tbaa !5
  %3431 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3430, i32 0, i32 8
  %3432 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3431, i32 0, i32 4
  %3433 = load ptr, ptr %3432, align 8, !tbaa !25
  %3434 = load i64, ptr %11, align 8, !tbaa !26
  %3435 = getelementptr inbounds double, ptr %3433, i64 %3434
  %3436 = load double, ptr %3435, align 8, !tbaa !30
  %3437 = fneg double %3429
  %3438 = call double @llvm.fmuladd.f64(double %3437, double %3436, double %3425)
  %3439 = load ptr, ptr %4, align 8, !tbaa !5
  %3440 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3439, i32 0, i32 12
  %3441 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3440, i32 0, i32 4
  %3442 = load ptr, ptr %3441, align 8, !tbaa !25
  %3443 = load i64, ptr %11, align 8, !tbaa !26
  %3444 = getelementptr inbounds double, ptr %3442, i64 %3443
  store double %3438, ptr %3444, align 8, !tbaa !30
  %3445 = load ptr, ptr %4, align 8, !tbaa !5
  %3446 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3445, i32 0, i32 19
  %3447 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %3446, i32 0, i32 0
  store i32 24, ptr %3447, align 8, !tbaa !9
  br label %4617

3448:                                             ; preds = %329
  %3449 = load ptr, ptr %4, align 8, !tbaa !5
  %3450 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3449, i32 0, i32 13
  %3451 = load double, ptr %3450, align 8, !tbaa !47
  %3452 = load ptr, ptr %4, align 8, !tbaa !5
  %3453 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3452, i32 0, i32 43
  store double %3451, ptr %3453, align 8, !tbaa !57
  %3454 = load double, ptr %13, align 8, !tbaa !30
  %3455 = load ptr, ptr %4, align 8, !tbaa !5
  %3456 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3455, i32 0, i32 7
  %3457 = load double, ptr %3456, align 8, !tbaa !43
  %3458 = fmul double 5.000000e-01, %3457
  %3459 = load ptr, ptr %4, align 8, !tbaa !5
  %3460 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3459, i32 0, i32 8
  %3461 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3460, i32 0, i32 4
  %3462 = load ptr, ptr %3461, align 8, !tbaa !25
  %3463 = load i64, ptr %11, align 8, !tbaa !26
  %3464 = getelementptr inbounds double, ptr %3462, i64 %3463
  %3465 = load double, ptr %3464, align 8, !tbaa !30
  %3466 = call double @llvm.fmuladd.f64(double %3458, double %3465, double %3454)
  %3467 = load ptr, ptr %4, align 8, !tbaa !5
  %3468 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3467, i32 0, i32 12
  %3469 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3468, i32 0, i32 4
  %3470 = load ptr, ptr %3469, align 8, !tbaa !25
  %3471 = load i64, ptr %11, align 8, !tbaa !26
  %3472 = getelementptr inbounds double, ptr %3470, i64 %3471
  store double %3466, ptr %3472, align 8, !tbaa !30
  %3473 = load ptr, ptr %4, align 8, !tbaa !5
  %3474 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3473, i32 0, i32 19
  %3475 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %3474, i32 0, i32 0
  store i32 25, ptr %3475, align 8, !tbaa !9
  br label %4617

3476:                                             ; preds = %336
  %3477 = load ptr, ptr %4, align 8, !tbaa !5
  %3478 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3477, i32 0, i32 13
  %3479 = load double, ptr %3478, align 8, !tbaa !47
  %3480 = load ptr, ptr %4, align 8, !tbaa !5
  %3481 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3480, i32 0, i32 44
  store double %3479, ptr %3481, align 8, !tbaa !58
  %3482 = load double, ptr %13, align 8, !tbaa !30
  %3483 = load ptr, ptr %4, align 8, !tbaa !5
  %3484 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3483, i32 0, i32 7
  %3485 = load double, ptr %3484, align 8, !tbaa !43
  %3486 = load ptr, ptr %4, align 8, !tbaa !5
  %3487 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3486, i32 0, i32 8
  %3488 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3487, i32 0, i32 4
  %3489 = load ptr, ptr %3488, align 8, !tbaa !25
  %3490 = load i64, ptr %11, align 8, !tbaa !26
  %3491 = getelementptr inbounds double, ptr %3489, i64 %3490
  %3492 = load double, ptr %3491, align 8, !tbaa !30
  %3493 = call double @llvm.fmuladd.f64(double %3485, double %3492, double %3482)
  %3494 = load ptr, ptr %4, align 8, !tbaa !5
  %3495 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3494, i32 0, i32 12
  %3496 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3495, i32 0, i32 4
  %3497 = load ptr, ptr %3496, align 8, !tbaa !25
  %3498 = load i64, ptr %11, align 8, !tbaa !26
  %3499 = getelementptr inbounds double, ptr %3497, i64 %3498
  store double %3493, ptr %3499, align 8, !tbaa !30
  %3500 = load ptr, ptr %4, align 8, !tbaa !5
  %3501 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3500, i32 0, i32 19
  %3502 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %3501, i32 0, i32 0
  store i32 26, ptr %3502, align 8, !tbaa !9
  br label %4617

3503:                                             ; preds = %343
  %3504 = load ptr, ptr %4, align 8, !tbaa !5
  %3505 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3504, i32 0, i32 13
  %3506 = load double, ptr %3505, align 8, !tbaa !47
  %3507 = load ptr, ptr %4, align 8, !tbaa !5
  %3508 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3507, i32 0, i32 45
  store double %3506, ptr %3508, align 8, !tbaa !59
  %3509 = load ptr, ptr %4, align 8, !tbaa !5
  %3510 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3509, i32 0, i32 44
  %3511 = load double, ptr %3510, align 8, !tbaa !58
  %3512 = load ptr, ptr %4, align 8, !tbaa !5
  %3513 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3512, i32 0, i32 43
  %3514 = load double, ptr %3513, align 8, !tbaa !57
  %3515 = fsub double %3511, %3514
  %3516 = load ptr, ptr %4, align 8, !tbaa !5
  %3517 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3516, i32 0, i32 45
  %3518 = load double, ptr %3517, align 8, !tbaa !59
  %3519 = load ptr, ptr %4, align 8, !tbaa !5
  %3520 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3519, i32 0, i32 42
  %3521 = load double, ptr %3520, align 8, !tbaa !56
  %3522 = fsub double %3518, %3521
  %3523 = fneg double %3522
  %3524 = call double @llvm.fmuladd.f64(double 8.000000e+00, double %3515, double %3523)
  %3525 = load ptr, ptr %4, align 8, !tbaa !5
  %3526 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3525, i32 0, i32 7
  %3527 = load double, ptr %3526, align 8, !tbaa !43
  %3528 = fmul double 6.000000e+00, %3527
  %3529 = load ptr, ptr %4, align 8, !tbaa !5
  %3530 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3529, i32 0, i32 8
  %3531 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3530, i32 0, i32 4
  %3532 = load ptr, ptr %3531, align 8, !tbaa !25
  %3533 = load i64, ptr %11, align 8, !tbaa !26
  %3534 = getelementptr inbounds double, ptr %3532, i64 %3533
  %3535 = load double, ptr %3534, align 8, !tbaa !30
  %3536 = fmul double %3528, %3535
  %3537 = fdiv double %3524, %3536
  %3538 = load ptr, ptr %4, align 8, !tbaa !5
  %3539 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3538, i32 0, i32 14
  %3540 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3539, i32 0, i32 4
  %3541 = load ptr, ptr %3540, align 8, !tbaa !25
  %3542 = load i64, ptr %11, align 8, !tbaa !26
  %3543 = getelementptr inbounds double, ptr %3541, i64 %3542
  store double %3537, ptr %3543, align 8, !tbaa !30
  %3544 = load ptr, ptr %4, align 8, !tbaa !5
  %3545 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3544, i32 0, i32 37
  %3546 = load i64, ptr %3545, align 8, !tbaa !37
  %3547 = add nsw i64 %3546, 4
  %3548 = load ptr, ptr %4, align 8, !tbaa !5
  %3549 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3548, i32 0, i32 37
  store i64 %3547, ptr %3549, align 8, !tbaa !37
  br label %3721

3550:                                             ; preds = %3395
  %3551 = load double, ptr %13, align 8, !tbaa !30
  %3552 = load ptr, ptr %4, align 8, !tbaa !5
  %3553 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3552, i32 0, i32 7
  %3554 = load double, ptr %3553, align 8, !tbaa !43
  %3555 = load ptr, ptr %4, align 8, !tbaa !5
  %3556 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3555, i32 0, i32 8
  %3557 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3556, i32 0, i32 4
  %3558 = load ptr, ptr %3557, align 8, !tbaa !25
  %3559 = load i64, ptr %11, align 8, !tbaa !26
  %3560 = getelementptr inbounds double, ptr %3558, i64 %3559
  %3561 = load double, ptr %3560, align 8, !tbaa !30
  %3562 = fneg double %3554
  %3563 = call double @llvm.fmuladd.f64(double %3562, double %3561, double %3551)
  %3564 = load ptr, ptr %4, align 8, !tbaa !5
  %3565 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3564, i32 0, i32 46
  store double %3563, ptr %3565, align 8, !tbaa !60
  %3566 = load double, ptr %13, align 8, !tbaa !30
  %3567 = load ptr, ptr %4, align 8, !tbaa !5
  %3568 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3567, i32 0, i32 7
  %3569 = load double, ptr %3568, align 8, !tbaa !43
  %3570 = load ptr, ptr %4, align 8, !tbaa !5
  %3571 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3570, i32 0, i32 8
  %3572 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3571, i32 0, i32 4
  %3573 = load ptr, ptr %3572, align 8, !tbaa !25
  %3574 = load i64, ptr %11, align 8, !tbaa !26
  %3575 = getelementptr inbounds double, ptr %3573, i64 %3574
  %3576 = load double, ptr %3575, align 8, !tbaa !30
  %3577 = call double @llvm.fmuladd.f64(double %3569, double %3576, double %3566)
  %3578 = load ptr, ptr %4, align 8, !tbaa !5
  %3579 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3578, i32 0, i32 47
  store double %3577, ptr %3579, align 8, !tbaa !61
  %3580 = load ptr, ptr %4, align 8, !tbaa !5
  %3581 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3580, i32 0, i32 32
  %3582 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3581, i32 0, i32 4
  %3583 = load ptr, ptr %3582, align 8, !tbaa !25
  %3584 = load i64, ptr %11, align 8, !tbaa !26
  %3585 = getelementptr inbounds i8, ptr %3583, i64 %3584
  %3586 = load i8, ptr %3585, align 1, !tbaa !27, !range !28, !noundef !29
  %3587 = trunc i8 %3586 to i1
  br i1 %3587, label %3588, label %3610

3588:                                             ; preds = %3550
  %3589 = load ptr, ptr %4, align 8, !tbaa !5
  %3590 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3589, i32 0, i32 46
  %3591 = load double, ptr %3590, align 8, !tbaa !60
  %3592 = load ptr, ptr %4, align 8, !tbaa !5
  %3593 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3592, i32 0, i32 34
  %3594 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3593, i32 0, i32 4
  %3595 = load ptr, ptr %3594, align 8, !tbaa !25
  %3596 = load i64, ptr %11, align 8, !tbaa !26
  %3597 = getelementptr inbounds double, ptr %3595, i64 %3596
  %3598 = load double, ptr %3597, align 8, !tbaa !30
  %3599 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %3591, double noundef %3598)
  br i1 %3599, label %3600, label %3610

3600:                                             ; preds = %3588
  %3601 = load ptr, ptr %4, align 8, !tbaa !5
  %3602 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3601, i32 0, i32 34
  %3603 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3602, i32 0, i32 4
  %3604 = load ptr, ptr %3603, align 8, !tbaa !25
  %3605 = load i64, ptr %11, align 8, !tbaa !26
  %3606 = getelementptr inbounds double, ptr %3604, i64 %3605
  %3607 = load double, ptr %3606, align 8, !tbaa !30
  %3608 = load ptr, ptr %4, align 8, !tbaa !5
  %3609 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3608, i32 0, i32 46
  store double %3607, ptr %3609, align 8, !tbaa !60
  br label %3610

3610:                                             ; preds = %3600, %3588, %3550
  %3611 = load ptr, ptr %4, align 8, !tbaa !5
  %3612 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3611, i32 0, i32 33
  %3613 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3612, i32 0, i32 4
  %3614 = load ptr, ptr %3613, align 8, !tbaa !25
  %3615 = load i64, ptr %11, align 8, !tbaa !26
  %3616 = getelementptr inbounds i8, ptr %3614, i64 %3615
  %3617 = load i8, ptr %3616, align 1, !tbaa !27, !range !28, !noundef !29
  %3618 = trunc i8 %3617 to i1
  br i1 %3618, label %3619, label %3641

3619:                                             ; preds = %3610
  %3620 = load ptr, ptr %4, align 8, !tbaa !5
  %3621 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3620, i32 0, i32 47
  %3622 = load double, ptr %3621, align 8, !tbaa !61
  %3623 = load ptr, ptr %4, align 8, !tbaa !5
  %3624 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3623, i32 0, i32 35
  %3625 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3624, i32 0, i32 4
  %3626 = load ptr, ptr %3625, align 8, !tbaa !25
  %3627 = load i64, ptr %11, align 8, !tbaa !26
  %3628 = getelementptr inbounds double, ptr %3626, i64 %3627
  %3629 = load double, ptr %3628, align 8, !tbaa !30
  %3630 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %3622, double noundef %3629)
  br i1 %3630, label %3631, label %3641

3631:                                             ; preds = %3619
  %3632 = load ptr, ptr %4, align 8, !tbaa !5
  %3633 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3632, i32 0, i32 35
  %3634 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3633, i32 0, i32 4
  %3635 = load ptr, ptr %3634, align 8, !tbaa !25
  %3636 = load i64, ptr %11, align 8, !tbaa !26
  %3637 = getelementptr inbounds double, ptr %3635, i64 %3636
  %3638 = load double, ptr %3637, align 8, !tbaa !30
  %3639 = load ptr, ptr %4, align 8, !tbaa !5
  %3640 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3639, i32 0, i32 47
  store double %3638, ptr %3640, align 8, !tbaa !61
  br label %3641

3641:                                             ; preds = %3631, %3619, %3610
  %3642 = load ptr, ptr %4, align 8, !tbaa !5
  %3643 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3642, i32 0, i32 46
  %3644 = load double, ptr %3643, align 8, !tbaa !60
  %3645 = load ptr, ptr %4, align 8, !tbaa !5
  %3646 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3645, i32 0, i32 12
  %3647 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3646, i32 0, i32 4
  %3648 = load ptr, ptr %3647, align 8, !tbaa !25
  %3649 = load i64, ptr %11, align 8, !tbaa !26
  %3650 = getelementptr inbounds double, ptr %3648, i64 %3649
  store double %3644, ptr %3650, align 8, !tbaa !30
  %3651 = load ptr, ptr %4, align 8, !tbaa !5
  %3652 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3651, i32 0, i32 19
  %3653 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %3652, i32 0, i32 0
  store i32 27, ptr %3653, align 8, !tbaa !9
  br label %4617

3654:                                             ; preds = %350
  %3655 = load ptr, ptr %4, align 8, !tbaa !5
  %3656 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3655, i32 0, i32 13
  %3657 = load double, ptr %3656, align 8, !tbaa !47
  %3658 = load ptr, ptr %4, align 8, !tbaa !5
  %3659 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3658, i32 0, i32 43
  store double %3657, ptr %3659, align 8, !tbaa !57
  %3660 = load ptr, ptr %4, align 8, !tbaa !5
  %3661 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3660, i32 0, i32 47
  %3662 = load double, ptr %3661, align 8, !tbaa !61
  %3663 = load ptr, ptr %4, align 8, !tbaa !5
  %3664 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3663, i32 0, i32 12
  %3665 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3664, i32 0, i32 4
  %3666 = load ptr, ptr %3665, align 8, !tbaa !25
  %3667 = load i64, ptr %11, align 8, !tbaa !26
  %3668 = getelementptr inbounds double, ptr %3666, i64 %3667
  store double %3662, ptr %3668, align 8, !tbaa !30
  %3669 = load ptr, ptr %4, align 8, !tbaa !5
  %3670 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3669, i32 0, i32 19
  %3671 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %3670, i32 0, i32 0
  store i32 28, ptr %3671, align 8, !tbaa !9
  br label %4617

3672:                                             ; preds = %357
  %3673 = load ptr, ptr %4, align 8, !tbaa !5
  %3674 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3673, i32 0, i32 13
  %3675 = load double, ptr %3674, align 8, !tbaa !47
  %3676 = load ptr, ptr %4, align 8, !tbaa !5
  %3677 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3676, i32 0, i32 44
  store double %3675, ptr %3677, align 8, !tbaa !58
  %3678 = load ptr, ptr %4, align 8, !tbaa !5
  %3679 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3678, i32 0, i32 46
  %3680 = load double, ptr %3679, align 8, !tbaa !60
  %3681 = load ptr, ptr %4, align 8, !tbaa !5
  %3682 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3681, i32 0, i32 47
  %3683 = load double, ptr %3682, align 8, !tbaa !61
  %3684 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %3680, double noundef %3683)
  br i1 %3684, label %3685, label %3707

3685:                                             ; preds = %3672
  %3686 = load ptr, ptr %4, align 8, !tbaa !5
  %3687 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3686, i32 0, i32 44
  %3688 = load double, ptr %3687, align 8, !tbaa !58
  %3689 = load ptr, ptr %4, align 8, !tbaa !5
  %3690 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3689, i32 0, i32 43
  %3691 = load double, ptr %3690, align 8, !tbaa !57
  %3692 = fsub double %3688, %3691
  %3693 = load ptr, ptr %4, align 8, !tbaa !5
  %3694 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3693, i32 0, i32 47
  %3695 = load double, ptr %3694, align 8, !tbaa !61
  %3696 = load ptr, ptr %4, align 8, !tbaa !5
  %3697 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3696, i32 0, i32 46
  %3698 = load double, ptr %3697, align 8, !tbaa !60
  %3699 = fsub double %3695, %3698
  %3700 = fdiv double %3692, %3699
  %3701 = load ptr, ptr %4, align 8, !tbaa !5
  %3702 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3701, i32 0, i32 14
  %3703 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3702, i32 0, i32 4
  %3704 = load ptr, ptr %3703, align 8, !tbaa !25
  %3705 = load i64, ptr %11, align 8, !tbaa !26
  %3706 = getelementptr inbounds double, ptr %3704, i64 %3705
  store double %3700, ptr %3706, align 8, !tbaa !30
  br label %3714

3707:                                             ; preds = %3672
  %3708 = load ptr, ptr %4, align 8, !tbaa !5
  %3709 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3708, i32 0, i32 14
  %3710 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3709, i32 0, i32 4
  %3711 = load ptr, ptr %3710, align 8, !tbaa !25
  %3712 = load i64, ptr %11, align 8, !tbaa !26
  %3713 = getelementptr inbounds double, ptr %3711, i64 %3712
  store double 0.000000e+00, ptr %3713, align 8, !tbaa !30
  br label %3714

3714:                                             ; preds = %3707, %3685
  %3715 = load ptr, ptr %4, align 8, !tbaa !5
  %3716 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3715, i32 0, i32 37
  %3717 = load i64, ptr %3716, align 8, !tbaa !37
  %3718 = add nsw i64 %3717, 2
  %3719 = load ptr, ptr %4, align 8, !tbaa !5
  %3720 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3719, i32 0, i32 37
  store i64 %3718, ptr %3720, align 8, !tbaa !37
  br label %3721

3721:                                             ; preds = %3714, %3503
  %3722 = load double, ptr %13, align 8, !tbaa !30
  %3723 = load ptr, ptr %4, align 8, !tbaa !5
  %3724 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3723, i32 0, i32 12
  %3725 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3724, i32 0, i32 4
  %3726 = load ptr, ptr %3725, align 8, !tbaa !25
  %3727 = load i64, ptr %11, align 8, !tbaa !26
  %3728 = getelementptr inbounds double, ptr %3726, i64 %3727
  store double %3722, ptr %3728, align 8, !tbaa !30
  %3729 = load i64, ptr %11, align 8, !tbaa !26
  %3730 = add nsw i64 %3729, 1
  store i64 %3730, ptr %11, align 8, !tbaa !26
  br label %3306

3731:                                             ; preds = %3311
  %3732 = load ptr, ptr %4, align 8, !tbaa !5
  %3733 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3732, i32 0, i32 41
  %3734 = load double, ptr %3733, align 8, !tbaa !55
  %3735 = load ptr, ptr %4, align 8, !tbaa !5
  %3736 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3735, i32 0, i32 13
  store double %3734, ptr %3736, align 8, !tbaa !47
  %3737 = load ptr, ptr %4, align 8, !tbaa !5
  %3738 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3737, i32 0, i32 15
  store i8 0, ptr %3738, align 8, !tbaa !51
  br label %3739

3739:                                             ; preds = %3731, %3285
  %3740 = load ptr, ptr %4, align 8, !tbaa !5
  %3741 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3740, i32 0, i32 67
  %3742 = load ptr, ptr %4, align 8, !tbaa !5
  %3743 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3742, i32 0, i32 8
  %3744 = load ptr, ptr %4, align 8, !tbaa !5
  %3745 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3744, i32 0, i32 69
  %3746 = load ptr, ptr %4, align 8, !tbaa !5
  %3747 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3746, i32 0, i32 30
  %3748 = load ptr, ptr %4, align 8, !tbaa !5
  %3749 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3748, i32 0, i32 54
  %3750 = load double, ptr %3749, align 8, !tbaa !66
  %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 double, ptr %3754, align 8, !tbaa !47
  %3756 = load ptr, ptr %4, align 8, !tbaa !5
  %3757 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3756, i32 0, i32 14
  %3758 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl31smoothnessmonitorenqueuepoint1uEPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_dS4_dS4_PNS_8ae_stateE(ptr noundef %3741, ptr noundef %3743, ptr noundef %3745, ptr noundef %3747, double noundef %3750, ptr noundef %3752, double noundef %3755, ptr noundef %3757, ptr noundef %3758)
  %3759 = load ptr, ptr %4, align 8, !tbaa !5
  %3760 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3759, i32 0, i32 13
  %3761 = load ptr, ptr %4, align 8, !tbaa !5
  %3762 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3761, i32 0, i32 14
  %3763 = load i64, ptr %9, align 8, !tbaa !26
  %3764 = load ptr, ptr %4, align 8, !tbaa !5
  %3765 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3764, i32 0, i32 58
  %3766 = load double, ptr %3765, align 8, !tbaa !72
  %3767 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl12trimfunctionEPdPNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef %3760, ptr noundef %3762, i64 noundef %3763, double noundef %3766, ptr noundef %3767)
  %3768 = load ptr, ptr %4, align 8, !tbaa !5
  %3769 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3768, i32 0, i32 13
  %3770 = load double, ptr %3769, align 8, !tbaa !47
  %3771 = load ptr, ptr %4, align 8, !tbaa !5
  %3772 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3771, i32 0, i32 28
  store double %3770, ptr %3772, align 8, !tbaa !69
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %3773

3773:                                             ; preds = %3869, %3739
  %3774 = load i64, ptr %11, align 8, !tbaa !26
  %3775 = load i64, ptr %9, align 8, !tbaa !26
  %3776 = sub nsw i64 %3775, 1
  %3777 = icmp sle i64 %3774, %3776
  br i1 %3777, label %3778, label %3872

3778:                                             ; preds = %3773
  %3779 = load ptr, ptr %4, align 8, !tbaa !5
  %3780 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3779, i32 0, i32 14
  %3781 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3780, i32 0, i32 4
  %3782 = load ptr, ptr %3781, align 8, !tbaa !25
  %3783 = load i64, ptr %11, align 8, !tbaa !26
  %3784 = getelementptr inbounds double, ptr %3782, i64 %3783
  %3785 = load double, ptr %3784, align 8, !tbaa !30
  %3786 = load ptr, ptr %4, align 8, !tbaa !5
  %3787 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3786, i32 0, i32 24
  %3788 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3787, i32 0, i32 4
  %3789 = load ptr, ptr %3788, align 8, !tbaa !25
  %3790 = load i64, ptr %11, align 8, !tbaa !26
  %3791 = getelementptr inbounds double, ptr %3789, i64 %3790
  store double %3785, ptr %3791, align 8, !tbaa !30
  %3792 = load ptr, ptr %4, align 8, !tbaa !5
  %3793 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3792, i32 0, i32 14
  %3794 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3793, i32 0, i32 4
  %3795 = load ptr, ptr %3794, align 8, !tbaa !25
  %3796 = load i64, ptr %11, align 8, !tbaa !26
  %3797 = getelementptr inbounds double, ptr %3795, i64 %3796
  %3798 = load double, ptr %3797, align 8, !tbaa !30
  %3799 = load ptr, ptr %4, align 8, !tbaa !5
  %3800 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3799, i32 0, i32 25
  %3801 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3800, i32 0, i32 4
  %3802 = load ptr, ptr %3801, align 8, !tbaa !25
  %3803 = load i64, ptr %11, align 8, !tbaa !26
  %3804 = getelementptr inbounds double, ptr %3802, i64 %3803
  store double %3798, ptr %3804, align 8, !tbaa !30
  %3805 = load ptr, ptr %4, align 8, !tbaa !5
  %3806 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3805, i32 0, i32 32
  %3807 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3806, i32 0, i32 4
  %3808 = load ptr, ptr %3807, align 8, !tbaa !25
  %3809 = load i64, ptr %11, align 8, !tbaa !26
  %3810 = getelementptr inbounds i8, ptr %3808, i64 %3809
  %3811 = load i8, ptr %3810, align 1, !tbaa !27, !range !28, !noundef !29
  %3812 = trunc i8 %3811 to i1
  br i1 %3812, label %3813, label %3836

3813:                                             ; preds = %3778
  %3814 = load ptr, ptr %4, align 8, !tbaa !5
  %3815 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3814, i32 0, i32 23
  %3816 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3815, i32 0, i32 4
  %3817 = load ptr, ptr %3816, align 8, !tbaa !25
  %3818 = load i64, ptr %11, align 8, !tbaa !26
  %3819 = getelementptr inbounds double, ptr %3817, i64 %3818
  %3820 = load double, ptr %3819, align 8, !tbaa !30
  %3821 = load ptr, ptr %4, align 8, !tbaa !5
  %3822 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3821, i32 0, i32 34
  %3823 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3822, i32 0, i32 4
  %3824 = load ptr, ptr %3823, align 8, !tbaa !25
  %3825 = load i64, ptr %11, align 8, !tbaa !26
  %3826 = getelementptr inbounds double, ptr %3824, i64 %3825
  %3827 = load double, ptr %3826, align 8, !tbaa !30
  %3828 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %3820, double noundef %3827)
  br i1 %3828, label %3829, label %3836

3829:                                             ; preds = %3813
  %3830 = load ptr, ptr %4, align 8, !tbaa !5
  %3831 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3830, i32 0, i32 25
  %3832 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3831, i32 0, i32 4
  %3833 = load ptr, ptr %3832, align 8, !tbaa !25
  %3834 = load i64, ptr %11, align 8, !tbaa !26
  %3835 = getelementptr inbounds double, ptr %3833, i64 %3834
  store double 0.000000e+00, ptr %3835, align 8, !tbaa !30
  br label %3836

3836:                                             ; preds = %3829, %3813, %3778
  %3837 = load ptr, ptr %4, align 8, !tbaa !5
  %3838 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3837, i32 0, i32 33
  %3839 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3838, i32 0, i32 4
  %3840 = load ptr, ptr %3839, align 8, !tbaa !25
  %3841 = load i64, ptr %11, align 8, !tbaa !26
  %3842 = getelementptr inbounds i8, ptr %3840, i64 %3841
  %3843 = load i8, ptr %3842, align 1, !tbaa !27, !range !28, !noundef !29
  %3844 = trunc i8 %3843 to i1
  br i1 %3844, label %3845, label %3868

3845:                                             ; preds = %3836
  %3846 = load ptr, ptr %4, align 8, !tbaa !5
  %3847 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3846, i32 0, i32 23
  %3848 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3847, i32 0, i32 4
  %3849 = load ptr, ptr %3848, align 8, !tbaa !25
  %3850 = load i64, ptr %11, align 8, !tbaa !26
  %3851 = getelementptr inbounds double, ptr %3849, i64 %3850
  %3852 = load double, ptr %3851, align 8, !tbaa !30
  %3853 = load ptr, ptr %4, align 8, !tbaa !5
  %3854 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3853, i32 0, i32 35
  %3855 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3854, i32 0, i32 4
  %3856 = load ptr, ptr %3855, align 8, !tbaa !25
  %3857 = load i64, ptr %11, align 8, !tbaa !26
  %3858 = getelementptr inbounds double, ptr %3856, i64 %3857
  %3859 = load double, ptr %3858, align 8, !tbaa !30
  %3860 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %3852, double noundef %3859)
  br i1 %3860, label %3861, label %3868

3861:                                             ; preds = %3845
  %3862 = load ptr, ptr %4, align 8, !tbaa !5
  %3863 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3862, i32 0, i32 25
  %3864 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3863, i32 0, i32 4
  %3865 = load ptr, ptr %3864, align 8, !tbaa !25
  %3866 = load i64, ptr %11, align 8, !tbaa !26
  %3867 = getelementptr inbounds double, ptr %3865, i64 %3866
  store double 0.000000e+00, ptr %3867, align 8, !tbaa !30
  br label %3868

3868:                                             ; preds = %3861, %3845, %3836
  br label %3869

3869:                                             ; preds = %3868
  %3870 = load i64, ptr %11, align 8, !tbaa !26
  %3871 = add nsw i64 %3870, 1
  store i64 %3871, ptr %11, align 8, !tbaa !26
  br label %3773, !llvm.loop !88

3872:                                             ; preds = %3773
  %3873 = load i64, ptr %9, align 8, !tbaa !26
  %3874 = load ptr, ptr %4, align 8, !tbaa !5
  %3875 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3874, i32 0, i32 23
  %3876 = load ptr, ptr %4, align 8, !tbaa !5
  %3877 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3876, i32 0, i32 28
  %3878 = load ptr, ptr %4, align 8, !tbaa !5
  %3879 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3878, i32 0, i32 25
  %3880 = load ptr, ptr %4, align 8, !tbaa !5
  %3881 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3880, i32 0, i32 30
  %3882 = load ptr, ptr %4, align 8, !tbaa !5
  %3883 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3882, i32 0, i32 54
  %3884 = load ptr, ptr %4, align 8, !tbaa !5
  %3885 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3884, i32 0, i32 55
  %3886 = load double, ptr %3885, align 8, !tbaa !67
  %3887 = load double, ptr @_ZN11alglib_implL10minbc_gtolE, align 8, !tbaa !30
  %3888 = load ptr, ptr %4, align 8, !tbaa !5
  %3889 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3888, i32 0, i32 52
  %3890 = load ptr, ptr %4, align 8, !tbaa !5
  %3891 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3890, i32 0, i32 56
  %3892 = load ptr, ptr %4, align 8, !tbaa !5
  %3893 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3892, i32 0, i32 57
  %3894 = load ptr, ptr %4, align 8, !tbaa !5
  %3895 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3894, i32 0, i32 53
  %3896 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_PKS0_S2_ddPlS5_S1_PNS_11linminstateES5_PNS_8ae_stateE(i64 noundef %3873, ptr noundef %3875, ptr noundef %3877, ptr noundef %3879, ptr noundef %3881, ptr noundef %3883, double noundef %3886, double noundef %3887, ptr noundef %17, ptr noundef %3889, ptr noundef %3891, ptr noundef %3893, ptr noundef %3895, ptr noundef %3896)
  br label %3164

3897:                                             ; preds = %3169
  %3898 = load ptr, ptr %4, align 8, !tbaa !5
  %3899 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3898, i32 0, i32 67
  %3900 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl35smoothnessmonitorfinalizelinesearchEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef %3899, ptr noundef %3900)
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %3901

3901:                                             ; preds = %3985, %3897
  %3902 = load i64, ptr %11, align 8, !tbaa !26
  %3903 = load i64, ptr %9, align 8, !tbaa !26
  %3904 = sub nsw i64 %3903, 1
  %3905 = icmp sle i64 %3902, %3904
  br i1 %3905, label %3906, label %3988

3906:                                             ; preds = %3901
  %3907 = load ptr, ptr %4, align 8, !tbaa !5
  %3908 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3907, i32 0, i32 32
  %3909 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3908, i32 0, i32 4
  %3910 = load ptr, ptr %3909, align 8, !tbaa !25
  %3911 = load i64, ptr %11, align 8, !tbaa !26
  %3912 = getelementptr inbounds i8, ptr %3910, i64 %3911
  %3913 = load i8, ptr %3912, align 1, !tbaa !27, !range !28, !noundef !29
  %3914 = trunc i8 %3913 to i1
  br i1 %3914, label %3915, label %3945

3915:                                             ; preds = %3906
  %3916 = load ptr, ptr %4, align 8, !tbaa !5
  %3917 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3916, i32 0, i32 23
  %3918 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3917, i32 0, i32 4
  %3919 = load ptr, ptr %3918, align 8, !tbaa !25
  %3920 = load i64, ptr %11, align 8, !tbaa !26
  %3921 = getelementptr inbounds double, ptr %3919, i64 %3920
  %3922 = load double, ptr %3921, align 8, !tbaa !30
  %3923 = load ptr, ptr %4, align 8, !tbaa !5
  %3924 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3923, i32 0, i32 34
  %3925 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3924, i32 0, i32 4
  %3926 = load ptr, ptr %3925, align 8, !tbaa !25
  %3927 = load i64, ptr %11, align 8, !tbaa !26
  %3928 = getelementptr inbounds double, ptr %3926, i64 %3927
  %3929 = load double, ptr %3928, align 8, !tbaa !30
  %3930 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %3922, double noundef %3929)
  br i1 %3930, label %3931, label %3945

3931:                                             ; preds = %3915
  %3932 = load ptr, ptr %4, align 8, !tbaa !5
  %3933 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3932, i32 0, i32 34
  %3934 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3933, i32 0, i32 4
  %3935 = load ptr, ptr %3934, align 8, !tbaa !25
  %3936 = load i64, ptr %11, align 8, !tbaa !26
  %3937 = getelementptr inbounds double, ptr %3935, i64 %3936
  %3938 = load double, ptr %3937, align 8, !tbaa !30
  %3939 = load ptr, ptr %4, align 8, !tbaa !5
  %3940 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3939, i32 0, i32 23
  %3941 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3940, i32 0, i32 4
  %3942 = load ptr, ptr %3941, align 8, !tbaa !25
  %3943 = load i64, ptr %11, align 8, !tbaa !26
  %3944 = getelementptr inbounds double, ptr %3942, i64 %3943
  store double %3938, ptr %3944, align 8, !tbaa !30
  br label %3945

3945:                                             ; preds = %3931, %3915, %3906
  %3946 = load ptr, ptr %4, align 8, !tbaa !5
  %3947 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3946, i32 0, i32 33
  %3948 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3947, i32 0, i32 4
  %3949 = load ptr, ptr %3948, align 8, !tbaa !25
  %3950 = load i64, ptr %11, align 8, !tbaa !26
  %3951 = getelementptr inbounds i8, ptr %3949, i64 %3950
  %3952 = load i8, ptr %3951, align 1, !tbaa !27, !range !28, !noundef !29
  %3953 = trunc i8 %3952 to i1
  br i1 %3953, label %3954, label %3984

3954:                                             ; preds = %3945
  %3955 = load ptr, ptr %4, align 8, !tbaa !5
  %3956 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3955, i32 0, i32 23
  %3957 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3956, i32 0, i32 4
  %3958 = load ptr, ptr %3957, align 8, !tbaa !25
  %3959 = load i64, ptr %11, align 8, !tbaa !26
  %3960 = getelementptr inbounds double, ptr %3958, i64 %3959
  %3961 = load double, ptr %3960, align 8, !tbaa !30
  %3962 = load ptr, ptr %4, align 8, !tbaa !5
  %3963 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3962, i32 0, i32 35
  %3964 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3963, i32 0, i32 4
  %3965 = load ptr, ptr %3964, align 8, !tbaa !25
  %3966 = load i64, ptr %11, align 8, !tbaa !26
  %3967 = getelementptr inbounds double, ptr %3965, i64 %3966
  %3968 = load double, ptr %3967, align 8, !tbaa !30
  %3969 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %3961, double noundef %3968)
  br i1 %3969, label %3970, label %3984

3970:                                             ; preds = %3954
  %3971 = load ptr, ptr %4, align 8, !tbaa !5
  %3972 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3971, i32 0, i32 35
  %3973 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3972, i32 0, i32 4
  %3974 = load ptr, ptr %3973, align 8, !tbaa !25
  %3975 = load i64, ptr %11, align 8, !tbaa !26
  %3976 = getelementptr inbounds double, ptr %3974, i64 %3975
  %3977 = load double, ptr %3976, align 8, !tbaa !30
  %3978 = load ptr, ptr %4, align 8, !tbaa !5
  %3979 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3978, i32 0, i32 23
  %3980 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %3979, i32 0, i32 4
  %3981 = load ptr, ptr %3980, align 8, !tbaa !25
  %3982 = load i64, ptr %11, align 8, !tbaa !26
  %3983 = getelementptr inbounds double, ptr %3981, i64 %3982
  store double %3977, ptr %3983, align 8, !tbaa !30
  br label %3984

3984:                                             ; preds = %3970, %3954, %3945
  br label %3985

3985:                                             ; preds = %3984
  %3986 = load i64, ptr %11, align 8, !tbaa !26
  %3987 = add nsw i64 %3986, 1
  store i64 %3987, ptr %11, align 8, !tbaa !26
  br label %3901, !llvm.loop !89

3988:                                             ; preds = %3901
  %3989 = load ptr, ptr %4, align 8, !tbaa !5
  %3990 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3989, i32 0, i32 61
  %3991 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %3990, i32 0, i32 6
  %3992 = load ptr, ptr %3991, align 8, !tbaa !25
  %3993 = load ptr, ptr %4, align 8, !tbaa !5
  %3994 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3993, i32 0, i32 64
  %3995 = load i64, ptr %3994, align 8, !tbaa !81
  %3996 = getelementptr inbounds ptr, ptr %3992, i64 %3995
  %3997 = load ptr, ptr %3996, align 8, !tbaa !5
  %3998 = getelementptr inbounds double, ptr %3997, i64 0
  %3999 = load ptr, ptr %4, align 8, !tbaa !5
  %4000 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %3999, i32 0, i32 20
  %4001 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4000, i32 0, i32 4
  %4002 = load ptr, ptr %4001, align 8, !tbaa !25
  %4003 = getelementptr inbounds double, ptr %4002, i64 0
  %4004 = load i64, ptr %9, align 8, !tbaa !26
  %4005 = sub nsw i64 %4004, 1
  %4006 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %4005)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %3998, i64 noundef 1, ptr noundef %4003, i64 noundef 1, i64 noundef %4006)
  %4007 = load ptr, ptr %4, align 8, !tbaa !5
  %4008 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4007, i32 0, i32 60
  %4009 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %4008, i32 0, i32 6
  %4010 = load ptr, ptr %4009, align 8, !tbaa !25
  %4011 = load ptr, ptr %4, align 8, !tbaa !5
  %4012 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4011, i32 0, i32 64
  %4013 = load i64, ptr %4012, align 8, !tbaa !81
  %4014 = getelementptr inbounds ptr, ptr %4010, i64 %4013
  %4015 = load ptr, ptr %4014, align 8, !tbaa !5
  %4016 = getelementptr inbounds double, ptr %4015, i64 0
  %4017 = load ptr, ptr %4, align 8, !tbaa !5
  %4018 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4017, i32 0, i32 22
  %4019 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4018, i32 0, i32 4
  %4020 = load ptr, ptr %4019, align 8, !tbaa !25
  %4021 = getelementptr inbounds double, ptr %4020, i64 0
  %4022 = load i64, ptr %9, align 8, !tbaa !26
  %4023 = sub nsw i64 %4022, 1
  %4024 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %4023)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %4016, i64 noundef 1, ptr noundef %4021, i64 noundef 1, i64 noundef %4024)
  %4025 = load ptr, ptr %4, align 8, !tbaa !5
  %4026 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4025, i32 0, i32 61
  %4027 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %4026, i32 0, i32 6
  %4028 = load ptr, ptr %4027, align 8, !tbaa !25
  %4029 = load ptr, ptr %4, align 8, !tbaa !5
  %4030 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4029, i32 0, i32 64
  %4031 = load i64, ptr %4030, align 8, !tbaa !81
  %4032 = getelementptr inbounds ptr, ptr %4028, i64 %4031
  %4033 = load ptr, ptr %4032, align 8, !tbaa !5
  %4034 = getelementptr inbounds double, ptr %4033, i64 0
  %4035 = load ptr, ptr %4, align 8, !tbaa !5
  %4036 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4035, i32 0, i32 23
  %4037 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4036, i32 0, i32 4
  %4038 = load ptr, ptr %4037, align 8, !tbaa !25
  %4039 = getelementptr inbounds double, ptr %4038, i64 0
  %4040 = load i64, ptr %9, align 8, !tbaa !26
  %4041 = sub nsw i64 %4040, 1
  %4042 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %4041)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %4034, i64 noundef 1, ptr noundef %4039, i64 noundef 1, i64 noundef %4042)
  %4043 = load ptr, ptr %4, align 8, !tbaa !5
  %4044 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4043, i32 0, i32 60
  %4045 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %4044, i32 0, i32 6
  %4046 = load ptr, ptr %4045, align 8, !tbaa !25
  %4047 = load ptr, ptr %4, align 8, !tbaa !5
  %4048 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4047, i32 0, i32 64
  %4049 = load i64, ptr %4048, align 8, !tbaa !81
  %4050 = getelementptr inbounds ptr, ptr %4046, i64 %4049
  %4051 = load ptr, ptr %4050, align 8, !tbaa !5
  %4052 = getelementptr inbounds double, ptr %4051, i64 0
  %4053 = load ptr, ptr %4, align 8, !tbaa !5
  %4054 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4053, i32 0, i32 25
  %4055 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4054, i32 0, i32 4
  %4056 = load ptr, ptr %4055, align 8, !tbaa !25
  %4057 = getelementptr inbounds double, ptr %4056, i64 0
  %4058 = load i64, ptr %9, align 8, !tbaa !26
  %4059 = sub nsw i64 %4058, 1
  %4060 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %4059)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %4052, i64 noundef 1, ptr noundef %4057, i64 noundef 1, i64 noundef %4060)
  %4061 = load ptr, ptr %4, align 8, !tbaa !5
  %4062 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4061, i32 0, i32 28
  %4063 = load double, ptr %4062, align 8, !tbaa !69
  store double %4063, ptr %13, align 8, !tbaa !30
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %4064

4064:                                             ; preds = %4079, %3988
  %4065 = load i64, ptr %11, align 8, !tbaa !26
  %4066 = load i64, ptr %9, align 8, !tbaa !26
  %4067 = sub nsw i64 %4066, 1
  %4068 = icmp sle i64 %4065, %4067
  br i1 %4068, label %4069, label %4082

4069:                                             ; preds = %4064
  %4070 = load double, ptr %13, align 8, !tbaa !30
  %4071 = load ptr, ptr %4, align 8, !tbaa !5
  %4072 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4071, i32 0, i32 24
  %4073 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4072, i32 0, i32 4
  %4074 = load ptr, ptr %4073, align 8, !tbaa !25
  %4075 = load i64, ptr %11, align 8, !tbaa !26
  %4076 = getelementptr inbounds double, ptr %4074, i64 %4075
  %4077 = load double, ptr %4076, align 8, !tbaa !30
  %4078 = call double @llvm.fmuladd.f64(double 1.000000e-01, double %4070, double %4077)
  store double %4078, ptr %13, align 8, !tbaa !30
  br label %4079

4079:                                             ; preds = %4069
  %4080 = load i64, ptr %11, align 8, !tbaa !26
  %4081 = add nsw i64 %4080, 1
  store i64 %4081, ptr %11, align 8, !tbaa !26
  br label %4064, !llvm.loop !90

4082:                                             ; preds = %4064
  %4083 = load double, ptr %13, align 8, !tbaa !30
  %4084 = load ptr, ptr %5, align 8, !tbaa !5
  %4085 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %4083, ptr noundef %4084)
  br i1 %4085, label %4091, label %4086

4086:                                             ; preds = %4082
  %4087 = load ptr, ptr %4, align 8, !tbaa !5
  %4088 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4087, i32 0, i32 39
  store i64 -8, ptr %4088, align 8, !tbaa !34
  store i8 0, ptr %23, align 1, !tbaa !27
  %4089 = load i8, ptr %23, align 1, !tbaa !27, !range !28, !noundef !29
  %4090 = trunc i8 %4089 to i1
  store i1 %4090, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4743

4091:                                             ; preds = %4082
  %4092 = load ptr, ptr %4, align 8, !tbaa !5
  %4093 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4092, i32 0, i32 18
  %4094 = load i8, ptr %4093, align 1, !tbaa !35, !range !28, !noundef !29
  %4095 = trunc i8 %4094 to i1
  br i1 %4095, label %4096, label %4101

4096:                                             ; preds = %4091
  %4097 = load ptr, ptr %4, align 8, !tbaa !5
  %4098 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4097, i32 0, i32 39
  store i64 8, ptr %4098, align 8, !tbaa !34
  store i8 0, ptr %23, align 1, !tbaa !27
  %4099 = load i8, ptr %23, align 1, !tbaa !27, !range !28, !noundef !29
  %4100 = trunc i8 %4099 to i1
  store i1 %4100, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4743

4101:                                             ; preds = %4091
  %4102 = load i64, ptr %17, align 8, !tbaa !26
  %4103 = icmp ne i64 %4102, 1
  br i1 %4103, label %4104, label %4105

4104:                                             ; preds = %4101
  br label %4607

4105:                                             ; preds = %4101
  store i8 0, ptr %21, align 1, !tbaa !27
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %4106

4106:                                             ; preds = %4196, %4105
  %4107 = load i64, ptr %11, align 8, !tbaa !26
  %4108 = load i64, ptr %9, align 8, !tbaa !26
  %4109 = sub nsw i64 %4108, 1
  %4110 = icmp sle i64 %4107, %4109
  br i1 %4110, label %4111, label %4199

4111:                                             ; preds = %4106
  %4112 = load ptr, ptr %4, align 8, !tbaa !5
  %4113 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4112, i32 0, i32 32
  %4114 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4113, i32 0, i32 4
  %4115 = load ptr, ptr %4114, align 8, !tbaa !25
  %4116 = load i64, ptr %11, align 8, !tbaa !26
  %4117 = getelementptr inbounds i8, ptr %4115, i64 %4116
  %4118 = load i8, ptr %4117, align 1, !tbaa !27, !range !28, !noundef !29
  %4119 = trunc i8 %4118 to i1
  br i1 %4119, label %4120, label %4153

4120:                                             ; preds = %4111
  %4121 = load ptr, ptr %4, align 8, !tbaa !5
  %4122 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4121, i32 0, i32 23
  %4123 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4122, i32 0, i32 4
  %4124 = load ptr, ptr %4123, align 8, !tbaa !25
  %4125 = load i64, ptr %11, align 8, !tbaa !26
  %4126 = getelementptr inbounds double, ptr %4124, i64 %4125
  %4127 = load double, ptr %4126, align 8, !tbaa !30
  %4128 = load ptr, ptr %4, align 8, !tbaa !5
  %4129 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4128, i32 0, i32 34
  %4130 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4129, i32 0, i32 4
  %4131 = load ptr, ptr %4130, align 8, !tbaa !25
  %4132 = load i64, ptr %11, align 8, !tbaa !26
  %4133 = getelementptr inbounds double, ptr %4131, i64 %4132
  %4134 = load double, ptr %4133, align 8, !tbaa !30
  %4135 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %4127, double noundef %4134)
  br i1 %4135, label %4136, label %4153

4136:                                             ; preds = %4120
  %4137 = load ptr, ptr %4, align 8, !tbaa !5
  %4138 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4137, i32 0, i32 23
  %4139 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4138, i32 0, i32 4
  %4140 = load ptr, ptr %4139, align 8, !tbaa !25
  %4141 = load i64, ptr %11, align 8, !tbaa !26
  %4142 = getelementptr inbounds double, ptr %4140, i64 %4141
  %4143 = load double, ptr %4142, align 8, !tbaa !30
  %4144 = load ptr, ptr %4, align 8, !tbaa !5
  %4145 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4144, i32 0, i32 20
  %4146 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4145, i32 0, i32 4
  %4147 = load ptr, ptr %4146, align 8, !tbaa !25
  %4148 = load i64, ptr %11, align 8, !tbaa !26
  %4149 = getelementptr inbounds double, ptr %4147, i64 %4148
  %4150 = load double, ptr %4149, align 8, !tbaa !30
  %4151 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %4143, double noundef %4150)
  br i1 %4151, label %4152, label %4153

4152:                                             ; preds = %4136
  store i8 1, ptr %21, align 1, !tbaa !27
  br label %4153

4153:                                             ; preds = %4152, %4136, %4120, %4111
  %4154 = load ptr, ptr %4, align 8, !tbaa !5
  %4155 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4154, i32 0, i32 33
  %4156 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4155, i32 0, i32 4
  %4157 = load ptr, ptr %4156, align 8, !tbaa !25
  %4158 = load i64, ptr %11, align 8, !tbaa !26
  %4159 = getelementptr inbounds i8, ptr %4157, i64 %4158
  %4160 = load i8, ptr %4159, align 1, !tbaa !27, !range !28, !noundef !29
  %4161 = trunc i8 %4160 to i1
  br i1 %4161, label %4162, label %4195

4162:                                             ; preds = %4153
  %4163 = load ptr, ptr %4, align 8, !tbaa !5
  %4164 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4163, i32 0, i32 23
  %4165 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4164, i32 0, i32 4
  %4166 = load ptr, ptr %4165, align 8, !tbaa !25
  %4167 = load i64, ptr %11, align 8, !tbaa !26
  %4168 = getelementptr inbounds double, ptr %4166, i64 %4167
  %4169 = load double, ptr %4168, align 8, !tbaa !30
  %4170 = load ptr, ptr %4, align 8, !tbaa !5
  %4171 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4170, i32 0, i32 35
  %4172 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4171, i32 0, i32 4
  %4173 = load ptr, ptr %4172, align 8, !tbaa !25
  %4174 = load i64, ptr %11, align 8, !tbaa !26
  %4175 = getelementptr inbounds double, ptr %4173, i64 %4174
  %4176 = load double, ptr %4175, align 8, !tbaa !30
  %4177 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %4169, double noundef %4176)
  br i1 %4177, label %4178, label %4195

4178:                                             ; preds = %4162
  %4179 = load ptr, ptr %4, align 8, !tbaa !5
  %4180 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4179, i32 0, i32 23
  %4181 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4180, i32 0, i32 4
  %4182 = load ptr, ptr %4181, align 8, !tbaa !25
  %4183 = load i64, ptr %11, align 8, !tbaa !26
  %4184 = getelementptr inbounds double, ptr %4182, i64 %4183
  %4185 = load double, ptr %4184, align 8, !tbaa !30
  %4186 = load ptr, ptr %4, align 8, !tbaa !5
  %4187 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4186, i32 0, i32 20
  %4188 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4187, i32 0, i32 4
  %4189 = load ptr, ptr %4188, align 8, !tbaa !25
  %4190 = load i64, ptr %11, align 8, !tbaa !26
  %4191 = getelementptr inbounds double, ptr %4189, i64 %4190
  %4192 = load double, ptr %4191, align 8, !tbaa !30
  %4193 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %4185, double noundef %4192)
  br i1 %4193, label %4194, label %4195

4194:                                             ; preds = %4178
  store i8 1, ptr %21, align 1, !tbaa !27
  br label %4195

4195:                                             ; preds = %4194, %4178, %4162, %4153
  br label %4196

4196:                                             ; preds = %4195
  %4197 = load i64, ptr %11, align 8, !tbaa !26
  %4198 = add nsw i64 %4197, 1
  store i64 %4198, ptr %11, align 8, !tbaa !26
  br label %4106, !llvm.loop !91

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

4266:                                             ; preds = %4199
  br label %4291

4267:                                             ; preds = %4199
  %4268 = load ptr, ptr %4, align 8, !tbaa !5
  %4269 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4268, i32 0, i32 12
  %4270 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4269, i32 0, i32 4
  %4271 = load ptr, ptr %4270, align 8, !tbaa !25
  %4272 = getelementptr inbounds double, ptr %4271, i64 0
  %4273 = load ptr, ptr %4, align 8, !tbaa !5
  %4274 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4273, i32 0, i32 20
  %4275 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4274, i32 0, i32 4
  %4276 = load ptr, ptr %4275, align 8, !tbaa !25
  %4277 = getelementptr inbounds double, ptr %4276, i64 0
  %4278 = load i64, ptr %9, align 8, !tbaa !26
  %4279 = sub nsw i64 %4278, 1
  %4280 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %4279)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %4272, i64 noundef 1, ptr noundef %4277, i64 noundef 1, i64 noundef %4280)
  %4281 = load ptr, ptr %4, align 8, !tbaa !5
  %4282 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef %4281, ptr noundef %4282)
  %4283 = load ptr, ptr %4, align 8, !tbaa !5
  %4284 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4283, i32 0, i32 17
  store i8 1, ptr %4284, align 2, !tbaa !54
  %4285 = load ptr, ptr %4, align 8, !tbaa !5
  %4286 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4285, i32 0, i32 19
  %4287 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4286, i32 0, i32 0
  store i32 29, ptr %4287, align 8, !tbaa !9
  br label %4617

4288:                                             ; preds = %364
  %4289 = load ptr, ptr %4, align 8, !tbaa !5
  %4290 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4289, i32 0, i32 17
  store i8 0, ptr %4290, align 2, !tbaa !54
  br label %4291

4291:                                             ; preds = %4288, %4266
  %4292 = load ptr, ptr %4, align 8, !tbaa !5
  %4293 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4292, i32 0, i32 36
  %4294 = load i64, ptr %4293, align 8, !tbaa !36
  %4295 = add nsw i64 %4294, 1
  %4296 = load ptr, ptr %4, align 8, !tbaa !5
  %4297 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4296, i32 0, i32 36
  store i64 %4295, ptr %4297, align 8, !tbaa !36
  %4298 = load ptr, ptr %4, align 8, !tbaa !5
  %4299 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4298, i32 0, i32 64
  %4300 = load i64, ptr %4299, align 8, !tbaa !81
  %4301 = load i64, ptr %10, align 8, !tbaa !26
  %4302 = icmp eq i64 %4300, %4301
  br i1 %4302, label %4303, label %4396

4303:                                             ; preds = %4291
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %4304

4304:                                             ; preds = %4352, %4303
  %4305 = load i64, ptr %11, align 8, !tbaa !26
  %4306 = load ptr, ptr %4, align 8, !tbaa !5
  %4307 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4306, i32 0, i32 64
  %4308 = load i64, ptr %4307, align 8, !tbaa !81
  %4309 = sub nsw i64 %4308, 1
  %4310 = icmp sle i64 %4305, %4309
  br i1 %4310, label %4311, label %4355

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

4352:                                             ; preds = %4311
  %4353 = load i64, ptr %11, align 8, !tbaa !26
  %4354 = add nsw i64 %4353, 1
  store i64 %4354, ptr %11, align 8, !tbaa !26
  br label %4304, !llvm.loop !92

4355:                                             ; preds = %4304
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %4356

4356:                                             ; preds = %4392, %4355
  %4357 = load i64, ptr %11, align 8, !tbaa !26
  %4358 = load ptr, ptr %4, align 8, !tbaa !5
  %4359 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4358, i32 0, i32 64
  %4360 = load i64, ptr %4359, align 8, !tbaa !81
  %4361 = sub nsw i64 %4360, 2
  %4362 = icmp sle i64 %4357, %4361
  br i1 %4362, label %4363, label %4395

4363:                                             ; preds = %4356
  %4364 = load ptr, ptr %4, align 8, !tbaa !5
  %4365 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4364, i32 0, i32 62
  %4366 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4365, i32 0, i32 4
  %4367 = load ptr, ptr %4366, align 8, !tbaa !25
  %4368 = load i64, ptr %11, align 8, !tbaa !26
  %4369 = add nsw i64 %4368, 1
  %4370 = getelementptr inbounds double, ptr %4367, i64 %4369
  %4371 = load double, ptr %4370, align 8, !tbaa !30
  %4372 = load ptr, ptr %4, align 8, !tbaa !5
  %4373 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4372, i32 0, i32 62
  %4374 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4373, i32 0, i32 4
  %4375 = load ptr, ptr %4374, align 8, !tbaa !25
  %4376 = load i64, ptr %11, align 8, !tbaa !26
  %4377 = getelementptr inbounds double, ptr %4375, i64 %4376
  store double %4371, ptr %4377, align 8, !tbaa !30
  %4378 = load ptr, ptr %4, align 8, !tbaa !5
  %4379 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4378, i32 0, i32 63
  %4380 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4379, i32 0, i32 4
  %4381 = load ptr, ptr %4380, align 8, !tbaa !25
  %4382 = load i64, ptr %11, align 8, !tbaa !26
  %4383 = add nsw i64 %4382, 1
  %4384 = getelementptr inbounds double, ptr %4381, i64 %4383
  %4385 = load double, ptr %4384, align 8, !tbaa !30
  %4386 = load ptr, ptr %4, align 8, !tbaa !5
  %4387 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4386, i32 0, i32 63
  %4388 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4387, i32 0, i32 4
  %4389 = load ptr, ptr %4388, align 8, !tbaa !25
  %4390 = load i64, ptr %11, align 8, !tbaa !26
  %4391 = getelementptr inbounds double, ptr %4389, i64 %4390
  store double %4385, ptr %4391, align 8, !tbaa !30
  br label %4392

4392:                                             ; preds = %4363
  %4393 = load i64, ptr %11, align 8, !tbaa !26
  %4394 = add nsw i64 %4393, 1
  store i64 %4394, ptr %11, align 8, !tbaa !26
  br label %4356, !llvm.loop !93

4395:                                             ; preds = %4356
  br label %4403

4396:                                             ; preds = %4291
  %4397 = load ptr, ptr %4, align 8, !tbaa !5
  %4398 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4397, i32 0, i32 64
  %4399 = load i64, ptr %4398, align 8, !tbaa !81
  %4400 = add nsw i64 %4399, 1
  %4401 = load ptr, ptr %4, align 8, !tbaa !5
  %4402 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4401, i32 0, i32 64
  store i64 %4400, ptr %4402, align 8, !tbaa !81
  br label %4403

4403:                                             ; preds = %4396, %4395
  %4404 = load ptr, ptr %4, align 8, !tbaa !5
  %4405 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4404, i32 0, i32 60
  %4406 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %4405, i32 0, i32 6
  %4407 = load ptr, ptr %4406, align 8, !tbaa !25
  %4408 = load ptr, ptr %4, align 8, !tbaa !5
  %4409 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4408, i32 0, i32 64
  %4410 = load i64, ptr %4409, align 8, !tbaa !81
  %4411 = sub nsw i64 %4410, 1
  %4412 = getelementptr inbounds ptr, ptr %4407, i64 %4411
  %4413 = load ptr, ptr %4412, align 8, !tbaa !5
  %4414 = getelementptr inbounds double, ptr %4413, i64 0
  %4415 = load ptr, ptr %4, align 8, !tbaa !5
  %4416 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4415, i32 0, i32 61
  %4417 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %4416, i32 0, i32 6
  %4418 = load ptr, ptr %4417, align 8, !tbaa !25
  %4419 = load ptr, ptr %4, align 8, !tbaa !5
  %4420 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4419, i32 0, i32 64
  %4421 = load i64, ptr %4420, align 8, !tbaa !81
  %4422 = sub nsw i64 %4421, 1
  %4423 = getelementptr inbounds ptr, ptr %4418, i64 %4422
  %4424 = load ptr, ptr %4423, align 8, !tbaa !5
  %4425 = getelementptr inbounds double, ptr %4424, i64 0
  %4426 = load i64, ptr %9, align 8, !tbaa !26
  %4427 = sub nsw i64 %4426, 1
  %4428 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %4427)
  %4429 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %4414, i64 noundef 1, ptr noundef %4425, i64 noundef 1, i64 noundef %4428)
  store double %4429, ptr %13, align 8, !tbaa !30
  %4430 = load ptr, ptr %4, align 8, !tbaa !5
  %4431 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4430, i32 0, i32 60
  %4432 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %4431, i32 0, i32 6
  %4433 = load ptr, ptr %4432, align 8, !tbaa !25
  %4434 = load ptr, ptr %4, align 8, !tbaa !5
  %4435 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4434, i32 0, i32 64
  %4436 = load i64, ptr %4435, align 8, !tbaa !81
  %4437 = sub nsw i64 %4436, 1
  %4438 = getelementptr inbounds ptr, ptr %4433, i64 %4437
  %4439 = load ptr, ptr %4438, align 8, !tbaa !5
  %4440 = getelementptr inbounds double, ptr %4439, i64 0
  %4441 = load ptr, ptr %4, align 8, !tbaa !5
  %4442 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4441, i32 0, i32 60
  %4443 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %4442, i32 0, i32 6
  %4444 = load ptr, ptr %4443, align 8, !tbaa !25
  %4445 = load ptr, ptr %4, align 8, !tbaa !5
  %4446 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4445, i32 0, i32 64
  %4447 = load i64, ptr %4446, align 8, !tbaa !81
  %4448 = sub nsw i64 %4447, 1
  %4449 = getelementptr inbounds ptr, ptr %4444, i64 %4448
  %4450 = load ptr, ptr %4449, align 8, !tbaa !5
  %4451 = getelementptr inbounds double, ptr %4450, i64 0
  %4452 = load i64, ptr %9, align 8, !tbaa !26
  %4453 = sub nsw i64 %4452, 1
  %4454 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %4453)
  %4455 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %4440, i64 noundef 1, ptr noundef %4451, i64 noundef 1, i64 noundef %4454)
  store double %4455, ptr %14, align 8, !tbaa !30
  %4456 = load double, ptr %13, align 8, !tbaa !30
  %4457 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %4456, double noundef 0.000000e+00)
  br i1 %4457, label %4461, label %4458

4458:                                             ; preds = %4403
  %4459 = load double, ptr %14, align 8, !tbaa !30
  %4460 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %4459, double noundef 0.000000e+00)
  br i1 %4460, label %4461, label %4462

4461:                                             ; preds = %4458, %4403
  br label %4607

4462:                                             ; preds = %4458
  %4463 = load double, ptr %13, align 8, !tbaa !30
  %4464 = fdiv double 1.000000e+00, %4463
  %4465 = load ptr, ptr %4, align 8, !tbaa !5
  %4466 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4465, i32 0, i32 62
  %4467 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4466, i32 0, i32 4
  %4468 = load ptr, ptr %4467, align 8, !tbaa !25
  %4469 = load ptr, ptr %4, align 8, !tbaa !5
  %4470 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4469, i32 0, i32 64
  %4471 = load i64, ptr %4470, align 8, !tbaa !81
  %4472 = sub nsw i64 %4471, 1
  %4473 = getelementptr inbounds double, ptr %4468, i64 %4472
  store double %4464, ptr %4473, align 8, !tbaa !30
  %4474 = load ptr, ptr %4, align 8, !tbaa !5
  %4475 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4474, i32 0, i32 64
  %4476 = load i64, ptr %4475, align 8, !tbaa !81
  %4477 = load i64, ptr %10, align 8, !tbaa !26
  %4478 = icmp sle i64 %4476, %4477
  %4479 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %4478, ptr noundef @.str.1816, ptr noundef %4479)
  store double 0.000000e+00, ptr %13, align 8, !tbaa !30
  store double 0.000000e+00, ptr %14, align 8, !tbaa !30
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %4480

4480:                                             ; preds = %4532, %4462
  %4481 = load i64, ptr %11, align 8, !tbaa !26
  %4482 = load i64, ptr %9, align 8, !tbaa !26
  %4483 = sub nsw i64 %4482, 1
  %4484 = icmp sle i64 %4481, %4483
  br i1 %4484, label %4485, label %4535

4485:                                             ; preds = %4480
  %4486 = load double, ptr %13, align 8, !tbaa !30
  %4487 = load ptr, ptr %4, align 8, !tbaa !5
  %4488 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4487, i32 0, i32 20
  %4489 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4488, i32 0, i32 4
  %4490 = load ptr, ptr %4489, align 8, !tbaa !25
  %4491 = load i64, ptr %11, align 8, !tbaa !26
  %4492 = getelementptr inbounds double, ptr %4490, i64 %4491
  %4493 = load double, ptr %4492, align 8, !tbaa !30
  %4494 = load ptr, ptr %4, align 8, !tbaa !5
  %4495 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4494, i32 0, i32 26
  %4496 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4495, i32 0, i32 4
  %4497 = load ptr, ptr %4496, align 8, !tbaa !25
  %4498 = load i64, ptr %11, align 8, !tbaa !26
  %4499 = getelementptr inbounds double, ptr %4497, i64 %4498
  %4500 = load double, ptr %4499, align 8, !tbaa !30
  %4501 = fsub double %4493, %4500
  %4502 = load ptr, ptr %4, align 8, !tbaa !5
  %4503 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4502, i32 0, i32 8
  %4504 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4503, i32 0, i32 4
  %4505 = load ptr, ptr %4504, align 8, !tbaa !25
  %4506 = load i64, ptr %11, align 8, !tbaa !26
  %4507 = getelementptr inbounds double, ptr %4505, i64 %4506
  %4508 = load double, ptr %4507, align 8, !tbaa !30
  %4509 = fdiv double %4501, %4508
  %4510 = load ptr, ptr %5, align 8, !tbaa !5
  %4511 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %4509, ptr noundef %4510)
  %4512 = fadd double %4486, %4511
  store double %4512, ptr %13, align 8, !tbaa !30
  %4513 = load double, ptr %14, align 8, !tbaa !30
  %4514 = load ptr, ptr %4, align 8, !tbaa !5
  %4515 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4514, i32 0, i32 20
  %4516 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4515, i32 0, i32 4
  %4517 = load ptr, ptr %4516, align 8, !tbaa !25
  %4518 = load i64, ptr %11, align 8, !tbaa !26
  %4519 = getelementptr inbounds double, ptr %4517, i64 %4518
  %4520 = load double, ptr %4519, align 8, !tbaa !30
  %4521 = load ptr, ptr %4, align 8, !tbaa !5
  %4522 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4521, i32 0, i32 26
  %4523 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4522, i32 0, i32 4
  %4524 = load ptr, ptr %4523, align 8, !tbaa !25
  %4525 = load i64, ptr %11, align 8, !tbaa !26
  %4526 = getelementptr inbounds double, ptr %4524, i64 %4525
  %4527 = load double, ptr %4526, align 8, !tbaa !30
  %4528 = fsub double %4520, %4527
  %4529 = load ptr, ptr %5, align 8, !tbaa !5
  %4530 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %4528, ptr noundef %4529)
  %4531 = fadd double %4513, %4530
  store double %4531, ptr %14, align 8, !tbaa !30
  br label %4532

4532:                                             ; preds = %4485
  %4533 = load i64, ptr %11, align 8, !tbaa !26
  %4534 = add nsw i64 %4533, 1
  store i64 %4534, ptr %11, align 8, !tbaa !26
  br label %4480, !llvm.loop !94

4535:                                             ; preds = %4480
  %4536 = load ptr, ptr %4, align 8, !tbaa !5
  %4537 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4536, i32 0, i32 31
  %4538 = load double, ptr %13, align 8, !tbaa !30
  %4539 = load ptr, ptr %5, align 8, !tbaa !5
  %4540 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %4538, ptr noundef %4539)
  %4541 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL30minbc_updateestimateofgoodstepEPddPNS_8ae_stateE(ptr noundef %4537, double noundef %4540, ptr noundef %4541)
  %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 !79
  %4545 = icmp sgt i64 %4544, 0
  br i1 %4545, label %4546, label %4559

4546:                                             ; preds = %4535
  %4547 = load ptr, ptr %4, align 8, !tbaa !5
  %4548 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4547, i32 0, i32 36
  %4549 = load i64, ptr %4548, align 8, !tbaa !36
  %4550 = load ptr, ptr %4, align 8, !tbaa !5
  %4551 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4550, i32 0, i32 4
  %4552 = load i64, ptr %4551, align 8, !tbaa !79
  %4553 = icmp sge i64 %4549, %4552
  br i1 %4553, label %4554, label %4559

4554:                                             ; preds = %4546
  %4555 = load ptr, ptr %4, align 8, !tbaa !5
  %4556 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4555, i32 0, i32 39
  store i64 5, ptr %4556, align 8, !tbaa !34
  store i8 0, ptr %23, align 1, !tbaa !27
  %4557 = load i8, ptr %23, align 1, !tbaa !27, !range !28, !noundef !29
  %4558 = trunc i8 %4557 to i1
  store i1 %4558, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4743

4559:                                             ; preds = %4546, %4535
  %4560 = load i8, ptr %21, align 1, !tbaa !27, !range !28, !noundef !29
  %4561 = trunc i8 %4560 to i1
  br i1 %4561, label %4562, label %4565

4562:                                             ; preds = %4559
  %4563 = load ptr, ptr %4, align 8, !tbaa !5
  %4564 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4563, i32 0, i32 64
  store i64 0, ptr %4564, align 8, !tbaa !81
  br label %4604

4565:                                             ; preds = %4559
  store double 0.000000e+00, ptr %13, align 8, !tbaa !30
  store i64 0, ptr %11, align 8, !tbaa !26
  br label %4566

4566:                                             ; preds = %4591, %4565
  %4567 = load i64, ptr %11, align 8, !tbaa !26
  %4568 = load i64, ptr %9, align 8, !tbaa !26
  %4569 = sub nsw i64 %4568, 1
  %4570 = icmp sle i64 %4567, %4569
  br i1 %4570, label %4571, label %4594

4571:                                             ; preds = %4566
  %4572 = load double, ptr %13, align 8, !tbaa !30
  %4573 = load ptr, ptr %4, align 8, !tbaa !5
  %4574 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4573, i32 0, i32 22
  %4575 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4574, i32 0, i32 4
  %4576 = load ptr, ptr %4575, align 8, !tbaa !25
  %4577 = load i64, ptr %11, align 8, !tbaa !26
  %4578 = getelementptr inbounds double, ptr %4576, i64 %4577
  %4579 = load double, ptr %4578, align 8, !tbaa !30
  %4580 = load ptr, ptr %4, align 8, !tbaa !5
  %4581 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4580, i32 0, i32 8
  %4582 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4581, i32 0, i32 4
  %4583 = load ptr, ptr %4582, align 8, !tbaa !25
  %4584 = load i64, ptr %11, align 8, !tbaa !26
  %4585 = getelementptr inbounds double, ptr %4583, i64 %4584
  %4586 = load double, ptr %4585, align 8, !tbaa !30
  %4587 = fmul double %4579, %4586
  %4588 = load ptr, ptr %5, align 8, !tbaa !5
  %4589 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %4587, ptr noundef %4588)
  %4590 = fadd double %4572, %4589
  store double %4590, ptr %13, align 8, !tbaa !30
  br label %4591

4591:                                             ; preds = %4571
  %4592 = load i64, ptr %11, align 8, !tbaa !26
  %4593 = add nsw i64 %4592, 1
  store i64 %4593, ptr %11, align 8, !tbaa !26
  br label %4566, !llvm.loop !95

4594:                                             ; preds = %4566
  %4595 = load double, ptr %13, align 8, !tbaa !30
  %4596 = load ptr, ptr %5, align 8, !tbaa !5
  %4597 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %4595, ptr noundef %4596)
  %4598 = load double, ptr %20, align 8, !tbaa !30
  %4599 = load double, ptr %19, align 8, !tbaa !30
  %4600 = fmul double %4598, %4599
  %4601 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %4597, double noundef %4600)
  br i1 %4601, label %4602, label %4603

4602:                                             ; preds = %4594
  br label %4607

4603:                                             ; preds = %4594
  br label %4604

4604:                                             ; preds = %4603, %4562
  %4605 = load i64, ptr %18, align 8, !tbaa !26
  %4606 = add nsw i64 %4605, 1
  store i64 %4606, ptr %18, align 8, !tbaa !26
  br label %2717

4607:                                             ; preds = %4602, %4461, %4104, %3037, %2722
  %4608 = load double, ptr %20, align 8, !tbaa !30
  %4609 = load double, ptr @_ZN11alglib_implL21minbc_decaycorrectionE, align 8, !tbaa !30
  %4610 = fmul double %4608, %4609
  %4611 = load double, ptr @_ZN11alglib_implL14minbc_mindecayE, align 8, !tbaa !30
  %4612 = load ptr, ptr %5, align 8, !tbaa !5
  %4613 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %4610, double noundef %4611, ptr noundef %4612)
  store double %4613, ptr %20, align 8, !tbaa !30
  br label %770

4614:                                             ; No predecessors!
  store i8 0, ptr %23, align 1, !tbaa !27
  %4615 = load i8, ptr %23, align 1, !tbaa !27, !range !28, !noundef !29
  %4616 = trunc i8 %4615 to i1
  store i1 %4616, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4743

4617:                                             ; preds = %4267, %3654, %3641, %3476, %3448, %3419, %3396, %3294, %3279, %2468, %2057, %2044, %1879, %1851, %1822, %1799, %1697, %1682, %1154, %1141, %982, %954, %925, %902, %800, %791, %732, %700, %691, %613
  store i8 1, ptr %23, align 1, !tbaa !27
  %4618 = load i64, ptr %6, align 8, !tbaa !26
  %4619 = load ptr, ptr %4, align 8, !tbaa !5
  %4620 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4619, i32 0, i32 19
  %4621 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4620, i32 0, i32 1
  %4622 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4621, i32 0, i32 4
  %4623 = load ptr, ptr %4622, align 8, !tbaa !25
  %4624 = getelementptr inbounds i64, ptr %4623, i64 0
  store i64 %4618, ptr %4624, align 8, !tbaa !26
  %4625 = load i64, ptr %9, align 8, !tbaa !26
  %4626 = load ptr, ptr %4, align 8, !tbaa !5
  %4627 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4626, i32 0, i32 19
  %4628 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4627, i32 0, i32 1
  %4629 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4628, i32 0, i32 4
  %4630 = load ptr, ptr %4629, align 8, !tbaa !25
  %4631 = getelementptr inbounds i64, ptr %4630, i64 1
  store i64 %4625, ptr %4631, align 8, !tbaa !26
  %4632 = load i64, ptr %10, align 8, !tbaa !26
  %4633 = load ptr, ptr %4, align 8, !tbaa !5
  %4634 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4633, i32 0, i32 19
  %4635 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4634, i32 0, i32 1
  %4636 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4635, i32 0, i32 4
  %4637 = load ptr, ptr %4636, align 8, !tbaa !25
  %4638 = getelementptr inbounds i64, ptr %4637, i64 2
  store i64 %4632, ptr %4638, align 8, !tbaa !26
  %4639 = load i64, ptr %11, align 8, !tbaa !26
  %4640 = load ptr, ptr %4, align 8, !tbaa !5
  %4641 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4640, i32 0, i32 19
  %4642 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4641, i32 0, i32 1
  %4643 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4642, i32 0, i32 4
  %4644 = load ptr, ptr %4643, align 8, !tbaa !25
  %4645 = getelementptr inbounds i64, ptr %4644, i64 3
  store i64 %4639, ptr %4645, align 8, !tbaa !26
  %4646 = load i64, ptr %12, align 8, !tbaa !26
  %4647 = load ptr, ptr %4, align 8, !tbaa !5
  %4648 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4647, i32 0, i32 19
  %4649 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4648, i32 0, i32 1
  %4650 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4649, i32 0, i32 4
  %4651 = load ptr, ptr %4650, align 8, !tbaa !25
  %4652 = getelementptr inbounds i64, ptr %4651, i64 4
  store i64 %4646, ptr %4652, align 8, !tbaa !26
  %4653 = load i64, ptr %17, align 8, !tbaa !26
  %4654 = load ptr, ptr %4, align 8, !tbaa !5
  %4655 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4654, i32 0, i32 19
  %4656 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4655, i32 0, i32 1
  %4657 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4656, i32 0, i32 4
  %4658 = load ptr, ptr %4657, align 8, !tbaa !25
  %4659 = getelementptr inbounds i64, ptr %4658, i64 5
  store i64 %4653, ptr %4659, align 8, !tbaa !26
  %4660 = load i64, ptr %18, align 8, !tbaa !26
  %4661 = load ptr, ptr %4, align 8, !tbaa !5
  %4662 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4661, i32 0, i32 19
  %4663 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4662, i32 0, i32 1
  %4664 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4663, i32 0, i32 4
  %4665 = load ptr, ptr %4664, align 8, !tbaa !25
  %4666 = getelementptr inbounds i64, ptr %4665, i64 6
  store i64 %4660, ptr %4666, align 8, !tbaa !26
  %4667 = load i8, ptr %16, align 1, !tbaa !27, !range !28, !noundef !29
  %4668 = trunc i8 %4667 to i1
  %4669 = load ptr, ptr %4, align 8, !tbaa !5
  %4670 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4669, i32 0, i32 19
  %4671 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4670, i32 0, i32 2
  %4672 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4671, i32 0, i32 4
  %4673 = load ptr, ptr %4672, align 8, !tbaa !25
  %4674 = getelementptr inbounds i8, ptr %4673, i64 0
  %4675 = zext i1 %4668 to i8
  store i8 %4675, ptr %4674, align 1, !tbaa !27
  %4676 = load i8, ptr %21, align 1, !tbaa !27, !range !28, !noundef !29
  %4677 = trunc i8 %4676 to i1
  %4678 = load ptr, ptr %4, align 8, !tbaa !5
  %4679 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4678, i32 0, i32 19
  %4680 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4679, i32 0, i32 2
  %4681 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4680, i32 0, i32 4
  %4682 = load ptr, ptr %4681, align 8, !tbaa !25
  %4683 = getelementptr inbounds i8, ptr %4682, i64 1
  %4684 = zext i1 %4677 to i8
  store i8 %4684, ptr %4683, align 1, !tbaa !27
  %4685 = load double, ptr %7, align 8, !tbaa !30
  %4686 = load ptr, ptr %4, align 8, !tbaa !5
  %4687 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4686, i32 0, i32 19
  %4688 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4687, i32 0, i32 3
  %4689 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4688, i32 0, i32 4
  %4690 = load ptr, ptr %4689, align 8, !tbaa !25
  %4691 = getelementptr inbounds double, ptr %4690, i64 0
  store double %4685, ptr %4691, align 8, !tbaa !30
  %4692 = load double, ptr %8, align 8, !tbaa !30
  %4693 = load ptr, ptr %4, align 8, !tbaa !5
  %4694 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4693, i32 0, i32 19
  %4695 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4694, i32 0, i32 3
  %4696 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4695, i32 0, i32 4
  %4697 = load ptr, ptr %4696, align 8, !tbaa !25
  %4698 = getelementptr inbounds double, ptr %4697, i64 1
  store double %4692, ptr %4698, align 8, !tbaa !30
  %4699 = load double, ptr %13, align 8, !tbaa !30
  %4700 = load ptr, ptr %4, align 8, !tbaa !5
  %4701 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4700, i32 0, i32 19
  %4702 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4701, i32 0, i32 3
  %4703 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4702, i32 0, i32 4
  %4704 = load ptr, ptr %4703, align 8, !tbaa !25
  %4705 = getelementptr inbounds double, ptr %4704, i64 2
  store double %4699, ptr %4705, align 8, !tbaa !30
  %4706 = load double, ptr %14, align 8, !tbaa !30
  %4707 = load ptr, ptr %4, align 8, !tbaa !5
  %4708 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4707, i32 0, i32 19
  %4709 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4708, i32 0, i32 3
  %4710 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4709, i32 0, i32 4
  %4711 = load ptr, ptr %4710, align 8, !tbaa !25
  %4712 = getelementptr inbounds double, ptr %4711, i64 3
  store double %4706, ptr %4712, align 8, !tbaa !30
  %4713 = load double, ptr %15, align 8, !tbaa !30
  %4714 = load ptr, ptr %4, align 8, !tbaa !5
  %4715 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4714, i32 0, i32 19
  %4716 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4715, i32 0, i32 3
  %4717 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4716, i32 0, i32 4
  %4718 = load ptr, ptr %4717, align 8, !tbaa !25
  %4719 = getelementptr inbounds double, ptr %4718, i64 4
  store double %4713, ptr %4719, align 8, !tbaa !30
  %4720 = load double, ptr %19, align 8, !tbaa !30
  %4721 = load ptr, ptr %4, align 8, !tbaa !5
  %4722 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4721, i32 0, i32 19
  %4723 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4722, i32 0, i32 3
  %4724 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4723, i32 0, i32 4
  %4725 = load ptr, ptr %4724, align 8, !tbaa !25
  %4726 = getelementptr inbounds double, ptr %4725, i64 5
  store double %4720, ptr %4726, align 8, !tbaa !30
  %4727 = load double, ptr %20, align 8, !tbaa !30
  %4728 = load ptr, ptr %4, align 8, !tbaa !5
  %4729 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4728, i32 0, i32 19
  %4730 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4729, i32 0, i32 3
  %4731 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4730, i32 0, i32 4
  %4732 = load ptr, ptr %4731, align 8, !tbaa !25
  %4733 = getelementptr inbounds double, ptr %4732, i64 6
  store double %4727, ptr %4733, align 8, !tbaa !30
  %4734 = load double, ptr %22, align 8, !tbaa !30
  %4735 = load ptr, ptr %4, align 8, !tbaa !5
  %4736 = getelementptr inbounds %"struct.alglib_impl::minbcstate", ptr %4735, i32 0, i32 19
  %4737 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %4736, i32 0, i32 3
  %4738 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %4737, i32 0, i32 4
  %4739 = load ptr, ptr %4738, align 8, !tbaa !25
  %4740 = getelementptr inbounds double, ptr %4739, i64 7
  store double %4734, ptr %4740, align 8, !tbaa !30
  %4741 = load i8, ptr %23, align 1, !tbaa !27, !range !28, !noundef !29
  %4742 = trunc i8 %4741 to i1
  store i1 %4742, ptr %3, align 1
  store i32 1, ptr %24, align 4
  br label %4743

4743:                                             ; preds = %4617, %4614, %4554, %4096, %4086, %2600, %2581, %2547, %2361, %2350, %2281, %1341, %1330, %1320, %764, %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
  %4744 = load i1, ptr %3, align 1
  ret i1 %4744
}

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN11alglib_impl26enforceboundaryconstraintsEPNS_9ae_vectorEPKS0_S3_S3_S3_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_impl21projectgradientintobcEPKNS_9ae_vectorEPS0_S2_S2_S2_S2_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_impl18calculatestepboundEPKNS_9ae_vectorES2_dS2_S2_S2_S2_llPlPdS4_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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double 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 352}
!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, !11, i64 200, !14, i64 208, !12, i64 272, !14, i64 280, !13, i64 344, !13, i64 345, !13, i64 346, !13, i64 347, !16, i64 352, !14, i64 616, !14, i64 680, !14, i64 744, !14, i64 808, !14, i64 872, !14, i64 936, !14, i64 1000, !12, i64 1064, !12, i64 1072, !12, i64 1080, !14, i64 1088, !12, i64 1152, !14, i64 1160, !14, i64 1224, !14, i64 1288, !14, i64 1352, !11, i64 1416, !11, i64 1424, !11, i64 1432, !11, i64 1440, !14, i64 1448, !12, i64 1512, !12, i64 1520, !12, i64 1528, !12, i64 1536, !12, i64 1544, !12, i64 1552, !12, i64 1560, !12, i64 1568, !12, i64 1576, !14, i64 1584, !14, i64 1648, !11, i64 1712, !11, i64 1720, !12, i64 1728, !12, i64 1736, !14, i64 1744, !18, i64 1808, !12, i64 2000, !11, i64 2008, !19, i64 2016, !19, i64 2096, !14, i64 2176, !14, i64 2240, !11, i64 2304, !12, i64 2312, !11, i64 2320, !20, i64 2328, !14, i64 8032, !14, i64 8096}
!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, !14, i64 88, !11, i64 152, !14, i64 160, !14, i64 224, !14, i64 288, !19, i64 352, !14, i64 432, !14, i64 496, !11, i64 560, !11, i64 568, !11, i64 576, !12, i64 584, !11, i64 592, !14, i64 600, !14, i64 664, !12, i64 728, !14, i64 736, !14, i64 800, !12, i64 864, !19, i64 872, !19, i64 952, !19, i64 1032, !14, i64 1112, !14, i64 1176, !16, i64 1240, !13, i64 1504, !13, i64 1505, !11, i64 1512, !11, i64 1520, !12, i64 1528, !12, i64 1536, !13, i64 1544, !21, i64 1552, !12, i64 1848, !12, i64 1856, !22, i64 1864, !22, i64 2184, !12, i64 2504, !12, i64 2512, !23, i64 2520, !23, i64 2840, !12, i64 3160, !12, i64 3168, !24, i64 3176, !24, i64 3504, !13, i64 3832, !14, i64 3840, !14, i64 3904, !19, i64 3968, !16, i64 4048, !14, i64 4312, !14, i64 4376, !14, i64 4440, !14, i64 4504, !14, i64 4568, !14, i64 4632, !14, i64 4696, !14, i64 4760, !19, i64 4824, !19, i64 4904, !14, i64 4984, !14, i64 5048, !14, i64 5112, !14, i64 5176, !14, i64 5240, !14, i64 5304, !14, i64 5368, !14, i64 5432, !14, i64 5496, !14, i64 5560, !19, i64 5624}
!21 = !{!"_ZTSN11alglib_impl14optguardreportE", !13, i64 0, !13, i64 1, !11, i64 8, !12, i64 16, !13, i64 24, !13, i64 25, !13, i64 26, !11, i64 32, !12, i64 40, !13, i64 48, !11, i64 56, !11, i64 64, !14, i64 72, !19, i64 136, !19, i64 216}
!22 = !{!"_ZTSN11alglib_impl19optguardnonc0reportE", !13, i64 0, !11, i64 8, !14, i64 16, !14, i64 80, !11, i64 144, !14, i64 152, !14, i64 216, !11, i64 280, !11, i64 288, !11, i64 296, !11, i64 304, !11, i64 312}
!23 = !{!"_ZTSN11alglib_impl24optguardnonc1test0reportE", !13, i64 0, !11, i64 8, !14, i64 16, !14, i64 80, !11, i64 144, !14, i64 152, !14, i64 216, !11, i64 280, !11, i64 288, !11, i64 296, !11, i64 304, !11, i64 312}
!24 = !{!"_ZTSN11alglib_impl24optguardnonc1test1reportE", !13, i64 0, !11, i64 8, !11, i64 16, !14, i64 24, !14, i64 88, !11, i64 152, !14, i64 160, !14, i64 224, !11, i64 288, !11, i64 296, !11, i64 304, !11, i64 312, !11, i64 320}
!25 = !{!7, !7, i64 0}
!26 = !{!11, !11, i64 0}
!27 = !{!13, !13, i64 0}
!28 = !{i8 0, i8 2}
!29 = !{}
!30 = !{!12, !12, i64 0}
!31 = !{!10, !11, i64 0}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = !{!10, !11, i64 1440}
!35 = !{!10, !13, i64 347}
!36 = !{!10, !11, i64 1416}
!37 = !{!10, !11, i64 1424}
!38 = !{!10, !11, i64 1432}
!39 = !{!10, !11, i64 2320}
!40 = distinct !{!40, !33}
!41 = !{!10, !11, i64 128}
!42 = distinct !{!42, !33}
!43 = !{!10, !12, i64 56}
!44 = !{!10, !12, i64 2312}
!45 = distinct !{!45, !33}
!46 = !{!10, !13, i64 345}
!47 = !{!10, !12, i64 272}
!48 = distinct !{!48, !33}
!49 = !{!10, !12, i64 1152}
!50 = !{!10, !11, i64 2008}
!51 = !{!10, !13, i64 344}
!52 = !{!10, !12, i64 1064}
!53 = !{!10, !13, i64 40}
!54 = !{!10, !13, i64 346}
!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 = !{!10, !12, i64 1560}
!62 = distinct !{!62, !33}
!63 = !{!10, !12, i64 8}
!64 = distinct !{!64, !33}
!65 = distinct !{!65, !33}
!66 = !{!10, !12, i64 1728}
!67 = !{!10, !12, i64 1736}
!68 = !{!10, !12, i64 48}
!69 = !{!10, !12, i64 1072}
!70 = !{!10, !11, i64 1720}
!71 = distinct !{!71, !33}
!72 = !{!10, !12, i64 2000}
!73 = distinct !{!73, !33}
!74 = distinct !{!74, !33}
!75 = !{!10, !12, i64 1080}
!76 = distinct !{!76, !33}
!77 = !{!10, !12, i64 24}
!78 = !{!10, !12, i64 16}
!79 = !{!10, !11, i64 32}
!80 = distinct !{!80, !33}
!81 = !{!10, !11, i64 2304}
!82 = distinct !{!82, !33}
!83 = distinct !{!83, !33}
!84 = distinct !{!84, !33}
!85 = distinct !{!85, !33}
!86 = distinct !{!86, !33}
!87 = distinct !{!87, !33}
!88 = distinct !{!88, !33}
!89 = distinct !{!89, !33}
!90 = distinct !{!90, !33}
!91 = distinct !{!91, !33}
!92 = distinct !{!92, !33}
!93 = distinct !{!93, !33}
!94 = distinct !{!94, !33}
!95 = distinct !{!95, !33}


; 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.1814 = 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.1815 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.1816 = 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 352
  %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 416
  %11 = load ptr, ptr %10, align 8, !tbaa !24
  %12 = load i64, ptr %11, align 8, !tbaa !25
  %13 = getelementptr inbounds i8, ptr %11, i64 8
  %14 = load i64, ptr %13, align 8, !tbaa !25
  %15 = getelementptr inbounds i8, ptr %11, i64 16
  %16 = load i64, ptr %15, align 8, !tbaa !25
  %17 = getelementptr inbounds i8, ptr %11, i64 24
  %18 = load i64, ptr %17, align 8, !tbaa !25
  %19 = getelementptr inbounds i8, ptr %11, i64 32
  %20 = load i64, ptr %19, align 8, !tbaa !25
  %21 = getelementptr inbounds i8, ptr %11, i64 40
  %22 = load i64, ptr %21, align 8, !tbaa !25
  %23 = getelementptr inbounds i8, ptr %11, i64 48
  %24 = load i64, ptr %23, align 8, !tbaa !25
  %25 = getelementptr inbounds i8, ptr %0, i64 480
  %26 = load ptr, ptr %25, align 8, !tbaa !24
  %27 = load i8, ptr %26, align 1, !tbaa !26, !range !27, !noundef !28
  %28 = getelementptr inbounds i8, ptr %26, i64 1
  %29 = load i8, ptr %28, align 1, !tbaa !26, !range !27, !noundef !28
  %30 = getelementptr inbounds i8, ptr %0, i64 544
  %31 = load ptr, ptr %30, align 8, !tbaa !24
  %32 = load double, ptr %31, align 8, !tbaa !29
  %33 = getelementptr inbounds i8, ptr %31, i64 8
  %34 = load double, ptr %33, align 8, !tbaa !29
  %35 = getelementptr inbounds i8, ptr %31, i64 16
  %36 = load double, ptr %35, align 8, !tbaa !29
  %37 = getelementptr inbounds i8, ptr %31, i64 24
  %38 = load double, ptr %37, align 8, !tbaa !29
  %39 = getelementptr inbounds i8, ptr %31, i64 32
  %40 = load double, ptr %39, align 8, !tbaa !29
  %41 = getelementptr inbounds i8, ptr %31, i64 40
  %42 = load double, ptr %41, align 8, !tbaa !29
  %43 = getelementptr inbounds i8, ptr %31, i64 48
  %44 = load double, ptr %43, align 8, !tbaa !29
  %45 = getelementptr inbounds i8, ptr %31, i64 56
  %46 = load double, ptr %45, align 8, !tbaa !29
  br label %47

47:                                               ; preds = %2, %9
  %.sink1751 = phi i64 [ %12, %9 ], [ 359, %2 ]
  %.sink1750 = phi i64 [ %22, %9 ], [ 255, %2 ]
  %.sink = phi double [ %32, %9 ], [ 2.050000e+02, %2 ]
  %.01464 = phi double [ %34, %9 ], [ -8.380000e+02, %2 ]
  %.01460 = phi i64 [ %14, %9 ], [ -58, %2 ]
  %.01456 = phi i64 [ %16, %9 ], [ -919, %2 ]
  %.01439 = phi i64 [ %18, %9 ], [ -909, %2 ]
  %.01438 = phi i64 [ %20, %9 ], [ 81, %2 ]
  %.01424 = phi double [ %36, %9 ], [ 9.390000e+02, %2 ]
  %.01415 = phi double [ %38, %9 ], [ -5.260000e+02, %2 ]
  %.01414 = phi double [ %40, %9 ], [ 7.630000e+02, %2 ]
  %.01404 = phi i8 [ %27, %9 ], [ 0, %2 ]
  %.01397 = phi i64 [ %24, %9 ], [ 74, %2 ]
  %.01387 = phi double [ %42, %9 ], [ -5.410000e+02, %2 ]
  %.01382 = phi double [ %44, %9 ], [ -6.980000e+02, %2 ]
  %.01373 = phi i8 [ %29, %9 ], [ 1, %2 ]
  %.0 = phi double [ %46, %9 ], [ -9.000000e+02, %2 ]
  store i64 %.sink1751, ptr %3, align 8
  store i64 %.sink1750, ptr %5, align 8
  store double %.sink, ptr %4, align 8
  switch i32 %7, label %48 [
    i32 0, label %229
    i32 1, label %272
    i32 2, label %276
    i32 3, label %298
    i32 4, label %318
    i32 5, label %322
    i32 6, label %387
    i32 7, label %402
    i32 8, label %417
    i32 9, label %431
    i32 10, label %500
    i32 11, label %509
    i32 12, label %755
    i32 13, label %762
    i32 14, label %827
    i32 15, label %842
    i32 16, label %857
    i32 17, label %871
    i32 18, label %940
    i32 19, label %949
    i32 20, label %1152
    i32 21, label %1529
    i32 22, label %1536
    i32 23, label %1601
    i32 24, label %1616
    i32 25, label %1631
    i32 26, label %1645
    i32 27, label %1714
    i32 28, label %1723
    i32 29, label %2026
  ]

48:                                               ; preds = %47
  %49 = load i64, ptr %0, align 8, !tbaa !30
  %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 !29
  %52 = load i64, ptr %0, align 8, !tbaa !30
  %.not.not1677 = icmp sgt i64 %52, 0
  br i1 %.not.not1677, label %.lr.ph1680, label %._crit_edge1681

.lr.ph1680:                                       ; preds = %48
  %53 = getelementptr inbounds i8, ptr %0, i64 1504
  %54 = getelementptr inbounds i8, ptr %0, i64 672
  %xtraiter1874 = and i64 %52, 3
  %55 = icmp ult i64 %52, 4
  br i1 %55, label %._crit_edge1681.loopexit.unr-lcssa, label %.lr.ph1680.new

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

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

._crit_edge1681.loopexit.unr-lcssa:               ; preds = %56, %.lr.ph1680
  %.114401678.unr = phi i64 [ 0, %.lr.ph1680 ], [ %80, %56 ]
  %lcmp.mod1876.not = icmp eq i64 %xtraiter1874, 0
  br i1 %lcmp.mod1876.not, label %._crit_edge1681, label %.epil.preheader1873

.epil.preheader1873:                              ; preds = %._crit_edge1681.loopexit.unr-lcssa, %.epil.preheader1873
  %.114401678.epil = phi i64 [ %86, %.epil.preheader1873 ], [ %.114401678.unr, %._crit_edge1681.loopexit.unr-lcssa ]
  %epil.iter1875 = phi i64 [ %epil.iter1875.next, %.epil.preheader1873 ], [ 0, %._crit_edge1681.loopexit.unr-lcssa ]
  %81 = load ptr, ptr %53, align 8, !tbaa !24
  %82 = getelementptr inbounds double, ptr %81, i64 %.114401678.epil
  %83 = load double, ptr %82, align 8, !tbaa !29
  %84 = load ptr, ptr %54, align 8, !tbaa !24
  %85 = getelementptr inbounds double, ptr %84, i64 %.114401678.epil
  store double %83, ptr %85, align 8, !tbaa !29
  %86 = add nuw nsw i64 %.114401678.epil, 1
  %epil.iter1875.next = add i64 %epil.iter1875, 1
  %epil.iter1875.cmp.not = icmp eq i64 %epil.iter1875.next, %xtraiter1874
  br i1 %epil.iter1875.cmp.not, label %._crit_edge1681, label %.epil.preheader1873, !llvm.loop !33

._crit_edge1681:                                  ; preds = %._crit_edge1681.loopexit.unr-lcssa, %.epil.preheader1873, %48
  %87 = getelementptr inbounds i8, ptr %0, i64 616
  %88 = getelementptr inbounds i8, ptr %0, i64 1288
  %89 = getelementptr inbounds i8, ptr %0, i64 1160
  %90 = getelementptr inbounds i8, ptr %0, i64 1352
  %91 = getelementptr inbounds i8, ptr %0, i64 1224
  %92 = tail call noundef zeroext i1 @_ZN11alglib_impl26enforceboundaryconstraintsEPNS_9ae_vectorEPKS0_S3_S3_S3_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_edge1681
  %94 = getelementptr inbounds i8, ptr %0, i64 1440
  store i64 -3, ptr %94, align 8, !tbaa !35
  br label %2220

95:                                               ; preds = %._crit_edge1681
  %96 = getelementptr inbounds i8, ptr %0, i64 347
  store i8 0, ptr %96, align 1, !tbaa !36
  %97 = getelementptr inbounds i8, ptr %0, i64 1440
  store i64 0, ptr %97, align 8, !tbaa !35
  %98 = getelementptr inbounds i8, ptr %0, i64 1416
  %99 = getelementptr inbounds i8, ptr %0, i64 1432
  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 !37
  %100 = getelementptr inbounds i8, ptr %0, i64 2016
  %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 2096
  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 2176
  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 2240
  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 1648
  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 2328
  %107 = getelementptr inbounds i8, ptr %0, i64 64
  %108 = getelementptr inbounds i8, ptr %0, i64 2320
  %109 = load i64, ptr %108, align 8, !tbaa !38
  %110 = icmp sgt i64 %109, 0
  tail call void @_ZN11alglib_impl21smoothnessmonitorinitEPNS_17smoothnessmonitorEPKNS_9ae_vectorEllbPNS_8ae_stateE(ptr noundef nonnull %106, ptr noundef nonnull %107, i64 noundef %52, i64 noundef 1, i1 noundef zeroext %110, ptr noundef %1)
  br i1 %.not.not1677, label %.lr.ph1685, label %._crit_edge1686.thread

._crit_edge1686.thread:                           ; preds = %95
  %111 = getelementptr inbounds i8, ptr %0, i64 1584
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %111, i64 noundef %52, ptr noundef %1)
  br label %._crit_edge1691

.lr.ph1685:                                       ; preds = %95
  %112 = getelementptr inbounds i8, ptr %0, i64 120
  %113 = getelementptr inbounds i8, ptr %0, i64 8088
  %114 = getelementptr inbounds i8, ptr %0, i64 8152
  %xtraiter1880 = and i64 %52, 1
  %115 = icmp eq i64 %52, 1
  br i1 %115, label %._crit_edge1686.unr-lcssa, label %.lr.ph1685.new

.lr.ph1685.new:                                   ; preds = %.lr.ph1685
  %unroll_iter1883 = and i64 %52, 9223372036854775806
  br label %116

116:                                              ; preds = %116, %.lr.ph1685.new
  %.214411683 = phi i64 [ 0, %.lr.ph1685.new ], [ %140, %116 ]
  %niter1884 = phi i64 [ 0, %.lr.ph1685.new ], [ %niter1884.next.1, %116 ]
  %117 = load ptr, ptr %112, align 8, !tbaa !24
  %118 = getelementptr inbounds double, ptr %117, i64 %.214411683
  %119 = load double, ptr %118, align 8, !tbaa !29
  %120 = load ptr, ptr %113, align 8, !tbaa !24
  %121 = getelementptr inbounds double, ptr %120, i64 %.214411683
  store double %119, ptr %121, align 8, !tbaa !29
  %122 = load ptr, ptr %112, align 8, !tbaa !24
  %123 = getelementptr inbounds double, ptr %122, i64 %.214411683
  %124 = load double, ptr %123, align 8, !tbaa !29
  %125 = fdiv double 1.000000e+00, %124
  %126 = load ptr, ptr %114, align 8, !tbaa !24
  %127 = getelementptr inbounds double, ptr %126, i64 %.214411683
  store double %125, ptr %127, align 8, !tbaa !29
  %128 = or disjoint i64 %.214411683, 1
  %129 = load ptr, ptr %112, align 8, !tbaa !24
  %130 = getelementptr inbounds double, ptr %129, i64 %128
  %131 = load double, ptr %130, align 8, !tbaa !29
  %132 = load ptr, ptr %113, align 8, !tbaa !24
  %133 = getelementptr inbounds double, ptr %132, i64 %128
  store double %131, ptr %133, align 8, !tbaa !29
  %134 = load ptr, ptr %112, align 8, !tbaa !24
  %135 = getelementptr inbounds double, ptr %134, i64 %128
  %136 = load double, ptr %135, align 8, !tbaa !29
  %137 = fdiv double 1.000000e+00, %136
  %138 = load ptr, ptr %114, align 8, !tbaa !24
  %139 = getelementptr inbounds double, ptr %138, i64 %128
  store double %137, ptr %139, align 8, !tbaa !29
  %140 = add nuw nsw i64 %.214411683, 2
  %niter1884.next.1 = add i64 %niter1884, 2
  %niter1884.ncmp.1 = icmp eq i64 %niter1884.next.1, %unroll_iter1883
  br i1 %niter1884.ncmp.1, label %._crit_edge1686.unr-lcssa, label %116, !llvm.loop !39

._crit_edge1686.unr-lcssa:                        ; preds = %116, %.lr.ph1685
  %.214411683.unr = phi i64 [ 0, %.lr.ph1685 ], [ %140, %116 ]
  %lcmp.mod1882.not = icmp eq i64 %xtraiter1880, 0
  br i1 %lcmp.mod1882.not, label %._crit_edge1686, label %._crit_edge1686.epilog-lcssa

._crit_edge1686.epilog-lcssa:                     ; preds = %._crit_edge1686.unr-lcssa
  %141 = load ptr, ptr %112, align 8, !tbaa !24
  %142 = getelementptr inbounds double, ptr %141, i64 %.214411683.unr
  %143 = load double, ptr %142, align 8, !tbaa !29
  %144 = load ptr, ptr %113, align 8, !tbaa !24
  %145 = getelementptr inbounds double, ptr %144, i64 %.214411683.unr
  store double %143, ptr %145, align 8, !tbaa !29
  %146 = load ptr, ptr %112, align 8, !tbaa !24
  %147 = getelementptr inbounds double, ptr %146, i64 %.214411683.unr
  %148 = load double, ptr %147, align 8, !tbaa !29
  %149 = fdiv double 1.000000e+00, %148
  %150 = load ptr, ptr %114, align 8, !tbaa !24
  %151 = getelementptr inbounds double, ptr %150, i64 %.214411683.unr
  store double %149, ptr %151, align 8, !tbaa !29
  br label %._crit_edge1686

._crit_edge1686:                                  ; preds = %._crit_edge1686.unr-lcssa, %._crit_edge1686.epilog-lcssa
  %152 = getelementptr inbounds i8, ptr %0, i64 1584
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %152, i64 noundef %52, ptr noundef %1)
  br i1 %.not.not1677, label %.lr.ph1690, label %._crit_edge1691

.lr.ph1690:                                       ; preds = %._crit_edge1686
  %153 = getelementptr inbounds i8, ptr %0, i64 128
  %154 = getelementptr inbounds i8, ptr %0, i64 120
  %155 = getelementptr inbounds i8, ptr %0, i64 1640
  %156 = getelementptr inbounds i8, ptr %0, i64 192
  br label %157

157:                                              ; preds = %.lr.ph1690, %169
  %.314421688 = phi i64 [ 0, %.lr.ph1690 ], [ %172, %169 ]
  %158 = load i64, ptr %153, align 8, !tbaa !40
  switch i64 %158, label %169 [
    i64 2, label %159
    i64 3, label %164
  ]

159:                                              ; preds = %157
  %160 = load ptr, ptr %156, align 8, !tbaa !24
  %161 = getelementptr inbounds double, ptr %160, i64 %.314421688
  %162 = load double, ptr %161, align 8, !tbaa !29
  %163 = fdiv double 1.000000e+00, %162
  br label %169

164:                                              ; preds = %157
  %165 = load ptr, ptr %154, align 8, !tbaa !24
  %166 = getelementptr inbounds double, ptr %165, i64 %.314421688
  %167 = load double, ptr %166, align 8, !tbaa !29
  %168 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %167, ptr noundef %1)
  br label %169

169:                                              ; preds = %157, %164, %159
  %.sink1780 = phi double [ %168, %164 ], [ %163, %159 ], [ 1.000000e+00, %157 ]
  %170 = load ptr, ptr %155, align 8, !tbaa !24
  %171 = getelementptr inbounds double, ptr %170, i64 %.314421688
  store double %.sink1780, ptr %171, align 8, !tbaa !29
  %172 = add nuw nsw i64 %.314421688, 1
  %exitcond1748.not = icmp eq i64 %172, %52
  br i1 %exitcond1748.not, label %._crit_edge1691, label %157, !llvm.loop !41

._crit_edge1691:                                  ; preds = %169, %._crit_edge1686.thread, %._crit_edge1686
  %.31442.lcssa = phi i64 [ 0, %._crit_edge1686 ], [ 0, %._crit_edge1686.thread ], [ %52, %169 ]
  tail call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %173 = getelementptr inbounds i8, ptr %0, i64 56
  %174 = load double, ptr %173, align 8, !tbaa !42
  %175 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %174, double noundef 0.000000e+00)
  br i1 %175, label %176, label %253

176:                                              ; preds = %._crit_edge1691
  %177 = getelementptr inbounds i8, ptr %0, i64 2312
  %178 = load double, ptr %177, align 8, !tbaa !43
  %179 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %178, double noundef 0.000000e+00)
  br i1 %179, label %.loopexit, label %253

.loopexit.loopexit.unr-lcssa:                     ; preds = %238, %.lr.ph1675
  %.614451673.unr = phi i64 [ 0, %.lr.ph1675 ], [ %252, %238 ]
  %lcmp.mod1870.not = icmp eq i64 %xtraiter1868, 0
  br i1 %lcmp.mod1870.not, label %.loopexit, label %.loopexit.loopexit.epilog-lcssa

.loopexit.loopexit.epilog-lcssa:                  ; preds = %.loopexit.loopexit.unr-lcssa
  %180 = load ptr, ptr %235, align 8, !tbaa !24
  %181 = getelementptr inbounds double, ptr %180, i64 %.614451673.unr
  %182 = load double, ptr %181, align 8, !tbaa !29
  %183 = load ptr, ptr %236, align 8, !tbaa !24
  %184 = load ptr, ptr %183, align 8, !tbaa !44
  %185 = getelementptr inbounds double, ptr %184, i64 %.614451673.unr
  store double %182, ptr %185, align 8, !tbaa !29
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit.epilog-lcssa, %.loopexit.loopexit.unr-lcssa, %229, %176
  %.11461 = phi i64 [ %52, %176 ], [ %.01460, %229 ], [ %.01460, %.loopexit.loopexit.unr-lcssa ], [ %.01460, %.loopexit.loopexit.epilog-lcssa ]
  %.11457 = phi i64 [ %50, %176 ], [ %.01456, %229 ], [ %.01456, %.loopexit.loopexit.unr-lcssa ], [ %.01456, %.loopexit.loopexit.epilog-lcssa ]
  %.41443 = phi i64 [ %.31442.lcssa, %176 ], [ 0, %229 ], [ %.01460, %.loopexit.loopexit.unr-lcssa ], [ %.01460, %.loopexit.loopexit.epilog-lcssa ]
  %.11383 = phi double [ %51, %176 ], [ %.01382, %229 ], [ %.01382, %.loopexit.loopexit.unr-lcssa ], [ %.01382, %.loopexit.loopexit.epilog-lcssa ]
  %186 = getelementptr inbounds i8, ptr %0, i64 2328
  %187 = getelementptr inbounds i8, ptr %0, i64 616
  %188 = getelementptr inbounds i8, ptr %0, i64 64
  %189 = getelementptr inbounds i8, ptr %0, i64 1288
  %190 = getelementptr inbounds i8, ptr %0, i64 1352
  %191 = getelementptr inbounds i8, ptr %0, i64 2312
  %192 = load double, ptr %191, align 8, !tbaa !43
  %193 = tail call noundef zeroext i1 @_ZN11alglib_impl34smoothnessmonitorcheckgradientatx0EPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_S4_bdPNS_8ae_stateE(ptr noundef nonnull %186, ptr noundef nonnull %187, ptr noundef nonnull %188, ptr noundef nonnull %189, ptr noundef nonnull %190, i1 noundef zeroext true, double noundef %192, ptr noundef %1)
  br i1 %193, label %.preheader, label %253

.preheader:                                       ; preds = %.loopexit
  %.not1518.not1693 = icmp sgt i64 %.11461, 0
  br i1 %.not1518.not1693, label %.lr.ph1695, label %._crit_edge1696

.lr.ph1695:                                       ; preds = %.preheader
  %194 = getelementptr inbounds i8, ptr %0, i64 6224
  %195 = getelementptr inbounds i8, ptr %0, i64 264
  %xtraiter1886 = and i64 %.11461, 3
  %196 = icmp ult i64 %.11461, 4
  br i1 %196, label %._crit_edge1696.loopexit.unr-lcssa, label %.lr.ph1695.new

.lr.ph1695.new:                                   ; preds = %.lr.ph1695
  %unroll_iter1889 = and i64 %.11461, 9223372036854775804
  br label %197

197:                                              ; preds = %197, %.lr.ph1695.new
  %.514441694 = phi i64 [ 0, %.lr.ph1695.new ], [ %221, %197 ]
  %niter1890 = phi i64 [ 0, %.lr.ph1695.new ], [ %niter1890.next.3, %197 ]
  %198 = load ptr, ptr %194, align 8, !tbaa !24
  %199 = getelementptr inbounds double, ptr %198, i64 %.514441694
  %200 = load double, ptr %199, align 8, !tbaa !29
  %201 = load ptr, ptr %195, align 8, !tbaa !24
  %202 = getelementptr inbounds double, ptr %201, i64 %.514441694
  store double %200, ptr %202, align 8, !tbaa !29
  %203 = or disjoint i64 %.514441694, 1
  %204 = load ptr, ptr %194, align 8, !tbaa !24
  %205 = getelementptr inbounds double, ptr %204, i64 %203
  %206 = load double, ptr %205, align 8, !tbaa !29
  %207 = load ptr, ptr %195, align 8, !tbaa !24
  %208 = getelementptr inbounds double, ptr %207, i64 %203
  store double %206, ptr %208, align 8, !tbaa !29
  %209 = or disjoint i64 %.514441694, 2
  %210 = load ptr, ptr %194, align 8, !tbaa !24
  %211 = getelementptr inbounds double, ptr %210, i64 %209
  %212 = load double, ptr %211, align 8, !tbaa !29
  %213 = load ptr, ptr %195, align 8, !tbaa !24
  %214 = getelementptr inbounds double, ptr %213, i64 %209
  store double %212, ptr %214, align 8, !tbaa !29
  %215 = or disjoint i64 %.514441694, 3
  %216 = load ptr, ptr %194, align 8, !tbaa !24
  %217 = getelementptr inbounds double, ptr %216, i64 %215
  %218 = load double, ptr %217, align 8, !tbaa !29
  %219 = load ptr, ptr %195, align 8, !tbaa !24
  %220 = getelementptr inbounds double, ptr %219, i64 %215
  store double %218, ptr %220, align 8, !tbaa !29
  %221 = add nuw nsw i64 %.514441694, 4
  %niter1890.next.3 = add i64 %niter1890, 4
  %niter1890.ncmp.3 = icmp eq i64 %niter1890.next.3, %unroll_iter1889
  br i1 %niter1890.ncmp.3, label %._crit_edge1696.loopexit.unr-lcssa, label %197, !llvm.loop !45

._crit_edge1696.loopexit.unr-lcssa:               ; preds = %197, %.lr.ph1695
  %.514441694.unr = phi i64 [ 0, %.lr.ph1695 ], [ %221, %197 ]
  %lcmp.mod1888.not = icmp eq i64 %xtraiter1886, 0
  br i1 %lcmp.mod1888.not, label %._crit_edge1696, label %.epil.preheader1885

.epil.preheader1885:                              ; preds = %._crit_edge1696.loopexit.unr-lcssa, %.epil.preheader1885
  %.514441694.epil = phi i64 [ %227, %.epil.preheader1885 ], [ %.514441694.unr, %._crit_edge1696.loopexit.unr-lcssa ]
  %epil.iter1887 = phi i64 [ %epil.iter1887.next, %.epil.preheader1885 ], [ 0, %._crit_edge1696.loopexit.unr-lcssa ]
  %222 = load ptr, ptr %194, align 8, !tbaa !24
  %223 = getelementptr inbounds double, ptr %222, i64 %.514441694.epil
  %224 = load double, ptr %223, align 8, !tbaa !29
  %225 = load ptr, ptr %195, align 8, !tbaa !24
  %226 = getelementptr inbounds double, ptr %225, i64 %.514441694.epil
  store double %224, ptr %226, align 8, !tbaa !29
  %227 = add nuw nsw i64 %.514441694.epil, 1
  %epil.iter1887.next = add i64 %epil.iter1887, 1
  %epil.iter1887.cmp.not = icmp eq i64 %epil.iter1887.next, %xtraiter1886
  br i1 %epil.iter1887.cmp.not, label %._crit_edge1696, label %.epil.preheader1885, !llvm.loop !46

._crit_edge1696:                                  ; preds = %._crit_edge1696.loopexit.unr-lcssa, %.epil.preheader1885, %.preheader
  %.51444.lcssa = phi i64 [ 0, %.preheader ], [ %.11461, %.epil.preheader1885 ], [ %.11461, %._crit_edge1696.loopexit.unr-lcssa ]
  %228 = getelementptr inbounds i8, ptr %0, i64 345
  store i8 1, ptr %228, align 1, !tbaa !47
  br label %2180

229:                                              ; preds = %47
  %230 = getelementptr inbounds i8, ptr %0, i64 345
  store i8 0, ptr %230, align 1, !tbaa !47
  %231 = getelementptr inbounds i8, ptr %0, i64 272
  %232 = load double, ptr %231, align 8, !tbaa !48
  %233 = getelementptr inbounds i8, ptr %0, i64 6288
  %234 = load ptr, ptr %233, align 8, !tbaa !24
  store double %232, ptr %234, align 8, !tbaa !29
  %.not1517.not1672 = icmp sgt i64 %.01460, 0
  br i1 %.not1517.not1672, label %.lr.ph1675, label %.loopexit

.lr.ph1675:                                       ; preds = %229
  %235 = getelementptr inbounds i8, ptr %0, i64 336
  %236 = getelementptr inbounds i8, ptr %0, i64 6368
  %xtraiter1868 = and i64 %.01460, 1
  %237 = icmp eq i64 %.01460, 1
  br i1 %237, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph1675.new

.lr.ph1675.new:                                   ; preds = %.lr.ph1675
  %unroll_iter1871 = and i64 %.01460, 9223372036854775806
  br label %238

238:                                              ; preds = %238, %.lr.ph1675.new
  %.614451673 = phi i64 [ 0, %.lr.ph1675.new ], [ %252, %238 ]
  %niter1872 = phi i64 [ 0, %.lr.ph1675.new ], [ %niter1872.next.1, %238 ]
  %239 = load ptr, ptr %235, align 8, !tbaa !24
  %240 = getelementptr inbounds double, ptr %239, i64 %.614451673
  %241 = load double, ptr %240, align 8, !tbaa !29
  %242 = load ptr, ptr %236, align 8, !tbaa !24
  %243 = load ptr, ptr %242, align 8, !tbaa !44
  %244 = getelementptr inbounds double, ptr %243, i64 %.614451673
  store double %241, ptr %244, align 8, !tbaa !29
  %245 = or disjoint i64 %.614451673, 1
  %246 = load ptr, ptr %235, align 8, !tbaa !24
  %247 = getelementptr inbounds double, ptr %246, i64 %245
  %248 = load double, ptr %247, align 8, !tbaa !29
  %249 = load ptr, ptr %236, align 8, !tbaa !24
  %250 = load ptr, ptr %249, align 8, !tbaa !44
  %251 = getelementptr inbounds double, ptr %250, i64 %245
  store double %248, ptr %251, align 8, !tbaa !29
  %252 = add nuw nsw i64 %.614451673, 2
  %niter1872.next.1 = add i64 %niter1872, 2
  %niter1872.ncmp.1 = icmp eq i64 %niter1872.next.1, %unroll_iter1871
  br i1 %niter1872.ncmp.1, label %.loopexit.loopexit.unr-lcssa, label %238, !llvm.loop !49

253:                                              ; preds = %.loopexit, %._crit_edge1691, %176
  %.21462 = phi i64 [ %.11461, %.loopexit ], [ %52, %176 ], [ %52, %._crit_edge1691 ]
  %.21458 = phi i64 [ %.11457, %.loopexit ], [ %50, %176 ], [ %50, %._crit_edge1691 ]
  %.71446 = phi i64 [ %.41443, %.loopexit ], [ %.31442.lcssa, %176 ], [ %.31442.lcssa, %._crit_edge1691 ]
  %.21384 = phi double [ %.11383, %.loopexit ], [ %51, %176 ], [ %51, %._crit_edge1691 ]
  %254 = getelementptr inbounds i8, ptr %0, i64 1440
  store i64 0, ptr %254, align 8, !tbaa !35
  %255 = getelementptr inbounds i8, ptr %0, i64 1152
  store double 0.000000e+00, ptr %255, align 8, !tbaa !50
  %256 = sitofp i64 %.21462 to double
  %257 = fmul double %256, 1.500000e+00
  %258 = tail call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %257, ptr noundef %1)
  %259 = add nsw i64 %258, 5
  %260 = getelementptr inbounds i8, ptr %0, i64 2008
  store i64 %259, ptr %260, align 8, !tbaa !51
  %261 = getelementptr inbounds i8, ptr %0, i64 264
  %262 = load ptr, ptr %261, align 8, !tbaa !24
  %263 = getelementptr inbounds i8, ptr %0, i64 672
  %264 = load ptr, ptr %263, align 8, !tbaa !24
  %265 = add nsw i64 %.21462, -1
  %266 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %265)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %262, i64 noundef 1, ptr noundef %264, i64 noundef 1, i64 noundef %266)
  tail call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %267 = getelementptr inbounds i8, ptr %0, i64 56
  %268 = load double, ptr %267, align 8, !tbaa !42
  %269 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %268, double noundef 0.000000e+00)
  br i1 %269, label %274, label %270

270:                                              ; preds = %253
  %271 = getelementptr inbounds i8, ptr %0, i64 345
  store i8 1, ptr %271, align 1, !tbaa !47
  br label %2180

272:                                              ; preds = %47
  %273 = getelementptr inbounds i8, ptr %0, i64 345
  store i8 0, ptr %273, align 1, !tbaa !47
  br label %278

274:                                              ; preds = %253
  %275 = getelementptr inbounds i8, ptr %0, i64 344
  store i8 1, ptr %275, align 8, !tbaa !52
  br label %2180

276:                                              ; preds = %47
  %277 = getelementptr inbounds i8, ptr %0, i64 344
  store i8 0, ptr %277, align 8, !tbaa !52
  br label %278

278:                                              ; preds = %276, %272
  %279 = getelementptr inbounds i8, ptr %0, i64 272
  %280 = load double, ptr %279, align 8, !tbaa !48
  %281 = getelementptr inbounds i8, ptr %0, i64 1064
  store double %280, ptr %281, align 8, !tbaa !53
  %282 = getelementptr inbounds i8, ptr %0, i64 2000
  tail call void @_ZN11alglib_impl11trimprepareEdPdPNS_8ae_stateE(double noundef %280, ptr noundef nonnull %282, ptr noundef %1)
  %283 = getelementptr inbounds i8, ptr %0, i64 1424
  %284 = load i64, ptr %283, align 8, !tbaa !54
  %285 = add nsw i64 %284, 1
  store i64 %285, ptr %283, align 8, !tbaa !54
  %286 = getelementptr inbounds i8, ptr %0, i64 40
  %287 = load i8, ptr %286, align 8, !tbaa !55, !range !27, !noundef !28
  %288 = trunc nuw i8 %287 to i1
  br i1 %288, label %289, label %300

289:                                              ; preds = %278
  %290 = getelementptr inbounds i8, ptr %0, i64 264
  %291 = load ptr, ptr %290, align 8, !tbaa !24
  %292 = getelementptr inbounds i8, ptr %0, i64 672
  %293 = load ptr, ptr %292, align 8, !tbaa !24
  %294 = add nsw i64 %.01460, -1
  %295 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %294)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %291, i64 noundef 1, ptr noundef %293, i64 noundef 1, i64 noundef %295)
  %296 = load double, ptr %281, align 8, !tbaa !53
  store double %296, ptr %279, align 8, !tbaa !48
  %297 = getelementptr inbounds i8, ptr %0, i64 346
  store i8 1, ptr %297, align 2, !tbaa !56
  br label %2180

298:                                              ; preds = %47
  %299 = getelementptr inbounds i8, ptr %0, i64 346
  store i8 0, ptr %299, align 2, !tbaa !56
  br label %300

300:                                              ; preds = %278, %298
  %301 = getelementptr inbounds i8, ptr %0, i64 347
  %302 = load i8, ptr %301, align 1, !tbaa !36, !range !27, !noundef !28
  %303 = trunc nuw i8 %302 to i1
  br i1 %303, label %304, label %306

304:                                              ; preds = %300
  %305 = getelementptr inbounds i8, ptr %0, i64 1440
  store i64 8, ptr %305, align 8, !tbaa !35
  br label %2220

306:                                              ; preds = %300, %2175
  %.11465 = phi double [ %.01464, %300 ], [ %.91473, %2175 ]
  %.81447 = phi i64 [ %.01439, %300 ], [ %.38, %2175 ]
  %.11425 = phi double [ %.01424, %300 ], [ %.15, %2175 ]
  %.11416 = phi double [ %.01415, %300 ], [ %.71422, %2175 ]
  %.11405 = phi i8 [ %.01404, %300 ], [ %.12, %2175 ]
  %.11398 = phi i64 [ %.01397, %300 ], [ %.51402, %2175 ]
  %.11388 = phi double [ %.01387, %300 ], [ %.81395, %2175 ]
  %.31385 = phi double [ %.01382, %300 ], [ %2179, %2175 ]
  %.11374 = phi i8 [ %.01373, %300 ], [ %.81381, %2175 ]
  %.1 = phi double [ %.0, %300 ], [ %.7, %2175 ]
  %307 = getelementptr inbounds i8, ptr %0, i64 264
  %308 = load ptr, ptr %307, align 8, !tbaa !24
  %309 = getelementptr inbounds i8, ptr %0, i64 672
  %310 = load ptr, ptr %309, align 8, !tbaa !24
  %311 = add nsw i64 %.01460, -1
  %312 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %311)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %308, i64 noundef 1, ptr noundef %310, i64 noundef 1, i64 noundef %312)
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1)
  %313 = getelementptr inbounds i8, ptr %0, i64 56
  %314 = load double, ptr %313, align 8, !tbaa !42
  %315 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %314, double noundef 0.000000e+00)
  br i1 %315, label %320, label %316

316:                                              ; preds = %306
  %317 = getelementptr inbounds i8, ptr %0, i64 345
  store i8 1, ptr %317, align 1, !tbaa !47
  br label %2180

318:                                              ; preds = %47
  %319 = getelementptr inbounds i8, ptr %0, i64 345
  store i8 0, ptr %319, align 1, !tbaa !47
  %.phi.trans.insert1756 = getelementptr inbounds i8, ptr %0, i64 272
  %.pre1757 = load double, ptr %.phi.trans.insert1756, align 8, !tbaa !48
  br label %540

320:                                              ; preds = %306
  %321 = getelementptr inbounds i8, ptr %0, i64 344
  store i8 1, ptr %321, align 8, !tbaa !52
  br label %2180

322:                                              ; preds = %47
  %323 = getelementptr inbounds i8, ptr %0, i64 272
  %324 = load double, ptr %323, align 8, !tbaa !48
  %325 = getelementptr inbounds i8, ptr %0, i64 1512
  store double %324, ptr %325, align 8, !tbaa !57
  br label %326

326:                                              ; preds = %527, %322
  %.91448 = phi i64 [ 0, %322 ], [ %534, %527 ]
  %.not1492 = icmp slt i64 %.91448, %.01460
  br i1 %.not1492, label %327, label %535

327:                                              ; preds = %326
  %328 = getelementptr inbounds i8, ptr %0, i64 264
  %329 = load ptr, ptr %328, align 8, !tbaa !24
  %330 = getelementptr inbounds double, ptr %329, i64 %.91448
  %331 = load double, ptr %330, align 8, !tbaa !29
  %332 = getelementptr inbounds i8, ptr %0, i64 1216
  %333 = load ptr, ptr %332, align 8, !tbaa !24
  %334 = getelementptr inbounds i8, ptr %333, i64 %.91448
  %335 = load i8, ptr %334, align 1, !tbaa !26, !range !27, !noundef !28
  %336 = trunc nuw i8 %335 to i1
  br i1 %336, label %337, label %352

337:                                              ; preds = %327
  %338 = getelementptr inbounds i8, ptr %0, i64 56
  %339 = load double, ptr %338, align 8, !tbaa !42
  %340 = getelementptr inbounds i8, ptr %0, i64 120
  %341 = load ptr, ptr %340, align 8, !tbaa !24
  %342 = getelementptr inbounds double, ptr %341, i64 %.91448
  %343 = load double, ptr %342, align 8, !tbaa !29
  %344 = fneg double %339
  %345 = tail call double @llvm.fmuladd.f64(double %344, double %343, double %331)
  %346 = getelementptr inbounds i8, ptr %0, i64 1344
  %347 = load ptr, ptr %346, align 8, !tbaa !24
  %348 = getelementptr inbounds double, ptr %347, i64 %.91448
  %349 = load double, ptr %348, align 8, !tbaa !29
  %350 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %345, double noundef %349)
  %351 = zext i1 %350 to i8
  br label %352

352:                                              ; preds = %337, %327
  %.21406 = phi i8 [ %351, %337 ], [ 0, %327 ]
  %353 = getelementptr inbounds i8, ptr %0, i64 1280
  %354 = load ptr, ptr %353, align 8, !tbaa !24
  %355 = getelementptr inbounds i8, ptr %354, i64 %.91448
  %356 = load i8, ptr %355, align 1, !tbaa !26, !range !27, !noundef !28
  %357 = trunc nuw i8 %356 to i1
  br i1 %357, label %358, label %374

358:                                              ; preds = %352
  %359 = trunc nuw i8 %.21406 to i1
  br i1 %359, label %.thread, label %360

360:                                              ; preds = %358
  %361 = getelementptr inbounds i8, ptr %0, i64 56
  %362 = load double, ptr %361, align 8, !tbaa !42
  %363 = getelementptr inbounds i8, ptr %0, i64 120
  %364 = load ptr, ptr %363, align 8, !tbaa !24
  %365 = getelementptr inbounds double, ptr %364, i64 %.91448
  %366 = load double, ptr %365, align 8, !tbaa !29
  %367 = tail call double @llvm.fmuladd.f64(double %362, double %366, double %331)
  %368 = getelementptr inbounds i8, ptr %0, i64 1408
  %369 = load ptr, ptr %368, align 8, !tbaa !24
  %370 = getelementptr inbounds double, ptr %369, i64 %.91448
  %371 = load double, ptr %370, align 8, !tbaa !29
  %372 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %367, double noundef %371)
  %373 = zext i1 %372 to i8
  br label %374

374:                                              ; preds = %360, %352
  %.31407 = phi i8 [ %.21406, %352 ], [ %373, %360 ]
  %375 = trunc nuw i8 %.31407 to i1
  br i1 %375, label %.thread, label %376

376:                                              ; preds = %374
  %377 = getelementptr inbounds i8, ptr %0, i64 56
  %378 = load double, ptr %377, align 8, !tbaa !42
  %379 = getelementptr inbounds i8, ptr %0, i64 120
  %380 = load ptr, ptr %379, align 8, !tbaa !24
  %381 = getelementptr inbounds double, ptr %380, i64 %.91448
  %382 = load double, ptr %381, align 8, !tbaa !29
  %383 = fneg double %378
  %384 = tail call double @llvm.fmuladd.f64(double %383, double %382, double %331)
  %385 = load ptr, ptr %328, align 8, !tbaa !24
  %386 = getelementptr inbounds double, ptr %385, i64 %.91448
  store double %384, ptr %386, align 8, !tbaa !29
  br label %2180

387:                                              ; preds = %47
  %388 = getelementptr inbounds i8, ptr %0, i64 272
  %389 = load double, ptr %388, align 8, !tbaa !48
  %390 = getelementptr inbounds i8, ptr %0, i64 1520
  store double %389, ptr %390, align 8, !tbaa !58
  %391 = getelementptr inbounds i8, ptr %0, i64 56
  %392 = load double, ptr %391, align 8, !tbaa !42
  %393 = getelementptr inbounds i8, ptr %0, i64 120
  %394 = load ptr, ptr %393, align 8, !tbaa !24
  %395 = getelementptr inbounds double, ptr %394, i64 %.01439
  %396 = load double, ptr %395, align 8, !tbaa !29
  %397 = fmul double %392, -5.000000e-01
  %398 = tail call double @llvm.fmuladd.f64(double %397, double %396, double %.01424)
  %399 = getelementptr inbounds i8, ptr %0, i64 264
  %400 = load ptr, ptr %399, align 8, !tbaa !24
  %401 = getelementptr inbounds double, ptr %400, i64 %.01439
  store double %398, ptr %401, align 8, !tbaa !29
  br label %2180

402:                                              ; preds = %47
  %403 = getelementptr inbounds i8, ptr %0, i64 272
  %404 = load double, ptr %403, align 8, !tbaa !48
  %405 = getelementptr inbounds i8, ptr %0, i64 1528
  store double %404, ptr %405, align 8, !tbaa !59
  %406 = getelementptr inbounds i8, ptr %0, i64 56
  %407 = load double, ptr %406, align 8, !tbaa !42
  %408 = fmul double %407, 5.000000e-01
  %409 = getelementptr inbounds i8, ptr %0, i64 120
  %410 = load ptr, ptr %409, align 8, !tbaa !24
  %411 = getelementptr inbounds double, ptr %410, i64 %.01439
  %412 = load double, ptr %411, align 8, !tbaa !29
  %413 = tail call double @llvm.fmuladd.f64(double %408, double %412, double %.01424)
  %414 = getelementptr inbounds i8, ptr %0, i64 264
  %415 = load ptr, ptr %414, align 8, !tbaa !24
  %416 = getelementptr inbounds double, ptr %415, i64 %.01439
  store double %413, ptr %416, align 8, !tbaa !29
  br label %2180

417:                                              ; preds = %47
  %418 = getelementptr inbounds i8, ptr %0, i64 272
  %419 = load double, ptr %418, align 8, !tbaa !48
  %420 = getelementptr inbounds i8, ptr %0, i64 1536
  store double %419, ptr %420, align 8, !tbaa !60
  %421 = getelementptr inbounds i8, ptr %0, i64 56
  %422 = load double, ptr %421, align 8, !tbaa !42
  %423 = getelementptr inbounds i8, ptr %0, i64 120
  %424 = load ptr, ptr %423, align 8, !tbaa !24
  %425 = getelementptr inbounds double, ptr %424, i64 %.01439
  %426 = load double, ptr %425, align 8, !tbaa !29
  %427 = tail call double @llvm.fmuladd.f64(double %422, double %426, double %.01424)
  %428 = getelementptr inbounds i8, ptr %0, i64 264
  %429 = load ptr, ptr %428, align 8, !tbaa !24
  %430 = getelementptr inbounds double, ptr %429, i64 %.01439
  store double %427, ptr %430, align 8, !tbaa !29
  br label %2180

431:                                              ; preds = %47
  %432 = getelementptr inbounds i8, ptr %0, i64 272
  %433 = load double, ptr %432, align 8, !tbaa !48
  %434 = getelementptr inbounds i8, ptr %0, i64 1544
  store double %433, ptr %434, align 8, !tbaa !61
  %435 = getelementptr inbounds i8, ptr %0, i64 1536
  %436 = load double, ptr %435, align 8, !tbaa !60
  %437 = getelementptr inbounds i8, ptr %0, i64 1528
  %438 = load double, ptr %437, align 8, !tbaa !59
  %439 = fsub double %436, %438
  %440 = getelementptr inbounds i8, ptr %0, i64 1520
  %441 = load double, ptr %440, align 8, !tbaa !58
  %442 = fsub double %433, %441
  %443 = fneg double %442
  %444 = tail call double @llvm.fmuladd.f64(double %439, double 8.000000e+00, double %443)
  %445 = getelementptr inbounds i8, ptr %0, i64 56
  %446 = load double, ptr %445, align 8, !tbaa !42
  %447 = fmul double %446, 6.000000e+00
  %448 = getelementptr inbounds i8, ptr %0, i64 120
  %449 = load ptr, ptr %448, align 8, !tbaa !24
  %450 = getelementptr inbounds double, ptr %449, i64 %.01439
  %451 = load double, ptr %450, align 8, !tbaa !29
  %452 = fmul double %447, %451
  %453 = fdiv double %444, %452
  br label %527

.thread:                                          ; preds = %358, %374
  %.314071523 = phi i8 [ %.31407, %374 ], [ 1, %358 ]
  %454 = getelementptr inbounds i8, ptr %0, i64 56
  %455 = load double, ptr %454, align 8, !tbaa !42
  %456 = getelementptr inbounds i8, ptr %0, i64 120
  %457 = load ptr, ptr %456, align 8, !tbaa !24
  %458 = getelementptr inbounds double, ptr %457, i64 %.91448
  %459 = load double, ptr %458, align 8, !tbaa !29
  %460 = fneg double %455
  %461 = tail call double @llvm.fmuladd.f64(double %460, double %459, double %331)
  %462 = getelementptr inbounds i8, ptr %0, i64 1552
  store double %461, ptr %462, align 8, !tbaa !62
  %463 = load double, ptr %458, align 8, !tbaa !29
  %464 = tail call double @llvm.fmuladd.f64(double %455, double %463, double %331)
  %465 = getelementptr inbounds i8, ptr %0, i64 1560
  store double %464, ptr %465, align 8, !tbaa !63
  %466 = load ptr, ptr %332, align 8, !tbaa !24
  %467 = getelementptr inbounds i8, ptr %466, i64 %.91448
  %468 = load i8, ptr %467, align 1, !tbaa !26, !range !27, !noundef !28
  %469 = trunc nuw i8 %468 to i1
  br i1 %469, label %470, label %480

470:                                              ; preds = %.thread
  %471 = getelementptr inbounds i8, ptr %0, i64 1344
  %472 = load ptr, ptr %471, align 8, !tbaa !24
  %473 = getelementptr inbounds double, ptr %472, i64 %.91448
  %474 = load double, ptr %473, align 8, !tbaa !29
  %475 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %461, double noundef %474)
  br i1 %475, label %476, label %480

476:                                              ; preds = %470
  %477 = load ptr, ptr %471, align 8, !tbaa !24
  %478 = getelementptr inbounds double, ptr %477, i64 %.91448
  %479 = load double, ptr %478, align 8, !tbaa !29
  store double %479, ptr %462, align 8, !tbaa !62
  br label %480

480:                                              ; preds = %476, %470, %.thread
  %481 = load ptr, ptr %353, align 8, !tbaa !24
  %482 = getelementptr inbounds i8, ptr %481, i64 %.91448
  %483 = load i8, ptr %482, align 1, !tbaa !26, !range !27, !noundef !28
  %484 = trunc nuw i8 %483 to i1
  br i1 %484, label %485, label %496

485:                                              ; preds = %480
  %486 = load double, ptr %465, align 8, !tbaa !63
  %487 = getelementptr inbounds i8, ptr %0, i64 1408
  %488 = load ptr, ptr %487, align 8, !tbaa !24
  %489 = getelementptr inbounds double, ptr %488, i64 %.91448
  %490 = load double, ptr %489, align 8, !tbaa !29
  %491 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %486, double noundef %490)
  br i1 %491, label %492, label %496

492:                                              ; preds = %485
  %493 = load ptr, ptr %487, align 8, !tbaa !24
  %494 = getelementptr inbounds double, ptr %493, i64 %.91448
  %495 = load double, ptr %494, align 8, !tbaa !29
  store double %495, ptr %465, align 8, !tbaa !63
  br label %496

496:                                              ; preds = %492, %485, %480
  %497 = load double, ptr %462, align 8, !tbaa !62
  %498 = load ptr, ptr %328, align 8, !tbaa !24
  %499 = getelementptr inbounds double, ptr %498, i64 %.91448
  store double %497, ptr %499, align 8, !tbaa !29
  br label %2180

500:                                              ; preds = %47
  %501 = getelementptr inbounds i8, ptr %0, i64 272
  %502 = load double, ptr %501, align 8, !tbaa !48
  %503 = getelementptr inbounds i8, ptr %0, i64 1528
  store double %502, ptr %503, align 8, !tbaa !59
  %504 = getelementptr inbounds i8, ptr %0, i64 1560
  %505 = load double, ptr %504, align 8, !tbaa !63
  %506 = getelementptr inbounds i8, ptr %0, i64 264
  %507 = load ptr, ptr %506, align 8, !tbaa !24
  %508 = getelementptr inbounds double, ptr %507, i64 %.01439
  store double %505, ptr %508, align 8, !tbaa !29
  br label %2180

509:                                              ; preds = %47
  %510 = getelementptr inbounds i8, ptr %0, i64 272
  %511 = load double, ptr %510, align 8, !tbaa !48
  %512 = getelementptr inbounds i8, ptr %0, i64 1536
  store double %511, ptr %512, align 8, !tbaa !60
  %513 = getelementptr inbounds i8, ptr %0, i64 1552
  %514 = load double, ptr %513, align 8, !tbaa !62
  %515 = getelementptr inbounds i8, ptr %0, i64 1560
  %516 = load double, ptr %515, align 8, !tbaa !63
  %517 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %514, double noundef %516)
  br i1 %517, label %518, label %527

518:                                              ; preds = %509
  %519 = load double, ptr %512, align 8, !tbaa !60
  %520 = getelementptr inbounds i8, ptr %0, i64 1528
  %521 = load double, ptr %520, align 8, !tbaa !59
  %522 = fsub double %519, %521
  %523 = load double, ptr %515, align 8, !tbaa !63
  %524 = load double, ptr %513, align 8, !tbaa !62
  %525 = fsub double %523, %524
  %526 = fdiv double %522, %525
  br label %527

527:                                              ; preds = %509, %518, %431
  %.sink1783 = phi double [ %526, %518 ], [ %453, %431 ], [ 0.000000e+00, %509 ]
  %528 = getelementptr inbounds i8, ptr %0, i64 336
  %529 = load ptr, ptr %528, align 8, !tbaa !24
  %530 = getelementptr inbounds double, ptr %529, i64 %.01439
  store double %.sink1783, ptr %530, align 8, !tbaa !29
  %531 = getelementptr inbounds i8, ptr %0, i64 264
  %532 = load ptr, ptr %531, align 8, !tbaa !24
  %533 = getelementptr inbounds double, ptr %532, i64 %.01439
  store double %.01424, ptr %533, align 8, !tbaa !29
  %534 = add nsw i64 %.01439, 1
  br label %326

535:                                              ; preds = %326
  %536 = getelementptr inbounds i8, ptr %0, i64 1512
  %537 = load double, ptr %536, align 8, !tbaa !57
  %538 = getelementptr inbounds i8, ptr %0, i64 272
  store double %537, ptr %538, align 8, !tbaa !48
  %539 = getelementptr inbounds i8, ptr %0, i64 344
  store i8 0, ptr %539, align 8, !tbaa !52
  br label %540

540:                                              ; preds = %535, %318
  %541 = phi double [ %537, %535 ], [ %.pre1757, %318 ]
  %542 = getelementptr inbounds i8, ptr %0, i64 1064
  store double %541, ptr %542, align 8, !tbaa !53
  %543 = getelementptr inbounds i8, ptr %0, i64 736
  %544 = load ptr, ptr %543, align 8, !tbaa !24
  %545 = getelementptr inbounds i8, ptr %0, i64 336
  %546 = load ptr, ptr %545, align 8, !tbaa !24
  %547 = add nsw i64 %.01460, -1
  %548 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %547)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %544, i64 noundef 1, ptr noundef %546, i64 noundef 1, i64 noundef %548)
  %549 = getelementptr inbounds i8, ptr %0, i64 744
  %550 = getelementptr inbounds i8, ptr %0, i64 800
  %551 = load ptr, ptr %550, align 8, !tbaa !24
  %552 = load ptr, ptr %545, align 8, !tbaa !24
  %553 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %547)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %551, i64 noundef 1, ptr noundef %552, i64 noundef 1, i64 noundef %553)
  %554 = getelementptr inbounds i8, ptr %0, i64 616
  %555 = getelementptr inbounds i8, ptr %0, i64 1288
  %556 = getelementptr inbounds i8, ptr %0, i64 1160
  %557 = getelementptr inbounds i8, ptr %0, i64 1352
  %558 = getelementptr inbounds i8, ptr %0, i64 1224
  tail call void @_ZN11alglib_impl21projectgradientintobcEPKNS_9ae_vectorEPS0_S2_S2_S2_S2_llPNS_8ae_stateE(ptr noundef nonnull %554, ptr noundef nonnull %549, ptr noundef nonnull %555, ptr noundef nonnull %556, ptr noundef nonnull %557, ptr noundef nonnull %558, i64 noundef %.01460, i64 noundef 0, ptr noundef %1)
  %.not1493.not1551 = icmp sgt i64 %.01460, 0
  br i1 %.not1493.not1551, label %.lr.ph1555, label %._crit_edge1556

.lr.ph1555:                                       ; preds = %540
  %559 = getelementptr inbounds i8, ptr %0, i64 120
  br label %560

560:                                              ; preds = %.lr.ph1555, %560
  %.213891553 = phi double [ 0.000000e+00, %.lr.ph1555 ], [ %569, %560 ]
  %.1014491552 = phi i64 [ 0, %.lr.ph1555 ], [ %570, %560 ]
  %561 = load ptr, ptr %550, align 8, !tbaa !24
  %562 = getelementptr inbounds double, ptr %561, i64 %.1014491552
  %563 = load double, ptr %562, align 8, !tbaa !29
  %564 = load ptr, ptr %559, align 8, !tbaa !24
  %565 = getelementptr inbounds double, ptr %564, i64 %.1014491552
  %566 = load double, ptr %565, align 8, !tbaa !29
  %567 = fmul double %563, %566
  %568 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %567, ptr noundef %1)
  %569 = fadd double %.213891553, %568
  %570 = add nuw nsw i64 %.1014491552, 1
  %exitcond1728.not = icmp eq i64 %570, %.01460
  br i1 %exitcond1728.not, label %._crit_edge1556, label %560, !llvm.loop !64

._crit_edge1556:                                  ; preds = %560, %540
  %.21389.lcssa = phi double [ 0.000000e+00, %540 ], [ %569, %560 ]
  %571 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.21389.lcssa, ptr noundef %1)
  %572 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %571, ptr noundef %1)
  br i1 %572, label %573, label %576

573:                                              ; preds = %._crit_edge1556
  %574 = load double, ptr %542, align 8, !tbaa !53
  %575 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %574, ptr noundef %1)
  br i1 %575, label %578, label %576

576:                                              ; preds = %573, %._crit_edge1556
  %577 = getelementptr inbounds i8, ptr %0, i64 1440
  store i64 -8, ptr %577, align 8, !tbaa !35
  br label %2220

578:                                              ; preds = %573
  %579 = getelementptr inbounds i8, ptr %0, i64 347
  %580 = load i8, ptr %579, align 1, !tbaa !36, !range !27, !noundef !28
  %581 = trunc nuw i8 %580 to i1
  br i1 %581, label %582, label %584

582:                                              ; preds = %578
  %583 = getelementptr inbounds i8, ptr %0, i64 1440
  store i64 8, ptr %583, align 8, !tbaa !35
  br label %2220

584:                                              ; preds = %578
  %585 = getelementptr inbounds i8, ptr %0, i64 8
  %586 = load double, ptr %585, align 8, !tbaa !65
  %587 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %571, double noundef %586)
  br i1 %587, label %591, label %.preheader1541

.preheader1541:                                   ; preds = %584
  br i1 %.not1493.not1551, label %.lr.ph1559, label %._crit_edge1564

.lr.ph1559:                                       ; preds = %.preheader1541
  %588 = getelementptr inbounds i8, ptr %0, i64 1640
  %589 = getelementptr inbounds i8, ptr %0, i64 1144
  %xtraiter = and i64 %.01460, 1
  %590 = icmp eq i64 %.01460, 1
  br i1 %590, label %.preheader1540.unr-lcssa, label %.lr.ph1559.new

.lr.ph1559.new:                                   ; preds = %.lr.ph1559
  %unroll_iter = and i64 %.01460, 9223372036854775806
  br label %605

591:                                              ; preds = %584
  %592 = getelementptr inbounds i8, ptr %0, i64 1440
  store i64 4, ptr %592, align 8, !tbaa !35
  br label %2220

.preheader1540.unr-lcssa:                         ; preds = %605, %.lr.ph1559
  %.1114501558.unr = phi i64 [ 0, %.lr.ph1559 ], [ %627, %605 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader1540, label %.preheader1540.epilog-lcssa

.preheader1540.epilog-lcssa:                      ; preds = %.preheader1540.unr-lcssa
  %593 = load ptr, ptr %588, align 8, !tbaa !24
  %594 = getelementptr inbounds double, ptr %593, i64 %.1114501558.unr
  %595 = load double, ptr %594, align 8, !tbaa !29
  %596 = fneg double %595
  %597 = load ptr, ptr %550, align 8, !tbaa !24
  %598 = getelementptr inbounds double, ptr %597, i64 %.1114501558.unr
  %599 = load double, ptr %598, align 8, !tbaa !29
  %600 = fmul double %599, %596
  %601 = load ptr, ptr %589, align 8, !tbaa !24
  %602 = getelementptr inbounds double, ptr %601, i64 %.1114501558.unr
  store double %600, ptr %602, align 8, !tbaa !29
  br label %.preheader1540

.preheader1540:                                   ; preds = %.preheader1540.unr-lcssa, %.preheader1540.epilog-lcssa
  br i1 %.not1493.not1551, label %.lr.ph1563, label %._crit_edge1564

.lr.ph1563:                                       ; preds = %.preheader1540
  %603 = getelementptr inbounds i8, ptr %0, i64 1144
  %604 = getelementptr inbounds i8, ptr %0, i64 120
  br label %628

605:                                              ; preds = %605, %.lr.ph1559.new
  %.1114501558 = phi i64 [ 0, %.lr.ph1559.new ], [ %627, %605 ]
  %niter = phi i64 [ 0, %.lr.ph1559.new ], [ %niter.next.1, %605 ]
  %606 = load ptr, ptr %588, align 8, !tbaa !24
  %607 = getelementptr inbounds double, ptr %606, i64 %.1114501558
  %608 = load double, ptr %607, align 8, !tbaa !29
  %609 = fneg double %608
  %610 = load ptr, ptr %550, align 8, !tbaa !24
  %611 = getelementptr inbounds double, ptr %610, i64 %.1114501558
  %612 = load double, ptr %611, align 8, !tbaa !29
  %613 = fmul double %612, %609
  %614 = load ptr, ptr %589, align 8, !tbaa !24
  %615 = getelementptr inbounds double, ptr %614, i64 %.1114501558
  store double %613, ptr %615, align 8, !tbaa !29
  %616 = or disjoint i64 %.1114501558, 1
  %617 = load ptr, ptr %588, align 8, !tbaa !24
  %618 = getelementptr inbounds double, ptr %617, i64 %616
  %619 = load double, ptr %618, align 8, !tbaa !29
  %620 = fneg double %619
  %621 = load ptr, ptr %550, align 8, !tbaa !24
  %622 = getelementptr inbounds double, ptr %621, i64 %616
  %623 = load double, ptr %622, align 8, !tbaa !29
  %624 = fmul double %623, %620
  %625 = load ptr, ptr %589, align 8, !tbaa !24
  %626 = getelementptr inbounds double, ptr %625, i64 %616
  store double %624, ptr %626, align 8, !tbaa !29
  %627 = add nuw nsw i64 %.1114501558, 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 %.preheader1540.unr-lcssa, label %605, !llvm.loop !66

628:                                              ; preds = %.lr.ph1563, %628
  %.1214511562 = phi i64 [ 0, %.lr.ph1563 ], [ %638, %628 ]
  %.214661561 = phi double [ 0.000000e+00, %.lr.ph1563 ], [ %637, %628 ]
  %629 = load ptr, ptr %603, align 8, !tbaa !24
  %630 = getelementptr inbounds double, ptr %629, i64 %.1214511562
  %631 = load double, ptr %630, align 8, !tbaa !29
  %632 = load ptr, ptr %604, align 8, !tbaa !24
  %633 = getelementptr inbounds double, ptr %632, i64 %.1214511562
  %634 = load double, ptr %633, align 8, !tbaa !29
  %635 = fdiv double %631, %634
  %636 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %635, ptr noundef %1)
  %637 = fadd double %.214661561, %636
  %638 = add nuw nsw i64 %.1214511562, 1
  %exitcond1730.not = icmp eq i64 %638, %.01460
  br i1 %exitcond1730.not, label %._crit_edge1564, label %628, !llvm.loop !67

._crit_edge1564:                                  ; preds = %628, %.preheader1541, %.preheader1540
  %.21466.lcssa = phi double [ 0.000000e+00, %.preheader1540 ], [ 0.000000e+00, %.preheader1541 ], [ %637, %628 ]
  %639 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.21466.lcssa, ptr noundef %1)
  %640 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %639, double noundef 0.000000e+00)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %640, ptr noundef nonnull @.str.1814, ptr noundef %1)
  %641 = getelementptr inbounds i8, ptr %0, i64 1152
  %642 = load double, ptr %641, align 8, !tbaa !50
  %643 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %642, double noundef 0.000000e+00)
  br i1 %643, label %644, label %646

644:                                              ; preds = %._crit_edge1564
  %645 = load double, ptr %641, align 8, !tbaa !50
  br label %646

646:                                              ; preds = %._crit_edge1564, %644
  %.pn = phi double [ %645, %644 ], [ 1.000000e+00, %._crit_edge1564 ]
  %.sink1752 = fdiv double %.pn, %639
  %647 = getelementptr inbounds i8, ptr %0, i64 1728
  store double %.sink1752, ptr %647, align 8
  %648 = getelementptr inbounds i8, ptr %0, i64 1088
  %649 = getelementptr inbounds i8, ptr %0, i64 1736
  call void @_ZN11alglib_impl18calculatestepboundEPKNS_9ae_vectorES2_dS2_S2_S2_S2_llPlPdS4_PNS_8ae_stateE(ptr noundef nonnull %554, ptr noundef nonnull %648, double noundef 1.000000e+00, ptr noundef nonnull %555, ptr noundef nonnull %556, ptr noundef nonnull %557, ptr noundef nonnull %558, i64 noundef %.01460, i64 noundef 0, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %649, ptr noundef %1)
  %650 = load double, ptr %649, align 8, !tbaa !68
  %651 = load i64, ptr %3, align 8, !tbaa !25
  %652 = icmp slt i64 %651, 0
  br i1 %652, label %655, label %653

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

655:                                              ; preds = %653, %646
  store double 1.000000e+50, ptr %649, align 8, !tbaa !68
  br label %656

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

660:                                              ; preds = %656
  %661 = load double, ptr %649, align 8, !tbaa !68
  %662 = load double, ptr %657, align 8, !tbaa !69
  %663 = fdiv double %662, %639
  %664 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %661, double noundef %663, ptr noundef %1)
  store double %664, ptr %649, align 8, !tbaa !68
  br label %665

665:                                              ; preds = %660, %656
  %666 = getelementptr inbounds i8, ptr %0, i64 808
  %667 = getelementptr inbounds i8, ptr %0, i64 864
  %668 = load ptr, ptr %667, align 8, !tbaa !24
  %669 = getelementptr inbounds i8, ptr %0, i64 672
  %670 = load ptr, ptr %669, align 8, !tbaa !24
  %671 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %547)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %668, i64 noundef 1, ptr noundef %670, i64 noundef 1, i64 noundef %671)
  %672 = getelementptr inbounds i8, ptr %0, i64 936
  %673 = getelementptr inbounds i8, ptr %0, i64 992
  %674 = load ptr, ptr %673, align 8, !tbaa !24
  %675 = load ptr, ptr %550, align 8, !tbaa !24
  %676 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %547)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %674, i64 noundef 1, ptr noundef %675, i64 noundef 1, i64 noundef %676)
  %677 = getelementptr inbounds i8, ptr %0, i64 872
  %678 = getelementptr inbounds i8, ptr %0, i64 928
  %679 = load ptr, ptr %678, align 8, !tbaa !24
  %680 = load ptr, ptr %543, align 8, !tbaa !24
  %681 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %547)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %679, i64 noundef 1, ptr noundef %680, i64 noundef 1, i64 noundef %681)
  %682 = load double, ptr %542, align 8, !tbaa !53
  %683 = getelementptr inbounds i8, ptr %0, i64 1072
  store double %682, ptr %683, align 8, !tbaa !70
  %684 = getelementptr inbounds i8, ptr %0, i64 1720
  store i64 0, ptr %684, align 8, !tbaa !71
  %685 = getelementptr inbounds i8, ptr %0, i64 2328
  %686 = getelementptr inbounds i8, ptr %0, i64 64
  %687 = getelementptr inbounds i8, ptr %0, i64 8096
  %688 = getelementptr inbounds i8, ptr %0, i64 1416
  %689 = load i64, ptr %688, align 8, !tbaa !72
  call void @_ZN11alglib_impl34smoothnessmonitorstartlinesearch1uEPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_dS4_llPNS_8ae_stateE(ptr noundef nonnull %685, ptr noundef nonnull %686, ptr noundef nonnull %687, ptr noundef nonnull %666, double noundef %682, ptr noundef nonnull %677, i64 noundef %689, i64 noundef -1, ptr noundef %1)
  %690 = load double, ptr %649, align 8, !tbaa !68
  %691 = load double, ptr @_ZN11alglib_implL10minbc_gtolE, align 8, !tbaa !29
  %692 = getelementptr inbounds i8, ptr %0, i64 1712
  %693 = getelementptr inbounds i8, ptr %0, i64 1744
  %694 = getelementptr inbounds i8, ptr %0, i64 1808
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_PKS0_S2_ddPlS5_S1_PNS_11linminstateES5_PNS_8ae_stateE(i64 noundef %.01460, ptr noundef nonnull %666, ptr noundef nonnull %683, ptr noundef nonnull %672, ptr noundef nonnull %648, ptr noundef nonnull %647, double noundef %690, double noundef %691, ptr noundef nonnull %5, ptr noundef nonnull %692, ptr noundef nonnull %693, ptr noundef nonnull %694, ptr noundef nonnull %684, ptr noundef %1)
  br label %695

695:                                              ; preds = %._crit_edge1550, %665
  %.31467 = phi double [ %639, %665 ], [ %.01464, %._crit_edge1550 ]
  %.31390 = phi double [ %571, %665 ], [ %.01387, %._crit_edge1550 ]
  %.2 = phi double [ %650, %665 ], [ %.0, %._crit_edge1550 ]
  %696 = getelementptr inbounds i8, ptr %0, i64 1720
  %697 = load i64, ptr %696, align 8, !tbaa !71
  %698 = icmp eq i64 %697, 0
  br i1 %698, label %1028, label %.preheader1539

.preheader1539:                                   ; preds = %695
  %.not1496.not1566 = icmp sgt i64 %.01460, 0
  br i1 %.not1496.not1566, label %.lr.ph1568, label %._crit_edge1569

.lr.ph1568:                                       ; preds = %.preheader1539
  %699 = getelementptr inbounds i8, ptr %0, i64 864
  %700 = getelementptr inbounds i8, ptr %0, i64 264
  %701 = getelementptr inbounds i8, ptr %0, i64 1216
  %702 = getelementptr inbounds i8, ptr %0, i64 1344
  %703 = getelementptr inbounds i8, ptr %0, i64 1280
  %704 = getelementptr inbounds i8, ptr %0, i64 1408
  br label %705

705:                                              ; preds = %.lr.ph1568, %748
  %.1314521567 = phi i64 [ 0, %.lr.ph1568 ], [ %749, %748 ]
  %706 = load ptr, ptr %699, align 8, !tbaa !24
  %707 = getelementptr inbounds double, ptr %706, i64 %.1314521567
  %708 = load double, ptr %707, align 8, !tbaa !29
  %709 = load ptr, ptr %700, align 8, !tbaa !24
  %710 = getelementptr inbounds double, ptr %709, i64 %.1314521567
  store double %708, ptr %710, align 8, !tbaa !29
  %711 = load ptr, ptr %701, align 8, !tbaa !24
  %712 = getelementptr inbounds i8, ptr %711, i64 %.1314521567
  %713 = load i8, ptr %712, align 1, !tbaa !26, !range !27, !noundef !28
  %714 = trunc nuw i8 %713 to i1
  br i1 %714, label %715, label %729

715:                                              ; preds = %705
  %716 = load ptr, ptr %699, align 8, !tbaa !24
  %717 = getelementptr inbounds double, ptr %716, i64 %.1314521567
  %718 = load double, ptr %717, align 8, !tbaa !29
  %719 = load ptr, ptr %702, align 8, !tbaa !24
  %720 = getelementptr inbounds double, ptr %719, i64 %.1314521567
  %721 = load double, ptr %720, align 8, !tbaa !29
  %722 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %718, double noundef %721)
  br i1 %722, label %723, label %729

723:                                              ; preds = %715
  %724 = load ptr, ptr %702, align 8, !tbaa !24
  %725 = getelementptr inbounds double, ptr %724, i64 %.1314521567
  %726 = load double, ptr %725, align 8, !tbaa !29
  %727 = load ptr, ptr %700, align 8, !tbaa !24
  %728 = getelementptr inbounds double, ptr %727, i64 %.1314521567
  store double %726, ptr %728, align 8, !tbaa !29
  br label %729

729:                                              ; preds = %723, %715, %705
  %730 = load ptr, ptr %703, align 8, !tbaa !24
  %731 = getelementptr inbounds i8, ptr %730, i64 %.1314521567
  %732 = load i8, ptr %731, align 1, !tbaa !26, !range !27, !noundef !28
  %733 = trunc nuw i8 %732 to i1
  br i1 %733, label %734, label %748

734:                                              ; preds = %729
  %735 = load ptr, ptr %699, align 8, !tbaa !24
  %736 = getelementptr inbounds double, ptr %735, i64 %.1314521567
  %737 = load double, ptr %736, align 8, !tbaa !29
  %738 = load ptr, ptr %704, align 8, !tbaa !24
  %739 = getelementptr inbounds double, ptr %738, i64 %.1314521567
  %740 = load double, ptr %739, align 8, !tbaa !29
  %741 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %737, double noundef %740)
  br i1 %741, label %742, label %748

742:                                              ; preds = %734
  %743 = load ptr, ptr %704, align 8, !tbaa !24
  %744 = getelementptr inbounds double, ptr %743, i64 %.1314521567
  %745 = load double, ptr %744, align 8, !tbaa !29
  %746 = load ptr, ptr %700, align 8, !tbaa !24
  %747 = getelementptr inbounds double, ptr %746, i64 %.1314521567
  store double %745, ptr %747, align 8, !tbaa !29
  br label %748

748:                                              ; preds = %729, %734, %742
  %749 = add nuw nsw i64 %.1314521567, 1
  %exitcond1731.not = icmp eq i64 %749, %.01460
  br i1 %exitcond1731.not, label %._crit_edge1569, label %705, !llvm.loop !73

._crit_edge1569:                                  ; preds = %748, %.preheader1539
  %.131452.lcssa = phi i64 [ 0, %.preheader1539 ], [ %.01460, %748 ]
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %750 = getelementptr inbounds i8, ptr %0, i64 56
  %751 = load double, ptr %750, align 8, !tbaa !42
  %752 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %751, double noundef 0.000000e+00)
  br i1 %752, label %760, label %753

753:                                              ; preds = %._crit_edge1569
  %754 = getelementptr inbounds i8, ptr %0, i64 345
  store i8 1, ptr %754, align 1, !tbaa !47
  br label %2180

755:                                              ; preds = %47
  %756 = getelementptr inbounds i8, ptr %0, i64 345
  store i8 0, ptr %756, align 1, !tbaa !47
  %757 = getelementptr inbounds i8, ptr %0, i64 1424
  %758 = load i64, ptr %757, align 8, !tbaa !54
  %759 = add nsw i64 %758, 1
  store i64 %759, ptr %757, align 8, !tbaa !54
  %.phi.trans.insert1754 = getelementptr inbounds i8, ptr %0, i64 272
  %.pre1755 = load double, ptr %.phi.trans.insert1754, align 8, !tbaa !48
  br label %983

760:                                              ; preds = %._crit_edge1569
  %761 = getelementptr inbounds i8, ptr %0, i64 344
  store i8 1, ptr %761, align 8, !tbaa !52
  br label %2180

762:                                              ; preds = %47
  %763 = getelementptr inbounds i8, ptr %0, i64 272
  %764 = load double, ptr %763, align 8, !tbaa !48
  %765 = getelementptr inbounds i8, ptr %0, i64 1512
  store double %764, ptr %765, align 8, !tbaa !57
  br label %766

766:                                              ; preds = %967, %762
  %.141453 = phi i64 [ 0, %762 ], [ %977, %967 ]
  %.not1490 = icmp slt i64 %.141453, %.01460
  br i1 %.not1490, label %767, label %978

767:                                              ; preds = %766
  %768 = getelementptr inbounds i8, ptr %0, i64 264
  %769 = load ptr, ptr %768, align 8, !tbaa !24
  %770 = getelementptr inbounds double, ptr %769, i64 %.141453
  %771 = load double, ptr %770, align 8, !tbaa !29
  %772 = getelementptr inbounds i8, ptr %0, i64 1216
  %773 = load ptr, ptr %772, align 8, !tbaa !24
  %774 = getelementptr inbounds i8, ptr %773, i64 %.141453
  %775 = load i8, ptr %774, align 1, !tbaa !26, !range !27, !noundef !28
  %776 = trunc nuw i8 %775 to i1
  br i1 %776, label %777, label %792

777:                                              ; preds = %767
  %778 = getelementptr inbounds i8, ptr %0, i64 56
  %779 = load double, ptr %778, align 8, !tbaa !42
  %780 = getelementptr inbounds i8, ptr %0, i64 120
  %781 = load ptr, ptr %780, align 8, !tbaa !24
  %782 = getelementptr inbounds double, ptr %781, i64 %.141453
  %783 = load double, ptr %782, align 8, !tbaa !29
  %784 = fneg double %779
  %785 = tail call double @llvm.fmuladd.f64(double %784, double %783, double %771)
  %786 = getelementptr inbounds i8, ptr %0, i64 1344
  %787 = load ptr, ptr %786, align 8, !tbaa !24
  %788 = getelementptr inbounds double, ptr %787, i64 %.141453
  %789 = load double, ptr %788, align 8, !tbaa !29
  %790 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %785, double noundef %789)
  %791 = zext i1 %790 to i8
  br label %792

792:                                              ; preds = %777, %767
  %.41408 = phi i8 [ %791, %777 ], [ 0, %767 ]
  %793 = getelementptr inbounds i8, ptr %0, i64 1280
  %794 = load ptr, ptr %793, align 8, !tbaa !24
  %795 = getelementptr inbounds i8, ptr %794, i64 %.141453
  %796 = load i8, ptr %795, align 1, !tbaa !26, !range !27, !noundef !28
  %797 = trunc nuw i8 %796 to i1
  br i1 %797, label %798, label %814

798:                                              ; preds = %792
  %799 = trunc nuw i8 %.41408 to i1
  br i1 %799, label %.thread1524, label %800

800:                                              ; preds = %798
  %801 = getelementptr inbounds i8, ptr %0, i64 56
  %802 = load double, ptr %801, align 8, !tbaa !42
  %803 = getelementptr inbounds i8, ptr %0, i64 120
  %804 = load ptr, ptr %803, align 8, !tbaa !24
  %805 = getelementptr inbounds double, ptr %804, i64 %.141453
  %806 = load double, ptr %805, align 8, !tbaa !29
  %807 = tail call double @llvm.fmuladd.f64(double %802, double %806, double %771)
  %808 = getelementptr inbounds i8, ptr %0, i64 1408
  %809 = load ptr, ptr %808, align 8, !tbaa !24
  %810 = getelementptr inbounds double, ptr %809, i64 %.141453
  %811 = load double, ptr %810, align 8, !tbaa !29
  %812 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %807, double noundef %811)
  %813 = zext i1 %812 to i8
  br label %814

814:                                              ; preds = %800, %792
  %.51409 = phi i8 [ %.41408, %792 ], [ %813, %800 ]
  %815 = trunc nuw i8 %.51409 to i1
  br i1 %815, label %.thread1524, label %816

816:                                              ; preds = %814
  %817 = getelementptr inbounds i8, ptr %0, i64 56
  %818 = load double, ptr %817, align 8, !tbaa !42
  %819 = getelementptr inbounds i8, ptr %0, i64 120
  %820 = load ptr, ptr %819, align 8, !tbaa !24
  %821 = getelementptr inbounds double, ptr %820, i64 %.141453
  %822 = load double, ptr %821, align 8, !tbaa !29
  %823 = fneg double %818
  %824 = tail call double @llvm.fmuladd.f64(double %823, double %822, double %771)
  %825 = load ptr, ptr %768, align 8, !tbaa !24
  %826 = getelementptr inbounds double, ptr %825, i64 %.141453
  store double %824, ptr %826, align 8, !tbaa !29
  br label %2180

827:                                              ; preds = %47
  %828 = getelementptr inbounds i8, ptr %0, i64 272
  %829 = load double, ptr %828, align 8, !tbaa !48
  %830 = getelementptr inbounds i8, ptr %0, i64 1520
  store double %829, ptr %830, align 8, !tbaa !58
  %831 = getelementptr inbounds i8, ptr %0, i64 56
  %832 = load double, ptr %831, align 8, !tbaa !42
  %833 = getelementptr inbounds i8, ptr %0, i64 120
  %834 = load ptr, ptr %833, align 8, !tbaa !24
  %835 = getelementptr inbounds double, ptr %834, i64 %.01439
  %836 = load double, ptr %835, align 8, !tbaa !29
  %837 = fmul double %832, -5.000000e-01
  %838 = tail call double @llvm.fmuladd.f64(double %837, double %836, double %.01424)
  %839 = getelementptr inbounds i8, ptr %0, i64 264
  %840 = load ptr, ptr %839, align 8, !tbaa !24
  %841 = getelementptr inbounds double, ptr %840, i64 %.01439
  store double %838, ptr %841, align 8, !tbaa !29
  br label %2180

842:                                              ; preds = %47
  %843 = getelementptr inbounds i8, ptr %0, i64 272
  %844 = load double, ptr %843, align 8, !tbaa !48
  %845 = getelementptr inbounds i8, ptr %0, i64 1528
  store double %844, ptr %845, align 8, !tbaa !59
  %846 = getelementptr inbounds i8, ptr %0, i64 56
  %847 = load double, ptr %846, align 8, !tbaa !42
  %848 = fmul double %847, 5.000000e-01
  %849 = getelementptr inbounds i8, ptr %0, i64 120
  %850 = load ptr, ptr %849, align 8, !tbaa !24
  %851 = getelementptr inbounds double, ptr %850, i64 %.01439
  %852 = load double, ptr %851, align 8, !tbaa !29
  %853 = tail call double @llvm.fmuladd.f64(double %848, double %852, double %.01424)
  %854 = getelementptr inbounds i8, ptr %0, i64 264
  %855 = load ptr, ptr %854, align 8, !tbaa !24
  %856 = getelementptr inbounds double, ptr %855, i64 %.01439
  store double %853, ptr %856, align 8, !tbaa !29
  br label %2180

857:                                              ; preds = %47
  %858 = getelementptr inbounds i8, ptr %0, i64 272
  %859 = load double, ptr %858, align 8, !tbaa !48
  %860 = getelementptr inbounds i8, ptr %0, i64 1536
  store double %859, ptr %860, align 8, !tbaa !60
  %861 = getelementptr inbounds i8, ptr %0, i64 56
  %862 = load double, ptr %861, align 8, !tbaa !42
  %863 = getelementptr inbounds i8, ptr %0, i64 120
  %864 = load ptr, ptr %863, align 8, !tbaa !24
  %865 = getelementptr inbounds double, ptr %864, i64 %.01439
  %866 = load double, ptr %865, align 8, !tbaa !29
  %867 = tail call double @llvm.fmuladd.f64(double %862, double %866, double %.01424)
  %868 = getelementptr inbounds i8, ptr %0, i64 264
  %869 = load ptr, ptr %868, align 8, !tbaa !24
  %870 = getelementptr inbounds double, ptr %869, i64 %.01439
  store double %867, ptr %870, align 8, !tbaa !29
  br label %2180

871:                                              ; preds = %47
  %872 = getelementptr inbounds i8, ptr %0, i64 272
  %873 = load double, ptr %872, align 8, !tbaa !48
  %874 = getelementptr inbounds i8, ptr %0, i64 1544
  store double %873, ptr %874, align 8, !tbaa !61
  %875 = getelementptr inbounds i8, ptr %0, i64 1536
  %876 = load double, ptr %875, align 8, !tbaa !60
  %877 = getelementptr inbounds i8, ptr %0, i64 1528
  %878 = load double, ptr %877, align 8, !tbaa !59
  %879 = fsub double %876, %878
  %880 = getelementptr inbounds i8, ptr %0, i64 1520
  %881 = load double, ptr %880, align 8, !tbaa !58
  %882 = fsub double %873, %881
  %883 = fneg double %882
  %884 = tail call double @llvm.fmuladd.f64(double %879, double 8.000000e+00, double %883)
  %885 = getelementptr inbounds i8, ptr %0, i64 56
  %886 = load double, ptr %885, align 8, !tbaa !42
  %887 = fmul double %886, 6.000000e+00
  %888 = getelementptr inbounds i8, ptr %0, i64 120
  %889 = load ptr, ptr %888, align 8, !tbaa !24
  %890 = getelementptr inbounds double, ptr %889, i64 %.01439
  %891 = load double, ptr %890, align 8, !tbaa !29
  %892 = fmul double %887, %891
  %893 = fdiv double %884, %892
  br label %967

.thread1524:                                      ; preds = %798, %814
  %.514091526 = phi i8 [ %.51409, %814 ], [ 1, %798 ]
  %894 = getelementptr inbounds i8, ptr %0, i64 56
  %895 = load double, ptr %894, align 8, !tbaa !42
  %896 = getelementptr inbounds i8, ptr %0, i64 120
  %897 = load ptr, ptr %896, align 8, !tbaa !24
  %898 = getelementptr inbounds double, ptr %897, i64 %.141453
  %899 = load double, ptr %898, align 8, !tbaa !29
  %900 = fneg double %895
  %901 = tail call double @llvm.fmuladd.f64(double %900, double %899, double %771)
  %902 = getelementptr inbounds i8, ptr %0, i64 1552
  store double %901, ptr %902, align 8, !tbaa !62
  %903 = load double, ptr %898, align 8, !tbaa !29
  %904 = tail call double @llvm.fmuladd.f64(double %895, double %903, double %771)
  %905 = getelementptr inbounds i8, ptr %0, i64 1560
  store double %904, ptr %905, align 8, !tbaa !63
  %906 = load ptr, ptr %772, align 8, !tbaa !24
  %907 = getelementptr inbounds i8, ptr %906, i64 %.141453
  %908 = load i8, ptr %907, align 1, !tbaa !26, !range !27, !noundef !28
  %909 = trunc nuw i8 %908 to i1
  br i1 %909, label %910, label %920

910:                                              ; preds = %.thread1524
  %911 = getelementptr inbounds i8, ptr %0, i64 1344
  %912 = load ptr, ptr %911, align 8, !tbaa !24
  %913 = getelementptr inbounds double, ptr %912, i64 %.141453
  %914 = load double, ptr %913, align 8, !tbaa !29
  %915 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %901, double noundef %914)
  br i1 %915, label %916, label %920

916:                                              ; preds = %910
  %917 = load ptr, ptr %911, align 8, !tbaa !24
  %918 = getelementptr inbounds double, ptr %917, i64 %.141453
  %919 = load double, ptr %918, align 8, !tbaa !29
  store double %919, ptr %902, align 8, !tbaa !62
  br label %920

920:                                              ; preds = %916, %910, %.thread1524
  %921 = load ptr, ptr %793, align 8, !tbaa !24
  %922 = getelementptr inbounds i8, ptr %921, i64 %.141453
  %923 = load i8, ptr %922, align 1, !tbaa !26, !range !27, !noundef !28
  %924 = trunc nuw i8 %923 to i1
  br i1 %924, label %925, label %936

925:                                              ; preds = %920
  %926 = load double, ptr %905, align 8, !tbaa !63
  %927 = getelementptr inbounds i8, ptr %0, i64 1408
  %928 = load ptr, ptr %927, align 8, !tbaa !24
  %929 = getelementptr inbounds double, ptr %928, i64 %.141453
  %930 = load double, ptr %929, align 8, !tbaa !29
  %931 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %926, double noundef %930)
  br i1 %931, label %932, label %936

932:                                              ; preds = %925
  %933 = load ptr, ptr %927, align 8, !tbaa !24
  %934 = getelementptr inbounds double, ptr %933, i64 %.141453
  %935 = load double, ptr %934, align 8, !tbaa !29
  store double %935, ptr %905, align 8, !tbaa !63
  br label %936

936:                                              ; preds = %932, %925, %920
  %937 = load double, ptr %902, align 8, !tbaa !62
  %938 = load ptr, ptr %768, align 8, !tbaa !24
  %939 = getelementptr inbounds double, ptr %938, i64 %.141453
  store double %937, ptr %939, align 8, !tbaa !29
  br label %2180

940:                                              ; preds = %47
  %941 = getelementptr inbounds i8, ptr %0, i64 272
  %942 = load double, ptr %941, align 8, !tbaa !48
  %943 = getelementptr inbounds i8, ptr %0, i64 1528
  store double %942, ptr %943, align 8, !tbaa !59
  %944 = getelementptr inbounds i8, ptr %0, i64 1560
  %945 = load double, ptr %944, align 8, !tbaa !63
  %946 = getelementptr inbounds i8, ptr %0, i64 264
  %947 = load ptr, ptr %946, align 8, !tbaa !24
  %948 = getelementptr inbounds double, ptr %947, i64 %.01439
  store double %945, ptr %948, align 8, !tbaa !29
  br label %2180

949:                                              ; preds = %47
  %950 = getelementptr inbounds i8, ptr %0, i64 272
  %951 = load double, ptr %950, align 8, !tbaa !48
  %952 = getelementptr inbounds i8, ptr %0, i64 1536
  store double %951, ptr %952, align 8, !tbaa !60
  %953 = getelementptr inbounds i8, ptr %0, i64 1552
  %954 = load double, ptr %953, align 8, !tbaa !62
  %955 = getelementptr inbounds i8, ptr %0, i64 1560
  %956 = load double, ptr %955, align 8, !tbaa !63
  %957 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %954, double noundef %956)
  br i1 %957, label %958, label %967

958:                                              ; preds = %949
  %959 = load double, ptr %952, align 8, !tbaa !60
  %960 = getelementptr inbounds i8, ptr %0, i64 1528
  %961 = load double, ptr %960, align 8, !tbaa !59
  %962 = fsub double %959, %961
  %963 = load double, ptr %955, align 8, !tbaa !63
  %964 = load double, ptr %953, align 8, !tbaa !62
  %965 = fsub double %963, %964
  %966 = fdiv double %962, %965
  br label %967

967:                                              ; preds = %958, %949, %871
  %.sink1787.sink = phi double [ %893, %871 ], [ %966, %958 ], [ 0.000000e+00, %949 ]
  %.sink1794 = phi i64 [ 4, %871 ], [ 2, %958 ], [ 2, %949 ]
  %968 = getelementptr inbounds i8, ptr %0, i64 336
  %969 = load ptr, ptr %968, align 8, !tbaa !24
  %970 = getelementptr inbounds double, ptr %969, i64 %.01439
  store double %.sink1787.sink, ptr %970, align 8, !tbaa !29
  %971 = getelementptr inbounds i8, ptr %0, i64 1424
  %972 = load i64, ptr %971, align 8, !tbaa !54
  %973 = add nsw i64 %972, %.sink1794
  store i64 %973, ptr %971, align 8, !tbaa !54
  %974 = getelementptr inbounds i8, ptr %0, i64 264
  %975 = load ptr, ptr %974, align 8, !tbaa !24
  %976 = getelementptr inbounds double, ptr %975, i64 %.01439
  store double %.01424, ptr %976, align 8, !tbaa !29
  %977 = add nsw i64 %.01439, 1
  br label %766

978:                                              ; preds = %766
  %979 = getelementptr inbounds i8, ptr %0, i64 1512
  %980 = load double, ptr %979, align 8, !tbaa !57
  %981 = getelementptr inbounds i8, ptr %0, i64 272
  store double %980, ptr %981, align 8, !tbaa !48
  %982 = getelementptr inbounds i8, ptr %0, i64 344
  store i8 0, ptr %982, align 8, !tbaa !52
  br label %983

983:                                              ; preds = %978, %755
  %984 = phi double [ %980, %978 ], [ %.pre1755, %755 ]
  %985 = getelementptr inbounds i8, ptr %0, i64 2328
  %986 = getelementptr inbounds i8, ptr %0, i64 64
  %987 = getelementptr inbounds i8, ptr %0, i64 8096
  %988 = getelementptr inbounds i8, ptr %0, i64 1088
  %989 = getelementptr inbounds i8, ptr %0, i64 1728
  %990 = load double, ptr %989, align 8, !tbaa !74
  %991 = getelementptr inbounds i8, ptr %0, i64 208
  %992 = getelementptr inbounds i8, ptr %0, i64 272
  %993 = getelementptr inbounds i8, ptr %0, i64 280
  tail call void @_ZN11alglib_impl31smoothnessmonitorenqueuepoint1uEPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_dS4_dS4_PNS_8ae_stateE(ptr noundef nonnull %985, ptr noundef nonnull %986, ptr noundef nonnull %987, ptr noundef nonnull %988, double noundef %990, ptr noundef nonnull %991, double noundef %984, ptr noundef nonnull %993, ptr noundef %1)
  %994 = getelementptr inbounds i8, ptr %0, i64 2000
  %995 = load double, ptr %994, align 8, !tbaa !75
  tail call void @_ZN11alglib_impl12trimfunctionEPdPNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef nonnull %992, ptr noundef nonnull %993, i64 noundef %.01460, double noundef %995, ptr noundef %1)
  %996 = load double, ptr %992, align 8, !tbaa !48
  %997 = getelementptr inbounds i8, ptr %0, i64 1072
  store double %996, ptr %997, align 8, !tbaa !70
  %998 = getelementptr inbounds i8, ptr %0, i64 936
  %999 = getelementptr inbounds i8, ptr %0, i64 992
  %1000 = load ptr, ptr %999, align 8, !tbaa !24
  %1001 = getelementptr inbounds i8, ptr %0, i64 336
  %1002 = load ptr, ptr %1001, align 8, !tbaa !24
  %1003 = add nsw i64 %.01460, -1
  %1004 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1003)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1000, i64 noundef 1, ptr noundef %1002, i64 noundef 1, i64 noundef %1004)
  %1005 = getelementptr inbounds i8, ptr %0, i64 928
  %1006 = load ptr, ptr %1005, align 8, !tbaa !24
  %1007 = load ptr, ptr %1001, align 8, !tbaa !24
  %1008 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1003)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1006, i64 noundef 1, ptr noundef %1007, i64 noundef 1, i64 noundef %1008)
  %.not1491.not1546 = icmp sgt i64 %.01460, 0
  br i1 %.not1491.not1546, label %.lr.ph1549, label %._crit_edge1550

.lr.ph1549:                                       ; preds = %983
  %1009 = getelementptr inbounds i8, ptr %0, i64 1144
  br label %1010

1010:                                             ; preds = %.lr.ph1549, %1018
  %.1514541547 = phi i64 [ 0, %.lr.ph1549 ], [ %1019, %1018 ]
  %1011 = load ptr, ptr %1009, align 8, !tbaa !24
  %1012 = getelementptr inbounds double, ptr %1011, i64 %.1514541547
  %1013 = load double, ptr %1012, align 8, !tbaa !29
  %1014 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1013, double noundef 0.000000e+00)
  br i1 %1014, label %1015, label %1018

1015:                                             ; preds = %1010
  %1016 = load ptr, ptr %999, align 8, !tbaa !24
  %1017 = getelementptr inbounds double, ptr %1016, i64 %.1514541547
  store double 0.000000e+00, ptr %1017, align 8, !tbaa !29
  br label %1018

1018:                                             ; preds = %1010, %1015
  %1019 = add nuw nsw i64 %.1514541547, 1
  %exitcond1727.not = icmp eq i64 %1019, %.01460
  br i1 %exitcond1727.not, label %._crit_edge1550, label %1010, !llvm.loop !76

._crit_edge1550:                                  ; preds = %1018, %983
  %1020 = getelementptr inbounds i8, ptr %0, i64 808
  %1021 = getelementptr inbounds i8, ptr %0, i64 1736
  %1022 = load double, ptr %1021, align 8, !tbaa !68
  %1023 = load double, ptr @_ZN11alglib_implL10minbc_gtolE, align 8, !tbaa !29
  %1024 = getelementptr inbounds i8, ptr %0, i64 1712
  %1025 = getelementptr inbounds i8, ptr %0, i64 1744
  %1026 = getelementptr inbounds i8, ptr %0, i64 1808
  %1027 = getelementptr inbounds i8, ptr %0, i64 1720
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_PKS0_S2_ddPlS5_S1_PNS_11linminstateES5_PNS_8ae_stateE(i64 noundef %.01460, ptr noundef nonnull %1020, ptr noundef nonnull %997, ptr noundef nonnull %998, ptr noundef nonnull %988, ptr noundef nonnull %989, double noundef %1022, double noundef %1023, ptr noundef nonnull %5, ptr noundef nonnull %1024, ptr noundef nonnull %1025, ptr noundef nonnull %1026, ptr noundef nonnull %1027, ptr noundef %1)
  br label %695

1028:                                             ; preds = %695
  %1029 = getelementptr inbounds i8, ptr %0, i64 2328
  call void @_ZN11alglib_impl35smoothnessmonitorfinalizelinesearchEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef nonnull %1029, ptr noundef %1)
  %1030 = getelementptr inbounds i8, ptr %0, i64 1072
  %1031 = load double, ptr %1030, align 8, !tbaa !70
  %.not1497.not1571 = icmp sgt i64 %.01460, 0
  br i1 %.not1497.not1571, label %.lr.ph1575, label %._crit_edge1576

.lr.ph1575:                                       ; preds = %1028
  %1032 = getelementptr inbounds i8, ptr %0, i64 928
  %1033 = load ptr, ptr %1032, align 8, !tbaa !24
  %1034 = add nsw i64 %.01460, -1
  %xtraiter1843 = and i64 %.01460, 3
  %1035 = icmp ult i64 %1034, 3
  br i1 %1035, label %._crit_edge1576.loopexit.unr-lcssa, label %.lr.ph1575.new

.lr.ph1575.new:                                   ; preds = %.lr.ph1575
  %unroll_iter1846 = and i64 %.01460, 9223372036854775804
  br label %1036

1036:                                             ; preds = %1036, %.lr.ph1575.new
  %.214261573 = phi double [ %1031, %.lr.ph1575.new ], [ %1051, %1036 ]
  %.1614551572 = phi i64 [ 0, %.lr.ph1575.new ], [ %1052, %1036 ]
  %niter1847 = phi i64 [ 0, %.lr.ph1575.new ], [ %niter1847.next.3, %1036 ]
  %1037 = getelementptr inbounds double, ptr %1033, i64 %.1614551572
  %1038 = load double, ptr %1037, align 8, !tbaa !29
  %1039 = call double @llvm.fmuladd.f64(double %.214261573, double 1.000000e-01, double %1038)
  %1040 = or disjoint i64 %.1614551572, 1
  %1041 = getelementptr inbounds double, ptr %1033, i64 %1040
  %1042 = load double, ptr %1041, align 8, !tbaa !29
  %1043 = call double @llvm.fmuladd.f64(double %1039, double 1.000000e-01, double %1042)
  %1044 = or disjoint i64 %.1614551572, 2
  %1045 = getelementptr inbounds double, ptr %1033, i64 %1044
  %1046 = load double, ptr %1045, align 8, !tbaa !29
  %1047 = call double @llvm.fmuladd.f64(double %1043, double 1.000000e-01, double %1046)
  %1048 = or disjoint i64 %.1614551572, 3
  %1049 = getelementptr inbounds double, ptr %1033, i64 %1048
  %1050 = load double, ptr %1049, align 8, !tbaa !29
  %1051 = call double @llvm.fmuladd.f64(double %1047, double 1.000000e-01, double %1050)
  %1052 = add nuw nsw i64 %.1614551572, 4
  %niter1847.next.3 = add i64 %niter1847, 4
  %niter1847.ncmp.3 = icmp eq i64 %niter1847.next.3, %unroll_iter1846
  br i1 %niter1847.ncmp.3, label %._crit_edge1576.loopexit.unr-lcssa, label %1036, !llvm.loop !77

._crit_edge1576.loopexit.unr-lcssa:               ; preds = %1036, %.lr.ph1575
  %.lcssa1839.ph = phi double [ poison, %.lr.ph1575 ], [ %1051, %1036 ]
  %.214261573.unr = phi double [ %1031, %.lr.ph1575 ], [ %1051, %1036 ]
  %.1614551572.unr = phi i64 [ 0, %.lr.ph1575 ], [ %1052, %1036 ]
  %lcmp.mod1844.not = icmp eq i64 %xtraiter1843, 0
  br i1 %lcmp.mod1844.not, label %._crit_edge1576, label %.epil.preheader1842

.epil.preheader1842:                              ; preds = %._crit_edge1576.loopexit.unr-lcssa, %.epil.preheader1842
  %.214261573.epil = phi double [ %1055, %.epil.preheader1842 ], [ %.214261573.unr, %._crit_edge1576.loopexit.unr-lcssa ]
  %.1614551572.epil = phi i64 [ %1056, %.epil.preheader1842 ], [ %.1614551572.unr, %._crit_edge1576.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader1842 ], [ 0, %._crit_edge1576.loopexit.unr-lcssa ]
  %1053 = getelementptr inbounds double, ptr %1033, i64 %.1614551572.epil
  %1054 = load double, ptr %1053, align 8, !tbaa !29
  %1055 = call double @llvm.fmuladd.f64(double %.214261573.epil, double 1.000000e-01, double %1054)
  %1056 = add nuw nsw i64 %.1614551572.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter1843
  br i1 %epil.iter.cmp.not, label %._crit_edge1576, label %.epil.preheader1842, !llvm.loop !78

._crit_edge1576:                                  ; preds = %._crit_edge1576.loopexit.unr-lcssa, %.epil.preheader1842, %1028
  %.161455.lcssa = phi i64 [ 0, %1028 ], [ %.01460, %.epil.preheader1842 ], [ %.01460, %._crit_edge1576.loopexit.unr-lcssa ]
  %.21426.lcssa = phi double [ %1031, %1028 ], [ %.lcssa1839.ph, %._crit_edge1576.loopexit.unr-lcssa ], [ %1055, %.epil.preheader1842 ]
  %1057 = add nsw i64 %.01460, -1
  %1058 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.21426.lcssa, ptr noundef %1)
  br i1 %1058, label %1061, label %1059

1059:                                             ; preds = %._crit_edge1576
  %1060 = getelementptr inbounds i8, ptr %0, i64 1440
  store i64 -8, ptr %1060, align 8, !tbaa !35
  br label %2220

1061:                                             ; preds = %._crit_edge1576
  %1062 = load i64, ptr %5, align 8
  %1063 = and i64 %1062, -5
  %or.cond.not = icmp eq i64 %1063, 1
  br i1 %or.cond.not, label %1093, label %1064

1064:                                             ; preds = %1061
  %1065 = load i64, ptr %3, align 8, !tbaa !25
  %1066 = icmp sgt i64 %1065, -1
  br i1 %1066, label %1067, label %1091

1067:                                             ; preds = %1064
  %1068 = getelementptr inbounds i8, ptr %0, i64 1736
  %1069 = load double, ptr %1068, align 8, !tbaa !68
  %1070 = fmul double %.31467, %1069
  %1071 = load double, ptr @_ZN11alglib_implL24minbc_maxnonmonotoniclenE, align 8, !tbaa !29
  %1072 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1070, double noundef %1071)
  br i1 %1072, label %1073, label %1091

1073:                                             ; preds = %1067
  %1074 = getelementptr inbounds i8, ptr %0, i64 2008
  %1075 = load i64, ptr %1074, align 8, !tbaa !51
  %1076 = icmp sgt i64 %1075, 0
  br i1 %1076, label %1077, label %1091

1077:                                             ; preds = %1073
  %1078 = load double, ptr %1068, align 8, !tbaa !68
  %1079 = getelementptr inbounds i8, ptr %0, i64 1728
  store double %1078, ptr %1079, align 8, !tbaa !74
  store i64 5, ptr %5, align 8, !tbaa !25
  %1080 = getelementptr inbounds i8, ptr %0, i64 864
  %1081 = load ptr, ptr %1080, align 8, !tbaa !24
  %1082 = getelementptr inbounds i8, ptr %0, i64 672
  %1083 = load ptr, ptr %1082, align 8, !tbaa !24
  %1084 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1057)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1081, i64 noundef 1, ptr noundef %1083, i64 noundef 1, i64 noundef %1084)
  %1085 = load ptr, ptr %1080, align 8, !tbaa !24
  %1086 = getelementptr inbounds i8, ptr %0, i64 1144
  %1087 = load ptr, ptr %1086, align 8, !tbaa !24
  %1088 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1057)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %1085, i64 noundef 1, ptr noundef %1087, i64 noundef 1, i64 noundef %1088, double noundef %1078)
  %1089 = load i64, ptr %1074, align 8, !tbaa !51
  %1090 = add nsw i64 %1089, -1
  store i64 %1090, ptr %1074, align 8, !tbaa !51
  br label %1093

1091:                                             ; preds = %1073, %1067, %1064
  %1092 = getelementptr inbounds i8, ptr %0, i64 1440
  store i64 7, ptr %1092, align 8, !tbaa !35
  br label %2220

1093:                                             ; preds = %1077, %1061
  %.31427 = phi double [ %1078, %1077 ], [ %.21426.lcssa, %1061 ]
  %1094 = getelementptr inbounds i8, ptr %0, i64 347
  %1095 = load i8, ptr %1094, align 1, !tbaa !36, !range !27, !noundef !28
  %1096 = trunc nuw i8 %1095 to i1
  br i1 %1096, label %1097, label %1099

1097:                                             ; preds = %1093
  %1098 = getelementptr inbounds i8, ptr %0, i64 1440
  store i64 8, ptr %1098, align 8, !tbaa !35
  br label %2220

1099:                                             ; preds = %1093
  %1100 = load i64, ptr %5, align 8, !tbaa !25
  %.not1498 = icmp eq i64 %1100, 5
  br i1 %.not1498, label %1101, label %1107

1101:                                             ; preds = %1099
  %1102 = getelementptr inbounds i8, ptr %0, i64 1728
  %1103 = load double, ptr %1102, align 8, !tbaa !74
  %1104 = getelementptr inbounds i8, ptr %0, i64 1736
  %1105 = load double, ptr %1104, align 8, !tbaa !68
  %1106 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1103, double noundef %1105)
  br label %1107

1107:                                             ; preds = %1101, %1099
  %1108 = phi i1 [ true, %1099 ], [ %1106, %1101 ]
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1108, ptr noundef nonnull @.str.1814, ptr noundef %1)
  %1109 = getelementptr inbounds i8, ptr %0, i64 808
  %1110 = getelementptr inbounds i8, ptr %0, i64 616
  %1111 = getelementptr inbounds i8, ptr %0, i64 1288
  %1112 = getelementptr inbounds i8, ptr %0, i64 1160
  %1113 = getelementptr inbounds i8, ptr %0, i64 1352
  %1114 = getelementptr inbounds i8, ptr %0, i64 1224
  %1115 = load i64, ptr %3, align 8, !tbaa !25
  %1116 = load double, ptr %4, align 8, !tbaa !29
  %1117 = getelementptr inbounds i8, ptr %0, i64 1728
  %1118 = load double, ptr %1117, align 8, !tbaa !74
  %1119 = call noundef i64 @_ZN11alglib_impl22postprocessboundedstepEPNS_9ae_vectorEPKS0_S3_S3_S3_S3_llldddPNS_8ae_stateE(ptr noundef nonnull %1109, ptr noundef nonnull %1110, ptr noundef nonnull %1111, ptr noundef nonnull %1112, ptr noundef nonnull %1113, ptr noundef nonnull %1114, i64 noundef %.01460, i64 noundef 0, i64 noundef %1115, double noundef %1116, double noundef %1118, double noundef %.2, ptr noundef %1)
  %1120 = getelementptr inbounds i8, ptr %0, i64 1064
  %1121 = load double, ptr %1120, align 8, !tbaa !53
  %1122 = getelementptr inbounds i8, ptr %0, i64 1080
  store double %1121, ptr %1122, align 8, !tbaa !79
  %1123 = load double, ptr %1030, align 8, !tbaa !70
  store double %1123, ptr %1120, align 8, !tbaa !53
  %1124 = getelementptr inbounds i8, ptr %0, i64 1056
  %1125 = load ptr, ptr %1124, align 8, !tbaa !24
  %1126 = getelementptr inbounds i8, ptr %0, i64 672
  %1127 = load ptr, ptr %1126, align 8, !tbaa !24
  %1128 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1057)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1125, i64 noundef 1, ptr noundef %1127, i64 noundef 1, i64 noundef %1128)
  %1129 = load ptr, ptr %1126, align 8, !tbaa !24
  %1130 = getelementptr inbounds i8, ptr %0, i64 864
  %1131 = load ptr, ptr %1130, align 8, !tbaa !24
  %1132 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1057)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1129, i64 noundef 1, ptr noundef %1131, i64 noundef 1, i64 noundef %1132)
  %1133 = getelementptr inbounds i8, ptr %0, i64 800
  %1134 = load ptr, ptr %1133, align 8, !tbaa !24
  %1135 = getelementptr inbounds i8, ptr %0, i64 992
  %1136 = load ptr, ptr %1135, align 8, !tbaa !24
  %1137 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1057)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1134, i64 noundef 1, ptr noundef %1136, i64 noundef 1, i64 noundef %1137)
  %1138 = getelementptr inbounds i8, ptr %0, i64 736
  %1139 = load ptr, ptr %1138, align 8, !tbaa !24
  %1140 = getelementptr inbounds i8, ptr %0, i64 928
  %1141 = load ptr, ptr %1140, align 8, !tbaa !24
  %1142 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1057)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1139, i64 noundef 1, ptr noundef %1141, i64 noundef 1, i64 noundef %1142)
  %1143 = getelementptr inbounds i8, ptr %0, i64 40
  %1144 = load i8, ptr %1143, align 8, !tbaa !55, !range !27, !noundef !28
  %1145 = trunc nuw i8 %1144 to i1
  br i1 %1145, label %1146, label %._crit_edge1758

._crit_edge1758:                                  ; preds = %1107
  %.pre1759 = load i64, ptr %5, align 8, !tbaa !25
  br label %1154

1146:                                             ; preds = %1107
  %1147 = getelementptr inbounds i8, ptr %0, i64 264
  %1148 = load ptr, ptr %1147, align 8, !tbaa !24
  %1149 = load ptr, ptr %1126, align 8, !tbaa !24
  %1150 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1057)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1148, i64 noundef 1, ptr noundef %1149, i64 noundef 1, i64 noundef %1150)
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %1151 = getelementptr inbounds i8, ptr %0, i64 346
  store i8 1, ptr %1151, align 2, !tbaa !56
  br label %2180

1152:                                             ; preds = %47
  %1153 = getelementptr inbounds i8, ptr %0, i64 346
  store i8 0, ptr %1153, align 2, !tbaa !56
  br label %1154

1154:                                             ; preds = %._crit_edge1758, %1152
  %1155 = phi i64 [ %.pre1759, %._crit_edge1758 ], [ %.sink1750, %1152 ]
  %.41468 = phi double [ %.31467, %._crit_edge1758 ], [ %.01464, %1152 ]
  %.41428 = phi double [ %.31427, %._crit_edge1758 ], [ %.01424, %1152 ]
  %.3 = phi double [ %.2, %._crit_edge1758 ], [ %.0, %1152 ]
  %1156 = getelementptr inbounds i8, ptr %0, i64 1416
  %1157 = load i64, ptr %1156, align 8, !tbaa !72
  %1158 = add nsw i64 %1157, 1
  store i64 %1158, ptr %1156, align 8, !tbaa !72
  %1159 = icmp eq i64 %1155, 1
  br i1 %1159, label %.preheader1538, label %1203

.preheader1538:                                   ; preds = %1154
  %.not1499.not1579 = icmp sgt i64 %.01460, 0
  br i1 %.not1499.not1579, label %.lr.ph1582, label %._crit_edge1583

.lr.ph1582:                                       ; preds = %.preheader1538
  %1160 = getelementptr inbounds i8, ptr %0, i64 672
  %1161 = getelementptr inbounds i8, ptr %0, i64 1056
  %1162 = getelementptr inbounds i8, ptr %0, i64 120
  br label %1163

1163:                                             ; preds = %.lr.ph1582, %1163
  %.514291581 = phi double [ 0.000000e+00, %.lr.ph1582 ], [ %1176, %1163 ]
  %.171580 = phi i64 [ 0, %.lr.ph1582 ], [ %1177, %1163 ]
  %1164 = load ptr, ptr %1160, align 8, !tbaa !24
  %1165 = getelementptr inbounds double, ptr %1164, i64 %.171580
  %1166 = load double, ptr %1165, align 8, !tbaa !29
  %1167 = load ptr, ptr %1161, align 8, !tbaa !24
  %1168 = getelementptr inbounds double, ptr %1167, i64 %.171580
  %1169 = load double, ptr %1168, align 8, !tbaa !29
  %1170 = fsub double %1166, %1169
  %1171 = load ptr, ptr %1162, align 8, !tbaa !24
  %1172 = getelementptr inbounds double, ptr %1171, i64 %.171580
  %1173 = load double, ptr %1172, align 8, !tbaa !29
  %1174 = fdiv double %1170, %1173
  %1175 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1174, ptr noundef %1)
  %1176 = fadd double %.514291581, %1175
  %1177 = add nuw nsw i64 %.171580, 1
  %exitcond1733.not = icmp eq i64 %1177, %.01460
  br i1 %exitcond1733.not, label %._crit_edge1583, label %1163, !llvm.loop !80

._crit_edge1583:                                  ; preds = %1163, %.preheader1538
  %.51429.lcssa = phi double [ 0.000000e+00, %.preheader1538 ], [ %1176, %1163 ]
  %1178 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.51429.lcssa, ptr noundef %1)
  %1179 = getelementptr inbounds i8, ptr %0, i64 24
  %1180 = load double, ptr %1179, align 8, !tbaa !81
  %1181 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1178, double noundef %1180)
  br i1 %1181, label %1182, label %1184

1182:                                             ; preds = %._crit_edge1583
  %1183 = getelementptr inbounds i8, ptr %0, i64 1440
  store i64 2, ptr %1183, align 8, !tbaa !35
  br label %2220

1184:                                             ; preds = %._crit_edge1583
  %1185 = getelementptr inbounds i8, ptr %0, i64 1080
  %1186 = load double, ptr %1185, align 8, !tbaa !79
  %1187 = getelementptr inbounds i8, ptr %0, i64 1064
  %1188 = load double, ptr %1187, align 8, !tbaa !53
  %1189 = fsub double %1186, %1188
  %1190 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1189, ptr noundef %1)
  %1191 = getelementptr inbounds i8, ptr %0, i64 16
  %1192 = load double, ptr %1191, align 8, !tbaa !82
  %1193 = load double, ptr %1187, align 8, !tbaa !53
  %1194 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1193, ptr noundef %1)
  %1195 = load double, ptr %1185, align 8, !tbaa !79
  %1196 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1195, ptr noundef %1)
  %1197 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1196, double noundef 1.000000e+00, ptr noundef %1)
  %1198 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1194, double noundef %1197, ptr noundef %1)
  %1199 = fmul double %1192, %1198
  %1200 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1190, double noundef %1199)
  br i1 %1200, label %1201, label %1203

1201:                                             ; preds = %1184
  %1202 = getelementptr inbounds i8, ptr %0, i64 1440
  store i64 1, ptr %1202, align 8, !tbaa !35
  br label %2220

1203:                                             ; preds = %1184, %1154
  %.61430 = phi double [ %1178, %1184 ], [ %.41428, %1154 ]
  %1204 = getelementptr inbounds i8, ptr %0, i64 32
  %1205 = load i64, ptr %1204, align 8, !tbaa !83
  %1206 = icmp sgt i64 %1205, 0
  br i1 %1206, label %1207, label %1211

1207:                                             ; preds = %1203
  %1208 = load i64, ptr %1156, align 8, !tbaa !72
  %.not1500 = icmp slt i64 %1208, %1205
  br i1 %.not1500, label %1211, label %1209

1209:                                             ; preds = %1207
  %1210 = getelementptr inbounds i8, ptr %0, i64 1440
  store i64 5, ptr %1210, align 8, !tbaa !35
  br label %2220

1211:                                             ; preds = %1207, %1203
  %.not1501.not1585 = icmp sgt i64 %.01460, 0
  br i1 %.not1501.not1585, label %.lr.ph1589, label %._crit_edge1590

.lr.ph1589:                                       ; preds = %1211
  %1212 = getelementptr inbounds i8, ptr %0, i64 736
  %1213 = getelementptr inbounds i8, ptr %0, i64 800
  %1214 = getelementptr inbounds i8, ptr %0, i64 1216
  %1215 = getelementptr inbounds i8, ptr %0, i64 672
  %1216 = getelementptr inbounds i8, ptr %0, i64 1344
  %1217 = getelementptr inbounds i8, ptr %0, i64 1280
  %1218 = getelementptr inbounds i8, ptr %0, i64 1408
  %1219 = getelementptr inbounds i8, ptr %0, i64 120
  br label %1220

1220:                                             ; preds = %.lr.ph1589, %1257
  %.413911587 = phi double [ 0.000000e+00, %.lr.ph1589 ], [ %1266, %1257 ]
  %.181586 = phi i64 [ 0, %.lr.ph1589 ], [ %1267, %1257 ]
  %1221 = load ptr, ptr %1212, align 8, !tbaa !24
  %1222 = getelementptr inbounds double, ptr %1221, i64 %.181586
  %1223 = load double, ptr %1222, align 8, !tbaa !29
  %1224 = load ptr, ptr %1213, align 8, !tbaa !24
  %1225 = getelementptr inbounds double, ptr %1224, i64 %.181586
  store double %1223, ptr %1225, align 8, !tbaa !29
  %1226 = load ptr, ptr %1214, align 8, !tbaa !24
  %1227 = getelementptr inbounds i8, ptr %1226, i64 %.181586
  %1228 = load i8, ptr %1227, align 1, !tbaa !26, !range !27, !noundef !28
  %1229 = trunc nuw i8 %1228 to i1
  br i1 %1229, label %1230, label %1241

1230:                                             ; preds = %1220
  %1231 = load ptr, ptr %1215, align 8, !tbaa !24
  %1232 = getelementptr inbounds double, ptr %1231, i64 %.181586
  %1233 = load double, ptr %1232, align 8, !tbaa !29
  %1234 = load ptr, ptr %1216, align 8, !tbaa !24
  %1235 = getelementptr inbounds double, ptr %1234, i64 %.181586
  %1236 = load double, ptr %1235, align 8, !tbaa !29
  %1237 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1233, double noundef %1236)
  br i1 %1237, label %1238, label %1241

1238:                                             ; preds = %1230
  %1239 = load ptr, ptr %1213, align 8, !tbaa !24
  %1240 = getelementptr inbounds double, ptr %1239, i64 %.181586
  store double 0.000000e+00, ptr %1240, align 8, !tbaa !29
  br label %1241

1241:                                             ; preds = %1238, %1230, %1220
  %1242 = load ptr, ptr %1217, align 8, !tbaa !24
  %1243 = getelementptr inbounds i8, ptr %1242, i64 %.181586
  %1244 = load i8, ptr %1243, align 1, !tbaa !26, !range !27, !noundef !28
  %1245 = trunc nuw i8 %1244 to i1
  br i1 %1245, label %1246, label %1257

1246:                                             ; preds = %1241
  %1247 = load ptr, ptr %1215, align 8, !tbaa !24
  %1248 = getelementptr inbounds double, ptr %1247, i64 %.181586
  %1249 = load double, ptr %1248, align 8, !tbaa !29
  %1250 = load ptr, ptr %1218, align 8, !tbaa !24
  %1251 = getelementptr inbounds double, ptr %1250, i64 %.181586
  %1252 = load double, ptr %1251, align 8, !tbaa !29
  %1253 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1249, double noundef %1252)
  br i1 %1253, label %1254, label %1257

1254:                                             ; preds = %1246
  %1255 = load ptr, ptr %1213, align 8, !tbaa !24
  %1256 = getelementptr inbounds double, ptr %1255, i64 %.181586
  store double 0.000000e+00, ptr %1256, align 8, !tbaa !29
  br label %1257

1257:                                             ; preds = %1254, %1246, %1241
  %1258 = load ptr, ptr %1213, align 8, !tbaa !24
  %1259 = getelementptr inbounds double, ptr %1258, i64 %.181586
  %1260 = load double, ptr %1259, align 8, !tbaa !29
  %1261 = load ptr, ptr %1219, align 8, !tbaa !24
  %1262 = getelementptr inbounds double, ptr %1261, i64 %.181586
  %1263 = load double, ptr %1262, align 8, !tbaa !29
  %1264 = fmul double %1260, %1263
  %1265 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1264, ptr noundef %1)
  %1266 = fadd double %.413911587, %1265
  %1267 = add nuw nsw i64 %.181586, 1
  %exitcond1734.not = icmp eq i64 %1267, %.01460
  br i1 %exitcond1734.not, label %._crit_edge1590, label %1220, !llvm.loop !84

._crit_edge1590:                                  ; preds = %1257, %1211
  %.18.lcssa = phi i64 [ 0, %1211 ], [ %.01460, %1257 ]
  %.41391.lcssa = phi double [ 0.000000e+00, %1211 ], [ %1266, %1257 ]
  %1268 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.41391.lcssa, ptr noundef %1)
  %1269 = getelementptr inbounds i8, ptr %0, i64 2304
  store i64 0, ptr %1269, align 8, !tbaa !85
  br label %1270

1270:                                             ; preds = %2173, %._crit_edge1590
  %.51469 = phi double [ %.41468, %._crit_edge1590 ], [ %.81472, %2173 ]
  %.19 = phi i64 [ %.18.lcssa, %._crit_edge1590 ], [ %.37, %2173 ]
  %.71431 = phi double [ %.61430, %._crit_edge1590 ], [ %.14, %2173 ]
  %.21417 = phi double [ %.01415, %._crit_edge1590 ], [ %.61421.lcssa, %2173 ]
  %.61410 = phi i8 [ %.01404, %._crit_edge1590 ], [ %.11, %2173 ]
  %.21399 = phi i64 [ 0, %._crit_edge1590 ], [ %2174, %2173 ]
  %.51392 = phi double [ %1268, %._crit_edge1590 ], [ %.71394, %2173 ]
  %.21375 = phi i8 [ %.01373, %._crit_edge1590 ], [ %.71380, %2173 ]
  %.4 = phi double [ %.3, %._crit_edge1590 ], [ %.6, %2173 ]
  %1271 = add nsw i64 %.01460, -1
  %.not1502 = icmp slt i64 %.21399, %.01460
  br i1 %.not1502, label %1272, label %2175

1272:                                             ; preds = %1270
  %1273 = getelementptr inbounds i8, ptr %0, i64 1744
  %1274 = getelementptr inbounds i8, ptr %0, i64 1800
  %1275 = load ptr, ptr %1274, align 8, !tbaa !24
  %1276 = getelementptr inbounds i8, ptr %0, i64 800
  %1277 = load ptr, ptr %1276, align 8, !tbaa !24
  %1278 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1271)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1275, i64 noundef 1, ptr noundef %1277, i64 noundef 1, i64 noundef %1278)
  %1279 = getelementptr inbounds i8, ptr %0, i64 2304
  %1280 = load i64, ptr %1279, align 8, !tbaa !85
  %1281 = icmp sgt i64 %1280, 0
  br i1 %1281, label %.lr.ph1595, label %.preheader1537

.lr.ph1595:                                       ; preds = %1272
  %1282 = getelementptr inbounds i8, ptr %0, i64 2168
  %1283 = getelementptr inbounds i8, ptr %0, i64 2296
  %1284 = getelementptr inbounds i8, ptr %0, i64 2232
  %1285 = getelementptr inbounds i8, ptr %0, i64 2088
  br label %1288

.preheader1537:                                   ; preds = %1288, %1272
  %.81432.lcssa = phi double [ %.71431, %1272 ], [ %1294, %1288 ]
  %.31418.lcssa = phi double [ %.21417, %1272 ], [ %1300, %1288 ]
  %.not1503.not1598 = icmp sgt i64 %.01460, 0
  br i1 %.not1503.not1598, label %.lr.ph1600, label %.preheader1536

.lr.ph1600:                                       ; preds = %.preheader1537
  %1286 = getelementptr inbounds i8, ptr %0, i64 1640
  %xtraiter1849 = and i64 %.01460, 1
  %1287 = icmp eq i64 %.01460, 1
  br i1 %1287, label %.preheader1536.loopexit.unr-lcssa, label %.lr.ph1600.new

.lr.ph1600.new:                                   ; preds = %.lr.ph1600
  %unroll_iter1852 = and i64 %.01460, 9223372036854775806
  br label %1319

1288:                                             ; preds = %.lr.ph1595, %1288
  %.20.in1593 = phi i64 [ %1280, %.lr.ph1595 ], [ %.20, %1288 ]
  %.20 = add nsw i64 %.20.in1593, -1
  %1289 = load ptr, ptr %1282, align 8, !tbaa !24
  %1290 = getelementptr inbounds ptr, ptr %1289, i64 %.20
  %1291 = load ptr, ptr %1290, align 8, !tbaa !44
  %1292 = load ptr, ptr %1274, align 8, !tbaa !24
  %1293 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1271)
  %1294 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1291, i64 noundef 1, ptr noundef %1292, i64 noundef 1, i64 noundef %1293)
  %1295 = load ptr, ptr %1283, align 8, !tbaa !24
  %1296 = getelementptr inbounds double, ptr %1295, i64 %.20
  store double %1294, ptr %1296, align 8, !tbaa !29
  %1297 = load ptr, ptr %1284, align 8, !tbaa !24
  %1298 = getelementptr inbounds double, ptr %1297, i64 %.20
  %1299 = load double, ptr %1298, align 8, !tbaa !29
  %1300 = fmul double %1294, %1299
  %1301 = load ptr, ptr %1274, align 8, !tbaa !24
  %1302 = load ptr, ptr %1285, align 8, !tbaa !24
  %1303 = getelementptr inbounds ptr, ptr %1302, i64 %.20
  %1304 = load ptr, ptr %1303, align 8, !tbaa !44
  %1305 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1271)
  call void @_ZN11alglib_impl9ae_v_subdEPdlPKdlld(ptr noundef %1301, i64 noundef 1, ptr noundef %1304, i64 noundef 1, i64 noundef %1305, double noundef %1300)
  %1306 = icmp ugt i64 %.20.in1593, 1
  br i1 %1306, label %1288, label %.preheader1537, !llvm.loop !86

.preheader1536.loopexit.unr-lcssa:                ; preds = %1319, %.lr.ph1600
  %.211599.unr = phi i64 [ 0, %.lr.ph1600 ], [ %1335, %1319 ]
  %lcmp.mod1851.not = icmp eq i64 %xtraiter1849, 0
  br i1 %lcmp.mod1851.not, label %.preheader1536, label %.preheader1536.loopexit.epilog-lcssa

.preheader1536.loopexit.epilog-lcssa:             ; preds = %.preheader1536.loopexit.unr-lcssa
  %1307 = load ptr, ptr %1286, align 8, !tbaa !24
  %1308 = getelementptr inbounds double, ptr %1307, i64 %.211599.unr
  %1309 = load double, ptr %1308, align 8, !tbaa !29
  %1310 = load ptr, ptr %1274, align 8, !tbaa !24
  %1311 = getelementptr inbounds double, ptr %1310, i64 %.211599.unr
  %1312 = load double, ptr %1311, align 8, !tbaa !29
  %1313 = fmul double %1309, %1312
  store double %1313, ptr %1311, align 8, !tbaa !29
  br label %.preheader1536

.preheader1536:                                   ; preds = %.preheader1536.loopexit.epilog-lcssa, %.preheader1536.loopexit.unr-lcssa, %.preheader1537
  %1314 = load i64, ptr %1279, align 8, !tbaa !85
  %.not1504.not1601 = icmp sgt i64 %1314, 0
  br i1 %.not1504.not1601, label %.lr.ph1603, label %._crit_edge1604

.lr.ph1603:                                       ; preds = %.preheader1536
  %1315 = getelementptr inbounds i8, ptr %0, i64 2088
  %1316 = getelementptr inbounds i8, ptr %0, i64 2232
  %1317 = getelementptr inbounds i8, ptr %0, i64 2296
  %1318 = getelementptr inbounds i8, ptr %0, i64 2168
  br label %1336

1319:                                             ; preds = %1319, %.lr.ph1600.new
  %.211599 = phi i64 [ 0, %.lr.ph1600.new ], [ %1335, %1319 ]
  %niter1853 = phi i64 [ 0, %.lr.ph1600.new ], [ %niter1853.next.1, %1319 ]
  %1320 = load ptr, ptr %1286, align 8, !tbaa !24
  %1321 = getelementptr inbounds double, ptr %1320, i64 %.211599
  %1322 = load double, ptr %1321, align 8, !tbaa !29
  %1323 = load ptr, ptr %1274, align 8, !tbaa !24
  %1324 = getelementptr inbounds double, ptr %1323, i64 %.211599
  %1325 = load double, ptr %1324, align 8, !tbaa !29
  %1326 = fmul double %1322, %1325
  store double %1326, ptr %1324, align 8, !tbaa !29
  %1327 = or disjoint i64 %.211599, 1
  %1328 = load ptr, ptr %1286, align 8, !tbaa !24
  %1329 = getelementptr inbounds double, ptr %1328, i64 %1327
  %1330 = load double, ptr %1329, align 8, !tbaa !29
  %1331 = load ptr, ptr %1274, align 8, !tbaa !24
  %1332 = getelementptr inbounds double, ptr %1331, i64 %1327
  %1333 = load double, ptr %1332, align 8, !tbaa !29
  %1334 = fmul double %1330, %1333
  store double %1334, ptr %1332, align 8, !tbaa !29
  %1335 = add nuw nsw i64 %.211599, 2
  %niter1853.next.1 = add i64 %niter1853, 2
  %niter1853.ncmp.1 = icmp eq i64 %niter1853.next.1, %unroll_iter1852
  br i1 %niter1853.ncmp.1, label %.preheader1536.loopexit.unr-lcssa, label %1319, !llvm.loop !87

1336:                                             ; preds = %.lr.ph1603, %1336
  %.221602 = phi i64 [ 0, %.lr.ph1603 ], [ %1356, %1336 ]
  %1337 = load ptr, ptr %1315, align 8, !tbaa !24
  %1338 = getelementptr inbounds ptr, ptr %1337, i64 %.221602
  %1339 = load ptr, ptr %1338, align 8, !tbaa !44
  %1340 = load ptr, ptr %1274, align 8, !tbaa !24
  %1341 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1271)
  %1342 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1339, i64 noundef 1, ptr noundef %1340, i64 noundef 1, i64 noundef %1341)
  %1343 = load ptr, ptr %1316, align 8, !tbaa !24
  %1344 = getelementptr inbounds double, ptr %1343, i64 %.221602
  %1345 = load double, ptr %1344, align 8, !tbaa !29
  %1346 = load ptr, ptr %1317, align 8, !tbaa !24
  %1347 = getelementptr inbounds double, ptr %1346, i64 %.221602
  %1348 = load double, ptr %1347, align 8, !tbaa !29
  %1349 = fsub double %1348, %1342
  %1350 = fmul double %1345, %1349
  %1351 = load ptr, ptr %1274, align 8, !tbaa !24
  %1352 = load ptr, ptr %1318, align 8, !tbaa !24
  %1353 = getelementptr inbounds ptr, ptr %1352, i64 %.221602
  %1354 = load ptr, ptr %1353, align 8, !tbaa !44
  %1355 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1271)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %1351, i64 noundef 1, ptr noundef %1354, i64 noundef 1, i64 noundef %1355, double noundef %1350)
  %1356 = add nuw nsw i64 %.221602, 1
  %1357 = load i64, ptr %1279, align 8, !tbaa !85
  %.not1504.not = icmp slt i64 %1356, %1357
  br i1 %.not1504.not, label %1336, label %._crit_edge1604, !llvm.loop !88

._crit_edge1604:                                  ; preds = %1336, %.preheader1536
  %.91433.lcssa = phi double [ %.81432.lcssa, %.preheader1536 ], [ %1342, %1336 ]
  %.41419.lcssa = phi double [ %.31418.lcssa, %.preheader1536 ], [ %1350, %1336 ]
  %1358 = getelementptr inbounds i8, ptr %0, i64 1088
  %1359 = getelementptr inbounds i8, ptr %0, i64 1144
  %1360 = load ptr, ptr %1359, align 8, !tbaa !24
  %1361 = load ptr, ptr %1274, align 8, !tbaa !24
  %1362 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1271)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %1360, i64 noundef 1, ptr noundef %1361, i64 noundef 1, i64 noundef %1362)
  br i1 %.not1503.not1598, label %.lr.ph1611, label %._crit_edge1612.thread

._crit_edge1612.thread:                           ; preds = %._crit_edge1604
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext true, ptr noundef nonnull @.str.1815, ptr noundef %1)
  br label %._crit_edge1619

.lr.ph1611:                                       ; preds = %._crit_edge1604
  %1363 = getelementptr inbounds i8, ptr %0, i64 1216
  %1364 = getelementptr inbounds i8, ptr %0, i64 672
  %1365 = getelementptr inbounds i8, ptr %0, i64 1344
  %1366 = getelementptr inbounds i8, ptr %0, i64 1280
  %1367 = getelementptr inbounds i8, ptr %0, i64 1408
  br label %1368

1368:                                             ; preds = %.lr.ph1611, %.critedge
  %.714111609 = phi i1 [ false, %.lr.ph1611 ], [ %1404, %.critedge ]
  %.231608 = phi i64 [ 0, %.lr.ph1611 ], [ %1405, %.critedge ]
  br i1 %.714111609, label %.critedge, label %1369

1369:                                             ; preds = %1368
  %1370 = load ptr, ptr %1363, align 8, !tbaa !24
  %1371 = getelementptr inbounds i8, ptr %1370, i64 %.231608
  %1372 = load i8, ptr %1371, align 1, !tbaa !26, !range !27, !noundef !28
  %1373 = trunc nuw i8 %1372 to i1
  br i1 %1373, label %1374, label %.critedge1520

1374:                                             ; preds = %1369
  %1375 = load ptr, ptr %1364, align 8, !tbaa !24
  %1376 = getelementptr inbounds double, ptr %1375, i64 %.231608
  %1377 = load double, ptr %1376, align 8, !tbaa !29
  %1378 = load ptr, ptr %1365, align 8, !tbaa !24
  %1379 = getelementptr inbounds double, ptr %1378, i64 %.231608
  %1380 = load double, ptr %1379, align 8, !tbaa !29
  %1381 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1377, double noundef %1380)
  br i1 %1381, label %1382, label %.critedge1520

1382:                                             ; preds = %1374
  %1383 = load ptr, ptr %1359, align 8, !tbaa !24
  %1384 = getelementptr inbounds double, ptr %1383, i64 %.231608
  %1385 = load double, ptr %1384, align 8, !tbaa !29
  %1386 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1385, double noundef 0.000000e+00)
  br i1 %1386, label %.critedge, label %.critedge1520

.critedge1520:                                    ; preds = %1374, %1369, %1382
  %1387 = load ptr, ptr %1366, align 8, !tbaa !24
  %1388 = getelementptr inbounds i8, ptr %1387, i64 %.231608
  %1389 = load i8, ptr %1388, align 1, !tbaa !26, !range !27, !noundef !28
  %1390 = trunc nuw i8 %1389 to i1
  br i1 %1390, label %1391, label %.critedge

1391:                                             ; preds = %.critedge1520
  %1392 = load ptr, ptr %1364, align 8, !tbaa !24
  %1393 = getelementptr inbounds double, ptr %1392, i64 %.231608
  %1394 = load double, ptr %1393, align 8, !tbaa !29
  %1395 = load ptr, ptr %1367, align 8, !tbaa !24
  %1396 = getelementptr inbounds double, ptr %1395, i64 %.231608
  %1397 = load double, ptr %1396, align 8, !tbaa !29
  %1398 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1394, double noundef %1397)
  br i1 %1398, label %1399, label %.critedge

1399:                                             ; preds = %1391
  %1400 = load ptr, ptr %1359, align 8, !tbaa !24
  %1401 = getelementptr inbounds double, ptr %1400, i64 %.231608
  %1402 = load double, ptr %1401, align 8, !tbaa !29
  %1403 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1402, double noundef 0.000000e+00)
  br label %.critedge

.critedge:                                        ; preds = %1368, %.critedge1520, %1391, %1399, %1382
  %1404 = phi i1 [ true, %1382 ], [ false, %1391 ], [ false, %.critedge1520 ], [ %1403, %1399 ], [ true, %1368 ]
  %1405 = add nuw nsw i64 %.231608, 1
  %exitcond1736.not = icmp eq i64 %1405, %.01460
  br i1 %exitcond1736.not, label %._crit_edge1612, label %1368, !llvm.loop !89

._crit_edge1612:                                  ; preds = %.critedge
  %1406 = xor i1 %1404, true
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1406, ptr noundef nonnull @.str.1815, ptr noundef %1)
  br i1 %.not1503.not1598, label %.lr.ph1618, label %._crit_edge1619

.lr.ph1618:                                       ; preds = %._crit_edge1612
  %1407 = getelementptr inbounds i8, ptr %0, i64 120
  br label %1408

1408:                                             ; preds = %.lr.ph1618, %1408
  %.241616 = phi i64 [ 0, %.lr.ph1618 ], [ %1418, %1408 ]
  %.614701615 = phi double [ 0.000000e+00, %.lr.ph1618 ], [ %1417, %1408 ]
  %1409 = load ptr, ptr %1359, align 8, !tbaa !24
  %1410 = getelementptr inbounds double, ptr %1409, i64 %.241616
  %1411 = load double, ptr %1410, align 8, !tbaa !29
  %1412 = load ptr, ptr %1407, align 8, !tbaa !24
  %1413 = getelementptr inbounds double, ptr %1412, i64 %.241616
  %1414 = load double, ptr %1413, align 8, !tbaa !29
  %1415 = fdiv double %1411, %1414
  %1416 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1415, ptr noundef %1)
  %1417 = fadd double %.614701615, %1416
  %1418 = add nuw nsw i64 %.241616, 1
  %exitcond1737.not = icmp eq i64 %1418, %.01460
  br i1 %exitcond1737.not, label %._crit_edge1619, label %1408, !llvm.loop !90

._crit_edge1619:                                  ; preds = %1408, %._crit_edge1612.thread, %._crit_edge1612
  %.71411.lcssa1762.shrunk = phi i1 [ %1404, %._crit_edge1612 ], [ false, %._crit_edge1612.thread ], [ %1404, %1408 ]
  %.61470.lcssa = phi double [ 0.000000e+00, %._crit_edge1612 ], [ 0.000000e+00, %._crit_edge1612.thread ], [ %1417, %1408 ]
  %.24.lcssa = phi i64 [ 0, %._crit_edge1612 ], [ 0, %._crit_edge1612.thread ], [ %.01460, %1408 ]
  %.71411.lcssa1762 = zext i1 %.71411.lcssa1762.shrunk to i8
  %1419 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.61470.lcssa, ptr noundef %1)
  %1420 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1419, double noundef 0.000000e+00)
  br i1 %1420, label %2175, label %1421

1421:                                             ; preds = %._crit_edge1619
  %1422 = getelementptr inbounds i8, ptr %0, i64 1152
  %1423 = load double, ptr %1422, align 8, !tbaa !50
  %1424 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1423, double noundef 0.000000e+00)
  br i1 %1424, label %1425, label %1427

1425:                                             ; preds = %1421
  %1426 = load double, ptr %1422, align 8, !tbaa !50
  br label %1427

1427:                                             ; preds = %1421, %1425
  %.pn1760 = phi double [ %1426, %1425 ], [ 1.000000e+00, %1421 ]
  %.sink1753 = fdiv double %.pn1760, %1419
  %1428 = getelementptr inbounds i8, ptr %0, i64 1728
  store double %.sink1753, ptr %1428, align 8
  %1429 = getelementptr inbounds i8, ptr %0, i64 1736
  store double 1.000000e+50, ptr %1429, align 8, !tbaa !68
  %1430 = getelementptr inbounds i8, ptr %0, i64 48
  %1431 = load double, ptr %1430, align 8, !tbaa !69
  %1432 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1431, double noundef 0.000000e+00)
  br i1 %1432, label %1433, label %1438

1433:                                             ; preds = %1427
  %1434 = load double, ptr %1429, align 8, !tbaa !68
  %1435 = load double, ptr %1430, align 8, !tbaa !69
  %1436 = fdiv double %1435, %1419
  %1437 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %1434, double noundef %1436, ptr noundef %1)
  store double %1437, ptr %1429, align 8, !tbaa !68
  br label %1438

1438:                                             ; preds = %1433, %1427
  %1439 = getelementptr inbounds i8, ptr %0, i64 808
  %1440 = getelementptr inbounds i8, ptr %0, i64 864
  %1441 = load ptr, ptr %1440, align 8, !tbaa !24
  %1442 = getelementptr inbounds i8, ptr %0, i64 672
  %1443 = load ptr, ptr %1442, align 8, !tbaa !24
  %1444 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1271)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1441, i64 noundef 1, ptr noundef %1443, i64 noundef 1, i64 noundef %1444)
  %1445 = getelementptr inbounds i8, ptr %0, i64 936
  %1446 = getelementptr inbounds i8, ptr %0, i64 992
  %1447 = load ptr, ptr %1446, align 8, !tbaa !24
  %1448 = load ptr, ptr %1276, align 8, !tbaa !24
  %1449 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1271)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1447, i64 noundef 1, ptr noundef %1448, i64 noundef 1, i64 noundef %1449)
  %1450 = getelementptr inbounds i8, ptr %0, i64 872
  %1451 = getelementptr inbounds i8, ptr %0, i64 928
  %1452 = load ptr, ptr %1451, align 8, !tbaa !24
  %1453 = getelementptr inbounds i8, ptr %0, i64 736
  %1454 = load ptr, ptr %1453, align 8, !tbaa !24
  %1455 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1271)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1452, i64 noundef 1, ptr noundef %1454, i64 noundef 1, i64 noundef %1455)
  %1456 = getelementptr inbounds i8, ptr %0, i64 1064
  %1457 = load double, ptr %1456, align 8, !tbaa !53
  %1458 = getelementptr inbounds i8, ptr %0, i64 1072
  store double %1457, ptr %1458, align 8, !tbaa !70
  %1459 = getelementptr inbounds i8, ptr %0, i64 1720
  store i64 0, ptr %1459, align 8, !tbaa !71
  %1460 = getelementptr inbounds i8, ptr %0, i64 2328
  %1461 = getelementptr inbounds i8, ptr %0, i64 64
  %1462 = getelementptr inbounds i8, ptr %0, i64 8096
  %1463 = getelementptr inbounds i8, ptr %0, i64 1416
  %1464 = load i64, ptr %1463, align 8, !tbaa !72
  call void @_ZN11alglib_impl34smoothnessmonitorstartlinesearch1uEPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_dS4_llPNS_8ae_stateE(ptr noundef nonnull %1460, ptr noundef nonnull %1461, ptr noundef nonnull %1462, ptr noundef nonnull %1439, double noundef %1457, ptr noundef nonnull %1450, i64 noundef %1464, i64 noundef -1, ptr noundef %1)
  %1465 = load double, ptr %1429, align 8, !tbaa !68
  %1466 = load double, ptr @_ZN11alglib_implL10minbc_gtolE, align 8, !tbaa !29
  %1467 = getelementptr inbounds i8, ptr %0, i64 1712
  %1468 = getelementptr inbounds i8, ptr %0, i64 1808
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_PKS0_S2_ddPlS5_S1_PNS_11linminstateES5_PNS_8ae_stateE(i64 noundef %.01460, ptr noundef nonnull %1439, ptr noundef nonnull %1458, ptr noundef nonnull %1445, ptr noundef nonnull %1358, ptr noundef nonnull %1428, double noundef %1465, double noundef %1466, ptr noundef nonnull %5, ptr noundef nonnull %1467, ptr noundef nonnull %1273, ptr noundef nonnull %1468, ptr noundef nonnull %1459, ptr noundef %1)
  br label %1469

1469:                                             ; preds = %._crit_edge, %1438
  %.71471 = phi double [ %1419, %1438 ], [ %.01464, %._crit_edge ]
  %.101434 = phi double [ %.91433.lcssa, %1438 ], [ %.01424, %._crit_edge ]
  %.51420 = phi double [ %.41419.lcssa, %1438 ], [ %.01415, %._crit_edge ]
  %.81412 = phi i8 [ %.71411.lcssa1762, %1438 ], [ %.01404, %._crit_edge ]
  %.31400 = phi i64 [ %.21399, %1438 ], [ %.01397, %._crit_edge ]
  %.61393 = phi double [ %.51392, %1438 ], [ %.01387, %._crit_edge ]
  %.31376 = phi i8 [ %.21375, %1438 ], [ %.01373, %._crit_edge ]
  %.5 = phi double [ %.4, %1438 ], [ %.0, %._crit_edge ]
  %1470 = getelementptr inbounds i8, ptr %0, i64 1720
  %1471 = load i64, ptr %1470, align 8, !tbaa !71
  %1472 = icmp eq i64 %1471, 0
  br i1 %1472, label %1833, label %.preheader1535

.preheader1535:                                   ; preds = %1469
  %.not1507.not1622 = icmp sgt i64 %.01460, 0
  br i1 %.not1507.not1622, label %.lr.ph1624, label %._crit_edge1625

.lr.ph1624:                                       ; preds = %.preheader1535
  %1473 = getelementptr inbounds i8, ptr %0, i64 864
  %1474 = getelementptr inbounds i8, ptr %0, i64 264
  %1475 = getelementptr inbounds i8, ptr %0, i64 1216
  %1476 = getelementptr inbounds i8, ptr %0, i64 1344
  %1477 = getelementptr inbounds i8, ptr %0, i64 1280
  %1478 = getelementptr inbounds i8, ptr %0, i64 1408
  br label %1479

1479:                                             ; preds = %.lr.ph1624, %1522
  %.251623 = phi i64 [ 0, %.lr.ph1624 ], [ %1523, %1522 ]
  %1480 = load ptr, ptr %1473, align 8, !tbaa !24
  %1481 = getelementptr inbounds double, ptr %1480, i64 %.251623
  %1482 = load double, ptr %1481, align 8, !tbaa !29
  %1483 = load ptr, ptr %1474, align 8, !tbaa !24
  %1484 = getelementptr inbounds double, ptr %1483, i64 %.251623
  store double %1482, ptr %1484, align 8, !tbaa !29
  %1485 = load ptr, ptr %1475, align 8, !tbaa !24
  %1486 = getelementptr inbounds i8, ptr %1485, i64 %.251623
  %1487 = load i8, ptr %1486, align 1, !tbaa !26, !range !27, !noundef !28
  %1488 = trunc nuw i8 %1487 to i1
  br i1 %1488, label %1489, label %1503

1489:                                             ; preds = %1479
  %1490 = load ptr, ptr %1473, align 8, !tbaa !24
  %1491 = getelementptr inbounds double, ptr %1490, i64 %.251623
  %1492 = load double, ptr %1491, align 8, !tbaa !29
  %1493 = load ptr, ptr %1476, align 8, !tbaa !24
  %1494 = getelementptr inbounds double, ptr %1493, i64 %.251623
  %1495 = load double, ptr %1494, align 8, !tbaa !29
  %1496 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1492, double noundef %1495)
  br i1 %1496, label %1497, label %1503

1497:                                             ; preds = %1489
  %1498 = load ptr, ptr %1476, align 8, !tbaa !24
  %1499 = getelementptr inbounds double, ptr %1498, i64 %.251623
  %1500 = load double, ptr %1499, align 8, !tbaa !29
  %1501 = load ptr, ptr %1474, align 8, !tbaa !24
  %1502 = getelementptr inbounds double, ptr %1501, i64 %.251623
  store double %1500, ptr %1502, align 8, !tbaa !29
  br label %1503

1503:                                             ; preds = %1497, %1489, %1479
  %1504 = load ptr, ptr %1477, align 8, !tbaa !24
  %1505 = getelementptr inbounds i8, ptr %1504, i64 %.251623
  %1506 = load i8, ptr %1505, align 1, !tbaa !26, !range !27, !noundef !28
  %1507 = trunc nuw i8 %1506 to i1
  br i1 %1507, label %1508, label %1522

1508:                                             ; preds = %1503
  %1509 = load ptr, ptr %1473, align 8, !tbaa !24
  %1510 = getelementptr inbounds double, ptr %1509, i64 %.251623
  %1511 = load double, ptr %1510, align 8, !tbaa !29
  %1512 = load ptr, ptr %1478, align 8, !tbaa !24
  %1513 = getelementptr inbounds double, ptr %1512, i64 %.251623
  %1514 = load double, ptr %1513, align 8, !tbaa !29
  %1515 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %1511, double noundef %1514)
  br i1 %1515, label %1516, label %1522

1516:                                             ; preds = %1508
  %1517 = load ptr, ptr %1478, align 8, !tbaa !24
  %1518 = getelementptr inbounds double, ptr %1517, i64 %.251623
  %1519 = load double, ptr %1518, align 8, !tbaa !29
  %1520 = load ptr, ptr %1474, align 8, !tbaa !24
  %1521 = getelementptr inbounds double, ptr %1520, i64 %.251623
  store double %1519, ptr %1521, align 8, !tbaa !29
  br label %1522

1522:                                             ; preds = %1503, %1508, %1516
  %1523 = add nuw nsw i64 %.251623, 1
  %exitcond1738.not = icmp eq i64 %1523, %.01460
  br i1 %exitcond1738.not, label %._crit_edge1625, label %1479, !llvm.loop !91

._crit_edge1625:                                  ; preds = %1522, %.preheader1535
  %.25.lcssa = phi i64 [ 0, %.preheader1535 ], [ %.01460, %1522 ]
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %1524 = getelementptr inbounds i8, ptr %0, i64 56
  %1525 = load double, ptr %1524, align 8, !tbaa !42
  %1526 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1525, double noundef 0.000000e+00)
  br i1 %1526, label %1534, label %1527

1527:                                             ; preds = %._crit_edge1625
  %1528 = getelementptr inbounds i8, ptr %0, i64 345
  store i8 1, ptr %1528, align 1, !tbaa !47
  br label %2180

1529:                                             ; preds = %47
  %1530 = getelementptr inbounds i8, ptr %0, i64 345
  store i8 0, ptr %1530, align 1, !tbaa !47
  %1531 = getelementptr inbounds i8, ptr %0, i64 1424
  %1532 = load i64, ptr %1531, align 8, !tbaa !54
  %1533 = add nsw i64 %1532, 1
  store i64 %1533, ptr %1531, align 8, !tbaa !54
  %.phi.trans.insert = getelementptr inbounds i8, ptr %0, i64 272
  %.pre = load double, ptr %.phi.trans.insert, align 8, !tbaa !48
  br label %1757

1534:                                             ; preds = %._crit_edge1625
  %1535 = getelementptr inbounds i8, ptr %0, i64 344
  store i8 1, ptr %1535, align 8, !tbaa !52
  br label %2180

1536:                                             ; preds = %47
  %1537 = getelementptr inbounds i8, ptr %0, i64 272
  %1538 = load double, ptr %1537, align 8, !tbaa !48
  %1539 = getelementptr inbounds i8, ptr %0, i64 1512
  store double %1538, ptr %1539, align 8, !tbaa !57
  br label %1540

1540:                                             ; preds = %1741, %1536
  %.26 = phi i64 [ 0, %1536 ], [ %1751, %1741 ]
  %.not = icmp slt i64 %.26, %.01460
  br i1 %.not, label %1541, label %1752

1541:                                             ; preds = %1540
  %1542 = getelementptr inbounds i8, ptr %0, i64 264
  %1543 = load ptr, ptr %1542, align 8, !tbaa !24
  %1544 = getelementptr inbounds double, ptr %1543, i64 %.26
  %1545 = load double, ptr %1544, align 8, !tbaa !29
  %1546 = getelementptr inbounds i8, ptr %0, i64 1216
  %1547 = load ptr, ptr %1546, align 8, !tbaa !24
  %1548 = getelementptr inbounds i8, ptr %1547, i64 %.26
  %1549 = load i8, ptr %1548, align 1, !tbaa !26, !range !27, !noundef !28
  %1550 = trunc nuw i8 %1549 to i1
  br i1 %1550, label %1551, label %1566

1551:                                             ; preds = %1541
  %1552 = getelementptr inbounds i8, ptr %0, i64 56
  %1553 = load double, ptr %1552, align 8, !tbaa !42
  %1554 = getelementptr inbounds i8, ptr %0, i64 120
  %1555 = load ptr, ptr %1554, align 8, !tbaa !24
  %1556 = getelementptr inbounds double, ptr %1555, i64 %.26
  %1557 = load double, ptr %1556, align 8, !tbaa !29
  %1558 = fneg double %1553
  %1559 = tail call double @llvm.fmuladd.f64(double %1558, double %1557, double %1545)
  %1560 = getelementptr inbounds i8, ptr %0, i64 1344
  %1561 = load ptr, ptr %1560, align 8, !tbaa !24
  %1562 = getelementptr inbounds double, ptr %1561, i64 %.26
  %1563 = load double, ptr %1562, align 8, !tbaa !29
  %1564 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1559, double noundef %1563)
  %1565 = zext i1 %1564 to i8
  br label %1566

1566:                                             ; preds = %1551, %1541
  %.91413 = phi i8 [ %1565, %1551 ], [ 0, %1541 ]
  %1567 = getelementptr inbounds i8, ptr %0, i64 1280
  %1568 = load ptr, ptr %1567, align 8, !tbaa !24
  %1569 = getelementptr inbounds i8, ptr %1568, i64 %.26
  %1570 = load i8, ptr %1569, align 1, !tbaa !26, !range !27, !noundef !28
  %1571 = trunc nuw i8 %1570 to i1
  br i1 %1571, label %1572, label %1588

1572:                                             ; preds = %1566
  %1573 = trunc nuw i8 %.91413 to i1
  br i1 %1573, label %.thread1527, label %1574

1574:                                             ; preds = %1572
  %1575 = getelementptr inbounds i8, ptr %0, i64 56
  %1576 = load double, ptr %1575, align 8, !tbaa !42
  %1577 = getelementptr inbounds i8, ptr %0, i64 120
  %1578 = load ptr, ptr %1577, align 8, !tbaa !24
  %1579 = getelementptr inbounds double, ptr %1578, i64 %.26
  %1580 = load double, ptr %1579, align 8, !tbaa !29
  %1581 = tail call double @llvm.fmuladd.f64(double %1576, double %1580, double %1545)
  %1582 = getelementptr inbounds i8, ptr %0, i64 1408
  %1583 = load ptr, ptr %1582, align 8, !tbaa !24
  %1584 = getelementptr inbounds double, ptr %1583, i64 %.26
  %1585 = load double, ptr %1584, align 8, !tbaa !29
  %1586 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1581, double noundef %1585)
  %1587 = zext i1 %1586 to i8
  br label %1588

1588:                                             ; preds = %1574, %1566
  %.10 = phi i8 [ %.91413, %1566 ], [ %1587, %1574 ]
  %1589 = trunc nuw i8 %.10 to i1
  br i1 %1589, label %.thread1527, label %1590

1590:                                             ; preds = %1588
  %1591 = getelementptr inbounds i8, ptr %0, i64 56
  %1592 = load double, ptr %1591, align 8, !tbaa !42
  %1593 = getelementptr inbounds i8, ptr %0, i64 120
  %1594 = load ptr, ptr %1593, align 8, !tbaa !24
  %1595 = getelementptr inbounds double, ptr %1594, i64 %.26
  %1596 = load double, ptr %1595, align 8, !tbaa !29
  %1597 = fneg double %1592
  %1598 = tail call double @llvm.fmuladd.f64(double %1597, double %1596, double %1545)
  %1599 = load ptr, ptr %1542, align 8, !tbaa !24
  %1600 = getelementptr inbounds double, ptr %1599, i64 %.26
  store double %1598, ptr %1600, align 8, !tbaa !29
  br label %2180

1601:                                             ; preds = %47
  %1602 = getelementptr inbounds i8, ptr %0, i64 272
  %1603 = load double, ptr %1602, align 8, !tbaa !48
  %1604 = getelementptr inbounds i8, ptr %0, i64 1520
  store double %1603, ptr %1604, align 8, !tbaa !58
  %1605 = getelementptr inbounds i8, ptr %0, i64 56
  %1606 = load double, ptr %1605, align 8, !tbaa !42
  %1607 = getelementptr inbounds i8, ptr %0, i64 120
  %1608 = load ptr, ptr %1607, align 8, !tbaa !24
  %1609 = getelementptr inbounds double, ptr %1608, i64 %.01439
  %1610 = load double, ptr %1609, align 8, !tbaa !29
  %1611 = fmul double %1606, -5.000000e-01
  %1612 = tail call double @llvm.fmuladd.f64(double %1611, double %1610, double %.01424)
  %1613 = getelementptr inbounds i8, ptr %0, i64 264
  %1614 = load ptr, ptr %1613, align 8, !tbaa !24
  %1615 = getelementptr inbounds double, ptr %1614, i64 %.01439
  store double %1612, ptr %1615, align 8, !tbaa !29
  br label %2180

1616:                                             ; preds = %47
  %1617 = getelementptr inbounds i8, ptr %0, i64 272
  %1618 = load double, ptr %1617, align 8, !tbaa !48
  %1619 = getelementptr inbounds i8, ptr %0, i64 1528
  store double %1618, ptr %1619, align 8, !tbaa !59
  %1620 = getelementptr inbounds i8, ptr %0, i64 56
  %1621 = load double, ptr %1620, align 8, !tbaa !42
  %1622 = fmul double %1621, 5.000000e-01
  %1623 = getelementptr inbounds i8, ptr %0, i64 120
  %1624 = load ptr, ptr %1623, align 8, !tbaa !24
  %1625 = getelementptr inbounds double, ptr %1624, i64 %.01439
  %1626 = load double, ptr %1625, align 8, !tbaa !29
  %1627 = tail call double @llvm.fmuladd.f64(double %1622, double %1626, double %.01424)
  %1628 = getelementptr inbounds i8, ptr %0, i64 264
  %1629 = load ptr, ptr %1628, align 8, !tbaa !24
  %1630 = getelementptr inbounds double, ptr %1629, i64 %.01439
  store double %1627, ptr %1630, align 8, !tbaa !29
  br label %2180

1631:                                             ; preds = %47
  %1632 = getelementptr inbounds i8, ptr %0, i64 272
  %1633 = load double, ptr %1632, align 8, !tbaa !48
  %1634 = getelementptr inbounds i8, ptr %0, i64 1536
  store double %1633, ptr %1634, align 8, !tbaa !60
  %1635 = getelementptr inbounds i8, ptr %0, i64 56
  %1636 = load double, ptr %1635, align 8, !tbaa !42
  %1637 = getelementptr inbounds i8, ptr %0, i64 120
  %1638 = load ptr, ptr %1637, align 8, !tbaa !24
  %1639 = getelementptr inbounds double, ptr %1638, i64 %.01439
  %1640 = load double, ptr %1639, align 8, !tbaa !29
  %1641 = tail call double @llvm.fmuladd.f64(double %1636, double %1640, double %.01424)
  %1642 = getelementptr inbounds i8, ptr %0, i64 264
  %1643 = load ptr, ptr %1642, align 8, !tbaa !24
  %1644 = getelementptr inbounds double, ptr %1643, i64 %.01439
  store double %1641, ptr %1644, align 8, !tbaa !29
  br label %2180

1645:                                             ; preds = %47
  %1646 = getelementptr inbounds i8, ptr %0, i64 272
  %1647 = load double, ptr %1646, align 8, !tbaa !48
  %1648 = getelementptr inbounds i8, ptr %0, i64 1544
  store double %1647, ptr %1648, align 8, !tbaa !61
  %1649 = getelementptr inbounds i8, ptr %0, i64 1536
  %1650 = load double, ptr %1649, align 8, !tbaa !60
  %1651 = getelementptr inbounds i8, ptr %0, i64 1528
  %1652 = load double, ptr %1651, align 8, !tbaa !59
  %1653 = fsub double %1650, %1652
  %1654 = getelementptr inbounds i8, ptr %0, i64 1520
  %1655 = load double, ptr %1654, align 8, !tbaa !58
  %1656 = fsub double %1647, %1655
  %1657 = fneg double %1656
  %1658 = tail call double @llvm.fmuladd.f64(double %1653, double 8.000000e+00, double %1657)
  %1659 = getelementptr inbounds i8, ptr %0, i64 56
  %1660 = load double, ptr %1659, align 8, !tbaa !42
  %1661 = fmul double %1660, 6.000000e+00
  %1662 = getelementptr inbounds i8, ptr %0, i64 120
  %1663 = load ptr, ptr %1662, align 8, !tbaa !24
  %1664 = getelementptr inbounds double, ptr %1663, i64 %.01439
  %1665 = load double, ptr %1664, align 8, !tbaa !29
  %1666 = fmul double %1661, %1665
  %1667 = fdiv double %1658, %1666
  br label %1741

.thread1527:                                      ; preds = %1572, %1588
  %.101529 = phi i8 [ %.10, %1588 ], [ 1, %1572 ]
  %1668 = getelementptr inbounds i8, ptr %0, i64 56
  %1669 = load double, ptr %1668, align 8, !tbaa !42
  %1670 = getelementptr inbounds i8, ptr %0, i64 120
  %1671 = load ptr, ptr %1670, align 8, !tbaa !24
  %1672 = getelementptr inbounds double, ptr %1671, i64 %.26
  %1673 = load double, ptr %1672, align 8, !tbaa !29
  %1674 = fneg double %1669
  %1675 = tail call double @llvm.fmuladd.f64(double %1674, double %1673, double %1545)
  %1676 = getelementptr inbounds i8, ptr %0, i64 1552
  store double %1675, ptr %1676, align 8, !tbaa !62
  %1677 = load double, ptr %1672, align 8, !tbaa !29
  %1678 = tail call double @llvm.fmuladd.f64(double %1669, double %1677, double %1545)
  %1679 = getelementptr inbounds i8, ptr %0, i64 1560
  store double %1678, ptr %1679, align 8, !tbaa !63
  %1680 = load ptr, ptr %1546, align 8, !tbaa !24
  %1681 = getelementptr inbounds i8, ptr %1680, i64 %.26
  %1682 = load i8, ptr %1681, align 1, !tbaa !26, !range !27, !noundef !28
  %1683 = trunc nuw i8 %1682 to i1
  br i1 %1683, label %1684, label %1694

1684:                                             ; preds = %.thread1527
  %1685 = getelementptr inbounds i8, ptr %0, i64 1344
  %1686 = load ptr, ptr %1685, align 8, !tbaa !24
  %1687 = getelementptr inbounds double, ptr %1686, i64 %.26
  %1688 = load double, ptr %1687, align 8, !tbaa !29
  %1689 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1675, double noundef %1688)
  br i1 %1689, label %1690, label %1694

1690:                                             ; preds = %1684
  %1691 = load ptr, ptr %1685, align 8, !tbaa !24
  %1692 = getelementptr inbounds double, ptr %1691, i64 %.26
  %1693 = load double, ptr %1692, align 8, !tbaa !29
  store double %1693, ptr %1676, align 8, !tbaa !62
  br label %1694

1694:                                             ; preds = %1690, %1684, %.thread1527
  %1695 = load ptr, ptr %1567, align 8, !tbaa !24
  %1696 = getelementptr inbounds i8, ptr %1695, i64 %.26
  %1697 = load i8, ptr %1696, align 1, !tbaa !26, !range !27, !noundef !28
  %1698 = trunc nuw i8 %1697 to i1
  br i1 %1698, label %1699, label %1710

1699:                                             ; preds = %1694
  %1700 = load double, ptr %1679, align 8, !tbaa !63
  %1701 = getelementptr inbounds i8, ptr %0, i64 1408
  %1702 = load ptr, ptr %1701, align 8, !tbaa !24
  %1703 = getelementptr inbounds double, ptr %1702, i64 %.26
  %1704 = load double, ptr %1703, align 8, !tbaa !29
  %1705 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1700, double noundef %1704)
  br i1 %1705, label %1706, label %1710

1706:                                             ; preds = %1699
  %1707 = load ptr, ptr %1701, align 8, !tbaa !24
  %1708 = getelementptr inbounds double, ptr %1707, i64 %.26
  %1709 = load double, ptr %1708, align 8, !tbaa !29
  store double %1709, ptr %1679, align 8, !tbaa !63
  br label %1710

1710:                                             ; preds = %1706, %1699, %1694
  %1711 = load double, ptr %1676, align 8, !tbaa !62
  %1712 = load ptr, ptr %1542, align 8, !tbaa !24
  %1713 = getelementptr inbounds double, ptr %1712, i64 %.26
  store double %1711, ptr %1713, align 8, !tbaa !29
  br label %2180

1714:                                             ; preds = %47
  %1715 = getelementptr inbounds i8, ptr %0, i64 272
  %1716 = load double, ptr %1715, align 8, !tbaa !48
  %1717 = getelementptr inbounds i8, ptr %0, i64 1528
  store double %1716, ptr %1717, align 8, !tbaa !59
  %1718 = getelementptr inbounds i8, ptr %0, i64 1560
  %1719 = load double, ptr %1718, align 8, !tbaa !63
  %1720 = getelementptr inbounds i8, ptr %0, i64 264
  %1721 = load ptr, ptr %1720, align 8, !tbaa !24
  %1722 = getelementptr inbounds double, ptr %1721, i64 %.01439
  store double %1719, ptr %1722, align 8, !tbaa !29
  br label %2180

1723:                                             ; preds = %47
  %1724 = getelementptr inbounds i8, ptr %0, i64 272
  %1725 = load double, ptr %1724, align 8, !tbaa !48
  %1726 = getelementptr inbounds i8, ptr %0, i64 1536
  store double %1725, ptr %1726, align 8, !tbaa !60
  %1727 = getelementptr inbounds i8, ptr %0, i64 1552
  %1728 = load double, ptr %1727, align 8, !tbaa !62
  %1729 = getelementptr inbounds i8, ptr %0, i64 1560
  %1730 = load double, ptr %1729, align 8, !tbaa !63
  %1731 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1728, double noundef %1730)
  br i1 %1731, label %1732, label %1741

1732:                                             ; preds = %1723
  %1733 = load double, ptr %1726, align 8, !tbaa !60
  %1734 = getelementptr inbounds i8, ptr %0, i64 1528
  %1735 = load double, ptr %1734, align 8, !tbaa !59
  %1736 = fsub double %1733, %1735
  %1737 = load double, ptr %1729, align 8, !tbaa !63
  %1738 = load double, ptr %1727, align 8, !tbaa !62
  %1739 = fsub double %1737, %1738
  %1740 = fdiv double %1736, %1739
  br label %1741

1741:                                             ; preds = %1732, %1723, %1645
  %.sink1799.sink = phi double [ %1667, %1645 ], [ %1740, %1732 ], [ 0.000000e+00, %1723 ]
  %.sink1806 = phi i64 [ 4, %1645 ], [ 2, %1732 ], [ 2, %1723 ]
  %1742 = getelementptr inbounds i8, ptr %0, i64 336
  %1743 = load ptr, ptr %1742, align 8, !tbaa !24
  %1744 = getelementptr inbounds double, ptr %1743, i64 %.01439
  store double %.sink1799.sink, ptr %1744, align 8, !tbaa !29
  %1745 = getelementptr inbounds i8, ptr %0, i64 1424
  %1746 = load i64, ptr %1745, align 8, !tbaa !54
  %1747 = add nsw i64 %1746, %.sink1806
  store i64 %1747, ptr %1745, align 8, !tbaa !54
  %1748 = getelementptr inbounds i8, ptr %0, i64 264
  %1749 = load ptr, ptr %1748, align 8, !tbaa !24
  %1750 = getelementptr inbounds double, ptr %1749, i64 %.01439
  store double %.01424, ptr %1750, align 8, !tbaa !29
  %1751 = add nsw i64 %.01439, 1
  br label %1540

1752:                                             ; preds = %1540
  %1753 = getelementptr inbounds i8, ptr %0, i64 1512
  %1754 = load double, ptr %1753, align 8, !tbaa !57
  %1755 = getelementptr inbounds i8, ptr %0, i64 272
  store double %1754, ptr %1755, align 8, !tbaa !48
  %1756 = getelementptr inbounds i8, ptr %0, i64 344
  store i8 0, ptr %1756, align 8, !tbaa !52
  br label %1757

1757:                                             ; preds = %1752, %1529
  %1758 = phi double [ %1754, %1752 ], [ %.pre, %1529 ]
  %1759 = getelementptr inbounds i8, ptr %0, i64 2328
  %1760 = getelementptr inbounds i8, ptr %0, i64 64
  %1761 = getelementptr inbounds i8, ptr %0, i64 8096
  %1762 = getelementptr inbounds i8, ptr %0, i64 1088
  %1763 = getelementptr inbounds i8, ptr %0, i64 1728
  %1764 = load double, ptr %1763, align 8, !tbaa !74
  %1765 = getelementptr inbounds i8, ptr %0, i64 208
  %1766 = getelementptr inbounds i8, ptr %0, i64 272
  %1767 = getelementptr inbounds i8, ptr %0, i64 280
  tail call void @_ZN11alglib_impl31smoothnessmonitorenqueuepoint1uEPNS_17smoothnessmonitorEPKNS_9ae_vectorES4_S4_dS4_dS4_PNS_8ae_stateE(ptr noundef nonnull %1759, ptr noundef nonnull %1760, ptr noundef nonnull %1761, ptr noundef nonnull %1762, double noundef %1764, ptr noundef nonnull %1765, double noundef %1758, ptr noundef nonnull %1767, ptr noundef %1)
  %1768 = getelementptr inbounds i8, ptr %0, i64 2000
  %1769 = load double, ptr %1768, align 8, !tbaa !75
  tail call void @_ZN11alglib_impl12trimfunctionEPdPNS_9ae_vectorEldPNS_8ae_stateE(ptr noundef nonnull %1766, ptr noundef nonnull %1767, i64 noundef %.01460, double noundef %1769, ptr noundef %1)
  %1770 = load double, ptr %1766, align 8, !tbaa !48
  %1771 = getelementptr inbounds i8, ptr %0, i64 1072
  store double %1770, ptr %1771, align 8, !tbaa !70
  %.not1489.not1544 = icmp sgt i64 %.01460, 0
  br i1 %.not1489.not1544, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %1757
  %1772 = getelementptr inbounds i8, ptr %0, i64 336
  %1773 = getelementptr inbounds i8, ptr %0, i64 928
  %1774 = getelementptr inbounds i8, ptr %0, i64 992
  %1775 = getelementptr inbounds i8, ptr %0, i64 1216
  %1776 = getelementptr inbounds i8, ptr %0, i64 864
  %1777 = getelementptr inbounds i8, ptr %0, i64 1344
  %1778 = getelementptr inbounds i8, ptr %0, i64 1280
  %1779 = getelementptr inbounds i8, ptr %0, i64 1408
  br label %1780

1780:                                             ; preds = %.lr.ph, %1822
  %.271545 = phi i64 [ 0, %.lr.ph ], [ %1823, %1822 ]
  %1781 = load ptr, ptr %1772, align 8, !tbaa !24
  %1782 = getelementptr inbounds double, ptr %1781, i64 %.271545
  %1783 = load double, ptr %1782, align 8, !tbaa !29
  %1784 = load ptr, ptr %1773, align 8, !tbaa !24
  %1785 = getelementptr inbounds double, ptr %1784, i64 %.271545
  store double %1783, ptr %1785, align 8, !tbaa !29
  %1786 = load ptr, ptr %1772, align 8, !tbaa !24
  %1787 = getelementptr inbounds double, ptr %1786, i64 %.271545
  %1788 = load double, ptr %1787, align 8, !tbaa !29
  %1789 = load ptr, ptr %1774, align 8, !tbaa !24
  %1790 = getelementptr inbounds double, ptr %1789, i64 %.271545
  store double %1788, ptr %1790, align 8, !tbaa !29
  %1791 = load ptr, ptr %1775, align 8, !tbaa !24
  %1792 = getelementptr inbounds i8, ptr %1791, i64 %.271545
  %1793 = load i8, ptr %1792, align 1, !tbaa !26, !range !27, !noundef !28
  %1794 = trunc nuw i8 %1793 to i1
  br i1 %1794, label %1795, label %1806

1795:                                             ; preds = %1780
  %1796 = load ptr, ptr %1776, align 8, !tbaa !24
  %1797 = getelementptr inbounds double, ptr %1796, i64 %.271545
  %1798 = load double, ptr %1797, align 8, !tbaa !29
  %1799 = load ptr, ptr %1777, align 8, !tbaa !24
  %1800 = getelementptr inbounds double, ptr %1799, i64 %.271545
  %1801 = load double, ptr %1800, align 8, !tbaa !29
  %1802 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1798, double noundef %1801)
  br i1 %1802, label %1803, label %1806

1803:                                             ; preds = %1795
  %1804 = load ptr, ptr %1774, align 8, !tbaa !24
  %1805 = getelementptr inbounds double, ptr %1804, i64 %.271545
  store double 0.000000e+00, ptr %1805, align 8, !tbaa !29
  br label %1806

1806:                                             ; preds = %1803, %1795, %1780
  %1807 = load ptr, ptr %1778, align 8, !tbaa !24
  %1808 = getelementptr inbounds i8, ptr %1807, i64 %.271545
  %1809 = load i8, ptr %1808, align 1, !tbaa !26, !range !27, !noundef !28
  %1810 = trunc nuw i8 %1809 to i1
  br i1 %1810, label %1811, label %1822

1811:                                             ; preds = %1806
  %1812 = load ptr, ptr %1776, align 8, !tbaa !24
  %1813 = getelementptr inbounds double, ptr %1812, i64 %.271545
  %1814 = load double, ptr %1813, align 8, !tbaa !29
  %1815 = load ptr, ptr %1779, align 8, !tbaa !24
  %1816 = getelementptr inbounds double, ptr %1815, i64 %.271545
  %1817 = load double, ptr %1816, align 8, !tbaa !29
  %1818 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %1814, double noundef %1817)
  br i1 %1818, label %1819, label %1822

1819:                                             ; preds = %1811
  %1820 = load ptr, ptr %1774, align 8, !tbaa !24
  %1821 = getelementptr inbounds double, ptr %1820, i64 %.271545
  store double 0.000000e+00, ptr %1821, align 8, !tbaa !29
  br label %1822

1822:                                             ; preds = %1806, %1811, %1819
  %1823 = add nuw nsw i64 %.271545, 1
  %exitcond.not = icmp eq i64 %1823, %.01460
  br i1 %exitcond.not, label %._crit_edge, label %1780, !llvm.loop !92

._crit_edge:                                      ; preds = %1822, %1757
  %1824 = getelementptr inbounds i8, ptr %0, i64 808
  %1825 = getelementptr inbounds i8, ptr %0, i64 936
  %1826 = getelementptr inbounds i8, ptr %0, i64 1736
  %1827 = load double, ptr %1826, align 8, !tbaa !68
  %1828 = load double, ptr @_ZN11alglib_implL10minbc_gtolE, align 8, !tbaa !29
  %1829 = getelementptr inbounds i8, ptr %0, i64 1712
  %1830 = getelementptr inbounds i8, ptr %0, i64 1744
  %1831 = getelementptr inbounds i8, ptr %0, i64 1808
  %1832 = getelementptr inbounds i8, ptr %0, i64 1720
  call void @_ZN11alglib_impl6mcsrchElPNS_9ae_vectorEPdS1_PKS0_S2_ddPlS5_S1_PNS_11linminstateES5_PNS_8ae_stateE(i64 noundef %.01460, ptr noundef nonnull %1824, ptr noundef nonnull %1771, ptr noundef nonnull %1825, ptr noundef nonnull %1762, ptr noundef nonnull %1763, double noundef %1827, double noundef %1828, ptr noundef nonnull %5, ptr noundef nonnull %1829, ptr noundef nonnull %1830, ptr noundef nonnull %1831, ptr noundef nonnull %1832, ptr noundef %1)
  br label %1469

1833:                                             ; preds = %1469
  %1834 = getelementptr inbounds i8, ptr %0, i64 2328
  call void @_ZN11alglib_impl35smoothnessmonitorfinalizelinesearchEPNS_17smoothnessmonitorEPNS_8ae_stateE(ptr noundef nonnull %1834, ptr noundef %1)
  %.not1508.not1627 = icmp sgt i64 %.01460, 0
  br i1 %.not1508.not1627, label %.lr.ph1630, label %._crit_edge1631

.lr.ph1630:                                       ; preds = %1833
  %1835 = getelementptr inbounds i8, ptr %0, i64 1216
  %1836 = getelementptr inbounds i8, ptr %0, i64 864
  %1837 = getelementptr inbounds i8, ptr %0, i64 1344
  %1838 = getelementptr inbounds i8, ptr %0, i64 1280
  %1839 = getelementptr inbounds i8, ptr %0, i64 1408
  br label %1840

1840:                                             ; preds = %.lr.ph1630, %1878
  %.281628 = phi i64 [ 0, %.lr.ph1630 ], [ %1879, %1878 ]
  %1841 = load ptr, ptr %1835, align 8, !tbaa !24
  %1842 = getelementptr inbounds i8, ptr %1841, i64 %.281628
  %1843 = load i8, ptr %1842, align 1, !tbaa !26, !range !27, !noundef !28
  %1844 = trunc nuw i8 %1843 to i1
  br i1 %1844, label %1845, label %1859

1845:                                             ; preds = %1840
  %1846 = load ptr, ptr %1836, align 8, !tbaa !24
  %1847 = getelementptr inbounds double, ptr %1846, i64 %.281628
  %1848 = load double, ptr %1847, align 8, !tbaa !29
  %1849 = load ptr, ptr %1837, align 8, !tbaa !24
  %1850 = getelementptr inbounds double, ptr %1849, i64 %.281628
  %1851 = load double, ptr %1850, align 8, !tbaa !29
  %1852 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1848, double noundef %1851)
  br i1 %1852, label %1853, label %1859

1853:                                             ; preds = %1845
  %1854 = load ptr, ptr %1837, align 8, !tbaa !24
  %1855 = getelementptr inbounds double, ptr %1854, i64 %.281628
  %1856 = load double, ptr %1855, align 8, !tbaa !29
  %1857 = load ptr, ptr %1836, align 8, !tbaa !24
  %1858 = getelementptr inbounds double, ptr %1857, i64 %.281628
  store double %1856, ptr %1858, align 8, !tbaa !29
  br label %1859

1859:                                             ; preds = %1853, %1845, %1840
  %1860 = load ptr, ptr %1838, align 8, !tbaa !24
  %1861 = getelementptr inbounds i8, ptr %1860, i64 %.281628
  %1862 = load i8, ptr %1861, align 1, !tbaa !26, !range !27, !noundef !28
  %1863 = trunc nuw i8 %1862 to i1
  br i1 %1863, label %1864, label %1878

1864:                                             ; preds = %1859
  %1865 = load ptr, ptr %1836, align 8, !tbaa !24
  %1866 = getelementptr inbounds double, ptr %1865, i64 %.281628
  %1867 = load double, ptr %1866, align 8, !tbaa !29
  %1868 = load ptr, ptr %1839, align 8, !tbaa !24
  %1869 = getelementptr inbounds double, ptr %1868, i64 %.281628
  %1870 = load double, ptr %1869, align 8, !tbaa !29
  %1871 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %1867, double noundef %1870)
  br i1 %1871, label %1872, label %1878

1872:                                             ; preds = %1864
  %1873 = load ptr, ptr %1839, align 8, !tbaa !24
  %1874 = getelementptr inbounds double, ptr %1873, i64 %.281628
  %1875 = load double, ptr %1874, align 8, !tbaa !29
  %1876 = load ptr, ptr %1836, align 8, !tbaa !24
  %1877 = getelementptr inbounds double, ptr %1876, i64 %.281628
  store double %1875, ptr %1877, align 8, !tbaa !29
  br label %1878

1878:                                             ; preds = %1859, %1864, %1872
  %1879 = add nuw nsw i64 %.281628, 1
  %exitcond1739.not = icmp eq i64 %1879, %.01460
  br i1 %exitcond1739.not, label %._crit_edge1631, label %1840, !llvm.loop !93

._crit_edge1631:                                  ; preds = %1878, %1833
  %1880 = add nsw i64 %.01460, -1
  %1881 = getelementptr inbounds i8, ptr %0, i64 2168
  %1882 = load ptr, ptr %1881, align 8, !tbaa !24
  %1883 = getelementptr inbounds i8, ptr %0, i64 2304
  %1884 = load i64, ptr %1883, align 8, !tbaa !85
  %1885 = getelementptr inbounds ptr, ptr %1882, i64 %1884
  %1886 = load ptr, ptr %1885, align 8, !tbaa !44
  %1887 = getelementptr inbounds i8, ptr %0, i64 672
  %1888 = load ptr, ptr %1887, align 8, !tbaa !24
  %1889 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1880)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %1886, i64 noundef 1, ptr noundef %1888, i64 noundef 1, i64 noundef %1889)
  %1890 = getelementptr inbounds i8, ptr %0, i64 2088
  %1891 = load ptr, ptr %1890, align 8, !tbaa !24
  %1892 = load i64, ptr %1883, align 8, !tbaa !85
  %1893 = getelementptr inbounds ptr, ptr %1891, i64 %1892
  %1894 = load ptr, ptr %1893, align 8, !tbaa !44
  %1895 = getelementptr inbounds i8, ptr %0, i64 800
  %1896 = load ptr, ptr %1895, align 8, !tbaa !24
  %1897 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1880)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %1894, i64 noundef 1, ptr noundef %1896, i64 noundef 1, i64 noundef %1897)
  %1898 = load ptr, ptr %1881, align 8, !tbaa !24
  %1899 = load i64, ptr %1883, align 8, !tbaa !85
  %1900 = getelementptr inbounds ptr, ptr %1898, i64 %1899
  %1901 = load ptr, ptr %1900, align 8, !tbaa !44
  %1902 = getelementptr inbounds i8, ptr %0, i64 864
  %1903 = load ptr, ptr %1902, align 8, !tbaa !24
  %1904 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1880)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %1901, i64 noundef 1, ptr noundef %1903, i64 noundef 1, i64 noundef %1904)
  %1905 = load ptr, ptr %1890, align 8, !tbaa !24
  %1906 = load i64, ptr %1883, align 8, !tbaa !85
  %1907 = getelementptr inbounds ptr, ptr %1905, i64 %1906
  %1908 = load ptr, ptr %1907, align 8, !tbaa !44
  %1909 = getelementptr inbounds i8, ptr %0, i64 992
  %1910 = load ptr, ptr %1909, align 8, !tbaa !24
  %1911 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1880)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %1908, i64 noundef 1, ptr noundef %1910, i64 noundef 1, i64 noundef %1911)
  %1912 = getelementptr inbounds i8, ptr %0, i64 1072
  %1913 = load double, ptr %1912, align 8, !tbaa !70
  br i1 %.not1508.not1627, label %.lr.ph1636, label %._crit_edge1637

.lr.ph1636:                                       ; preds = %._crit_edge1631
  %1914 = getelementptr inbounds i8, ptr %0, i64 928
  %1915 = load ptr, ptr %1914, align 8, !tbaa !24
  %1916 = add nsw i64 %.01460, -1
  %xtraiter1855 = and i64 %.01460, 3
  %1917 = icmp ult i64 %1916, 3
  br i1 %1917, label %._crit_edge1637.loopexit.unr-lcssa, label %.lr.ph1636.new

.lr.ph1636.new:                                   ; preds = %.lr.ph1636
  %unroll_iter1859 = and i64 %.01460, 9223372036854775804
  br label %1918

1918:                                             ; preds = %1918, %.lr.ph1636.new
  %.1114351634 = phi double [ %1913, %.lr.ph1636.new ], [ %1933, %1918 ]
  %.291633 = phi i64 [ 0, %.lr.ph1636.new ], [ %1934, %1918 ]
  %niter1860 = phi i64 [ 0, %.lr.ph1636.new ], [ %niter1860.next.3, %1918 ]
  %1919 = getelementptr inbounds double, ptr %1915, i64 %.291633
  %1920 = load double, ptr %1919, align 8, !tbaa !29
  %1921 = call double @llvm.fmuladd.f64(double %.1114351634, double 1.000000e-01, double %1920)
  %1922 = or disjoint i64 %.291633, 1
  %1923 = getelementptr inbounds double, ptr %1915, i64 %1922
  %1924 = load double, ptr %1923, align 8, !tbaa !29
  %1925 = call double @llvm.fmuladd.f64(double %1921, double 1.000000e-01, double %1924)
  %1926 = or disjoint i64 %.291633, 2
  %1927 = getelementptr inbounds double, ptr %1915, i64 %1926
  %1928 = load double, ptr %1927, align 8, !tbaa !29
  %1929 = call double @llvm.fmuladd.f64(double %1925, double 1.000000e-01, double %1928)
  %1930 = or disjoint i64 %.291633, 3
  %1931 = getelementptr inbounds double, ptr %1915, i64 %1930
  %1932 = load double, ptr %1931, align 8, !tbaa !29
  %1933 = call double @llvm.fmuladd.f64(double %1929, double 1.000000e-01, double %1932)
  %1934 = add nuw nsw i64 %.291633, 4
  %niter1860.next.3 = add i64 %niter1860, 4
  %niter1860.ncmp.3 = icmp eq i64 %niter1860.next.3, %unroll_iter1859
  br i1 %niter1860.ncmp.3, label %._crit_edge1637.loopexit.unr-lcssa, label %1918, !llvm.loop !94

._crit_edge1637.loopexit.unr-lcssa:               ; preds = %1918, %.lr.ph1636
  %.lcssa1830.ph = phi double [ poison, %.lr.ph1636 ], [ %1933, %1918 ]
  %.1114351634.unr = phi double [ %1913, %.lr.ph1636 ], [ %1933, %1918 ]
  %.291633.unr = phi i64 [ 0, %.lr.ph1636 ], [ %1934, %1918 ]
  %lcmp.mod1857.not = icmp eq i64 %xtraiter1855, 0
  br i1 %lcmp.mod1857.not, label %._crit_edge1637, label %.epil.preheader1854

.epil.preheader1854:                              ; preds = %._crit_edge1637.loopexit.unr-lcssa, %.epil.preheader1854
  %.1114351634.epil = phi double [ %1937, %.epil.preheader1854 ], [ %.1114351634.unr, %._crit_edge1637.loopexit.unr-lcssa ]
  %.291633.epil = phi i64 [ %1938, %.epil.preheader1854 ], [ %.291633.unr, %._crit_edge1637.loopexit.unr-lcssa ]
  %epil.iter1856 = phi i64 [ %epil.iter1856.next, %.epil.preheader1854 ], [ 0, %._crit_edge1637.loopexit.unr-lcssa ]
  %1935 = getelementptr inbounds double, ptr %1915, i64 %.291633.epil
  %1936 = load double, ptr %1935, align 8, !tbaa !29
  %1937 = call double @llvm.fmuladd.f64(double %.1114351634.epil, double 1.000000e-01, double %1936)
  %1938 = add nuw nsw i64 %.291633.epil, 1
  %epil.iter1856.next = add i64 %epil.iter1856, 1
  %epil.iter1856.cmp.not = icmp eq i64 %epil.iter1856.next, %xtraiter1855
  br i1 %epil.iter1856.cmp.not, label %._crit_edge1637, label %.epil.preheader1854, !llvm.loop !95

._crit_edge1637:                                  ; preds = %._crit_edge1637.loopexit.unr-lcssa, %.epil.preheader1854, %._crit_edge1631
  %.29.lcssa = phi i64 [ 0, %._crit_edge1631 ], [ %.01460, %.epil.preheader1854 ], [ %.01460, %._crit_edge1637.loopexit.unr-lcssa ]
  %.111435.lcssa = phi double [ %1913, %._crit_edge1631 ], [ %.lcssa1830.ph, %._crit_edge1637.loopexit.unr-lcssa ], [ %1937, %.epil.preheader1854 ]
  %1939 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.111435.lcssa, ptr noundef %1)
  br i1 %1939, label %1942, label %1940

1940:                                             ; preds = %._crit_edge1637
  %1941 = getelementptr inbounds i8, ptr %0, i64 1440
  store i64 -8, ptr %1941, align 8, !tbaa !35
  br label %2220

1942:                                             ; preds = %._crit_edge1637
  %1943 = getelementptr inbounds i8, ptr %0, i64 347
  %1944 = load i8, ptr %1943, align 1, !tbaa !36, !range !27, !noundef !28
  %1945 = trunc nuw i8 %1944 to i1
  br i1 %1945, label %1946, label %1948

1946:                                             ; preds = %1942
  %1947 = getelementptr inbounds i8, ptr %0, i64 1440
  store i64 8, ptr %1947, align 8, !tbaa !35
  br label %2220

1948:                                             ; preds = %1942
  %1949 = load i64, ptr %5, align 8, !tbaa !25
  %.not1510 = icmp eq i64 %1949, 1
  br i1 %.not1510, label %.preheader1534, label %2175

.preheader1534:                                   ; preds = %1948
  br i1 %.not1508.not1627, label %.lr.ph1643, label %._crit_edge1644

.lr.ph1643:                                       ; preds = %.preheader1534
  %1950 = getelementptr inbounds i8, ptr %0, i64 1216
  %1951 = getelementptr inbounds i8, ptr %0, i64 1344
  %1952 = getelementptr inbounds i8, ptr %0, i64 1280
  %1953 = getelementptr inbounds i8, ptr %0, i64 1408
  br label %1954

1954:                                             ; preds = %.lr.ph1643, %1996
  %.413771642 = phi i8 [ 0, %.lr.ph1643 ], [ %.61379, %1996 ]
  %.301641 = phi i64 [ 0, %.lr.ph1643 ], [ %1997, %1996 ]
  %1955 = load ptr, ptr %1950, align 8, !tbaa !24
  %1956 = getelementptr inbounds i8, ptr %1955, i64 %.301641
  %1957 = load i8, ptr %1956, align 1, !tbaa !26, !range !27, !noundef !28
  %1958 = trunc nuw i8 %1957 to i1
  br i1 %1958, label %1959, label %1975

1959:                                             ; preds = %1954
  %1960 = load ptr, ptr %1902, align 8, !tbaa !24
  %1961 = getelementptr inbounds double, ptr %1960, i64 %.301641
  %1962 = load double, ptr %1961, align 8, !tbaa !29
  %1963 = load ptr, ptr %1951, align 8, !tbaa !24
  %1964 = getelementptr inbounds double, ptr %1963, i64 %.301641
  %1965 = load double, ptr %1964, align 8, !tbaa !29
  %1966 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1962, double noundef %1965)
  br i1 %1966, label %1967, label %1975

1967:                                             ; preds = %1959
  %1968 = load ptr, ptr %1902, align 8, !tbaa !24
  %1969 = getelementptr inbounds double, ptr %1968, i64 %.301641
  %1970 = load double, ptr %1969, align 8, !tbaa !29
  %1971 = load ptr, ptr %1887, align 8, !tbaa !24
  %1972 = getelementptr inbounds double, ptr %1971, i64 %.301641
  %1973 = load double, ptr %1972, align 8, !tbaa !29
  %1974 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1970, double noundef %1973)
  %spec.select = select i1 %1974, i8 1, i8 %.413771642
  br label %1975

1975:                                             ; preds = %1967, %1959, %1954
  %.51378 = phi i8 [ %.413771642, %1959 ], [ %.413771642, %1954 ], [ %spec.select, %1967 ]
  %1976 = load ptr, ptr %1952, align 8, !tbaa !24
  %1977 = getelementptr inbounds i8, ptr %1976, i64 %.301641
  %1978 = load i8, ptr %1977, align 1, !tbaa !26, !range !27, !noundef !28
  %1979 = trunc nuw i8 %1978 to i1
  br i1 %1979, label %1980, label %1996

1980:                                             ; preds = %1975
  %1981 = load ptr, ptr %1902, align 8, !tbaa !24
  %1982 = getelementptr inbounds double, ptr %1981, i64 %.301641
  %1983 = load double, ptr %1982, align 8, !tbaa !29
  %1984 = load ptr, ptr %1953, align 8, !tbaa !24
  %1985 = getelementptr inbounds double, ptr %1984, i64 %.301641
  %1986 = load double, ptr %1985, align 8, !tbaa !29
  %1987 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1983, double noundef %1986)
  br i1 %1987, label %1988, label %1996

1988:                                             ; preds = %1980
  %1989 = load ptr, ptr %1902, align 8, !tbaa !24
  %1990 = getelementptr inbounds double, ptr %1989, i64 %.301641
  %1991 = load double, ptr %1990, align 8, !tbaa !29
  %1992 = load ptr, ptr %1887, align 8, !tbaa !24
  %1993 = getelementptr inbounds double, ptr %1992, i64 %.301641
  %1994 = load double, ptr %1993, align 8, !tbaa !29
  %1995 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1991, double noundef %1994)
  %spec.select1521 = select i1 %1995, i8 1, i8 %.51378
  br label %1996

1996:                                             ; preds = %1988, %1975, %1980
  %.61379 = phi i8 [ %.51378, %1980 ], [ %.51378, %1975 ], [ %spec.select1521, %1988 ]
  %1997 = add nuw nsw i64 %.301641, 1
  %exitcond1741.not = icmp eq i64 %1997, %.01460
  br i1 %exitcond1741.not, label %._crit_edge1644, label %1954, !llvm.loop !96

._crit_edge1644:                                  ; preds = %1996, %.preheader1534
  %.30.lcssa = phi i64 [ 0, %.preheader1534 ], [ %.01460, %1996 ]
  %.41377.lcssa = phi i8 [ 0, %.preheader1534 ], [ %.61379, %1996 ]
  %1998 = getelementptr inbounds i8, ptr %0, i64 1064
  %1999 = load double, ptr %1998, align 8, !tbaa !53
  %2000 = getelementptr inbounds i8, ptr %0, i64 1080
  store double %1999, ptr %2000, align 8, !tbaa !79
  %2001 = load double, ptr %1912, align 8, !tbaa !70
  store double %2001, ptr %1998, align 8, !tbaa !53
  %2002 = getelementptr inbounds i8, ptr %0, i64 1056
  %2003 = load ptr, ptr %2002, align 8, !tbaa !24
  %2004 = load ptr, ptr %1887, align 8, !tbaa !24
  %2005 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1880)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2003, i64 noundef 1, ptr noundef %2004, i64 noundef 1, i64 noundef %2005)
  %2006 = load ptr, ptr %1887, align 8, !tbaa !24
  %2007 = load ptr, ptr %1902, align 8, !tbaa !24
  %2008 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1880)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2006, i64 noundef 1, ptr noundef %2007, i64 noundef 1, i64 noundef %2008)
  %2009 = load ptr, ptr %1895, align 8, !tbaa !24
  %2010 = load ptr, ptr %1909, align 8, !tbaa !24
  %2011 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1880)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2009, i64 noundef 1, ptr noundef %2010, i64 noundef 1, i64 noundef %2011)
  %2012 = getelementptr inbounds i8, ptr %0, i64 736
  %2013 = load ptr, ptr %2012, align 8, !tbaa !24
  %2014 = getelementptr inbounds i8, ptr %0, i64 928
  %2015 = load ptr, ptr %2014, align 8, !tbaa !24
  %2016 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1880)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2013, i64 noundef 1, ptr noundef %2015, i64 noundef 1, i64 noundef %2016)
  %2017 = getelementptr inbounds i8, ptr %0, i64 40
  %2018 = load i8, ptr %2017, align 8, !tbaa !55, !range !27, !noundef !28
  %2019 = trunc nuw i8 %2018 to i1
  br i1 %2019, label %2020, label %2028

2020:                                             ; preds = %._crit_edge1644
  %2021 = getelementptr inbounds i8, ptr %0, i64 264
  %2022 = load ptr, ptr %2021, align 8, !tbaa !24
  %2023 = load ptr, ptr %1887, align 8, !tbaa !24
  %2024 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1880)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2022, i64 noundef 1, ptr noundef %2023, i64 noundef 1, i64 noundef %2024)
  call void @_ZN11alglib_implL24minbc_clearrequestfieldsEPNS_10minbcstateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %2025 = getelementptr inbounds i8, ptr %0, i64 346
  store i8 1, ptr %2025, align 2, !tbaa !56
  br label %2180

2026:                                             ; preds = %47
  %2027 = getelementptr inbounds i8, ptr %0, i64 346
  store i8 0, ptr %2027, align 2, !tbaa !56
  br label %2028

2028:                                             ; preds = %._crit_edge1644, %2026
  %.81472 = phi double [ %.71471, %._crit_edge1644 ], [ %.01464, %2026 ]
  %.31 = phi i64 [ %.30.lcssa, %._crit_edge1644 ], [ %.01439, %2026 ]
  %.11 = phi i8 [ %.81412, %._crit_edge1644 ], [ %.01404, %2026 ]
  %.41401 = phi i64 [ %.31400, %._crit_edge1644 ], [ %.01397, %2026 ]
  %.71394 = phi double [ %.61393, %._crit_edge1644 ], [ %.01387, %2026 ]
  %.71380 = phi i8 [ %.41377.lcssa, %._crit_edge1644 ], [ %.01373, %2026 ]
  %.6 = phi double [ %.5, %._crit_edge1644 ], [ %.0, %2026 ]
  %2029 = getelementptr inbounds i8, ptr %0, i64 1416
  %2030 = load i64, ptr %2029, align 8, !tbaa !72
  %2031 = add nsw i64 %2030, 1
  store i64 %2031, ptr %2029, align 8, !tbaa !72
  %2032 = getelementptr inbounds i8, ptr %0, i64 2304
  %2033 = load i64, ptr %2032, align 8, !tbaa !85
  %2034 = icmp eq i64 %2033, %.01456
  br i1 %2034, label %.preheader1533, label %2076

.preheader1533:                                   ; preds = %2028
  %.not1512.not1647 = icmp sgt i64 %.01456, 0
  br i1 %.not1512.not1647, label %.lr.ph1649, label %.loopexit1532

.lr.ph1649:                                       ; preds = %.preheader1533
  %2035 = getelementptr inbounds i8, ptr %0, i64 2168
  %2036 = add nsw i64 %.01460, -1
  %2037 = getelementptr inbounds i8, ptr %0, i64 2088
  br label %2042

.preheader1531:                                   ; preds = %2042
  %.not15131651 = icmp slt i64 %2056, 2
  br i1 %.not15131651, label %.loopexit1532, label %.lr.ph1653

.lr.ph1653:                                       ; preds = %.preheader1531
  %2038 = getelementptr inbounds i8, ptr %0, i64 2232
  %2039 = getelementptr inbounds i8, ptr %0, i64 2296
  %2040 = add nsw i64 %2056, -1
  %xtraiter1862 = and i64 %2040, 1
  %2041 = icmp eq i64 %2056, 2
  br i1 %2041, label %.loopexit1532.loopexit.unr-lcssa, label %.lr.ph1653.new

.lr.ph1653.new:                                   ; preds = %.lr.ph1653
  %unroll_iter1865 = and i64 %2040, -2
  br label %2057

2042:                                             ; preds = %.lr.ph1649, %2042
  %.321648 = phi i64 [ 0, %.lr.ph1649 ], [ %2046, %2042 ]
  %2043 = load ptr, ptr %2035, align 8, !tbaa !24
  %2044 = getelementptr inbounds ptr, ptr %2043, i64 %.321648
  %2045 = load ptr, ptr %2044, align 8, !tbaa !44
  %2046 = add nuw nsw i64 %.321648, 1
  %2047 = getelementptr inbounds ptr, ptr %2043, i64 %2046
  %2048 = load ptr, ptr %2047, align 8, !tbaa !44
  %2049 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2036)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2045, i64 noundef 1, ptr noundef %2048, i64 noundef 1, i64 noundef %2049)
  %2050 = load ptr, ptr %2037, align 8, !tbaa !24
  %2051 = getelementptr inbounds ptr, ptr %2050, i64 %.321648
  %2052 = load ptr, ptr %2051, align 8, !tbaa !44
  %2053 = getelementptr inbounds ptr, ptr %2050, i64 %2046
  %2054 = load ptr, ptr %2053, align 8, !tbaa !44
  %2055 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2036)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2052, i64 noundef 1, ptr noundef %2054, i64 noundef 1, i64 noundef %2055)
  %2056 = load i64, ptr %2032, align 8, !tbaa !85
  %.not1512.not = icmp slt i64 %2046, %2056
  br i1 %.not1512.not, label %2042, label %.preheader1531, !llvm.loop !97

2057:                                             ; preds = %2057, %.lr.ph1653.new
  %.331652 = phi i64 [ 0, %.lr.ph1653.new ], [ %2068, %2057 ]
  %niter1866 = phi i64 [ 0, %.lr.ph1653.new ], [ %niter1866.next.1, %2057 ]
  %2058 = load ptr, ptr %2038, align 8, !tbaa !24
  %2059 = or disjoint i64 %.331652, 1
  %2060 = getelementptr inbounds double, ptr %2058, i64 %2059
  %2061 = load double, ptr %2060, align 8, !tbaa !29
  %2062 = getelementptr inbounds double, ptr %2058, i64 %.331652
  store double %2061, ptr %2062, align 8, !tbaa !29
  %2063 = load ptr, ptr %2039, align 8, !tbaa !24
  %2064 = getelementptr inbounds double, ptr %2063, i64 %2059
  %2065 = load double, ptr %2064, align 8, !tbaa !29
  %2066 = getelementptr inbounds double, ptr %2063, i64 %.331652
  store double %2065, ptr %2066, align 8, !tbaa !29
  %2067 = load ptr, ptr %2038, align 8, !tbaa !24
  %2068 = add nuw nsw i64 %.331652, 2
  %2069 = getelementptr inbounds double, ptr %2067, i64 %2068
  %2070 = load double, ptr %2069, align 8, !tbaa !29
  %2071 = getelementptr inbounds double, ptr %2067, i64 %2059
  store double %2070, ptr %2071, align 8, !tbaa !29
  %2072 = load ptr, ptr %2039, align 8, !tbaa !24
  %2073 = getelementptr inbounds double, ptr %2072, i64 %2068
  %2074 = load double, ptr %2073, align 8, !tbaa !29
  %2075 = getelementptr inbounds double, ptr %2072, i64 %2059
  store double %2074, ptr %2075, align 8, !tbaa !29
  %niter1866.next.1 = add i64 %niter1866, 2
  %niter1866.ncmp.1 = icmp eq i64 %niter1866.next.1, %unroll_iter1865
  br i1 %niter1866.ncmp.1, label %.loopexit1532.loopexit.unr-lcssa, label %2057, !llvm.loop !98

2076:                                             ; preds = %2028
  %2077 = add nsw i64 %2033, 1
  store i64 %2077, ptr %2032, align 8, !tbaa !85
  br label %.loopexit1532

.loopexit1532.loopexit.unr-lcssa:                 ; preds = %2057, %.lr.ph1653
  %.331652.unr = phi i64 [ 0, %.lr.ph1653 ], [ %2068, %2057 ]
  %lcmp.mod1864.not = icmp eq i64 %xtraiter1862, 0
  br i1 %lcmp.mod1864.not, label %.loopexit1532, label %.loopexit1532.loopexit.epilog-lcssa

.loopexit1532.loopexit.epilog-lcssa:              ; preds = %.loopexit1532.loopexit.unr-lcssa
  %2078 = load ptr, ptr %2038, align 8, !tbaa !24
  %2079 = add nuw nsw i64 %.331652.unr, 1
  %2080 = getelementptr inbounds double, ptr %2078, i64 %2079
  %2081 = load double, ptr %2080, align 8, !tbaa !29
  %2082 = getelementptr inbounds double, ptr %2078, i64 %.331652.unr
  store double %2081, ptr %2082, align 8, !tbaa !29
  %2083 = load ptr, ptr %2039, align 8, !tbaa !24
  %2084 = getelementptr inbounds double, ptr %2083, i64 %2079
  %2085 = load double, ptr %2084, align 8, !tbaa !29
  %2086 = getelementptr inbounds double, ptr %2083, i64 %.331652.unr
  store double %2085, ptr %2086, align 8, !tbaa !29
  br label %.loopexit1532

.loopexit1532:                                    ; preds = %.loopexit1532.loopexit.epilog-lcssa, %.loopexit1532.loopexit.unr-lcssa, %.preheader1533, %.preheader1531, %2076
  %2087 = phi i64 [ %2077, %2076 ], [ %2056, %.preheader1531 ], [ %.01456, %.preheader1533 ], [ %2056, %.loopexit1532.loopexit.unr-lcssa ], [ %2056, %.loopexit1532.loopexit.epilog-lcssa ]
  %.34 = phi i64 [ %.31, %2076 ], [ 0, %.preheader1531 ], [ 0, %.preheader1533 ], [ %2040, %.loopexit1532.loopexit.unr-lcssa ], [ %2040, %.loopexit1532.loopexit.epilog-lcssa ]
  %2088 = getelementptr inbounds i8, ptr %0, i64 2088
  %2089 = load ptr, ptr %2088, align 8, !tbaa !24
  %2090 = add nsw i64 %2087, -1
  %2091 = getelementptr inbounds ptr, ptr %2089, i64 %2090
  %2092 = load ptr, ptr %2091, align 8, !tbaa !44
  %2093 = getelementptr inbounds i8, ptr %0, i64 2168
  %2094 = load ptr, ptr %2093, align 8, !tbaa !24
  %2095 = getelementptr inbounds ptr, ptr %2094, i64 %2090
  %2096 = load ptr, ptr %2095, align 8, !tbaa !44
  %2097 = add nsw i64 %.01460, -1
  %2098 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2097)
  %2099 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %2092, i64 noundef 1, ptr noundef %2096, i64 noundef 1, i64 noundef %2098)
  %2100 = load ptr, ptr %2088, align 8, !tbaa !24
  %2101 = load i64, ptr %2032, align 8, !tbaa !85
  %2102 = getelementptr ptr, ptr %2100, i64 %2101
  %2103 = getelementptr i8, ptr %2102, i64 -8
  %2104 = load ptr, ptr %2103, align 8, !tbaa !44
  %2105 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2097)
  %2106 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %2104, i64 noundef 1, ptr noundef %2104, i64 noundef 1, i64 noundef %2105)
  %2107 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2099, double noundef 0.000000e+00)
  br i1 %2107, label %2175, label %2108

2108:                                             ; preds = %.loopexit1532
  %2109 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2106, double noundef 0.000000e+00)
  br i1 %2109, label %2175, label %2110

2110:                                             ; preds = %2108
  %2111 = fdiv double 1.000000e+00, %2099
  %2112 = getelementptr inbounds i8, ptr %0, i64 2232
  %2113 = load ptr, ptr %2112, align 8, !tbaa !24
  %2114 = load i64, ptr %2032, align 8, !tbaa !85
  %2115 = getelementptr double, ptr %2113, i64 %2114
  %2116 = getelementptr i8, ptr %2115, i64 -8
  store double %2111, ptr %2116, align 8, !tbaa !29
  %2117 = icmp sle i64 %2114, %.01456
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %2117, ptr noundef nonnull @.str.1816, ptr noundef %1)
  %.not1514.not1655 = icmp sgt i64 %.01460, 0
  br i1 %.not1514.not1655, label %.lr.ph1660, label %._crit_edge1661

.lr.ph1660:                                       ; preds = %2110
  %2118 = getelementptr inbounds i8, ptr %0, i64 672
  %2119 = getelementptr inbounds i8, ptr %0, i64 1056
  %2120 = getelementptr inbounds i8, ptr %0, i64 120
  br label %2121

2121:                                             ; preds = %.lr.ph1660, %2121
  %.614211658 = phi double [ 0.000000e+00, %.lr.ph1660 ], [ %2143, %2121 ]
  %.1214361657 = phi double [ 0.000000e+00, %.lr.ph1660 ], [ %2134, %2121 ]
  %.351656 = phi i64 [ 0, %.lr.ph1660 ], [ %2144, %2121 ]
  %2122 = load ptr, ptr %2118, align 8, !tbaa !24
  %2123 = getelementptr inbounds double, ptr %2122, i64 %.351656
  %2124 = load double, ptr %2123, align 8, !tbaa !29
  %2125 = load ptr, ptr %2119, align 8, !tbaa !24
  %2126 = getelementptr inbounds double, ptr %2125, i64 %.351656
  %2127 = load double, ptr %2126, align 8, !tbaa !29
  %2128 = fsub double %2124, %2127
  %2129 = load ptr, ptr %2120, align 8, !tbaa !24
  %2130 = getelementptr inbounds double, ptr %2129, i64 %.351656
  %2131 = load double, ptr %2130, align 8, !tbaa !29
  %2132 = fdiv double %2128, %2131
  %2133 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %2132, ptr noundef %1)
  %2134 = fadd double %.1214361657, %2133
  %2135 = load ptr, ptr %2118, align 8, !tbaa !24
  %2136 = getelementptr inbounds double, ptr %2135, i64 %.351656
  %2137 = load double, ptr %2136, align 8, !tbaa !29
  %2138 = load ptr, ptr %2119, align 8, !tbaa !24
  %2139 = getelementptr inbounds double, ptr %2138, i64 %.351656
  %2140 = load double, ptr %2139, align 8, !tbaa !29
  %2141 = fsub double %2137, %2140
  %2142 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %2141, ptr noundef %1)
  %2143 = fadd double %.614211658, %2142
  %2144 = add nuw nsw i64 %.351656, 1
  %exitcond1743.not = icmp eq i64 %2144, %.01460
  br i1 %exitcond1743.not, label %._crit_edge1661, label %2121, !llvm.loop !99

._crit_edge1661:                                  ; preds = %2121, %2110
  %.35.lcssa = phi i64 [ 0, %2110 ], [ %.01460, %2121 ]
  %.121436.lcssa = phi double [ 0.000000e+00, %2110 ], [ %2134, %2121 ]
  %.61421.lcssa = phi double [ 0.000000e+00, %2110 ], [ %2143, %2121 ]
  %2145 = getelementptr inbounds i8, ptr %0, i64 1152
  %2146 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.121436.lcssa, ptr noundef %1)
  call void @_ZN11alglib_implL30minbc_updateestimateofgoodstepEPddPNS_8ae_stateE(ptr noundef nonnull %2145, double noundef %2146, ptr noundef %1)
  %2147 = getelementptr inbounds i8, ptr %0, i64 32
  %2148 = load i64, ptr %2147, align 8, !tbaa !83
  %2149 = icmp sgt i64 %2148, 0
  br i1 %2149, label %2150, label %2154

2150:                                             ; preds = %._crit_edge1661
  %2151 = load i64, ptr %2029, align 8, !tbaa !72
  %.not1515 = icmp slt i64 %2151, %2148
  br i1 %.not1515, label %2154, label %2152

2152:                                             ; preds = %2150
  %2153 = getelementptr inbounds i8, ptr %0, i64 1440
  store i64 5, ptr %2153, align 8, !tbaa !35
  br label %2220

2154:                                             ; preds = %2150, %._crit_edge1661
  %2155 = trunc nuw i8 %.71380 to i1
  br i1 %2155, label %2158, label %.preheader1530

.preheader1530:                                   ; preds = %2154
  br i1 %.not1514.not1655, label %.lr.ph1668, label %._crit_edge1669

.lr.ph1668:                                       ; preds = %.preheader1530
  %2156 = getelementptr inbounds i8, ptr %0, i64 800
  %2157 = getelementptr inbounds i8, ptr %0, i64 120
  br label %2159

2158:                                             ; preds = %2154
  store i64 0, ptr %2032, align 8, !tbaa !85
  br label %2173

2159:                                             ; preds = %.lr.ph1668, %2159
  %.1314371667 = phi double [ 0.000000e+00, %.lr.ph1668 ], [ %2168, %2159 ]
  %.361666 = phi i64 [ 0, %.lr.ph1668 ], [ %2169, %2159 ]
  %2160 = load ptr, ptr %2156, align 8, !tbaa !24
  %2161 = getelementptr inbounds double, ptr %2160, i64 %.361666
  %2162 = load double, ptr %2161, align 8, !tbaa !29
  %2163 = load ptr, ptr %2157, align 8, !tbaa !24
  %2164 = getelementptr inbounds double, ptr %2163, i64 %.361666
  %2165 = load double, ptr %2164, align 8, !tbaa !29
  %2166 = fmul double %2162, %2165
  %2167 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %2166, ptr noundef %1)
  %2168 = fadd double %.1314371667, %2167
  %2169 = add nuw nsw i64 %.361666, 1
  %exitcond1744.not = icmp eq i64 %2169, %.01460
  br i1 %exitcond1744.not, label %._crit_edge1669, label %2159, !llvm.loop !100

._crit_edge1669:                                  ; preds = %2159, %.preheader1530
  %.36.lcssa = phi i64 [ 0, %.preheader1530 ], [ %.01460, %2159 ]
  %.131437.lcssa = phi double [ 0.000000e+00, %.preheader1530 ], [ %2168, %2159 ]
  %2170 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.131437.lcssa, ptr noundef %1)
  %2171 = fmul double %.01382, %.71394
  %2172 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %2170, double noundef %2171)
  br i1 %2172, label %2175, label %2173

2173:                                             ; preds = %._crit_edge1669, %2158
  %.37 = phi i64 [ %.35.lcssa, %2158 ], [ %.36.lcssa, %._crit_edge1669 ]
  %.14 = phi double [ %.121436.lcssa, %2158 ], [ %.131437.lcssa, %._crit_edge1669 ]
  %2174 = add nsw i64 %.41401, 1
  br label %1270

2175:                                             ; preds = %._crit_edge1669, %.loopexit1532, %2108, %1948, %._crit_edge1619, %1270
  %.91473 = phi double [ %.51469, %1270 ], [ %1419, %._crit_edge1619 ], [ %.71471, %1948 ], [ %.81472, %.loopexit1532 ], [ %.81472, %2108 ], [ %.81472, %._crit_edge1669 ]
  %.38 = phi i64 [ %.19, %1270 ], [ %.24.lcssa, %._crit_edge1619 ], [ %.29.lcssa, %1948 ], [ %.34, %.loopexit1532 ], [ %.34, %2108 ], [ %.36.lcssa, %._crit_edge1669 ]
  %.15 = phi double [ %.71431, %1270 ], [ %.91433.lcssa, %._crit_edge1619 ], [ %.111435.lcssa, %1948 ], [ %2099, %.loopexit1532 ], [ %2099, %2108 ], [ %.131437.lcssa, %._crit_edge1669 ]
  %.71422 = phi double [ %.21417, %1270 ], [ %.41419.lcssa, %._crit_edge1619 ], [ %.51420, %1948 ], [ %2106, %.loopexit1532 ], [ %2106, %2108 ], [ %.61421.lcssa, %._crit_edge1669 ]
  %.12 = phi i8 [ %.61410, %1270 ], [ %.71411.lcssa1762, %._crit_edge1619 ], [ %.81412, %1948 ], [ %.11, %.loopexit1532 ], [ %.11, %2108 ], [ %.11, %._crit_edge1669 ]
  %.51402 = phi i64 [ %.21399, %1270 ], [ %.21399, %._crit_edge1619 ], [ %.31400, %1948 ], [ %.41401, %.loopexit1532 ], [ %.41401, %2108 ], [ %.41401, %._crit_edge1669 ]
  %.81395 = phi double [ %.51392, %1270 ], [ %.51392, %._crit_edge1619 ], [ %.61393, %1948 ], [ %.71394, %.loopexit1532 ], [ %.71394, %2108 ], [ %.71394, %._crit_edge1669 ]
  %.81381 = phi i8 [ %.21375, %1270 ], [ %.21375, %._crit_edge1619 ], [ %.31376, %1948 ], [ %.71380, %.loopexit1532 ], [ %.71380, %2108 ], [ %.71380, %._crit_edge1669 ]
  %.7 = phi double [ %.4, %1270 ], [ %.4, %._crit_edge1619 ], [ %.5, %1948 ], [ %.6, %.loopexit1532 ], [ %.6, %2108 ], [ %.6, %._crit_edge1669 ]
  %2176 = load double, ptr @_ZN11alglib_implL21minbc_decaycorrectionE, align 8, !tbaa !29
  %2177 = fmul double %.01382, %2176
  %2178 = load double, ptr @_ZN11alglib_implL14minbc_mindecayE, align 8, !tbaa !29
  %2179 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %2177, double noundef %2178, ptr noundef %1)
  br label %306

2180:                                             ; preds = %2020, %1714, %1710, %1631, %1616, %1601, %1590, %1534, %1527, %1146, %940, %936, %857, %842, %827, %816, %760, %753, %500, %496, %417, %402, %387, %376, %320, %316, %289, %274, %270, %._crit_edge1696
  %.sink1811 = phi i32 [ 29, %2020 ], [ 28, %1714 ], [ 27, %1710 ], [ 26, %1631 ], [ 25, %1616 ], [ 24, %1601 ], [ 23, %1590 ], [ 22, %1534 ], [ 21, %1527 ], [ 20, %1146 ], [ 19, %940 ], [ 18, %936 ], [ 17, %857 ], [ 16, %842 ], [ 15, %827 ], [ 14, %816 ], [ 13, %760 ], [ 12, %753 ], [ 11, %500 ], [ 10, %496 ], [ 9, %417 ], [ 8, %402 ], [ 7, %387 ], [ 6, %376 ], [ 5, %320 ], [ 4, %316 ], [ 3, %289 ], [ 2, %274 ], [ 1, %270 ], [ 0, %._crit_edge1696 ]
  %.101474 = phi double [ %.71471, %2020 ], [ %.01464, %1714 ], [ %.01464, %1710 ], [ %.01464, %1631 ], [ %.01464, %1616 ], [ %.01464, %1601 ], [ %.01464, %1590 ], [ %.71471, %1534 ], [ %.71471, %1527 ], [ %.31467, %1146 ], [ %.01464, %940 ], [ %.01464, %936 ], [ %.01464, %857 ], [ %.01464, %842 ], [ %.01464, %827 ], [ %.01464, %816 ], [ %.31467, %760 ], [ %.31467, %753 ], [ %.01464, %500 ], [ %.01464, %496 ], [ %.01464, %417 ], [ %.01464, %402 ], [ %.01464, %387 ], [ %.01464, %376 ], [ %.11465, %320 ], [ %.11465, %316 ], [ %.01464, %289 ], [ %.01464, %274 ], [ %.01464, %270 ], [ %.01464, %._crit_edge1696 ]
  %.31463 = phi i64 [ %.01460, %2020 ], [ %.01460, %1714 ], [ %.01460, %1710 ], [ %.01460, %1631 ], [ %.01460, %1616 ], [ %.01460, %1601 ], [ %.01460, %1590 ], [ %.01460, %1534 ], [ %.01460, %1527 ], [ %.01460, %1146 ], [ %.01460, %940 ], [ %.01460, %936 ], [ %.01460, %857 ], [ %.01460, %842 ], [ %.01460, %827 ], [ %.01460, %816 ], [ %.01460, %760 ], [ %.01460, %753 ], [ %.01460, %500 ], [ %.01460, %496 ], [ %.01460, %417 ], [ %.01460, %402 ], [ %.01460, %387 ], [ %.01460, %376 ], [ %.01460, %320 ], [ %.01460, %316 ], [ %.01460, %289 ], [ %.21462, %274 ], [ %.21462, %270 ], [ %.11461, %._crit_edge1696 ]
  %.31459 = phi i64 [ %.01456, %2020 ], [ %.01456, %1714 ], [ %.01456, %1710 ], [ %.01456, %1631 ], [ %.01456, %1616 ], [ %.01456, %1601 ], [ %.01456, %1590 ], [ %.01456, %1534 ], [ %.01456, %1527 ], [ %.01456, %1146 ], [ %.01456, %940 ], [ %.01456, %936 ], [ %.01456, %857 ], [ %.01456, %842 ], [ %.01456, %827 ], [ %.01456, %816 ], [ %.01456, %760 ], [ %.01456, %753 ], [ %.01456, %500 ], [ %.01456, %496 ], [ %.01456, %417 ], [ %.01456, %402 ], [ %.01456, %387 ], [ %.01456, %376 ], [ %.01456, %320 ], [ %.01456, %316 ], [ %.01456, %289 ], [ %.21458, %274 ], [ %.21458, %270 ], [ %.11457, %._crit_edge1696 ]
  %.39 = phi i64 [ %.30.lcssa, %2020 ], [ %.01439, %1714 ], [ %.26, %1710 ], [ %.01439, %1631 ], [ %.01439, %1616 ], [ %.01439, %1601 ], [ %.26, %1590 ], [ %.25.lcssa, %1534 ], [ %.25.lcssa, %1527 ], [ %.161455.lcssa, %1146 ], [ %.01439, %940 ], [ %.141453, %936 ], [ %.01439, %857 ], [ %.01439, %842 ], [ %.01439, %827 ], [ %.141453, %816 ], [ %.131452.lcssa, %760 ], [ %.131452.lcssa, %753 ], [ %.01439, %500 ], [ %.91448, %496 ], [ %.01439, %417 ], [ %.01439, %402 ], [ %.01439, %387 ], [ %.91448, %376 ], [ %.81447, %320 ], [ %.81447, %316 ], [ %.01439, %289 ], [ %.71446, %274 ], [ %.71446, %270 ], [ %.51444.lcssa, %._crit_edge1696 ]
  %.16 = phi double [ %.111435.lcssa, %2020 ], [ %.01424, %1714 ], [ %1545, %1710 ], [ %.01424, %1631 ], [ %.01424, %1616 ], [ %.01424, %1601 ], [ %1545, %1590 ], [ %.101434, %1534 ], [ %.101434, %1527 ], [ %.31427, %1146 ], [ %.01424, %940 ], [ %771, %936 ], [ %.01424, %857 ], [ %.01424, %842 ], [ %.01424, %827 ], [ %771, %816 ], [ %.01424, %760 ], [ %.01424, %753 ], [ %.01424, %500 ], [ %331, %496 ], [ %.01424, %417 ], [ %.01424, %402 ], [ %.01424, %387 ], [ %331, %376 ], [ %.11425, %320 ], [ %.11425, %316 ], [ %.01424, %289 ], [ %.01424, %274 ], [ %.01424, %270 ], [ %.01424, %._crit_edge1696 ]
  %.81423 = phi double [ %.51420, %2020 ], [ %.01415, %1714 ], [ %.01415, %1710 ], [ %.01415, %1631 ], [ %.01415, %1616 ], [ %.01415, %1601 ], [ %.01415, %1590 ], [ %.51420, %1534 ], [ %.51420, %1527 ], [ %.01415, %1146 ], [ %.01415, %940 ], [ %.01415, %936 ], [ %.01415, %857 ], [ %.01415, %842 ], [ %.01415, %827 ], [ %.01415, %816 ], [ %.01415, %760 ], [ %.01415, %753 ], [ %.01415, %500 ], [ %.01415, %496 ], [ %.01415, %417 ], [ %.01415, %402 ], [ %.01415, %387 ], [ %.01415, %376 ], [ %.11416, %320 ], [ %.11416, %316 ], [ %.01415, %289 ], [ %.01415, %274 ], [ %.01415, %270 ], [ %.01415, %._crit_edge1696 ]
  %.13 = phi i8 [ %.81412, %2020 ], [ %.01404, %1714 ], [ %.101529, %1710 ], [ %.01404, %1631 ], [ %.01404, %1616 ], [ %.01404, %1601 ], [ %.10, %1590 ], [ %.81412, %1534 ], [ %.81412, %1527 ], [ %.01404, %1146 ], [ %.01404, %940 ], [ %.514091526, %936 ], [ %.01404, %857 ], [ %.01404, %842 ], [ %.01404, %827 ], [ %.51409, %816 ], [ %.01404, %760 ], [ %.01404, %753 ], [ %.01404, %500 ], [ %.314071523, %496 ], [ %.01404, %417 ], [ %.01404, %402 ], [ %.01404, %387 ], [ %.31407, %376 ], [ %.11405, %320 ], [ %.11405, %316 ], [ %.01404, %289 ], [ %.01404, %274 ], [ %.01404, %270 ], [ %.01404, %._crit_edge1696 ]
  %.61403 = phi i64 [ %.31400, %2020 ], [ %.01397, %1714 ], [ %.01397, %1710 ], [ %.01397, %1631 ], [ %.01397, %1616 ], [ %.01397, %1601 ], [ %.01397, %1590 ], [ %.31400, %1534 ], [ %.31400, %1527 ], [ %.01397, %1146 ], [ %.01397, %940 ], [ %.01397, %936 ], [ %.01397, %857 ], [ %.01397, %842 ], [ %.01397, %827 ], [ %.01397, %816 ], [ %.01397, %760 ], [ %.01397, %753 ], [ %.01397, %500 ], [ %.01397, %496 ], [ %.01397, %417 ], [ %.01397, %402 ], [ %.01397, %387 ], [ %.01397, %376 ], [ %.11398, %320 ], [ %.11398, %316 ], [ %.01397, %289 ], [ %.01397, %274 ], [ %.01397, %270 ], [ %.01397, %._crit_edge1696 ]
  %.91396 = phi double [ %.61393, %2020 ], [ %.01387, %1714 ], [ %.01387, %1710 ], [ %.01387, %1631 ], [ %.01387, %1616 ], [ %.01387, %1601 ], [ %.01387, %1590 ], [ %.61393, %1534 ], [ %.61393, %1527 ], [ %.31390, %1146 ], [ %.01387, %940 ], [ %.01387, %936 ], [ %.01387, %857 ], [ %.01387, %842 ], [ %.01387, %827 ], [ %.01387, %816 ], [ %.31390, %760 ], [ %.31390, %753 ], [ %.01387, %500 ], [ %.01387, %496 ], [ %.01387, %417 ], [ %.01387, %402 ], [ %.01387, %387 ], [ %.01387, %376 ], [ %.11388, %320 ], [ %.11388, %316 ], [ %.01387, %289 ], [ %.01387, %274 ], [ %.01387, %270 ], [ %.01387, %._crit_edge1696 ]
  %.41386 = phi double [ %.01382, %2020 ], [ %.01382, %1714 ], [ %.01382, %1710 ], [ %.01382, %1631 ], [ %.01382, %1616 ], [ %.01382, %1601 ], [ %.01382, %1590 ], [ %.01382, %1534 ], [ %.01382, %1527 ], [ %.01382, %1146 ], [ %.01382, %940 ], [ %.01382, %936 ], [ %.01382, %857 ], [ %.01382, %842 ], [ %.01382, %827 ], [ %.01382, %816 ], [ %.01382, %760 ], [ %.01382, %753 ], [ %.01382, %500 ], [ %.01382, %496 ], [ %.01382, %417 ], [ %.01382, %402 ], [ %.01382, %387 ], [ %.01382, %376 ], [ %.31385, %320 ], [ %.31385, %316 ], [ %.01382, %289 ], [ %.21384, %274 ], [ %.21384, %270 ], [ %.11383, %._crit_edge1696 ]
  %.9 = phi i8 [ %.41377.lcssa, %2020 ], [ %.01373, %1714 ], [ %.01373, %1710 ], [ %.01373, %1631 ], [ %.01373, %1616 ], [ %.01373, %1601 ], [ %.01373, %1590 ], [ %.31376, %1534 ], [ %.31376, %1527 ], [ %.01373, %1146 ], [ %.01373, %940 ], [ %.01373, %936 ], [ %.01373, %857 ], [ %.01373, %842 ], [ %.01373, %827 ], [ %.01373, %816 ], [ %.01373, %760 ], [ %.01373, %753 ], [ %.01373, %500 ], [ %.01373, %496 ], [ %.01373, %417 ], [ %.01373, %402 ], [ %.01373, %387 ], [ %.01373, %376 ], [ %.11374, %320 ], [ %.11374, %316 ], [ %.01373, %289 ], [ %.01373, %274 ], [ %.01373, %270 ], [ %.01373, %._crit_edge1696 ]
  %.8 = phi double [ %.5, %2020 ], [ %.0, %1714 ], [ %.0, %1710 ], [ %.0, %1631 ], [ %.0, %1616 ], [ %.0, %1601 ], [ %.0, %1590 ], [ %.5, %1534 ], [ %.5, %1527 ], [ %.2, %1146 ], [ %.0, %940 ], [ %.0, %936 ], [ %.0, %857 ], [ %.0, %842 ], [ %.0, %827 ], [ %.0, %816 ], [ %.2, %760 ], [ %.2, %753 ], [ %.0, %500 ], [ %.0, %496 ], [ %.0, %417 ], [ %.0, %402 ], [ %.0, %387 ], [ %.0, %376 ], [ %.1, %320 ], [ %.1, %316 ], [ %.0, %289 ], [ %.0, %274 ], [ %.0, %270 ], [ %.0, %._crit_edge1696 ]
  store i32 %.sink1811, ptr %6, align 8, !tbaa !5
  %2181 = load i64, ptr %3, align 8, !tbaa !25
  %2182 = getelementptr inbounds i8, ptr %0, i64 416
  %2183 = load ptr, ptr %2182, align 8, !tbaa !24
  store i64 %2181, ptr %2183, align 8, !tbaa !25
  %2184 = load ptr, ptr %2182, align 8, !tbaa !24
  %2185 = getelementptr inbounds i8, ptr %2184, i64 8
  store i64 %.31463, ptr %2185, align 8, !tbaa !25
  %2186 = load ptr, ptr %2182, align 8, !tbaa !24
  %2187 = getelementptr inbounds i8, ptr %2186, i64 16
  store i64 %.31459, ptr %2187, align 8, !tbaa !25
  %2188 = load ptr, ptr %2182, align 8, !tbaa !24
  %2189 = getelementptr inbounds i8, ptr %2188, i64 24
  store i64 %.39, ptr %2189, align 8, !tbaa !25
  %2190 = load ptr, ptr %2182, align 8, !tbaa !24
  %2191 = getelementptr inbounds i8, ptr %2190, i64 32
  store i64 %.01438, ptr %2191, align 8, !tbaa !25
  %2192 = load i64, ptr %5, align 8, !tbaa !25
  %2193 = load ptr, ptr %2182, align 8, !tbaa !24
  %2194 = getelementptr inbounds i8, ptr %2193, i64 40
  store i64 %2192, ptr %2194, align 8, !tbaa !25
  %2195 = load ptr, ptr %2182, align 8, !tbaa !24
  %2196 = getelementptr inbounds i8, ptr %2195, i64 48
  store i64 %.61403, ptr %2196, align 8, !tbaa !25
  %2197 = getelementptr inbounds i8, ptr %0, i64 480
  %2198 = load ptr, ptr %2197, align 8, !tbaa !24
  %2199 = and i8 %.13, 1
  store i8 %2199, ptr %2198, align 1, !tbaa !26
  %2200 = load ptr, ptr %2197, align 8, !tbaa !24
  %2201 = getelementptr inbounds i8, ptr %2200, i64 1
  %2202 = and i8 %.9, 1
  store i8 %2202, ptr %2201, align 1, !tbaa !26
  %2203 = load double, ptr %4, align 8, !tbaa !29
  %2204 = getelementptr inbounds i8, ptr %0, i64 544
  %2205 = load ptr, ptr %2204, align 8, !tbaa !24
  store double %2203, ptr %2205, align 8, !tbaa !29
  %2206 = load ptr, ptr %2204, align 8, !tbaa !24
  %2207 = getelementptr inbounds i8, ptr %2206, i64 8
  store double %.101474, ptr %2207, align 8, !tbaa !29
  %2208 = load ptr, ptr %2204, align 8, !tbaa !24
  %2209 = getelementptr inbounds i8, ptr %2208, i64 16
  store double %.16, ptr %2209, align 8, !tbaa !29
  %2210 = load ptr, ptr %2204, align 8, !tbaa !24
  %2211 = getelementptr inbounds i8, ptr %2210, i64 24
  store double %.81423, ptr %2211, align 8, !tbaa !29
  %2212 = load ptr, ptr %2204, align 8, !tbaa !24
  %2213 = getelementptr inbounds i8, ptr %2212, i64 32
  store double %.01414, ptr %2213, align 8, !tbaa !29
  %2214 = load ptr, ptr %2204, align 8, !tbaa !24
  %2215 = getelementptr inbounds i8, ptr %2214, i64 40
  store double %.91396, ptr %2215, align 8, !tbaa !29
  %2216 = load ptr, ptr %2204, align 8, !tbaa !24
  %2217 = getelementptr inbounds i8, ptr %2216, i64 48
  store double %.41386, ptr %2217, align 8, !tbaa !29
  %2218 = load ptr, ptr %2204, align 8, !tbaa !24
  %2219 = getelementptr inbounds i8, ptr %2218, i64 56
  store double %.8, ptr %2219, align 8, !tbaa !29
  br label %2220

2220:                                             ; preds = %2180, %2152, %1946, %1940, %1209, %1201, %1182, %1097, %1091, %1059, %591, %582, %576, %304, %93
  %.01475 = phi i1 [ true, %2180 ], [ false, %304 ], [ false, %582 ], [ false, %591 ], [ false, %1097 ], [ false, %1182 ], [ false, %1201 ], [ false, %1209 ], [ false, %1946 ], [ false, %2152 ], [ false, %1940 ], [ false, %1091 ], [ false, %1059 ], [ false, %576 ], [ 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 %.01475
}

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN11alglib_impl26enforceboundaryconstraintsEPNS_9ae_vectorEPKS0_S3_S3_S3_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_impl21projectgradientintobcEPKNS_9ae_vectorEPS0_S2_S2_S2_S2_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_impl18calculatestepboundEPKNS_9ae_vectorES2_dS2_S2_S2_S2_llPlPdS4_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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double 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 352}
!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, !7, i64 200, !12, i64 208, !10, i64 272, !12, i64 280, !11, i64 344, !11, i64 345, !11, i64 346, !11, i64 347, !15, i64 352, !12, i64 616, !12, i64 680, !12, i64 744, !12, i64 808, !12, i64 872, !12, i64 936, !12, i64 1000, !10, i64 1064, !10, i64 1072, !10, i64 1080, !12, i64 1088, !10, i64 1152, !12, i64 1160, !12, i64 1224, !12, i64 1288, !12, i64 1352, !7, i64 1416, !7, i64 1424, !7, i64 1432, !7, i64 1440, !12, i64 1448, !10, i64 1512, !10, i64 1520, !10, i64 1528, !10, i64 1536, !10, i64 1544, !10, i64 1552, !10, i64 1560, !10, i64 1568, !10, i64 1576, !12, i64 1584, !12, i64 1648, !7, i64 1712, !7, i64 1720, !10, i64 1728, !10, i64 1736, !12, i64 1744, !17, i64 1808, !10, i64 2000, !7, i64 2008, !18, i64 2016, !18, i64 2096, !12, i64 2176, !12, i64 2240, !7, i64 2304, !10, i64 2312, !7, i64 2320, !19, i64 2328, !12, i64 8032, !12, i64 8096}
!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, !12, i64 88, !7, i64 152, !12, i64 160, !12, i64 224, !12, i64 288, !18, i64 352, !12, i64 432, !12, i64 496, !7, i64 560, !7, i64 568, !7, i64 576, !10, i64 584, !7, i64 592, !12, i64 600, !12, i64 664, !10, i64 728, !12, i64 736, !12, i64 800, !10, i64 864, !18, i64 872, !18, i64 952, !18, i64 1032, !12, i64 1112, !12, i64 1176, !15, i64 1240, !11, i64 1504, !11, i64 1505, !7, i64 1512, !7, i64 1520, !10, i64 1528, !10, i64 1536, !11, i64 1544, !20, i64 1552, !10, i64 1848, !10, i64 1856, !21, i64 1864, !21, i64 2184, !10, i64 2504, !10, i64 2512, !22, i64 2520, !22, i64 2840, !10, i64 3160, !10, i64 3168, !23, i64 3176, !23, i64 3504, !11, i64 3832, !12, i64 3840, !12, i64 3904, !18, i64 3968, !15, i64 4048, !12, i64 4312, !12, i64 4376, !12, i64 4440, !12, i64 4504, !12, i64 4568, !12, i64 4632, !12, i64 4696, !12, i64 4760, !18, i64 4824, !18, i64 4904, !12, i64 4984, !12, i64 5048, !12, i64 5112, !12, i64 5176, !12, i64 5240, !12, i64 5304, !12, i64 5368, !12, i64 5432, !12, i64 5496, !12, i64 5560, !18, i64 5624}
!20 = !{!"_ZTSN11alglib_impl14optguardreportE", !11, i64 0, !11, i64 1, !7, i64 8, !10, i64 16, !11, i64 24, !11, i64 25, !11, i64 26, !7, i64 32, !10, i64 40, !11, i64 48, !7, i64 56, !7, i64 64, !12, i64 72, !18, i64 136, !18, i64 216}
!21 = !{!"_ZTSN11alglib_impl19optguardnonc0reportE", !11, i64 0, !7, i64 8, !12, i64 16, !12, i64 80, !7, i64 144, !12, i64 152, !12, i64 216, !7, i64 280, !7, i64 288, !7, i64 296, !7, i64 304, !7, i64 312}
!22 = !{!"_ZTSN11alglib_impl24optguardnonc1test0reportE", !11, i64 0, !7, i64 8, !12, i64 16, !12, i64 80, !7, i64 144, !12, i64 152, !12, i64 216, !7, i64 280, !7, i64 288, !7, i64 296, !7, i64 304, !7, i64 312}
!23 = !{!"_ZTSN11alglib_impl24optguardnonc1test1reportE", !11, i64 0, !7, i64 8, !7, i64 16, !12, i64 24, !12, i64 88, !7, i64 152, !12, i64 160, !12, i64 224, !7, i64 288, !7, i64 296, !7, i64 304, !7, i64 312, !7, i64 320}
!24 = !{!8, !8, i64 0}
!25 = !{!7, !7, i64 0}
!26 = !{!11, !11, i64 0}
!27 = !{i8 0, i8 2}
!28 = !{}
!29 = !{!10, !10, i64 0}
!30 = !{!6, !7, i64 0}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.unroll.disable"}
!35 = !{!6, !7, i64 1440}
!36 = !{!6, !11, i64 347}
!37 = !{!6, !7, i64 1432}
!38 = !{!6, !7, i64 2320}
!39 = distinct !{!39, !32}
!40 = !{!6, !7, i64 128}
!41 = distinct !{!41, !32}
!42 = !{!6, !10, i64 56}
!43 = !{!6, !10, i64 2312}
!44 = !{!14, !14, i64 0}
!45 = distinct !{!45, !32}
!46 = distinct !{!46, !34}
!47 = !{!6, !11, i64 345}
!48 = !{!6, !10, i64 272}
!49 = distinct !{!49, !32}
!50 = !{!6, !10, i64 1152}
!51 = !{!6, !7, i64 2008}
!52 = !{!6, !11, i64 344}
!53 = !{!6, !10, i64 1064}
!54 = !{!6, !7, i64 1424}
!55 = !{!6, !11, i64 40}
!56 = !{!6, !11, i64 346}
!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 = !{!6, !10, i64 1560}
!64 = distinct !{!64, !32}
!65 = !{!6, !10, i64 8}
!66 = distinct !{!66, !32}
!67 = distinct !{!67, !32}
!68 = !{!6, !10, i64 1736}
!69 = !{!6, !10, i64 48}
!70 = !{!6, !10, i64 1072}
!71 = !{!6, !7, i64 1720}
!72 = !{!6, !7, i64 1416}
!73 = distinct !{!73, !32}
!74 = !{!6, !10, i64 1728}
!75 = !{!6, !10, i64 2000}
!76 = distinct !{!76, !32}
!77 = distinct !{!77, !32}
!78 = distinct !{!78, !34}
!79 = !{!6, !10, i64 1080}
!80 = distinct !{!80, !32}
!81 = !{!6, !10, i64 24}
!82 = !{!6, !10, i64 16}
!83 = !{!6, !7, i64 32}
!84 = distinct !{!84, !32}
!85 = !{!6, !7, i64 2304}
!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}
!95 = distinct !{!95, !34}
!96 = distinct !{!96, !32}
!97 = distinct !{!97, !32}
!98 = distinct !{!98, !32}
!99 = distinct !{!99, !32}
!100 = distinct !{!100, !32}


; 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