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

; 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::mcpdstate" = type { i64, %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", double, %"struct.alglib_impl::minbleicstate", i64, i64, i64, i64, %"struct.alglib_impl::minbleicreport", %"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_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::minbleicstate" = type { i64, i64, double, double, double, i64, i8, i8, double, double, %"struct.alglib_impl::sactiveset", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, %"struct.alglib_impl::ae_vector", i8, i8, i8, i8, 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", double, double, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", i64, i64, double, double, 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, i64, double, double, double, double, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::snnlssolver", double, double, double, double, double, double, double, double, double, i64, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, double, 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::sactiveset" = type { i64, i64, %"struct.alglib_impl::ae_vector", i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i8, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", i64, %"struct.alglib_impl::ae_vector", i64, i64, i8, i8, %"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", i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::snnlssolver", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::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_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::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::snnlssolver" = type { i64, i64, i64, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"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::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_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::linminstate" = type { i8, i8, i64, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double }
%"struct.alglib_impl::smoothnessmonitor" = type { i64, i64, i8, %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i8, i8, double, double, i8, %"struct.alglib_impl::optguardreport", double, double, %"struct.alglib_impl::optguardnonc1test0report", %"struct.alglib_impl::optguardnonc1test0report", double, double, %"struct.alglib_impl::optguardnonc1test1report", %"struct.alglib_impl::optguardnonc1test1report", i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::rcommstate", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::optguardreport" = type { i8, i8, i64, double, i8, i8, i8, i64, double, i8, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::optguardnonc1test0report" = type { i8, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64 }
%"struct.alglib_impl::optguardnonc1test1report" = type { i8, i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64 }
%"struct.alglib_impl::minbleicreport" = type { i64, i64, i64, i64, double, double, double, double, i64, i64, i64, i64 }
%"struct.alglib_impl::ae_vector" = type { 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::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::ae_state" = type { i64, double, double, double, ptr, %"struct.alglib_impl::ae_dyn_block", ptr, i32, ptr, i64, ptr, ptr, ptr }

@_ZN11alglib_implL9mcpd_xtolE = external hidden global double, align 8
@.str.343 = external hidden unnamed_addr constant [26 x i8], align 1

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

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

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

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

29:                                               ; preds = %57, %2
  %30 = load i64, ptr %10, align 8, !tbaa !28
  %31 = load i64, ptr %5, align 8, !tbaa !28
  %32 = sub nsw i64 %31, 1
  %33 = icmp sle i64 %30, %32
  br i1 %33, label %34, label %60

34:                                               ; preds = %29
  store i64 0, ptr %11, align 8, !tbaa !28
  br label %35

35:                                               ; preds = %53, %34
  %36 = load i64, ptr %11, align 8, !tbaa !28
  %37 = load i64, ptr %5, align 8, !tbaa !28
  %38 = sub nsw i64 %37, 1
  %39 = icmp sle i64 %36, %38
  br i1 %39, label %40, label %56

40:                                               ; preds = %35
  %41 = load ptr, ptr %4, align 8, !tbaa !5
  %42 = getelementptr inbounds %"struct.alglib_impl::ae_state", ptr %41, i32 0, i32 1
  %43 = load double, ptr %42, align 8, !tbaa !34
  %44 = load ptr, ptr %3, align 8, !tbaa !5
  %45 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %44, i32 0, i32 26
  %46 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %45, i32 0, i32 6
  %47 = load ptr, ptr %46, align 8, !tbaa !38
  %48 = load i64, ptr %10, align 8, !tbaa !28
  %49 = getelementptr inbounds ptr, ptr %47, i64 %48
  %50 = load ptr, ptr %49, align 8, !tbaa !5
  %51 = load i64, ptr %11, align 8, !tbaa !28
  %52 = getelementptr inbounds double, ptr %50, i64 %51
  store double %43, ptr %52, align 8, !tbaa !39
  br label %53

53:                                               ; preds = %40
  %54 = load i64, ptr %11, align 8, !tbaa !28
  %55 = add nsw i64 %54, 1
  store i64 %55, ptr %11, align 8, !tbaa !28
  br label %35, !llvm.loop !40

56:                                               ; preds = %35
  br label %57

57:                                               ; preds = %56
  %58 = load i64, ptr %10, align 8, !tbaa !28
  %59 = add nsw i64 %58, 1
  store i64 %59, ptr %10, align 8, !tbaa !28
  br label %29, !llvm.loop !42

60:                                               ; preds = %29
  store i64 0, ptr %8, align 8, !tbaa !28
  br label %61

61:                                               ; preds = %153, %60
  %62 = load i64, ptr %8, align 8, !tbaa !28
  %63 = load i64, ptr %5, align 8, !tbaa !28
  %64 = sub nsw i64 %63, 1
  %65 = icmp sle i64 %62, %64
  br i1 %65, label %66, label %156

66:                                               ; preds = %61
  %67 = load ptr, ptr %3, align 8, !tbaa !5
  %68 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %67, i32 0, i32 10
  %69 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %68, i32 0, i32 4
  %70 = load ptr, ptr %69, align 8, !tbaa !38
  %71 = load i64, ptr %8, align 8, !tbaa !28
  %72 = getelementptr inbounds double, ptr %70, i64 %71
  %73 = load double, ptr %72, align 8, !tbaa !39
  %74 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %73, double noundef 0.000000e+00)
  br i1 %74, label %75, label %138

75:                                               ; preds = %66
  store double 0.000000e+00, ptr %12, align 8, !tbaa !39
  store i64 0, ptr %10, align 8, !tbaa !28
  store i64 0, ptr %9, align 8, !tbaa !28
  br label %76

76:                                               ; preds = %113, %75
  %77 = load i64, ptr %9, align 8, !tbaa !28
  %78 = load i64, ptr %6, align 8, !tbaa !28
  %79 = sub nsw i64 %78, 1
  %80 = icmp sle i64 %77, %79
  br i1 %80, label %81, label %116

81:                                               ; preds = %76
  %82 = load ptr, ptr %3, align 8, !tbaa !5
  %83 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %82, i32 0, i32 3
  %84 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %83, i32 0, i32 6
  %85 = load ptr, ptr %84, align 8, !tbaa !38
  %86 = load i64, ptr %9, align 8, !tbaa !28
  %87 = getelementptr inbounds ptr, ptr %85, i64 %86
  %88 = load ptr, ptr %87, align 8, !tbaa !5
  %89 = load i64, ptr %5, align 8, !tbaa !28
  %90 = load i64, ptr %8, align 8, !tbaa !28
  %91 = add nsw i64 %89, %90
  %92 = getelementptr inbounds double, ptr %88, i64 %91
  %93 = load double, ptr %92, align 8, !tbaa !39
  %94 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %93, double noundef 0.000000e+00)
  br i1 %94, label %95, label %112

95:                                               ; preds = %81
  %96 = load double, ptr %12, align 8, !tbaa !39
  %97 = load ptr, ptr %3, align 8, !tbaa !5
  %98 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %97, i32 0, i32 3
  %99 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %98, i32 0, i32 6
  %100 = load ptr, ptr %99, align 8, !tbaa !38
  %101 = load i64, ptr %9, align 8, !tbaa !28
  %102 = getelementptr inbounds ptr, ptr %100, i64 %101
  %103 = load ptr, ptr %102, align 8, !tbaa !5
  %104 = load i64, ptr %5, align 8, !tbaa !28
  %105 = load i64, ptr %8, align 8, !tbaa !28
  %106 = add nsw i64 %104, %105
  %107 = getelementptr inbounds double, ptr %103, i64 %106
  %108 = load double, ptr %107, align 8, !tbaa !39
  %109 = fadd double %96, %108
  store double %109, ptr %12, align 8, !tbaa !39
  %110 = load i64, ptr %10, align 8, !tbaa !28
  %111 = add nsw i64 %110, 1
  store i64 %111, ptr %10, align 8, !tbaa !28
  br label %112

112:                                              ; preds = %95, %81
  br label %113

113:                                              ; preds = %112
  %114 = load i64, ptr %9, align 8, !tbaa !28
  %115 = add nsw i64 %114, 1
  store i64 %115, ptr %9, align 8, !tbaa !28
  br label %76, !llvm.loop !43

116:                                              ; preds = %76
  %117 = load i64, ptr %10, align 8, !tbaa !28
  %118 = icmp ne i64 %117, 0
  br i1 %118, label %119, label %130

119:                                              ; preds = %116
  %120 = load i64, ptr %10, align 8, !tbaa !28
  %121 = sitofp i64 %120 to double
  %122 = load double, ptr %12, align 8, !tbaa !39
  %123 = fdiv double %121, %122
  %124 = load ptr, ptr %3, align 8, !tbaa !5
  %125 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %124, i32 0, i32 20
  %126 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %125, i32 0, i32 4
  %127 = load ptr, ptr %126, align 8, !tbaa !38
  %128 = load i64, ptr %8, align 8, !tbaa !28
  %129 = getelementptr inbounds double, ptr %127, i64 %128
  store double %123, ptr %129, align 8, !tbaa !39
  br label %137

130:                                              ; preds = %116
  %131 = load ptr, ptr %3, align 8, !tbaa !5
  %132 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %131, i32 0, i32 20
  %133 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %132, i32 0, i32 4
  %134 = load ptr, ptr %133, align 8, !tbaa !38
  %135 = load i64, ptr %8, align 8, !tbaa !28
  %136 = getelementptr inbounds double, ptr %134, i64 %135
  store double 1.000000e+00, ptr %136, align 8, !tbaa !39
  br label %137

137:                                              ; preds = %130, %119
  br label %152

138:                                              ; preds = %66
  %139 = load ptr, ptr %3, align 8, !tbaa !5
  %140 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %139, i32 0, i32 10
  %141 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %140, i32 0, i32 4
  %142 = load ptr, ptr %141, align 8, !tbaa !38
  %143 = load i64, ptr %8, align 8, !tbaa !28
  %144 = getelementptr inbounds double, ptr %142, i64 %143
  %145 = load double, ptr %144, align 8, !tbaa !39
  %146 = load ptr, ptr %3, align 8, !tbaa !5
  %147 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %146, i32 0, i32 20
  %148 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %147, i32 0, i32 4
  %149 = load ptr, ptr %148, align 8, !tbaa !38
  %150 = load i64, ptr %8, align 8, !tbaa !28
  %151 = getelementptr inbounds double, ptr %149, i64 %150
  store double %145, ptr %151, align 8, !tbaa !39
  br label %152

152:                                              ; preds = %138, %137
  br label %153

153:                                              ; preds = %152
  %154 = load i64, ptr %8, align 8, !tbaa !28
  %155 = add nsw i64 %154, 1
  store i64 %155, ptr %8, align 8, !tbaa !28
  br label %61, !llvm.loop !44

156:                                              ; preds = %61
  store i64 0, ptr %8, align 8, !tbaa !28
  br label %157

157:                                              ; preds = %187, %156
  %158 = load i64, ptr %8, align 8, !tbaa !28
  %159 = load i64, ptr %5, align 8, !tbaa !28
  %160 = sub nsw i64 %159, 1
  %161 = icmp sle i64 %158, %160
  br i1 %161, label %162, label %190

162:                                              ; preds = %157
  store i64 0, ptr %9, align 8, !tbaa !28
  br label %163

163:                                              ; preds = %183, %162
  %164 = load i64, ptr %9, align 8, !tbaa !28
  %165 = load i64, ptr %5, align 8, !tbaa !28
  %166 = sub nsw i64 %165, 1
  %167 = icmp sle i64 %164, %166
  br i1 %167, label %168, label %186

168:                                              ; preds = %163
  %169 = load ptr, ptr %3, align 8, !tbaa !5
  %170 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %169, i32 0, i32 12
  %171 = load double, ptr %170, align 8, !tbaa !45
  %172 = fmul double 2.000000e+00, %171
  %173 = load ptr, ptr %3, align 8, !tbaa !5
  %174 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %173, i32 0, i32 25
  %175 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %174, i32 0, i32 4
  %176 = load ptr, ptr %175, align 8, !tbaa !38
  %177 = load i64, ptr %8, align 8, !tbaa !28
  %178 = load i64, ptr %5, align 8, !tbaa !28
  %179 = mul nsw i64 %177, %178
  %180 = load i64, ptr %9, align 8, !tbaa !28
  %181 = add nsw i64 %179, %180
  %182 = getelementptr inbounds double, ptr %176, i64 %181
  store double %172, ptr %182, align 8, !tbaa !39
  br label %183

183:                                              ; preds = %168
  %184 = load i64, ptr %9, align 8, !tbaa !28
  %185 = add nsw i64 %184, 1
  store i64 %185, ptr %9, align 8, !tbaa !28
  br label %163, !llvm.loop !46

186:                                              ; preds = %163
  br label %187

187:                                              ; preds = %186
  %188 = load i64, ptr %8, align 8, !tbaa !28
  %189 = add nsw i64 %188, 1
  store i64 %189, ptr %8, align 8, !tbaa !28
  br label %157, !llvm.loop !47

190:                                              ; preds = %157
  store i64 0, ptr %10, align 8, !tbaa !28
  br label %191

191:                                              ; preds = %261, %190
  %192 = load i64, ptr %10, align 8, !tbaa !28
  %193 = load i64, ptr %6, align 8, !tbaa !28
  %194 = sub nsw i64 %193, 1
  %195 = icmp sle i64 %192, %194
  br i1 %195, label %196, label %264

196:                                              ; preds = %191
  store i64 0, ptr %8, align 8, !tbaa !28
  br label %197

197:                                              ; preds = %257, %196
  %198 = load i64, ptr %8, align 8, !tbaa !28
  %199 = load i64, ptr %5, align 8, !tbaa !28
  %200 = sub nsw i64 %199, 1
  %201 = icmp sle i64 %198, %200
  br i1 %201, label %202, label %260

202:                                              ; preds = %197
  store i64 0, ptr %9, align 8, !tbaa !28
  br label %203

203:                                              ; preds = %253, %202
  %204 = load i64, ptr %9, align 8, !tbaa !28
  %205 = load i64, ptr %5, align 8, !tbaa !28
  %206 = sub nsw i64 %205, 1
  %207 = icmp sle i64 %204, %206
  br i1 %207, label %208, label %256

208:                                              ; preds = %203
  %209 = load ptr, ptr %3, align 8, !tbaa !5
  %210 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %209, i32 0, i32 25
  %211 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %210, i32 0, i32 4
  %212 = load ptr, ptr %211, align 8, !tbaa !38
  %213 = load i64, ptr %8, align 8, !tbaa !28
  %214 = load i64, ptr %5, align 8, !tbaa !28
  %215 = mul nsw i64 %213, %214
  %216 = load i64, ptr %9, align 8, !tbaa !28
  %217 = add nsw i64 %215, %216
  %218 = getelementptr inbounds double, ptr %212, i64 %217
  %219 = load double, ptr %218, align 8, !tbaa !39
  %220 = load ptr, ptr %3, align 8, !tbaa !5
  %221 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %220, i32 0, i32 20
  %222 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %221, i32 0, i32 4
  %223 = load ptr, ptr %222, align 8, !tbaa !38
  %224 = load i64, ptr %8, align 8, !tbaa !28
  %225 = getelementptr inbounds double, ptr %223, i64 %224
  %226 = load double, ptr %225, align 8, !tbaa !39
  %227 = load ptr, ptr %4, align 8, !tbaa !5
  %228 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %226, ptr noundef %227)
  %229 = fmul double 2.000000e+00, %228
  %230 = load ptr, ptr %3, align 8, !tbaa !5
  %231 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %230, i32 0, i32 3
  %232 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %231, i32 0, i32 6
  %233 = load ptr, ptr %232, align 8, !tbaa !38
  %234 = load i64, ptr %10, align 8, !tbaa !28
  %235 = getelementptr inbounds ptr, ptr %233, i64 %234
  %236 = load ptr, ptr %235, align 8, !tbaa !5
  %237 = load i64, ptr %9, align 8, !tbaa !28
  %238 = getelementptr inbounds double, ptr %236, i64 %237
  %239 = load double, ptr %238, align 8, !tbaa !39
  %240 = load ptr, ptr %4, align 8, !tbaa !5
  %241 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %239, ptr noundef %240)
  %242 = call double @llvm.fmuladd.f64(double %229, double %241, double %219)
  %243 = load ptr, ptr %3, align 8, !tbaa !5
  %244 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %243, i32 0, i32 25
  %245 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %244, i32 0, i32 4
  %246 = load ptr, ptr %245, align 8, !tbaa !38
  %247 = load i64, ptr %8, align 8, !tbaa !28
  %248 = load i64, ptr %5, align 8, !tbaa !28
  %249 = mul nsw i64 %247, %248
  %250 = load i64, ptr %9, align 8, !tbaa !28
  %251 = add nsw i64 %249, %250
  %252 = getelementptr inbounds double, ptr %246, i64 %251
  store double %242, ptr %252, align 8, !tbaa !39
  br label %253

253:                                              ; preds = %208
  %254 = load i64, ptr %9, align 8, !tbaa !28
  %255 = add nsw i64 %254, 1
  store i64 %255, ptr %9, align 8, !tbaa !28
  br label %203, !llvm.loop !48

256:                                              ; preds = %203
  br label %257

257:                                              ; preds = %256
  %258 = load i64, ptr %8, align 8, !tbaa !28
  %259 = add nsw i64 %258, 1
  store i64 %259, ptr %8, align 8, !tbaa !28
  br label %197, !llvm.loop !49

260:                                              ; preds = %197
  br label %261

261:                                              ; preds = %260
  %262 = load i64, ptr %10, align 8, !tbaa !28
  %263 = add nsw i64 %262, 1
  store i64 %263, ptr %10, align 8, !tbaa !28
  br label %191, !llvm.loop !50

264:                                              ; preds = %191
  store i64 0, ptr %8, align 8, !tbaa !28
  br label %265

265:                                              ; preds = %305, %264
  %266 = load i64, ptr %8, align 8, !tbaa !28
  %267 = load i64, ptr %5, align 8, !tbaa !28
  %268 = sub nsw i64 %267, 1
  %269 = icmp sle i64 %266, %268
  br i1 %269, label %270, label %308

270:                                              ; preds = %265
  store i64 0, ptr %9, align 8, !tbaa !28
  br label %271

271:                                              ; preds = %301, %270
  %272 = load i64, ptr %9, align 8, !tbaa !28
  %273 = load i64, ptr %5, align 8, !tbaa !28
  %274 = sub nsw i64 %273, 1
  %275 = icmp sle i64 %272, %274
  br i1 %275, label %276, label %304

276:                                              ; preds = %271
  %277 = load ptr, ptr %3, align 8, !tbaa !5
  %278 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %277, i32 0, i32 25
  %279 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %278, i32 0, i32 4
  %280 = load ptr, ptr %279, align 8, !tbaa !38
  %281 = load i64, ptr %8, align 8, !tbaa !28
  %282 = load i64, ptr %5, align 8, !tbaa !28
  %283 = mul nsw i64 %281, %282
  %284 = load i64, ptr %9, align 8, !tbaa !28
  %285 = add nsw i64 %283, %284
  %286 = getelementptr inbounds double, ptr %280, i64 %285
  %287 = load double, ptr %286, align 8, !tbaa !39
  %288 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %287, double noundef 0.000000e+00)
  br i1 %288, label %289, label %300

289:                                              ; preds = %276
  %290 = load ptr, ptr %3, align 8, !tbaa !5
  %291 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %290, i32 0, i32 25
  %292 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %291, i32 0, i32 4
  %293 = load ptr, ptr %292, align 8, !tbaa !38
  %294 = load i64, ptr %8, align 8, !tbaa !28
  %295 = load i64, ptr %5, align 8, !tbaa !28
  %296 = mul nsw i64 %294, %295
  %297 = load i64, ptr %9, align 8, !tbaa !28
  %298 = add nsw i64 %296, %297
  %299 = getelementptr inbounds double, ptr %293, i64 %298
  store double 1.000000e+00, ptr %299, align 8, !tbaa !39
  br label %300

300:                                              ; preds = %289, %276
  br label %301

301:                                              ; preds = %300
  %302 = load i64, ptr %9, align 8, !tbaa !28
  %303 = add nsw i64 %302, 1
  store i64 %303, ptr %9, align 8, !tbaa !28
  br label %271, !llvm.loop !51

304:                                              ; preds = %271
  br label %305

305:                                              ; preds = %304
  %306 = load i64, ptr %8, align 8, !tbaa !28
  %307 = add nsw i64 %306, 1
  store i64 %307, ptr %8, align 8, !tbaa !28
  br label %265, !llvm.loop !52

308:                                              ; preds = %265
  store i64 0, ptr %8, align 8, !tbaa !28
  br label %309

309:                                              ; preds = %619, %308
  %310 = load i64, ptr %8, align 8, !tbaa !28
  %311 = load i64, ptr %5, align 8, !tbaa !28
  %312 = sub nsw i64 %311, 1
  %313 = icmp sle i64 %310, %312
  br i1 %313, label %314, label %622

314:                                              ; preds = %309
  store i64 0, ptr %9, align 8, !tbaa !28
  br label %315

315:                                              ; preds = %615, %314
  %316 = load i64, ptr %9, align 8, !tbaa !28
  %317 = load i64, ptr %5, align 8, !tbaa !28
  %318 = sub nsw i64 %317, 1
  %319 = icmp sle i64 %316, %318
  br i1 %319, label %320, label %618

320:                                              ; preds = %315
  %321 = load ptr, ptr %3, align 8, !tbaa !5
  %322 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %321, i32 0, i32 21
  %323 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %322, i32 0, i32 4
  %324 = load ptr, ptr %323, align 8, !tbaa !38
  %325 = load i64, ptr %8, align 8, !tbaa !28
  %326 = load i64, ptr %5, align 8, !tbaa !28
  %327 = mul nsw i64 %325, %326
  %328 = load i64, ptr %9, align 8, !tbaa !28
  %329 = add nsw i64 %327, %328
  %330 = getelementptr inbounds double, ptr %324, i64 %329
  store double 0.000000e+00, ptr %330, align 8, !tbaa !39
  %331 = load ptr, ptr %3, align 8, !tbaa !5
  %332 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %331, i32 0, i32 1
  %333 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %332, i32 0, i32 4
  %334 = load ptr, ptr %333, align 8, !tbaa !38
  %335 = load i64, ptr %8, align 8, !tbaa !28
  %336 = getelementptr inbounds i64, ptr %334, i64 %335
  %337 = load i64, ptr %336, align 8, !tbaa !28
  %338 = icmp sgt i64 %337, 0
  br i1 %338, label %348, label %339

339:                                              ; preds = %320
  %340 = load ptr, ptr %3, align 8, !tbaa !5
  %341 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %340, i32 0, i32 1
  %342 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %341, i32 0, i32 4
  %343 = load ptr, ptr %342, align 8, !tbaa !38
  %344 = load i64, ptr %9, align 8, !tbaa !28
  %345 = getelementptr inbounds i64, ptr %343, i64 %344
  %346 = load i64, ptr %345, align 8, !tbaa !28
  %347 = icmp slt i64 %346, 0
  br i1 %347, label %348, label %359

348:                                              ; preds = %339, %320
  %349 = load ptr, ptr %3, align 8, !tbaa !5
  %350 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %349, i32 0, i32 22
  %351 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %350, i32 0, i32 4
  %352 = load ptr, ptr %351, align 8, !tbaa !38
  %353 = load i64, ptr %8, align 8, !tbaa !28
  %354 = load i64, ptr %5, align 8, !tbaa !28
  %355 = mul nsw i64 %353, %354
  %356 = load i64, ptr %9, align 8, !tbaa !28
  %357 = add nsw i64 %355, %356
  %358 = getelementptr inbounds double, ptr %352, i64 %357
  store double 0.000000e+00, ptr %358, align 8, !tbaa !39
  br label %370

359:                                              ; preds = %339
  %360 = load ptr, ptr %3, align 8, !tbaa !5
  %361 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %360, i32 0, i32 22
  %362 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %361, i32 0, i32 4
  %363 = load ptr, ptr %362, align 8, !tbaa !38
  %364 = load i64, ptr %8, align 8, !tbaa !28
  %365 = load i64, ptr %5, align 8, !tbaa !28
  %366 = mul nsw i64 %364, %365
  %367 = load i64, ptr %9, align 8, !tbaa !28
  %368 = add nsw i64 %366, %367
  %369 = getelementptr inbounds double, ptr %363, i64 %368
  store double 1.000000e+00, ptr %369, align 8, !tbaa !39
  br label %370

370:                                              ; preds = %359, %348
  %371 = load ptr, ptr %3, align 8, !tbaa !5
  %372 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %371, i32 0, i32 5
  %373 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %372, i32 0, i32 6
  %374 = load ptr, ptr %373, align 8, !tbaa !38
  %375 = load i64, ptr %8, align 8, !tbaa !28
  %376 = getelementptr inbounds ptr, ptr %374, i64 %375
  %377 = load ptr, ptr %376, align 8, !tbaa !5
  %378 = load i64, ptr %9, align 8, !tbaa !28
  %379 = getelementptr inbounds double, ptr %377, i64 %378
  %380 = load double, ptr %379, align 8, !tbaa !39
  %381 = load ptr, ptr %4, align 8, !tbaa !5
  %382 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %380, ptr noundef %381)
  br i1 %382, label %383, label %427

383:                                              ; preds = %370
  %384 = load ptr, ptr %3, align 8, !tbaa !5
  %385 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %384, i32 0, i32 5
  %386 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %385, i32 0, i32 6
  %387 = load ptr, ptr %386, align 8, !tbaa !38
  %388 = load i64, ptr %8, align 8, !tbaa !28
  %389 = getelementptr inbounds ptr, ptr %387, i64 %388
  %390 = load ptr, ptr %389, align 8, !tbaa !5
  %391 = load i64, ptr %9, align 8, !tbaa !28
  %392 = getelementptr inbounds double, ptr %390, i64 %391
  %393 = load double, ptr %392, align 8, !tbaa !39
  %394 = load ptr, ptr %3, align 8, !tbaa !5
  %395 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %394, i32 0, i32 21
  %396 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %395, i32 0, i32 4
  %397 = load ptr, ptr %396, align 8, !tbaa !38
  %398 = load i64, ptr %8, align 8, !tbaa !28
  %399 = load i64, ptr %5, align 8, !tbaa !28
  %400 = mul nsw i64 %398, %399
  %401 = load i64, ptr %9, align 8, !tbaa !28
  %402 = add nsw i64 %400, %401
  %403 = getelementptr inbounds double, ptr %397, i64 %402
  %404 = load double, ptr %403, align 8, !tbaa !39
  %405 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %393, double noundef %404)
  br i1 %405, label %406, label %427

406:                                              ; preds = %383
  %407 = load ptr, ptr %3, align 8, !tbaa !5
  %408 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %407, i32 0, i32 5
  %409 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %408, i32 0, i32 6
  %410 = load ptr, ptr %409, align 8, !tbaa !38
  %411 = load i64, ptr %8, align 8, !tbaa !28
  %412 = getelementptr inbounds ptr, ptr %410, i64 %411
  %413 = load ptr, ptr %412, align 8, !tbaa !5
  %414 = load i64, ptr %9, align 8, !tbaa !28
  %415 = getelementptr inbounds double, ptr %413, i64 %414
  %416 = load double, ptr %415, align 8, !tbaa !39
  %417 = load ptr, ptr %3, align 8, !tbaa !5
  %418 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %417, i32 0, i32 21
  %419 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %418, i32 0, i32 4
  %420 = load ptr, ptr %419, align 8, !tbaa !38
  %421 = load i64, ptr %8, align 8, !tbaa !28
  %422 = load i64, ptr %5, align 8, !tbaa !28
  %423 = mul nsw i64 %421, %422
  %424 = load i64, ptr %9, align 8, !tbaa !28
  %425 = add nsw i64 %423, %424
  %426 = getelementptr inbounds double, ptr %420, i64 %425
  store double %416, ptr %426, align 8, !tbaa !39
  br label %427

427:                                              ; preds = %406, %383, %370
  %428 = load ptr, ptr %3, align 8, !tbaa !5
  %429 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %428, i32 0, i32 6
  %430 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %429, i32 0, i32 6
  %431 = load ptr, ptr %430, align 8, !tbaa !38
  %432 = load i64, ptr %8, align 8, !tbaa !28
  %433 = getelementptr inbounds ptr, ptr %431, i64 %432
  %434 = load ptr, ptr %433, align 8, !tbaa !5
  %435 = load i64, ptr %9, align 8, !tbaa !28
  %436 = getelementptr inbounds double, ptr %434, i64 %435
  %437 = load double, ptr %436, align 8, !tbaa !39
  %438 = load ptr, ptr %4, align 8, !tbaa !5
  %439 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %437, ptr noundef %438)
  br i1 %439, label %440, label %484

440:                                              ; preds = %427
  %441 = load ptr, ptr %3, align 8, !tbaa !5
  %442 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %441, i32 0, i32 6
  %443 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %442, i32 0, i32 6
  %444 = load ptr, ptr %443, align 8, !tbaa !38
  %445 = load i64, ptr %8, align 8, !tbaa !28
  %446 = getelementptr inbounds ptr, ptr %444, i64 %445
  %447 = load ptr, ptr %446, align 8, !tbaa !5
  %448 = load i64, ptr %9, align 8, !tbaa !28
  %449 = getelementptr inbounds double, ptr %447, i64 %448
  %450 = load double, ptr %449, align 8, !tbaa !39
  %451 = load ptr, ptr %3, align 8, !tbaa !5
  %452 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %451, i32 0, i32 22
  %453 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %452, i32 0, i32 4
  %454 = load ptr, ptr %453, align 8, !tbaa !38
  %455 = load i64, ptr %8, align 8, !tbaa !28
  %456 = load i64, ptr %5, align 8, !tbaa !28
  %457 = mul nsw i64 %455, %456
  %458 = load i64, ptr %9, align 8, !tbaa !28
  %459 = add nsw i64 %457, %458
  %460 = getelementptr inbounds double, ptr %454, i64 %459
  %461 = load double, ptr %460, align 8, !tbaa !39
  %462 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %450, double noundef %461)
  br i1 %462, label %463, label %484

463:                                              ; preds = %440
  %464 = load ptr, ptr %3, align 8, !tbaa !5
  %465 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %464, i32 0, i32 6
  %466 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %465, i32 0, i32 6
  %467 = load ptr, ptr %466, align 8, !tbaa !38
  %468 = load i64, ptr %8, align 8, !tbaa !28
  %469 = getelementptr inbounds ptr, ptr %467, i64 %468
  %470 = load ptr, ptr %469, align 8, !tbaa !5
  %471 = load i64, ptr %9, align 8, !tbaa !28
  %472 = getelementptr inbounds double, ptr %470, i64 %471
  %473 = load double, ptr %472, align 8, !tbaa !39
  %474 = load ptr, ptr %3, align 8, !tbaa !5
  %475 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %474, i32 0, i32 22
  %476 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %475, i32 0, i32 4
  %477 = load ptr, ptr %476, align 8, !tbaa !38
  %478 = load i64, ptr %8, align 8, !tbaa !28
  %479 = load i64, ptr %5, align 8, !tbaa !28
  %480 = mul nsw i64 %478, %479
  %481 = load i64, ptr %9, align 8, !tbaa !28
  %482 = add nsw i64 %480, %481
  %483 = getelementptr inbounds double, ptr %477, i64 %482
  store double %473, ptr %483, align 8, !tbaa !39
  br label %484

484:                                              ; preds = %463, %440, %427
  %485 = load ptr, ptr %3, align 8, !tbaa !5
  %486 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %485, i32 0, i32 21
  %487 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %486, i32 0, i32 4
  %488 = load ptr, ptr %487, align 8, !tbaa !38
  %489 = load i64, ptr %8, align 8, !tbaa !28
  %490 = load i64, ptr %5, align 8, !tbaa !28
  %491 = mul nsw i64 %489, %490
  %492 = load i64, ptr %9, align 8, !tbaa !28
  %493 = add nsw i64 %491, %492
  %494 = getelementptr inbounds double, ptr %488, i64 %493
  %495 = load double, ptr %494, align 8, !tbaa !39
  %496 = load ptr, ptr %3, align 8, !tbaa !5
  %497 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %496, i32 0, i32 22
  %498 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %497, i32 0, i32 4
  %499 = load ptr, ptr %498, align 8, !tbaa !38
  %500 = load i64, ptr %8, align 8, !tbaa !28
  %501 = load i64, ptr %5, align 8, !tbaa !28
  %502 = mul nsw i64 %500, %501
  %503 = load i64, ptr %9, align 8, !tbaa !28
  %504 = add nsw i64 %502, %503
  %505 = getelementptr inbounds double, ptr %499, i64 %504
  %506 = load double, ptr %505, align 8, !tbaa !39
  %507 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %495, double noundef %506)
  br i1 %507, label %508, label %511

508:                                              ; preds = %484
  %509 = load ptr, ptr %3, align 8, !tbaa !5
  %510 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %509, i32 0, i32 17
  store i64 -3, ptr %510, align 8, !tbaa !30
  store i32 1, ptr %14, align 4
  br label %1178

511:                                              ; preds = %484
  %512 = load ptr, ptr %3, align 8, !tbaa !5
  %513 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %512, i32 0, i32 4
  %514 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %513, i32 0, i32 6
  %515 = load ptr, ptr %514, align 8, !tbaa !38
  %516 = load i64, ptr %8, align 8, !tbaa !28
  %517 = getelementptr inbounds ptr, ptr %515, i64 %516
  %518 = load ptr, ptr %517, align 8, !tbaa !5
  %519 = load i64, ptr %9, align 8, !tbaa !28
  %520 = getelementptr inbounds double, ptr %518, i64 %519
  %521 = load double, ptr %520, align 8, !tbaa !39
  %522 = load ptr, ptr %4, align 8, !tbaa !5
  %523 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %521, ptr noundef %522)
  br i1 %523, label %524, label %614

524:                                              ; preds = %511
  %525 = load ptr, ptr %3, align 8, !tbaa !5
  %526 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %525, i32 0, i32 4
  %527 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %526, i32 0, i32 6
  %528 = load ptr, ptr %527, align 8, !tbaa !38
  %529 = load i64, ptr %8, align 8, !tbaa !28
  %530 = getelementptr inbounds ptr, ptr %528, i64 %529
  %531 = load ptr, ptr %530, align 8, !tbaa !5
  %532 = load i64, ptr %9, align 8, !tbaa !28
  %533 = getelementptr inbounds double, ptr %531, i64 %532
  %534 = load double, ptr %533, align 8, !tbaa !39
  %535 = load ptr, ptr %3, align 8, !tbaa !5
  %536 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %535, i32 0, i32 21
  %537 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %536, i32 0, i32 4
  %538 = load ptr, ptr %537, align 8, !tbaa !38
  %539 = load i64, ptr %8, align 8, !tbaa !28
  %540 = load i64, ptr %5, align 8, !tbaa !28
  %541 = mul nsw i64 %539, %540
  %542 = load i64, ptr %9, align 8, !tbaa !28
  %543 = add nsw i64 %541, %542
  %544 = getelementptr inbounds double, ptr %538, i64 %543
  %545 = load double, ptr %544, align 8, !tbaa !39
  %546 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %534, double noundef %545)
  br i1 %546, label %570, label %547

547:                                              ; preds = %524
  %548 = load ptr, ptr %3, align 8, !tbaa !5
  %549 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %548, i32 0, i32 4
  %550 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %549, i32 0, i32 6
  %551 = load ptr, ptr %550, align 8, !tbaa !38
  %552 = load i64, ptr %8, align 8, !tbaa !28
  %553 = getelementptr inbounds ptr, ptr %551, i64 %552
  %554 = load ptr, ptr %553, align 8, !tbaa !5
  %555 = load i64, ptr %9, align 8, !tbaa !28
  %556 = getelementptr inbounds double, ptr %554, i64 %555
  %557 = load double, ptr %556, align 8, !tbaa !39
  %558 = load ptr, ptr %3, align 8, !tbaa !5
  %559 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %558, i32 0, i32 22
  %560 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %559, i32 0, i32 4
  %561 = load ptr, ptr %560, align 8, !tbaa !38
  %562 = load i64, ptr %8, align 8, !tbaa !28
  %563 = load i64, ptr %5, align 8, !tbaa !28
  %564 = mul nsw i64 %562, %563
  %565 = load i64, ptr %9, align 8, !tbaa !28
  %566 = add nsw i64 %564, %565
  %567 = getelementptr inbounds double, ptr %561, i64 %566
  %568 = load double, ptr %567, align 8, !tbaa !39
  %569 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %557, double noundef %568)
  br i1 %569, label %570, label %573

570:                                              ; preds = %547, %524
  %571 = load ptr, ptr %3, align 8, !tbaa !5
  %572 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %571, i32 0, i32 17
  store i64 -3, ptr %572, align 8, !tbaa !30
  store i32 1, ptr %14, align 4
  br label %1178

573:                                              ; preds = %547
  %574 = load ptr, ptr %3, align 8, !tbaa !5
  %575 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %574, i32 0, i32 4
  %576 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %575, i32 0, i32 6
  %577 = load ptr, ptr %576, align 8, !tbaa !38
  %578 = load i64, ptr %8, align 8, !tbaa !28
  %579 = getelementptr inbounds ptr, ptr %577, i64 %578
  %580 = load ptr, ptr %579, align 8, !tbaa !5
  %581 = load i64, ptr %9, align 8, !tbaa !28
  %582 = getelementptr inbounds double, ptr %580, i64 %581
  %583 = load double, ptr %582, align 8, !tbaa !39
  %584 = load ptr, ptr %3, align 8, !tbaa !5
  %585 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %584, i32 0, i32 21
  %586 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %585, i32 0, i32 4
  %587 = load ptr, ptr %586, align 8, !tbaa !38
  %588 = load i64, ptr %8, align 8, !tbaa !28
  %589 = load i64, ptr %5, align 8, !tbaa !28
  %590 = mul nsw i64 %588, %589
  %591 = load i64, ptr %9, align 8, !tbaa !28
  %592 = add nsw i64 %590, %591
  %593 = getelementptr inbounds double, ptr %587, i64 %592
  store double %583, ptr %593, align 8, !tbaa !39
  %594 = load ptr, ptr %3, align 8, !tbaa !5
  %595 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %594, i32 0, i32 4
  %596 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %595, i32 0, i32 6
  %597 = load ptr, ptr %596, align 8, !tbaa !38
  %598 = load i64, ptr %8, align 8, !tbaa !28
  %599 = getelementptr inbounds ptr, ptr %597, i64 %598
  %600 = load ptr, ptr %599, align 8, !tbaa !5
  %601 = load i64, ptr %9, align 8, !tbaa !28
  %602 = getelementptr inbounds double, ptr %600, i64 %601
  %603 = load double, ptr %602, align 8, !tbaa !39
  %604 = load ptr, ptr %3, align 8, !tbaa !5
  %605 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %604, i32 0, i32 22
  %606 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %605, i32 0, i32 4
  %607 = load ptr, ptr %606, align 8, !tbaa !38
  %608 = load i64, ptr %8, align 8, !tbaa !28
  %609 = load i64, ptr %5, align 8, !tbaa !28
  %610 = mul nsw i64 %608, %609
  %611 = load i64, ptr %9, align 8, !tbaa !28
  %612 = add nsw i64 %610, %611
  %613 = getelementptr inbounds double, ptr %607, i64 %612
  store double %603, ptr %613, align 8, !tbaa !39
  br label %614

614:                                              ; preds = %573, %511
  br label %615

615:                                              ; preds = %614
  %616 = load i64, ptr %9, align 8, !tbaa !28
  %617 = add nsw i64 %616, 1
  store i64 %617, ptr %9, align 8, !tbaa !28
  br label %315, !llvm.loop !53

618:                                              ; preds = %315
  br label %619

619:                                              ; preds = %618
  %620 = load i64, ptr %8, align 8, !tbaa !28
  %621 = add nsw i64 %620, 1
  store i64 %621, ptr %8, align 8, !tbaa !28
  br label %309, !llvm.loop !54

622:                                              ; preds = %309
  %623 = load ptr, ptr %3, align 8, !tbaa !5
  %624 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %623, i32 0, i32 23
  %625 = load ptr, ptr %3, align 8, !tbaa !5
  %626 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %625, i32 0, i32 9
  %627 = load i64, ptr %626, align 8, !tbaa !55
  %628 = load i64, ptr %5, align 8, !tbaa !28
  %629 = add nsw i64 %627, %628
  %630 = load i64, ptr %5, align 8, !tbaa !28
  %631 = load i64, ptr %5, align 8, !tbaa !28
  %632 = mul nsw i64 %630, %631
  %633 = add nsw i64 %632, 1
  %634 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %624, i64 noundef %629, i64 noundef %633, ptr noundef %634)
  %635 = load ptr, ptr %3, align 8, !tbaa !5
  %636 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %635, i32 0, i32 24
  %637 = load ptr, ptr %3, align 8, !tbaa !5
  %638 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %637, i32 0, i32 9
  %639 = load i64, ptr %638, align 8, !tbaa !55
  %640 = load i64, ptr %5, align 8, !tbaa !28
  %641 = add nsw i64 %639, %640
  %642 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %636, i64 noundef %641, ptr noundef %642)
  %643 = load ptr, ptr %3, align 8, !tbaa !5
  %644 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %643, i32 0, i32 9
  %645 = load i64, ptr %644, align 8, !tbaa !55
  store i64 %645, ptr %7, align 8, !tbaa !28
  store i64 0, ptr %8, align 8, !tbaa !28
  br label %646

646:                                              ; preds = %697, %622
  %647 = load i64, ptr %8, align 8, !tbaa !28
  %648 = load ptr, ptr %3, align 8, !tbaa !5
  %649 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %648, i32 0, i32 9
  %650 = load i64, ptr %649, align 8, !tbaa !55
  %651 = sub nsw i64 %650, 1
  %652 = icmp sle i64 %647, %651
  br i1 %652, label %653, label %700

653:                                              ; preds = %646
  store i64 0, ptr %9, align 8, !tbaa !28
  br label %654

654:                                              ; preds = %680, %653
  %655 = load i64, ptr %9, align 8, !tbaa !28
  %656 = load i64, ptr %5, align 8, !tbaa !28
  %657 = load i64, ptr %5, align 8, !tbaa !28
  %658 = mul nsw i64 %656, %657
  %659 = icmp sle i64 %655, %658
  br i1 %659, label %660, label %683

660:                                              ; preds = %654
  %661 = load ptr, ptr %3, align 8, !tbaa !5
  %662 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %661, i32 0, i32 7
  %663 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %662, i32 0, i32 6
  %664 = load ptr, ptr %663, align 8, !tbaa !38
  %665 = load i64, ptr %8, align 8, !tbaa !28
  %666 = getelementptr inbounds ptr, ptr %664, i64 %665
  %667 = load ptr, ptr %666, align 8, !tbaa !5
  %668 = load i64, ptr %9, align 8, !tbaa !28
  %669 = getelementptr inbounds double, ptr %667, i64 %668
  %670 = load double, ptr %669, align 8, !tbaa !39
  %671 = load ptr, ptr %3, align 8, !tbaa !5
  %672 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %671, i32 0, i32 23
  %673 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %672, i32 0, i32 6
  %674 = load ptr, ptr %673, align 8, !tbaa !38
  %675 = load i64, ptr %8, align 8, !tbaa !28
  %676 = getelementptr inbounds ptr, ptr %674, i64 %675
  %677 = load ptr, ptr %676, align 8, !tbaa !5
  %678 = load i64, ptr %9, align 8, !tbaa !28
  %679 = getelementptr inbounds double, ptr %677, i64 %678
  store double %670, ptr %679, align 8, !tbaa !39
  br label %680

680:                                              ; preds = %660
  %681 = load i64, ptr %9, align 8, !tbaa !28
  %682 = add nsw i64 %681, 1
  store i64 %682, ptr %9, align 8, !tbaa !28
  br label %654, !llvm.loop !56

683:                                              ; preds = %654
  %684 = load ptr, ptr %3, align 8, !tbaa !5
  %685 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %684, i32 0, i32 8
  %686 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %685, i32 0, i32 4
  %687 = load ptr, ptr %686, align 8, !tbaa !38
  %688 = load i64, ptr %8, align 8, !tbaa !28
  %689 = getelementptr inbounds i64, ptr %687, i64 %688
  %690 = load i64, ptr %689, align 8, !tbaa !28
  %691 = load ptr, ptr %3, align 8, !tbaa !5
  %692 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %691, i32 0, i32 24
  %693 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %692, i32 0, i32 4
  %694 = load ptr, ptr %693, align 8, !tbaa !38
  %695 = load i64, ptr %8, align 8, !tbaa !28
  %696 = getelementptr inbounds i64, ptr %694, i64 %695
  store i64 %690, ptr %696, align 8, !tbaa !28
  br label %697

697:                                              ; preds = %683
  %698 = load i64, ptr %8, align 8, !tbaa !28
  %699 = add nsw i64 %698, 1
  store i64 %699, ptr %8, align 8, !tbaa !28
  br label %646, !llvm.loop !57

700:                                              ; preds = %646
  store i64 0, ptr %8, align 8, !tbaa !28
  br label %701

701:                                              ; preds = %780, %700
  %702 = load i64, ptr %8, align 8, !tbaa !28
  %703 = load i64, ptr %5, align 8, !tbaa !28
  %704 = sub nsw i64 %703, 1
  %705 = icmp sle i64 %702, %704
  br i1 %705, label %706, label %783

706:                                              ; preds = %701
  %707 = load ptr, ptr %3, align 8, !tbaa !5
  %708 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %707, i32 0, i32 1
  %709 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %708, i32 0, i32 4
  %710 = load ptr, ptr %709, align 8, !tbaa !38
  %711 = load i64, ptr %8, align 8, !tbaa !28
  %712 = getelementptr inbounds i64, ptr %710, i64 %711
  %713 = load i64, ptr %712, align 8, !tbaa !28
  %714 = icmp sge i64 %713, 0
  br i1 %714, label %715, label %779

715:                                              ; preds = %706
  store i64 0, ptr %10, align 8, !tbaa !28
  br label %716

716:                                              ; preds = %733, %715
  %717 = load i64, ptr %10, align 8, !tbaa !28
  %718 = load i64, ptr %5, align 8, !tbaa !28
  %719 = load i64, ptr %5, align 8, !tbaa !28
  %720 = mul nsw i64 %718, %719
  %721 = sub nsw i64 %720, 1
  %722 = icmp sle i64 %717, %721
  br i1 %722, label %723, label %736

723:                                              ; preds = %716
  %724 = load ptr, ptr %3, align 8, !tbaa !5
  %725 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %724, i32 0, i32 23
  %726 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %725, i32 0, i32 6
  %727 = load ptr, ptr %726, align 8, !tbaa !38
  %728 = load i64, ptr %7, align 8, !tbaa !28
  %729 = getelementptr inbounds ptr, ptr %727, i64 %728
  %730 = load ptr, ptr %729, align 8, !tbaa !5
  %731 = load i64, ptr %10, align 8, !tbaa !28
  %732 = getelementptr inbounds double, ptr %730, i64 %731
  store double 0.000000e+00, ptr %732, align 8, !tbaa !39
  br label %733

733:                                              ; preds = %723
  %734 = load i64, ptr %10, align 8, !tbaa !28
  %735 = add nsw i64 %734, 1
  store i64 %735, ptr %10, align 8, !tbaa !28
  br label %716, !llvm.loop !58

736:                                              ; preds = %716
  store i64 0, ptr %10, align 8, !tbaa !28
  br label %737

737:                                              ; preds = %756, %736
  %738 = load i64, ptr %10, align 8, !tbaa !28
  %739 = load i64, ptr %5, align 8, !tbaa !28
  %740 = sub nsw i64 %739, 1
  %741 = icmp sle i64 %738, %740
  br i1 %741, label %742, label %759

742:                                              ; preds = %737
  %743 = load ptr, ptr %3, align 8, !tbaa !5
  %744 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %743, i32 0, i32 23
  %745 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %744, i32 0, i32 6
  %746 = load ptr, ptr %745, align 8, !tbaa !38
  %747 = load i64, ptr %7, align 8, !tbaa !28
  %748 = getelementptr inbounds ptr, ptr %746, i64 %747
  %749 = load ptr, ptr %748, align 8, !tbaa !5
  %750 = load i64, ptr %10, align 8, !tbaa !28
  %751 = load i64, ptr %5, align 8, !tbaa !28
  %752 = mul nsw i64 %750, %751
  %753 = load i64, ptr %8, align 8, !tbaa !28
  %754 = add nsw i64 %752, %753
  %755 = getelementptr inbounds double, ptr %749, i64 %754
  store double 1.000000e+00, ptr %755, align 8, !tbaa !39
  br label %756

756:                                              ; preds = %742
  %757 = load i64, ptr %10, align 8, !tbaa !28
  %758 = add nsw i64 %757, 1
  store i64 %758, ptr %10, align 8, !tbaa !28
  br label %737, !llvm.loop !59

759:                                              ; preds = %737
  %760 = load ptr, ptr %3, align 8, !tbaa !5
  %761 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %760, i32 0, i32 23
  %762 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %761, i32 0, i32 6
  %763 = load ptr, ptr %762, align 8, !tbaa !38
  %764 = load i64, ptr %7, align 8, !tbaa !28
  %765 = getelementptr inbounds ptr, ptr %763, i64 %764
  %766 = load ptr, ptr %765, align 8, !tbaa !5
  %767 = load i64, ptr %5, align 8, !tbaa !28
  %768 = load i64, ptr %5, align 8, !tbaa !28
  %769 = mul nsw i64 %767, %768
  %770 = getelementptr inbounds double, ptr %766, i64 %769
  store double 1.000000e+00, ptr %770, align 8, !tbaa !39
  %771 = load ptr, ptr %3, align 8, !tbaa !5
  %772 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %771, i32 0, i32 24
  %773 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %772, i32 0, i32 4
  %774 = load ptr, ptr %773, align 8, !tbaa !38
  %775 = load i64, ptr %7, align 8, !tbaa !28
  %776 = getelementptr inbounds i64, ptr %774, i64 %775
  store i64 0, ptr %776, align 8, !tbaa !28
  %777 = load i64, ptr %7, align 8, !tbaa !28
  %778 = add nsw i64 %777, 1
  store i64 %778, ptr %7, align 8, !tbaa !28
  br label %779

779:                                              ; preds = %759, %706
  br label %780

780:                                              ; preds = %779
  %781 = load i64, ptr %8, align 8, !tbaa !28
  %782 = add nsw i64 %781, 1
  store i64 %782, ptr %8, align 8, !tbaa !28
  br label %701, !llvm.loop !60

783:                                              ; preds = %701
  store i64 0, ptr %8, align 8, !tbaa !28
  br label %784

784:                                              ; preds = %813, %783
  %785 = load i64, ptr %8, align 8, !tbaa !28
  %786 = load i64, ptr %5, align 8, !tbaa !28
  %787 = sub nsw i64 %786, 1
  %788 = icmp sle i64 %785, %787
  br i1 %788, label %789, label %816

789:                                              ; preds = %784
  store i64 0, ptr %9, align 8, !tbaa !28
  br label %790

790:                                              ; preds = %809, %789
  %791 = load i64, ptr %9, align 8, !tbaa !28
  %792 = load i64, ptr %5, align 8, !tbaa !28
  %793 = sub nsw i64 %792, 1
  %794 = icmp sle i64 %791, %793
  br i1 %794, label %795, label %812

795:                                              ; preds = %790
  %796 = load i64, ptr %5, align 8, !tbaa !28
  %797 = sitofp i64 %796 to double
  %798 = fdiv double 1.000000e+00, %797
  %799 = load ptr, ptr %3, align 8, !tbaa !5
  %800 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %799, i32 0, i32 19
  %801 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %800, i32 0, i32 4
  %802 = load ptr, ptr %801, align 8, !tbaa !38
  %803 = load i64, ptr %8, align 8, !tbaa !28
  %804 = load i64, ptr %5, align 8, !tbaa !28
  %805 = mul nsw i64 %803, %804
  %806 = load i64, ptr %9, align 8, !tbaa !28
  %807 = add nsw i64 %805, %806
  %808 = getelementptr inbounds double, ptr %802, i64 %807
  store double %798, ptr %808, align 8, !tbaa !39
  br label %809

809:                                              ; preds = %795
  %810 = load i64, ptr %9, align 8, !tbaa !28
  %811 = add nsw i64 %810, 1
  store i64 %811, ptr %9, align 8, !tbaa !28
  br label %790, !llvm.loop !61

812:                                              ; preds = %790
  br label %813

813:                                              ; preds = %812
  %814 = load i64, ptr %8, align 8, !tbaa !28
  %815 = add nsw i64 %814, 1
  store i64 %815, ptr %8, align 8, !tbaa !28
  br label %784, !llvm.loop !62

816:                                              ; preds = %784
  %817 = load ptr, ptr %3, align 8, !tbaa !5
  %818 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %817, i32 0, i32 13
  %819 = load ptr, ptr %3, align 8, !tbaa !5
  %820 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %819, i32 0, i32 19
  %821 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl19minbleicrestartfromEPNS_13minbleicstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %818, ptr noundef %820, ptr noundef %821)
  %822 = load ptr, ptr %3, align 8, !tbaa !5
  %823 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %822, i32 0, i32 13
  %824 = load ptr, ptr %3, align 8, !tbaa !5
  %825 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %824, i32 0, i32 21
  %826 = load ptr, ptr %3, align 8, !tbaa !5
  %827 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %826, i32 0, i32 22
  %828 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl13minbleicsetbcEPNS_13minbleicstateEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %823, ptr noundef %825, ptr noundef %827, ptr noundef %828)
  %829 = load ptr, ptr %3, align 8, !tbaa !5
  %830 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %829, i32 0, i32 13
  %831 = load ptr, ptr %3, align 8, !tbaa !5
  %832 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %831, i32 0, i32 23
  %833 = load ptr, ptr %3, align 8, !tbaa !5
  %834 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %833, i32 0, i32 24
  %835 = load i64, ptr %7, align 8, !tbaa !28
  %836 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl13minbleicsetlcEPNS_13minbleicstateEPNS_9ae_matrixEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %830, ptr noundef %832, ptr noundef %834, i64 noundef %835, ptr noundef %836)
  %837 = load ptr, ptr %3, align 8, !tbaa !5
  %838 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %837, i32 0, i32 13
  %839 = load double, ptr @_ZN11alglib_implL9mcpd_xtolE, align 8, !tbaa !39
  %840 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl15minbleicsetcondEPNS_13minbleicstateEdddlPNS_8ae_stateE(ptr noundef %838, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef %839, i64 noundef 0, ptr noundef %840)
  %841 = load ptr, ptr %3, align 8, !tbaa !5
  %842 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %841, i32 0, i32 13
  %843 = load ptr, ptr %3, align 8, !tbaa !5
  %844 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %843, i32 0, i32 25
  %845 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl19minbleicsetprecdiagEPNS_13minbleicstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %842, ptr noundef %844, ptr noundef %845)
  br label %846

846:                                              ; preds = %1105, %1104, %816
  %847 = load ptr, ptr %3, align 8, !tbaa !5
  %848 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %847, i32 0, i32 13
  %849 = load ptr, ptr %4, align 8, !tbaa !5
  %850 = call noundef zeroext i1 @_ZN11alglib_impl17minbleiciterationEPNS_13minbleicstateEPNS_8ae_stateE(ptr noundef %848, ptr noundef %849)
  br i1 %850, label %851, label %1106

851:                                              ; preds = %846
  %852 = load ptr, ptr %3, align 8, !tbaa !5
  %853 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %852, i32 0, i32 13
  %854 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %853, i32 0, i32 18
  %855 = load i8, ptr %854, align 1, !tbaa !63, !range !64, !noundef !65
  %856 = trunc i8 %855 to i1
  %857 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %856, ptr noundef @.str.343, ptr noundef %857)
  %858 = load ptr, ptr %3, align 8, !tbaa !5
  %859 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %858, i32 0, i32 13
  %860 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %859, i32 0, i32 18
  %861 = load i8, ptr %860, align 1, !tbaa !63, !range !64, !noundef !65
  %862 = trunc i8 %861 to i1
  br i1 %862, label %863, label %1105

863:                                              ; preds = %851
  %864 = load ptr, ptr %3, align 8, !tbaa !5
  %865 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %864, i32 0, i32 13
  %866 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %865, i32 0, i32 15
  store double 0.000000e+00, ptr %866, align 8, !tbaa !66
  %867 = load ptr, ptr %3, align 8, !tbaa !5
  %868 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %867, i32 0, i32 12
  %869 = load double, ptr %868, align 8, !tbaa !45
  store double %869, ptr %13, align 8, !tbaa !39
  store i64 0, ptr %8, align 8, !tbaa !28
  br label %870

870:                                              ; preds = %957, %863
  %871 = load i64, ptr %8, align 8, !tbaa !28
  %872 = load i64, ptr %5, align 8, !tbaa !28
  %873 = sub nsw i64 %872, 1
  %874 = icmp sle i64 %871, %873
  br i1 %874, label %875, label %960

875:                                              ; preds = %870
  store i64 0, ptr %9, align 8, !tbaa !28
  br label %876

876:                                              ; preds = %953, %875
  %877 = load i64, ptr %9, align 8, !tbaa !28
  %878 = load i64, ptr %5, align 8, !tbaa !28
  %879 = sub nsw i64 %878, 1
  %880 = icmp sle i64 %877, %879
  br i1 %880, label %881, label %956

881:                                              ; preds = %876
  %882 = load ptr, ptr %3, align 8, !tbaa !5
  %883 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %882, i32 0, i32 13
  %884 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %883, i32 0, i32 15
  %885 = load double, ptr %884, align 8, !tbaa !66
  %886 = load double, ptr %13, align 8, !tbaa !39
  %887 = load ptr, ptr %3, align 8, !tbaa !5
  %888 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %887, i32 0, i32 13
  %889 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %888, i32 0, i32 14
  %890 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %889, i32 0, i32 4
  %891 = load ptr, ptr %890, align 8, !tbaa !38
  %892 = load i64, ptr %8, align 8, !tbaa !28
  %893 = load i64, ptr %5, align 8, !tbaa !28
  %894 = mul nsw i64 %892, %893
  %895 = load i64, ptr %9, align 8, !tbaa !28
  %896 = add nsw i64 %894, %895
  %897 = getelementptr inbounds double, ptr %891, i64 %896
  %898 = load double, ptr %897, align 8, !tbaa !39
  %899 = load ptr, ptr %3, align 8, !tbaa !5
  %900 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %899, i32 0, i32 11
  %901 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %900, i32 0, i32 6
  %902 = load ptr, ptr %901, align 8, !tbaa !38
  %903 = load i64, ptr %8, align 8, !tbaa !28
  %904 = getelementptr inbounds ptr, ptr %902, i64 %903
  %905 = load ptr, ptr %904, align 8, !tbaa !5
  %906 = load i64, ptr %9, align 8, !tbaa !28
  %907 = getelementptr inbounds double, ptr %905, i64 %906
  %908 = load double, ptr %907, align 8, !tbaa !39
  %909 = fsub double %898, %908
  %910 = load ptr, ptr %4, align 8, !tbaa !5
  %911 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %909, ptr noundef %910)
  %912 = call double @llvm.fmuladd.f64(double %886, double %911, double %885)
  %913 = load ptr, ptr %3, align 8, !tbaa !5
  %914 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %913, i32 0, i32 13
  %915 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %914, i32 0, i32 15
  store double %912, ptr %915, align 8, !tbaa !66
  %916 = load double, ptr %13, align 8, !tbaa !39
  %917 = fmul double 2.000000e+00, %916
  %918 = load ptr, ptr %3, align 8, !tbaa !5
  %919 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %918, i32 0, i32 13
  %920 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %919, i32 0, i32 14
  %921 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %920, i32 0, i32 4
  %922 = load ptr, ptr %921, align 8, !tbaa !38
  %923 = load i64, ptr %8, align 8, !tbaa !28
  %924 = load i64, ptr %5, align 8, !tbaa !28
  %925 = mul nsw i64 %923, %924
  %926 = load i64, ptr %9, align 8, !tbaa !28
  %927 = add nsw i64 %925, %926
  %928 = getelementptr inbounds double, ptr %922, i64 %927
  %929 = load double, ptr %928, align 8, !tbaa !39
  %930 = load ptr, ptr %3, align 8, !tbaa !5
  %931 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %930, i32 0, i32 11
  %932 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %931, i32 0, i32 6
  %933 = load ptr, ptr %932, align 8, !tbaa !38
  %934 = load i64, ptr %8, align 8, !tbaa !28
  %935 = getelementptr inbounds ptr, ptr %933, i64 %934
  %936 = load ptr, ptr %935, align 8, !tbaa !5
  %937 = load i64, ptr %9, align 8, !tbaa !28
  %938 = getelementptr inbounds double, ptr %936, i64 %937
  %939 = load double, ptr %938, align 8, !tbaa !39
  %940 = fsub double %929, %939
  %941 = fmul double %917, %940
  %942 = load ptr, ptr %3, align 8, !tbaa !5
  %943 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %942, i32 0, i32 13
  %944 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %943, i32 0, i32 16
  %945 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %944, i32 0, i32 4
  %946 = load ptr, ptr %945, align 8, !tbaa !38
  %947 = load i64, ptr %8, align 8, !tbaa !28
  %948 = load i64, ptr %5, align 8, !tbaa !28
  %949 = mul nsw i64 %947, %948
  %950 = load i64, ptr %9, align 8, !tbaa !28
  %951 = add nsw i64 %949, %950
  %952 = getelementptr inbounds double, ptr %946, i64 %951
  store double %941, ptr %952, align 8, !tbaa !39
  br label %953

953:                                              ; preds = %881
  %954 = load i64, ptr %9, align 8, !tbaa !28
  %955 = add nsw i64 %954, 1
  store i64 %955, ptr %9, align 8, !tbaa !28
  br label %876, !llvm.loop !67

956:                                              ; preds = %876
  br label %957

957:                                              ; preds = %956
  %958 = load i64, ptr %8, align 8, !tbaa !28
  %959 = add nsw i64 %958, 1
  store i64 %959, ptr %8, align 8, !tbaa !28
  br label %870, !llvm.loop !68

960:                                              ; preds = %870
  store i64 0, ptr %10, align 8, !tbaa !28
  br label %961

961:                                              ; preds = %1101, %960
  %962 = load i64, ptr %10, align 8, !tbaa !28
  %963 = load i64, ptr %6, align 8, !tbaa !28
  %964 = sub nsw i64 %963, 1
  %965 = icmp sle i64 %962, %964
  br i1 %965, label %966, label %1104

966:                                              ; preds = %961
  store i64 0, ptr %8, align 8, !tbaa !28
  br label %967

967:                                              ; preds = %1097, %966
  %968 = load i64, ptr %8, align 8, !tbaa !28
  %969 = load i64, ptr %5, align 8, !tbaa !28
  %970 = sub nsw i64 %969, 1
  %971 = icmp sle i64 %968, %970
  br i1 %971, label %972, label %1100

972:                                              ; preds = %967
  %973 = load ptr, ptr %3, align 8, !tbaa !5
  %974 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %973, i32 0, i32 13
  %975 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %974, i32 0, i32 14
  %976 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %975, i32 0, i32 4
  %977 = load ptr, ptr %976, align 8, !tbaa !38
  %978 = load i64, ptr %8, align 8, !tbaa !28
  %979 = load i64, ptr %5, align 8, !tbaa !28
  %980 = mul nsw i64 %978, %979
  %981 = getelementptr inbounds double, ptr %977, i64 %980
  %982 = load ptr, ptr %3, align 8, !tbaa !5
  %983 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %982, i32 0, i32 3
  %984 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %983, i32 0, i32 6
  %985 = load ptr, ptr %984, align 8, !tbaa !38
  %986 = load i64, ptr %10, align 8, !tbaa !28
  %987 = getelementptr inbounds ptr, ptr %985, i64 %986
  %988 = load ptr, ptr %987, align 8, !tbaa !5
  %989 = getelementptr inbounds double, ptr %988, i64 0
  %990 = load i64, ptr %8, align 8, !tbaa !28
  %991 = load i64, ptr %5, align 8, !tbaa !28
  %992 = mul nsw i64 %990, %991
  %993 = load i64, ptr %8, align 8, !tbaa !28
  %994 = load i64, ptr %5, align 8, !tbaa !28
  %995 = mul nsw i64 %993, %994
  %996 = load i64, ptr %5, align 8, !tbaa !28
  %997 = add nsw i64 %995, %996
  %998 = sub nsw i64 %997, 1
  %999 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %992, i64 noundef %998)
  %1000 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %981, i64 noundef 1, ptr noundef %989, i64 noundef 1, i64 noundef %999)
  store double %1000, ptr %12, align 8, !tbaa !39
  %1001 = load ptr, ptr %3, align 8, !tbaa !5
  %1002 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1001, i32 0, i32 20
  %1003 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1002, i32 0, i32 4
  %1004 = load ptr, ptr %1003, align 8, !tbaa !38
  %1005 = load i64, ptr %8, align 8, !tbaa !28
  %1006 = getelementptr inbounds double, ptr %1004, i64 %1005
  %1007 = load double, ptr %1006, align 8, !tbaa !39
  store double %1007, ptr %13, align 8, !tbaa !39
  %1008 = load ptr, ptr %3, align 8, !tbaa !5
  %1009 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1008, i32 0, i32 13
  %1010 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %1009, i32 0, i32 15
  %1011 = load double, ptr %1010, align 8, !tbaa !66
  %1012 = load double, ptr %13, align 8, !tbaa !39
  %1013 = load double, ptr %12, align 8, !tbaa !39
  %1014 = load ptr, ptr %3, align 8, !tbaa !5
  %1015 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1014, i32 0, i32 3
  %1016 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1015, i32 0, i32 6
  %1017 = load ptr, ptr %1016, align 8, !tbaa !38
  %1018 = load i64, ptr %10, align 8, !tbaa !28
  %1019 = getelementptr inbounds ptr, ptr %1017, i64 %1018
  %1020 = load ptr, ptr %1019, align 8, !tbaa !5
  %1021 = load i64, ptr %5, align 8, !tbaa !28
  %1022 = load i64, ptr %8, align 8, !tbaa !28
  %1023 = add nsw i64 %1021, %1022
  %1024 = getelementptr inbounds double, ptr %1020, i64 %1023
  %1025 = load double, ptr %1024, align 8, !tbaa !39
  %1026 = fsub double %1013, %1025
  %1027 = fmul double %1012, %1026
  %1028 = load ptr, ptr %4, align 8, !tbaa !5
  %1029 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1027, ptr noundef %1028)
  %1030 = fadd double %1011, %1029
  %1031 = load ptr, ptr %3, align 8, !tbaa !5
  %1032 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1031, i32 0, i32 13
  %1033 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %1032, i32 0, i32 15
  store double %1030, ptr %1033, align 8, !tbaa !66
  store i64 0, ptr %9, align 8, !tbaa !28
  br label %1034

1034:                                             ; preds = %1093, %972
  %1035 = load i64, ptr %9, align 8, !tbaa !28
  %1036 = load i64, ptr %5, align 8, !tbaa !28
  %1037 = sub nsw i64 %1036, 1
  %1038 = icmp sle i64 %1035, %1037
  br i1 %1038, label %1039, label %1096

1039:                                             ; preds = %1034
  %1040 = load ptr, ptr %3, align 8, !tbaa !5
  %1041 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1040, i32 0, i32 13
  %1042 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %1041, i32 0, i32 16
  %1043 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1042, i32 0, i32 4
  %1044 = load ptr, ptr %1043, align 8, !tbaa !38
  %1045 = load i64, ptr %8, align 8, !tbaa !28
  %1046 = load i64, ptr %5, align 8, !tbaa !28
  %1047 = mul nsw i64 %1045, %1046
  %1048 = load i64, ptr %9, align 8, !tbaa !28
  %1049 = add nsw i64 %1047, %1048
  %1050 = getelementptr inbounds double, ptr %1044, i64 %1049
  %1051 = load double, ptr %1050, align 8, !tbaa !39
  %1052 = load double, ptr %13, align 8, !tbaa !39
  %1053 = fmul double 2.000000e+00, %1052
  %1054 = load double, ptr %13, align 8, !tbaa !39
  %1055 = fmul double %1053, %1054
  %1056 = load double, ptr %12, align 8, !tbaa !39
  %1057 = load ptr, ptr %3, align 8, !tbaa !5
  %1058 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1057, i32 0, i32 3
  %1059 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1058, i32 0, i32 6
  %1060 = load ptr, ptr %1059, align 8, !tbaa !38
  %1061 = load i64, ptr %10, align 8, !tbaa !28
  %1062 = getelementptr inbounds ptr, ptr %1060, i64 %1061
  %1063 = load ptr, ptr %1062, align 8, !tbaa !5
  %1064 = load i64, ptr %5, align 8, !tbaa !28
  %1065 = load i64, ptr %8, align 8, !tbaa !28
  %1066 = add nsw i64 %1064, %1065
  %1067 = getelementptr inbounds double, ptr %1063, i64 %1066
  %1068 = load double, ptr %1067, align 8, !tbaa !39
  %1069 = fsub double %1056, %1068
  %1070 = fmul double %1055, %1069
  %1071 = load ptr, ptr %3, align 8, !tbaa !5
  %1072 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1071, i32 0, i32 3
  %1073 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1072, i32 0, i32 6
  %1074 = load ptr, ptr %1073, align 8, !tbaa !38
  %1075 = load i64, ptr %10, align 8, !tbaa !28
  %1076 = getelementptr inbounds ptr, ptr %1074, i64 %1075
  %1077 = load ptr, ptr %1076, align 8, !tbaa !5
  %1078 = load i64, ptr %9, align 8, !tbaa !28
  %1079 = getelementptr inbounds double, ptr %1077, i64 %1078
  %1080 = load double, ptr %1079, align 8, !tbaa !39
  %1081 = call double @llvm.fmuladd.f64(double %1070, double %1080, double %1051)
  %1082 = load ptr, ptr %3, align 8, !tbaa !5
  %1083 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1082, i32 0, i32 13
  %1084 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %1083, i32 0, i32 16
  %1085 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1084, i32 0, i32 4
  %1086 = load ptr, ptr %1085, align 8, !tbaa !38
  %1087 = load i64, ptr %8, align 8, !tbaa !28
  %1088 = load i64, ptr %5, align 8, !tbaa !28
  %1089 = mul nsw i64 %1087, %1088
  %1090 = load i64, ptr %9, align 8, !tbaa !28
  %1091 = add nsw i64 %1089, %1090
  %1092 = getelementptr inbounds double, ptr %1086, i64 %1091
  store double %1081, ptr %1092, align 8, !tbaa !39
  br label %1093

1093:                                             ; preds = %1039
  %1094 = load i64, ptr %9, align 8, !tbaa !28
  %1095 = add nsw i64 %1094, 1
  store i64 %1095, ptr %9, align 8, !tbaa !28
  br label %1034, !llvm.loop !69

1096:                                             ; preds = %1034
  br label %1097

1097:                                             ; preds = %1096
  %1098 = load i64, ptr %8, align 8, !tbaa !28
  %1099 = add nsw i64 %1098, 1
  store i64 %1099, ptr %8, align 8, !tbaa !28
  br label %967, !llvm.loop !70

1100:                                             ; preds = %967
  br label %1101

1101:                                             ; preds = %1100
  %1102 = load i64, ptr %10, align 8, !tbaa !28
  %1103 = add nsw i64 %1102, 1
  store i64 %1103, ptr %10, align 8, !tbaa !28
  br label %961, !llvm.loop !71

1104:                                             ; preds = %961
  br label %846, !llvm.loop !72

1105:                                             ; preds = %851
  br label %846, !llvm.loop !72

1106:                                             ; preds = %846
  %1107 = load ptr, ptr %3, align 8, !tbaa !5
  %1108 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1107, i32 0, i32 13
  %1109 = load ptr, ptr %3, align 8, !tbaa !5
  %1110 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1109, i32 0, i32 19
  %1111 = load ptr, ptr %3, align 8, !tbaa !5
  %1112 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1111, i32 0, i32 18
  %1113 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl18minbleicresultsbufEPNS_13minbleicstateEPNS_9ae_vectorEPNS_14minbleicreportEPNS_8ae_stateE(ptr noundef %1108, ptr noundef %1110, ptr noundef %1112, ptr noundef %1113)
  store i64 0, ptr %8, align 8, !tbaa !28
  br label %1114

1114:                                             ; preds = %1150, %1106
  %1115 = load i64, ptr %8, align 8, !tbaa !28
  %1116 = load i64, ptr %5, align 8, !tbaa !28
  %1117 = sub nsw i64 %1116, 1
  %1118 = icmp sle i64 %1115, %1117
  br i1 %1118, label %1119, label %1153

1119:                                             ; preds = %1114
  store i64 0, ptr %9, align 8, !tbaa !28
  br label %1120

1120:                                             ; preds = %1146, %1119
  %1121 = load i64, ptr %9, align 8, !tbaa !28
  %1122 = load i64, ptr %5, align 8, !tbaa !28
  %1123 = sub nsw i64 %1122, 1
  %1124 = icmp sle i64 %1121, %1123
  br i1 %1124, label %1125, label %1149

1125:                                             ; preds = %1120
  %1126 = load ptr, ptr %3, align 8, !tbaa !5
  %1127 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1126, i32 0, i32 19
  %1128 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1127, i32 0, i32 4
  %1129 = load ptr, ptr %1128, align 8, !tbaa !38
  %1130 = load i64, ptr %8, align 8, !tbaa !28
  %1131 = load i64, ptr %5, align 8, !tbaa !28
  %1132 = mul nsw i64 %1130, %1131
  %1133 = load i64, ptr %9, align 8, !tbaa !28
  %1134 = add nsw i64 %1132, %1133
  %1135 = getelementptr inbounds double, ptr %1129, i64 %1134
  %1136 = load double, ptr %1135, align 8, !tbaa !39
  %1137 = load ptr, ptr %3, align 8, !tbaa !5
  %1138 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1137, i32 0, i32 26
  %1139 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1138, i32 0, i32 6
  %1140 = load ptr, ptr %1139, align 8, !tbaa !38
  %1141 = load i64, ptr %8, align 8, !tbaa !28
  %1142 = getelementptr inbounds ptr, ptr %1140, i64 %1141
  %1143 = load ptr, ptr %1142, align 8, !tbaa !5
  %1144 = load i64, ptr %9, align 8, !tbaa !28
  %1145 = getelementptr inbounds double, ptr %1143, i64 %1144
  store double %1136, ptr %1145, align 8, !tbaa !39
  br label %1146

1146:                                             ; preds = %1125
  %1147 = load i64, ptr %9, align 8, !tbaa !28
  %1148 = add nsw i64 %1147, 1
  store i64 %1148, ptr %9, align 8, !tbaa !28
  br label %1120, !llvm.loop !73

1149:                                             ; preds = %1120
  br label %1150

1150:                                             ; preds = %1149
  %1151 = load i64, ptr %8, align 8, !tbaa !28
  %1152 = add nsw i64 %1151, 1
  store i64 %1152, ptr %8, align 8, !tbaa !28
  br label %1114, !llvm.loop !74

1153:                                             ; preds = %1114
  %1154 = load ptr, ptr %3, align 8, !tbaa !5
  %1155 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1154, i32 0, i32 18
  %1156 = getelementptr inbounds %"struct.alglib_impl::minbleicreport", ptr %1155, i32 0, i32 3
  %1157 = load i64, ptr %1156, align 8, !tbaa !75
  %1158 = load ptr, ptr %3, align 8, !tbaa !5
  %1159 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1158, i32 0, i32 17
  store i64 %1157, ptr %1159, align 8, !tbaa !30
  %1160 = load ptr, ptr %3, align 8, !tbaa !5
  %1161 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1160, i32 0, i32 18
  %1162 = getelementptr inbounds %"struct.alglib_impl::minbleicreport", ptr %1161, i32 0, i32 10
  %1163 = load i64, ptr %1162, align 8, !tbaa !76
  %1164 = load ptr, ptr %3, align 8, !tbaa !5
  %1165 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1164, i32 0, i32 14
  store i64 %1163, ptr %1165, align 8, !tbaa !31
  %1166 = load ptr, ptr %3, align 8, !tbaa !5
  %1167 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1166, i32 0, i32 18
  %1168 = getelementptr inbounds %"struct.alglib_impl::minbleicreport", ptr %1167, i32 0, i32 11
  %1169 = load i64, ptr %1168, align 8, !tbaa !77
  %1170 = load ptr, ptr %3, align 8, !tbaa !5
  %1171 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1170, i32 0, i32 15
  store i64 %1169, ptr %1171, align 8, !tbaa !32
  %1172 = load ptr, ptr %3, align 8, !tbaa !5
  %1173 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1172, i32 0, i32 18
  %1174 = getelementptr inbounds %"struct.alglib_impl::minbleicreport", ptr %1173, i32 0, i32 1
  %1175 = load i64, ptr %1174, align 8, !tbaa !78
  %1176 = load ptr, ptr %3, align 8, !tbaa !5
  %1177 = getelementptr inbounds %"struct.alglib_impl::mcpdstate", ptr %1176, i32 0, i32 16
  store i64 %1175, ptr %1177, align 8, !tbaa !33
  store i32 0, ptr %14, align 4
  br label %1178

1178:                                             ; preds = %1153, %570, %508
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #4
  %1179 = load i32, ptr %14, align 4
  switch i32 %1179, label %1181 [
    i32 0, label %1180
    i32 1, label %1180
  ]

1180:                                             ; preds = %1178, %1178
  ret void

1181:                                             ; preds = %1178
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl19minbleicrestartfromEPNS_13minbleicstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) #1

declare void @_ZN11alglib_impl13minbleicsetbcEPNS_13minbleicstateEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

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

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

declare void @_ZN11alglib_impl19minbleicsetprecdiagEPNS_13minbleicstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) #1

declare noundef zeroext i1 @_ZN11alglib_impl17minbleiciterationEPNS_13minbleicstateEPNS_8ae_stateE(ptr noundef, ptr noundef) #1

declare void @_ZN11alglib_impl18minbleicresultsbufEPNS_13minbleicstateEPNS_9ae_vectorEPNS_14minbleicreportEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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, !11, i64 0}
!10 = !{!"_ZTSN11alglib_impl9mcpdstateE", !11, i64 0, !12, i64 8, !11, i64 72, !15, i64 80, !15, i64 160, !15, i64 240, !15, i64 320, !15, i64 400, !12, i64 480, !11, i64 544, !12, i64 552, !15, i64 616, !16, i64 696, !17, i64 704, !11, i64 13240, !11, i64 13248, !11, i64 13256, !11, i64 13264, !27, i64 13272, !12, i64 13368, !12, i64 13432, !12, i64 13496, !12, i64 13560, !15, i64 13624, !12, i64 13704, !12, i64 13768, !15, i64 13832}
!11 = !{!"long", !7, i64 0}
!12 = !{!"_ZTSN11alglib_impl9ae_vectorE", !11, i64 0, !11, i64 8, !13, i64 16, !14, i64 24, !7, i64 56}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!15 = !{!"_ZTSN11alglib_impl9ae_matrixE", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !13, i64 32, !14, i64 40, !7, i64 72}
!16 = !{!"double", !7, i64 0}
!17 = !{!"_ZTSN11alglib_impl13minbleicstateE", !11, i64 0, !11, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !11, i64 40, !13, i64 48, !13, i64 49, !16, i64 56, !16, i64 64, !18, i64 72, !12, i64 4416, !11, i64 4480, !12, i64 4488, !12, i64 4552, !16, i64 4616, !12, i64 4624, !13, i64 4688, !13, i64 4689, !13, i64 4690, !13, i64 4691, !13, i64 4692, !13, i64 4693, !13, i64 4694, !20, i64 4696, !12, i64 4960, !12, i64 5024, !12, i64 5088, !12, i64 5152, !12, i64 5216, !12, i64 5280, !16, i64 5344, !16, i64 5352, !16, i64 5360, !12, i64 5368, !15, i64 5432, !11, i64 5512, !11, i64 5520, !16, i64 5528, !16, i64 5536, !16, i64 5544, !12, i64 5552, !12, i64 5616, !12, i64 5680, !12, i64 5744, !11, i64 5808, !11, i64 5816, !11, i64 5824, !11, i64 5832, !11, i64 5840, !16, i64 5848, !16, i64 5856, !16, i64 5864, !16, i64 5872, !11, i64 5880, !11, i64 5888, !12, i64 5896, !19, i64 5960, !16, i64 7600, !16, i64 7608, !16, i64 7616, !16, i64 7624, !16, i64 7632, !16, i64 7640, !16, i64 7648, !16, i64 7656, !16, i64 7664, !11, i64 7672, !16, i64 7680, !12, i64 7688, !12, i64 7752, !11, i64 7816, !11, i64 7824, !16, i64 7832, !16, i64 7840, !16, i64 7848, !12, i64 7856, !22, i64 7920, !16, i64 8112, !11, i64 8120, !15, i64 8128, !15, i64 8208, !12, i64 8288, !12, i64 8352, !11, i64 8416, !16, i64 8424, !11, i64 8432, !23, i64 8440, !12, i64 12408, !12, i64 12472}
!18 = !{!"_ZTSN11alglib_impl10sactivesetE", !11, i64 0, !11, i64 8, !12, i64 16, !13, i64 80, !12, i64 88, !12, i64 152, !12, i64 216, !13, i64 280, !15, i64 288, !15, i64 368, !15, i64 448, !11, i64 528, !12, i64 536, !11, i64 600, !11, i64 608, !13, i64 616, !13, i64 617, !12, i64 624, !12, i64 688, !12, i64 752, !12, i64 816, !15, i64 880, !11, i64 960, !11, i64 968, !12, i64 976, !12, i64 1040, !12, i64 1104, !12, i64 1168, !12, i64 1232, !12, i64 1296, !19, i64 1360, !12, i64 3000, !12, i64 3064, !12, i64 3128, !15, i64 3192, !12, i64 3272, !12, i64 3336, !12, i64 3400, !15, i64 3464, !15, i64 3544, !12, i64 3624, !12, i64 3688, !12, i64 3752, !15, i64 3816, !12, i64 3896, !12, i64 3960, !12, i64 4024, !12, i64 4088, !12, i64 4152, !12, i64 4216, !12, i64 4280}
!19 = !{!"_ZTSN11alglib_impl11snnlssolverE", !11, i64 0, !11, i64 8, !11, i64 16, !15, i64 24, !12, i64 104, !12, i64 168, !16, i64 232, !11, i64 240, !12, i64 248, !12, i64 312, !15, i64 376, !15, i64 456, !15, i64 536, !12, i64 616, !12, i64 680, !12, i64 744, !12, i64 808, !12, i64 872, !12, i64 936, !12, i64 1000, !12, i64 1064, !12, i64 1128, !12, i64 1192, !12, i64 1256, !12, i64 1320, !12, i64 1384, !12, i64 1448, !12, i64 1512, !12, i64 1576}
!20 = !{!"_ZTSN11alglib_impl10rcommstateE", !21, i64 0, !12, i64 8, !12, i64 72, !12, i64 136, !12, i64 200}
!21 = !{!"int", !7, i64 0}
!22 = !{!"_ZTSN11alglib_impl11linminstateE", !13, i64 0, !13, i64 1, !11, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !16, i64 56, !16, i64 64, !16, i64 72, !16, i64 80, !16, i64 88, !16, i64 96, !16, i64 104, !16, i64 112, !16, i64 120, !16, i64 128, !16, i64 136, !16, i64 144, !16, i64 152, !16, i64 160, !16, i64 168, !16, i64 176, !16, i64 184}
!23 = !{!"_ZTSN11alglib_impl17smoothnessmonitorE", !11, i64 0, !11, i64 8, !13, i64 16, !12, i64 24, !11, i64 88, !12, i64 96, !12, i64 160, !12, i64 224, !15, i64 288, !12, i64 368, !12, i64 432, !11, i64 496, !13, i64 504, !13, i64 505, !16, i64 512, !16, i64 520, !13, i64 528, !24, i64 536, !16, i64 832, !16, i64 840, !25, i64 848, !25, i64 1152, !16, i64 1456, !16, i64 1464, !26, i64 1472, !26, i64 1784, !13, i64 2096, !12, i64 2104, !12, i64 2168, !15, i64 2232, !20, i64 2312, !12, i64 2576, !12, i64 2640, !12, i64 2704, !12, i64 2768, !12, i64 2832, !12, i64 2896, !12, i64 2960, !12, i64 3024, !15, i64 3088, !15, i64 3168, !12, i64 3248, !12, i64 3312, !12, i64 3376, !12, i64 3440, !12, i64 3504, !12, i64 3568, !12, i64 3632, !12, i64 3696, !12, i64 3760, !12, i64 3824, !15, i64 3888}
!24 = !{!"_ZTSN11alglib_impl14optguardreportE", !13, i64 0, !13, i64 1, !11, i64 8, !16, i64 16, !13, i64 24, !13, i64 25, !13, i64 26, !11, i64 32, !16, i64 40, !13, i64 48, !11, i64 56, !11, i64 64, !12, i64 72, !15, i64 136, !15, i64 216}
!25 = !{!"_ZTSN11alglib_impl24optguardnonc1test0reportE", !13, i64 0, !11, i64 8, !12, i64 16, !12, i64 80, !11, i64 144, !12, i64 152, !12, i64 216, !11, i64 280, !11, i64 288, !11, i64 296}
!26 = !{!"_ZTSN11alglib_impl24optguardnonc1test1reportE", !13, i64 0, !11, i64 8, !11, i64 16, !12, i64 24, !12, i64 88, !11, i64 152, !12, i64 160, !12, i64 224, !11, i64 288, !11, i64 296, !11, i64 304}
!27 = !{!"_ZTSN11alglib_impl14minbleicreportE", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !16, i64 32, !16, i64 40, !16, i64 48, !16, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88}
!28 = !{!11, !11, i64 0}
!29 = !{!10, !11, i64 72}
!30 = !{!10, !11, i64 13264}
!31 = !{!10, !11, i64 13240}
!32 = !{!10, !11, i64 13248}
!33 = !{!10, !11, i64 13256}
!34 = !{!35, !16, i64 8}
!35 = !{!"_ZTSN11alglib_impl8ae_stateE", !11, i64 0, !16, i64 8, !16, i64 16, !16, i64 24, !6, i64 32, !14, i64 40, !6, i64 72, !36, i64 80, !6, i64 88, !37, i64 96, !6, i64 104, !6, i64 112, !6, i64 120}
!36 = !{!"_ZTSN11alglib_impl13ae_error_typeE", !7, i64 0}
!37 = !{!"long long", !7, i64 0}
!38 = !{!7, !7, i64 0}
!39 = !{!16, !16, i64 0}
!40 = distinct !{!40, !41}
!41 = !{!"llvm.loop.mustprogress"}
!42 = distinct !{!42, !41}
!43 = distinct !{!43, !41}
!44 = distinct !{!44, !41}
!45 = !{!10, !16, i64 696}
!46 = distinct !{!46, !41}
!47 = distinct !{!47, !41}
!48 = distinct !{!48, !41}
!49 = distinct !{!49, !41}
!50 = distinct !{!50, !41}
!51 = distinct !{!51, !41}
!52 = distinct !{!52, !41}
!53 = distinct !{!53, !41}
!54 = distinct !{!54, !41}
!55 = !{!10, !11, i64 544}
!56 = distinct !{!56, !41}
!57 = distinct !{!57, !41}
!58 = distinct !{!58, !41}
!59 = distinct !{!59, !41}
!60 = distinct !{!60, !41}
!61 = distinct !{!61, !41}
!62 = distinct !{!62, !41}
!63 = !{!10, !13, i64 5393}
!64 = !{i8 0, i8 2}
!65 = !{}
!66 = !{!10, !16, i64 5320}
!67 = distinct !{!67, !41}
!68 = distinct !{!68, !41}
!69 = distinct !{!69, !41}
!70 = distinct !{!70, !41}
!71 = distinct !{!71, !41}
!72 = distinct !{!72, !41}
!73 = distinct !{!73, !41}
!74 = distinct !{!74, !41}
!75 = !{!10, !11, i64 13296}
!76 = !{!10, !11, i64 13352}
!77 = !{!10, !11, i64 13360}
!78 = !{!10, !11, i64 13280}


; 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_implL9mcpd_xtolE = external hidden local_unnamed_addr global double, align 8
@.str.343 = external hidden unnamed_addr constant [26 x i8], align 1

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl9mcpdsolveEPNS_9mcpdstateEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) local_unnamed_addr #1 {
  %3 = load i64, ptr %0, align 8, !tbaa !5
  %4 = getelementptr inbounds i8, ptr %0, i64 72
  %5 = load i64, ptr %4, align 8, !tbaa !27
  %6 = getelementptr inbounds i8, ptr %0, i64 13264
  %7 = getelementptr inbounds i8, ptr %0, i64 13240
  %8 = getelementptr inbounds i8, ptr %0, i64 13256
  %.not.not459 = icmp slt i64 %3, 1
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %7, i8 0, i64 32, i1 false)
  br i1 %.not.not459, label %.preheader451, label %.preheader456.lr.ph

.preheader456.lr.ph:                              ; preds = %2
  %9 = getelementptr inbounds i8, ptr %1, i64 8
  %10 = getelementptr inbounds i8, ptr %0, i64 13904
  %11 = add nsw i64 %3, -1
  %xtraiter = and i64 %3, 3
  %12 = icmp ult i64 %3, 4
  %unroll_iter = and i64 %3, 9223372036854775804
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %.preheader456.us

.preheader456.us:                                 ; preds = %._crit_edge.us, %.preheader456.lr.ph
  %.0386460.us = phi i64 [ 0, %.preheader456.lr.ph ], [ %38, %._crit_edge.us ]
  %.pre = load double, ptr %9, align 8, !tbaa !28
  br i1 %12, label %._crit_edge.us.unr-lcssa, label %.preheader456.us.new

.preheader456.us.new:                             ; preds = %.preheader456.us, %.preheader456.us.new
  %.0385458.us = phi i64 [ %32, %.preheader456.us.new ], [ 0, %.preheader456.us ]
  %niter = phi i64 [ %niter.next.3, %.preheader456.us.new ], [ 0, %.preheader456.us ]
  %13 = load ptr, ptr %10, align 8, !tbaa !32
  %14 = getelementptr inbounds ptr, ptr %13, i64 %.0386460.us
  %15 = load ptr, ptr %14, align 8, !tbaa !33
  %16 = getelementptr inbounds double, ptr %15, i64 %.0385458.us
  store double %.pre, ptr %16, align 8, !tbaa !34
  %17 = or disjoint i64 %.0385458.us, 1
  %18 = load ptr, ptr %10, align 8, !tbaa !32
  %19 = getelementptr inbounds ptr, ptr %18, i64 %.0386460.us
  %20 = load ptr, ptr %19, align 8, !tbaa !33
  %21 = getelementptr inbounds double, ptr %20, i64 %17
  store double %.pre, ptr %21, align 8, !tbaa !34
  %22 = or disjoint i64 %.0385458.us, 2
  %23 = load ptr, ptr %10, align 8, !tbaa !32
  %24 = getelementptr inbounds ptr, ptr %23, i64 %.0386460.us
  %25 = load ptr, ptr %24, align 8, !tbaa !33
  %26 = getelementptr inbounds double, ptr %25, i64 %22
  store double %.pre, ptr %26, align 8, !tbaa !34
  %27 = or disjoint i64 %.0385458.us, 3
  %28 = load ptr, ptr %10, align 8, !tbaa !32
  %29 = getelementptr inbounds ptr, ptr %28, i64 %.0386460.us
  %30 = load ptr, ptr %29, align 8, !tbaa !33
  %31 = getelementptr inbounds double, ptr %30, i64 %27
  store double %.pre, ptr %31, align 8, !tbaa !34
  %32 = add nuw nsw i64 %.0385458.us, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge.us.unr-lcssa, label %.preheader456.us.new, !llvm.loop !35

._crit_edge.us.unr-lcssa:                         ; preds = %.preheader456.us.new, %.preheader456.us
  %.0385458.us.unr = phi i64 [ 0, %.preheader456.us ], [ %32, %.preheader456.us.new ]
  br i1 %lcmp.mod.not, label %._crit_edge.us, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge.us.unr-lcssa, %.epil.preheader
  %.0385458.us.epil = phi i64 [ %37, %.epil.preheader ], [ %.0385458.us.unr, %._crit_edge.us.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %._crit_edge.us.unr-lcssa ]
  %33 = load ptr, ptr %10, align 8, !tbaa !32
  %34 = getelementptr inbounds ptr, ptr %33, i64 %.0386460.us
  %35 = load ptr, ptr %34, align 8, !tbaa !33
  %36 = getelementptr inbounds double, ptr %35, i64 %.0385458.us.epil
  store double %.pre, ptr %36, align 8, !tbaa !34
  %37 = add nuw nsw i64 %.0385458.us.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge.us, label %.epil.preheader, !llvm.loop !37

._crit_edge.us:                                   ; preds = %.epil.preheader, %._crit_edge.us.unr-lcssa
  %38 = add nuw nsw i64 %.0386460.us, 1
  %exitcond551.not = icmp eq i64 %38, %3
  br i1 %exitcond551.not, label %.preheader455, label %.preheader456.us, !llvm.loop !39

.preheader455:                                    ; preds = %._crit_edge.us
  br i1 %.not.not459, label %.preheader451, label %.lr.ph468

.lr.ph468:                                        ; preds = %.preheader455
  %39 = getelementptr inbounds i8, ptr %0, i64 608
  %40 = getelementptr inbounds i8, ptr %0, i64 13488
  %.not433.not461 = icmp sgt i64 %5, 0
  %41 = getelementptr inbounds i8, ptr %0, i64 152
  br label %77

.preheader453:                                    ; preds = %._crit_edge.thread
  br i1 %.not.not459, label %.preheader451, label %.preheader452.lr.ph

.preheader452.lr.ph:                              ; preds = %.preheader453
  %42 = getelementptr inbounds i8, ptr %0, i64 696
  %43 = getelementptr inbounds i8, ptr %0, i64 13824
  %xtraiter587 = and i64 %3, 3
  %44 = icmp ult i64 %11, 3
  %unroll_iter590 = and i64 %3, 9223372036854775804
  %lcmp.mod589.not = icmp eq i64 %xtraiter587, 0
  br label %.preheader452.us

.preheader452.us:                                 ; preds = %._crit_edge472.us, %.preheader452.lr.ph
  %.1396474.us = phi i64 [ 0, %.preheader452.lr.ph ], [ %76, %._crit_edge472.us ]
  %45 = mul nuw nsw i64 %.1396474.us, %3
  br i1 %44, label %._crit_edge472.us.unr-lcssa, label %.preheader452.us.new

.preheader452.us.new:                             ; preds = %.preheader452.us, %.preheader452.us.new
  %.1389470.us = phi i64 [ %69, %.preheader452.us.new ], [ 0, %.preheader452.us ]
  %niter591 = phi i64 [ %niter591.next.3, %.preheader452.us.new ], [ 0, %.preheader452.us ]
  %46 = load double, ptr %42, align 8, !tbaa !40
  %47 = fmul double %46, 2.000000e+00
  %48 = load ptr, ptr %43, align 8, !tbaa !32
  %49 = getelementptr double, ptr %48, i64 %45
  %50 = getelementptr double, ptr %49, i64 %.1389470.us
  store double %47, ptr %50, align 8, !tbaa !34
  %51 = or disjoint i64 %.1389470.us, 1
  %52 = load double, ptr %42, align 8, !tbaa !40
  %53 = fmul double %52, 2.000000e+00
  %54 = load ptr, ptr %43, align 8, !tbaa !32
  %55 = getelementptr double, ptr %54, i64 %45
  %56 = getelementptr double, ptr %55, i64 %51
  store double %53, ptr %56, align 8, !tbaa !34
  %57 = or disjoint i64 %.1389470.us, 2
  %58 = load double, ptr %42, align 8, !tbaa !40
  %59 = fmul double %58, 2.000000e+00
  %60 = load ptr, ptr %43, align 8, !tbaa !32
  %61 = getelementptr double, ptr %60, i64 %45
  %62 = getelementptr double, ptr %61, i64 %57
  store double %59, ptr %62, align 8, !tbaa !34
  %63 = or disjoint i64 %.1389470.us, 3
  %64 = load double, ptr %42, align 8, !tbaa !40
  %65 = fmul double %64, 2.000000e+00
  %66 = load ptr, ptr %43, align 8, !tbaa !32
  %67 = getelementptr double, ptr %66, i64 %45
  %68 = getelementptr double, ptr %67, i64 %63
  store double %65, ptr %68, align 8, !tbaa !34
  %69 = add nuw nsw i64 %.1389470.us, 4
  %niter591.next.3 = add i64 %niter591, 4
  %niter591.ncmp.3 = icmp eq i64 %niter591.next.3, %unroll_iter590
  br i1 %niter591.ncmp.3, label %._crit_edge472.us.unr-lcssa, label %.preheader452.us.new, !llvm.loop !41

._crit_edge472.us.unr-lcssa:                      ; preds = %.preheader452.us.new, %.preheader452.us
  %.1389470.us.unr = phi i64 [ 0, %.preheader452.us ], [ %69, %.preheader452.us.new ]
  br i1 %lcmp.mod589.not, label %._crit_edge472.us, label %.epil.preheader586

.epil.preheader586:                               ; preds = %._crit_edge472.us.unr-lcssa, %.epil.preheader586
  %.1389470.us.epil = phi i64 [ %75, %.epil.preheader586 ], [ %.1389470.us.unr, %._crit_edge472.us.unr-lcssa ]
  %epil.iter588 = phi i64 [ %epil.iter588.next, %.epil.preheader586 ], [ 0, %._crit_edge472.us.unr-lcssa ]
  %70 = load double, ptr %42, align 8, !tbaa !40
  %71 = fmul double %70, 2.000000e+00
  %72 = load ptr, ptr %43, align 8, !tbaa !32
  %73 = getelementptr double, ptr %72, i64 %45
  %74 = getelementptr double, ptr %73, i64 %.1389470.us.epil
  store double %71, ptr %74, align 8, !tbaa !34
  %75 = add nuw nsw i64 %.1389470.us.epil, 1
  %epil.iter588.next = add i64 %epil.iter588, 1
  %epil.iter588.cmp.not = icmp eq i64 %epil.iter588.next, %xtraiter587
  br i1 %epil.iter588.cmp.not, label %._crit_edge472.us, label %.epil.preheader586, !llvm.loop !42

._crit_edge472.us:                                ; preds = %.epil.preheader586, %._crit_edge472.us.unr-lcssa
  %76 = add nuw nsw i64 %.1396474.us, 1
  %exitcond555.not = icmp eq i64 %76, %3
  br i1 %exitcond555.not, label %.preheader451, label %.preheader452.us, !llvm.loop !43

77:                                               ; preds = %.lr.ph468, %._crit_edge.thread
  %.0395467 = phi i64 [ 0, %.lr.ph468 ], [ %109, %._crit_edge.thread ]
  %78 = load ptr, ptr %39, align 8, !tbaa !32
  %79 = getelementptr inbounds double, ptr %78, i64 %.0395467
  %80 = load double, ptr %79, align 8, !tbaa !34
  %81 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %80, double noundef 0.000000e+00)
  br i1 %81, label %.preheader454, label %103

.preheader454:                                    ; preds = %77
  br i1 %.not433.not461, label %.lr.ph, label %._crit_edge.thread

.lr.ph:                                           ; preds = %.preheader454
  %82 = add nuw nsw i64 %.0395467, %3
  br label %83

83:                                               ; preds = %.lr.ph, %98
  %.0464 = phi double [ 0.000000e+00, %.lr.ph ], [ %.1, %98 ]
  %.1387463 = phi i64 [ 0, %.lr.ph ], [ %.2, %98 ]
  %.0388462 = phi i64 [ 0, %.lr.ph ], [ %99, %98 ]
  %84 = load ptr, ptr %41, align 8, !tbaa !32
  %85 = getelementptr inbounds ptr, ptr %84, i64 %.0388462
  %86 = load ptr, ptr %85, align 8, !tbaa !33
  %87 = getelementptr inbounds double, ptr %86, i64 %82
  %88 = load double, ptr %87, align 8, !tbaa !34
  %89 = tail call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %88, double noundef 0.000000e+00)
  br i1 %89, label %90, label %98

90:                                               ; preds = %83
  %91 = load ptr, ptr %41, align 8, !tbaa !32
  %92 = getelementptr inbounds ptr, ptr %91, i64 %.0388462
  %93 = load ptr, ptr %92, align 8, !tbaa !33
  %94 = getelementptr inbounds double, ptr %93, i64 %82
  %95 = load double, ptr %94, align 8, !tbaa !34
  %96 = fadd double %.0464, %95
  %97 = add nsw i64 %.1387463, 1
  br label %98

98:                                               ; preds = %83, %90
  %.2 = phi i64 [ %97, %90 ], [ %.1387463, %83 ]
  %.1 = phi double [ %96, %90 ], [ %.0464, %83 ]
  %99 = add nuw nsw i64 %.0388462, 1
  %exitcond552.not = icmp eq i64 %99, %5
  br i1 %exitcond552.not, label %._crit_edge, label %83, !llvm.loop !44

._crit_edge:                                      ; preds = %98
  %.not434 = icmp eq i64 %.2, 0
  br i1 %.not434, label %._crit_edge.thread, label %100

100:                                              ; preds = %._crit_edge
  %101 = sitofp i64 %.2 to double
  %102 = fdiv double %101, %.1
  br label %._crit_edge.thread

103:                                              ; preds = %77
  %104 = load ptr, ptr %39, align 8, !tbaa !32
  %105 = getelementptr inbounds double, ptr %104, i64 %.0395467
  %106 = load double, ptr %105, align 8, !tbaa !34
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %._crit_edge, %.preheader454, %103, %100
  %.sink = phi double [ %106, %103 ], [ %102, %100 ], [ 1.000000e+00, %.preheader454 ], [ 1.000000e+00, %._crit_edge ]
  %107 = load ptr, ptr %40, align 8, !tbaa !32
  %108 = getelementptr inbounds double, ptr %107, i64 %.0395467
  store double %.sink, ptr %108, align 8, !tbaa !34
  %109 = add nuw nsw i64 %.0395467, 1
  %exitcond553.not = icmp eq i64 %109, %3
  br i1 %exitcond553.not, label %.preheader453, label %77, !llvm.loop !45

.preheader451:                                    ; preds = %._crit_edge472.us, %2, %.preheader455, %.preheader453
  %.not.not412482 = icmp slt i64 %5, 1
  br i1 %.not.not412482, label %.preheader448, label %.preheader450.lr.ph

.preheader450.lr.ph:                              ; preds = %.preheader451
  %110 = getelementptr inbounds i8, ptr %0, i64 13824
  %111 = getelementptr inbounds i8, ptr %0, i64 13488
  %112 = getelementptr inbounds i8, ptr %0, i64 152
  br i1 %.not.not459, label %._crit_edge496, label %.preheader450.us

.preheader450.us:                                 ; preds = %.preheader450.lr.ph, %._crit_edge481.split.us.us
  %.3483.us = phi i64 [ %135, %._crit_edge481.split.us.us ], [ 0, %.preheader450.lr.ph ]
  br label %.preheader449.us.us

.preheader449.us.us:                              ; preds = %._crit_edge478.us.us, %.preheader450.us
  %.2397480.us.us = phi i64 [ 0, %.preheader450.us ], [ %134, %._crit_edge478.us.us ]
  %113 = mul nuw nsw i64 %.2397480.us.us, %3
  br label %114

114:                                              ; preds = %114, %.preheader449.us.us
  %.2390476.us.us = phi i64 [ 0, %.preheader449.us.us ], [ %133, %114 ]
  %115 = load ptr, ptr %110, align 8, !tbaa !32
  %116 = add nuw nsw i64 %.2390476.us.us, %113
  %117 = getelementptr inbounds double, ptr %115, i64 %116
  %118 = load double, ptr %117, align 8, !tbaa !34
  %119 = load ptr, ptr %111, align 8, !tbaa !32
  %120 = getelementptr inbounds double, ptr %119, i64 %.2397480.us.us
  %121 = load double, ptr %120, align 8, !tbaa !34
  %122 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %121, ptr noundef %1)
  %123 = fmul double %122, 2.000000e+00
  %124 = load ptr, ptr %112, align 8, !tbaa !32
  %125 = getelementptr inbounds ptr, ptr %124, i64 %.3483.us
  %126 = load ptr, ptr %125, align 8, !tbaa !33
  %127 = getelementptr inbounds double, ptr %126, i64 %.2390476.us.us
  %128 = load double, ptr %127, align 8, !tbaa !34
  %129 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %128, ptr noundef %1)
  %130 = tail call double @llvm.fmuladd.f64(double %123, double %129, double %118)
  %131 = load ptr, ptr %110, align 8, !tbaa !32
  %132 = getelementptr inbounds double, ptr %131, i64 %116
  store double %130, ptr %132, align 8, !tbaa !34
  %133 = add nuw nsw i64 %.2390476.us.us, 1
  %exitcond556.not = icmp eq i64 %133, %3
  br i1 %exitcond556.not, label %._crit_edge478.us.us, label %114, !llvm.loop !46

._crit_edge478.us.us:                             ; preds = %114
  %134 = add nuw nsw i64 %.2397480.us.us, 1
  %exitcond557.not = icmp eq i64 %134, %3
  br i1 %exitcond557.not, label %._crit_edge481.split.us.us, label %.preheader449.us.us, !llvm.loop !47

._crit_edge481.split.us.us:                       ; preds = %._crit_edge478.us.us
  %135 = add nuw nsw i64 %.3483.us, 1
  %exitcond558.not = icmp eq i64 %135, %5
  br i1 %exitcond558.not, label %.preheader448, label %.preheader450.us, !llvm.loop !48

.preheader448:                                    ; preds = %._crit_edge481.split.us.us, %.preheader451
  br i1 %.not.not459, label %._crit_edge496, label %.preheader447.lr.ph

.preheader447.lr.ph:                              ; preds = %.preheader448
  %136 = getelementptr inbounds i8, ptr %0, i64 13824
  br label %.preheader447.us

.preheader447.us:                                 ; preds = %._crit_edge487.us, %.preheader447.lr.ph
  %.3398489.us = phi i64 [ 0, %.preheader447.lr.ph ], [ %149, %._crit_edge487.us ]
  %137 = mul nuw nsw i64 %.3398489.us, %3
  br label %138

138:                                              ; preds = %.preheader447.us, %147
  %.3391485.us = phi i64 [ 0, %.preheader447.us ], [ %148, %147 ]
  %139 = load ptr, ptr %136, align 8, !tbaa !32
  %140 = add nuw nsw i64 %.3391485.us, %137
  %141 = getelementptr inbounds double, ptr %139, i64 %140
  %142 = load double, ptr %141, align 8, !tbaa !34
  %143 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %142, double noundef 0.000000e+00)
  br i1 %143, label %144, label %147

144:                                              ; preds = %138
  %145 = load ptr, ptr %136, align 8, !tbaa !32
  %146 = getelementptr inbounds double, ptr %145, i64 %140
  store double 1.000000e+00, ptr %146, align 8, !tbaa !34
  br label %147

147:                                              ; preds = %144, %138
  %148 = add nuw nsw i64 %.3391485.us, 1
  %exitcond559.not = icmp eq i64 %148, %3
  br i1 %exitcond559.not, label %._crit_edge487.us, label %138, !llvm.loop !49

._crit_edge487.us:                                ; preds = %147
  %149 = add nuw nsw i64 %.3398489.us, 1
  %exitcond560.not = icmp eq i64 %149, %3
  br i1 %exitcond560.not, label %.preheader446, label %.preheader447.us, !llvm.loop !50

.preheader446:                                    ; preds = %._crit_edge487.us
  br i1 %.not.not459, label %._crit_edge496, label %.preheader445.lr.ph

.preheader445.lr.ph:                              ; preds = %.preheader446
  %150 = getelementptr inbounds i8, ptr %0, i64 13552
  %151 = getelementptr inbounds i8, ptr %0, i64 64
  %152 = getelementptr inbounds i8, ptr %0, i64 13616
  %153 = getelementptr inbounds i8, ptr %0, i64 312
  %154 = getelementptr inbounds i8, ptr %0, i64 392
  %155 = getelementptr inbounds i8, ptr %0, i64 232
  br label %.preheader445.us

.preheader445.us:                                 ; preds = %._crit_edge493.us, %.preheader445.lr.ph
  %.4399495.us = phi i64 [ 0, %.preheader445.lr.ph ], [ %274, %._crit_edge493.us ]
  %156 = mul nuw nsw i64 %.4399495.us, %3
  br label %157

157:                                              ; preds = %.preheader445.us, %272
  %.4392491.us = phi i64 [ 0, %.preheader445.us ], [ %273, %272 ]
  %158 = load ptr, ptr %150, align 8, !tbaa !32
  %159 = add nuw nsw i64 %.4392491.us, %156
  %160 = getelementptr inbounds double, ptr %158, i64 %159
  store double 0.000000e+00, ptr %160, align 8, !tbaa !34
  %161 = load ptr, ptr %151, align 8, !tbaa !32
  %162 = getelementptr inbounds i64, ptr %161, i64 %.4399495.us
  %163 = load i64, ptr %162, align 8, !tbaa !51
  %164 = icmp sgt i64 %163, 0
  br i1 %164, label %169, label %165

165:                                              ; preds = %157
  %166 = getelementptr inbounds i64, ptr %161, i64 %.4392491.us
  %167 = load i64, ptr %166, align 8, !tbaa !51
  %168 = icmp slt i64 %167, 0
  br i1 %168, label %169, label %170

169:                                              ; preds = %165, %157
  br label %170

170:                                              ; preds = %165, %169
  %.sink583 = phi double [ 0.000000e+00, %169 ], [ 1.000000e+00, %165 ]
  %171 = load ptr, ptr %152, align 8, !tbaa !32
  %172 = getelementptr inbounds double, ptr %171, i64 %159
  store double %.sink583, ptr %172, align 8, !tbaa !34
  %173 = load ptr, ptr %153, align 8, !tbaa !32
  %174 = getelementptr inbounds ptr, ptr %173, i64 %.4399495.us
  %175 = load ptr, ptr %174, align 8, !tbaa !33
  %176 = getelementptr inbounds double, ptr %175, i64 %.4392491.us
  %177 = load double, ptr %176, align 8, !tbaa !34
  %178 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %177, ptr noundef %1)
  br i1 %178, label %179, label %197

179:                                              ; preds = %170
  %180 = load ptr, ptr %153, align 8, !tbaa !32
  %181 = getelementptr inbounds ptr, ptr %180, i64 %.4399495.us
  %182 = load ptr, ptr %181, align 8, !tbaa !33
  %183 = getelementptr inbounds double, ptr %182, i64 %.4392491.us
  %184 = load double, ptr %183, align 8, !tbaa !34
  %185 = load ptr, ptr %150, align 8, !tbaa !32
  %186 = getelementptr inbounds double, ptr %185, i64 %159
  %187 = load double, ptr %186, align 8, !tbaa !34
  %188 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %184, double noundef %187)
  br i1 %188, label %189, label %197

189:                                              ; preds = %179
  %190 = load ptr, ptr %153, align 8, !tbaa !32
  %191 = getelementptr inbounds ptr, ptr %190, i64 %.4399495.us
  %192 = load ptr, ptr %191, align 8, !tbaa !33
  %193 = getelementptr inbounds double, ptr %192, i64 %.4392491.us
  %194 = load double, ptr %193, align 8, !tbaa !34
  %195 = load ptr, ptr %150, align 8, !tbaa !32
  %196 = getelementptr inbounds double, ptr %195, i64 %159
  store double %194, ptr %196, align 8, !tbaa !34
  br label %197

197:                                              ; preds = %189, %179, %170
  %198 = load ptr, ptr %154, align 8, !tbaa !32
  %199 = getelementptr inbounds ptr, ptr %198, i64 %.4399495.us
  %200 = load ptr, ptr %199, align 8, !tbaa !33
  %201 = getelementptr inbounds double, ptr %200, i64 %.4392491.us
  %202 = load double, ptr %201, align 8, !tbaa !34
  %203 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %202, ptr noundef %1)
  br i1 %203, label %204, label %222

204:                                              ; preds = %197
  %205 = load ptr, ptr %154, align 8, !tbaa !32
  %206 = getelementptr inbounds ptr, ptr %205, i64 %.4399495.us
  %207 = load ptr, ptr %206, align 8, !tbaa !33
  %208 = getelementptr inbounds double, ptr %207, i64 %.4392491.us
  %209 = load double, ptr %208, align 8, !tbaa !34
  %210 = load ptr, ptr %152, align 8, !tbaa !32
  %211 = getelementptr inbounds double, ptr %210, i64 %159
  %212 = load double, ptr %211, align 8, !tbaa !34
  %213 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %209, double noundef %212)
  br i1 %213, label %214, label %222

214:                                              ; preds = %204
  %215 = load ptr, ptr %154, align 8, !tbaa !32
  %216 = getelementptr inbounds ptr, ptr %215, i64 %.4399495.us
  %217 = load ptr, ptr %216, align 8, !tbaa !33
  %218 = getelementptr inbounds double, ptr %217, i64 %.4392491.us
  %219 = load double, ptr %218, align 8, !tbaa !34
  %220 = load ptr, ptr %152, align 8, !tbaa !32
  %221 = getelementptr inbounds double, ptr %220, i64 %159
  store double %219, ptr %221, align 8, !tbaa !34
  br label %222

222:                                              ; preds = %214, %204, %197
  %223 = load ptr, ptr %150, align 8, !tbaa !32
  %224 = getelementptr inbounds double, ptr %223, i64 %159
  %225 = load double, ptr %224, align 8, !tbaa !34
  %226 = load ptr, ptr %152, align 8, !tbaa !32
  %227 = getelementptr inbounds double, ptr %226, i64 %159
  %228 = load double, ptr %227, align 8, !tbaa !34
  %229 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %225, double noundef %228)
  br i1 %229, label %.split.us, label %230

230:                                              ; preds = %222
  %231 = load ptr, ptr %155, align 8, !tbaa !32
  %232 = getelementptr inbounds ptr, ptr %231, i64 %.4399495.us
  %233 = load ptr, ptr %232, align 8, !tbaa !33
  %234 = getelementptr inbounds double, ptr %233, i64 %.4392491.us
  %235 = load double, ptr %234, align 8, !tbaa !34
  %236 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %235, ptr noundef %1)
  br i1 %236, label %237, label %272

237:                                              ; preds = %230
  %238 = load ptr, ptr %155, align 8, !tbaa !32
  %239 = getelementptr inbounds ptr, ptr %238, i64 %.4399495.us
  %240 = load ptr, ptr %239, align 8, !tbaa !33
  %241 = getelementptr inbounds double, ptr %240, i64 %.4392491.us
  %242 = load double, ptr %241, align 8, !tbaa !34
  %243 = load ptr, ptr %150, align 8, !tbaa !32
  %244 = getelementptr inbounds double, ptr %243, i64 %159
  %245 = load double, ptr %244, align 8, !tbaa !34
  %246 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %242, double noundef %245)
  br i1 %246, label %.split498.us, label %247

247:                                              ; preds = %237
  %248 = load ptr, ptr %155, align 8, !tbaa !32
  %249 = getelementptr inbounds ptr, ptr %248, i64 %.4399495.us
  %250 = load ptr, ptr %249, align 8, !tbaa !33
  %251 = getelementptr inbounds double, ptr %250, i64 %.4392491.us
  %252 = load double, ptr %251, align 8, !tbaa !34
  %253 = load ptr, ptr %152, align 8, !tbaa !32
  %254 = getelementptr inbounds double, ptr %253, i64 %159
  %255 = load double, ptr %254, align 8, !tbaa !34
  %256 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %252, double noundef %255)
  br i1 %256, label %.split498.us, label %257

257:                                              ; preds = %247
  %258 = load ptr, ptr %155, align 8, !tbaa !32
  %259 = getelementptr inbounds ptr, ptr %258, i64 %.4399495.us
  %260 = load ptr, ptr %259, align 8, !tbaa !33
  %261 = getelementptr inbounds double, ptr %260, i64 %.4392491.us
  %262 = load double, ptr %261, align 8, !tbaa !34
  %263 = load ptr, ptr %150, align 8, !tbaa !32
  %264 = getelementptr inbounds double, ptr %263, i64 %159
  store double %262, ptr %264, align 8, !tbaa !34
  %265 = load ptr, ptr %155, align 8, !tbaa !32
  %266 = getelementptr inbounds ptr, ptr %265, i64 %.4399495.us
  %267 = load ptr, ptr %266, align 8, !tbaa !33
  %268 = getelementptr inbounds double, ptr %267, i64 %.4392491.us
  %269 = load double, ptr %268, align 8, !tbaa !34
  %270 = load ptr, ptr %152, align 8, !tbaa !32
  %271 = getelementptr inbounds double, ptr %270, i64 %159
  store double %269, ptr %271, align 8, !tbaa !34
  br label %272

272:                                              ; preds = %257, %230
  %273 = add nuw nsw i64 %.4392491.us, 1
  %exitcond561.not = icmp eq i64 %273, %3
  br i1 %exitcond561.not, label %._crit_edge493.us, label %157, !llvm.loop !52

._crit_edge493.us:                                ; preds = %272
  %274 = add nuw nsw i64 %.4399495.us, 1
  %exitcond562.not = icmp eq i64 %274, %3
  br i1 %exitcond562.not, label %._crit_edge496, label %.preheader445.us, !llvm.loop !53

.split.us:                                        ; preds = %222
  store i64 -3, ptr %6, align 8, !tbaa !54
  br label %599

.split498.us:                                     ; preds = %237, %247
  store i64 -3, ptr %6, align 8, !tbaa !54
  br label %599

._crit_edge496:                                   ; preds = %._crit_edge493.us, %.preheader450.lr.ph, %.preheader448, %.preheader446
  %275 = getelementptr inbounds i8, ptr %0, i64 13624
  %276 = getelementptr inbounds i8, ptr %0, i64 544
  %277 = load i64, ptr %276, align 8, !tbaa !55
  %278 = add nsw i64 %277, %3
  %279 = mul nsw i64 %3, %3
  %280 = add nuw i64 %279, 1
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %275, i64 noundef %278, i64 noundef %280, ptr noundef %1)
  %281 = getelementptr inbounds i8, ptr %0, i64 13704
  %282 = load i64, ptr %276, align 8, !tbaa !55
  %283 = add nsw i64 %282, %3
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %281, i64 noundef %283, ptr noundef %1)
  %284 = load i64, ptr %276, align 8, !tbaa !55
  %.not.not415500 = icmp sgt i64 %284, 0
  br i1 %.not.not415500, label %.preheader444.lr.ph, label %.preheader443

.preheader444.lr.ph:                              ; preds = %._crit_edge496
  %285 = getelementptr inbounds i8, ptr %0, i64 472
  %286 = getelementptr inbounds i8, ptr %0, i64 13696
  %287 = getelementptr inbounds i8, ptr %0, i64 536
  %288 = getelementptr inbounds i8, ptr %0, i64 13760
  %289 = add nuw i64 %279, 1
  %290 = icmp eq i64 %3, 0
  %unroll_iter596 = and i64 %289, -2
  %291 = and i64 %279, 1
  %lcmp.mod595.not.not = icmp eq i64 %291, 0
  br label %.preheader444

.preheader444:                                    ; preds = %.preheader444.lr.ph, %327
  %.5400501 = phi i64 [ 0, %.preheader444.lr.ph ], [ %333, %327 ]
  br i1 %290, label %.unr-lcssa, label %.preheader444.new

.preheader443:                                    ; preds = %327, %._crit_edge496
  br i1 %.not.not459, label %._crit_edge521, label %.lr.ph513

.lr.ph513:                                        ; preds = %.preheader443
  %292 = getelementptr inbounds i8, ptr %0, i64 64
  %293 = getelementptr inbounds i8, ptr %0, i64 13696
  %294 = getelementptr inbounds i8, ptr %0, i64 13760
  %umax = tail call i64 @llvm.umax.i64(i64 %279, i64 1)
  %295 = add nsw i64 %3, -1
  %xtraiter598 = and i64 %umax, 3
  %296 = icmp ult i64 %279, 4
  %unroll_iter601 = and i64 %umax, 9223372036854775804
  %lcmp.mod600.not = icmp eq i64 %xtraiter598, 0
  %xtraiter603 = and i64 %3, 3
  %297 = icmp ult i64 %295, 3
  %unroll_iter606 = and i64 %3, 9223372036854775804
  %lcmp.mod605.not = icmp eq i64 %xtraiter603, 0
  br label %361

.preheader444.new:                                ; preds = %.preheader444, %.preheader444.new
  %.5393499 = phi i64 [ %317, %.preheader444.new ], [ 0, %.preheader444 ]
  %niter597 = phi i64 [ %niter597.next.1, %.preheader444.new ], [ 0, %.preheader444 ]
  %298 = load ptr, ptr %285, align 8, !tbaa !32
  %299 = getelementptr inbounds ptr, ptr %298, i64 %.5400501
  %300 = load ptr, ptr %299, align 8, !tbaa !33
  %301 = getelementptr inbounds double, ptr %300, i64 %.5393499
  %302 = load double, ptr %301, align 8, !tbaa !34
  %303 = load ptr, ptr %286, align 8, !tbaa !32
  %304 = getelementptr inbounds ptr, ptr %303, i64 %.5400501
  %305 = load ptr, ptr %304, align 8, !tbaa !33
  %306 = getelementptr inbounds double, ptr %305, i64 %.5393499
  store double %302, ptr %306, align 8, !tbaa !34
  %307 = or disjoint i64 %.5393499, 1
  %308 = load ptr, ptr %285, align 8, !tbaa !32
  %309 = getelementptr inbounds ptr, ptr %308, i64 %.5400501
  %310 = load ptr, ptr %309, align 8, !tbaa !33
  %311 = getelementptr inbounds double, ptr %310, i64 %307
  %312 = load double, ptr %311, align 8, !tbaa !34
  %313 = load ptr, ptr %286, align 8, !tbaa !32
  %314 = getelementptr inbounds ptr, ptr %313, i64 %.5400501
  %315 = load ptr, ptr %314, align 8, !tbaa !33
  %316 = getelementptr inbounds double, ptr %315, i64 %307
  store double %312, ptr %316, align 8, !tbaa !34
  %317 = add nuw i64 %.5393499, 2
  %niter597.next.1 = add i64 %niter597, 2
  %niter597.ncmp.1 = icmp eq i64 %niter597.next.1, %unroll_iter596
  br i1 %niter597.ncmp.1, label %.unr-lcssa, label %.preheader444.new, !llvm.loop !56

.unr-lcssa:                                       ; preds = %.preheader444.new, %.preheader444
  %.5393499.unr = phi i64 [ 0, %.preheader444 ], [ %317, %.preheader444.new ]
  br i1 %lcmp.mod595.not.not, label %.epilog-lcssa, label %327

.epilog-lcssa:                                    ; preds = %.unr-lcssa
  %318 = load ptr, ptr %285, align 8, !tbaa !32
  %319 = getelementptr inbounds ptr, ptr %318, i64 %.5400501
  %320 = load ptr, ptr %319, align 8, !tbaa !33
  %321 = getelementptr inbounds double, ptr %320, i64 %.5393499.unr
  %322 = load double, ptr %321, align 8, !tbaa !34
  %323 = load ptr, ptr %286, align 8, !tbaa !32
  %324 = getelementptr inbounds ptr, ptr %323, i64 %.5400501
  %325 = load ptr, ptr %324, align 8, !tbaa !33
  %326 = getelementptr inbounds double, ptr %325, i64 %.5393499.unr
  store double %322, ptr %326, align 8, !tbaa !34
  br label %327

327:                                              ; preds = %.unr-lcssa, %.epilog-lcssa
  %328 = load ptr, ptr %287, align 8, !tbaa !32
  %329 = getelementptr inbounds i64, ptr %328, i64 %.5400501
  %330 = load i64, ptr %329, align 8, !tbaa !51
  %331 = load ptr, ptr %288, align 8, !tbaa !32
  %332 = getelementptr inbounds i64, ptr %331, i64 %.5400501
  store i64 %330, ptr %332, align 8, !tbaa !51
  %333 = add nuw nsw i64 %.5400501, 1
  %334 = load i64, ptr %276, align 8, !tbaa !55
  %.not.not415 = icmp slt i64 %333, %334
  br i1 %.not.not415, label %.preheader444, label %.preheader443, !llvm.loop !57

.preheader440:                                    ; preds = %433
  br i1 %.not.not459, label %._crit_edge521, label %.preheader439.lr.ph

.preheader439.lr.ph:                              ; preds = %.preheader440
  %335 = uitofp nneg i64 %3 to double
  %336 = fdiv double 1.000000e+00, %335
  %337 = getelementptr inbounds i8, ptr %0, i64 13424
  %xtraiter609 = and i64 %3, 3
  %338 = icmp ult i64 %295, 3
  %unroll_iter612 = and i64 %3, 9223372036854775804
  %lcmp.mod611.not = icmp eq i64 %xtraiter609, 0
  br label %.preheader439.us

.preheader439.us:                                 ; preds = %._crit_edge518.us, %.preheader439.lr.ph
  %.7402520.us = phi i64 [ 0, %.preheader439.lr.ph ], [ %360, %._crit_edge518.us ]
  %339 = mul nuw nsw i64 %.7402520.us, %3
  br i1 %338, label %._crit_edge518.us.unr-lcssa, label %.preheader439.us.new

.preheader439.us.new:                             ; preds = %.preheader439.us, %.preheader439.us.new
  %.6394516.us = phi i64 [ %355, %.preheader439.us.new ], [ 0, %.preheader439.us ]
  %niter613 = phi i64 [ %niter613.next.3, %.preheader439.us.new ], [ 0, %.preheader439.us ]
  %340 = load ptr, ptr %337, align 8, !tbaa !32
  %341 = getelementptr double, ptr %340, i64 %339
  %342 = getelementptr double, ptr %341, i64 %.6394516.us
  store double %336, ptr %342, align 8, !tbaa !34
  %343 = or disjoint i64 %.6394516.us, 1
  %344 = load ptr, ptr %337, align 8, !tbaa !32
  %345 = getelementptr double, ptr %344, i64 %339
  %346 = getelementptr double, ptr %345, i64 %343
  store double %336, ptr %346, align 8, !tbaa !34
  %347 = or disjoint i64 %.6394516.us, 2
  %348 = load ptr, ptr %337, align 8, !tbaa !32
  %349 = getelementptr double, ptr %348, i64 %339
  %350 = getelementptr double, ptr %349, i64 %347
  store double %336, ptr %350, align 8, !tbaa !34
  %351 = or disjoint i64 %.6394516.us, 3
  %352 = load ptr, ptr %337, align 8, !tbaa !32
  %353 = getelementptr double, ptr %352, i64 %339
  %354 = getelementptr double, ptr %353, i64 %351
  store double %336, ptr %354, align 8, !tbaa !34
  %355 = add nuw nsw i64 %.6394516.us, 4
  %niter613.next.3 = add i64 %niter613, 4
  %niter613.ncmp.3 = icmp eq i64 %niter613.next.3, %unroll_iter612
  br i1 %niter613.ncmp.3, label %._crit_edge518.us.unr-lcssa, label %.preheader439.us.new, !llvm.loop !58

._crit_edge518.us.unr-lcssa:                      ; preds = %.preheader439.us.new, %.preheader439.us
  %.6394516.us.unr = phi i64 [ 0, %.preheader439.us ], [ %355, %.preheader439.us.new ]
  br i1 %lcmp.mod611.not, label %._crit_edge518.us, label %.epil.preheader608

.epil.preheader608:                               ; preds = %._crit_edge518.us.unr-lcssa, %.epil.preheader608
  %.6394516.us.epil = phi i64 [ %359, %.epil.preheader608 ], [ %.6394516.us.unr, %._crit_edge518.us.unr-lcssa ]
  %epil.iter610 = phi i64 [ %epil.iter610.next, %.epil.preheader608 ], [ 0, %._crit_edge518.us.unr-lcssa ]
  %356 = load ptr, ptr %337, align 8, !tbaa !32
  %357 = getelementptr double, ptr %356, i64 %339
  %358 = getelementptr double, ptr %357, i64 %.6394516.us.epil
  store double %336, ptr %358, align 8, !tbaa !34
  %359 = add nuw nsw i64 %.6394516.us.epil, 1
  %epil.iter610.next = add i64 %epil.iter610, 1
  %epil.iter610.cmp.not = icmp eq i64 %epil.iter610.next, %xtraiter609
  br i1 %epil.iter610.cmp.not, label %._crit_edge518.us, label %.epil.preheader608, !llvm.loop !59

._crit_edge518.us:                                ; preds = %.epil.preheader608, %._crit_edge518.us.unr-lcssa
  %360 = add nuw nsw i64 %.7402520.us, 1
  %exitcond568.not = icmp eq i64 %360, %3
  br i1 %exitcond568.not, label %._crit_edge521, label %.preheader439.us, !llvm.loop !60

361:                                              ; preds = %.lr.ph513, %433
  %.6401511 = phi i64 [ 0, %.lr.ph513 ], [ %434, %433 ]
  %.0405510 = phi i64 [ %284, %.lr.ph513 ], [ %.1406, %433 ]
  %362 = load ptr, ptr %292, align 8, !tbaa !32
  %363 = getelementptr inbounds i64, ptr %362, i64 %.6401511
  %364 = load i64, ptr %363, align 8, !tbaa !51
  %365 = icmp sgt i64 %364, -1
  br i1 %365, label %.lr.ph504.preheader, label %433

.lr.ph504.preheader:                              ; preds = %361
  br i1 %296, label %.lr.ph507.preheader.unr-lcssa, label %.lr.ph504

.lr.ph504:                                        ; preds = %.lr.ph504.preheader, %.lr.ph504
  %.4503 = phi i64 [ %385, %.lr.ph504 ], [ 0, %.lr.ph504.preheader ]
  %niter602 = phi i64 [ %niter602.next.3, %.lr.ph504 ], [ 0, %.lr.ph504.preheader ]
  %366 = load ptr, ptr %293, align 8, !tbaa !32
  %367 = getelementptr inbounds ptr, ptr %366, i64 %.0405510
  %368 = load ptr, ptr %367, align 8, !tbaa !33
  %369 = getelementptr inbounds double, ptr %368, i64 %.4503
  store double 0.000000e+00, ptr %369, align 8, !tbaa !34
  %370 = or disjoint i64 %.4503, 1
  %371 = load ptr, ptr %293, align 8, !tbaa !32
  %372 = getelementptr inbounds ptr, ptr %371, i64 %.0405510
  %373 = load ptr, ptr %372, align 8, !tbaa !33
  %374 = getelementptr inbounds double, ptr %373, i64 %370
  store double 0.000000e+00, ptr %374, align 8, !tbaa !34
  %375 = or disjoint i64 %.4503, 2
  %376 = load ptr, ptr %293, align 8, !tbaa !32
  %377 = getelementptr inbounds ptr, ptr %376, i64 %.0405510
  %378 = load ptr, ptr %377, align 8, !tbaa !33
  %379 = getelementptr inbounds double, ptr %378, i64 %375
  store double 0.000000e+00, ptr %379, align 8, !tbaa !34
  %380 = or disjoint i64 %.4503, 3
  %381 = load ptr, ptr %293, align 8, !tbaa !32
  %382 = getelementptr inbounds ptr, ptr %381, i64 %.0405510
  %383 = load ptr, ptr %382, align 8, !tbaa !33
  %384 = getelementptr inbounds double, ptr %383, i64 %380
  store double 0.000000e+00, ptr %384, align 8, !tbaa !34
  %385 = add nuw nsw i64 %.4503, 4
  %niter602.next.3 = add i64 %niter602, 4
  %niter602.ncmp.3 = icmp eq i64 %niter602.next.3, %unroll_iter601
  br i1 %niter602.ncmp.3, label %.lr.ph507.preheader.unr-lcssa, label %.lr.ph504, !llvm.loop !61

.lr.ph507.preheader.unr-lcssa:                    ; preds = %.lr.ph504, %.lr.ph504.preheader
  %.4503.unr = phi i64 [ 0, %.lr.ph504.preheader ], [ %385, %.lr.ph504 ]
  br i1 %lcmp.mod600.not, label %.lr.ph507.preheader, label %.lr.ph504.epil

.lr.ph504.epil:                                   ; preds = %.lr.ph507.preheader.unr-lcssa, %.lr.ph504.epil
  %.4503.epil = phi i64 [ %390, %.lr.ph504.epil ], [ %.4503.unr, %.lr.ph507.preheader.unr-lcssa ]
  %epil.iter599 = phi i64 [ %epil.iter599.next, %.lr.ph504.epil ], [ 0, %.lr.ph507.preheader.unr-lcssa ]
  %386 = load ptr, ptr %293, align 8, !tbaa !32
  %387 = getelementptr inbounds ptr, ptr %386, i64 %.0405510
  %388 = load ptr, ptr %387, align 8, !tbaa !33
  %389 = getelementptr inbounds double, ptr %388, i64 %.4503.epil
  store double 0.000000e+00, ptr %389, align 8, !tbaa !34
  %390 = add nuw nsw i64 %.4503.epil, 1
  %epil.iter599.next = add i64 %epil.iter599, 1
  %epil.iter599.cmp.not = icmp eq i64 %epil.iter599.next, %xtraiter598
  br i1 %epil.iter599.cmp.not, label %.lr.ph507.preheader, label %.lr.ph504.epil, !llvm.loop !62

.lr.ph507.preheader:                              ; preds = %.lr.ph504.epil, %.lr.ph507.preheader.unr-lcssa
  br i1 %297, label %._crit_edge508.unr-lcssa, label %.lr.ph507

.lr.ph507:                                        ; preds = %.lr.ph507.preheader, %.lr.ph507
  %.5506 = phi i64 [ %418, %.lr.ph507 ], [ 0, %.lr.ph507.preheader ]
  %niter607 = phi i64 [ %niter607.next.3, %.lr.ph507 ], [ 0, %.lr.ph507.preheader ]
  %391 = load ptr, ptr %293, align 8, !tbaa !32
  %392 = getelementptr inbounds ptr, ptr %391, i64 %.0405510
  %393 = load ptr, ptr %392, align 8, !tbaa !33
  %394 = mul nuw nsw i64 %.5506, %3
  %395 = getelementptr double, ptr %393, i64 %394
  %396 = getelementptr double, ptr %395, i64 %.6401511
  store double 1.000000e+00, ptr %396, align 8, !tbaa !34
  %397 = or disjoint i64 %.5506, 1
  %398 = load ptr, ptr %293, align 8, !tbaa !32
  %399 = getelementptr inbounds ptr, ptr %398, i64 %.0405510
  %400 = load ptr, ptr %399, align 8, !tbaa !33
  %401 = mul nuw nsw i64 %397, %3
  %402 = getelementptr double, ptr %400, i64 %401
  %403 = getelementptr double, ptr %402, i64 %.6401511
  store double 1.000000e+00, ptr %403, align 8, !tbaa !34
  %404 = or disjoint i64 %.5506, 2
  %405 = load ptr, ptr %293, align 8, !tbaa !32
  %406 = getelementptr inbounds ptr, ptr %405, i64 %.0405510
  %407 = load ptr, ptr %406, align 8, !tbaa !33
  %408 = mul nuw nsw i64 %404, %3
  %409 = getelementptr double, ptr %407, i64 %408
  %410 = getelementptr double, ptr %409, i64 %.6401511
  store double 1.000000e+00, ptr %410, align 8, !tbaa !34
  %411 = or disjoint i64 %.5506, 3
  %412 = load ptr, ptr %293, align 8, !tbaa !32
  %413 = getelementptr inbounds ptr, ptr %412, i64 %.0405510
  %414 = load ptr, ptr %413, align 8, !tbaa !33
  %415 = mul nuw nsw i64 %411, %3
  %416 = getelementptr double, ptr %414, i64 %415
  %417 = getelementptr double, ptr %416, i64 %.6401511
  store double 1.000000e+00, ptr %417, align 8, !tbaa !34
  %418 = add nuw nsw i64 %.5506, 4
  %niter607.next.3 = add i64 %niter607, 4
  %niter607.ncmp.3 = icmp eq i64 %niter607.next.3, %unroll_iter606
  br i1 %niter607.ncmp.3, label %._crit_edge508.unr-lcssa, label %.lr.ph507, !llvm.loop !63

._crit_edge508.unr-lcssa:                         ; preds = %.lr.ph507, %.lr.ph507.preheader
  %.5506.unr = phi i64 [ 0, %.lr.ph507.preheader ], [ %418, %.lr.ph507 ]
  br i1 %lcmp.mod605.not, label %._crit_edge508, label %.lr.ph507.epil

.lr.ph507.epil:                                   ; preds = %._crit_edge508.unr-lcssa, %.lr.ph507.epil
  %.5506.epil = phi i64 [ %425, %.lr.ph507.epil ], [ %.5506.unr, %._crit_edge508.unr-lcssa ]
  %epil.iter604 = phi i64 [ %epil.iter604.next, %.lr.ph507.epil ], [ 0, %._crit_edge508.unr-lcssa ]
  %419 = load ptr, ptr %293, align 8, !tbaa !32
  %420 = getelementptr inbounds ptr, ptr %419, i64 %.0405510
  %421 = load ptr, ptr %420, align 8, !tbaa !33
  %422 = mul nuw nsw i64 %.5506.epil, %3
  %423 = getelementptr double, ptr %421, i64 %422
  %424 = getelementptr double, ptr %423, i64 %.6401511
  store double 1.000000e+00, ptr %424, align 8, !tbaa !34
  %425 = add nuw nsw i64 %.5506.epil, 1
  %epil.iter604.next = add i64 %epil.iter604, 1
  %epil.iter604.cmp.not = icmp eq i64 %epil.iter604.next, %xtraiter603
  br i1 %epil.iter604.cmp.not, label %._crit_edge508, label %.lr.ph507.epil, !llvm.loop !64

._crit_edge508:                                   ; preds = %.lr.ph507.epil, %._crit_edge508.unr-lcssa
  %426 = load ptr, ptr %293, align 8, !tbaa !32
  %427 = getelementptr inbounds ptr, ptr %426, i64 %.0405510
  %428 = load ptr, ptr %427, align 8, !tbaa !33
  %429 = getelementptr inbounds double, ptr %428, i64 %279
  store double 1.000000e+00, ptr %429, align 8, !tbaa !34
  %430 = load ptr, ptr %294, align 8, !tbaa !32
  %431 = getelementptr inbounds i64, ptr %430, i64 %.0405510
  store i64 0, ptr %431, align 8, !tbaa !51
  %432 = add nsw i64 %.0405510, 1
  br label %433

433:                                              ; preds = %361, %._crit_edge508
  %.1406 = phi i64 [ %432, %._crit_edge508 ], [ %.0405510, %361 ]
  %434 = add nuw nsw i64 %.6401511, 1
  %exitcond566.not = icmp eq i64 %434, %3
  br i1 %exitcond566.not, label %.preheader440, label %361, !llvm.loop !65

._crit_edge521:                                   ; preds = %._crit_edge518.us, %.preheader443, %.preheader440
  %.0405.lcssa580 = phi i64 [ %.1406, %.preheader440 ], [ %284, %.preheader443 ], [ %.1406, %._crit_edge518.us ]
  %435 = getelementptr inbounds i8, ptr %0, i64 704
  %436 = getelementptr inbounds i8, ptr %0, i64 13368
  tail call void @_ZN11alglib_impl19minbleicrestartfromEPNS_13minbleicstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %435, ptr noundef nonnull %436, ptr noundef %1)
  %437 = getelementptr inbounds i8, ptr %0, i64 13496
  %438 = getelementptr inbounds i8, ptr %0, i64 13560
  tail call void @_ZN11alglib_impl13minbleicsetbcEPNS_13minbleicstateEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %435, ptr noundef nonnull %437, ptr noundef nonnull %438, ptr noundef %1)
  tail call void @_ZN11alglib_impl13minbleicsetlcEPNS_13minbleicstateEPNS_9ae_matrixEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %435, ptr noundef nonnull %275, ptr noundef nonnull %281, i64 noundef %.0405.lcssa580, ptr noundef %1)
  %439 = load double, ptr @_ZN11alglib_implL9mcpd_xtolE, align 8, !tbaa !34
  tail call void @_ZN11alglib_impl15minbleicsetcondEPNS_13minbleicstateEdddlPNS_8ae_stateE(ptr noundef nonnull %435, double noundef 0.000000e+00, double noundef 0.000000e+00, double noundef %439, i64 noundef 0, ptr noundef %1)
  %440 = getelementptr inbounds i8, ptr %0, i64 13768
  tail call void @_ZN11alglib_impl19minbleicsetprecdiagEPNS_13minbleicstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %435, ptr noundef nonnull %440, ptr noundef %1)
  %441 = tail call noundef zeroext i1 @_ZN11alglib_impl17minbleiciterationEPNS_13minbleicstateEPNS_8ae_stateE(ptr noundef nonnull %435, ptr noundef %1)
  br i1 %441, label %.lr.ph540, label %._crit_edge541

.lr.ph540:                                        ; preds = %._crit_edge521
  %442 = getelementptr inbounds i8, ptr %0, i64 5393
  %443 = getelementptr inbounds i8, ptr %0, i64 5320
  %444 = getelementptr inbounds i8, ptr %0, i64 696
  %445 = getelementptr inbounds i8, ptr %0, i64 5312
  %446 = getelementptr inbounds i8, ptr %0, i64 688
  %447 = getelementptr inbounds i8, ptr %0, i64 5384
  %448 = getelementptr inbounds i8, ptr %0, i64 152
  %449 = add i64 %3, -1
  %450 = getelementptr inbounds i8, ptr %0, i64 13488
  %brmerge = or i1 %.not.not412482, %.not.not459
  %xtraiter615 = and i64 %3, 1
  %451 = icmp eq i64 %449, 0
  %unroll_iter618 = and i64 %3, 9223372036854775806
  %lcmp.mod617.not = icmp eq i64 %xtraiter615, 0
  br label %452

452:                                              ; preds = %.lr.ph540, %.backedge
  %453 = load i8, ptr %442, align 1, !tbaa !66, !range !67, !noundef !68
  %454 = trunc nuw i8 %453 to i1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %454, ptr noundef nonnull @.str.343, ptr noundef %1)
  %455 = load i8, ptr %442, align 1, !tbaa !66, !range !67, !noundef !68
  %456 = trunc nuw i8 %455 to i1
  br i1 %456, label %458, label %.backedge

.backedge:                                        ; preds = %._crit_edge536.split.us.us, %.preheader438, %458, %452
  %457 = tail call noundef zeroext i1 @_ZN11alglib_impl17minbleiciterationEPNS_13minbleicstateEPNS_8ae_stateE(ptr noundef nonnull %435, ptr noundef %1)
  br i1 %457, label %452, label %._crit_edge541, !llvm.loop !69

458:                                              ; preds = %452
  store double 0.000000e+00, ptr %443, align 8, !tbaa !70
  %459 = load double, ptr %444, align 8, !tbaa !40
  br i1 %.not.not459, label %.backedge, label %.preheader437.lr.ph

.preheader437.lr.ph:                              ; preds = %458
  %460 = fmul double %459, 2.000000e+00
  br label %.preheader437.us

.preheader437.us:                                 ; preds = %._crit_edge525.us, %.preheader437.lr.ph
  %.8403527.us = phi i64 [ 0, %.preheader437.lr.ph ], [ %489, %._crit_edge525.us ]
  %461 = mul nuw nsw i64 %.8403527.us, %3
  br label %462

462:                                              ; preds = %.preheader437.us, %462
  %.7523.us = phi i64 [ 0, %.preheader437.us ], [ %488, %462 ]
  %463 = load double, ptr %443, align 8, !tbaa !70
  %464 = load ptr, ptr %445, align 8, !tbaa !32
  %465 = add nuw nsw i64 %.7523.us, %461
  %466 = getelementptr inbounds double, ptr %464, i64 %465
  %467 = load double, ptr %466, align 8, !tbaa !34
  %468 = load ptr, ptr %446, align 8, !tbaa !32
  %469 = getelementptr inbounds ptr, ptr %468, i64 %.8403527.us
  %470 = load ptr, ptr %469, align 8, !tbaa !33
  %471 = getelementptr inbounds double, ptr %470, i64 %.7523.us
  %472 = load double, ptr %471, align 8, !tbaa !34
  %473 = fsub double %467, %472
  %474 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %473, ptr noundef %1)
  %475 = tail call double @llvm.fmuladd.f64(double %459, double %474, double %463)
  store double %475, ptr %443, align 8, !tbaa !70
  %476 = load ptr, ptr %445, align 8, !tbaa !32
  %477 = getelementptr inbounds double, ptr %476, i64 %465
  %478 = load double, ptr %477, align 8, !tbaa !34
  %479 = load ptr, ptr %446, align 8, !tbaa !32
  %480 = getelementptr inbounds ptr, ptr %479, i64 %.8403527.us
  %481 = load ptr, ptr %480, align 8, !tbaa !33
  %482 = getelementptr inbounds double, ptr %481, i64 %.7523.us
  %483 = load double, ptr %482, align 8, !tbaa !34
  %484 = fsub double %478, %483
  %485 = fmul double %460, %484
  %486 = load ptr, ptr %447, align 8, !tbaa !32
  %487 = getelementptr inbounds double, ptr %486, i64 %465
  store double %485, ptr %487, align 8, !tbaa !34
  %488 = add nuw nsw i64 %.7523.us, 1
  %exitcond569.not = icmp eq i64 %488, %3
  br i1 %exitcond569.not, label %._crit_edge525.us, label %462, !llvm.loop !71

._crit_edge525.us:                                ; preds = %462
  %489 = add nuw nsw i64 %.8403527.us, 1
  %exitcond570.not = icmp eq i64 %489, %3
  br i1 %exitcond570.not, label %.preheader438, label %.preheader437.us, !llvm.loop !72

.preheader438:                                    ; preds = %._crit_edge525.us
  br i1 %brmerge, label %.backedge, label %.preheader436.us, !llvm.loop !69

.preheader436.us:                                 ; preds = %.preheader438, %._crit_edge536.split.us.us
  %.6538.us = phi i64 [ %560, %._crit_edge536.split.us.us ], [ 0, %.preheader438 ]
  br label %.lr.ph531.us.us

.lr.ph531.us.us:                                  ; preds = %._crit_edge532.us.us, %.preheader436.us
  %.9404534.us.us = phi i64 [ 0, %.preheader436.us ], [ %559, %._crit_edge532.us.us ]
  %490 = load ptr, ptr %445, align 8, !tbaa !32
  %491 = mul nuw nsw i64 %.9404534.us.us, %3
  %492 = getelementptr inbounds double, ptr %490, i64 %491
  %493 = load ptr, ptr %448, align 8, !tbaa !32
  %494 = getelementptr inbounds ptr, ptr %493, i64 %.6538.us
  %495 = load ptr, ptr %494, align 8, !tbaa !33
  %496 = add i64 %449, %491
  %497 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %491, i64 noundef %496)
  %498 = tail call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %492, i64 noundef 1, ptr noundef %495, i64 noundef 1, i64 noundef %497)
  %499 = load ptr, ptr %450, align 8, !tbaa !32
  %500 = getelementptr inbounds double, ptr %499, i64 %.9404534.us.us
  %501 = load double, ptr %500, align 8, !tbaa !34
  %502 = load double, ptr %443, align 8, !tbaa !70
  %503 = load ptr, ptr %448, align 8, !tbaa !32
  %504 = getelementptr inbounds ptr, ptr %503, i64 %.6538.us
  %505 = load ptr, ptr %504, align 8, !tbaa !33
  %506 = add nuw nsw i64 %.9404534.us.us, %3
  %507 = getelementptr inbounds double, ptr %505, i64 %506
  %508 = load double, ptr %507, align 8, !tbaa !34
  %509 = fsub double %498, %508
  %510 = fmul double %501, %509
  %511 = tail call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %510, ptr noundef %1)
  %512 = fadd double %502, %511
  store double %512, ptr %443, align 8, !tbaa !70
  %513 = fmul double %501, 2.000000e+00
  %514 = fmul double %501, %513
  br i1 %451, label %._crit_edge532.us.us.unr-lcssa, label %.lr.ph531.us.us.new

.lr.ph531.us.us.new:                              ; preds = %.lr.ph531.us.us, %.lr.ph531.us.us.new
  %.8529.us.us = phi i64 [ %544, %.lr.ph531.us.us.new ], [ 0, %.lr.ph531.us.us ]
  %niter619 = phi i64 [ %niter619.next.1, %.lr.ph531.us.us.new ], [ 0, %.lr.ph531.us.us ]
  %515 = load ptr, ptr %447, align 8, !tbaa !32
  %516 = getelementptr double, ptr %515, i64 %491
  %517 = getelementptr double, ptr %516, i64 %.8529.us.us
  %518 = load double, ptr %517, align 8, !tbaa !34
  %519 = load ptr, ptr %448, align 8, !tbaa !32
  %520 = getelementptr inbounds ptr, ptr %519, i64 %.6538.us
  %521 = load ptr, ptr %520, align 8, !tbaa !33
  %522 = getelementptr inbounds double, ptr %521, i64 %506
  %523 = load double, ptr %522, align 8, !tbaa !34
  %524 = fsub double %498, %523
  %525 = fmul double %514, %524
  %526 = getelementptr inbounds double, ptr %521, i64 %.8529.us.us
  %527 = load double, ptr %526, align 8, !tbaa !34
  %528 = tail call double @llvm.fmuladd.f64(double %525, double %527, double %518)
  store double %528, ptr %517, align 8, !tbaa !34
  %529 = or disjoint i64 %.8529.us.us, 1
  %530 = load ptr, ptr %447, align 8, !tbaa !32
  %531 = getelementptr double, ptr %530, i64 %491
  %532 = getelementptr double, ptr %531, i64 %529
  %533 = load double, ptr %532, align 8, !tbaa !34
  %534 = load ptr, ptr %448, align 8, !tbaa !32
  %535 = getelementptr inbounds ptr, ptr %534, i64 %.6538.us
  %536 = load ptr, ptr %535, align 8, !tbaa !33
  %537 = getelementptr inbounds double, ptr %536, i64 %506
  %538 = load double, ptr %537, align 8, !tbaa !34
  %539 = fsub double %498, %538
  %540 = fmul double %514, %539
  %541 = getelementptr inbounds double, ptr %536, i64 %529
  %542 = load double, ptr %541, align 8, !tbaa !34
  %543 = tail call double @llvm.fmuladd.f64(double %540, double %542, double %533)
  store double %543, ptr %532, align 8, !tbaa !34
  %544 = add nuw nsw i64 %.8529.us.us, 2
  %niter619.next.1 = add i64 %niter619, 2
  %niter619.ncmp.1 = icmp eq i64 %niter619.next.1, %unroll_iter618
  br i1 %niter619.ncmp.1, label %._crit_edge532.us.us.unr-lcssa, label %.lr.ph531.us.us.new, !llvm.loop !73

._crit_edge532.us.us.unr-lcssa:                   ; preds = %.lr.ph531.us.us.new, %.lr.ph531.us.us
  %.8529.us.us.unr = phi i64 [ 0, %.lr.ph531.us.us ], [ %544, %.lr.ph531.us.us.new ]
  br i1 %lcmp.mod617.not, label %._crit_edge532.us.us, label %._crit_edge532.us.us.epilog-lcssa

._crit_edge532.us.us.epilog-lcssa:                ; preds = %._crit_edge532.us.us.unr-lcssa
  %545 = load ptr, ptr %447, align 8, !tbaa !32
  %546 = getelementptr double, ptr %545, i64 %491
  %547 = getelementptr double, ptr %546, i64 %.8529.us.us.unr
  %548 = load double, ptr %547, align 8, !tbaa !34
  %549 = load ptr, ptr %448, align 8, !tbaa !32
  %550 = getelementptr inbounds ptr, ptr %549, i64 %.6538.us
  %551 = load ptr, ptr %550, align 8, !tbaa !33
  %552 = getelementptr inbounds double, ptr %551, i64 %506
  %553 = load double, ptr %552, align 8, !tbaa !34
  %554 = fsub double %498, %553
  %555 = fmul double %514, %554
  %556 = getelementptr inbounds double, ptr %551, i64 %.8529.us.us.unr
  %557 = load double, ptr %556, align 8, !tbaa !34
  %558 = tail call double @llvm.fmuladd.f64(double %555, double %557, double %548)
  store double %558, ptr %547, align 8, !tbaa !34
  br label %._crit_edge532.us.us

._crit_edge532.us.us:                             ; preds = %._crit_edge532.us.us.unr-lcssa, %._crit_edge532.us.us.epilog-lcssa
  %559 = add nuw nsw i64 %.9404534.us.us, 1
  %exitcond572.not = icmp eq i64 %559, %3
  br i1 %exitcond572.not, label %._crit_edge536.split.us.us, label %.lr.ph531.us.us, !llvm.loop !74

._crit_edge536.split.us.us:                       ; preds = %._crit_edge532.us.us
  %560 = add nuw nsw i64 %.6538.us, 1
  %exitcond573.not = icmp eq i64 %560, %5
  br i1 %exitcond573.not, label %.backedge, label %.preheader436.us, !llvm.loop !75

._crit_edge541:                                   ; preds = %.backedge, %._crit_edge521
  %561 = getelementptr inbounds i8, ptr %0, i64 13272
  tail call void @_ZN11alglib_impl18minbleicresultsbufEPNS_13minbleicstateEPNS_9ae_vectorEPNS_14minbleicreportEPNS_8ae_stateE(ptr noundef nonnull %435, ptr noundef nonnull %436, ptr noundef nonnull %561, ptr noundef %1)
  br i1 %.not.not459, label %._crit_edge548, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %._crit_edge541
  %562 = getelementptr inbounds i8, ptr %0, i64 13424
  %563 = getelementptr inbounds i8, ptr %0, i64 13904
  %xtraiter621 = and i64 %3, 1
  %564 = icmp eq i64 %3, 1
  %unroll_iter624 = and i64 %3, 9223372036854775806
  %lcmp.mod623.not = icmp eq i64 %xtraiter621, 0
  br label %.preheader.us

.preheader.us:                                    ; preds = %._crit_edge545.us, %.preheader.lr.ph
  %.10547.us = phi i64 [ 0, %.preheader.lr.ph ], [ %592, %._crit_edge545.us ]
  %565 = mul nuw nsw i64 %.10547.us, %3
  br i1 %564, label %._crit_edge545.us.unr-lcssa, label %.preheader.us.new

.preheader.us.new:                                ; preds = %.preheader.us, %.preheader.us.new
  %.9543.us = phi i64 [ %583, %.preheader.us.new ], [ 0, %.preheader.us ]
  %niter625 = phi i64 [ %niter625.next.1, %.preheader.us.new ], [ 0, %.preheader.us ]
  %566 = load ptr, ptr %562, align 8, !tbaa !32
  %567 = getelementptr double, ptr %566, i64 %565
  %568 = getelementptr double, ptr %567, i64 %.9543.us
  %569 = load double, ptr %568, align 8, !tbaa !34
  %570 = load ptr, ptr %563, align 8, !tbaa !32
  %571 = getelementptr inbounds ptr, ptr %570, i64 %.10547.us
  %572 = load ptr, ptr %571, align 8, !tbaa !33
  %573 = getelementptr inbounds double, ptr %572, i64 %.9543.us
  store double %569, ptr %573, align 8, !tbaa !34
  %574 = or disjoint i64 %.9543.us, 1
  %575 = load ptr, ptr %562, align 8, !tbaa !32
  %576 = getelementptr double, ptr %575, i64 %565
  %577 = getelementptr double, ptr %576, i64 %574
  %578 = load double, ptr %577, align 8, !tbaa !34
  %579 = load ptr, ptr %563, align 8, !tbaa !32
  %580 = getelementptr inbounds ptr, ptr %579, i64 %.10547.us
  %581 = load ptr, ptr %580, align 8, !tbaa !33
  %582 = getelementptr inbounds double, ptr %581, i64 %574
  store double %578, ptr %582, align 8, !tbaa !34
  %583 = add nuw nsw i64 %.9543.us, 2
  %niter625.next.1 = add i64 %niter625, 2
  %niter625.ncmp.1 = icmp eq i64 %niter625.next.1, %unroll_iter624
  br i1 %niter625.ncmp.1, label %._crit_edge545.us.unr-lcssa, label %.preheader.us.new, !llvm.loop !76

._crit_edge545.us.unr-lcssa:                      ; preds = %.preheader.us.new, %.preheader.us
  %.9543.us.unr = phi i64 [ 0, %.preheader.us ], [ %583, %.preheader.us.new ]
  br i1 %lcmp.mod623.not, label %._crit_edge545.us, label %._crit_edge545.us.epilog-lcssa

._crit_edge545.us.epilog-lcssa:                   ; preds = %._crit_edge545.us.unr-lcssa
  %584 = load ptr, ptr %562, align 8, !tbaa !32
  %585 = getelementptr double, ptr %584, i64 %565
  %586 = getelementptr double, ptr %585, i64 %.9543.us.unr
  %587 = load double, ptr %586, align 8, !tbaa !34
  %588 = load ptr, ptr %563, align 8, !tbaa !32
  %589 = getelementptr inbounds ptr, ptr %588, i64 %.10547.us
  %590 = load ptr, ptr %589, align 8, !tbaa !33
  %591 = getelementptr inbounds double, ptr %590, i64 %.9543.us.unr
  store double %587, ptr %591, align 8, !tbaa !34
  br label %._crit_edge545.us

._crit_edge545.us:                                ; preds = %._crit_edge545.us.unr-lcssa, %._crit_edge545.us.epilog-lcssa
  %592 = add nuw nsw i64 %.10547.us, 1
  %exitcond575.not = icmp eq i64 %592, %3
  br i1 %exitcond575.not, label %._crit_edge548, label %.preheader.us, !llvm.loop !77

._crit_edge548:                                   ; preds = %._crit_edge545.us, %._crit_edge541
  %593 = getelementptr inbounds i8, ptr %0, i64 13296
  %594 = load i64, ptr %593, align 8, !tbaa !78
  store i64 %594, ptr %6, align 8, !tbaa !54
  %595 = getelementptr inbounds i8, ptr %0, i64 13352
  %596 = load <2 x i64>, ptr %595, align 8, !tbaa !51
  store <2 x i64> %596, ptr %7, align 8, !tbaa !51
  %597 = getelementptr inbounds i8, ptr %0, i64 13280
  %598 = load i64, ptr %597, align 8, !tbaa !79
  store i64 %598, ptr %8, align 8, !tbaa !80
  br label %599

599:                                              ; preds = %._crit_edge548, %.split498.us, %.split.us
  ret void
}

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

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

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

declare void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

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

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

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

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

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

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

declare void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl19minbleicrestartfromEPNS_13minbleicstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl13minbleicsetbcEPNS_13minbleicstateEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl13minbleicsetlcEPNS_13minbleicstateEPNS_9ae_matrixEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl15minbleicsetcondEPNS_13minbleicstateEdddlPNS_8ae_stateE(ptr noundef, double noundef, double noundef, double noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl19minbleicsetprecdiagEPNS_13minbleicstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare noundef zeroext i1 @_ZN11alglib_impl17minbleiciterationEPNS_13minbleicstateEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl18minbleicresultsbufEPNS_13minbleicstateEPNS_9ae_vectorEPNS_14minbleicreportEPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTSN11alglib_impl9mcpdstateE", !7, i64 0, !10, i64 8, !7, i64 72, !14, i64 80, !14, i64 160, !14, i64 240, !14, i64 320, !14, i64 400, !10, i64 480, !7, i64 544, !10, i64 552, !14, i64 616, !15, i64 696, !16, i64 704, !7, i64 13240, !7, i64 13248, !7, i64 13256, !7, i64 13264, !26, i64 13272, !10, i64 13368, !10, i64 13432, !10, i64 13496, !10, i64 13560, !14, i64 13624, !10, i64 13704, !10, i64 13768, !14, i64 13832}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSN11alglib_impl9ae_vectorE", !7, i64 0, !7, i64 8, !11, i64 16, !12, i64 24, !8, i64 56}
!11 = !{!"bool", !8, i64 0}
!12 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24}
!13 = !{!"any pointer", !8, i64 0}
!14 = !{!"_ZTSN11alglib_impl9ae_matrixE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !11, i64 32, !12, i64 40, !8, i64 72}
!15 = !{!"double", !8, i64 0}
!16 = !{!"_ZTSN11alglib_impl13minbleicstateE", !7, i64 0, !7, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !7, i64 40, !11, i64 48, !11, i64 49, !15, i64 56, !15, i64 64, !17, i64 72, !10, i64 4416, !7, i64 4480, !10, i64 4488, !10, i64 4552, !15, i64 4616, !10, i64 4624, !11, i64 4688, !11, i64 4689, !11, i64 4690, !11, i64 4691, !11, i64 4692, !11, i64 4693, !11, i64 4694, !19, i64 4696, !10, i64 4960, !10, i64 5024, !10, i64 5088, !10, i64 5152, !10, i64 5216, !10, i64 5280, !15, i64 5344, !15, i64 5352, !15, i64 5360, !10, i64 5368, !14, i64 5432, !7, i64 5512, !7, i64 5520, !15, i64 5528, !15, i64 5536, !15, i64 5544, !10, i64 5552, !10, i64 5616, !10, i64 5680, !10, i64 5744, !7, i64 5808, !7, i64 5816, !7, i64 5824, !7, i64 5832, !7, i64 5840, !15, i64 5848, !15, i64 5856, !15, i64 5864, !15, i64 5872, !7, i64 5880, !7, i64 5888, !10, i64 5896, !18, i64 5960, !15, i64 7600, !15, i64 7608, !15, i64 7616, !15, i64 7624, !15, i64 7632, !15, i64 7640, !15, i64 7648, !15, i64 7656, !15, i64 7664, !7, i64 7672, !15, i64 7680, !10, i64 7688, !10, i64 7752, !7, i64 7816, !7, i64 7824, !15, i64 7832, !15, i64 7840, !15, i64 7848, !10, i64 7856, !21, i64 7920, !15, i64 8112, !7, i64 8120, !14, i64 8128, !14, i64 8208, !10, i64 8288, !10, i64 8352, !7, i64 8416, !15, i64 8424, !7, i64 8432, !22, i64 8440, !10, i64 12408, !10, i64 12472}
!17 = !{!"_ZTSN11alglib_impl10sactivesetE", !7, i64 0, !7, i64 8, !10, i64 16, !11, i64 80, !10, i64 88, !10, i64 152, !10, i64 216, !11, i64 280, !14, i64 288, !14, i64 368, !14, i64 448, !7, i64 528, !10, i64 536, !7, i64 600, !7, i64 608, !11, i64 616, !11, i64 617, !10, i64 624, !10, i64 688, !10, i64 752, !10, i64 816, !14, i64 880, !7, i64 960, !7, i64 968, !10, i64 976, !10, i64 1040, !10, i64 1104, !10, i64 1168, !10, i64 1232, !10, i64 1296, !18, i64 1360, !10, i64 3000, !10, i64 3064, !10, i64 3128, !14, i64 3192, !10, i64 3272, !10, i64 3336, !10, i64 3400, !14, i64 3464, !14, i64 3544, !10, i64 3624, !10, i64 3688, !10, i64 3752, !14, i64 3816, !10, i64 3896, !10, i64 3960, !10, i64 4024, !10, i64 4088, !10, i64 4152, !10, i64 4216, !10, i64 4280}
!18 = !{!"_ZTSN11alglib_impl11snnlssolverE", !7, i64 0, !7, i64 8, !7, i64 16, !14, i64 24, !10, i64 104, !10, i64 168, !15, i64 232, !7, i64 240, !10, i64 248, !10, i64 312, !14, i64 376, !14, i64 456, !14, i64 536, !10, i64 616, !10, i64 680, !10, i64 744, !10, i64 808, !10, i64 872, !10, i64 936, !10, i64 1000, !10, i64 1064, !10, i64 1128, !10, i64 1192, !10, i64 1256, !10, i64 1320, !10, i64 1384, !10, i64 1448, !10, i64 1512, !10, i64 1576}
!19 = !{!"_ZTSN11alglib_impl10rcommstateE", !20, i64 0, !10, i64 8, !10, i64 72, !10, i64 136, !10, i64 200}
!20 = !{!"int", !8, i64 0}
!21 = !{!"_ZTSN11alglib_impl11linminstateE", !11, i64 0, !11, i64 1, !7, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !15, i64 56, !15, i64 64, !15, i64 72, !15, i64 80, !15, i64 88, !15, i64 96, !15, i64 104, !15, i64 112, !15, i64 120, !15, i64 128, !15, i64 136, !15, i64 144, !15, i64 152, !15, i64 160, !15, i64 168, !15, i64 176, !15, i64 184}
!22 = !{!"_ZTSN11alglib_impl17smoothnessmonitorE", !7, i64 0, !7, i64 8, !11, i64 16, !10, i64 24, !7, i64 88, !10, i64 96, !10, i64 160, !10, i64 224, !14, i64 288, !10, i64 368, !10, i64 432, !7, i64 496, !11, i64 504, !11, i64 505, !15, i64 512, !15, i64 520, !11, i64 528, !23, i64 536, !15, i64 832, !15, i64 840, !24, i64 848, !24, i64 1152, !15, i64 1456, !15, i64 1464, !25, i64 1472, !25, i64 1784, !11, i64 2096, !10, i64 2104, !10, i64 2168, !14, i64 2232, !19, i64 2312, !10, i64 2576, !10, i64 2640, !10, i64 2704, !10, i64 2768, !10, i64 2832, !10, i64 2896, !10, i64 2960, !10, i64 3024, !14, i64 3088, !14, i64 3168, !10, i64 3248, !10, i64 3312, !10, i64 3376, !10, i64 3440, !10, i64 3504, !10, i64 3568, !10, i64 3632, !10, i64 3696, !10, i64 3760, !10, i64 3824, !14, i64 3888}
!23 = !{!"_ZTSN11alglib_impl14optguardreportE", !11, i64 0, !11, i64 1, !7, i64 8, !15, i64 16, !11, i64 24, !11, i64 25, !11, i64 26, !7, i64 32, !15, i64 40, !11, i64 48, !7, i64 56, !7, i64 64, !10, i64 72, !14, i64 136, !14, i64 216}
!24 = !{!"_ZTSN11alglib_impl24optguardnonc1test0reportE", !11, i64 0, !7, i64 8, !10, i64 16, !10, i64 80, !7, i64 144, !10, i64 152, !10, i64 216, !7, i64 280, !7, i64 288, !7, i64 296}
!25 = !{!"_ZTSN11alglib_impl24optguardnonc1test1reportE", !11, i64 0, !7, i64 8, !7, i64 16, !10, i64 24, !10, i64 88, !7, i64 152, !10, i64 160, !10, i64 224, !7, i64 288, !7, i64 296, !7, i64 304}
!26 = !{!"_ZTSN11alglib_impl14minbleicreportE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !15, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !7, i64 88}
!27 = !{!6, !7, i64 72}
!28 = !{!29, !15, i64 8}
!29 = !{!"_ZTSN11alglib_impl8ae_stateE", !7, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !13, i64 32, !12, i64 40, !13, i64 72, !30, i64 80, !13, i64 88, !31, i64 96, !13, i64 104, !13, i64 112, !13, i64 120}
!30 = !{!"_ZTSN11alglib_impl13ae_error_typeE", !8, i64 0}
!31 = !{!"long long", !8, i64 0}
!32 = !{!8, !8, i64 0}
!33 = !{!13, !13, i64 0}
!34 = !{!15, !15, i64 0}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.mustprogress"}
!37 = distinct !{!37, !38}
!38 = !{!"llvm.loop.unroll.disable"}
!39 = distinct !{!39, !36}
!40 = !{!6, !15, i64 696}
!41 = distinct !{!41, !36}
!42 = distinct !{!42, !38}
!43 = distinct !{!43, !36}
!44 = distinct !{!44, !36}
!45 = distinct !{!45, !36}
!46 = distinct !{!46, !36}
!47 = distinct !{!47, !36}
!48 = distinct !{!48, !36}
!49 = distinct !{!49, !36}
!50 = distinct !{!50, !36}
!51 = !{!7, !7, i64 0}
!52 = distinct !{!52, !36}
!53 = distinct !{!53, !36}
!54 = !{!6, !7, i64 13264}
!55 = !{!6, !7, i64 544}
!56 = distinct !{!56, !36}
!57 = distinct !{!57, !36}
!58 = distinct !{!58, !36}
!59 = distinct !{!59, !38}
!60 = distinct !{!60, !36}
!61 = distinct !{!61, !36}
!62 = distinct !{!62, !38}
!63 = distinct !{!63, !36}
!64 = distinct !{!64, !38}
!65 = distinct !{!65, !36}
!66 = !{!6, !11, i64 5393}
!67 = !{i8 0, i8 2}
!68 = !{}
!69 = distinct !{!69, !36}
!70 = !{!6, !15, i64 5320}
!71 = distinct !{!71, !36}
!72 = distinct !{!72, !36}
!73 = distinct !{!73, !36}
!74 = distinct !{!74, !36}
!75 = distinct !{!75, !36}
!76 = distinct !{!76, !36}
!77 = distinct !{!77, !36}
!78 = !{!6, !7, i64 13296}
!79 = !{!6, !7, i64 13280}
!80 = !{!6, !7, i64 13256}


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