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

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

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

@.str.287 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.288 = external hidden unnamed_addr constant [59 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
declare dso_local void @_ZN11alglib_impl14minbleiccreateElPNS_9ae_vectorEPNS_13minbleicstateEPNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11alglib_impl15minbleicsetdrepEPNS_13minbleicstateEbPNS_8ae_stateE(ptr noundef, i1 noundef zeroext, ptr noundef) #3

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl15qpbleicoptimizeEPNS_20convexquadraticmodelEPNS_12sparsematrixElbddPNS_9ae_vectorES5_S5_S5_S5_lPNS_9ae_matrixEllPNS_15qpbleicsettingsEPNS_14qpbleicbuffersEPbS5_PlPNS_8ae_stateE(ptr noundef %0, ptr noundef %1, i64 noundef %2, i1 noundef zeroext %3, double noundef %4, double noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, i64 noundef %11, ptr noundef %12, i64 noundef %13, i64 noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20) #2 {
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca i64, align 8
  %25 = alloca i8, align 1
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca i64, align 8
  %34 = alloca ptr, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca i64, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  store ptr %0, ptr %22, align 8, !tbaa !5
  store ptr %1, ptr %23, align 8, !tbaa !5
  store i64 %2, ptr %24, align 8, !tbaa !9
  %55 = zext i1 %3 to i8
  store i8 %55, ptr %25, align 1, !tbaa !11
  store double %4, ptr %26, align 8, !tbaa !13
  store double %5, ptr %27, align 8, !tbaa !13
  store ptr %6, ptr %28, align 8, !tbaa !5
  store ptr %7, ptr %29, align 8, !tbaa !5
  store ptr %8, ptr %30, align 8, !tbaa !5
  store ptr %9, ptr %31, align 8, !tbaa !5
  store ptr %10, ptr %32, align 8, !tbaa !5
  store i64 %11, ptr %33, align 8, !tbaa !9
  store ptr %12, ptr %34, align 8, !tbaa !5
  store i64 %13, ptr %35, align 8, !tbaa !9
  store i64 %14, ptr %36, align 8, !tbaa !9
  store ptr %15, ptr %37, align 8, !tbaa !5
  store ptr %16, ptr %38, align 8, !tbaa !5
  store ptr %17, ptr %39, align 8, !tbaa !5
  store ptr %18, ptr %40, align 8, !tbaa !5
  store ptr %19, ptr %41, align 8, !tbaa !5
  store ptr %20, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  %56 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 0, ptr %56, align 8, !tbaa !9
  %57 = load i64, ptr %24, align 8, !tbaa !9
  %58 = icmp eq i64 %57, 0
  br i1 %58, label %62, label %59

59:                                               ; preds = %21
  %60 = load i64, ptr %24, align 8, !tbaa !9
  %61 = icmp eq i64 %60, 1
  br label %62

62:                                               ; preds = %59, %21
  %63 = phi i1 [ true, %21 ], [ %61, %59 ]
  %64 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %63, ptr noundef @.str.287, ptr noundef %64)
  %65 = load ptr, ptr %38, align 8, !tbaa !5
  %66 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %65, i32 0, i32 5
  store i64 0, ptr %66, align 8, !tbaa !15
  %67 = load ptr, ptr %38, align 8, !tbaa !5
  %68 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %67, i32 0, i32 6
  store i64 0, ptr %68, align 8, !tbaa !31
  %69 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 0, ptr %69, align 8, !tbaa !9
  %70 = load ptr, ptr %39, align 8, !tbaa !5
  %71 = load i8, ptr %70, align 1, !tbaa !11, !range !32, !noundef !33
  %72 = trunc i8 %71 to i1
  br i1 %72, label %73, label %80

73:                                               ; preds = %62
  %74 = load i64, ptr %33, align 8, !tbaa !9
  %75 = load ptr, ptr %40, align 8, !tbaa !5
  %76 = load ptr, ptr %38, align 8, !tbaa !5
  %77 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %76, i32 0, i32 0
  %78 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl14minbleiccreateElPNS_9ae_vectorEPNS_13minbleicstateEPNS_8ae_stateE(i64 noundef %74, ptr noundef %75, ptr noundef %77, ptr noundef %78)
  %79 = load ptr, ptr %39, align 8, !tbaa !5
  store i8 0, ptr %79, align 1, !tbaa !11
  br label %80

80:                                               ; preds = %73, %62
  store double 0.000000e+00, ptr %52, align 8, !tbaa !13
  store i64 0, ptr %43, align 8, !tbaa !9
  br label %81

81:                                               ; preds = %98, %80
  %82 = load i64, ptr %43, align 8, !tbaa !9
  %83 = load i64, ptr %33, align 8, !tbaa !9
  %84 = sub nsw i64 %83, 1
  %85 = icmp sle i64 %82, %84
  br i1 %85, label %86, label %101

86:                                               ; preds = %81
  %87 = load double, ptr %52, align 8, !tbaa !13
  %88 = load ptr, ptr %28, align 8, !tbaa !5
  %89 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %88, i32 0, i32 4
  %90 = load ptr, ptr %89, align 8, !tbaa !34
  %91 = load i64, ptr %43, align 8, !tbaa !9
  %92 = getelementptr inbounds double, ptr %90, i64 %91
  %93 = load double, ptr %92, align 8, !tbaa !13
  %94 = load ptr, ptr %42, align 8, !tbaa !5
  %95 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %93, ptr noundef %94)
  %96 = load ptr, ptr %42, align 8, !tbaa !5
  %97 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %87, double noundef %95, ptr noundef %96)
  store double %97, ptr %52, align 8, !tbaa !13
  br label %98

98:                                               ; preds = %86
  %99 = load i64, ptr %43, align 8, !tbaa !9
  %100 = add nsw i64 %99, 1
  store i64 %100, ptr %43, align 8, !tbaa !9
  br label %81, !llvm.loop !35

101:                                              ; preds = %81
  %102 = load ptr, ptr %38, align 8, !tbaa !5
  %103 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %102, i32 0, i32 4
  %104 = load i64, ptr %35, align 8, !tbaa !9
  %105 = load i64, ptr %36, align 8, !tbaa !9
  %106 = add nsw i64 %104, %105
  %107 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %103, i64 noundef %106, ptr noundef %107)
  %108 = load ptr, ptr %38, align 8, !tbaa !5
  %109 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %108, i32 0, i32 2
  %110 = load i64, ptr %33, align 8, !tbaa !9
  %111 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %109, i64 noundef %110, ptr noundef %111)
  %112 = load ptr, ptr %38, align 8, !tbaa !5
  %113 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %112, i32 0, i32 3
  %114 = load i64, ptr %33, align 8, !tbaa !9
  %115 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %113, i64 noundef %114, ptr noundef %115)
  store i64 0, ptr %43, align 8, !tbaa !9
  br label %116

116:                                              ; preds = %128, %101
  %117 = load i64, ptr %43, align 8, !tbaa !9
  %118 = load i64, ptr %35, align 8, !tbaa !9
  %119 = sub nsw i64 %118, 1
  %120 = icmp sle i64 %117, %119
  br i1 %120, label %121, label %131

121:                                              ; preds = %116
  %122 = load ptr, ptr %38, align 8, !tbaa !5
  %123 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %122, i32 0, i32 4
  %124 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %123, i32 0, i32 4
  %125 = load ptr, ptr %124, align 8, !tbaa !34
  %126 = load i64, ptr %43, align 8, !tbaa !9
  %127 = getelementptr inbounds i64, ptr %125, i64 %126
  store i64 0, ptr %127, align 8, !tbaa !9
  br label %128

128:                                              ; preds = %121
  %129 = load i64, ptr %43, align 8, !tbaa !9
  %130 = add nsw i64 %129, 1
  store i64 %130, ptr %43, align 8, !tbaa !9
  br label %116, !llvm.loop !37

131:                                              ; preds = %116
  store i64 0, ptr %43, align 8, !tbaa !9
  br label %132

132:                                              ; preds = %146, %131
  %133 = load i64, ptr %43, align 8, !tbaa !9
  %134 = load i64, ptr %36, align 8, !tbaa !9
  %135 = sub nsw i64 %134, 1
  %136 = icmp sle i64 %133, %135
  br i1 %136, label %137, label %149

137:                                              ; preds = %132
  %138 = load ptr, ptr %38, align 8, !tbaa !5
  %139 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %138, i32 0, i32 4
  %140 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %139, i32 0, i32 4
  %141 = load ptr, ptr %140, align 8, !tbaa !34
  %142 = load i64, ptr %35, align 8, !tbaa !9
  %143 = load i64, ptr %43, align 8, !tbaa !9
  %144 = add nsw i64 %142, %143
  %145 = getelementptr inbounds i64, ptr %141, i64 %144
  store i64 -1, ptr %145, align 8, !tbaa !9
  br label %146

146:                                              ; preds = %137
  %147 = load i64, ptr %43, align 8, !tbaa !9
  %148 = add nsw i64 %147, 1
  store i64 %148, ptr %43, align 8, !tbaa !9
  br label %132, !llvm.loop !38

149:                                              ; preds = %132
  %150 = load ptr, ptr %38, align 8, !tbaa !5
  %151 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %150, i32 0, i32 0
  %152 = load ptr, ptr %34, align 8, !tbaa !5
  %153 = load ptr, ptr %38, align 8, !tbaa !5
  %154 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %153, i32 0, i32 4
  %155 = load i64, ptr %35, align 8, !tbaa !9
  %156 = load i64, ptr %36, align 8, !tbaa !9
  %157 = add nsw i64 %155, %156
  %158 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl13minbleicsetlcEPNS_13minbleicstateEPNS_9ae_matrixEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %151, ptr noundef %152, ptr noundef %154, i64 noundef %157, ptr noundef %158)
  %159 = load ptr, ptr %38, align 8, !tbaa !5
  %160 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %159, i32 0, i32 0
  %161 = load ptr, ptr %29, align 8, !tbaa !5
  %162 = load ptr, ptr %30, align 8, !tbaa !5
  %163 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl13minbleicsetbcEPNS_13minbleicstateEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %160, ptr noundef %161, ptr noundef %162, ptr noundef %163)
  %164 = load ptr, ptr %38, align 8, !tbaa !5
  %165 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %164, i32 0, i32 0
  %166 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl15minbleicsetdrepEPNS_13minbleicstateEbPNS_8ae_stateE(ptr noundef %165, i1 noundef zeroext true, ptr noundef %166)
  %167 = load ptr, ptr %38, align 8, !tbaa !5
  %168 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %167, i32 0, i32 0
  %169 = load ptr, ptr %37, align 8, !tbaa !5
  %170 = getelementptr inbounds %"struct.alglib_impl::qpbleicsettings", ptr %169, i32 0, i32 3
  %171 = load i64, ptr %170, align 8, !tbaa !39
  %172 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl15minbleicsetcondEPNS_13minbleicstateEdddlPNS_8ae_stateE(ptr noundef %168, double noundef 1.000000e-300, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef %171, ptr noundef %172)
  %173 = load ptr, ptr %38, align 8, !tbaa !5
  %174 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %173, i32 0, i32 0
  %175 = load ptr, ptr %31, align 8, !tbaa !5
  %176 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl16minbleicsetscaleEPNS_13minbleicstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %174, ptr noundef %175, ptr noundef %176)
  %177 = load ptr, ptr %38, align 8, !tbaa !5
  %178 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %177, i32 0, i32 0
  %179 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl20minbleicsetprecscaleEPNS_13minbleicstateEPNS_8ae_stateE(ptr noundef %178, ptr noundef %179)
  %180 = load ptr, ptr %38, align 8, !tbaa !5
  %181 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %180, i32 0, i32 0
  %182 = load ptr, ptr %40, align 8, !tbaa !5
  %183 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl19minbleicrestartfromEPNS_13minbleicstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %181, ptr noundef %182, ptr noundef %183)
  br label %184

184:                                              ; preds = %794, %149
  %185 = load ptr, ptr %38, align 8, !tbaa !5
  %186 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %185, i32 0, i32 0
  %187 = load ptr, ptr %42, align 8, !tbaa !5
  %188 = call noundef zeroext i1 @_ZN11alglib_impl17minbleiciterationEPNS_13minbleicstateEPNS_8ae_stateE(ptr noundef %186, ptr noundef %187)
  br i1 %188, label %189, label %795

189:                                              ; preds = %184
  %190 = load ptr, ptr %38, align 8, !tbaa !5
  %191 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %190, i32 0, i32 0
  %192 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %191, i32 0, i32 20
  %193 = load i8, ptr %192, align 1, !tbaa !41, !range !32, !noundef !33
  %194 = trunc i8 %193 to i1
  br i1 %194, label %195, label %674

195:                                              ; preds = %189
  %196 = load ptr, ptr %38, align 8, !tbaa !5
  %197 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %196, i32 0, i32 5
  %198 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %197, ptr noundef %198)
  %199 = load ptr, ptr %38, align 8, !tbaa !5
  %200 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %199, i32 0, i32 0
  %201 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %200, i32 0, i32 21
  %202 = load i8, ptr %201, align 4, !tbaa !42, !range !32, !noundef !33
  %203 = trunc i8 %202 to i1
  br i1 %203, label %204, label %208

204:                                              ; preds = %195
  %205 = load ptr, ptr %38, align 8, !tbaa !5
  %206 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %205, i32 0, i32 6
  %207 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %206, ptr noundef %207)
  br label %208

208:                                              ; preds = %204, %195
  %209 = load ptr, ptr %38, align 8, !tbaa !5
  %210 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %209, i32 0, i32 0
  %211 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %210, i32 0, i32 15
  %212 = load double, ptr %211, align 8, !tbaa !43
  store double %212, ptr %46, align 8, !tbaa !13
  %213 = load ptr, ptr %38, align 8, !tbaa !5
  %214 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %213, i32 0, i32 0
  %215 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %214, i32 0, i32 34
  %216 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %215, i32 0, i32 4
  %217 = load ptr, ptr %216, align 8, !tbaa !34
  %218 = getelementptr inbounds double, ptr %217, i64 0
  %219 = load ptr, ptr %38, align 8, !tbaa !5
  %220 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %219, i32 0, i32 0
  %221 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %220, i32 0, i32 16
  %222 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %221, i32 0, i32 4
  %223 = load ptr, ptr %222, align 8, !tbaa !34
  %224 = getelementptr inbounds double, ptr %223, i64 0
  %225 = load i64, ptr %33, align 8, !tbaa !9
  %226 = sub nsw i64 %225, 1
  %227 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %226)
  %228 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %218, i64 noundef 1, ptr noundef %224, i64 noundef 1, i64 noundef %227)
  store double %228, ptr %45, align 8, !tbaa !13
  store double 0.000000e+00, ptr %44, align 8, !tbaa !13
  %229 = load i64, ptr %24, align 8, !tbaa !9
  %230 = icmp eq i64 %229, 0
  br i1 %230, label %231, label %240

231:                                              ; preds = %208
  %232 = load ptr, ptr %22, align 8, !tbaa !5
  %233 = load ptr, ptr %38, align 8, !tbaa !5
  %234 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %233, i32 0, i32 0
  %235 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %234, i32 0, i32 34
  %236 = load ptr, ptr %38, align 8, !tbaa !5
  %237 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %236, i32 0, i32 2
  %238 = load ptr, ptr %42, align 8, !tbaa !5
  %239 = call noundef double @_ZN11alglib_impl9cqmxtadx2EPNS_20convexquadraticmodelEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %232, ptr noundef %235, ptr noundef %237, ptr noundef %238)
  store double %239, ptr %44, align 8, !tbaa !13
  br label %240

240:                                              ; preds = %231, %208
  %241 = load i64, ptr %24, align 8, !tbaa !9
  %242 = icmp eq i64 %241, 1
  br i1 %242, label %243, label %282

243:                                              ; preds = %240
  %244 = load ptr, ptr %23, align 8, !tbaa !5
  %245 = load i8, ptr %25, align 1, !tbaa !11, !range !32, !noundef !33
  %246 = trunc i8 %245 to i1
  %247 = load ptr, ptr %38, align 8, !tbaa !5
  %248 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %247, i32 0, i32 0
  %249 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %248, i32 0, i32 34
  %250 = load ptr, ptr %38, align 8, !tbaa !5
  %251 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %250, i32 0, i32 2
  %252 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl9sparsesmvEPNS_12sparsematrixEbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %244, i1 noundef zeroext %246, ptr noundef %249, ptr noundef %251, ptr noundef %252)
  store double 0.000000e+00, ptr %44, align 8, !tbaa !13
  store i64 0, ptr %43, align 8, !tbaa !9
  br label %253

253:                                              ; preds = %276, %243
  %254 = load i64, ptr %43, align 8, !tbaa !9
  %255 = load i64, ptr %33, align 8, !tbaa !9
  %256 = sub nsw i64 %255, 1
  %257 = icmp sle i64 %254, %256
  br i1 %257, label %258, label %279

258:                                              ; preds = %253
  %259 = load double, ptr %44, align 8, !tbaa !13
  %260 = load ptr, ptr %38, align 8, !tbaa !5
  %261 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %260, i32 0, i32 0
  %262 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %261, i32 0, i32 34
  %263 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %262, i32 0, i32 4
  %264 = load ptr, ptr %263, align 8, !tbaa !34
  %265 = load i64, ptr %43, align 8, !tbaa !9
  %266 = getelementptr inbounds double, ptr %264, i64 %265
  %267 = load double, ptr %266, align 8, !tbaa !13
  %268 = load ptr, ptr %38, align 8, !tbaa !5
  %269 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %268, i32 0, i32 2
  %270 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %269, i32 0, i32 4
  %271 = load ptr, ptr %270, align 8, !tbaa !34
  %272 = load i64, ptr %43, align 8, !tbaa !9
  %273 = getelementptr inbounds double, ptr %271, i64 %272
  %274 = load double, ptr %273, align 8, !tbaa !13
  %275 = call double @llvm.fmuladd.f64(double %267, double %274, double %259)
  store double %275, ptr %44, align 8, !tbaa !13
  br label %276

276:                                              ; preds = %258
  %277 = load i64, ptr %43, align 8, !tbaa !9
  %278 = add nsw i64 %277, 1
  store i64 %278, ptr %43, align 8, !tbaa !9
  br label %253, !llvm.loop !44

279:                                              ; preds = %253
  %280 = load double, ptr %44, align 8, !tbaa !13
  %281 = fmul double 5.000000e-01, %280
  store double %281, ptr %44, align 8, !tbaa !13
  br label %282

282:                                              ; preds = %279, %240
  store double 0.000000e+00, ptr %51, align 8, !tbaa !13
  store double 0.000000e+00, ptr %50, align 8, !tbaa !13
  store i64 0, ptr %43, align 8, !tbaa !9
  br label %283

283:                                              ; preds = %315, %282
  %284 = load i64, ptr %43, align 8, !tbaa !9
  %285 = load i64, ptr %33, align 8, !tbaa !9
  %286 = sub nsw i64 %285, 1
  %287 = icmp sle i64 %284, %286
  br i1 %287, label %288, label %318

288:                                              ; preds = %283
  %289 = load double, ptr %51, align 8, !tbaa !13
  %290 = load ptr, ptr %38, align 8, !tbaa !5
  %291 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %290, i32 0, i32 0
  %292 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %291, i32 0, i32 14
  %293 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %292, i32 0, i32 4
  %294 = load ptr, ptr %293, align 8, !tbaa !34
  %295 = load i64, ptr %43, align 8, !tbaa !9
  %296 = getelementptr inbounds double, ptr %294, i64 %295
  %297 = load double, ptr %296, align 8, !tbaa !13
  %298 = load ptr, ptr %42, align 8, !tbaa !5
  %299 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %297, ptr noundef %298)
  %300 = load ptr, ptr %42, align 8, !tbaa !5
  %301 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %289, double noundef %299, ptr noundef %300)
  store double %301, ptr %51, align 8, !tbaa !13
  %302 = load double, ptr %50, align 8, !tbaa !13
  %303 = load ptr, ptr %38, align 8, !tbaa !5
  %304 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %303, i32 0, i32 0
  %305 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %304, i32 0, i32 34
  %306 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %305, i32 0, i32 4
  %307 = load ptr, ptr %306, align 8, !tbaa !34
  %308 = load i64, ptr %43, align 8, !tbaa !9
  %309 = getelementptr inbounds double, ptr %307, i64 %308
  %310 = load double, ptr %309, align 8, !tbaa !13
  %311 = load ptr, ptr %42, align 8, !tbaa !5
  %312 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %310, ptr noundef %311)
  %313 = load ptr, ptr %42, align 8, !tbaa !5
  %314 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %302, double noundef %312, ptr noundef %313)
  store double %314, ptr %50, align 8, !tbaa !13
  br label %315

315:                                              ; preds = %288
  %316 = load i64, ptr %43, align 8, !tbaa !9
  %317 = add nsw i64 %316, 1
  store i64 %317, ptr %43, align 8, !tbaa !9
  br label %283, !llvm.loop !45

318:                                              ; preds = %283
  %319 = load double, ptr %26, align 8, !tbaa !13
  %320 = load double, ptr %27, align 8, !tbaa !13
  %321 = load double, ptr %51, align 8, !tbaa !13
  %322 = load double, ptr %52, align 8, !tbaa !13
  %323 = load double, ptr %50, align 8, !tbaa !13
  %324 = load double, ptr %45, align 8, !tbaa !13
  %325 = load double, ptr %44, align 8, !tbaa !13
  %326 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl22estimateparabolicmodelEdddddddPlS0_PNS_8ae_stateE(double noundef %319, double noundef %320, double noundef %321, double noundef %322, double noundef %323, double noundef %324, double noundef %325, ptr noundef %53, ptr noundef %54, ptr noundef %326)
  %327 = load ptr, ptr %38, align 8, !tbaa !5
  %328 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %327, i32 0, i32 0
  %329 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %328, i32 0, i32 21
  %330 = load i8, ptr %329, align 4, !tbaa !42, !range !32, !noundef !33
  %331 = trunc i8 %330 to i1
  br i1 %331, label %332, label %613

332:                                              ; preds = %318
  %333 = load i64, ptr %54, align 8, !tbaa !9
  %334 = icmp sge i64 %333, 0
  br i1 %334, label %335, label %613

335:                                              ; preds = %332
  %336 = load i64, ptr %53, align 8, !tbaa !9
  %337 = icmp sge i64 %336, 0
  br i1 %337, label %338, label %363

338:                                              ; preds = %335
  %339 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 4, ptr %339, align 8, !tbaa !9
  store i64 0, ptr %43, align 8, !tbaa !9
  br label %340

340:                                              ; preds = %359, %338
  %341 = load i64, ptr %43, align 8, !tbaa !9
  %342 = load i64, ptr %33, align 8, !tbaa !9
  %343 = sub nsw i64 %342, 1
  %344 = icmp sle i64 %341, %343
  br i1 %344, label %345, label %362

345:                                              ; preds = %340
  %346 = load ptr, ptr %38, align 8, !tbaa !5
  %347 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %346, i32 0, i32 0
  %348 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %347, i32 0, i32 14
  %349 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %348, i32 0, i32 4
  %350 = load ptr, ptr %349, align 8, !tbaa !34
  %351 = load i64, ptr %43, align 8, !tbaa !9
  %352 = getelementptr inbounds double, ptr %350, i64 %351
  %353 = load double, ptr %352, align 8, !tbaa !13
  %354 = load ptr, ptr %40, align 8, !tbaa !5
  %355 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %354, i32 0, i32 4
  %356 = load ptr, ptr %355, align 8, !tbaa !34
  %357 = load i64, ptr %43, align 8, !tbaa !9
  %358 = getelementptr inbounds double, ptr %356, i64 %357
  store double %353, ptr %358, align 8, !tbaa !13
  br label %359

359:                                              ; preds = %345
  %360 = load i64, ptr %43, align 8, !tbaa !9
  %361 = add nsw i64 %360, 1
  store i64 %361, ptr %43, align 8, !tbaa !9
  br label %340, !llvm.loop !46

362:                                              ; preds = %340
  br label %795

363:                                              ; preds = %335
  %364 = load i64, ptr %54, align 8, !tbaa !9
  %365 = icmp sgt i64 %364, 0
  br i1 %365, label %366, label %612

366:                                              ; preds = %363
  store double 0.000000e+00, ptr %47, align 8, !tbaa !13
  store i64 0, ptr %43, align 8, !tbaa !9
  br label %367

367:                                              ; preds = %426, %366
  %368 = load i64, ptr %43, align 8, !tbaa !9
  %369 = load i64, ptr %33, align 8, !tbaa !9
  %370 = sub nsw i64 %369, 1
  %371 = icmp sle i64 %368, %370
  br i1 %371, label %372, label %429

372:                                              ; preds = %367
  %373 = load ptr, ptr %38, align 8, !tbaa !5
  %374 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %373, i32 0, i32 0
  %375 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %374, i32 0, i32 34
  %376 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %375, i32 0, i32 4
  %377 = load ptr, ptr %376, align 8, !tbaa !34
  %378 = load i64, ptr %43, align 8, !tbaa !9
  %379 = getelementptr inbounds double, ptr %377, i64 %378
  %380 = load double, ptr %379, align 8, !tbaa !13
  %381 = load ptr, ptr %31, align 8, !tbaa !5
  %382 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %381, i32 0, i32 4
  %383 = load ptr, ptr %382, align 8, !tbaa !34
  %384 = load i64, ptr %43, align 8, !tbaa !9
  %385 = getelementptr inbounds double, ptr %383, i64 %384
  %386 = load double, ptr %385, align 8, !tbaa !13
  %387 = fdiv double %380, %386
  %388 = load ptr, ptr %38, align 8, !tbaa !5
  %389 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %388, i32 0, i32 2
  %390 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %389, i32 0, i32 4
  %391 = load ptr, ptr %390, align 8, !tbaa !34
  %392 = load i64, ptr %43, align 8, !tbaa !9
  %393 = getelementptr inbounds double, ptr %391, i64 %392
  store double %387, ptr %393, align 8, !tbaa !13
  %394 = load ptr, ptr %38, align 8, !tbaa !5
  %395 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %394, i32 0, i32 0
  %396 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %395, i32 0, i32 16
  %397 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %396, i32 0, i32 4
  %398 = load ptr, ptr %397, align 8, !tbaa !34
  %399 = load i64, ptr %43, align 8, !tbaa !9
  %400 = getelementptr inbounds double, ptr %398, i64 %399
  %401 = load double, ptr %400, align 8, !tbaa !13
  %402 = load ptr, ptr %31, align 8, !tbaa !5
  %403 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %402, i32 0, i32 4
  %404 = load ptr, ptr %403, align 8, !tbaa !34
  %405 = load i64, ptr %43, align 8, !tbaa !9
  %406 = getelementptr inbounds double, ptr %404, i64 %405
  %407 = load double, ptr %406, align 8, !tbaa !13
  %408 = fmul double %401, %407
  %409 = load ptr, ptr %38, align 8, !tbaa !5
  %410 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %409, i32 0, i32 3
  %411 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %410, i32 0, i32 4
  %412 = load ptr, ptr %411, align 8, !tbaa !34
  %413 = load i64, ptr %43, align 8, !tbaa !9
  %414 = getelementptr inbounds double, ptr %412, i64 %413
  store double %408, ptr %414, align 8, !tbaa !13
  %415 = load double, ptr %47, align 8, !tbaa !13
  %416 = load ptr, ptr %38, align 8, !tbaa !5
  %417 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %416, i32 0, i32 2
  %418 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %417, i32 0, i32 4
  %419 = load ptr, ptr %418, align 8, !tbaa !34
  %420 = load i64, ptr %43, align 8, !tbaa !9
  %421 = getelementptr inbounds double, ptr %419, i64 %420
  %422 = load double, ptr %421, align 8, !tbaa !13
  %423 = load ptr, ptr %42, align 8, !tbaa !5
  %424 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %422, ptr noundef %423)
  %425 = fadd double %415, %424
  store double %425, ptr %47, align 8, !tbaa !13
  br label %426

426:                                              ; preds = %372
  %427 = load i64, ptr %43, align 8, !tbaa !9
  %428 = add nsw i64 %427, 1
  store i64 %428, ptr %43, align 8, !tbaa !9
  br label %367, !llvm.loop !47

429:                                              ; preds = %367
  %430 = load double, ptr %47, align 8, !tbaa !13
  %431 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %430, double noundef 0.000000e+00)
  %432 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %431, ptr noundef @.str.288, ptr noundef %432)
  %433 = load double, ptr %47, align 8, !tbaa !13
  %434 = load ptr, ptr %42, align 8, !tbaa !5
  %435 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %433, ptr noundef %434)
  %436 = fdiv double 1.000000e+00, %435
  store double %436, ptr %47, align 8, !tbaa !13
  %437 = load ptr, ptr %38, align 8, !tbaa !5
  %438 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %437, i32 0, i32 2
  %439 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %438, i32 0, i32 4
  %440 = load ptr, ptr %439, align 8, !tbaa !34
  %441 = getelementptr inbounds double, ptr %440, i64 0
  %442 = load i64, ptr %33, align 8, !tbaa !9
  %443 = sub nsw i64 %442, 1
  %444 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %443)
  %445 = load double, ptr %47, align 8, !tbaa !13
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %441, i64 noundef 1, i64 noundef %444, double noundef %445)
  %446 = load ptr, ptr %38, align 8, !tbaa !5
  %447 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %446, i32 0, i32 2
  %448 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %447, i32 0, i32 4
  %449 = load ptr, ptr %448, align 8, !tbaa !34
  %450 = getelementptr inbounds double, ptr %449, i64 0
  %451 = load ptr, ptr %38, align 8, !tbaa !5
  %452 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %451, i32 0, i32 3
  %453 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %452, i32 0, i32 4
  %454 = load ptr, ptr %453, align 8, !tbaa !34
  %455 = getelementptr inbounds double, ptr %454, i64 0
  %456 = load i64, ptr %33, align 8, !tbaa !9
  %457 = sub nsw i64 %456, 1
  %458 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %457)
  %459 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %450, i64 noundef 1, ptr noundef %455, i64 noundef 1, i64 noundef %458)
  store double %459, ptr %47, align 8, !tbaa !13
  %460 = load double, ptr %47, align 8, !tbaa !13
  %461 = load ptr, ptr %42, align 8, !tbaa !5
  %462 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %460, ptr noundef %461)
  %463 = load ptr, ptr %37, align 8, !tbaa !5
  %464 = getelementptr inbounds %"struct.alglib_impl::qpbleicsettings", ptr %463, i32 0, i32 0
  %465 = load double, ptr %464, align 8, !tbaa !48
  %466 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %462, double noundef %465)
  br i1 %466, label %467, label %492

467:                                              ; preds = %429
  %468 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 4, ptr %468, align 8, !tbaa !9
  store i64 0, ptr %43, align 8, !tbaa !9
  br label %469

469:                                              ; preds = %488, %467
  %470 = load i64, ptr %43, align 8, !tbaa !9
  %471 = load i64, ptr %33, align 8, !tbaa !9
  %472 = sub nsw i64 %471, 1
  %473 = icmp sle i64 %470, %472
  br i1 %473, label %474, label %491

474:                                              ; preds = %469
  %475 = load ptr, ptr %38, align 8, !tbaa !5
  %476 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %475, i32 0, i32 0
  %477 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %476, i32 0, i32 14
  %478 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %477, i32 0, i32 4
  %479 = load ptr, ptr %478, align 8, !tbaa !34
  %480 = load i64, ptr %43, align 8, !tbaa !9
  %481 = getelementptr inbounds double, ptr %479, i64 %480
  %482 = load double, ptr %481, align 8, !tbaa !13
  %483 = load ptr, ptr %40, align 8, !tbaa !5
  %484 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %483, i32 0, i32 4
  %485 = load ptr, ptr %484, align 8, !tbaa !34
  %486 = load i64, ptr %43, align 8, !tbaa !9
  %487 = getelementptr inbounds double, ptr %485, i64 %486
  store double %482, ptr %487, align 8, !tbaa !13
  br label %488

488:                                              ; preds = %474
  %489 = load i64, ptr %43, align 8, !tbaa !9
  %490 = add nsw i64 %489, 1
  store i64 %490, ptr %43, align 8, !tbaa !9
  br label %469, !llvm.loop !49

491:                                              ; preds = %469
  br label %795

492:                                              ; preds = %429
  %493 = load double, ptr %45, align 8, !tbaa !13
  %494 = fneg double %493
  %495 = load double, ptr %44, align 8, !tbaa !13
  %496 = fmul double 2.000000e+00, %495
  %497 = fdiv double %494, %496
  store double %497, ptr %47, align 8, !tbaa !13
  %498 = load double, ptr %44, align 8, !tbaa !13
  %499 = load double, ptr %47, align 8, !tbaa !13
  %500 = fmul double %498, %499
  %501 = load double, ptr %47, align 8, !tbaa !13
  %502 = load double, ptr %45, align 8, !tbaa !13
  %503 = load double, ptr %47, align 8, !tbaa !13
  %504 = fmul double %502, %503
  %505 = call double @llvm.fmuladd.f64(double %500, double %501, double %504)
  store double %505, ptr %49, align 8, !tbaa !13
  %506 = load double, ptr %49, align 8, !tbaa !13
  %507 = load ptr, ptr %42, align 8, !tbaa !5
  %508 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %506, ptr noundef %507)
  %509 = load ptr, ptr %37, align 8, !tbaa !5
  %510 = getelementptr inbounds %"struct.alglib_impl::qpbleicsettings", ptr %509, i32 0, i32 1
  %511 = load double, ptr %510, align 8, !tbaa !50
  %512 = load double, ptr %46, align 8, !tbaa !13
  %513 = load ptr, ptr %42, align 8, !tbaa !5
  %514 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %512, double noundef 1.000000e+00, ptr noundef %513)
  %515 = fmul double %511, %514
  %516 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %508, double noundef %515)
  br i1 %516, label %517, label %542

517:                                              ; preds = %492
  %518 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 1, ptr %518, align 8, !tbaa !9
  store i64 0, ptr %43, align 8, !tbaa !9
  br label %519

519:                                              ; preds = %538, %517
  %520 = load i64, ptr %43, align 8, !tbaa !9
  %521 = load i64, ptr %33, align 8, !tbaa !9
  %522 = sub nsw i64 %521, 1
  %523 = icmp sle i64 %520, %522
  br i1 %523, label %524, label %541

524:                                              ; preds = %519
  %525 = load ptr, ptr %38, align 8, !tbaa !5
  %526 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %525, i32 0, i32 0
  %527 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %526, i32 0, i32 14
  %528 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %527, i32 0, i32 4
  %529 = load ptr, ptr %528, align 8, !tbaa !34
  %530 = load i64, ptr %43, align 8, !tbaa !9
  %531 = getelementptr inbounds double, ptr %529, i64 %530
  %532 = load double, ptr %531, align 8, !tbaa !13
  %533 = load ptr, ptr %40, align 8, !tbaa !5
  %534 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %533, i32 0, i32 4
  %535 = load ptr, ptr %534, align 8, !tbaa !34
  %536 = load i64, ptr %43, align 8, !tbaa !9
  %537 = getelementptr inbounds double, ptr %535, i64 %536
  store double %532, ptr %537, align 8, !tbaa !13
  br label %538

538:                                              ; preds = %524
  %539 = load i64, ptr %43, align 8, !tbaa !9
  %540 = add nsw i64 %539, 1
  store i64 %540, ptr %43, align 8, !tbaa !9
  br label %519, !llvm.loop !51

541:                                              ; preds = %519
  br label %795

542:                                              ; preds = %492
  %543 = load double, ptr %45, align 8, !tbaa !13
  %544 = fneg double %543
  %545 = load double, ptr %44, align 8, !tbaa !13
  %546 = fmul double 2.000000e+00, %545
  %547 = fdiv double %544, %546
  store double %547, ptr %48, align 8, !tbaa !13
  store double 0.000000e+00, ptr %47, align 8, !tbaa !13
  store i64 0, ptr %43, align 8, !tbaa !9
  br label %548

548:                                              ; preds = %575, %542
  %549 = load i64, ptr %43, align 8, !tbaa !9
  %550 = load i64, ptr %33, align 8, !tbaa !9
  %551 = sub nsw i64 %550, 1
  %552 = icmp sle i64 %549, %551
  br i1 %552, label %553, label %578

553:                                              ; preds = %548
  %554 = load double, ptr %47, align 8, !tbaa !13
  %555 = load double, ptr %48, align 8, !tbaa !13
  %556 = load ptr, ptr %38, align 8, !tbaa !5
  %557 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %556, i32 0, i32 0
  %558 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %557, i32 0, i32 34
  %559 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %558, i32 0, i32 4
  %560 = load ptr, ptr %559, align 8, !tbaa !34
  %561 = load i64, ptr %43, align 8, !tbaa !9
  %562 = getelementptr inbounds double, ptr %560, i64 %561
  %563 = load double, ptr %562, align 8, !tbaa !13
  %564 = fmul double %555, %563
  %565 = load ptr, ptr %31, align 8, !tbaa !5
  %566 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %565, i32 0, i32 4
  %567 = load ptr, ptr %566, align 8, !tbaa !34
  %568 = load i64, ptr %43, align 8, !tbaa !9
  %569 = getelementptr inbounds double, ptr %567, i64 %568
  %570 = load double, ptr %569, align 8, !tbaa !13
  %571 = fdiv double %564, %570
  %572 = load ptr, ptr %42, align 8, !tbaa !5
  %573 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %571, ptr noundef %572)
  %574 = fadd double %554, %573
  store double %574, ptr %47, align 8, !tbaa !13
  br label %575

575:                                              ; preds = %553
  %576 = load i64, ptr %43, align 8, !tbaa !9
  %577 = add nsw i64 %576, 1
  store i64 %577, ptr %43, align 8, !tbaa !9
  br label %548, !llvm.loop !52

578:                                              ; preds = %548
  %579 = load double, ptr %47, align 8, !tbaa !13
  %580 = load ptr, ptr %42, align 8, !tbaa !5
  %581 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %579, ptr noundef %580)
  %582 = load ptr, ptr %37, align 8, !tbaa !5
  %583 = getelementptr inbounds %"struct.alglib_impl::qpbleicsettings", ptr %582, i32 0, i32 2
  %584 = load double, ptr %583, align 8, !tbaa !53
  %585 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %581, double noundef %584)
  br i1 %585, label %586, label %611

586:                                              ; preds = %578
  %587 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 2, ptr %587, align 8, !tbaa !9
  store i64 0, ptr %43, align 8, !tbaa !9
  br label %588

588:                                              ; preds = %607, %586
  %589 = load i64, ptr %43, align 8, !tbaa !9
  %590 = load i64, ptr %33, align 8, !tbaa !9
  %591 = sub nsw i64 %590, 1
  %592 = icmp sle i64 %589, %591
  br i1 %592, label %593, label %610

593:                                              ; preds = %588
  %594 = load ptr, ptr %38, align 8, !tbaa !5
  %595 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %594, i32 0, i32 0
  %596 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %595, i32 0, i32 14
  %597 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %596, i32 0, i32 4
  %598 = load ptr, ptr %597, align 8, !tbaa !34
  %599 = load i64, ptr %43, align 8, !tbaa !9
  %600 = getelementptr inbounds double, ptr %598, i64 %599
  %601 = load double, ptr %600, align 8, !tbaa !13
  %602 = load ptr, ptr %40, align 8, !tbaa !5
  %603 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %602, i32 0, i32 4
  %604 = load ptr, ptr %603, align 8, !tbaa !34
  %605 = load i64, ptr %43, align 8, !tbaa !9
  %606 = getelementptr inbounds double, ptr %604, i64 %605
  store double %601, ptr %606, align 8, !tbaa !13
  br label %607

607:                                              ; preds = %593
  %608 = load i64, ptr %43, align 8, !tbaa !9
  %609 = add nsw i64 %608, 1
  store i64 %609, ptr %43, align 8, !tbaa !9
  br label %588, !llvm.loop !54

610:                                              ; preds = %588
  br label %795

611:                                              ; preds = %578
  br label %612

612:                                              ; preds = %611, %363
  br label %613

613:                                              ; preds = %612, %332, %318
  %614 = load i64, ptr %54, align 8, !tbaa !9
  %615 = icmp slt i64 %614, 0
  br i1 %615, label %622, label %616

616:                                              ; preds = %613
  %617 = load i64, ptr %54, align 8, !tbaa !9
  %618 = icmp eq i64 %617, 0
  br i1 %618, label %619, label %653

619:                                              ; preds = %616
  %620 = load i64, ptr %53, align 8, !tbaa !9
  %621 = icmp slt i64 %620, 0
  br i1 %621, label %622, label %653

622:                                              ; preds = %619, %613
  %623 = load ptr, ptr %38, align 8, !tbaa !5
  %624 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %623, i32 0, i32 0
  %625 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %624, i32 0, i32 22
  %626 = load i8, ptr %625, align 1, !tbaa !55, !range !32, !noundef !33
  %627 = trunc i8 %626 to i1
  br i1 %627, label %653, label %628

628:                                              ; preds = %622
  %629 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -4, ptr %629, align 8, !tbaa !9
  store i64 0, ptr %43, align 8, !tbaa !9
  br label %630

630:                                              ; preds = %649, %628
  %631 = load i64, ptr %43, align 8, !tbaa !9
  %632 = load i64, ptr %33, align 8, !tbaa !9
  %633 = sub nsw i64 %632, 1
  %634 = icmp sle i64 %631, %633
  br i1 %634, label %635, label %652

635:                                              ; preds = %630
  %636 = load ptr, ptr %38, align 8, !tbaa !5
  %637 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %636, i32 0, i32 0
  %638 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %637, i32 0, i32 14
  %639 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %638, i32 0, i32 4
  %640 = load ptr, ptr %639, align 8, !tbaa !34
  %641 = load i64, ptr %43, align 8, !tbaa !9
  %642 = getelementptr inbounds double, ptr %640, i64 %641
  %643 = load double, ptr %642, align 8, !tbaa !13
  %644 = load ptr, ptr %40, align 8, !tbaa !5
  %645 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %644, i32 0, i32 4
  %646 = load ptr, ptr %645, align 8, !tbaa !34
  %647 = load i64, ptr %43, align 8, !tbaa !9
  %648 = getelementptr inbounds double, ptr %646, i64 %647
  store double %643, ptr %648, align 8, !tbaa !13
  br label %649

649:                                              ; preds = %635
  %650 = load i64, ptr %43, align 8, !tbaa !9
  %651 = add nsw i64 %650, 1
  store i64 %651, ptr %43, align 8, !tbaa !9
  br label %630, !llvm.loop !56

652:                                              ; preds = %630
  br label %795

653:                                              ; preds = %622, %619, %616
  %654 = load i64, ptr %53, align 8, !tbaa !9
  %655 = icmp slt i64 %654, 0
  br i1 %655, label %656, label %673

656:                                              ; preds = %653
  %657 = load i64, ptr %54, align 8, !tbaa !9
  %658 = icmp sgt i64 %657, 0
  br i1 %658, label %659, label %673

659:                                              ; preds = %656
  %660 = load double, ptr %45, align 8, !tbaa !13
  %661 = fneg double %660
  %662 = load double, ptr %44, align 8, !tbaa !13
  %663 = fmul double 2.000000e+00, %662
  %664 = load ptr, ptr %38, align 8, !tbaa !5
  %665 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %664, i32 0, i32 0
  %666 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %665, i32 0, i32 74
  %667 = load double, ptr %666, align 8, !tbaa !57
  %668 = load ptr, ptr %42, align 8, !tbaa !5
  %669 = call noundef double @_ZN11alglib_impl12safeminposrvEdddPNS_8ae_stateE(double noundef %661, double noundef %663, double noundef %667, ptr noundef %668)
  %670 = load ptr, ptr %38, align 8, !tbaa !5
  %671 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %670, i32 0, i32 0
  %672 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %671, i32 0, i32 73
  store double %669, ptr %672, align 8, !tbaa !58
  br label %673

673:                                              ; preds = %659, %656, %653
  br label %674

674:                                              ; preds = %673, %189
  %675 = load ptr, ptr %38, align 8, !tbaa !5
  %676 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %675, i32 0, i32 0
  %677 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %676, i32 0, i32 18
  %678 = load i8, ptr %677, align 1, !tbaa !59, !range !32, !noundef !33
  %679 = trunc i8 %678 to i1
  br i1 %679, label %680, label %794

680:                                              ; preds = %674
  store i64 0, ptr %43, align 8, !tbaa !9
  br label %681

681:                                              ; preds = %708, %680
  %682 = load i64, ptr %43, align 8, !tbaa !9
  %683 = load i64, ptr %33, align 8, !tbaa !9
  %684 = sub nsw i64 %683, 1
  %685 = icmp sle i64 %682, %684
  br i1 %685, label %686, label %711

686:                                              ; preds = %681
  %687 = load ptr, ptr %38, align 8, !tbaa !5
  %688 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %687, i32 0, i32 0
  %689 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %688, i32 0, i32 14
  %690 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %689, i32 0, i32 4
  %691 = load ptr, ptr %690, align 8, !tbaa !34
  %692 = load i64, ptr %43, align 8, !tbaa !9
  %693 = getelementptr inbounds double, ptr %691, i64 %692
  %694 = load double, ptr %693, align 8, !tbaa !13
  %695 = load ptr, ptr %32, align 8, !tbaa !5
  %696 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %695, i32 0, i32 4
  %697 = load ptr, ptr %696, align 8, !tbaa !34
  %698 = load i64, ptr %43, align 8, !tbaa !9
  %699 = getelementptr inbounds double, ptr %697, i64 %698
  %700 = load double, ptr %699, align 8, !tbaa !13
  %701 = fsub double %694, %700
  %702 = load ptr, ptr %38, align 8, !tbaa !5
  %703 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %702, i32 0, i32 2
  %704 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %703, i32 0, i32 4
  %705 = load ptr, ptr %704, align 8, !tbaa !34
  %706 = load i64, ptr %43, align 8, !tbaa !9
  %707 = getelementptr inbounds double, ptr %705, i64 %706
  store double %701, ptr %707, align 8, !tbaa !13
  br label %708

708:                                              ; preds = %686
  %709 = load i64, ptr %43, align 8, !tbaa !9
  %710 = add nsw i64 %709, 1
  store i64 %710, ptr %43, align 8, !tbaa !9
  br label %681, !llvm.loop !60

711:                                              ; preds = %681
  %712 = load i64, ptr %24, align 8, !tbaa !9
  %713 = icmp eq i64 %712, 0
  br i1 %713, label %714, label %721

714:                                              ; preds = %711
  %715 = load ptr, ptr %22, align 8, !tbaa !5
  %716 = load ptr, ptr %38, align 8, !tbaa !5
  %717 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %716, i32 0, i32 2
  %718 = load ptr, ptr %38, align 8, !tbaa !5
  %719 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %718, i32 0, i32 3
  %720 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl6cqmadxEPNS_20convexquadraticmodelEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %715, ptr noundef %717, ptr noundef %719, ptr noundef %720)
  br label %721

721:                                              ; preds = %714, %711
  %722 = load i64, ptr %24, align 8, !tbaa !9
  %723 = icmp eq i64 %722, 1
  br i1 %723, label %724, label %733

724:                                              ; preds = %721
  %725 = load ptr, ptr %23, align 8, !tbaa !5
  %726 = load i8, ptr %25, align 1, !tbaa !11, !range !32, !noundef !33
  %727 = trunc i8 %726 to i1
  %728 = load ptr, ptr %38, align 8, !tbaa !5
  %729 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %728, i32 0, i32 2
  %730 = load ptr, ptr %38, align 8, !tbaa !5
  %731 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %730, i32 0, i32 3
  %732 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl9sparsesmvEPNS_12sparsematrixEbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %725, i1 noundef zeroext %727, ptr noundef %729, ptr noundef %731, ptr noundef %732)
  br label %733

733:                                              ; preds = %724, %721
  %734 = load ptr, ptr %38, align 8, !tbaa !5
  %735 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %734, i32 0, i32 2
  %736 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %735, i32 0, i32 4
  %737 = load ptr, ptr %736, align 8, !tbaa !34
  %738 = getelementptr inbounds double, ptr %737, i64 0
  %739 = load ptr, ptr %38, align 8, !tbaa !5
  %740 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %739, i32 0, i32 3
  %741 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %740, i32 0, i32 4
  %742 = load ptr, ptr %741, align 8, !tbaa !34
  %743 = getelementptr inbounds double, ptr %742, i64 0
  %744 = load i64, ptr %33, align 8, !tbaa !9
  %745 = sub nsw i64 %744, 1
  %746 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %745)
  %747 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %738, i64 noundef 1, ptr noundef %743, i64 noundef 1, i64 noundef %746)
  store double %747, ptr %48, align 8, !tbaa !13
  %748 = load ptr, ptr %38, align 8, !tbaa !5
  %749 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %748, i32 0, i32 2
  %750 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %749, i32 0, i32 4
  %751 = load ptr, ptr %750, align 8, !tbaa !34
  %752 = getelementptr inbounds double, ptr %751, i64 0
  %753 = load ptr, ptr %28, align 8, !tbaa !5
  %754 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %753, i32 0, i32 4
  %755 = load ptr, ptr %754, align 8, !tbaa !34
  %756 = getelementptr inbounds double, ptr %755, i64 0
  %757 = load i64, ptr %33, align 8, !tbaa !9
  %758 = sub nsw i64 %757, 1
  %759 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %758)
  %760 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %752, i64 noundef 1, ptr noundef %756, i64 noundef 1, i64 noundef %759)
  store double %760, ptr %49, align 8, !tbaa !13
  %761 = load double, ptr %48, align 8, !tbaa !13
  %762 = load double, ptr %49, align 8, !tbaa !13
  %763 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %761, double %762)
  %764 = load ptr, ptr %38, align 8, !tbaa !5
  %765 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %764, i32 0, i32 0
  %766 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %765, i32 0, i32 15
  store double %763, ptr %766, align 8, !tbaa !43
  %767 = load ptr, ptr %38, align 8, !tbaa !5
  %768 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %767, i32 0, i32 0
  %769 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %768, i32 0, i32 16
  %770 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %769, i32 0, i32 4
  %771 = load ptr, ptr %770, align 8, !tbaa !34
  %772 = getelementptr inbounds double, ptr %771, i64 0
  %773 = load ptr, ptr %38, align 8, !tbaa !5
  %774 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %773, i32 0, i32 3
  %775 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %774, i32 0, i32 4
  %776 = load ptr, ptr %775, align 8, !tbaa !34
  %777 = getelementptr inbounds double, ptr %776, i64 0
  %778 = load i64, ptr %33, align 8, !tbaa !9
  %779 = sub nsw i64 %778, 1
  %780 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %779)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %772, i64 noundef 1, ptr noundef %777, i64 noundef 1, i64 noundef %780)
  %781 = load ptr, ptr %38, align 8, !tbaa !5
  %782 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %781, i32 0, i32 0
  %783 = getelementptr inbounds %"struct.alglib_impl::minbleicstate", ptr %782, i32 0, i32 16
  %784 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %783, i32 0, i32 4
  %785 = load ptr, ptr %784, align 8, !tbaa !34
  %786 = getelementptr inbounds double, ptr %785, i64 0
  %787 = load ptr, ptr %28, align 8, !tbaa !5
  %788 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %787, i32 0, i32 4
  %789 = load ptr, ptr %788, align 8, !tbaa !34
  %790 = getelementptr inbounds double, ptr %789, i64 0
  %791 = load i64, ptr %33, align 8, !tbaa !9
  %792 = sub nsw i64 %791, 1
  %793 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %792)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %786, i64 noundef 1, ptr noundef %790, i64 noundef 1, i64 noundef %793)
  br label %794

794:                                              ; preds = %733, %674
  br label %184, !llvm.loop !61

795:                                              ; preds = %652, %610, %541, %491, %362, %184
  %796 = load ptr, ptr %41, align 8, !tbaa !5
  %797 = load i64, ptr %796, align 8, !tbaa !9
  %798 = icmp eq i64 %797, 0
  br i1 %798, label %799, label %811

799:                                              ; preds = %795
  %800 = load ptr, ptr %38, align 8, !tbaa !5
  %801 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %800, i32 0, i32 0
  %802 = load ptr, ptr %40, align 8, !tbaa !5
  %803 = load ptr, ptr %38, align 8, !tbaa !5
  %804 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %803, i32 0, i32 1
  %805 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl18minbleicresultsbufEPNS_13minbleicstateEPNS_9ae_vectorEPNS_14minbleicreportEPNS_8ae_stateE(ptr noundef %801, ptr noundef %802, ptr noundef %804, ptr noundef %805)
  %806 = load ptr, ptr %38, align 8, !tbaa !5
  %807 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %806, i32 0, i32 1
  %808 = getelementptr inbounds %"struct.alglib_impl::minbleicreport", ptr %807, i32 0, i32 3
  %809 = load i64, ptr %808, align 8, !tbaa !62
  %810 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 %809, ptr %810, align 8, !tbaa !9
  br label %815

811:                                              ; preds = %795
  %812 = load ptr, ptr %38, align 8, !tbaa !5
  %813 = getelementptr inbounds %"struct.alglib_impl::qpbleicbuffers", ptr %812, i32 0, i32 0
  %814 = load ptr, ptr %42, align 8, !tbaa !5
  call void @_ZN11alglib_impl28minbleicemergencyterminationEPNS_13minbleicstateEPNS_8ae_stateE(ptr noundef %813, ptr noundef %814)
  br label %815

815:                                              ; preds = %811, %799
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  ret void
}

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

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

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


; 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"

@.str.287 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.288 = external hidden unnamed_addr constant [59 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #1

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl15qpbleicoptimizeEPNS_20convexquadraticmodelEPNS_12sparsematrixElbddPNS_9ae_vectorES5_S5_S5_S5_lPNS_9ae_matrixEllPNS_15qpbleicsettingsEPNS_14qpbleicbuffersEPbS5_PlPNS_8ae_stateE(ptr noundef %0, ptr noundef %1, i64 noundef %2, i1 noundef zeroext %3, double noundef %4, double noundef %5, ptr nocapture noundef readonly %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr nocapture noundef readonly %10, i64 noundef %11, ptr noundef %12, i64 noundef %13, i64 noundef %14, ptr nocapture noundef readonly %15, ptr noundef %16, ptr nocapture noundef %17, ptr noundef %18, ptr nocapture noundef %19, ptr noundef %20) local_unnamed_addr #2 {
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #6
  store i64 0, ptr %19, align 8, !tbaa !5
  %24 = icmp eq i64 %2, 0
  %25 = icmp eq i64 %2, 1
  %26 = icmp ult i64 %2, 2
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %26, ptr noundef nonnull @.str.287, ptr noundef %20)
  %27 = getelementptr inbounds i8, ptr %16, i64 12824
  %28 = getelementptr inbounds i8, ptr %16, i64 12832
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %27, i8 0, i64 16, i1 false)
  store i64 0, ptr %19, align 8, !tbaa !5
  %29 = load i8, ptr %17, align 1, !tbaa !9, !range !11, !noundef !12
  %30 = trunc nuw i8 %29 to i1
  br i1 %30, label %31, label %32

31:                                               ; preds = %21
  tail call void @_ZN11alglib_impl14minbleiccreateElPNS_9ae_vectorEPNS_13minbleicstateEPNS_8ae_stateE(i64 noundef %11, ptr noundef %18, ptr noundef nonnull %16, ptr noundef %20)
  store i8 0, ptr %17, align 1, !tbaa !9
  br label %32

32:                                               ; preds = %31, %21
  %.not.not308 = icmp sgt i64 %11, 0
  br i1 %.not.not308, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %32
  %33 = getelementptr inbounds i8, ptr %6, i64 56
  br label %34

34:                                               ; preds = %.lr.ph, %34
  %.0310 = phi double [ 0.000000e+00, %.lr.ph ], [ %39, %34 ]
  %.0276309 = phi i64 [ 0, %.lr.ph ], [ %40, %34 ]
  %35 = load ptr, ptr %33, align 8, !tbaa !13
  %36 = getelementptr inbounds double, ptr %35, i64 %.0276309
  %37 = load double, ptr %36, align 8, !tbaa !14
  %38 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %37, ptr noundef %20)
  %39 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.0310, double noundef %38, ptr noundef %20)
  %40 = add nuw nsw i64 %.0276309, 1
  %exitcond.not = icmp eq i64 %40, %11
  br i1 %exitcond.not, label %._crit_edge, label %34, !llvm.loop !16

._crit_edge:                                      ; preds = %34, %32
  %.0.lcssa = phi double [ 0.000000e+00, %32 ], [ %39, %34 ]
  %41 = add nsw i64 %11, -1
  %42 = getelementptr inbounds i8, ptr %16, i64 12760
  %43 = add nsw i64 %14, %13
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %42, i64 noundef %43, ptr noundef %20)
  %44 = getelementptr inbounds i8, ptr %16, i64 12632
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %44, i64 noundef %11, ptr noundef %20)
  %45 = getelementptr inbounds i8, ptr %16, i64 12696
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %45, i64 noundef %11, ptr noundef %20)
  %.not.not284311 = icmp sgt i64 %13, 0
  br i1 %.not.not284311, label %.lr.ph314, label %.preheader307

.lr.ph314:                                        ; preds = %._crit_edge
  %46 = getelementptr inbounds i8, ptr %16, i64 12816
  %xtraiter = and i64 %13, 3
  %47 = icmp ult i64 %13, 4
  br i1 %47, label %.preheader307.loopexit.unr-lcssa, label %.lr.ph314.new

.lr.ph314.new:                                    ; preds = %.lr.ph314
  %unroll_iter = and i64 %13, 9223372036854775804
  br label %53

.preheader307.loopexit.unr-lcssa:                 ; preds = %53, %.lr.ph314
  %.1277312.unr = phi i64 [ 0, %.lr.ph314 ], [ %65, %53 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader307, label %.epil.preheader

.epil.preheader:                                  ; preds = %.preheader307.loopexit.unr-lcssa, %.epil.preheader
  %.1277312.epil = phi i64 [ %50, %.epil.preheader ], [ %.1277312.unr, %.preheader307.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %.preheader307.loopexit.unr-lcssa ]
  %48 = load ptr, ptr %46, align 8, !tbaa !13
  %49 = getelementptr inbounds i64, ptr %48, i64 %.1277312.epil
  store i64 0, ptr %49, align 8, !tbaa !5
  %50 = add nuw nsw i64 %.1277312.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 %.preheader307, label %.epil.preheader, !llvm.loop !18

.preheader307:                                    ; preds = %.preheader307.loopexit.unr-lcssa, %.epil.preheader, %._crit_edge
  %.not.not285315 = icmp sgt i64 %14, 0
  br i1 %.not.not285315, label %.lr.ph317, label %._crit_edge318

.lr.ph317:                                        ; preds = %.preheader307
  %51 = getelementptr inbounds i8, ptr %16, i64 12816
  %xtraiter427 = and i64 %14, 3
  %52 = icmp ult i64 %14, 4
  br i1 %52, label %._crit_edge318.loopexit.unr-lcssa, label %.lr.ph317.new

.lr.ph317.new:                                    ; preds = %.lr.ph317
  %unroll_iter430 = and i64 %14, 9223372036854775804
  br label %66

53:                                               ; preds = %53, %.lr.ph314.new
  %.1277312 = phi i64 [ 0, %.lr.ph314.new ], [ %65, %53 ]
  %niter = phi i64 [ 0, %.lr.ph314.new ], [ %niter.next.3, %53 ]
  %54 = load ptr, ptr %46, align 8, !tbaa !13
  %55 = getelementptr inbounds i64, ptr %54, i64 %.1277312
  store i64 0, ptr %55, align 8, !tbaa !5
  %56 = or disjoint i64 %.1277312, 1
  %57 = load ptr, ptr %46, align 8, !tbaa !13
  %58 = getelementptr inbounds i64, ptr %57, i64 %56
  store i64 0, ptr %58, align 8, !tbaa !5
  %59 = or disjoint i64 %.1277312, 2
  %60 = load ptr, ptr %46, align 8, !tbaa !13
  %61 = getelementptr inbounds i64, ptr %60, i64 %59
  store i64 0, ptr %61, align 8, !tbaa !5
  %62 = or disjoint i64 %.1277312, 3
  %63 = load ptr, ptr %46, align 8, !tbaa !13
  %64 = getelementptr inbounds i64, ptr %63, i64 %62
  store i64 0, ptr %64, align 8, !tbaa !5
  %65 = add nuw nsw i64 %.1277312, 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 %.preheader307.loopexit.unr-lcssa, label %53, !llvm.loop !20

66:                                               ; preds = %66, %.lr.ph317.new
  %.2316 = phi i64 [ 0, %.lr.ph317.new ], [ %82, %66 ]
  %niter431 = phi i64 [ 0, %.lr.ph317.new ], [ %niter431.next.3, %66 ]
  %67 = load ptr, ptr %51, align 8, !tbaa !13
  %68 = getelementptr i64, ptr %67, i64 %.2316
  %69 = getelementptr i64, ptr %68, i64 %13
  store i64 -1, ptr %69, align 8, !tbaa !5
  %70 = or disjoint i64 %.2316, 1
  %71 = load ptr, ptr %51, align 8, !tbaa !13
  %72 = getelementptr i64, ptr %71, i64 %70
  %73 = getelementptr i64, ptr %72, i64 %13
  store i64 -1, ptr %73, align 8, !tbaa !5
  %74 = or disjoint i64 %.2316, 2
  %75 = load ptr, ptr %51, align 8, !tbaa !13
  %76 = getelementptr i64, ptr %75, i64 %74
  %77 = getelementptr i64, ptr %76, i64 %13
  store i64 -1, ptr %77, align 8, !tbaa !5
  %78 = or disjoint i64 %.2316, 3
  %79 = load ptr, ptr %51, align 8, !tbaa !13
  %80 = getelementptr i64, ptr %79, i64 %78
  %81 = getelementptr i64, ptr %80, i64 %13
  store i64 -1, ptr %81, align 8, !tbaa !5
  %82 = add nuw nsw i64 %.2316, 4
  %niter431.next.3 = add i64 %niter431, 4
  %niter431.ncmp.3 = icmp eq i64 %niter431.next.3, %unroll_iter430
  br i1 %niter431.ncmp.3, label %._crit_edge318.loopexit.unr-lcssa, label %66, !llvm.loop !21

._crit_edge318.loopexit.unr-lcssa:                ; preds = %66, %.lr.ph317
  %.2316.unr = phi i64 [ 0, %.lr.ph317 ], [ %82, %66 ]
  %lcmp.mod429.not = icmp eq i64 %xtraiter427, 0
  br i1 %lcmp.mod429.not, label %._crit_edge318, label %.epil.preheader426

.epil.preheader426:                               ; preds = %._crit_edge318.loopexit.unr-lcssa, %.epil.preheader426
  %.2316.epil = phi i64 [ %86, %.epil.preheader426 ], [ %.2316.unr, %._crit_edge318.loopexit.unr-lcssa ]
  %epil.iter428 = phi i64 [ %epil.iter428.next, %.epil.preheader426 ], [ 0, %._crit_edge318.loopexit.unr-lcssa ]
  %83 = load ptr, ptr %51, align 8, !tbaa !13
  %84 = getelementptr i64, ptr %83, i64 %.2316.epil
  %85 = getelementptr i64, ptr %84, i64 %13
  store i64 -1, ptr %85, align 8, !tbaa !5
  %86 = add nuw nsw i64 %.2316.epil, 1
  %epil.iter428.next = add i64 %epil.iter428, 1
  %epil.iter428.cmp.not = icmp eq i64 %epil.iter428.next, %xtraiter427
  br i1 %epil.iter428.cmp.not, label %._crit_edge318, label %.epil.preheader426, !llvm.loop !22

._crit_edge318:                                   ; preds = %._crit_edge318.loopexit.unr-lcssa, %.epil.preheader426, %.preheader307
  tail call void @_ZN11alglib_impl13minbleicsetlcEPNS_13minbleicstateEPNS_9ae_matrixEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %16, ptr noundef %12, ptr noundef nonnull %42, i64 noundef %43, ptr noundef %20)
  tail call void @_ZN11alglib_impl13minbleicsetbcEPNS_13minbleicstateEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %16, ptr noundef %7, ptr noundef %8, ptr noundef %20)
  tail call void @_ZN11alglib_impl15minbleicsetdrepEPNS_13minbleicstateEbPNS_8ae_stateE(ptr noundef %16, i1 noundef zeroext true, ptr noundef %20)
  %87 = getelementptr inbounds i8, ptr %15, i64 24
  %88 = load i64, ptr %87, align 8, !tbaa !23
  tail call void @_ZN11alglib_impl15minbleicsetcondEPNS_13minbleicstateEdddlPNS_8ae_stateE(ptr noundef %16, double noundef 1.000000e-300, double noundef 0.000000e+00, double noundef 0.000000e+00, i64 noundef %88, ptr noundef %20)
  tail call void @_ZN11alglib_impl16minbleicsetscaleEPNS_13minbleicstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %16, ptr noundef %9, ptr noundef %20)
  tail call void @_ZN11alglib_impl20minbleicsetprecscaleEPNS_13minbleicstateEPNS_8ae_stateE(ptr noundef %16, ptr noundef %20)
  tail call void @_ZN11alglib_impl19minbleicrestartfromEPNS_13minbleicstateEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %16, ptr noundef %18, ptr noundef %20)
  %89 = tail call noundef zeroext i1 @_ZN11alglib_impl17minbleiciterationEPNS_13minbleicstateEPNS_8ae_stateE(ptr noundef %16, ptr noundef %20)
  br i1 %89, label %.lr.ph352, label %.loopexit

.lr.ph352:                                        ; preds = %._crit_edge318
  %90 = getelementptr inbounds i8, ptr %16, i64 4691
  %91 = getelementptr inbounds i8, ptr %16, i64 4692
  %92 = getelementptr inbounds i8, ptr %16, i64 4616
  %93 = getelementptr inbounds i8, ptr %16, i64 5368
  %94 = getelementptr inbounds i8, ptr %16, i64 5424
  %95 = getelementptr inbounds i8, ptr %16, i64 4680
  %96 = getelementptr inbounds i8, ptr %16, i64 12688
  %97 = getelementptr inbounds i8, ptr %16, i64 4608
  %98 = getelementptr inbounds i8, ptr %9, i64 56
  %99 = getelementptr inbounds i8, ptr %16, i64 12752
  %100 = getelementptr inbounds i8, ptr %15, i64 8
  %101 = getelementptr inbounds i8, ptr %15, i64 16
  %102 = getelementptr inbounds i8, ptr %16, i64 7840
  %103 = getelementptr inbounds i8, ptr %16, i64 7832
  %104 = getelementptr inbounds i8, ptr %16, i64 4693
  %105 = getelementptr inbounds i8, ptr %16, i64 4689
  %106 = getelementptr inbounds i8, ptr %10, i64 56
  %107 = getelementptr inbounds i8, ptr %6, i64 56
  %108 = add i64 %11, -1
  %xtraiter433 = and i64 %11, 3
  %109 = icmp ult i64 %11, 4
  %unroll_iter437 = and i64 %11, 9223372036854775804
  %lcmp.mod435.not = icmp eq i64 %xtraiter433, 0
  %xtraiter439 = and i64 %11, 1
  %110 = icmp eq i64 %108, 0
  %unroll_iter442 = and i64 %11, 9223372036854775806
  %lcmp.mod441.not = icmp eq i64 %xtraiter439, 0
  br label %111

111:                                              ; preds = %.lr.ph352, %447
  %112 = load i8, ptr %90, align 1, !tbaa !25, !range !11, !noundef !12
  %113 = trunc nuw i8 %112 to i1
  br i1 %113, label %114, label %.thread297

114:                                              ; preds = %111
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %27, ptr noundef %20)
  %115 = load i8, ptr %91, align 4, !tbaa !42, !range !11, !noundef !12
  %116 = trunc nuw i8 %115 to i1
  br i1 %116, label %117, label %118

117:                                              ; preds = %114
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %28, ptr noundef %20)
  br label %118

118:                                              ; preds = %117, %114
  %119 = load double, ptr %92, align 8, !tbaa !43
  %120 = load ptr, ptr %94, align 8, !tbaa !13
  %121 = load ptr, ptr %95, align 8, !tbaa !13
  %122 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %41)
  %123 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %120, i64 noundef 1, ptr noundef %121, i64 noundef 1, i64 noundef %122)
  br i1 %24, label %.thread, label %125

.thread:                                          ; preds = %118
  %124 = call noundef double @_ZN11alglib_impl9cqmxtadx2EPNS_20convexquadraticmodelEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %93, ptr noundef nonnull %44, ptr noundef %20)
  br label %160

125:                                              ; preds = %118
  br i1 %25, label %126, label %160

126:                                              ; preds = %125
  call void @_ZN11alglib_impl9sparsesmvEPNS_12sparsematrixEbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %1, i1 noundef zeroext %3, ptr noundef nonnull %93, ptr noundef nonnull %44, ptr noundef %20)
  br i1 %.not.not308, label %.lr.ph323, label %._crit_edge324

.lr.ph323:                                        ; preds = %126
  %127 = load ptr, ptr %94, align 8, !tbaa !13
  %128 = load ptr, ptr %96, align 8, !tbaa !13
  br i1 %109, label %._crit_edge324.loopexit.unr-lcssa, label %.lr.ph323.new

.lr.ph323.new:                                    ; preds = %.lr.ph323, %.lr.ph323.new
  %.3321 = phi i64 [ %152, %.lr.ph323.new ], [ 0, %.lr.ph323 ]
  %.1279320 = phi double [ %151, %.lr.ph323.new ], [ 0.000000e+00, %.lr.ph323 ]
  %niter438 = phi i64 [ %niter438.next.3, %.lr.ph323.new ], [ 0, %.lr.ph323 ]
  %129 = getelementptr inbounds double, ptr %127, i64 %.3321
  %130 = load double, ptr %129, align 8, !tbaa !14
  %131 = getelementptr inbounds double, ptr %128, i64 %.3321
  %132 = load double, ptr %131, align 8, !tbaa !14
  %133 = call double @llvm.fmuladd.f64(double %130, double %132, double %.1279320)
  %134 = or disjoint i64 %.3321, 1
  %135 = getelementptr inbounds double, ptr %127, i64 %134
  %136 = load double, ptr %135, align 8, !tbaa !14
  %137 = getelementptr inbounds double, ptr %128, i64 %134
  %138 = load double, ptr %137, align 8, !tbaa !14
  %139 = call double @llvm.fmuladd.f64(double %136, double %138, double %133)
  %140 = or disjoint i64 %.3321, 2
  %141 = getelementptr inbounds double, ptr %127, i64 %140
  %142 = load double, ptr %141, align 8, !tbaa !14
  %143 = getelementptr inbounds double, ptr %128, i64 %140
  %144 = load double, ptr %143, align 8, !tbaa !14
  %145 = call double @llvm.fmuladd.f64(double %142, double %144, double %139)
  %146 = or disjoint i64 %.3321, 3
  %147 = getelementptr inbounds double, ptr %127, i64 %146
  %148 = load double, ptr %147, align 8, !tbaa !14
  %149 = getelementptr inbounds double, ptr %128, i64 %146
  %150 = load double, ptr %149, align 8, !tbaa !14
  %151 = call double @llvm.fmuladd.f64(double %148, double %150, double %145)
  %152 = add nuw nsw i64 %.3321, 4
  %niter438.next.3 = add i64 %niter438, 4
  %niter438.ncmp.3 = icmp eq i64 %niter438.next.3, %unroll_iter437
  br i1 %niter438.ncmp.3, label %._crit_edge324.loopexit.unr-lcssa, label %.lr.ph323.new, !llvm.loop !44

._crit_edge324.loopexit.unr-lcssa:                ; preds = %.lr.ph323.new, %.lr.ph323
  %.lcssa.ph = phi double [ poison, %.lr.ph323 ], [ %151, %.lr.ph323.new ]
  %.3321.unr = phi i64 [ 0, %.lr.ph323 ], [ %152, %.lr.ph323.new ]
  %.1279320.unr = phi double [ 0.000000e+00, %.lr.ph323 ], [ %151, %.lr.ph323.new ]
  br i1 %lcmp.mod435.not, label %._crit_edge324, label %.epil.preheader432

.epil.preheader432:                               ; preds = %._crit_edge324.loopexit.unr-lcssa, %.epil.preheader432
  %.3321.epil = phi i64 [ %158, %.epil.preheader432 ], [ %.3321.unr, %._crit_edge324.loopexit.unr-lcssa ]
  %.1279320.epil = phi double [ %157, %.epil.preheader432 ], [ %.1279320.unr, %._crit_edge324.loopexit.unr-lcssa ]
  %epil.iter434 = phi i64 [ %epil.iter434.next, %.epil.preheader432 ], [ 0, %._crit_edge324.loopexit.unr-lcssa ]
  %153 = getelementptr inbounds double, ptr %127, i64 %.3321.epil
  %154 = load double, ptr %153, align 8, !tbaa !14
  %155 = getelementptr inbounds double, ptr %128, i64 %.3321.epil
  %156 = load double, ptr %155, align 8, !tbaa !14
  %157 = call double @llvm.fmuladd.f64(double %154, double %156, double %.1279320.epil)
  %158 = add nuw nsw i64 %.3321.epil, 1
  %epil.iter434.next = add i64 %epil.iter434, 1
  %epil.iter434.cmp.not = icmp eq i64 %epil.iter434.next, %xtraiter433
  br i1 %epil.iter434.cmp.not, label %._crit_edge324, label %.epil.preheader432, !llvm.loop !45

._crit_edge324:                                   ; preds = %._crit_edge324.loopexit.unr-lcssa, %.epil.preheader432, %126
  %.1279.lcssa = phi double [ 0.000000e+00, %126 ], [ %.lcssa.ph, %._crit_edge324.loopexit.unr-lcssa ], [ %157, %.epil.preheader432 ]
  %159 = fmul double %.1279.lcssa, 5.000000e-01
  br label %160

160:                                              ; preds = %.thread, %._crit_edge324, %125
  %.2280 = phi double [ %159, %._crit_edge324 ], [ 0.000000e+00, %125 ], [ %124, %.thread ]
  br i1 %.not.not308, label %.lr.ph331, label %._crit_edge332

.lr.ph331:                                        ; preds = %160, %.lr.ph331
  %.0273329 = phi double [ %165, %.lr.ph331 ], [ 0.000000e+00, %160 ]
  %.0274328 = phi double [ %170, %.lr.ph331 ], [ 0.000000e+00, %160 ]
  %.4327 = phi i64 [ %171, %.lr.ph331 ], [ 0, %160 ]
  %161 = load ptr, ptr %97, align 8, !tbaa !13
  %162 = getelementptr inbounds double, ptr %161, i64 %.4327
  %163 = load double, ptr %162, align 8, !tbaa !14
  %164 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %163, ptr noundef %20)
  %165 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.0273329, double noundef %164, ptr noundef %20)
  %166 = load ptr, ptr %94, align 8, !tbaa !13
  %167 = getelementptr inbounds double, ptr %166, i64 %.4327
  %168 = load double, ptr %167, align 8, !tbaa !14
  %169 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %168, ptr noundef %20)
  %170 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.0274328, double noundef %169, ptr noundef %20)
  %171 = add nuw nsw i64 %.4327, 1
  %exitcond386.not = icmp eq i64 %171, %11
  br i1 %exitcond386.not, label %._crit_edge332, label %.lr.ph331, !llvm.loop !46

._crit_edge332:                                   ; preds = %.lr.ph331, %160
  %.0274.lcssa = phi double [ 0.000000e+00, %160 ], [ %170, %.lr.ph331 ]
  %.0273.lcssa = phi double [ 0.000000e+00, %160 ], [ %165, %.lr.ph331 ]
  call void @_ZN11alglib_impl22estimateparabolicmodelEdddddddPlS0_PNS_8ae_stateE(double noundef %4, double noundef %5, double noundef %.0273.lcssa, double noundef %.0.lcssa, double noundef %.0274.lcssa, double noundef %123, double noundef %.2280, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef %20)
  %172 = load i8, ptr %91, align 4, !tbaa !42, !range !11, !noundef !12
  %173 = trunc nuw i8 %172 to i1
  %174 = load i64, ptr %23, align 8
  %175 = icmp sgt i64 %174, -1
  %or.cond = select i1 %173, i1 %175, i1 false
  br i1 %or.cond, label %176, label %thread-pre-split

176:                                              ; preds = %._crit_edge332
  %177 = load i64, ptr %22, align 8, !tbaa !5
  %178 = icmp sgt i64 %177, -1
  br i1 %178, label %179, label %207

179:                                              ; preds = %176
  store i64 4, ptr %19, align 8, !tbaa !5
  br i1 %.not.not308, label %.lr.ph372, label %.loopexit.thread

.lr.ph372:                                        ; preds = %179
  %180 = getelementptr inbounds i8, ptr %18, i64 56
  %xtraiter469 = and i64 %11, 3
  %181 = icmp ult i64 %108, 3
  br i1 %181, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph372.new

.lr.ph372.new:                                    ; preds = %.lr.ph372
  %unroll_iter472 = and i64 %11, 9223372036854775804
  br label %182

182:                                              ; preds = %182, %.lr.ph372.new
  %.5370 = phi i64 [ 0, %.lr.ph372.new ], [ %206, %182 ]
  %niter473 = phi i64 [ 0, %.lr.ph372.new ], [ %niter473.next.3, %182 ]
  %183 = load ptr, ptr %97, align 8, !tbaa !13
  %184 = getelementptr inbounds double, ptr %183, i64 %.5370
  %185 = load double, ptr %184, align 8, !tbaa !14
  %186 = load ptr, ptr %180, align 8, !tbaa !13
  %187 = getelementptr inbounds double, ptr %186, i64 %.5370
  store double %185, ptr %187, align 8, !tbaa !14
  %188 = or disjoint i64 %.5370, 1
  %189 = load ptr, ptr %97, align 8, !tbaa !13
  %190 = getelementptr inbounds double, ptr %189, i64 %188
  %191 = load double, ptr %190, align 8, !tbaa !14
  %192 = load ptr, ptr %180, align 8, !tbaa !13
  %193 = getelementptr inbounds double, ptr %192, i64 %188
  store double %191, ptr %193, align 8, !tbaa !14
  %194 = or disjoint i64 %.5370, 2
  %195 = load ptr, ptr %97, align 8, !tbaa !13
  %196 = getelementptr inbounds double, ptr %195, i64 %194
  %197 = load double, ptr %196, align 8, !tbaa !14
  %198 = load ptr, ptr %180, align 8, !tbaa !13
  %199 = getelementptr inbounds double, ptr %198, i64 %194
  store double %197, ptr %199, align 8, !tbaa !14
  %200 = or disjoint i64 %.5370, 3
  %201 = load ptr, ptr %97, align 8, !tbaa !13
  %202 = getelementptr inbounds double, ptr %201, i64 %200
  %203 = load double, ptr %202, align 8, !tbaa !14
  %204 = load ptr, ptr %180, align 8, !tbaa !13
  %205 = getelementptr inbounds double, ptr %204, i64 %200
  store double %203, ptr %205, align 8, !tbaa !14
  %206 = add nuw nsw i64 %.5370, 4
  %niter473.next.3 = add i64 %niter473, 4
  %niter473.ncmp.3 = icmp eq i64 %niter473.next.3, %unroll_iter472
  br i1 %niter473.ncmp.3, label %.loopexit.loopexit.unr-lcssa, label %182, !llvm.loop !47

207:                                              ; preds = %176
  %.not = icmp eq i64 %174, 0
  br i1 %.not, label %thread-pre-split.thread, label %.preheader305

.preheader305:                                    ; preds = %207
  br i1 %.not.not308, label %.lr.ph338, label %._crit_edge339

.lr.ph338:                                        ; preds = %.preheader305, %.lr.ph338
  %.0275337 = phi double [ %230, %.lr.ph338 ], [ 0.000000e+00, %.preheader305 ]
  %.6336 = phi i64 [ %231, %.lr.ph338 ], [ 0, %.preheader305 ]
  %208 = load ptr, ptr %94, align 8, !tbaa !13
  %209 = getelementptr inbounds double, ptr %208, i64 %.6336
  %210 = load double, ptr %209, align 8, !tbaa !14
  %211 = load ptr, ptr %98, align 8, !tbaa !13
  %212 = getelementptr inbounds double, ptr %211, i64 %.6336
  %213 = load double, ptr %212, align 8, !tbaa !14
  %214 = fdiv double %210, %213
  %215 = load ptr, ptr %96, align 8, !tbaa !13
  %216 = getelementptr inbounds double, ptr %215, i64 %.6336
  store double %214, ptr %216, align 8, !tbaa !14
  %217 = load ptr, ptr %95, align 8, !tbaa !13
  %218 = getelementptr inbounds double, ptr %217, i64 %.6336
  %219 = load double, ptr %218, align 8, !tbaa !14
  %220 = load ptr, ptr %98, align 8, !tbaa !13
  %221 = getelementptr inbounds double, ptr %220, i64 %.6336
  %222 = load double, ptr %221, align 8, !tbaa !14
  %223 = fmul double %219, %222
  %224 = load ptr, ptr %99, align 8, !tbaa !13
  %225 = getelementptr inbounds double, ptr %224, i64 %.6336
  store double %223, ptr %225, align 8, !tbaa !14
  %226 = load ptr, ptr %96, align 8, !tbaa !13
  %227 = getelementptr inbounds double, ptr %226, i64 %.6336
  %228 = load double, ptr %227, align 8, !tbaa !14
  %229 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %228, ptr noundef %20)
  %230 = fadd double %.0275337, %229
  %231 = add nuw nsw i64 %.6336, 1
  %exitcond387.not = icmp eq i64 %231, %11
  br i1 %exitcond387.not, label %._crit_edge339, label %.lr.ph338, !llvm.loop !48

._crit_edge339:                                   ; preds = %.lr.ph338, %.preheader305
  %.0275.lcssa = phi double [ 0.000000e+00, %.preheader305 ], [ %230, %.lr.ph338 ]
  %232 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %.0275.lcssa, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %232, ptr noundef nonnull @.str.288, ptr noundef %20)
  %233 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.0275.lcssa, ptr noundef %20)
  %234 = fdiv double 1.000000e+00, %233
  %235 = load ptr, ptr %96, align 8, !tbaa !13
  %236 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %41)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %235, i64 noundef 1, i64 noundef %236, double noundef %234)
  %237 = load ptr, ptr %96, align 8, !tbaa !13
  %238 = load ptr, ptr %99, align 8, !tbaa !13
  %239 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %41)
  %240 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %237, i64 noundef 1, ptr noundef %238, i64 noundef 1, i64 noundef %239)
  %241 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %240, ptr noundef %20)
  %242 = load double, ptr %15, align 8, !tbaa !49
  %243 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %241, double noundef %242)
  br i1 %243, label %244, label %272

244:                                              ; preds = %._crit_edge339
  store i64 4, ptr %19, align 8, !tbaa !5
  br i1 %.not.not308, label %.lr.ph364, label %.loopexit.thread

.lr.ph364:                                        ; preds = %244
  %245 = getelementptr inbounds i8, ptr %18, i64 56
  %xtraiter457 = and i64 %11, 3
  %246 = icmp ult i64 %108, 3
  br i1 %246, label %.loopexit.loopexit417.unr-lcssa, label %.lr.ph364.new

.lr.ph364.new:                                    ; preds = %.lr.ph364
  %unroll_iter460 = and i64 %11, 9223372036854775804
  br label %247

247:                                              ; preds = %247, %.lr.ph364.new
  %.7362 = phi i64 [ 0, %.lr.ph364.new ], [ %271, %247 ]
  %niter461 = phi i64 [ 0, %.lr.ph364.new ], [ %niter461.next.3, %247 ]
  %248 = load ptr, ptr %97, align 8, !tbaa !13
  %249 = getelementptr inbounds double, ptr %248, i64 %.7362
  %250 = load double, ptr %249, align 8, !tbaa !14
  %251 = load ptr, ptr %245, align 8, !tbaa !13
  %252 = getelementptr inbounds double, ptr %251, i64 %.7362
  store double %250, ptr %252, align 8, !tbaa !14
  %253 = or disjoint i64 %.7362, 1
  %254 = load ptr, ptr %97, align 8, !tbaa !13
  %255 = getelementptr inbounds double, ptr %254, i64 %253
  %256 = load double, ptr %255, align 8, !tbaa !14
  %257 = load ptr, ptr %245, align 8, !tbaa !13
  %258 = getelementptr inbounds double, ptr %257, i64 %253
  store double %256, ptr %258, align 8, !tbaa !14
  %259 = or disjoint i64 %.7362, 2
  %260 = load ptr, ptr %97, align 8, !tbaa !13
  %261 = getelementptr inbounds double, ptr %260, i64 %259
  %262 = load double, ptr %261, align 8, !tbaa !14
  %263 = load ptr, ptr %245, align 8, !tbaa !13
  %264 = getelementptr inbounds double, ptr %263, i64 %259
  store double %262, ptr %264, align 8, !tbaa !14
  %265 = or disjoint i64 %.7362, 3
  %266 = load ptr, ptr %97, align 8, !tbaa !13
  %267 = getelementptr inbounds double, ptr %266, i64 %265
  %268 = load double, ptr %267, align 8, !tbaa !14
  %269 = load ptr, ptr %245, align 8, !tbaa !13
  %270 = getelementptr inbounds double, ptr %269, i64 %265
  store double %268, ptr %270, align 8, !tbaa !14
  %271 = add nuw nsw i64 %.7362, 4
  %niter461.next.3 = add i64 %niter461, 4
  %niter461.ncmp.3 = icmp eq i64 %niter461.next.3, %unroll_iter460
  br i1 %niter461.ncmp.3, label %.loopexit.loopexit417.unr-lcssa, label %247, !llvm.loop !50

272:                                              ; preds = %._crit_edge339
  %273 = fneg double %123
  %274 = fmul double %.2280, 2.000000e+00
  %275 = fdiv double %273, %274
  %276 = fmul double %.2280, %275
  %277 = fmul double %123, %275
  %278 = call double @llvm.fmuladd.f64(double %276, double %275, double %277)
  %279 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %278, ptr noundef %20)
  %280 = load double, ptr %100, align 8, !tbaa !51
  %281 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %119, double noundef 1.000000e+00, ptr noundef %20)
  %282 = fmul double %280, %281
  %283 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %279, double noundef %282)
  br i1 %283, label %284, label %.preheader304

.preheader304:                                    ; preds = %272
  br i1 %.not.not308, label %.lr.ph344, label %._crit_edge345

284:                                              ; preds = %272
  store i64 1, ptr %19, align 8, !tbaa !5
  br i1 %.not.not308, label %.lr.ph360, label %.loopexit.thread

.lr.ph360:                                        ; preds = %284
  %285 = getelementptr inbounds i8, ptr %18, i64 56
  %xtraiter451 = and i64 %11, 3
  %286 = icmp ult i64 %108, 3
  br i1 %286, label %.loopexit.loopexit418.unr-lcssa, label %.lr.ph360.new

.lr.ph360.new:                                    ; preds = %.lr.ph360
  %unroll_iter454 = and i64 %11, 9223372036854775804
  br label %287

287:                                              ; preds = %287, %.lr.ph360.new
  %.8358 = phi i64 [ 0, %.lr.ph360.new ], [ %311, %287 ]
  %niter455 = phi i64 [ 0, %.lr.ph360.new ], [ %niter455.next.3, %287 ]
  %288 = load ptr, ptr %97, align 8, !tbaa !13
  %289 = getelementptr inbounds double, ptr %288, i64 %.8358
  %290 = load double, ptr %289, align 8, !tbaa !14
  %291 = load ptr, ptr %285, align 8, !tbaa !13
  %292 = getelementptr inbounds double, ptr %291, i64 %.8358
  store double %290, ptr %292, align 8, !tbaa !14
  %293 = or disjoint i64 %.8358, 1
  %294 = load ptr, ptr %97, align 8, !tbaa !13
  %295 = getelementptr inbounds double, ptr %294, i64 %293
  %296 = load double, ptr %295, align 8, !tbaa !14
  %297 = load ptr, ptr %285, align 8, !tbaa !13
  %298 = getelementptr inbounds double, ptr %297, i64 %293
  store double %296, ptr %298, align 8, !tbaa !14
  %299 = or disjoint i64 %.8358, 2
  %300 = load ptr, ptr %97, align 8, !tbaa !13
  %301 = getelementptr inbounds double, ptr %300, i64 %299
  %302 = load double, ptr %301, align 8, !tbaa !14
  %303 = load ptr, ptr %285, align 8, !tbaa !13
  %304 = getelementptr inbounds double, ptr %303, i64 %299
  store double %302, ptr %304, align 8, !tbaa !14
  %305 = or disjoint i64 %.8358, 3
  %306 = load ptr, ptr %97, align 8, !tbaa !13
  %307 = getelementptr inbounds double, ptr %306, i64 %305
  %308 = load double, ptr %307, align 8, !tbaa !14
  %309 = load ptr, ptr %285, align 8, !tbaa !13
  %310 = getelementptr inbounds double, ptr %309, i64 %305
  store double %308, ptr %310, align 8, !tbaa !14
  %311 = add nuw nsw i64 %.8358, 4
  %niter455.next.3 = add i64 %niter455, 4
  %niter455.ncmp.3 = icmp eq i64 %niter455.next.3, %unroll_iter454
  br i1 %niter455.ncmp.3, label %.loopexit.loopexit418.unr-lcssa, label %287, !llvm.loop !52

.lr.ph344:                                        ; preds = %.preheader304, %.lr.ph344
  %.1343 = phi double [ %321, %.lr.ph344 ], [ 0.000000e+00, %.preheader304 ]
  %.9342 = phi i64 [ %322, %.lr.ph344 ], [ 0, %.preheader304 ]
  %312 = load ptr, ptr %94, align 8, !tbaa !13
  %313 = getelementptr inbounds double, ptr %312, i64 %.9342
  %314 = load double, ptr %313, align 8, !tbaa !14
  %315 = fmul double %275, %314
  %316 = load ptr, ptr %98, align 8, !tbaa !13
  %317 = getelementptr inbounds double, ptr %316, i64 %.9342
  %318 = load double, ptr %317, align 8, !tbaa !14
  %319 = fdiv double %315, %318
  %320 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %319, ptr noundef %20)
  %321 = fadd double %.1343, %320
  %322 = add nuw nsw i64 %.9342, 1
  %exitcond388.not = icmp eq i64 %322, %11
  br i1 %exitcond388.not, label %._crit_edge345, label %.lr.ph344, !llvm.loop !53

._crit_edge345:                                   ; preds = %.lr.ph344, %.preheader304
  %.1.lcssa = phi double [ 0.000000e+00, %.preheader304 ], [ %321, %.lr.ph344 ]
  %323 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.1.lcssa, ptr noundef %20)
  %324 = load double, ptr %101, align 8, !tbaa !54
  %325 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %323, double noundef %324)
  br i1 %325, label %326, label %._crit_edge345.thread-pre-split_crit_edge

._crit_edge345.thread-pre-split_crit_edge:        ; preds = %._crit_edge345
  %.pr.pre = load i64, ptr %23, align 8
  br label %thread-pre-split

326:                                              ; preds = %._crit_edge345
  store i64 2, ptr %19, align 8, !tbaa !5
  br i1 %.not.not308, label %.lr.ph356, label %.loopexit.thread

.lr.ph356:                                        ; preds = %326
  %327 = getelementptr inbounds i8, ptr %18, i64 56
  %xtraiter445 = and i64 %11, 3
  %328 = icmp ult i64 %108, 3
  br i1 %328, label %.loopexit.loopexit419.unr-lcssa, label %.lr.ph356.new

.lr.ph356.new:                                    ; preds = %.lr.ph356
  %unroll_iter448 = and i64 %11, 9223372036854775804
  br label %329

329:                                              ; preds = %329, %.lr.ph356.new
  %.10354 = phi i64 [ 0, %.lr.ph356.new ], [ %353, %329 ]
  %niter449 = phi i64 [ 0, %.lr.ph356.new ], [ %niter449.next.3, %329 ]
  %330 = load ptr, ptr %97, align 8, !tbaa !13
  %331 = getelementptr inbounds double, ptr %330, i64 %.10354
  %332 = load double, ptr %331, align 8, !tbaa !14
  %333 = load ptr, ptr %327, align 8, !tbaa !13
  %334 = getelementptr inbounds double, ptr %333, i64 %.10354
  store double %332, ptr %334, align 8, !tbaa !14
  %335 = or disjoint i64 %.10354, 1
  %336 = load ptr, ptr %97, align 8, !tbaa !13
  %337 = getelementptr inbounds double, ptr %336, i64 %335
  %338 = load double, ptr %337, align 8, !tbaa !14
  %339 = load ptr, ptr %327, align 8, !tbaa !13
  %340 = getelementptr inbounds double, ptr %339, i64 %335
  store double %338, ptr %340, align 8, !tbaa !14
  %341 = or disjoint i64 %.10354, 2
  %342 = load ptr, ptr %97, align 8, !tbaa !13
  %343 = getelementptr inbounds double, ptr %342, i64 %341
  %344 = load double, ptr %343, align 8, !tbaa !14
  %345 = load ptr, ptr %327, align 8, !tbaa !13
  %346 = getelementptr inbounds double, ptr %345, i64 %341
  store double %344, ptr %346, align 8, !tbaa !14
  %347 = or disjoint i64 %.10354, 3
  %348 = load ptr, ptr %97, align 8, !tbaa !13
  %349 = getelementptr inbounds double, ptr %348, i64 %347
  %350 = load double, ptr %349, align 8, !tbaa !14
  %351 = load ptr, ptr %327, align 8, !tbaa !13
  %352 = getelementptr inbounds double, ptr %351, i64 %347
  store double %350, ptr %352, align 8, !tbaa !14
  %353 = add nuw nsw i64 %.10354, 4
  %niter449.next.3 = add i64 %niter449, 4
  %niter449.ncmp.3 = icmp eq i64 %niter449.next.3, %unroll_iter448
  br i1 %niter449.ncmp.3, label %.loopexit.loopexit419.unr-lcssa, label %329, !llvm.loop !55

thread-pre-split:                                 ; preds = %._crit_edge345.thread-pre-split_crit_edge, %._crit_edge332
  %354 = phi i64 [ %174, %._crit_edge332 ], [ %.pr.pre, %._crit_edge345.thread-pre-split_crit_edge ]
  %355 = icmp slt i64 %354, 0
  br i1 %355, label %360, label %thread-pre-split.thread

thread-pre-split.thread:                          ; preds = %207, %thread-pre-split
  %356 = phi i64 [ %354, %thread-pre-split ], [ 0, %207 ]
  %357 = icmp eq i64 %356, 0
  %358 = load i64, ptr %22, align 8
  %359 = icmp slt i64 %358, 0
  %or.cond3 = select i1 %357, i1 %359, i1 false
  br i1 %or.cond3, label %360, label %391

360:                                              ; preds = %thread-pre-split.thread, %thread-pre-split
  %361 = load i8, ptr %104, align 1, !tbaa !56, !range !11, !noundef !12
  %362 = trunc nuw i8 %361 to i1
  br i1 %362, label %.thread297, label %363

363:                                              ; preds = %360
  store i64 -4, ptr %19, align 8, !tbaa !5
  br i1 %.not.not308, label %.lr.ph368, label %.loopexit.thread

.lr.ph368:                                        ; preds = %363
  %364 = getelementptr inbounds i8, ptr %18, i64 56
  %xtraiter463 = and i64 %11, 3
  %365 = icmp ult i64 %108, 3
  br i1 %365, label %.loopexit.loopexit416.unr-lcssa, label %.lr.ph368.new

.lr.ph368.new:                                    ; preds = %.lr.ph368
  %unroll_iter466 = and i64 %11, 9223372036854775804
  br label %366

366:                                              ; preds = %366, %.lr.ph368.new
  %.11366 = phi i64 [ 0, %.lr.ph368.new ], [ %390, %366 ]
  %niter467 = phi i64 [ 0, %.lr.ph368.new ], [ %niter467.next.3, %366 ]
  %367 = load ptr, ptr %97, align 8, !tbaa !13
  %368 = getelementptr inbounds double, ptr %367, i64 %.11366
  %369 = load double, ptr %368, align 8, !tbaa !14
  %370 = load ptr, ptr %364, align 8, !tbaa !13
  %371 = getelementptr inbounds double, ptr %370, i64 %.11366
  store double %369, ptr %371, align 8, !tbaa !14
  %372 = or disjoint i64 %.11366, 1
  %373 = load ptr, ptr %97, align 8, !tbaa !13
  %374 = getelementptr inbounds double, ptr %373, i64 %372
  %375 = load double, ptr %374, align 8, !tbaa !14
  %376 = load ptr, ptr %364, align 8, !tbaa !13
  %377 = getelementptr inbounds double, ptr %376, i64 %372
  store double %375, ptr %377, align 8, !tbaa !14
  %378 = or disjoint i64 %.11366, 2
  %379 = load ptr, ptr %97, align 8, !tbaa !13
  %380 = getelementptr inbounds double, ptr %379, i64 %378
  %381 = load double, ptr %380, align 8, !tbaa !14
  %382 = load ptr, ptr %364, align 8, !tbaa !13
  %383 = getelementptr inbounds double, ptr %382, i64 %378
  store double %381, ptr %383, align 8, !tbaa !14
  %384 = or disjoint i64 %.11366, 3
  %385 = load ptr, ptr %97, align 8, !tbaa !13
  %386 = getelementptr inbounds double, ptr %385, i64 %384
  %387 = load double, ptr %386, align 8, !tbaa !14
  %388 = load ptr, ptr %364, align 8, !tbaa !13
  %389 = getelementptr inbounds double, ptr %388, i64 %384
  store double %387, ptr %389, align 8, !tbaa !14
  %390 = add nuw nsw i64 %.11366, 4
  %niter467.next.3 = add i64 %niter467, 4
  %niter467.ncmp.3 = icmp eq i64 %niter467.next.3, %unroll_iter466
  br i1 %niter467.ncmp.3, label %.loopexit.loopexit416.unr-lcssa, label %366, !llvm.loop !57

391:                                              ; preds = %thread-pre-split.thread
  %392 = icmp ne i64 %356, 0
  %or.cond5 = and i1 %392, %359
  br i1 %or.cond5, label %393, label %.thread297

393:                                              ; preds = %391
  %394 = fneg double %123
  %395 = fmul double %.2280, 2.000000e+00
  %396 = load double, ptr %102, align 8, !tbaa !58
  %397 = call noundef double @_ZN11alglib_impl12safeminposrvEdddPNS_8ae_stateE(double noundef %394, double noundef %395, double noundef %396, ptr noundef %20)
  store double %397, ptr %103, align 8, !tbaa !59
  br label %.thread297

.thread297:                                       ; preds = %360, %391, %393, %111
  %398 = load i8, ptr %105, align 1, !tbaa !60, !range !11, !noundef !12
  %399 = trunc nuw i8 %398 to i1
  br i1 %399, label %.preheader, label %447

.preheader:                                       ; preds = %.thread297
  br i1 %.not.not308, label %.lr.ph349.preheader, label %._crit_edge350

.lr.ph349.preheader:                              ; preds = %.preheader
  br i1 %110, label %._crit_edge350.loopexit.unr-lcssa, label %.lr.ph349

.lr.ph349:                                        ; preds = %.lr.ph349.preheader, %.lr.ph349
  %.12348 = phi i64 [ %419, %.lr.ph349 ], [ 0, %.lr.ph349.preheader ]
  %niter443 = phi i64 [ %niter443.next.1, %.lr.ph349 ], [ 0, %.lr.ph349.preheader ]
  %400 = load ptr, ptr %97, align 8, !tbaa !13
  %401 = getelementptr inbounds double, ptr %400, i64 %.12348
  %402 = load double, ptr %401, align 8, !tbaa !14
  %403 = load ptr, ptr %106, align 8, !tbaa !13
  %404 = getelementptr inbounds double, ptr %403, i64 %.12348
  %405 = load double, ptr %404, align 8, !tbaa !14
  %406 = fsub double %402, %405
  %407 = load ptr, ptr %96, align 8, !tbaa !13
  %408 = getelementptr inbounds double, ptr %407, i64 %.12348
  store double %406, ptr %408, align 8, !tbaa !14
  %409 = or disjoint i64 %.12348, 1
  %410 = load ptr, ptr %97, align 8, !tbaa !13
  %411 = getelementptr inbounds double, ptr %410, i64 %409
  %412 = load double, ptr %411, align 8, !tbaa !14
  %413 = load ptr, ptr %106, align 8, !tbaa !13
  %414 = getelementptr inbounds double, ptr %413, i64 %409
  %415 = load double, ptr %414, align 8, !tbaa !14
  %416 = fsub double %412, %415
  %417 = load ptr, ptr %96, align 8, !tbaa !13
  %418 = getelementptr inbounds double, ptr %417, i64 %409
  store double %416, ptr %418, align 8, !tbaa !14
  %419 = add nuw nsw i64 %.12348, 2
  %niter443.next.1 = add i64 %niter443, 2
  %niter443.ncmp.1 = icmp eq i64 %niter443.next.1, %unroll_iter442
  br i1 %niter443.ncmp.1, label %._crit_edge350.loopexit.unr-lcssa, label %.lr.ph349, !llvm.loop !61

._crit_edge350.loopexit.unr-lcssa:                ; preds = %.lr.ph349, %.lr.ph349.preheader
  %.12348.unr = phi i64 [ 0, %.lr.ph349.preheader ], [ %419, %.lr.ph349 ]
  br i1 %lcmp.mod441.not, label %._crit_edge350, label %.lr.ph349.epil

.lr.ph349.epil:                                   ; preds = %._crit_edge350.loopexit.unr-lcssa
  %420 = load ptr, ptr %97, align 8, !tbaa !13
  %421 = getelementptr inbounds double, ptr %420, i64 %.12348.unr
  %422 = load double, ptr %421, align 8, !tbaa !14
  %423 = load ptr, ptr %106, align 8, !tbaa !13
  %424 = getelementptr inbounds double, ptr %423, i64 %.12348.unr
  %425 = load double, ptr %424, align 8, !tbaa !14
  %426 = fsub double %422, %425
  %427 = load ptr, ptr %96, align 8, !tbaa !13
  %428 = getelementptr inbounds double, ptr %427, i64 %.12348.unr
  store double %426, ptr %428, align 8, !tbaa !14
  br label %._crit_edge350

._crit_edge350:                                   ; preds = %.lr.ph349.epil, %._crit_edge350.loopexit.unr-lcssa, %.preheader
  br i1 %24, label %.thread299, label %429

.thread299:                                       ; preds = %._crit_edge350
  call void @_ZN11alglib_impl6cqmadxEPNS_20convexquadraticmodelEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %44, ptr noundef nonnull %45, ptr noundef %20)
  br label %431

429:                                              ; preds = %._crit_edge350
  br i1 %25, label %430, label %431

430:                                              ; preds = %429
  call void @_ZN11alglib_impl9sparsesmvEPNS_12sparsematrixEbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %1, i1 noundef zeroext %3, ptr noundef nonnull %44, ptr noundef nonnull %45, ptr noundef %20)
  br label %431

431:                                              ; preds = %.thread299, %430, %429
  %432 = load ptr, ptr %96, align 8, !tbaa !13
  %433 = load ptr, ptr %99, align 8, !tbaa !13
  %434 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %41)
  %435 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %432, i64 noundef 1, ptr noundef %433, i64 noundef 1, i64 noundef %434)
  %436 = load ptr, ptr %96, align 8, !tbaa !13
  %437 = load ptr, ptr %107, align 8, !tbaa !13
  %438 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %41)
  %439 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %436, i64 noundef 1, ptr noundef %437, i64 noundef 1, i64 noundef %438)
  %440 = call double @llvm.fmuladd.f64(double %435, double 5.000000e-01, double %439)
  store double %440, ptr %92, align 8, !tbaa !43
  %441 = load ptr, ptr %95, align 8, !tbaa !13
  %442 = load ptr, ptr %99, align 8, !tbaa !13
  %443 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %41)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %441, i64 noundef 1, ptr noundef %442, i64 noundef 1, i64 noundef %443)
  %444 = load ptr, ptr %95, align 8, !tbaa !13
  %445 = load ptr, ptr %107, align 8, !tbaa !13
  %446 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %41)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %444, i64 noundef 1, ptr noundef %445, i64 noundef 1, i64 noundef %446)
  br label %447

447:                                              ; preds = %431, %.thread297
  %448 = call noundef zeroext i1 @_ZN11alglib_impl17minbleiciterationEPNS_13minbleicstateEPNS_8ae_stateE(ptr noundef nonnull %16, ptr noundef %20)
  br i1 %448, label %111, label %.loopexit, !llvm.loop !62

.loopexit.loopexit.unr-lcssa:                     ; preds = %182, %.lr.ph372
  %.5370.unr = phi i64 [ 0, %.lr.ph372 ], [ %206, %182 ]
  %lcmp.mod471.not = icmp eq i64 %xtraiter469, 0
  br i1 %lcmp.mod471.not, label %.loopexit, label %.epil.preheader468

.epil.preheader468:                               ; preds = %.loopexit.loopexit.unr-lcssa, %.epil.preheader468
  %.5370.epil = phi i64 [ %454, %.epil.preheader468 ], [ %.5370.unr, %.loopexit.loopexit.unr-lcssa ]
  %epil.iter470 = phi i64 [ %epil.iter470.next, %.epil.preheader468 ], [ 0, %.loopexit.loopexit.unr-lcssa ]
  %449 = load ptr, ptr %97, align 8, !tbaa !13
  %450 = getelementptr inbounds double, ptr %449, i64 %.5370.epil
  %451 = load double, ptr %450, align 8, !tbaa !14
  %452 = load ptr, ptr %180, align 8, !tbaa !13
  %453 = getelementptr inbounds double, ptr %452, i64 %.5370.epil
  store double %451, ptr %453, align 8, !tbaa !14
  %454 = add nuw nsw i64 %.5370.epil, 1
  %epil.iter470.next = add i64 %epil.iter470, 1
  %epil.iter470.cmp.not = icmp eq i64 %epil.iter470.next, %xtraiter469
  br i1 %epil.iter470.cmp.not, label %.loopexit, label %.epil.preheader468, !llvm.loop !63

.loopexit.loopexit416.unr-lcssa:                  ; preds = %366, %.lr.ph368
  %.11366.unr = phi i64 [ 0, %.lr.ph368 ], [ %390, %366 ]
  %lcmp.mod465.not = icmp eq i64 %xtraiter463, 0
  br i1 %lcmp.mod465.not, label %.loopexit, label %.epil.preheader462

.epil.preheader462:                               ; preds = %.loopexit.loopexit416.unr-lcssa, %.epil.preheader462
  %.11366.epil = phi i64 [ %460, %.epil.preheader462 ], [ %.11366.unr, %.loopexit.loopexit416.unr-lcssa ]
  %epil.iter464 = phi i64 [ %epil.iter464.next, %.epil.preheader462 ], [ 0, %.loopexit.loopexit416.unr-lcssa ]
  %455 = load ptr, ptr %97, align 8, !tbaa !13
  %456 = getelementptr inbounds double, ptr %455, i64 %.11366.epil
  %457 = load double, ptr %456, align 8, !tbaa !14
  %458 = load ptr, ptr %364, align 8, !tbaa !13
  %459 = getelementptr inbounds double, ptr %458, i64 %.11366.epil
  store double %457, ptr %459, align 8, !tbaa !14
  %460 = add nuw nsw i64 %.11366.epil, 1
  %epil.iter464.next = add i64 %epil.iter464, 1
  %epil.iter464.cmp.not = icmp eq i64 %epil.iter464.next, %xtraiter463
  br i1 %epil.iter464.cmp.not, label %.loopexit, label %.epil.preheader462, !llvm.loop !64

.loopexit.loopexit417.unr-lcssa:                  ; preds = %247, %.lr.ph364
  %.7362.unr = phi i64 [ 0, %.lr.ph364 ], [ %271, %247 ]
  %lcmp.mod459.not = icmp eq i64 %xtraiter457, 0
  br i1 %lcmp.mod459.not, label %.loopexit, label %.epil.preheader456

.epil.preheader456:                               ; preds = %.loopexit.loopexit417.unr-lcssa, %.epil.preheader456
  %.7362.epil = phi i64 [ %466, %.epil.preheader456 ], [ %.7362.unr, %.loopexit.loopexit417.unr-lcssa ]
  %epil.iter458 = phi i64 [ %epil.iter458.next, %.epil.preheader456 ], [ 0, %.loopexit.loopexit417.unr-lcssa ]
  %461 = load ptr, ptr %97, align 8, !tbaa !13
  %462 = getelementptr inbounds double, ptr %461, i64 %.7362.epil
  %463 = load double, ptr %462, align 8, !tbaa !14
  %464 = load ptr, ptr %245, align 8, !tbaa !13
  %465 = getelementptr inbounds double, ptr %464, i64 %.7362.epil
  store double %463, ptr %465, align 8, !tbaa !14
  %466 = add nuw nsw i64 %.7362.epil, 1
  %epil.iter458.next = add i64 %epil.iter458, 1
  %epil.iter458.cmp.not = icmp eq i64 %epil.iter458.next, %xtraiter457
  br i1 %epil.iter458.cmp.not, label %.loopexit, label %.epil.preheader456, !llvm.loop !65

.loopexit.loopexit418.unr-lcssa:                  ; preds = %287, %.lr.ph360
  %.8358.unr = phi i64 [ 0, %.lr.ph360 ], [ %311, %287 ]
  %lcmp.mod453.not = icmp eq i64 %xtraiter451, 0
  br i1 %lcmp.mod453.not, label %.loopexit, label %.epil.preheader450

.epil.preheader450:                               ; preds = %.loopexit.loopexit418.unr-lcssa, %.epil.preheader450
  %.8358.epil = phi i64 [ %472, %.epil.preheader450 ], [ %.8358.unr, %.loopexit.loopexit418.unr-lcssa ]
  %epil.iter452 = phi i64 [ %epil.iter452.next, %.epil.preheader450 ], [ 0, %.loopexit.loopexit418.unr-lcssa ]
  %467 = load ptr, ptr %97, align 8, !tbaa !13
  %468 = getelementptr inbounds double, ptr %467, i64 %.8358.epil
  %469 = load double, ptr %468, align 8, !tbaa !14
  %470 = load ptr, ptr %285, align 8, !tbaa !13
  %471 = getelementptr inbounds double, ptr %470, i64 %.8358.epil
  store double %469, ptr %471, align 8, !tbaa !14
  %472 = add nuw nsw i64 %.8358.epil, 1
  %epil.iter452.next = add i64 %epil.iter452, 1
  %epil.iter452.cmp.not = icmp eq i64 %epil.iter452.next, %xtraiter451
  br i1 %epil.iter452.cmp.not, label %.loopexit, label %.epil.preheader450, !llvm.loop !66

.loopexit.loopexit419.unr-lcssa:                  ; preds = %329, %.lr.ph356
  %.10354.unr = phi i64 [ 0, %.lr.ph356 ], [ %353, %329 ]
  %lcmp.mod447.not = icmp eq i64 %xtraiter445, 0
  br i1 %lcmp.mod447.not, label %.loopexit, label %.epil.preheader444

.epil.preheader444:                               ; preds = %.loopexit.loopexit419.unr-lcssa, %.epil.preheader444
  %.10354.epil = phi i64 [ %478, %.epil.preheader444 ], [ %.10354.unr, %.loopexit.loopexit419.unr-lcssa ]
  %epil.iter446 = phi i64 [ %epil.iter446.next, %.epil.preheader444 ], [ 0, %.loopexit.loopexit419.unr-lcssa ]
  %473 = load ptr, ptr %97, align 8, !tbaa !13
  %474 = getelementptr inbounds double, ptr %473, i64 %.10354.epil
  %475 = load double, ptr %474, align 8, !tbaa !14
  %476 = load ptr, ptr %327, align 8, !tbaa !13
  %477 = getelementptr inbounds double, ptr %476, i64 %.10354.epil
  store double %475, ptr %477, align 8, !tbaa !14
  %478 = add nuw nsw i64 %.10354.epil, 1
  %epil.iter446.next = add i64 %epil.iter446, 1
  %epil.iter446.cmp.not = icmp eq i64 %epil.iter446.next, %xtraiter445
  br i1 %epil.iter446.cmp.not, label %.loopexit, label %.epil.preheader444, !llvm.loop !67

.loopexit:                                        ; preds = %447, %.loopexit.loopexit419.unr-lcssa, %.epil.preheader444, %.loopexit.loopexit418.unr-lcssa, %.epil.preheader450, %.loopexit.loopexit417.unr-lcssa, %.epil.preheader456, %.loopexit.loopexit416.unr-lcssa, %.epil.preheader462, %.loopexit.loopexit.unr-lcssa, %.epil.preheader468, %._crit_edge318
  %.pr = load i64, ptr %19, align 8, !tbaa !5
  %479 = icmp eq i64 %.pr, 0
  br i1 %479, label %480, label %.loopexit.thread

480:                                              ; preds = %.loopexit
  %481 = getelementptr inbounds i8, ptr %16, i64 12536
  call void @_ZN11alglib_impl18minbleicresultsbufEPNS_13minbleicstateEPNS_9ae_vectorEPNS_14minbleicreportEPNS_8ae_stateE(ptr noundef %16, ptr noundef %18, ptr noundef nonnull %481, ptr noundef %20)
  %482 = getelementptr inbounds i8, ptr %16, i64 12560
  %483 = load i64, ptr %482, align 8, !tbaa !68
  store i64 %483, ptr %19, align 8, !tbaa !5
  br label %484

.loopexit.thread:                                 ; preds = %179, %363, %244, %284, %326, %.loopexit
  call void @_ZN11alglib_impl28minbleicemergencyterminationEPNS_13minbleicstateEPNS_8ae_stateE(ptr noundef %16, ptr noundef %20)
  br label %484

484:                                              ; preds = %.loopexit.thread, %480
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  ret void
}

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

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

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

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

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


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