; 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::qqpbuffers" = type { i64, i64, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::sparsematrix", i8, double, double, double, %"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::sactiveset", %"struct.alglib_impl::ae_vector", i64, i64, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::sparsematrix", %"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::sparsebuffers", i64, i64, i64, i64 }
%"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::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::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::sparsematrix" = type { %"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", i64, i64, i64, i64, i64, i64 }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::sparsebuffers" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::sparsematrix" }
%"struct.alglib_impl::qqpsettings" = type { double, double, double, i64, i8, i8, i64, i64, i64, i64 }
%"struct.alglib_impl::ae_state" = type { i64, double, double, double, ptr, %"struct.alglib_impl::ae_dyn_block", ptr, i32, ptr, i64, ptr, ptr, ptr }

@.str.199 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.200 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.201 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.202 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.203 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.204 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.205 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.206 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.207 = external hidden unnamed_addr constant [36 x i8], align 1
@_ZN11alglib_implL26qqpsolver_quickqprestartcgE = external hidden global i64, align 8
@.str.208 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.209 = external hidden unnamed_addr constant [29 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl17fblscholeskysolveEPNS_9ae_matrixEdlbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef, double noundef, i64 noundef, i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef) #1

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

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

declare noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double 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

declare noundef zeroext i1 @_ZN11alglib_impl20spdmatrixcholeskyrecEPNS_9ae_matrixEllbPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, i1 noundef zeroext, ptr noundef, ptr noundef) #1

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

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

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

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

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

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

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

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

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

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

68:                                               ; preds = %16
  %69 = load i64, ptr %20, align 8, !tbaa !9
  %70 = icmp eq i64 %69, 1
  br i1 %70, label %74, label %71

71:                                               ; preds = %68
  %72 = load i64, ptr %20, align 8, !tbaa !9
  %73 = icmp eq i64 %72, 2
  br label %74

74:                                               ; preds = %71, %68, %16
  %75 = phi i1 [ true, %68 ], [ true, %16 ], [ %73, %71 ]
  %76 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %75, ptr noundef @.str.199, ptr noundef %76)
  %77 = load i64, ptr %27, align 8, !tbaa !9
  %78 = load ptr, ptr %29, align 8, !tbaa !5
  %79 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %78, i32 0, i32 0
  store i64 %77, ptr %79, align 8, !tbaa !13
  %80 = load ptr, ptr %29, align 8, !tbaa !5
  %81 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %80, i32 0, i32 0
  %82 = load i64, ptr %81, align 8, !tbaa !13
  store i64 %82, ptr %33, align 8, !tbaa !9
  %83 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 0, ptr %83, align 8, !tbaa !9
  %84 = load ptr, ptr %29, align 8, !tbaa !5
  %85 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %84, i32 0, i32 37
  store i64 0, ptr %85, align 8, !tbaa !23
  %86 = load ptr, ptr %29, align 8, !tbaa !5
  %87 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %86, i32 0, i32 38
  store i64 0, ptr %87, align 8, !tbaa !24
  %88 = load ptr, ptr %29, align 8, !tbaa !5
  %89 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %88, i32 0, i32 39
  store i64 0, ptr %89, align 8, !tbaa !25
  %90 = load ptr, ptr %29, align 8, !tbaa !5
  %91 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %90, i32 0, i32 40
  store i64 0, ptr %91, align 8, !tbaa !26
  %92 = load i64, ptr %20, align 8, !tbaa !9
  %93 = icmp eq i64 %92, 1
  br i1 %93, label %94, label %107

94:                                               ; preds = %74
  %95 = load ptr, ptr %18, align 8, !tbaa !5
  %96 = load ptr, ptr %32, align 8, !tbaa !5
  %97 = call noundef i64 @_ZN11alglib_impl14sparsegetnrowsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %95, ptr noundef %96)
  %98 = load i64, ptr %33, align 8, !tbaa !9
  %99 = icmp eq i64 %97, %98
  %100 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %99, ptr noundef @.str.200, ptr noundef %100)
  %101 = load ptr, ptr %18, align 8, !tbaa !5
  %102 = load ptr, ptr %32, align 8, !tbaa !5
  %103 = call noundef i64 @_ZN11alglib_impl14sparsegetncolsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %101, ptr noundef %102)
  %104 = load i64, ptr %33, align 8, !tbaa !9
  %105 = icmp eq i64 %103, %104
  %106 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %105, ptr noundef @.str.201, ptr noundef %106)
  br label %107

107:                                              ; preds = %94, %74
  store i64 0, ptr %34, align 8, !tbaa !9
  br label %108

108:                                              ; preds = %133, %107
  %109 = load i64, ptr %34, align 8, !tbaa !9
  %110 = load i64, ptr %33, align 8, !tbaa !9
  %111 = sub nsw i64 %110, 1
  %112 = icmp sle i64 %109, %111
  br i1 %112, label %113, label %136

113:                                              ; preds = %108
  %114 = load ptr, ptr %25, align 8, !tbaa !5
  %115 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %114, i32 0, i32 4
  %116 = load ptr, ptr %115, align 8, !tbaa !27
  %117 = load i64, ptr %34, align 8, !tbaa !9
  %118 = getelementptr inbounds double, ptr %116, i64 %117
  %119 = load double, ptr %118, align 8, !tbaa !28
  %120 = load ptr, ptr %32, align 8, !tbaa !5
  %121 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %119, ptr noundef %120)
  br i1 %121, label %122, label %130

122:                                              ; preds = %113
  %123 = load ptr, ptr %25, align 8, !tbaa !5
  %124 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %123, i32 0, i32 4
  %125 = load ptr, ptr %124, align 8, !tbaa !27
  %126 = load i64, ptr %34, align 8, !tbaa !9
  %127 = getelementptr inbounds double, ptr %125, i64 %126
  %128 = load double, ptr %127, align 8, !tbaa !28
  %129 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %128, double noundef 0.000000e+00)
  br label %130

130:                                              ; preds = %122, %113
  %131 = phi i1 [ false, %113 ], [ %129, %122 ]
  %132 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %131, ptr noundef @.str.202, ptr noundef %132)
  br label %133

133:                                              ; preds = %130
  %134 = load i64, ptr %34, align 8, !tbaa !9
  %135 = add nsw i64 %134, 1
  store i64 %135, ptr %34, align 8, !tbaa !9
  br label %108, !llvm.loop !29

136:                                              ; preds = %108
  store i64 0, ptr %34, align 8, !tbaa !9
  br label %137

137:                                              ; preds = %178, %136
  %138 = load i64, ptr %34, align 8, !tbaa !9
  %139 = load i64, ptr %33, align 8, !tbaa !9
  %140 = sub nsw i64 %139, 1
  %141 = icmp sle i64 %138, %140
  br i1 %141, label %142, label %181

142:                                              ; preds = %137
  %143 = load ptr, ptr %23, align 8, !tbaa !5
  %144 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %143, i32 0, i32 4
  %145 = load ptr, ptr %144, align 8, !tbaa !27
  %146 = load i64, ptr %34, align 8, !tbaa !9
  %147 = getelementptr inbounds double, ptr %145, i64 %146
  %148 = load double, ptr %147, align 8, !tbaa !28
  %149 = load ptr, ptr %32, align 8, !tbaa !5
  %150 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %148, ptr noundef %149)
  br i1 %150, label %151, label %177

151:                                              ; preds = %142
  %152 = load ptr, ptr %24, align 8, !tbaa !5
  %153 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %152, i32 0, i32 4
  %154 = load ptr, ptr %153, align 8, !tbaa !27
  %155 = load i64, ptr %34, align 8, !tbaa !9
  %156 = getelementptr inbounds double, ptr %154, i64 %155
  %157 = load double, ptr %156, align 8, !tbaa !28
  %158 = load ptr, ptr %32, align 8, !tbaa !5
  %159 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %157, ptr noundef %158)
  br i1 %159, label %160, label %177

160:                                              ; preds = %151
  %161 = load ptr, ptr %23, align 8, !tbaa !5
  %162 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %161, i32 0, i32 4
  %163 = load ptr, ptr %162, align 8, !tbaa !27
  %164 = load i64, ptr %34, align 8, !tbaa !9
  %165 = getelementptr inbounds double, ptr %163, i64 %164
  %166 = load double, ptr %165, align 8, !tbaa !28
  %167 = load ptr, ptr %24, align 8, !tbaa !5
  %168 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %167, i32 0, i32 4
  %169 = load ptr, ptr %168, align 8, !tbaa !27
  %170 = load i64, ptr %34, align 8, !tbaa !9
  %171 = getelementptr inbounds double, ptr %169, i64 %170
  %172 = load double, ptr %171, align 8, !tbaa !28
  %173 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %166, double noundef %172)
  br i1 %173, label %174, label %176

174:                                              ; preds = %160
  %175 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -3, ptr %175, align 8, !tbaa !9
  store i32 1, ptr %63, align 4
  br label %2448

176:                                              ; preds = %160
  br label %177

177:                                              ; preds = %176, %151, %142
  br label %178

178:                                              ; preds = %177
  %179 = load i64, ptr %34, align 8, !tbaa !9
  %180 = add nsw i64 %179, 1
  store i64 %180, ptr %34, align 8, !tbaa !9
  br label %137, !llvm.loop !31

181:                                              ; preds = %137
  %182 = load ptr, ptr %28, align 8, !tbaa !5
  %183 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %182, i32 0, i32 4
  %184 = load i8, ptr %183, align 8, !tbaa !32, !range !34, !noundef !35
  %185 = trunc i8 %184 to i1
  br i1 %185, label %191, label %186

186:                                              ; preds = %181
  %187 = load ptr, ptr %28, align 8, !tbaa !5
  %188 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %187, i32 0, i32 5
  %189 = load i8, ptr %188, align 1, !tbaa !36, !range !34, !noundef !35
  %190 = trunc i8 %189 to i1
  br label %191

191:                                              ; preds = %186, %181
  %192 = phi i1 [ true, %181 ], [ %190, %186 ]
  %193 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %192, ptr noundef @.str.203, ptr noundef %193)
  %194 = load ptr, ptr %29, align 8, !tbaa !5
  %195 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %194, i32 0, i32 9
  %196 = load i64, ptr %33, align 8, !tbaa !9
  %197 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %195, i64 noundef %196, ptr noundef %197)
  %198 = load ptr, ptr %29, align 8, !tbaa !5
  %199 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %198, i32 0, i32 10
  %200 = load i64, ptr %33, align 8, !tbaa !9
  %201 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %199, i64 noundef %200, ptr noundef %201)
  %202 = load ptr, ptr %29, align 8, !tbaa !5
  %203 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %202, i32 0, i32 11
  %204 = load i64, ptr %33, align 8, !tbaa !9
  %205 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %203, i64 noundef %204, ptr noundef %205)
  %206 = load ptr, ptr %29, align 8, !tbaa !5
  %207 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %206, i32 0, i32 12
  %208 = load i64, ptr %33, align 8, !tbaa !9
  %209 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %207, i64 noundef %208, ptr noundef %209)
  %210 = load ptr, ptr %29, align 8, !tbaa !5
  %211 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %210, i32 0, i32 13
  %212 = load i64, ptr %33, align 8, !tbaa !9
  %213 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %211, i64 noundef %212, ptr noundef %213)
  %214 = load ptr, ptr %29, align 8, !tbaa !5
  %215 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %214, i32 0, i32 14
  %216 = load i64, ptr %33, align 8, !tbaa !9
  %217 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %215, i64 noundef %216, ptr noundef %217)
  %218 = load ptr, ptr %29, align 8, !tbaa !5
  %219 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %218, i32 0, i32 16
  %220 = load i64, ptr %33, align 8, !tbaa !9
  %221 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %219, i64 noundef %220, ptr noundef %221)
  %222 = load ptr, ptr %29, align 8, !tbaa !5
  %223 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %222, i32 0, i32 15
  %224 = load i64, ptr %33, align 8, !tbaa !9
  %225 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %223, i64 noundef %224, ptr noundef %225)
  %226 = load ptr, ptr %29, align 8, !tbaa !5
  %227 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %226, i32 0, i32 19
  %228 = load i64, ptr %33, align 8, !tbaa !9
  %229 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %227, i64 noundef %228, ptr noundef %229)
  %230 = load ptr, ptr %29, align 8, !tbaa !5
  %231 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %230, i32 0, i32 20
  %232 = load i64, ptr %33, align 8, !tbaa !9
  %233 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %231, i64 noundef %232, ptr noundef %233)
  %234 = load ptr, ptr %29, align 8, !tbaa !5
  %235 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %234, i32 0, i32 17
  %236 = load i64, ptr %33, align 8, !tbaa !9
  %237 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %235, i64 noundef %236, ptr noundef %237)
  %238 = load ptr, ptr %29, align 8, !tbaa !5
  %239 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %238, i32 0, i32 18
  %240 = load i64, ptr %33, align 8, !tbaa !9
  %241 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %239, i64 noundef %240, ptr noundef %241)
  %242 = load ptr, ptr %29, align 8, !tbaa !5
  %243 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %242, i32 0, i32 33
  %244 = load i64, ptr %33, align 8, !tbaa !9
  %245 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %243, i64 noundef %244, ptr noundef %245)
  %246 = load ptr, ptr %29, align 8, !tbaa !5
  %247 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %246, i32 0, i32 34
  %248 = load i64, ptr %33, align 8, !tbaa !9
  %249 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %247, i64 noundef %248, ptr noundef %249)
  %250 = load ptr, ptr %29, align 8, !tbaa !5
  %251 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %250, i32 0, i32 35
  %252 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %251, i64 noundef 15, ptr noundef %252)
  %253 = load i64, ptr %33, align 8, !tbaa !9
  %254 = load ptr, ptr %29, align 8, !tbaa !5
  %255 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %254, i32 0, i32 21
  %256 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl7sasinitElPNS_10sactivesetEPNS_8ae_stateE(i64 noundef %253, ptr noundef %255, ptr noundef %256)
  %257 = load ptr, ptr %29, align 8, !tbaa !5
  %258 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %257, i32 0, i32 8
  %259 = load i64, ptr %33, align 8, !tbaa !9
  %260 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %258, i64 noundef %259, ptr noundef %260)
  store i64 0, ptr %34, align 8, !tbaa !9
  br label %261

261:                                              ; preds = %286, %191
  %262 = load i64, ptr %34, align 8, !tbaa !9
  %263 = load i64, ptr %33, align 8, !tbaa !9
  %264 = sub nsw i64 %263, 1
  %265 = icmp sle i64 %262, %264
  br i1 %265, label %266, label %289

266:                                              ; preds = %261
  %267 = load ptr, ptr %25, align 8, !tbaa !5
  %268 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %267, i32 0, i32 4
  %269 = load ptr, ptr %268, align 8, !tbaa !27
  %270 = load i64, ptr %34, align 8, !tbaa !9
  %271 = getelementptr inbounds double, ptr %269, i64 %270
  %272 = load double, ptr %271, align 8, !tbaa !28
  %273 = load ptr, ptr %22, align 8, !tbaa !5
  %274 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %273, i32 0, i32 4
  %275 = load ptr, ptr %274, align 8, !tbaa !27
  %276 = load i64, ptr %34, align 8, !tbaa !9
  %277 = getelementptr inbounds double, ptr %275, i64 %276
  %278 = load double, ptr %277, align 8, !tbaa !28
  %279 = fmul double %272, %278
  %280 = load ptr, ptr %29, align 8, !tbaa !5
  %281 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %280, i32 0, i32 8
  %282 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %281, i32 0, i32 4
  %283 = load ptr, ptr %282, align 8, !tbaa !27
  %284 = load i64, ptr %34, align 8, !tbaa !9
  %285 = getelementptr inbounds double, ptr %283, i64 %284
  store double %279, ptr %285, align 8, !tbaa !28
  br label %286

286:                                              ; preds = %266
  %287 = load i64, ptr %34, align 8, !tbaa !9
  %288 = add nsw i64 %287, 1
  store i64 %288, ptr %34, align 8, !tbaa !9
  br label %261, !llvm.loop !37

289:                                              ; preds = %261
  %290 = load ptr, ptr %29, align 8, !tbaa !5
  %291 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %290, i32 0, i32 1
  store i64 -99, ptr %291, align 8, !tbaa !38
  %292 = load i64, ptr %20, align 8, !tbaa !9
  %293 = icmp eq i64 %292, 0
  br i1 %293, label %294, label %392

294:                                              ; preds = %289
  %295 = load ptr, ptr %29, align 8, !tbaa !5
  %296 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %295, i32 0, i32 2
  %297 = load i64, ptr %33, align 8, !tbaa !9
  %298 = load i64, ptr %33, align 8, !tbaa !9
  %299 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %296, i64 noundef %297, i64 noundef %298, ptr noundef %299)
  %300 = load ptr, ptr %17, align 8, !tbaa !5
  %301 = load ptr, ptr %29, align 8, !tbaa !5
  %302 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %301, i32 0, i32 2
  %303 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl7cqmgetaEPNS_20convexquadraticmodelEPNS_9ae_matrixEPNS_8ae_stateE(ptr noundef %300, ptr noundef %302, ptr noundef %303)
  %304 = load ptr, ptr %29, align 8, !tbaa !5
  %305 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %304, i32 0, i32 1
  store i64 0, ptr %305, align 8, !tbaa !38
  %306 = load ptr, ptr %29, align 8, !tbaa !5
  %307 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %306, i32 0, i32 5
  store double 0.000000e+00, ptr %307, align 8, !tbaa !39
  %308 = load ptr, ptr %29, align 8, !tbaa !5
  %309 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %308, i32 0, i32 6
  store double 0.000000e+00, ptr %309, align 8, !tbaa !40
  %310 = load ptr, ptr %29, align 8, !tbaa !5
  %311 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %310, i32 0, i32 7
  store double 0.000000e+00, ptr %311, align 8, !tbaa !41
  store i64 0, ptr %34, align 8, !tbaa !9
  br label %312

312:                                              ; preds = %388, %294
  %313 = load i64, ptr %34, align 8, !tbaa !9
  %314 = load i64, ptr %33, align 8, !tbaa !9
  %315 = sub nsw i64 %314, 1
  %316 = icmp sle i64 %313, %315
  br i1 %316, label %317, label %391

317:                                              ; preds = %312
  store i64 0, ptr %35, align 8, !tbaa !9
  br label %318

318:                                              ; preds = %384, %317
  %319 = load i64, ptr %35, align 8, !tbaa !9
  %320 = load i64, ptr %33, align 8, !tbaa !9
  %321 = sub nsw i64 %320, 1
  %322 = icmp sle i64 %319, %321
  br i1 %322, label %323, label %387

323:                                              ; preds = %318
  %324 = load ptr, ptr %25, align 8, !tbaa !5
  %325 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %324, i32 0, i32 4
  %326 = load ptr, ptr %325, align 8, !tbaa !27
  %327 = load i64, ptr %34, align 8, !tbaa !9
  %328 = getelementptr inbounds double, ptr %326, i64 %327
  %329 = load double, ptr %328, align 8, !tbaa !28
  %330 = load ptr, ptr %29, align 8, !tbaa !5
  %331 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %330, i32 0, i32 2
  %332 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %331, i32 0, i32 6
  %333 = load ptr, ptr %332, align 8, !tbaa !27
  %334 = load i64, ptr %34, align 8, !tbaa !9
  %335 = getelementptr inbounds ptr, ptr %333, i64 %334
  %336 = load ptr, ptr %335, align 8, !tbaa !5
  %337 = load i64, ptr %35, align 8, !tbaa !9
  %338 = getelementptr inbounds double, ptr %336, i64 %337
  %339 = load double, ptr %338, align 8, !tbaa !28
  %340 = fmul double %329, %339
  %341 = load ptr, ptr %25, align 8, !tbaa !5
  %342 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %341, i32 0, i32 4
  %343 = load ptr, ptr %342, align 8, !tbaa !27
  %344 = load i64, ptr %35, align 8, !tbaa !9
  %345 = getelementptr inbounds double, ptr %343, i64 %344
  %346 = load double, ptr %345, align 8, !tbaa !28
  %347 = fmul double %340, %346
  store double %347, ptr %37, align 8, !tbaa !28
  %348 = load double, ptr %37, align 8, !tbaa !28
  %349 = load ptr, ptr %32, align 8, !tbaa !5
  %350 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %348, ptr noundef %349)
  store double %350, ptr %38, align 8, !tbaa !28
  %351 = load double, ptr %37, align 8, !tbaa !28
  %352 = load ptr, ptr %29, align 8, !tbaa !5
  %353 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %352, i32 0, i32 2
  %354 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %353, i32 0, i32 6
  %355 = load ptr, ptr %354, align 8, !tbaa !27
  %356 = load i64, ptr %34, align 8, !tbaa !9
  %357 = getelementptr inbounds ptr, ptr %355, i64 %356
  %358 = load ptr, ptr %357, align 8, !tbaa !5
  %359 = load i64, ptr %35, align 8, !tbaa !9
  %360 = getelementptr inbounds double, ptr %358, i64 %359
  store double %351, ptr %360, align 8, !tbaa !28
  %361 = load ptr, ptr %29, align 8, !tbaa !5
  %362 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %361, i32 0, i32 5
  %363 = load double, ptr %362, align 8, !tbaa !39
  %364 = load double, ptr %38, align 8, !tbaa !28
  %365 = load ptr, ptr %32, align 8, !tbaa !5
  %366 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %363, double noundef %364, ptr noundef %365)
  %367 = load ptr, ptr %29, align 8, !tbaa !5
  %368 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %367, i32 0, i32 5
  store double %366, ptr %368, align 8, !tbaa !39
  %369 = load ptr, ptr %29, align 8, !tbaa !5
  %370 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %369, i32 0, i32 6
  %371 = load double, ptr %370, align 8, !tbaa !40
  %372 = load double, ptr %38, align 8, !tbaa !28
  %373 = fadd double %371, %372
  %374 = load ptr, ptr %29, align 8, !tbaa !5
  %375 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %374, i32 0, i32 6
  store double %373, ptr %375, align 8, !tbaa !40
  %376 = load ptr, ptr %29, align 8, !tbaa !5
  %377 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %376, i32 0, i32 7
  %378 = load double, ptr %377, align 8, !tbaa !41
  %379 = load double, ptr %38, align 8, !tbaa !28
  %380 = load double, ptr %38, align 8, !tbaa !28
  %381 = call double @llvm.fmuladd.f64(double %379, double %380, double %378)
  %382 = load ptr, ptr %29, align 8, !tbaa !5
  %383 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %382, i32 0, i32 7
  store double %381, ptr %383, align 8, !tbaa !41
  br label %384

384:                                              ; preds = %323
  %385 = load i64, ptr %35, align 8, !tbaa !9
  %386 = add nsw i64 %385, 1
  store i64 %386, ptr %35, align 8, !tbaa !9
  br label %318, !llvm.loop !42

387:                                              ; preds = %318
  br label %388

388:                                              ; preds = %387
  %389 = load i64, ptr %34, align 8, !tbaa !9
  %390 = add nsw i64 %389, 1
  store i64 %390, ptr %34, align 8, !tbaa !9
  br label %312, !llvm.loop !43

391:                                              ; preds = %312
  br label %392

392:                                              ; preds = %391, %289
  %393 = load i64, ptr %20, align 8, !tbaa !9
  %394 = icmp eq i64 %393, 1
  br i1 %394, label %395, label %542

395:                                              ; preds = %392
  %396 = load ptr, ptr %18, align 8, !tbaa !5
  %397 = load ptr, ptr %29, align 8, !tbaa !5
  %398 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %397, i32 0, i32 3
  %399 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl18sparsecopytosksbufEPNS_12sparsematrixES1_PNS_8ae_stateE(ptr noundef %396, ptr noundef %398, ptr noundef %399)
  %400 = load i8, ptr %21, align 1, !tbaa !11, !range !34, !noundef !35
  %401 = trunc i8 %400 to i1
  br i1 %401, label %402, label %406

402:                                              ; preds = %395
  %403 = load ptr, ptr %29, align 8, !tbaa !5
  %404 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %403, i32 0, i32 3
  %405 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl18sparsetransposesksEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %404, ptr noundef %405)
  br label %406

406:                                              ; preds = %402, %395
  %407 = load ptr, ptr %29, align 8, !tbaa !5
  %408 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %407, i32 0, i32 1
  store i64 1, ptr %408, align 8, !tbaa !38
  %409 = load ptr, ptr %29, align 8, !tbaa !5
  %410 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %409, i32 0, i32 4
  store i8 0, ptr %410, align 8, !tbaa !44
  %411 = load ptr, ptr %29, align 8, !tbaa !5
  %412 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %411, i32 0, i32 5
  store double 0.000000e+00, ptr %412, align 8, !tbaa !39
  %413 = load ptr, ptr %29, align 8, !tbaa !5
  %414 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %413, i32 0, i32 6
  store double 0.000000e+00, ptr %414, align 8, !tbaa !40
  %415 = load ptr, ptr %29, align 8, !tbaa !5
  %416 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %415, i32 0, i32 7
  store double 0.000000e+00, ptr %416, align 8, !tbaa !41
  store i64 0, ptr %34, align 8, !tbaa !9
  br label %417

417:                                              ; preds = %538, %406
  %418 = load i64, ptr %34, align 8, !tbaa !9
  %419 = load i64, ptr %33, align 8, !tbaa !9
  %420 = sub nsw i64 %419, 1
  %421 = icmp sle i64 %418, %420
  br i1 %421, label %422, label %541

422:                                              ; preds = %417
  %423 = load ptr, ptr %29, align 8, !tbaa !5
  %424 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %423, i32 0, i32 3
  %425 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %424, i32 0, i32 2
  %426 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %425, i32 0, i32 4
  %427 = load ptr, ptr %426, align 8, !tbaa !27
  %428 = load i64, ptr %34, align 8, !tbaa !9
  %429 = getelementptr inbounds i64, ptr %427, i64 %428
  %430 = load i64, ptr %429, align 8, !tbaa !9
  store i64 %430, ptr %36, align 8, !tbaa !9
  %431 = load i64, ptr %34, align 8, !tbaa !9
  %432 = load ptr, ptr %29, align 8, !tbaa !5
  %433 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %432, i32 0, i32 3
  %434 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %433, i32 0, i32 3
  %435 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %434, i32 0, i32 4
  %436 = load ptr, ptr %435, align 8, !tbaa !27
  %437 = load i64, ptr %34, align 8, !tbaa !9
  %438 = getelementptr inbounds i64, ptr %436, i64 %437
  %439 = load i64, ptr %438, align 8, !tbaa !9
  %440 = sub nsw i64 %431, %439
  store i64 %440, ptr %35, align 8, !tbaa !9
  br label %441

441:                                              ; preds = %534, %422
  %442 = load i64, ptr %35, align 8, !tbaa !9
  %443 = load i64, ptr %34, align 8, !tbaa !9
  %444 = icmp sle i64 %442, %443
  br i1 %444, label %445, label %537

445:                                              ; preds = %441
  %446 = load ptr, ptr %25, align 8, !tbaa !5
  %447 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %446, i32 0, i32 4
  %448 = load ptr, ptr %447, align 8, !tbaa !27
  %449 = load i64, ptr %34, align 8, !tbaa !9
  %450 = getelementptr inbounds double, ptr %448, i64 %449
  %451 = load double, ptr %450, align 8, !tbaa !28
  %452 = load ptr, ptr %29, align 8, !tbaa !5
  %453 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %452, i32 0, i32 3
  %454 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %453, i32 0, i32 0
  %455 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %454, i32 0, i32 4
  %456 = load ptr, ptr %455, align 8, !tbaa !27
  %457 = load i64, ptr %36, align 8, !tbaa !9
  %458 = getelementptr inbounds double, ptr %456, i64 %457
  %459 = load double, ptr %458, align 8, !tbaa !28
  %460 = fmul double %451, %459
  %461 = load ptr, ptr %25, align 8, !tbaa !5
  %462 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %461, i32 0, i32 4
  %463 = load ptr, ptr %462, align 8, !tbaa !27
  %464 = load i64, ptr %35, align 8, !tbaa !9
  %465 = getelementptr inbounds double, ptr %463, i64 %464
  %466 = load double, ptr %465, align 8, !tbaa !28
  %467 = fmul double %460, %466
  store double %467, ptr %37, align 8, !tbaa !28
  %468 = load double, ptr %37, align 8, !tbaa !28
  %469 = load ptr, ptr %32, align 8, !tbaa !5
  %470 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %468, ptr noundef %469)
  store double %470, ptr %38, align 8, !tbaa !28
  %471 = load double, ptr %37, align 8, !tbaa !28
  %472 = load ptr, ptr %29, align 8, !tbaa !5
  %473 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %472, i32 0, i32 3
  %474 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %473, i32 0, i32 0
  %475 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %474, i32 0, i32 4
  %476 = load ptr, ptr %475, align 8, !tbaa !27
  %477 = load i64, ptr %36, align 8, !tbaa !9
  %478 = getelementptr inbounds double, ptr %476, i64 %477
  store double %471, ptr %478, align 8, !tbaa !28
  %479 = load i64, ptr %34, align 8, !tbaa !9
  %480 = load i64, ptr %35, align 8, !tbaa !9
  %481 = icmp eq i64 %479, %480
  br i1 %481, label %482, label %506

482:                                              ; preds = %445
  %483 = load ptr, ptr %29, align 8, !tbaa !5
  %484 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %483, i32 0, i32 5
  %485 = load double, ptr %484, align 8, !tbaa !39
  %486 = load double, ptr %38, align 8, !tbaa !28
  %487 = load ptr, ptr %32, align 8, !tbaa !5
  %488 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %485, double noundef %486, ptr noundef %487)
  %489 = load ptr, ptr %29, align 8, !tbaa !5
  %490 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %489, i32 0, i32 5
  store double %488, ptr %490, align 8, !tbaa !39
  %491 = load ptr, ptr %29, align 8, !tbaa !5
  %492 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %491, i32 0, i32 6
  %493 = load double, ptr %492, align 8, !tbaa !40
  %494 = load double, ptr %38, align 8, !tbaa !28
  %495 = fadd double %493, %494
  %496 = load ptr, ptr %29, align 8, !tbaa !5
  %497 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %496, i32 0, i32 6
  store double %495, ptr %497, align 8, !tbaa !40
  %498 = load ptr, ptr %29, align 8, !tbaa !5
  %499 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %498, i32 0, i32 7
  %500 = load double, ptr %499, align 8, !tbaa !41
  %501 = load double, ptr %38, align 8, !tbaa !28
  %502 = load double, ptr %38, align 8, !tbaa !28
  %503 = call double @llvm.fmuladd.f64(double %501, double %502, double %500)
  %504 = load ptr, ptr %29, align 8, !tbaa !5
  %505 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %504, i32 0, i32 7
  store double %503, ptr %505, align 8, !tbaa !41
  br label %531

506:                                              ; preds = %445
  %507 = load ptr, ptr %29, align 8, !tbaa !5
  %508 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %507, i32 0, i32 5
  %509 = load double, ptr %508, align 8, !tbaa !39
  %510 = load double, ptr %38, align 8, !tbaa !28
  %511 = load ptr, ptr %32, align 8, !tbaa !5
  %512 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %509, double noundef %510, ptr noundef %511)
  %513 = load ptr, ptr %29, align 8, !tbaa !5
  %514 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %513, i32 0, i32 5
  store double %512, ptr %514, align 8, !tbaa !39
  %515 = load ptr, ptr %29, align 8, !tbaa !5
  %516 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %515, i32 0, i32 6
  %517 = load double, ptr %516, align 8, !tbaa !40
  %518 = load double, ptr %38, align 8, !tbaa !28
  %519 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %518, double %517)
  %520 = load ptr, ptr %29, align 8, !tbaa !5
  %521 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %520, i32 0, i32 6
  store double %519, ptr %521, align 8, !tbaa !40
  %522 = load ptr, ptr %29, align 8, !tbaa !5
  %523 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %522, i32 0, i32 7
  %524 = load double, ptr %523, align 8, !tbaa !41
  %525 = load double, ptr %38, align 8, !tbaa !28
  %526 = fmul double 2.000000e+00, %525
  %527 = load double, ptr %38, align 8, !tbaa !28
  %528 = call double @llvm.fmuladd.f64(double %526, double %527, double %524)
  %529 = load ptr, ptr %29, align 8, !tbaa !5
  %530 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %529, i32 0, i32 7
  store double %528, ptr %530, align 8, !tbaa !41
  br label %531

531:                                              ; preds = %506, %482
  %532 = load i64, ptr %36, align 8, !tbaa !9
  %533 = add nsw i64 %532, 1
  store i64 %533, ptr %36, align 8, !tbaa !9
  br label %534

534:                                              ; preds = %531
  %535 = load i64, ptr %35, align 8, !tbaa !9
  %536 = add nsw i64 %535, 1
  store i64 %536, ptr %35, align 8, !tbaa !9
  br label %441, !llvm.loop !45

537:                                              ; preds = %441
  br label %538

538:                                              ; preds = %537
  %539 = load i64, ptr %34, align 8, !tbaa !9
  %540 = add nsw i64 %539, 1
  store i64 %540, ptr %34, align 8, !tbaa !9
  br label %417, !llvm.loop !46

541:                                              ; preds = %417
  br label %542

542:                                              ; preds = %541, %392
  %543 = load i64, ptr %20, align 8, !tbaa !9
  %544 = icmp eq i64 %543, 2
  br i1 %544, label %545, label %766

545:                                              ; preds = %542
  %546 = load ptr, ptr %29, align 8, !tbaa !5
  %547 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %546, i32 0, i32 2
  %548 = load i64, ptr %33, align 8, !tbaa !9
  %549 = load i64, ptr %33, align 8, !tbaa !9
  %550 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %547, i64 noundef %548, i64 noundef %549, ptr noundef %550)
  %551 = load ptr, ptr %29, align 8, !tbaa !5
  %552 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %551, i32 0, i32 1
  store i64 0, ptr %552, align 8, !tbaa !38
  %553 = load ptr, ptr %29, align 8, !tbaa !5
  %554 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %553, i32 0, i32 5
  store double 0.000000e+00, ptr %554, align 8, !tbaa !39
  %555 = load ptr, ptr %29, align 8, !tbaa !5
  %556 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %555, i32 0, i32 6
  store double 0.000000e+00, ptr %556, align 8, !tbaa !40
  %557 = load ptr, ptr %29, align 8, !tbaa !5
  %558 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %557, i32 0, i32 7
  store double 0.000000e+00, ptr %558, align 8, !tbaa !41
  %559 = load i8, ptr %21, align 1, !tbaa !11, !range !34, !noundef !35
  %560 = trunc i8 %559 to i1
  br i1 %560, label %561, label %664

561:                                              ; preds = %545
  store i64 0, ptr %34, align 8, !tbaa !9
  br label %562

562:                                              ; preds = %660, %561
  %563 = load i64, ptr %34, align 8, !tbaa !9
  %564 = load i64, ptr %33, align 8, !tbaa !9
  %565 = sub nsw i64 %564, 1
  %566 = icmp sle i64 %563, %565
  br i1 %566, label %567, label %663

567:                                              ; preds = %562
  %568 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %568, ptr %35, align 8, !tbaa !9
  br label %569

569:                                              ; preds = %656, %567
  %570 = load i64, ptr %35, align 8, !tbaa !9
  %571 = load i64, ptr %33, align 8, !tbaa !9
  %572 = sub nsw i64 %571, 1
  %573 = icmp sle i64 %570, %572
  br i1 %573, label %574, label %659

574:                                              ; preds = %569
  %575 = load ptr, ptr %25, align 8, !tbaa !5
  %576 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %575, i32 0, i32 4
  %577 = load ptr, ptr %576, align 8, !tbaa !27
  %578 = load i64, ptr %34, align 8, !tbaa !9
  %579 = getelementptr inbounds double, ptr %577, i64 %578
  %580 = load double, ptr %579, align 8, !tbaa !28
  %581 = load ptr, ptr %19, align 8, !tbaa !5
  %582 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %581, i32 0, i32 6
  %583 = load ptr, ptr %582, align 8, !tbaa !27
  %584 = load i64, ptr %34, align 8, !tbaa !9
  %585 = getelementptr inbounds ptr, ptr %583, i64 %584
  %586 = load ptr, ptr %585, align 8, !tbaa !5
  %587 = load i64, ptr %35, align 8, !tbaa !9
  %588 = getelementptr inbounds double, ptr %586, i64 %587
  %589 = load double, ptr %588, align 8, !tbaa !28
  %590 = fmul double %580, %589
  %591 = load ptr, ptr %25, align 8, !tbaa !5
  %592 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %591, i32 0, i32 4
  %593 = load ptr, ptr %592, align 8, !tbaa !27
  %594 = load i64, ptr %35, align 8, !tbaa !9
  %595 = getelementptr inbounds double, ptr %593, i64 %594
  %596 = load double, ptr %595, align 8, !tbaa !28
  %597 = fmul double %590, %596
  store double %597, ptr %37, align 8, !tbaa !28
  %598 = load double, ptr %37, align 8, !tbaa !28
  %599 = load ptr, ptr %32, align 8, !tbaa !5
  %600 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %598, ptr noundef %599)
  store double %600, ptr %38, align 8, !tbaa !28
  %601 = load double, ptr %37, align 8, !tbaa !28
  %602 = load ptr, ptr %29, align 8, !tbaa !5
  %603 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %602, i32 0, i32 2
  %604 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %603, i32 0, i32 6
  %605 = load ptr, ptr %604, align 8, !tbaa !27
  %606 = load i64, ptr %34, align 8, !tbaa !9
  %607 = getelementptr inbounds ptr, ptr %605, i64 %606
  %608 = load ptr, ptr %607, align 8, !tbaa !5
  %609 = load i64, ptr %35, align 8, !tbaa !9
  %610 = getelementptr inbounds double, ptr %608, i64 %609
  store double %601, ptr %610, align 8, !tbaa !28
  %611 = load double, ptr %37, align 8, !tbaa !28
  %612 = load ptr, ptr %29, align 8, !tbaa !5
  %613 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %612, i32 0, i32 2
  %614 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %613, i32 0, i32 6
  %615 = load ptr, ptr %614, align 8, !tbaa !27
  %616 = load i64, ptr %35, align 8, !tbaa !9
  %617 = getelementptr inbounds ptr, ptr %615, i64 %616
  %618 = load ptr, ptr %617, align 8, !tbaa !5
  %619 = load i64, ptr %34, align 8, !tbaa !9
  %620 = getelementptr inbounds double, ptr %618, i64 %619
  store double %611, ptr %620, align 8, !tbaa !28
  %621 = load i64, ptr %34, align 8, !tbaa !9
  %622 = sitofp i64 %621 to double
  %623 = load double, ptr %37, align 8, !tbaa !28
  %624 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %622, double noundef %623)
  br i1 %624, label %625, label %626

625:                                              ; preds = %574
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %627

626:                                              ; preds = %574
  store i64 2, ptr %36, align 8, !tbaa !9
  br label %627

627:                                              ; preds = %626, %625
  %628 = load ptr, ptr %29, align 8, !tbaa !5
  %629 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %628, i32 0, i32 5
  %630 = load double, ptr %629, align 8, !tbaa !39
  %631 = load double, ptr %38, align 8, !tbaa !28
  %632 = load ptr, ptr %32, align 8, !tbaa !5
  %633 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %630, double noundef %631, ptr noundef %632)
  %634 = load ptr, ptr %29, align 8, !tbaa !5
  %635 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %634, i32 0, i32 5
  store double %633, ptr %635, align 8, !tbaa !39
  %636 = load ptr, ptr %29, align 8, !tbaa !5
  %637 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %636, i32 0, i32 6
  %638 = load double, ptr %637, align 8, !tbaa !40
  %639 = load double, ptr %38, align 8, !tbaa !28
  %640 = load i64, ptr %36, align 8, !tbaa !9
  %641 = sitofp i64 %640 to double
  %642 = call double @llvm.fmuladd.f64(double %639, double %641, double %638)
  %643 = load ptr, ptr %29, align 8, !tbaa !5
  %644 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %643, i32 0, i32 6
  store double %642, ptr %644, align 8, !tbaa !40
  %645 = load ptr, ptr %29, align 8, !tbaa !5
  %646 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %645, i32 0, i32 7
  %647 = load double, ptr %646, align 8, !tbaa !41
  %648 = load double, ptr %38, align 8, !tbaa !28
  %649 = load double, ptr %38, align 8, !tbaa !28
  %650 = fmul double %648, %649
  %651 = load i64, ptr %36, align 8, !tbaa !9
  %652 = sitofp i64 %651 to double
  %653 = call double @llvm.fmuladd.f64(double %650, double %652, double %647)
  %654 = load ptr, ptr %29, align 8, !tbaa !5
  %655 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %654, i32 0, i32 7
  store double %653, ptr %655, align 8, !tbaa !41
  br label %656

656:                                              ; preds = %627
  %657 = load i64, ptr %35, align 8, !tbaa !9
  %658 = add nsw i64 %657, 1
  store i64 %658, ptr %35, align 8, !tbaa !9
  br label %569, !llvm.loop !47

659:                                              ; preds = %569
  br label %660

660:                                              ; preds = %659
  %661 = load i64, ptr %34, align 8, !tbaa !9
  %662 = add nsw i64 %661, 1
  store i64 %662, ptr %34, align 8, !tbaa !9
  br label %562, !llvm.loop !48

663:                                              ; preds = %562
  br label %765

664:                                              ; preds = %545
  store i64 0, ptr %34, align 8, !tbaa !9
  br label %665

665:                                              ; preds = %761, %664
  %666 = load i64, ptr %34, align 8, !tbaa !9
  %667 = load i64, ptr %33, align 8, !tbaa !9
  %668 = sub nsw i64 %667, 1
  %669 = icmp sle i64 %666, %668
  br i1 %669, label %670, label %764

670:                                              ; preds = %665
  store i64 0, ptr %35, align 8, !tbaa !9
  br label %671

671:                                              ; preds = %757, %670
  %672 = load i64, ptr %35, align 8, !tbaa !9
  %673 = load i64, ptr %34, align 8, !tbaa !9
  %674 = icmp sle i64 %672, %673
  br i1 %674, label %675, label %760

675:                                              ; preds = %671
  %676 = load ptr, ptr %25, align 8, !tbaa !5
  %677 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %676, i32 0, i32 4
  %678 = load ptr, ptr %677, align 8, !tbaa !27
  %679 = load i64, ptr %34, align 8, !tbaa !9
  %680 = getelementptr inbounds double, ptr %678, i64 %679
  %681 = load double, ptr %680, align 8, !tbaa !28
  %682 = load ptr, ptr %19, align 8, !tbaa !5
  %683 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %682, i32 0, i32 6
  %684 = load ptr, ptr %683, align 8, !tbaa !27
  %685 = load i64, ptr %34, align 8, !tbaa !9
  %686 = getelementptr inbounds ptr, ptr %684, i64 %685
  %687 = load ptr, ptr %686, align 8, !tbaa !5
  %688 = load i64, ptr %35, align 8, !tbaa !9
  %689 = getelementptr inbounds double, ptr %687, i64 %688
  %690 = load double, ptr %689, align 8, !tbaa !28
  %691 = fmul double %681, %690
  %692 = load ptr, ptr %25, align 8, !tbaa !5
  %693 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %692, i32 0, i32 4
  %694 = load ptr, ptr %693, align 8, !tbaa !27
  %695 = load i64, ptr %35, align 8, !tbaa !9
  %696 = getelementptr inbounds double, ptr %694, i64 %695
  %697 = load double, ptr %696, align 8, !tbaa !28
  %698 = fmul double %691, %697
  store double %698, ptr %37, align 8, !tbaa !28
  %699 = load double, ptr %37, align 8, !tbaa !28
  %700 = load ptr, ptr %32, align 8, !tbaa !5
  %701 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %699, ptr noundef %700)
  store double %701, ptr %38, align 8, !tbaa !28
  %702 = load double, ptr %37, align 8, !tbaa !28
  %703 = load ptr, ptr %29, align 8, !tbaa !5
  %704 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %703, i32 0, i32 2
  %705 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %704, i32 0, i32 6
  %706 = load ptr, ptr %705, align 8, !tbaa !27
  %707 = load i64, ptr %34, align 8, !tbaa !9
  %708 = getelementptr inbounds ptr, ptr %706, i64 %707
  %709 = load ptr, ptr %708, align 8, !tbaa !5
  %710 = load i64, ptr %35, align 8, !tbaa !9
  %711 = getelementptr inbounds double, ptr %709, i64 %710
  store double %702, ptr %711, align 8, !tbaa !28
  %712 = load double, ptr %37, align 8, !tbaa !28
  %713 = load ptr, ptr %29, align 8, !tbaa !5
  %714 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %713, i32 0, i32 2
  %715 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %714, i32 0, i32 6
  %716 = load ptr, ptr %715, align 8, !tbaa !27
  %717 = load i64, ptr %35, align 8, !tbaa !9
  %718 = getelementptr inbounds ptr, ptr %716, i64 %717
  %719 = load ptr, ptr %718, align 8, !tbaa !5
  %720 = load i64, ptr %34, align 8, !tbaa !9
  %721 = getelementptr inbounds double, ptr %719, i64 %720
  store double %712, ptr %721, align 8, !tbaa !28
  %722 = load i64, ptr %34, align 8, !tbaa !9
  %723 = sitofp i64 %722 to double
  %724 = load double, ptr %37, align 8, !tbaa !28
  %725 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %723, double noundef %724)
  br i1 %725, label %726, label %727

726:                                              ; preds = %675
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %728

727:                                              ; preds = %675
  store i64 2, ptr %36, align 8, !tbaa !9
  br label %728

728:                                              ; preds = %727, %726
  %729 = load ptr, ptr %29, align 8, !tbaa !5
  %730 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %729, i32 0, i32 5
  %731 = load double, ptr %730, align 8, !tbaa !39
  %732 = load double, ptr %38, align 8, !tbaa !28
  %733 = load ptr, ptr %32, align 8, !tbaa !5
  %734 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %731, double noundef %732, ptr noundef %733)
  %735 = load ptr, ptr %29, align 8, !tbaa !5
  %736 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %735, i32 0, i32 5
  store double %734, ptr %736, align 8, !tbaa !39
  %737 = load ptr, ptr %29, align 8, !tbaa !5
  %738 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %737, i32 0, i32 6
  %739 = load double, ptr %738, align 8, !tbaa !40
  %740 = load double, ptr %38, align 8, !tbaa !28
  %741 = load i64, ptr %36, align 8, !tbaa !9
  %742 = sitofp i64 %741 to double
  %743 = call double @llvm.fmuladd.f64(double %740, double %742, double %739)
  %744 = load ptr, ptr %29, align 8, !tbaa !5
  %745 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %744, i32 0, i32 6
  store double %743, ptr %745, align 8, !tbaa !40
  %746 = load ptr, ptr %29, align 8, !tbaa !5
  %747 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %746, i32 0, i32 7
  %748 = load double, ptr %747, align 8, !tbaa !41
  %749 = load double, ptr %38, align 8, !tbaa !28
  %750 = load double, ptr %38, align 8, !tbaa !28
  %751 = fmul double %749, %750
  %752 = load i64, ptr %36, align 8, !tbaa !9
  %753 = sitofp i64 %752 to double
  %754 = call double @llvm.fmuladd.f64(double %751, double %753, double %748)
  %755 = load ptr, ptr %29, align 8, !tbaa !5
  %756 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %755, i32 0, i32 7
  store double %754, ptr %756, align 8, !tbaa !41
  br label %757

757:                                              ; preds = %728
  %758 = load i64, ptr %35, align 8, !tbaa !9
  %759 = add nsw i64 %758, 1
  store i64 %759, ptr %35, align 8, !tbaa !9
  br label %671, !llvm.loop !49

760:                                              ; preds = %671
  br label %761

761:                                              ; preds = %760
  %762 = load i64, ptr %34, align 8, !tbaa !9
  %763 = add nsw i64 %762, 1
  store i64 %763, ptr %34, align 8, !tbaa !9
  br label %665, !llvm.loop !50

764:                                              ; preds = %665
  br label %765

765:                                              ; preds = %764, %663
  br label %766

766:                                              ; preds = %765, %542
  %767 = load ptr, ptr %29, align 8, !tbaa !5
  %768 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %767, i32 0, i32 1
  %769 = load i64, ptr %768, align 8, !tbaa !38
  %770 = icmp sge i64 %769, 0
  %771 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %770, ptr noundef @.str.204, ptr noundef %771)
  store i64 0, ptr %34, align 8, !tbaa !9
  br label %772

772:                                              ; preds = %918, %766
  %773 = load i64, ptr %34, align 8, !tbaa !9
  %774 = load i64, ptr %33, align 8, !tbaa !9
  %775 = sub nsw i64 %774, 1
  %776 = icmp sle i64 %773, %775
  br i1 %776, label %777, label %921

777:                                              ; preds = %772
  %778 = load ptr, ptr %23, align 8, !tbaa !5
  %779 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %778, i32 0, i32 4
  %780 = load ptr, ptr %779, align 8, !tbaa !27
  %781 = load i64, ptr %34, align 8, !tbaa !9
  %782 = getelementptr inbounds double, ptr %780, i64 %781
  %783 = load double, ptr %782, align 8, !tbaa !28
  %784 = load ptr, ptr %32, align 8, !tbaa !5
  %785 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %783, ptr noundef %784)
  %786 = load ptr, ptr %29, align 8, !tbaa !5
  %787 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %786, i32 0, i32 11
  %788 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %787, i32 0, i32 4
  %789 = load ptr, ptr %788, align 8, !tbaa !27
  %790 = load i64, ptr %34, align 8, !tbaa !9
  %791 = getelementptr inbounds i8, ptr %789, i64 %790
  %792 = zext i1 %785 to i8
  store i8 %792, ptr %791, align 1, !tbaa !11
  %793 = load ptr, ptr %29, align 8, !tbaa !5
  %794 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %793, i32 0, i32 11
  %795 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %794, i32 0, i32 4
  %796 = load ptr, ptr %795, align 8, !tbaa !27
  %797 = load i64, ptr %34, align 8, !tbaa !9
  %798 = getelementptr inbounds i8, ptr %796, i64 %797
  %799 = load i8, ptr %798, align 1, !tbaa !11, !range !34, !noundef !35
  %800 = trunc i8 %799 to i1
  br i1 %800, label %801, label %828

801:                                              ; preds = %777
  %802 = load ptr, ptr %23, align 8, !tbaa !5
  %803 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %802, i32 0, i32 4
  %804 = load ptr, ptr %803, align 8, !tbaa !27
  %805 = load i64, ptr %34, align 8, !tbaa !9
  %806 = getelementptr inbounds double, ptr %804, i64 %805
  %807 = load double, ptr %806, align 8, !tbaa !28
  %808 = load ptr, ptr %26, align 8, !tbaa !5
  %809 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %808, i32 0, i32 4
  %810 = load ptr, ptr %809, align 8, !tbaa !27
  %811 = load i64, ptr %34, align 8, !tbaa !9
  %812 = getelementptr inbounds double, ptr %810, i64 %811
  %813 = load double, ptr %812, align 8, !tbaa !28
  %814 = fsub double %807, %813
  %815 = load ptr, ptr %25, align 8, !tbaa !5
  %816 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %815, i32 0, i32 4
  %817 = load ptr, ptr %816, align 8, !tbaa !27
  %818 = load i64, ptr %34, align 8, !tbaa !9
  %819 = getelementptr inbounds double, ptr %817, i64 %818
  %820 = load double, ptr %819, align 8, !tbaa !28
  %821 = fdiv double %814, %820
  %822 = load ptr, ptr %29, align 8, !tbaa !5
  %823 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %822, i32 0, i32 9
  %824 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %823, i32 0, i32 4
  %825 = load ptr, ptr %824, align 8, !tbaa !27
  %826 = load i64, ptr %34, align 8, !tbaa !9
  %827 = getelementptr inbounds double, ptr %825, i64 %826
  store double %821, ptr %827, align 8, !tbaa !28
  br label %847

828:                                              ; preds = %777
  %829 = load ptr, ptr %23, align 8, !tbaa !5
  %830 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %829, i32 0, i32 4
  %831 = load ptr, ptr %830, align 8, !tbaa !27
  %832 = load i64, ptr %34, align 8, !tbaa !9
  %833 = getelementptr inbounds double, ptr %831, i64 %832
  %834 = load double, ptr %833, align 8, !tbaa !28
  %835 = load ptr, ptr %32, align 8, !tbaa !5
  %836 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %834, ptr noundef %835)
  %837 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %836, ptr noundef @.str.205, ptr noundef %837)
  %838 = load ptr, ptr %32, align 8, !tbaa !5
  %839 = getelementptr inbounds %"struct.alglib_impl::ae_state", ptr %838, i32 0, i32 3
  %840 = load double, ptr %839, align 8, !tbaa !51
  %841 = load ptr, ptr %29, align 8, !tbaa !5
  %842 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %841, i32 0, i32 9
  %843 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %842, i32 0, i32 4
  %844 = load ptr, ptr %843, align 8, !tbaa !27
  %845 = load i64, ptr %34, align 8, !tbaa !9
  %846 = getelementptr inbounds double, ptr %844, i64 %845
  store double %840, ptr %846, align 8, !tbaa !28
  br label %847

847:                                              ; preds = %828, %801
  %848 = load ptr, ptr %24, align 8, !tbaa !5
  %849 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %848, i32 0, i32 4
  %850 = load ptr, ptr %849, align 8, !tbaa !27
  %851 = load i64, ptr %34, align 8, !tbaa !9
  %852 = getelementptr inbounds double, ptr %850, i64 %851
  %853 = load double, ptr %852, align 8, !tbaa !28
  %854 = load ptr, ptr %32, align 8, !tbaa !5
  %855 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %853, ptr noundef %854)
  %856 = load ptr, ptr %29, align 8, !tbaa !5
  %857 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %856, i32 0, i32 12
  %858 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %857, i32 0, i32 4
  %859 = load ptr, ptr %858, align 8, !tbaa !27
  %860 = load i64, ptr %34, align 8, !tbaa !9
  %861 = getelementptr inbounds i8, ptr %859, i64 %860
  %862 = zext i1 %855 to i8
  store i8 %862, ptr %861, align 1, !tbaa !11
  %863 = load ptr, ptr %29, align 8, !tbaa !5
  %864 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %863, i32 0, i32 12
  %865 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %864, i32 0, i32 4
  %866 = load ptr, ptr %865, align 8, !tbaa !27
  %867 = load i64, ptr %34, align 8, !tbaa !9
  %868 = getelementptr inbounds i8, ptr %866, i64 %867
  %869 = load i8, ptr %868, align 1, !tbaa !11, !range !34, !noundef !35
  %870 = trunc i8 %869 to i1
  br i1 %870, label %871, label %898

871:                                              ; preds = %847
  %872 = load ptr, ptr %24, align 8, !tbaa !5
  %873 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %872, i32 0, i32 4
  %874 = load ptr, ptr %873, align 8, !tbaa !27
  %875 = load i64, ptr %34, align 8, !tbaa !9
  %876 = getelementptr inbounds double, ptr %874, i64 %875
  %877 = load double, ptr %876, align 8, !tbaa !28
  %878 = load ptr, ptr %26, align 8, !tbaa !5
  %879 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %878, i32 0, i32 4
  %880 = load ptr, ptr %879, align 8, !tbaa !27
  %881 = load i64, ptr %34, align 8, !tbaa !9
  %882 = getelementptr inbounds double, ptr %880, i64 %881
  %883 = load double, ptr %882, align 8, !tbaa !28
  %884 = fsub double %877, %883
  %885 = load ptr, ptr %25, align 8, !tbaa !5
  %886 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %885, i32 0, i32 4
  %887 = load ptr, ptr %886, align 8, !tbaa !27
  %888 = load i64, ptr %34, align 8, !tbaa !9
  %889 = getelementptr inbounds double, ptr %887, i64 %888
  %890 = load double, ptr %889, align 8, !tbaa !28
  %891 = fdiv double %884, %890
  %892 = load ptr, ptr %29, align 8, !tbaa !5
  %893 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %892, i32 0, i32 10
  %894 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %893, i32 0, i32 4
  %895 = load ptr, ptr %894, align 8, !tbaa !27
  %896 = load i64, ptr %34, align 8, !tbaa !9
  %897 = getelementptr inbounds double, ptr %895, i64 %896
  store double %891, ptr %897, align 8, !tbaa !28
  br label %917

898:                                              ; preds = %847
  %899 = load ptr, ptr %24, align 8, !tbaa !5
  %900 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %899, i32 0, i32 4
  %901 = load ptr, ptr %900, align 8, !tbaa !27
  %902 = load i64, ptr %34, align 8, !tbaa !9
  %903 = getelementptr inbounds double, ptr %901, i64 %902
  %904 = load double, ptr %903, align 8, !tbaa !28
  %905 = load ptr, ptr %32, align 8, !tbaa !5
  %906 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %904, ptr noundef %905)
  %907 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %906, ptr noundef @.str.206, ptr noundef %907)
  %908 = load ptr, ptr %32, align 8, !tbaa !5
  %909 = getelementptr inbounds %"struct.alglib_impl::ae_state", ptr %908, i32 0, i32 2
  %910 = load double, ptr %909, align 8, !tbaa !55
  %911 = load ptr, ptr %29, align 8, !tbaa !5
  %912 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %911, i32 0, i32 10
  %913 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %912, i32 0, i32 4
  %914 = load ptr, ptr %913, align 8, !tbaa !27
  %915 = load i64, ptr %34, align 8, !tbaa !9
  %916 = getelementptr inbounds double, ptr %914, i64 %915
  store double %910, ptr %916, align 8, !tbaa !28
  br label %917

917:                                              ; preds = %898, %871
  br label %918

918:                                              ; preds = %917
  %919 = load i64, ptr %34, align 8, !tbaa !9
  %920 = add nsw i64 %919, 1
  store i64 %920, ptr %34, align 8, !tbaa !9
  br label %772, !llvm.loop !56

921:                                              ; preds = %772
  store i64 0, ptr %34, align 8, !tbaa !9
  br label %922

922:                                              ; preds = %1106, %921
  %923 = load i64, ptr %34, align 8, !tbaa !9
  %924 = load i64, ptr %33, align 8, !tbaa !9
  %925 = sub nsw i64 %924, 1
  %926 = icmp sle i64 %923, %925
  br i1 %926, label %927, label %1109

927:                                              ; preds = %922
  %928 = load ptr, ptr %30, align 8, !tbaa !5
  %929 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %928, i32 0, i32 4
  %930 = load ptr, ptr %929, align 8, !tbaa !27
  %931 = load i64, ptr %34, align 8, !tbaa !9
  %932 = getelementptr inbounds double, ptr %930, i64 %931
  %933 = load double, ptr %932, align 8, !tbaa !28
  %934 = load ptr, ptr %26, align 8, !tbaa !5
  %935 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %934, i32 0, i32 4
  %936 = load ptr, ptr %935, align 8, !tbaa !27
  %937 = load i64, ptr %34, align 8, !tbaa !9
  %938 = getelementptr inbounds double, ptr %936, i64 %937
  %939 = load double, ptr %938, align 8, !tbaa !28
  %940 = fsub double %933, %939
  %941 = load ptr, ptr %25, align 8, !tbaa !5
  %942 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %941, i32 0, i32 4
  %943 = load ptr, ptr %942, align 8, !tbaa !27
  %944 = load i64, ptr %34, align 8, !tbaa !9
  %945 = getelementptr inbounds double, ptr %943, i64 %944
  %946 = load double, ptr %945, align 8, !tbaa !28
  %947 = fdiv double %940, %946
  %948 = load ptr, ptr %29, align 8, !tbaa !5
  %949 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %948, i32 0, i32 13
  %950 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %949, i32 0, i32 4
  %951 = load ptr, ptr %950, align 8, !tbaa !27
  %952 = load i64, ptr %34, align 8, !tbaa !9
  %953 = getelementptr inbounds double, ptr %951, i64 %952
  store double %947, ptr %953, align 8, !tbaa !28
  %954 = load ptr, ptr %29, align 8, !tbaa !5
  %955 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %954, i32 0, i32 11
  %956 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %955, i32 0, i32 4
  %957 = load ptr, ptr %956, align 8, !tbaa !27
  %958 = load i64, ptr %34, align 8, !tbaa !9
  %959 = getelementptr inbounds i8, ptr %957, i64 %958
  %960 = load i8, ptr %959, align 1, !tbaa !11, !range !34, !noundef !35
  %961 = trunc i8 %960 to i1
  br i1 %961, label %962, label %992

962:                                              ; preds = %927
  %963 = load ptr, ptr %29, align 8, !tbaa !5
  %964 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %963, i32 0, i32 13
  %965 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %964, i32 0, i32 4
  %966 = load ptr, ptr %965, align 8, !tbaa !27
  %967 = load i64, ptr %34, align 8, !tbaa !9
  %968 = getelementptr inbounds double, ptr %966, i64 %967
  %969 = load double, ptr %968, align 8, !tbaa !28
  %970 = load ptr, ptr %29, align 8, !tbaa !5
  %971 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %970, i32 0, i32 9
  %972 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %971, i32 0, i32 4
  %973 = load ptr, ptr %972, align 8, !tbaa !27
  %974 = load i64, ptr %34, align 8, !tbaa !9
  %975 = getelementptr inbounds double, ptr %973, i64 %974
  %976 = load double, ptr %975, align 8, !tbaa !28
  %977 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %969, double noundef %976)
  br i1 %977, label %978, label %992

978:                                              ; preds = %962
  %979 = load ptr, ptr %29, align 8, !tbaa !5
  %980 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %979, i32 0, i32 9
  %981 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %980, i32 0, i32 4
  %982 = load ptr, ptr %981, align 8, !tbaa !27
  %983 = load i64, ptr %34, align 8, !tbaa !9
  %984 = getelementptr inbounds double, ptr %982, i64 %983
  %985 = load double, ptr %984, align 8, !tbaa !28
  %986 = load ptr, ptr %29, align 8, !tbaa !5
  %987 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %986, i32 0, i32 13
  %988 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %987, i32 0, i32 4
  %989 = load ptr, ptr %988, align 8, !tbaa !27
  %990 = load i64, ptr %34, align 8, !tbaa !9
  %991 = getelementptr inbounds double, ptr %989, i64 %990
  store double %985, ptr %991, align 8, !tbaa !28
  br label %992

992:                                              ; preds = %978, %962, %927
  %993 = load ptr, ptr %29, align 8, !tbaa !5
  %994 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %993, i32 0, i32 12
  %995 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %994, i32 0, i32 4
  %996 = load ptr, ptr %995, align 8, !tbaa !27
  %997 = load i64, ptr %34, align 8, !tbaa !9
  %998 = getelementptr inbounds i8, ptr %996, i64 %997
  %999 = load i8, ptr %998, align 1, !tbaa !11, !range !34, !noundef !35
  %1000 = trunc i8 %999 to i1
  br i1 %1000, label %1001, label %1031

1001:                                             ; preds = %992
  %1002 = load ptr, ptr %29, align 8, !tbaa !5
  %1003 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1002, i32 0, i32 13
  %1004 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1003, i32 0, i32 4
  %1005 = load ptr, ptr %1004, align 8, !tbaa !27
  %1006 = load i64, ptr %34, align 8, !tbaa !9
  %1007 = getelementptr inbounds double, ptr %1005, i64 %1006
  %1008 = load double, ptr %1007, align 8, !tbaa !28
  %1009 = load ptr, ptr %29, align 8, !tbaa !5
  %1010 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1009, i32 0, i32 10
  %1011 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1010, i32 0, i32 4
  %1012 = load ptr, ptr %1011, align 8, !tbaa !27
  %1013 = load i64, ptr %34, align 8, !tbaa !9
  %1014 = getelementptr inbounds double, ptr %1012, i64 %1013
  %1015 = load double, ptr %1014, align 8, !tbaa !28
  %1016 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1008, double noundef %1015)
  br i1 %1016, label %1017, label %1031

1017:                                             ; preds = %1001
  %1018 = load ptr, ptr %29, align 8, !tbaa !5
  %1019 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1018, i32 0, i32 10
  %1020 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1019, i32 0, i32 4
  %1021 = load ptr, ptr %1020, align 8, !tbaa !27
  %1022 = load i64, ptr %34, align 8, !tbaa !9
  %1023 = getelementptr inbounds double, ptr %1021, i64 %1022
  %1024 = load double, ptr %1023, align 8, !tbaa !28
  %1025 = load ptr, ptr %29, align 8, !tbaa !5
  %1026 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1025, i32 0, i32 13
  %1027 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1026, i32 0, i32 4
  %1028 = load ptr, ptr %1027, align 8, !tbaa !27
  %1029 = load i64, ptr %34, align 8, !tbaa !9
  %1030 = getelementptr inbounds double, ptr %1028, i64 %1029
  store double %1024, ptr %1030, align 8, !tbaa !28
  br label %1031

1031:                                             ; preds = %1017, %1001, %992
  %1032 = load ptr, ptr %29, align 8, !tbaa !5
  %1033 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1032, i32 0, i32 11
  %1034 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1033, i32 0, i32 4
  %1035 = load ptr, ptr %1034, align 8, !tbaa !27
  %1036 = load i64, ptr %34, align 8, !tbaa !9
  %1037 = getelementptr inbounds i8, ptr %1035, i64 %1036
  %1038 = load i8, ptr %1037, align 1, !tbaa !11, !range !34, !noundef !35
  %1039 = trunc i8 %1038 to i1
  br i1 %1039, label %1040, label %1068

1040:                                             ; preds = %1031
  %1041 = load ptr, ptr %30, align 8, !tbaa !5
  %1042 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1041, i32 0, i32 4
  %1043 = load ptr, ptr %1042, align 8, !tbaa !27
  %1044 = load i64, ptr %34, align 8, !tbaa !9
  %1045 = getelementptr inbounds double, ptr %1043, i64 %1044
  %1046 = load double, ptr %1045, align 8, !tbaa !28
  %1047 = load ptr, ptr %23, align 8, !tbaa !5
  %1048 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1047, i32 0, i32 4
  %1049 = load ptr, ptr %1048, align 8, !tbaa !27
  %1050 = load i64, ptr %34, align 8, !tbaa !9
  %1051 = getelementptr inbounds double, ptr %1049, i64 %1050
  %1052 = load double, ptr %1051, align 8, !tbaa !28
  %1053 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1046, double noundef %1052)
  br i1 %1053, label %1054, label %1068

1054:                                             ; preds = %1040
  %1055 = load ptr, ptr %29, align 8, !tbaa !5
  %1056 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1055, i32 0, i32 9
  %1057 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1056, i32 0, i32 4
  %1058 = load ptr, ptr %1057, align 8, !tbaa !27
  %1059 = load i64, ptr %34, align 8, !tbaa !9
  %1060 = getelementptr inbounds double, ptr %1058, i64 %1059
  %1061 = load double, ptr %1060, align 8, !tbaa !28
  %1062 = load ptr, ptr %29, align 8, !tbaa !5
  %1063 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1062, i32 0, i32 13
  %1064 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1063, i32 0, i32 4
  %1065 = load ptr, ptr %1064, align 8, !tbaa !27
  %1066 = load i64, ptr %34, align 8, !tbaa !9
  %1067 = getelementptr inbounds double, ptr %1065, i64 %1066
  store double %1061, ptr %1067, align 8, !tbaa !28
  br label %1068

1068:                                             ; preds = %1054, %1040, %1031
  %1069 = load ptr, ptr %29, align 8, !tbaa !5
  %1070 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1069, i32 0, i32 12
  %1071 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1070, i32 0, i32 4
  %1072 = load ptr, ptr %1071, align 8, !tbaa !27
  %1073 = load i64, ptr %34, align 8, !tbaa !9
  %1074 = getelementptr inbounds i8, ptr %1072, i64 %1073
  %1075 = load i8, ptr %1074, align 1, !tbaa !11, !range !34, !noundef !35
  %1076 = trunc i8 %1075 to i1
  br i1 %1076, label %1077, label %1105

1077:                                             ; preds = %1068
  %1078 = load ptr, ptr %30, align 8, !tbaa !5
  %1079 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1078, i32 0, i32 4
  %1080 = load ptr, ptr %1079, align 8, !tbaa !27
  %1081 = load i64, ptr %34, align 8, !tbaa !9
  %1082 = getelementptr inbounds double, ptr %1080, i64 %1081
  %1083 = load double, ptr %1082, align 8, !tbaa !28
  %1084 = load ptr, ptr %24, align 8, !tbaa !5
  %1085 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1084, i32 0, i32 4
  %1086 = load ptr, ptr %1085, align 8, !tbaa !27
  %1087 = load i64, ptr %34, align 8, !tbaa !9
  %1088 = getelementptr inbounds double, ptr %1086, i64 %1087
  %1089 = load double, ptr %1088, align 8, !tbaa !28
  %1090 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1083, double noundef %1089)
  br i1 %1090, label %1091, label %1105

1091:                                             ; preds = %1077
  %1092 = load ptr, ptr %29, align 8, !tbaa !5
  %1093 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1092, i32 0, i32 10
  %1094 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1093, i32 0, i32 4
  %1095 = load ptr, ptr %1094, align 8, !tbaa !27
  %1096 = load i64, ptr %34, align 8, !tbaa !9
  %1097 = getelementptr inbounds double, ptr %1095, i64 %1096
  %1098 = load double, ptr %1097, align 8, !tbaa !28
  %1099 = load ptr, ptr %29, align 8, !tbaa !5
  %1100 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1099, i32 0, i32 13
  %1101 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1100, i32 0, i32 4
  %1102 = load ptr, ptr %1101, align 8, !tbaa !27
  %1103 = load i64, ptr %34, align 8, !tbaa !9
  %1104 = getelementptr inbounds double, ptr %1102, i64 %1103
  store double %1098, ptr %1104, align 8, !tbaa !28
  br label %1105

1105:                                             ; preds = %1091, %1077, %1068
  br label %1106

1106:                                             ; preds = %1105
  %1107 = load i64, ptr %34, align 8, !tbaa !9
  %1108 = add nsw i64 %1107, 1
  store i64 %1108, ptr %34, align 8, !tbaa !9
  br label %922, !llvm.loop !57

1109:                                             ; preds = %922
  %1110 = load i64, ptr %20, align 8, !tbaa !9
  %1111 = icmp eq i64 %1110, 1
  br i1 %1111, label %1112, label %1134

1112:                                             ; preds = %1109
  %1113 = load ptr, ptr %28, align 8, !tbaa !5
  %1114 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %1113, i32 0, i32 9
  %1115 = load i64, ptr %1114, align 8, !tbaa !58
  store i64 %1115, ptr %54, align 8, !tbaa !9
  %1116 = load i64, ptr %54, align 8, !tbaa !9
  %1117 = icmp eq i64 %1116, 0
  br i1 %1117, label %1118, label %1119

1118:                                             ; preds = %1112
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %1119

1119:                                             ; preds = %1118, %1112
  %1120 = load ptr, ptr %29, align 8, !tbaa !5
  %1121 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1120, i32 0, i32 3
  %1122 = load ptr, ptr %32, align 8, !tbaa !5
  %1123 = call noundef zeroext i1 @_ZN11alglib_impl11sparseissksEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %1121, ptr noundef %1122)
  br i1 %1123, label %1124, label %1125

1124:                                             ; preds = %1119
  store i64 2, ptr %54, align 8, !tbaa !9
  br label %1125

1125:                                             ; preds = %1124, %1119
  store i64 2, ptr %54, align 8, !tbaa !9
  %1126 = load i64, ptr %54, align 8, !tbaa !9
  %1127 = icmp eq i64 %1126, 1
  br i1 %1127, label %1131, label %1128

1128:                                             ; preds = %1125
  %1129 = load i64, ptr %54, align 8, !tbaa !9
  %1130 = icmp eq i64 %1129, 2
  br label %1131

1131:                                             ; preds = %1128, %1125
  %1132 = phi i1 [ true, %1125 ], [ %1130, %1128 ]
  %1133 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1132, ptr noundef @.str.207, ptr noundef %1133)
  br label %1135

1134:                                             ; preds = %1109
  store i64 0, ptr %54, align 8, !tbaa !9
  br label %1135

1135:                                             ; preds = %1134, %1131
  store i8 0, ptr %59, align 1, !tbaa !11
  store i8 0, ptr %60, align 1, !tbaa !11
  store i64 0, ptr %34, align 8, !tbaa !9
  br label %1136

1136:                                             ; preds = %1165, %1135
  %1137 = load i64, ptr %34, align 8, !tbaa !9
  %1138 = load i64, ptr %33, align 8, !tbaa !9
  %1139 = sub nsw i64 %1138, 1
  %1140 = icmp sle i64 %1137, %1139
  br i1 %1140, label %1141, label %1168

1141:                                             ; preds = %1136
  %1142 = load i8, ptr %60, align 1, !tbaa !11, !range !34, !noundef !35
  %1143 = trunc i8 %1142 to i1
  br i1 %1143, label %1162, label %1144

1144:                                             ; preds = %1141
  %1145 = load ptr, ptr %29, align 8, !tbaa !5
  %1146 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1145, i32 0, i32 11
  %1147 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1146, i32 0, i32 4
  %1148 = load ptr, ptr %1147, align 8, !tbaa !27
  %1149 = load i64, ptr %34, align 8, !tbaa !9
  %1150 = getelementptr inbounds i8, ptr %1148, i64 %1149
  %1151 = load i8, ptr %1150, align 1, !tbaa !11, !range !34, !noundef !35
  %1152 = trunc i8 %1151 to i1
  br i1 %1152, label %1162, label %1153

1153:                                             ; preds = %1144
  %1154 = load ptr, ptr %29, align 8, !tbaa !5
  %1155 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1154, i32 0, i32 12
  %1156 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1155, i32 0, i32 4
  %1157 = load ptr, ptr %1156, align 8, !tbaa !27
  %1158 = load i64, ptr %34, align 8, !tbaa !9
  %1159 = getelementptr inbounds i8, ptr %1157, i64 %1158
  %1160 = load i8, ptr %1159, align 1, !tbaa !11, !range !34, !noundef !35
  %1161 = trunc i8 %1160 to i1
  br label %1162

1162:                                             ; preds = %1153, %1144, %1141
  %1163 = phi i1 [ true, %1144 ], [ true, %1141 ], [ %1161, %1153 ]
  %1164 = zext i1 %1163 to i8
  store i8 %1164, ptr %60, align 1, !tbaa !11
  br label %1165

1165:                                             ; preds = %1162
  %1166 = load i64, ptr %34, align 8, !tbaa !9
  %1167 = add nsw i64 %1166, 1
  store i64 %1167, ptr %34, align 8, !tbaa !9
  br label %1136, !llvm.loop !59

1168:                                             ; preds = %1136
  %1169 = load i8, ptr %60, align 1, !tbaa !11, !range !34, !noundef !35
  %1170 = trunc i8 %1169 to i1
  br i1 %1170, label %1374, label %1171

1171:                                             ; preds = %1168
  %1172 = load ptr, ptr %28, align 8, !tbaa !5
  %1173 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %1172, i32 0, i32 5
  %1174 = load i8, ptr %1173, align 1, !tbaa !36, !range !34, !noundef !35
  %1175 = trunc i8 %1174 to i1
  br i1 %1175, label %1176, label %1374

1176:                                             ; preds = %1171
  %1177 = load i64, ptr %20, align 8, !tbaa !9
  %1178 = icmp eq i64 %1177, 0
  br i1 %1178, label %1179, label %1374

1179:                                             ; preds = %1176
  %1180 = load ptr, ptr %29, align 8, !tbaa !5
  %1181 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1180, i32 0, i32 25
  %1182 = load i64, ptr %33, align 8, !tbaa !9
  %1183 = load i64, ptr %33, align 8, !tbaa !9
  %1184 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %1181, i64 noundef %1182, i64 noundef %1183, ptr noundef %1184)
  %1185 = load ptr, ptr %29, align 8, !tbaa !5
  %1186 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1185, i32 0, i32 30
  %1187 = load i64, ptr %33, align 8, !tbaa !9
  %1188 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1186, i64 noundef %1187, ptr noundef %1188)
  store i64 0, ptr %34, align 8, !tbaa !9
  br label %1189

1189:                                             ; preds = %1225, %1179
  %1190 = load i64, ptr %34, align 8, !tbaa !9
  %1191 = load i64, ptr %33, align 8, !tbaa !9
  %1192 = sub nsw i64 %1191, 1
  %1193 = icmp sle i64 %1190, %1192
  br i1 %1193, label %1194, label %1228

1194:                                             ; preds = %1189
  %1195 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %1195, ptr %35, align 8, !tbaa !9
  br label %1196

1196:                                             ; preds = %1221, %1194
  %1197 = load i64, ptr %35, align 8, !tbaa !9
  %1198 = load i64, ptr %33, align 8, !tbaa !9
  %1199 = sub nsw i64 %1198, 1
  %1200 = icmp sle i64 %1197, %1199
  br i1 %1200, label %1201, label %1224

1201:                                             ; preds = %1196
  %1202 = load ptr, ptr %29, align 8, !tbaa !5
  %1203 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1202, i32 0, i32 2
  %1204 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1203, i32 0, i32 6
  %1205 = load ptr, ptr %1204, align 8, !tbaa !27
  %1206 = load i64, ptr %34, align 8, !tbaa !9
  %1207 = getelementptr inbounds ptr, ptr %1205, i64 %1206
  %1208 = load ptr, ptr %1207, align 8, !tbaa !5
  %1209 = load i64, ptr %35, align 8, !tbaa !9
  %1210 = getelementptr inbounds double, ptr %1208, i64 %1209
  %1211 = load double, ptr %1210, align 8, !tbaa !28
  %1212 = load ptr, ptr %29, align 8, !tbaa !5
  %1213 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1212, i32 0, i32 25
  %1214 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1213, i32 0, i32 6
  %1215 = load ptr, ptr %1214, align 8, !tbaa !27
  %1216 = load i64, ptr %34, align 8, !tbaa !9
  %1217 = getelementptr inbounds ptr, ptr %1215, i64 %1216
  %1218 = load ptr, ptr %1217, align 8, !tbaa !5
  %1219 = load i64, ptr %35, align 8, !tbaa !9
  %1220 = getelementptr inbounds double, ptr %1218, i64 %1219
  store double %1211, ptr %1220, align 8, !tbaa !28
  br label %1221

1221:                                             ; preds = %1201
  %1222 = load i64, ptr %35, align 8, !tbaa !9
  %1223 = add nsw i64 %1222, 1
  store i64 %1223, ptr %35, align 8, !tbaa !9
  br label %1196, !llvm.loop !60

1224:                                             ; preds = %1196
  br label %1225

1225:                                             ; preds = %1224
  %1226 = load i64, ptr %34, align 8, !tbaa !9
  %1227 = add nsw i64 %1226, 1
  store i64 %1227, ptr %34, align 8, !tbaa !9
  br label %1189, !llvm.loop !61

1228:                                             ; preds = %1189
  %1229 = load ptr, ptr %29, align 8, !tbaa !5
  %1230 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1229, i32 0, i32 39
  %1231 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %1230, ptr noundef %1231)
  %1232 = load ptr, ptr %29, align 8, !tbaa !5
  %1233 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1232, i32 0, i32 25
  %1234 = load i64, ptr %33, align 8, !tbaa !9
  %1235 = load ptr, ptr %29, align 8, !tbaa !5
  %1236 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1235, i32 0, i32 30
  %1237 = load ptr, ptr %32, align 8, !tbaa !5
  %1238 = call noundef zeroext i1 @_ZN11alglib_impl20spdmatrixcholeskyrecEPNS_9ae_matrixEllbPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %1233, i64 noundef 0, i64 noundef %1234, i1 noundef zeroext true, ptr noundef %1236, ptr noundef %1237)
  br i1 %1238, label %1239, label %1373

1239:                                             ; preds = %1228
  %1240 = load ptr, ptr %29, align 8, !tbaa !5
  %1241 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1240, i32 0, i32 14
  %1242 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1241, i32 0, i32 4
  %1243 = load ptr, ptr %1242, align 8, !tbaa !27
  %1244 = getelementptr inbounds double, ptr %1243, i64 0
  %1245 = load ptr, ptr %29, align 8, !tbaa !5
  %1246 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1245, i32 0, i32 13
  %1247 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1246, i32 0, i32 4
  %1248 = load ptr, ptr %1247, align 8, !tbaa !27
  %1249 = getelementptr inbounds double, ptr %1248, i64 0
  %1250 = load i64, ptr %33, align 8, !tbaa !9
  %1251 = sub nsw i64 %1250, 1
  %1252 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1251)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1244, i64 noundef 1, ptr noundef %1249, i64 noundef 1, i64 noundef %1252)
  store i64 0, ptr %34, align 8, !tbaa !9
  br label %1253

1253:                                             ; preds = %1265, %1239
  %1254 = load i64, ptr %34, align 8, !tbaa !9
  %1255 = load i64, ptr %33, align 8, !tbaa !9
  %1256 = sub nsw i64 %1255, 1
  %1257 = icmp sle i64 %1254, %1256
  br i1 %1257, label %1258, label %1268

1258:                                             ; preds = %1253
  %1259 = load ptr, ptr %29, align 8, !tbaa !5
  %1260 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1259, i32 0, i32 17
  %1261 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1260, i32 0, i32 4
  %1262 = load ptr, ptr %1261, align 8, !tbaa !27
  %1263 = load i64, ptr %34, align 8, !tbaa !9
  %1264 = getelementptr inbounds double, ptr %1262, i64 %1263
  store double 0.000000e+00, ptr %1264, align 8, !tbaa !28
  br label %1265

1265:                                             ; preds = %1258
  %1266 = load i64, ptr %34, align 8, !tbaa !9
  %1267 = add nsw i64 %1266, 1
  store i64 %1267, ptr %34, align 8, !tbaa !9
  br label %1253, !llvm.loop !62

1268:                                             ; preds = %1253
  %1269 = load ptr, ptr %29, align 8, !tbaa !5
  %1270 = load ptr, ptr %29, align 8, !tbaa !5
  %1271 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1270, i32 0, i32 14
  %1272 = load ptr, ptr %29, align 8, !tbaa !5
  %1273 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1272, i32 0, i32 17
  %1274 = load ptr, ptr %29, align 8, !tbaa !5
  %1275 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1274, i32 0, i32 30
  %1276 = load ptr, ptr %29, align 8, !tbaa !5
  %1277 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1276, i32 0, i32 34
  %1278 = load ptr, ptr %32, align 8, !tbaa !5
  %1279 = call noundef double @_ZN11alglib_implL33qqpsolver_projectedtargetfunctionEPNS_10qqpbuffersEPNS_9ae_vectorES3_dS3_S3_PNS_8ae_stateE(ptr noundef %1269, ptr noundef %1271, ptr noundef %1273, double noundef 0.000000e+00, ptr noundef %1275, ptr noundef %1277, ptr noundef %1278)
  store double %1279, ptr %61, align 8, !tbaa !28
  store i64 0, ptr %36, align 8, !tbaa !9
  br label %1280

1280:                                             ; preds = %1368, %1268
  %1281 = load i64, ptr %36, align 8, !tbaa !9
  %1282 = icmp sle i64 %1281, 3
  br i1 %1282, label %1283, label %1371

1283:                                             ; preds = %1280
  %1284 = load i64, ptr %33, align 8, !tbaa !9
  %1285 = load i64, ptr %33, align 8, !tbaa !9
  %1286 = load ptr, ptr %29, align 8, !tbaa !5
  %1287 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1286, i32 0, i32 2
  %1288 = load ptr, ptr %29, align 8, !tbaa !5
  %1289 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1288, i32 0, i32 14
  %1290 = load ptr, ptr %29, align 8, !tbaa !5
  %1291 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1290, i32 0, i32 15
  %1292 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %1284, i64 noundef %1285, ptr noundef %1287, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %1289, i64 noundef 0, ptr noundef %1291, i64 noundef 0, ptr noundef %1292)
  %1293 = load ptr, ptr %29, align 8, !tbaa !5
  %1294 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1293, i32 0, i32 15
  %1295 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1294, i32 0, i32 4
  %1296 = load ptr, ptr %1295, align 8, !tbaa !27
  %1297 = getelementptr inbounds double, ptr %1296, i64 0
  %1298 = load ptr, ptr %29, align 8, !tbaa !5
  %1299 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1298, i32 0, i32 8
  %1300 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1299, i32 0, i32 4
  %1301 = load ptr, ptr %1300, align 8, !tbaa !27
  %1302 = getelementptr inbounds double, ptr %1301, i64 0
  %1303 = load i64, ptr %33, align 8, !tbaa !9
  %1304 = sub nsw i64 %1303, 1
  %1305 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1304)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %1297, i64 noundef 1, ptr noundef %1302, i64 noundef 1, i64 noundef %1305)
  store i64 0, ptr %34, align 8, !tbaa !9
  br label %1306

1306:                                             ; preds = %1326, %1283
  %1307 = load i64, ptr %34, align 8, !tbaa !9
  %1308 = load i64, ptr %33, align 8, !tbaa !9
  %1309 = sub nsw i64 %1308, 1
  %1310 = icmp sle i64 %1307, %1309
  br i1 %1310, label %1311, label %1329

1311:                                             ; preds = %1306
  %1312 = load ptr, ptr %29, align 8, !tbaa !5
  %1313 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1312, i32 0, i32 15
  %1314 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1313, i32 0, i32 4
  %1315 = load ptr, ptr %1314, align 8, !tbaa !27
  %1316 = load i64, ptr %34, align 8, !tbaa !9
  %1317 = getelementptr inbounds double, ptr %1315, i64 %1316
  %1318 = load double, ptr %1317, align 8, !tbaa !28
  %1319 = fneg double %1318
  %1320 = load ptr, ptr %29, align 8, !tbaa !5
  %1321 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1320, i32 0, i32 17
  %1322 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1321, i32 0, i32 4
  %1323 = load ptr, ptr %1322, align 8, !tbaa !27
  %1324 = load i64, ptr %34, align 8, !tbaa !9
  %1325 = getelementptr inbounds double, ptr %1323, i64 %1324
  store double %1319, ptr %1325, align 8, !tbaa !28
  br label %1326

1326:                                             ; preds = %1311
  %1327 = load i64, ptr %34, align 8, !tbaa !9
  %1328 = add nsw i64 %1327, 1
  store i64 %1328, ptr %34, align 8, !tbaa !9
  br label %1306, !llvm.loop !63

1329:                                             ; preds = %1306
  %1330 = load ptr, ptr %29, align 8, !tbaa !5
  %1331 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1330, i32 0, i32 25
  %1332 = load i64, ptr %33, align 8, !tbaa !9
  %1333 = load ptr, ptr %29, align 8, !tbaa !5
  %1334 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1333, i32 0, i32 17
  %1335 = load ptr, ptr %29, align 8, !tbaa !5
  %1336 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1335, i32 0, i32 30
  %1337 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl17fblscholeskysolveEPNS_9ae_matrixEdlbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %1331, double noundef 1.000000e+00, i64 noundef %1332, i1 noundef zeroext true, ptr noundef %1334, ptr noundef %1336, ptr noundef %1337)
  %1338 = load ptr, ptr %29, align 8, !tbaa !5
  %1339 = load ptr, ptr %29, align 8, !tbaa !5
  %1340 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1339, i32 0, i32 14
  %1341 = load ptr, ptr %29, align 8, !tbaa !5
  %1342 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1341, i32 0, i32 17
  %1343 = load ptr, ptr %29, align 8, !tbaa !5
  %1344 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1343, i32 0, i32 30
  %1345 = load ptr, ptr %29, align 8, !tbaa !5
  %1346 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1345, i32 0, i32 34
  %1347 = load ptr, ptr %32, align 8, !tbaa !5
  %1348 = call noundef double @_ZN11alglib_implL33qqpsolver_projectedtargetfunctionEPNS_10qqpbuffersEPNS_9ae_vectorES3_dS3_S3_PNS_8ae_stateE(ptr noundef %1338, ptr noundef %1340, ptr noundef %1342, double noundef 1.000000e+00, ptr noundef %1344, ptr noundef %1346, ptr noundef %1347)
  store double %1348, ptr %62, align 8, !tbaa !28
  %1349 = load double, ptr %62, align 8, !tbaa !28
  %1350 = load double, ptr %61, align 8, !tbaa !28
  %1351 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %1349, double noundef %1350)
  br i1 %1351, label %1352, label %1353

1352:                                             ; preds = %1329
  br label %1371

1353:                                             ; preds = %1329
  %1354 = load ptr, ptr %29, align 8, !tbaa !5
  %1355 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1354, i32 0, i32 14
  %1356 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1355, i32 0, i32 4
  %1357 = load ptr, ptr %1356, align 8, !tbaa !27
  %1358 = getelementptr inbounds double, ptr %1357, i64 0
  %1359 = load ptr, ptr %29, align 8, !tbaa !5
  %1360 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1359, i32 0, i32 17
  %1361 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1360, i32 0, i32 4
  %1362 = load ptr, ptr %1361, align 8, !tbaa !27
  %1363 = getelementptr inbounds double, ptr %1362, i64 0
  %1364 = load i64, ptr %33, align 8, !tbaa !9
  %1365 = sub nsw i64 %1364, 1
  %1366 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1365)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %1358, i64 noundef 1, ptr noundef %1363, i64 noundef 1, i64 noundef %1366)
  %1367 = load double, ptr %62, align 8, !tbaa !28
  store double %1367, ptr %61, align 8, !tbaa !28
  br label %1368

1368:                                             ; preds = %1353
  %1369 = load i64, ptr %36, align 8, !tbaa !9
  %1370 = add nsw i64 %1369, 1
  store i64 %1370, ptr %36, align 8, !tbaa !9
  br label %1280, !llvm.loop !64

1371:                                             ; preds = %1352, %1280
  %1372 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 2, ptr %1372, align 8, !tbaa !9
  store i8 1, ptr %59, align 1, !tbaa !11
  br label %1373

1373:                                             ; preds = %1371, %1228
  br label %1374

1374:                                             ; preds = %1373, %1176, %1171, %1168
  %1375 = load i8, ptr %59, align 1, !tbaa !11, !range !34, !noundef !35
  %1376 = trunc i8 %1375 to i1
  br i1 %1376, label %2268, label %1377

1377:                                             ; preds = %1374
  %1378 = load ptr, ptr %29, align 8, !tbaa !5
  %1379 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1378, i32 0, i32 21
  %1380 = load ptr, ptr %29, align 8, !tbaa !5
  %1381 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1380, i32 0, i32 9
  %1382 = load ptr, ptr %29, align 8, !tbaa !5
  %1383 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1382, i32 0, i32 10
  %1384 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl8sassetbcEPNS_10sactivesetEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %1379, ptr noundef %1381, ptr noundef %1383, ptr noundef %1384)
  %1385 = load ptr, ptr %29, align 8, !tbaa !5
  %1386 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1385, i32 0, i32 21
  %1387 = load ptr, ptr %29, align 8, !tbaa !5
  %1388 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1387, i32 0, i32 13
  %1389 = load ptr, ptr %32, align 8, !tbaa !5
  %1390 = call noundef zeroext i1 @_ZN11alglib_impl20sasstartoptimizationEPNS_10sactivesetEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %1386, ptr noundef %1388, ptr noundef %1389)
  br i1 %1390, label %1393, label %1391

1391:                                             ; preds = %1377
  %1392 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -3, ptr %1392, align 8, !tbaa !9
  store i32 1, ptr %63, align 4
  br label %2448

1393:                                             ; preds = %1377
  %1394 = load ptr, ptr %28, align 8, !tbaa !5
  %1395 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %1394, i32 0, i32 6
  %1396 = load i64, ptr %1395, align 8, !tbaa !65
  store i64 %1396, ptr %52, align 8, !tbaa !9
  %1397 = load ptr, ptr %29, align 8, !tbaa !5
  %1398 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1397, i32 0, i32 37
  store i64 0, ptr %1398, align 8, !tbaa !23
  %1399 = load ptr, ptr %29, align 8, !tbaa !5
  %1400 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1399, i32 0, i32 38
  store i64 0, ptr %1400, align 8, !tbaa !24
  br label %1401

1401:                                             ; preds = %2249, %1393
  %1402 = load ptr, ptr %28, align 8, !tbaa !5
  %1403 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %1402, i32 0, i32 3
  %1404 = load i64, ptr %1403, align 8, !tbaa !66
  %1405 = icmp sgt i64 %1404, 0
  br i1 %1405, label %1406, label %1416

1406:                                             ; preds = %1401
  %1407 = load ptr, ptr %29, align 8, !tbaa !5
  %1408 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1407, i32 0, i32 38
  %1409 = load i64, ptr %1408, align 8, !tbaa !24
  %1410 = load ptr, ptr %28, align 8, !tbaa !5
  %1411 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %1410, i32 0, i32 3
  %1412 = load i64, ptr %1411, align 8, !tbaa !66
  %1413 = icmp sge i64 %1409, %1412
  br i1 %1413, label %1414, label %1416

1414:                                             ; preds = %1406
  %1415 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 5, ptr %1415, align 8, !tbaa !9
  br label %2250

1416:                                             ; preds = %1406, %1401
  %1417 = load ptr, ptr %29, align 8, !tbaa !5
  %1418 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1417, i32 0, i32 38
  %1419 = load i64, ptr %1418, align 8, !tbaa !24
  %1420 = icmp sgt i64 %1419, 0
  br i1 %1420, label %1421, label %1518

1421:                                             ; preds = %1416
  %1422 = load ptr, ptr %28, align 8, !tbaa !5
  %1423 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %1422, i32 0, i32 1
  %1424 = load double, ptr %1423, align 8, !tbaa !67
  %1425 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1424, double noundef 0.000000e+00)
  br i1 %1425, label %1426, label %1471

1426:                                             ; preds = %1421
  %1427 = load ptr, ptr %29, align 8, !tbaa !5
  %1428 = load ptr, ptr %29, align 8, !tbaa !5
  %1429 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1428, i32 0, i32 16
  %1430 = load ptr, ptr %29, align 8, !tbaa !5
  %1431 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1430, i32 0, i32 17
  %1432 = load ptr, ptr %29, align 8, !tbaa !5
  %1433 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1432, i32 0, i32 33
  %1434 = load ptr, ptr %29, align 8, !tbaa !5
  %1435 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1434, i32 0, i32 34
  %1436 = load ptr, ptr %32, align 8, !tbaa !5
  %1437 = call noundef double @_ZN11alglib_implL33qqpsolver_projectedtargetfunctionEPNS_10qqpbuffersEPNS_9ae_vectorES3_dS3_S3_PNS_8ae_stateE(ptr noundef %1427, ptr noundef %1429, ptr noundef %1431, double noundef 0.000000e+00, ptr noundef %1433, ptr noundef %1435, ptr noundef %1436)
  store double %1437, ptr %57, align 8, !tbaa !28
  %1438 = load ptr, ptr %29, align 8, !tbaa !5
  %1439 = load ptr, ptr %29, align 8, !tbaa !5
  %1440 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1439, i32 0, i32 21
  %1441 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %1440, i32 0, i32 2
  %1442 = load ptr, ptr %29, align 8, !tbaa !5
  %1443 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1442, i32 0, i32 17
  %1444 = load ptr, ptr %29, align 8, !tbaa !5
  %1445 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1444, i32 0, i32 33
  %1446 = load ptr, ptr %29, align 8, !tbaa !5
  %1447 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1446, i32 0, i32 34
  %1448 = load ptr, ptr %32, align 8, !tbaa !5
  %1449 = call noundef double @_ZN11alglib_implL33qqpsolver_projectedtargetfunctionEPNS_10qqpbuffersEPNS_9ae_vectorES3_dS3_S3_PNS_8ae_stateE(ptr noundef %1438, ptr noundef %1441, ptr noundef %1443, double noundef 0.000000e+00, ptr noundef %1445, ptr noundef %1447, ptr noundef %1448)
  store double %1449, ptr %58, align 8, !tbaa !28
  %1450 = load double, ptr %57, align 8, !tbaa !28
  %1451 = load double, ptr %58, align 8, !tbaa !28
  %1452 = fsub double %1450, %1451
  %1453 = load ptr, ptr %28, align 8, !tbaa !5
  %1454 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %1453, i32 0, i32 1
  %1455 = load double, ptr %1454, align 8, !tbaa !67
  %1456 = load double, ptr %57, align 8, !tbaa !28
  %1457 = load ptr, ptr %32, align 8, !tbaa !5
  %1458 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1456, ptr noundef %1457)
  %1459 = load double, ptr %58, align 8, !tbaa !28
  %1460 = load ptr, ptr %32, align 8, !tbaa !5
  %1461 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1459, ptr noundef %1460)
  %1462 = load ptr, ptr %32, align 8, !tbaa !5
  %1463 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1461, double noundef 1.000000e+00, ptr noundef %1462)
  %1464 = load ptr, ptr %32, align 8, !tbaa !5
  %1465 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1458, double noundef %1463, ptr noundef %1464)
  %1466 = fmul double %1455, %1465
  %1467 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1452, double noundef %1466)
  br i1 %1467, label %1468, label %1470

1468:                                             ; preds = %1426
  %1469 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 1, ptr %1469, align 8, !tbaa !9
  br label %2250

1470:                                             ; preds = %1426
  br label %1471

1471:                                             ; preds = %1470, %1421
  %1472 = load ptr, ptr %28, align 8, !tbaa !5
  %1473 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %1472, i32 0, i32 2
  %1474 = load double, ptr %1473, align 8, !tbaa !68
  %1475 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1474, double noundef 0.000000e+00)
  br i1 %1475, label %1476, label %1517

1476:                                             ; preds = %1471
  store double 0.000000e+00, ptr %37, align 8, !tbaa !28
  store i64 0, ptr %34, align 8, !tbaa !9
  br label %1477

1477:                                             ; preds = %1503, %1476
  %1478 = load i64, ptr %34, align 8, !tbaa !9
  %1479 = load i64, ptr %33, align 8, !tbaa !9
  %1480 = sub nsw i64 %1479, 1
  %1481 = icmp sle i64 %1478, %1480
  br i1 %1481, label %1482, label %1506

1482:                                             ; preds = %1477
  %1483 = load double, ptr %37, align 8, !tbaa !28
  %1484 = load ptr, ptr %29, align 8, !tbaa !5
  %1485 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1484, i32 0, i32 16
  %1486 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1485, i32 0, i32 4
  %1487 = load ptr, ptr %1486, align 8, !tbaa !27
  %1488 = load i64, ptr %34, align 8, !tbaa !9
  %1489 = getelementptr inbounds double, ptr %1487, i64 %1488
  %1490 = load double, ptr %1489, align 8, !tbaa !28
  %1491 = load ptr, ptr %29, align 8, !tbaa !5
  %1492 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1491, i32 0, i32 21
  %1493 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %1492, i32 0, i32 2
  %1494 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1493, i32 0, i32 4
  %1495 = load ptr, ptr %1494, align 8, !tbaa !27
  %1496 = load i64, ptr %34, align 8, !tbaa !9
  %1497 = getelementptr inbounds double, ptr %1495, i64 %1496
  %1498 = load double, ptr %1497, align 8, !tbaa !28
  %1499 = fsub double %1490, %1498
  %1500 = load ptr, ptr %32, align 8, !tbaa !5
  %1501 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1499, ptr noundef %1500)
  %1502 = fadd double %1483, %1501
  store double %1502, ptr %37, align 8, !tbaa !28
  br label %1503

1503:                                             ; preds = %1482
  %1504 = load i64, ptr %34, align 8, !tbaa !9
  %1505 = add nsw i64 %1504, 1
  store i64 %1505, ptr %34, align 8, !tbaa !9
  br label %1477, !llvm.loop !69

1506:                                             ; preds = %1477
  %1507 = load double, ptr %37, align 8, !tbaa !28
  %1508 = load ptr, ptr %32, align 8, !tbaa !5
  %1509 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1507, ptr noundef %1508)
  %1510 = load ptr, ptr %28, align 8, !tbaa !5
  %1511 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %1510, i32 0, i32 2
  %1512 = load double, ptr %1511, align 8, !tbaa !68
  %1513 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1509, double noundef %1512)
  br i1 %1513, label %1514, label %1516

1514:                                             ; preds = %1506
  %1515 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 2, ptr %1515, align 8, !tbaa !9
  br label %2250

1516:                                             ; preds = %1506
  br label %1517

1517:                                             ; preds = %1516, %1471
  br label %1518

1518:                                             ; preds = %1517, %1416
  %1519 = load ptr, ptr %29, align 8, !tbaa !5
  %1520 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1519, i32 0, i32 38
  %1521 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %1520, ptr noundef %1521)
  %1522 = load ptr, ptr %29, align 8, !tbaa !5
  %1523 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1522, i32 0, i32 16
  %1524 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1523, i32 0, i32 4
  %1525 = load ptr, ptr %1524, align 8, !tbaa !27
  %1526 = getelementptr inbounds double, ptr %1525, i64 0
  %1527 = load ptr, ptr %29, align 8, !tbaa !5
  %1528 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1527, i32 0, i32 21
  %1529 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %1528, i32 0, i32 2
  %1530 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1529, i32 0, i32 4
  %1531 = load ptr, ptr %1530, align 8, !tbaa !27
  %1532 = getelementptr inbounds double, ptr %1531, i64 0
  %1533 = load i64, ptr %33, align 8, !tbaa !9
  %1534 = sub nsw i64 %1533, 1
  %1535 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1534)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1526, i64 noundef 1, ptr noundef %1532, i64 noundef 1, i64 noundef %1535)
  %1536 = load ptr, ptr %28, align 8, !tbaa !5
  %1537 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %1536, i32 0, i32 4
  %1538 = load i8, ptr %1537, align 8, !tbaa !32, !range !34, !noundef !35
  %1539 = trunc i8 %1538 to i1
  br i1 %1539, label %1541, label %1540

1540:                                             ; preds = %1518
  store i64 0, ptr %52, align 8, !tbaa !9
  br label %1541

1541:                                             ; preds = %1540, %1518
  store i64 0, ptr %34, align 8, !tbaa !9
  br label %1542

1542:                                             ; preds = %1560, %1541
  %1543 = load i64, ptr %34, align 8, !tbaa !9
  %1544 = load i64, ptr %33, align 8, !tbaa !9
  %1545 = sub nsw i64 %1544, 1
  %1546 = icmp sle i64 %1543, %1545
  br i1 %1546, label %1547, label %1563

1547:                                             ; preds = %1542
  %1548 = load ptr, ptr %29, align 8, !tbaa !5
  %1549 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1548, i32 0, i32 20
  %1550 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1549, i32 0, i32 4
  %1551 = load ptr, ptr %1550, align 8, !tbaa !27
  %1552 = load i64, ptr %34, align 8, !tbaa !9
  %1553 = getelementptr inbounds double, ptr %1551, i64 %1552
  store double 0.000000e+00, ptr %1553, align 8, !tbaa !28
  %1554 = load ptr, ptr %29, align 8, !tbaa !5
  %1555 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1554, i32 0, i32 18
  %1556 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1555, i32 0, i32 4
  %1557 = load ptr, ptr %1556, align 8, !tbaa !27
  %1558 = load i64, ptr %34, align 8, !tbaa !9
  %1559 = getelementptr inbounds double, ptr %1557, i64 %1558
  store double 0.000000e+00, ptr %1559, align 8, !tbaa !28
  br label %1560

1560:                                             ; preds = %1547
  %1561 = load i64, ptr %34, align 8, !tbaa !9
  %1562 = add nsw i64 %1561, 1
  store i64 %1562, ptr %34, align 8, !tbaa !9
  br label %1542, !llvm.loop !70

1563:                                             ; preds = %1542
  store i64 0, ptr %51, align 8, !tbaa !9
  br label %1564

1564:                                             ; preds = %1968, %1563
  %1565 = load i64, ptr %51, align 8, !tbaa !9
  %1566 = load i64, ptr %52, align 8, !tbaa !9
  %1567 = sub nsw i64 %1566, 1
  %1568 = icmp sle i64 %1565, %1567
  br i1 %1568, label %1569, label %1971

1569:                                             ; preds = %1564
  %1570 = load ptr, ptr %29, align 8, !tbaa !5
  %1571 = load ptr, ptr %29, align 8, !tbaa !5
  %1572 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1571, i32 0, i32 21
  %1573 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %1572, i32 0, i32 2
  %1574 = load ptr, ptr %29, align 8, !tbaa !5
  %1575 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1574, i32 0, i32 15
  %1576 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_implL24qqpsolver_targetgradientEPNS_10qqpbuffersEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %1570, ptr noundef %1573, ptr noundef %1575, ptr noundef %1576)
  %1577 = load ptr, ptr %29, align 8, !tbaa !5
  %1578 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1577, i32 0, i32 21
  %1579 = load ptr, ptr %29, align 8, !tbaa !5
  %1580 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1579, i32 0, i32 15
  %1581 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl24sasreactivateconstraintsEPNS_10sactivesetEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %1578, ptr noundef %1580, ptr noundef %1581)
  %1582 = load ptr, ptr %29, align 8, !tbaa !5
  %1583 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1582, i32 0, i32 19
  %1584 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1583, i32 0, i32 4
  %1585 = load ptr, ptr %1584, align 8, !tbaa !27
  %1586 = getelementptr inbounds double, ptr %1585, i64 0
  %1587 = load ptr, ptr %29, align 8, !tbaa !5
  %1588 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1587, i32 0, i32 15
  %1589 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1588, i32 0, i32 4
  %1590 = load ptr, ptr %1589, align 8, !tbaa !27
  %1591 = getelementptr inbounds double, ptr %1590, i64 0
  %1592 = load i64, ptr %33, align 8, !tbaa !9
  %1593 = sub nsw i64 %1592, 1
  %1594 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1593)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1586, i64 noundef 1, ptr noundef %1591, i64 noundef 1, i64 noundef %1594)
  %1595 = load ptr, ptr %29, align 8, !tbaa !5
  %1596 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1595, i32 0, i32 21
  %1597 = load ptr, ptr %29, align 8, !tbaa !5
  %1598 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1597, i32 0, i32 19
  %1599 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23sasconstraineddirectionEPNS_10sactivesetEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %1596, ptr noundef %1598, ptr noundef %1599)
  %1600 = load ptr, ptr %29, align 8, !tbaa !5
  %1601 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1600, i32 0, i32 19
  %1602 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1601, i32 0, i32 4
  %1603 = load ptr, ptr %1602, align 8, !tbaa !27
  %1604 = getelementptr inbounds double, ptr %1603, i64 0
  %1605 = load ptr, ptr %29, align 8, !tbaa !5
  %1606 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1605, i32 0, i32 19
  %1607 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1606, i32 0, i32 4
  %1608 = load ptr, ptr %1607, align 8, !tbaa !27
  %1609 = getelementptr inbounds double, ptr %1608, i64 0
  %1610 = load i64, ptr %33, align 8, !tbaa !9
  %1611 = sub nsw i64 %1610, 1
  %1612 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1611)
  %1613 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1604, i64 noundef 1, ptr noundef %1609, i64 noundef 1, i64 noundef %1612)
  store double %1613, ptr %37, align 8, !tbaa !28
  %1614 = load double, ptr %37, align 8, !tbaa !28
  %1615 = load ptr, ptr %32, align 8, !tbaa !5
  %1616 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %1614, ptr noundef %1615)
  %1617 = load ptr, ptr %28, align 8, !tbaa !5
  %1618 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %1617, i32 0, i32 0
  %1619 = load double, ptr %1618, align 8, !tbaa !71
  %1620 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1616, double noundef %1619)
  br i1 %1620, label %1621, label %1623

1621:                                             ; preds = %1569
  %1622 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 4, ptr %1622, align 8, !tbaa !9
  br label %1971

1623:                                             ; preds = %1569
  %1624 = load ptr, ptr %29, align 8, !tbaa !5
  %1625 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1624, i32 0, i32 17
  %1626 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1625, i32 0, i32 4
  %1627 = load ptr, ptr %1626, align 8, !tbaa !27
  %1628 = getelementptr inbounds double, ptr %1627, i64 0
  %1629 = load ptr, ptr %29, align 8, !tbaa !5
  %1630 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1629, i32 0, i32 19
  %1631 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1630, i32 0, i32 4
  %1632 = load ptr, ptr %1631, align 8, !tbaa !27
  %1633 = getelementptr inbounds double, ptr %1632, i64 0
  %1634 = load i64, ptr %33, align 8, !tbaa !9
  %1635 = sub nsw i64 %1634, 1
  %1636 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1635)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %1628, i64 noundef 1, ptr noundef %1633, i64 noundef 1, i64 noundef %1636)
  store double 0.000000e+00, ptr %37, align 8, !tbaa !28
  store double 0.000000e+00, ptr %38, align 8, !tbaa !28
  store i8 0, ptr %56, align 1, !tbaa !11
  store i64 0, ptr %34, align 8, !tbaa !9
  br label %1637

1637:                                             ; preds = %1759, %1623
  %1638 = load i64, ptr %34, align 8, !tbaa !9
  %1639 = load i64, ptr %33, align 8, !tbaa !9
  %1640 = sub nsw i64 %1639, 1
  %1641 = icmp sle i64 %1638, %1640
  br i1 %1641, label %1642, label %1762

1642:                                             ; preds = %1637
  %1643 = load double, ptr %37, align 8, !tbaa !28
  %1644 = load ptr, ptr %29, align 8, !tbaa !5
  %1645 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1644, i32 0, i32 19
  %1646 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1645, i32 0, i32 4
  %1647 = load ptr, ptr %1646, align 8, !tbaa !27
  %1648 = load i64, ptr %34, align 8, !tbaa !9
  %1649 = getelementptr inbounds double, ptr %1647, i64 %1648
  %1650 = load double, ptr %1649, align 8, !tbaa !28
  %1651 = load ptr, ptr %29, align 8, !tbaa !5
  %1652 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1651, i32 0, i32 19
  %1653 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1652, i32 0, i32 4
  %1654 = load ptr, ptr %1653, align 8, !tbaa !27
  %1655 = load i64, ptr %34, align 8, !tbaa !9
  %1656 = getelementptr inbounds double, ptr %1654, i64 %1655
  %1657 = load double, ptr %1656, align 8, !tbaa !28
  %1658 = call double @llvm.fmuladd.f64(double %1650, double %1657, double %1643)
  store double %1658, ptr %37, align 8, !tbaa !28
  %1659 = load double, ptr %38, align 8, !tbaa !28
  %1660 = load ptr, ptr %29, align 8, !tbaa !5
  %1661 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1660, i32 0, i32 20
  %1662 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1661, i32 0, i32 4
  %1663 = load ptr, ptr %1662, align 8, !tbaa !27
  %1664 = load i64, ptr %34, align 8, !tbaa !9
  %1665 = getelementptr inbounds double, ptr %1663, i64 %1664
  %1666 = load double, ptr %1665, align 8, !tbaa !28
  %1667 = load ptr, ptr %29, align 8, !tbaa !5
  %1668 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1667, i32 0, i32 20
  %1669 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1668, i32 0, i32 4
  %1670 = load ptr, ptr %1669, align 8, !tbaa !27
  %1671 = load i64, ptr %34, align 8, !tbaa !9
  %1672 = getelementptr inbounds double, ptr %1670, i64 %1671
  %1673 = load double, ptr %1672, align 8, !tbaa !28
  %1674 = call double @llvm.fmuladd.f64(double %1666, double %1673, double %1659)
  store double %1674, ptr %38, align 8, !tbaa !28
  %1675 = load i8, ptr %56, align 1, !tbaa !11, !range !34, !noundef !35
  %1676 = trunc i8 %1675 to i1
  br i1 %1676, label %1714, label %1677

1677:                                             ; preds = %1642
  %1678 = load ptr, ptr %29, align 8, !tbaa !5
  %1679 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1678, i32 0, i32 11
  %1680 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1679, i32 0, i32 4
  %1681 = load ptr, ptr %1680, align 8, !tbaa !27
  %1682 = load i64, ptr %34, align 8, !tbaa !9
  %1683 = getelementptr inbounds i8, ptr %1681, i64 %1682
  %1684 = load i8, ptr %1683, align 1, !tbaa !11, !range !34, !noundef !35
  %1685 = trunc i8 %1684 to i1
  br i1 %1685, label %1686, label %1712

1686:                                             ; preds = %1677
  %1687 = load ptr, ptr %29, align 8, !tbaa !5
  %1688 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1687, i32 0, i32 21
  %1689 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %1688, i32 0, i32 2
  %1690 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1689, i32 0, i32 4
  %1691 = load ptr, ptr %1690, align 8, !tbaa !27
  %1692 = load i64, ptr %34, align 8, !tbaa !9
  %1693 = getelementptr inbounds double, ptr %1691, i64 %1692
  %1694 = load double, ptr %1693, align 8, !tbaa !28
  %1695 = load ptr, ptr %29, align 8, !tbaa !5
  %1696 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1695, i32 0, i32 9
  %1697 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1696, i32 0, i32 4
  %1698 = load ptr, ptr %1697, align 8, !tbaa !27
  %1699 = load i64, ptr %34, align 8, !tbaa !9
  %1700 = getelementptr inbounds double, ptr %1698, i64 %1699
  %1701 = load double, ptr %1700, align 8, !tbaa !28
  %1702 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1694, double noundef %1701)
  br i1 %1702, label %1703, label %1712

1703:                                             ; preds = %1686
  %1704 = load ptr, ptr %29, align 8, !tbaa !5
  %1705 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1704, i32 0, i32 18
  %1706 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1705, i32 0, i32 4
  %1707 = load ptr, ptr %1706, align 8, !tbaa !27
  %1708 = load i64, ptr %34, align 8, !tbaa !9
  %1709 = getelementptr inbounds double, ptr %1707, i64 %1708
  %1710 = load double, ptr %1709, align 8, !tbaa !28
  %1711 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1710, double noundef 0.000000e+00)
  br label %1712

1712:                                             ; preds = %1703, %1686, %1677
  %1713 = phi i1 [ false, %1686 ], [ false, %1677 ], [ %1711, %1703 ]
  br label %1714

1714:                                             ; preds = %1712, %1642
  %1715 = phi i1 [ true, %1642 ], [ %1713, %1712 ]
  %1716 = zext i1 %1715 to i8
  store i8 %1716, ptr %56, align 1, !tbaa !11
  %1717 = load i8, ptr %56, align 1, !tbaa !11, !range !34, !noundef !35
  %1718 = trunc i8 %1717 to i1
  br i1 %1718, label %1756, label %1719

1719:                                             ; preds = %1714
  %1720 = load ptr, ptr %29, align 8, !tbaa !5
  %1721 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1720, i32 0, i32 12
  %1722 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1721, i32 0, i32 4
  %1723 = load ptr, ptr %1722, align 8, !tbaa !27
  %1724 = load i64, ptr %34, align 8, !tbaa !9
  %1725 = getelementptr inbounds i8, ptr %1723, i64 %1724
  %1726 = load i8, ptr %1725, align 1, !tbaa !11, !range !34, !noundef !35
  %1727 = trunc i8 %1726 to i1
  br i1 %1727, label %1728, label %1754

1728:                                             ; preds = %1719
  %1729 = load ptr, ptr %29, align 8, !tbaa !5
  %1730 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1729, i32 0, i32 21
  %1731 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %1730, i32 0, i32 2
  %1732 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1731, i32 0, i32 4
  %1733 = load ptr, ptr %1732, align 8, !tbaa !27
  %1734 = load i64, ptr %34, align 8, !tbaa !9
  %1735 = getelementptr inbounds double, ptr %1733, i64 %1734
  %1736 = load double, ptr %1735, align 8, !tbaa !28
  %1737 = load ptr, ptr %29, align 8, !tbaa !5
  %1738 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1737, i32 0, i32 10
  %1739 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1738, i32 0, i32 4
  %1740 = load ptr, ptr %1739, align 8, !tbaa !27
  %1741 = load i64, ptr %34, align 8, !tbaa !9
  %1742 = getelementptr inbounds double, ptr %1740, i64 %1741
  %1743 = load double, ptr %1742, align 8, !tbaa !28
  %1744 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1736, double noundef %1743)
  br i1 %1744, label %1745, label %1754

1745:                                             ; preds = %1728
  %1746 = load ptr, ptr %29, align 8, !tbaa !5
  %1747 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1746, i32 0, i32 18
  %1748 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1747, i32 0, i32 4
  %1749 = load ptr, ptr %1748, align 8, !tbaa !27
  %1750 = load i64, ptr %34, align 8, !tbaa !9
  %1751 = getelementptr inbounds double, ptr %1749, i64 %1750
  %1752 = load double, ptr %1751, align 8, !tbaa !28
  %1753 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1752, double noundef 0.000000e+00)
  br label %1754

1754:                                             ; preds = %1745, %1728, %1719
  %1755 = phi i1 [ false, %1728 ], [ false, %1719 ], [ %1753, %1745 ]
  br label %1756

1756:                                             ; preds = %1754, %1714
  %1757 = phi i1 [ true, %1714 ], [ %1755, %1754 ]
  %1758 = zext i1 %1757 to i8
  store i8 %1758, ptr %56, align 1, !tbaa !11
  br label %1759

1759:                                             ; preds = %1756
  %1760 = load i64, ptr %34, align 8, !tbaa !9
  %1761 = add nsw i64 %1760, 1
  store i64 %1761, ptr %34, align 8, !tbaa !9
  br label %1637, !llvm.loop !72

1762:                                             ; preds = %1637
  %1763 = load i8, ptr %56, align 1, !tbaa !11, !range !34, !noundef !35
  %1764 = trunc i8 %1763 to i1
  br i1 %1764, label %1768, label %1765

1765:                                             ; preds = %1762
  %1766 = load double, ptr %38, align 8, !tbaa !28
  %1767 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1766, double noundef 0.000000e+00)
  br label %1768

1768:                                             ; preds = %1765, %1762
  %1769 = phi i1 [ true, %1762 ], [ %1767, %1765 ]
  %1770 = zext i1 %1769 to i8
  store i8 %1770, ptr %56, align 1, !tbaa !11
  %1771 = load i8, ptr %56, align 1, !tbaa !11, !range !34, !noundef !35
  %1772 = trunc i8 %1771 to i1
  br i1 %1772, label %1778, label %1773

1773:                                             ; preds = %1768
  %1774 = load i64, ptr %51, align 8, !tbaa !9
  %1775 = load i64, ptr @_ZN11alglib_implL26qqpsolver_quickqprestartcgE, align 8, !tbaa !9
  %1776 = srem i64 %1774, %1775
  %1777 = icmp eq i64 %1776, 0
  br label %1778

1778:                                             ; preds = %1773, %1768
  %1779 = phi i1 [ true, %1768 ], [ %1777, %1773 ]
  %1780 = zext i1 %1779 to i8
  store i8 %1780, ptr %56, align 1, !tbaa !11
  %1781 = load i8, ptr %56, align 1, !tbaa !11, !range !34, !noundef !35
  %1782 = trunc i8 %1781 to i1
  br i1 %1782, label %1787, label %1783

1783:                                             ; preds = %1778
  %1784 = load double, ptr %37, align 8, !tbaa !28
  %1785 = load double, ptr %38, align 8, !tbaa !28
  %1786 = fdiv double %1784, %1785
  store double %1786, ptr %55, align 8, !tbaa !28
  br label %1788

1787:                                             ; preds = %1778
  store double 0.000000e+00, ptr %55, align 8, !tbaa !28
  br label %1788

1788:                                             ; preds = %1787, %1783
  %1789 = load ptr, ptr %29, align 8, !tbaa !5
  %1790 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1789, i32 0, i32 17
  %1791 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1790, i32 0, i32 4
  %1792 = load ptr, ptr %1791, align 8, !tbaa !27
  %1793 = getelementptr inbounds double, ptr %1792, i64 0
  %1794 = load ptr, ptr %29, align 8, !tbaa !5
  %1795 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1794, i32 0, i32 18
  %1796 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1795, i32 0, i32 4
  %1797 = load ptr, ptr %1796, align 8, !tbaa !27
  %1798 = getelementptr inbounds double, ptr %1797, i64 0
  %1799 = load i64, ptr %33, align 8, !tbaa !9
  %1800 = sub nsw i64 %1799, 1
  %1801 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1800)
  %1802 = load double, ptr %55, align 8, !tbaa !28
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %1793, i64 noundef 1, ptr noundef %1798, i64 noundef 1, i64 noundef %1801, double noundef %1802)
  %1803 = load ptr, ptr %29, align 8, !tbaa !5
  %1804 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1803, i32 0, i32 21
  %1805 = load ptr, ptr %29, align 8, !tbaa !5
  %1806 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1805, i32 0, i32 17
  %1807 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl23sasconstraineddirectionEPNS_10sactivesetEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %1804, ptr noundef %1806, ptr noundef %1807)
  %1808 = load ptr, ptr %29, align 8, !tbaa !5
  %1809 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1808, i32 0, i32 21
  %1810 = load ptr, ptr %29, align 8, !tbaa !5
  %1811 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1810, i32 0, i32 17
  %1812 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl19sasexploredirectionEPNS_10sactivesetEPNS_9ae_vectorEPdPlS4_PNS_8ae_stateE(ptr noundef %1809, ptr noundef %1811, ptr noundef %46, ptr noundef %49, ptr noundef %50, ptr noundef %1812)
  %1813 = load ptr, ptr %29, align 8, !tbaa !5
  %1814 = load ptr, ptr %29, align 8, !tbaa !5
  %1815 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1814, i32 0, i32 21
  %1816 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %1815, i32 0, i32 2
  %1817 = load ptr, ptr %29, align 8, !tbaa !5
  %1818 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1817, i32 0, i32 17
  %1819 = load ptr, ptr %29, align 8, !tbaa !5
  %1820 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1819, i32 0, i32 15
  %1821 = load ptr, ptr %29, align 8, !tbaa !5
  %1822 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1821, i32 0, i32 33
  %1823 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_implL24qqpsolver_quadraticmodelEPNS_10qqpbuffersEPNS_9ae_vectorES3_S3_PdPlS4_S5_S3_PNS_8ae_stateE(ptr noundef %1813, ptr noundef %1816, ptr noundef %1818, ptr noundef %1820, ptr noundef %40, ptr noundef %41, ptr noundef %39, ptr noundef %42, ptr noundef %1822, ptr noundef %1823)
  %1824 = load double, ptr %40, align 8, !tbaa !28
  %1825 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1824, double noundef 0.000000e+00)
  br i1 %1825, label %1826, label %1831

1826:                                             ; preds = %1788
  %1827 = load double, ptr %39, align 8, !tbaa !28
  %1828 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1827, double noundef 0.000000e+00)
  br i1 %1828, label %1829, label %1831

1829:                                             ; preds = %1826
  %1830 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 4, ptr %1830, align 8, !tbaa !9
  br label %1971

1831:                                             ; preds = %1826, %1788
  %1832 = load i64, ptr %41, align 8, !tbaa !9
  %1833 = icmp sge i64 %1832, 0
  br i1 %1833, label %1834, label %1836

1834:                                             ; preds = %1831
  %1835 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 7, ptr %1835, align 8, !tbaa !9
  br label %1971

1836:                                             ; preds = %1831
  %1837 = load i64, ptr %42, align 8, !tbaa !9
  %1838 = icmp sle i64 %1837, 0
  br i1 %1838, label %1839, label %1844

1839:                                             ; preds = %1836
  %1840 = load i64, ptr %49, align 8, !tbaa !9
  %1841 = icmp slt i64 %1840, 0
  br i1 %1841, label %1842, label %1844

1842:                                             ; preds = %1839
  %1843 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -4, ptr %1843, align 8, !tbaa !9
  br label %1971

1844:                                             ; preds = %1839, %1836
  %1845 = load i64, ptr %42, align 8, !tbaa !9
  %1846 = icmp sgt i64 %1845, 0
  br i1 %1846, label %1847, label %1895

1847:                                             ; preds = %1844
  %1848 = load double, ptr %40, align 8, !tbaa !28
  %1849 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1848, double noundef 0.000000e+00)
  %1850 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1849, ptr noundef @.str.208, ptr noundef %1850)
  %1851 = load double, ptr %40, align 8, !tbaa !28
  %1852 = fneg double %1851
  %1853 = load double, ptr %39, align 8, !tbaa !28
  %1854 = fmul double 2.000000e+00, %1853
  %1855 = fdiv double %1852, %1854
  store double %1855, ptr %45, align 8, !tbaa !28
  %1856 = load double, ptr %45, align 8, !tbaa !28
  %1857 = load double, ptr %46, align 8, !tbaa !28
  %1858 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %1856, double noundef %1857)
  %1859 = zext i1 %1858 to i8
  store i8 %1859, ptr %43, align 1, !tbaa !11
  %1860 = load i8, ptr %43, align 1, !tbaa !11, !range !34, !noundef !35
  %1861 = trunc i8 %1860 to i1
  br i1 %1861, label %1862, label %1891

1862:                                             ; preds = %1847
  %1863 = load ptr, ptr %29, align 8, !tbaa !5
  %1864 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1863, i32 0, i32 35
  %1865 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1864, i32 0, i32 0
  %1866 = load i64, ptr %1865, align 8, !tbaa !73
  %1867 = icmp sge i64 %1866, 3
  %1868 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1867, ptr noundef @.str.209, ptr noundef %1868)
  %1869 = load double, ptr %46, align 8, !tbaa !28
  store double %1869, ptr %44, align 8, !tbaa !28
  %1870 = load double, ptr %44, align 8, !tbaa !28
  store double %1870, ptr %47, align 8, !tbaa !28
  %1871 = load double, ptr %44, align 8, !tbaa !28
  %1872 = fmul double %1871, 4.000000e+00
  %1873 = load ptr, ptr %29, align 8, !tbaa !5
  %1874 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1873, i32 0, i32 35
  %1875 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1874, i32 0, i32 4
  %1876 = load ptr, ptr %1875, align 8, !tbaa !27
  %1877 = getelementptr inbounds double, ptr %1876, i64 0
  store double %1872, ptr %1877, align 8, !tbaa !28
  %1878 = load double, ptr %45, align 8, !tbaa !28
  %1879 = load ptr, ptr %29, align 8, !tbaa !5
  %1880 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1879, i32 0, i32 35
  %1881 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1880, i32 0, i32 4
  %1882 = load ptr, ptr %1881, align 8, !tbaa !27
  %1883 = getelementptr inbounds double, ptr %1882, i64 1
  store double %1878, ptr %1883, align 8, !tbaa !28
  %1884 = load double, ptr %45, align 8, !tbaa !28
  %1885 = fdiv double %1884, 4.000000e+00
  %1886 = load ptr, ptr %29, align 8, !tbaa !5
  %1887 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1886, i32 0, i32 35
  %1888 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1887, i32 0, i32 4
  %1889 = load ptr, ptr %1888, align 8, !tbaa !27
  %1890 = getelementptr inbounds double, ptr %1889, i64 2
  store double %1885, ptr %1890, align 8, !tbaa !28
  store i64 3, ptr %48, align 8, !tbaa !9
  br label %1894

1891:                                             ; preds = %1847
  %1892 = load double, ptr %45, align 8, !tbaa !28
  store double %1892, ptr %44, align 8, !tbaa !28
  %1893 = load double, ptr %45, align 8, !tbaa !28
  store double %1893, ptr %47, align 8, !tbaa !28
  store i64 0, ptr %48, align 8, !tbaa !9
  br label %1894

1894:                                             ; preds = %1891, %1862
  br label %1915

1895:                                             ; preds = %1844
  %1896 = load i64, ptr %49, align 8, !tbaa !9
  %1897 = icmp sge i64 %1896, 0
  %1898 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1897, ptr noundef @.str.208, ptr noundef %1898)
  %1899 = load ptr, ptr %29, align 8, !tbaa !5
  %1900 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1899, i32 0, i32 35
  %1901 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1900, i32 0, i32 0
  %1902 = load i64, ptr %1901, align 8, !tbaa !73
  %1903 = icmp sge i64 %1902, 2
  %1904 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1903, ptr noundef @.str.209, ptr noundef %1904)
  %1905 = load double, ptr %46, align 8, !tbaa !28
  store double %1905, ptr %44, align 8, !tbaa !28
  %1906 = load double, ptr %46, align 8, !tbaa !28
  store double %1906, ptr %45, align 8, !tbaa !28
  %1907 = load double, ptr %44, align 8, !tbaa !28
  store double %1907, ptr %47, align 8, !tbaa !28
  store i8 1, ptr %43, align 1, !tbaa !11
  %1908 = load double, ptr %44, align 8, !tbaa !28
  %1909 = fmul double 4.000000e+00, %1908
  %1910 = load ptr, ptr %29, align 8, !tbaa !5
  %1911 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1910, i32 0, i32 35
  %1912 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1911, i32 0, i32 4
  %1913 = load ptr, ptr %1912, align 8, !tbaa !27
  %1914 = getelementptr inbounds double, ptr %1913, i64 0
  store double %1909, ptr %1914, align 8, !tbaa !28
  store i64 1, ptr %48, align 8, !tbaa !9
  br label %1915

1915:                                             ; preds = %1895, %1894
  %1916 = load ptr, ptr %29, align 8, !tbaa !5
  %1917 = load ptr, ptr %29, align 8, !tbaa !5
  %1918 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1917, i32 0, i32 21
  %1919 = load ptr, ptr %29, align 8, !tbaa !5
  %1920 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1919, i32 0, i32 17
  %1921 = load double, ptr %47, align 8, !tbaa !28
  %1922 = load i8, ptr %43, align 1, !tbaa !11, !range !34, !noundef !35
  %1923 = trunc i8 %1922 to i1
  %1924 = load i64, ptr %49, align 8, !tbaa !9
  %1925 = load double, ptr %50, align 8, !tbaa !28
  %1926 = load ptr, ptr %29, align 8, !tbaa !5
  %1927 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1926, i32 0, i32 35
  %1928 = load i64, ptr %48, align 8, !tbaa !9
  %1929 = load ptr, ptr %29, align 8, !tbaa !5
  %1930 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1929, i32 0, i32 22
  %1931 = load ptr, ptr %29, align 8, !tbaa !5
  %1932 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1931, i32 0, i32 33
  %1933 = load ptr, ptr %29, align 8, !tbaa !5
  %1934 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1933, i32 0, i32 34
  %1935 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_implL29qqpsolver_findbeststepandmoveEPNS_10qqpbuffersEPNS_10sactivesetEPNS_9ae_vectorEdbldS5_lS5_S5_S5_PNS_8ae_stateE(ptr noundef %1916, ptr noundef %1918, ptr noundef %1920, double noundef %1921, i1 noundef zeroext %1923, i64 noundef %1924, double noundef %1925, ptr noundef %1927, i64 noundef %1928, ptr noundef %1930, ptr noundef %1932, ptr noundef %1934, ptr noundef %1935)
  %1936 = load ptr, ptr %29, align 8, !tbaa !5
  %1937 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1936, i32 0, i32 18
  %1938 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1937, i32 0, i32 4
  %1939 = load ptr, ptr %1938, align 8, !tbaa !27
  %1940 = getelementptr inbounds double, ptr %1939, i64 0
  %1941 = load ptr, ptr %29, align 8, !tbaa !5
  %1942 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1941, i32 0, i32 17
  %1943 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1942, i32 0, i32 4
  %1944 = load ptr, ptr %1943, align 8, !tbaa !27
  %1945 = getelementptr inbounds double, ptr %1944, i64 0
  %1946 = load i64, ptr %33, align 8, !tbaa !9
  %1947 = sub nsw i64 %1946, 1
  %1948 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1947)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1940, i64 noundef 1, ptr noundef %1945, i64 noundef 1, i64 noundef %1948)
  %1949 = load ptr, ptr %29, align 8, !tbaa !5
  %1950 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1949, i32 0, i32 20
  %1951 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1950, i32 0, i32 4
  %1952 = load ptr, ptr %1951, align 8, !tbaa !27
  %1953 = getelementptr inbounds double, ptr %1952, i64 0
  %1954 = load ptr, ptr %29, align 8, !tbaa !5
  %1955 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1954, i32 0, i32 19
  %1956 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1955, i32 0, i32 4
  %1957 = load ptr, ptr %1956, align 8, !tbaa !27
  %1958 = getelementptr inbounds double, ptr %1957, i64 0
  %1959 = load i64, ptr %33, align 8, !tbaa !9
  %1960 = sub nsw i64 %1959, 1
  %1961 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1960)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1953, i64 noundef 1, ptr noundef %1958, i64 noundef 1, i64 noundef %1961)
  %1962 = load ptr, ptr %29, align 8, !tbaa !5
  %1963 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1962, i32 0, i32 37
  %1964 = load i64, ptr %1963, align 8, !tbaa !23
  %1965 = add nsw i64 %1964, 1
  %1966 = load ptr, ptr %29, align 8, !tbaa !5
  %1967 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1966, i32 0, i32 37
  store i64 %1965, ptr %1967, align 8, !tbaa !23
  br label %1968

1968:                                             ; preds = %1915
  %1969 = load i64, ptr %51, align 8, !tbaa !9
  %1970 = add nsw i64 %1969, 1
  store i64 %1970, ptr %51, align 8, !tbaa !9
  br label %1564, !llvm.loop !74

1971:                                             ; preds = %1842, %1834, %1829, %1621, %1564
  %1972 = load ptr, ptr %31, align 8, !tbaa !5
  %1973 = load i64, ptr %1972, align 8, !tbaa !9
  %1974 = icmp ne i64 %1973, 0
  br i1 %1974, label %1975, label %1976

1975:                                             ; preds = %1971
  br label %2250

1976:                                             ; preds = %1971
  %1977 = load ptr, ptr %28, align 8, !tbaa !5
  %1978 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %1977, i32 0, i32 7
  %1979 = load i64, ptr %1978, align 8, !tbaa !75
  store i64 %1979, ptr %52, align 8, !tbaa !9
  store i64 0, ptr %53, align 8, !tbaa !9
  br label %1980

1980:                                             ; preds = %2243, %1976
  %1981 = load ptr, ptr %28, align 8, !tbaa !5
  %1982 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %1981, i32 0, i32 5
  %1983 = load i8, ptr %1982, align 1, !tbaa !36, !range !34, !noundef !35
  %1984 = trunc i8 %1983 to i1
  br i1 %1984, label %1986, label %1985

1985:                                             ; preds = %1980
  br label %2244

1986:                                             ; preds = %1980
  %1987 = load i64, ptr %53, align 8, !tbaa !9
  %1988 = icmp eq i64 %1987, 0
  br i1 %1988, label %1989, label %2004

1989:                                             ; preds = %1986
  %1990 = load ptr, ptr %29, align 8, !tbaa !5
  %1991 = load i64, ptr %54, align 8, !tbaa !9
  %1992 = load ptr, ptr %29, align 8, !tbaa !5
  %1993 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %1992, i32 0, i32 39
  %1994 = load ptr, ptr %32, align 8, !tbaa !5
  %1995 = call noundef zeroext i1 @_ZN11alglib_implL22qqpsolver_cnewtonbuildEPNS_10qqpbuffersElPlPNS_8ae_stateE(ptr noundef %1990, i64 noundef %1991, ptr noundef %1993, ptr noundef %1994)
  %1996 = zext i1 %1995 to i8
  store i8 %1996, ptr %56, align 1, !tbaa !11
  %1997 = load i8, ptr %56, align 1, !tbaa !11, !range !34, !noundef !35
  %1998 = trunc i8 %1997 to i1
  br i1 %1998, label %1999, label %2003

1999:                                             ; preds = %1989
  %2000 = load ptr, ptr %28, align 8, !tbaa !5
  %2001 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %2000, i32 0, i32 6
  %2002 = load i64, ptr %2001, align 8, !tbaa !65
  store i64 %2002, ptr %52, align 8, !tbaa !9
  br label %2003

2003:                                             ; preds = %1999, %1989
  br label %2012

2004:                                             ; preds = %1986
  %2005 = load ptr, ptr %29, align 8, !tbaa !5
  %2006 = load ptr, ptr %28, align 8, !tbaa !5
  %2007 = load ptr, ptr %29, align 8, !tbaa !5
  %2008 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2007, i32 0, i32 40
  %2009 = load ptr, ptr %32, align 8, !tbaa !5
  %2010 = call noundef zeroext i1 @_ZN11alglib_implL23qqpsolver_cnewtonupdateEPNS_10qqpbuffersEPNS_11qqpsettingsEPlPNS_8ae_stateE(ptr noundef %2005, ptr noundef %2006, ptr noundef %2008, ptr noundef %2009)
  %2011 = zext i1 %2010 to i8
  store i8 %2011, ptr %56, align 1, !tbaa !11
  br label %2012

2012:                                             ; preds = %2004, %2003
  %2013 = load i8, ptr %56, align 1, !tbaa !11, !range !34, !noundef !35
  %2014 = trunc i8 %2013 to i1
  br i1 %2014, label %2016, label %2015

2015:                                             ; preds = %2012
  br label %2244

2016:                                             ; preds = %2012
  %2017 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %53, ptr noundef %2017)
  %2018 = load ptr, ptr %29, align 8, !tbaa !5
  %2019 = load ptr, ptr %29, align 8, !tbaa !5
  %2020 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2019, i32 0, i32 21
  %2021 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %2020, i32 0, i32 2
  %2022 = load ptr, ptr %29, align 8, !tbaa !5
  %2023 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2022, i32 0, i32 15
  %2024 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_implL24qqpsolver_targetgradientEPNS_10qqpbuffersEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %2018, ptr noundef %2021, ptr noundef %2023, ptr noundef %2024)
  store i64 0, ptr %34, align 8, !tbaa !9
  br label %2025

2025:                                             ; preds = %2044, %2016
  %2026 = load i64, ptr %34, align 8, !tbaa !9
  %2027 = load i64, ptr %33, align 8, !tbaa !9
  %2028 = sub nsw i64 %2027, 1
  %2029 = icmp sle i64 %2026, %2028
  br i1 %2029, label %2030, label %2047

2030:                                             ; preds = %2025
  %2031 = load ptr, ptr %29, align 8, !tbaa !5
  %2032 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2031, i32 0, i32 15
  %2033 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2032, i32 0, i32 4
  %2034 = load ptr, ptr %2033, align 8, !tbaa !27
  %2035 = load i64, ptr %34, align 8, !tbaa !9
  %2036 = getelementptr inbounds double, ptr %2034, i64 %2035
  %2037 = load double, ptr %2036, align 8, !tbaa !28
  %2038 = load ptr, ptr %29, align 8, !tbaa !5
  %2039 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2038, i32 0, i32 17
  %2040 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2039, i32 0, i32 4
  %2041 = load ptr, ptr %2040, align 8, !tbaa !27
  %2042 = load i64, ptr %34, align 8, !tbaa !9
  %2043 = getelementptr inbounds double, ptr %2041, i64 %2042
  store double %2037, ptr %2043, align 8, !tbaa !28
  br label %2044

2044:                                             ; preds = %2030
  %2045 = load i64, ptr %34, align 8, !tbaa !9
  %2046 = add nsw i64 %2045, 1
  store i64 %2046, ptr %34, align 8, !tbaa !9
  br label %2025, !llvm.loop !76

2047:                                             ; preds = %2025
  %2048 = load ptr, ptr %29, align 8, !tbaa !5
  %2049 = load ptr, ptr %28, align 8, !tbaa !5
  %2050 = load ptr, ptr %29, align 8, !tbaa !5
  %2051 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2050, i32 0, i32 17
  %2052 = load ptr, ptr %32, align 8, !tbaa !5
  %2053 = call noundef zeroext i1 @_ZN11alglib_implL21qqpsolver_cnewtonstepEPNS_10qqpbuffersEPNS_11qqpsettingsEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %2048, ptr noundef %2049, ptr noundef %2051, ptr noundef %2052)
  br i1 %2053, label %2055, label %2054

2054:                                             ; preds = %2047
  br label %2244

2055:                                             ; preds = %2047
  %2056 = load ptr, ptr %29, align 8, !tbaa !5
  %2057 = load ptr, ptr %29, align 8, !tbaa !5
  %2058 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2057, i32 0, i32 21
  %2059 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %2058, i32 0, i32 2
  %2060 = load ptr, ptr %29, align 8, !tbaa !5
  %2061 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2060, i32 0, i32 17
  %2062 = load ptr, ptr %29, align 8, !tbaa !5
  %2063 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2062, i32 0, i32 15
  %2064 = load ptr, ptr %29, align 8, !tbaa !5
  %2065 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2064, i32 0, i32 33
  %2066 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_implL24qqpsolver_quadraticmodelEPNS_10qqpbuffersEPNS_9ae_vectorES3_S3_PdPlS4_S5_S3_PNS_8ae_stateE(ptr noundef %2056, ptr noundef %2059, ptr noundef %2061, ptr noundef %2063, ptr noundef %40, ptr noundef %41, ptr noundef %39, ptr noundef %42, ptr noundef %2065, ptr noundef %2066)
  %2067 = load i64, ptr %41, align 8, !tbaa !9
  %2068 = icmp sge i64 %2067, 0
  br i1 %2068, label %2069, label %2070

2069:                                             ; preds = %2055
  br label %2244

2070:                                             ; preds = %2055
  %2071 = load i64, ptr %42, align 8, !tbaa !9
  %2072 = icmp sgt i64 %2071, 0
  br i1 %2072, label %2073, label %2146

2073:                                             ; preds = %2070
  %2074 = load double, ptr %40, align 8, !tbaa !28
  %2075 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %2074, double noundef 0.000000e+00)
  %2076 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %2075, ptr noundef @.str.208, ptr noundef %2076)
  %2077 = load double, ptr %40, align 8, !tbaa !28
  %2078 = fneg double %2077
  %2079 = load double, ptr %39, align 8, !tbaa !28
  %2080 = fmul double 2.000000e+00, %2079
  %2081 = fdiv double %2078, %2080
  store double %2081, ptr %45, align 8, !tbaa !28
  %2082 = load ptr, ptr %29, align 8, !tbaa !5
  %2083 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2082, i32 0, i32 21
  %2084 = load ptr, ptr %29, align 8, !tbaa !5
  %2085 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2084, i32 0, i32 17
  %2086 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl19sasexploredirectionEPNS_10sactivesetEPNS_9ae_vectorEPdPlS4_PNS_8ae_stateE(ptr noundef %2083, ptr noundef %2085, ptr noundef %46, ptr noundef %49, ptr noundef %50, ptr noundef %2086)
  %2087 = load double, ptr %45, align 8, !tbaa !28
  %2088 = load double, ptr %46, align 8, !tbaa !28
  %2089 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %2087, double noundef %2088)
  %2090 = zext i1 %2089 to i8
  store i8 %2090, ptr %43, align 1, !tbaa !11
  %2091 = load i8, ptr %43, align 1, !tbaa !11, !range !34, !noundef !35
  %2092 = trunc i8 %2091 to i1
  br i1 %2092, label %2093, label %2122

2093:                                             ; preds = %2073
  %2094 = load ptr, ptr %29, align 8, !tbaa !5
  %2095 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2094, i32 0, i32 35
  %2096 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2095, i32 0, i32 0
  %2097 = load i64, ptr %2096, align 8, !tbaa !73
  %2098 = icmp sge i64 %2097, 3
  %2099 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %2098, ptr noundef @.str.209, ptr noundef %2099)
  %2100 = load double, ptr %46, align 8, !tbaa !28
  store double %2100, ptr %44, align 8, !tbaa !28
  %2101 = load double, ptr %44, align 8, !tbaa !28
  store double %2101, ptr %47, align 8, !tbaa !28
  %2102 = load double, ptr %44, align 8, !tbaa !28
  %2103 = fmul double %2102, 4.000000e+00
  %2104 = load ptr, ptr %29, align 8, !tbaa !5
  %2105 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2104, i32 0, i32 35
  %2106 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2105, i32 0, i32 4
  %2107 = load ptr, ptr %2106, align 8, !tbaa !27
  %2108 = getelementptr inbounds double, ptr %2107, i64 0
  store double %2103, ptr %2108, align 8, !tbaa !28
  %2109 = load double, ptr %45, align 8, !tbaa !28
  %2110 = load ptr, ptr %29, align 8, !tbaa !5
  %2111 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2110, i32 0, i32 35
  %2112 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2111, i32 0, i32 4
  %2113 = load ptr, ptr %2112, align 8, !tbaa !27
  %2114 = getelementptr inbounds double, ptr %2113, i64 1
  store double %2109, ptr %2114, align 8, !tbaa !28
  %2115 = load double, ptr %45, align 8, !tbaa !28
  %2116 = fdiv double %2115, 4.000000e+00
  %2117 = load ptr, ptr %29, align 8, !tbaa !5
  %2118 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2117, i32 0, i32 35
  %2119 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2118, i32 0, i32 4
  %2120 = load ptr, ptr %2119, align 8, !tbaa !27
  %2121 = getelementptr inbounds double, ptr %2120, i64 2
  store double %2116, ptr %2121, align 8, !tbaa !28
  store i64 3, ptr %48, align 8, !tbaa !9
  br label %2125

2122:                                             ; preds = %2073
  %2123 = load double, ptr %45, align 8, !tbaa !28
  store double %2123, ptr %44, align 8, !tbaa !28
  %2124 = load double, ptr %45, align 8, !tbaa !28
  store double %2124, ptr %47, align 8, !tbaa !28
  store i64 0, ptr %48, align 8, !tbaa !9
  br label %2125

2125:                                             ; preds = %2122, %2093
  %2126 = load ptr, ptr %29, align 8, !tbaa !5
  %2127 = load ptr, ptr %29, align 8, !tbaa !5
  %2128 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2127, i32 0, i32 21
  %2129 = load ptr, ptr %29, align 8, !tbaa !5
  %2130 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2129, i32 0, i32 17
  %2131 = load double, ptr %47, align 8, !tbaa !28
  %2132 = load i8, ptr %43, align 1, !tbaa !11, !range !34, !noundef !35
  %2133 = trunc i8 %2132 to i1
  %2134 = load i64, ptr %49, align 8, !tbaa !9
  %2135 = load double, ptr %50, align 8, !tbaa !28
  %2136 = load ptr, ptr %29, align 8, !tbaa !5
  %2137 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2136, i32 0, i32 35
  %2138 = load i64, ptr %48, align 8, !tbaa !9
  %2139 = load ptr, ptr %29, align 8, !tbaa !5
  %2140 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2139, i32 0, i32 22
  %2141 = load ptr, ptr %29, align 8, !tbaa !5
  %2142 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2141, i32 0, i32 33
  %2143 = load ptr, ptr %29, align 8, !tbaa !5
  %2144 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2143, i32 0, i32 34
  %2145 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_implL29qqpsolver_findbeststepandmoveEPNS_10qqpbuffersEPNS_10sactivesetEPNS_9ae_vectorEdbldS5_lS5_S5_S5_PNS_8ae_stateE(ptr noundef %2126, ptr noundef %2128, ptr noundef %2130, double noundef %2131, i1 noundef zeroext %2133, i64 noundef %2134, double noundef %2135, ptr noundef %2137, i64 noundef %2138, ptr noundef %2140, ptr noundef %2142, ptr noundef %2144, ptr noundef %2145)
  br label %2243

2146:                                             ; preds = %2070
  %2147 = load ptr, ptr %29, align 8, !tbaa !5
  %2148 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2147, i32 0, i32 21
  %2149 = load ptr, ptr %29, align 8, !tbaa !5
  %2150 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2149, i32 0, i32 17
  %2151 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl19sasexploredirectionEPNS_10sactivesetEPNS_9ae_vectorEPdPlS4_PNS_8ae_stateE(ptr noundef %2148, ptr noundef %2150, ptr noundef %46, ptr noundef %49, ptr noundef %50, ptr noundef %2151)
  %2152 = load i64, ptr %49, align 8, !tbaa !9
  %2153 = icmp slt i64 %2152, 0
  br i1 %2153, label %2154, label %2156

2154:                                             ; preds = %2146
  %2155 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -4, ptr %2155, align 8, !tbaa !9
  br label %2244

2156:                                             ; preds = %2146
  %2157 = load double, ptr %46, align 8, !tbaa !28
  %2158 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2157, double noundef 0.000000e+00)
  br i1 %2158, label %2159, label %2163

2159:                                             ; preds = %2156
  %2160 = load ptr, ptr %28, align 8, !tbaa !5
  %2161 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %2160, i32 0, i32 7
  %2162 = load i64, ptr %2161, align 8, !tbaa !75
  store i64 %2162, ptr %52, align 8, !tbaa !9
  br label %2244

2163:                                             ; preds = %2156
  %2164 = load double, ptr %46, align 8, !tbaa !28
  %2165 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2164, double noundef 0.000000e+00)
  %2166 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %2165, ptr noundef @.str.208, ptr noundef %2166)
  %2167 = load ptr, ptr %29, align 8, !tbaa !5
  %2168 = load ptr, ptr %29, align 8, !tbaa !5
  %2169 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2168, i32 0, i32 21
  %2170 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %2169, i32 0, i32 2
  %2171 = load ptr, ptr %29, align 8, !tbaa !5
  %2172 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2171, i32 0, i32 17
  %2173 = load ptr, ptr %29, align 8, !tbaa !5
  %2174 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2173, i32 0, i32 33
  %2175 = load ptr, ptr %29, align 8, !tbaa !5
  %2176 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2175, i32 0, i32 34
  %2177 = load ptr, ptr %32, align 8, !tbaa !5
  %2178 = call noundef double @_ZN11alglib_implL33qqpsolver_projectedtargetfunctionEPNS_10qqpbuffersEPNS_9ae_vectorES3_dS3_S3_PNS_8ae_stateE(ptr noundef %2167, ptr noundef %2170, ptr noundef %2172, double noundef 0.000000e+00, ptr noundef %2174, ptr noundef %2176, ptr noundef %2177)
  store double %2178, ptr %61, align 8, !tbaa !28
  %2179 = load ptr, ptr %29, align 8, !tbaa !5
  %2180 = load ptr, ptr %29, align 8, !tbaa !5
  %2181 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2180, i32 0, i32 21
  %2182 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %2181, i32 0, i32 2
  %2183 = load ptr, ptr %29, align 8, !tbaa !5
  %2184 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2183, i32 0, i32 17
  %2185 = load double, ptr %46, align 8, !tbaa !28
  %2186 = load ptr, ptr %29, align 8, !tbaa !5
  %2187 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2186, i32 0, i32 33
  %2188 = load ptr, ptr %29, align 8, !tbaa !5
  %2189 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2188, i32 0, i32 34
  %2190 = load ptr, ptr %32, align 8, !tbaa !5
  %2191 = call noundef double @_ZN11alglib_implL33qqpsolver_projectedtargetfunctionEPNS_10qqpbuffersEPNS_9ae_vectorES3_dS3_S3_PNS_8ae_stateE(ptr noundef %2179, ptr noundef %2182, ptr noundef %2184, double noundef %2185, ptr noundef %2187, ptr noundef %2189, ptr noundef %2190)
  store double %2191, ptr %62, align 8, !tbaa !28
  %2192 = load double, ptr %62, align 8, !tbaa !28
  %2193 = load double, ptr %61, align 8, !tbaa !28
  %2194 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %2192, double noundef %2193)
  br i1 %2194, label %2195, label %2199

2195:                                             ; preds = %2163
  %2196 = load ptr, ptr %28, align 8, !tbaa !5
  %2197 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %2196, i32 0, i32 7
  %2198 = load i64, ptr %2197, align 8, !tbaa !75
  store i64 %2198, ptr %52, align 8, !tbaa !9
  br label %2244

2199:                                             ; preds = %2163
  %2200 = load ptr, ptr %29, align 8, !tbaa !5
  %2201 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2200, i32 0, i32 35
  %2202 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2201, i32 0, i32 0
  %2203 = load i64, ptr %2202, align 8, !tbaa !73
  %2204 = icmp sge i64 %2203, 3
  %2205 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %2204, ptr noundef @.str.209, ptr noundef %2205)
  %2206 = load double, ptr %46, align 8, !tbaa !28
  store double %2206, ptr %44, align 8, !tbaa !28
  %2207 = load double, ptr %44, align 8, !tbaa !28
  store double %2207, ptr %47, align 8, !tbaa !28
  %2208 = load double, ptr %44, align 8, !tbaa !28
  %2209 = fmul double %2208, 4.000000e+00
  %2210 = load ptr, ptr %29, align 8, !tbaa !5
  %2211 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2210, i32 0, i32 35
  %2212 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2211, i32 0, i32 4
  %2213 = load ptr, ptr %2212, align 8, !tbaa !27
  %2214 = getelementptr inbounds double, ptr %2213, i64 0
  store double %2209, ptr %2214, align 8, !tbaa !28
  %2215 = load ptr, ptr %29, align 8, !tbaa !5
  %2216 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2215, i32 0, i32 35
  %2217 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2216, i32 0, i32 4
  %2218 = load ptr, ptr %2217, align 8, !tbaa !27
  %2219 = getelementptr inbounds double, ptr %2218, i64 1
  store double 1.000000e+00, ptr %2219, align 8, !tbaa !28
  %2220 = load ptr, ptr %29, align 8, !tbaa !5
  %2221 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2220, i32 0, i32 35
  %2222 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2221, i32 0, i32 4
  %2223 = load ptr, ptr %2222, align 8, !tbaa !27
  %2224 = getelementptr inbounds double, ptr %2223, i64 2
  store double 2.500000e-01, ptr %2224, align 8, !tbaa !28
  store i64 3, ptr %48, align 8, !tbaa !9
  %2225 = load ptr, ptr %29, align 8, !tbaa !5
  %2226 = load ptr, ptr %29, align 8, !tbaa !5
  %2227 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2226, i32 0, i32 21
  %2228 = load ptr, ptr %29, align 8, !tbaa !5
  %2229 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2228, i32 0, i32 17
  %2230 = load double, ptr %47, align 8, !tbaa !28
  %2231 = load i64, ptr %49, align 8, !tbaa !9
  %2232 = load double, ptr %50, align 8, !tbaa !28
  %2233 = load ptr, ptr %29, align 8, !tbaa !5
  %2234 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2233, i32 0, i32 35
  %2235 = load i64, ptr %48, align 8, !tbaa !9
  %2236 = load ptr, ptr %29, align 8, !tbaa !5
  %2237 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2236, i32 0, i32 22
  %2238 = load ptr, ptr %29, align 8, !tbaa !5
  %2239 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2238, i32 0, i32 33
  %2240 = load ptr, ptr %29, align 8, !tbaa !5
  %2241 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2240, i32 0, i32 34
  %2242 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_implL29qqpsolver_findbeststepandmoveEPNS_10qqpbuffersEPNS_10sactivesetEPNS_9ae_vectorEdbldS5_lS5_S5_S5_PNS_8ae_stateE(ptr noundef %2225, ptr noundef %2227, ptr noundef %2229, double noundef %2230, i1 noundef zeroext true, i64 noundef %2231, double noundef %2232, ptr noundef %2234, i64 noundef %2235, ptr noundef %2237, ptr noundef %2239, ptr noundef %2241, ptr noundef %2242)
  br label %2243

2243:                                             ; preds = %2199, %2125
  br label %1980, !llvm.loop !77

2244:                                             ; preds = %2195, %2159, %2154, %2069, %2054, %2015, %1985
  %2245 = load ptr, ptr %31, align 8, !tbaa !5
  %2246 = load i64, ptr %2245, align 8, !tbaa !9
  %2247 = icmp ne i64 %2246, 0
  br i1 %2247, label %2248, label %2249

2248:                                             ; preds = %2244
  br label %2250

2249:                                             ; preds = %2244
  br label %1401, !llvm.loop !78

2250:                                             ; preds = %2248, %1975, %1514, %1468, %1414
  %2251 = load ptr, ptr %29, align 8, !tbaa !5
  %2252 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2251, i32 0, i32 21
  %2253 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZN11alglib_impl19sasstopoptimizationEPNS_10sactivesetEPNS_8ae_stateE(ptr noundef %2252, ptr noundef %2253)
  %2254 = load ptr, ptr %29, align 8, !tbaa !5
  %2255 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2254, i32 0, i32 14
  %2256 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2255, i32 0, i32 4
  %2257 = load ptr, ptr %2256, align 8, !tbaa !27
  %2258 = getelementptr inbounds double, ptr %2257, i64 0
  %2259 = load ptr, ptr %29, align 8, !tbaa !5
  %2260 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2259, i32 0, i32 21
  %2261 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %2260, i32 0, i32 2
  %2262 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2261, i32 0, i32 4
  %2263 = load ptr, ptr %2262, align 8, !tbaa !27
  %2264 = getelementptr inbounds double, ptr %2263, i64 0
  %2265 = load i64, ptr %33, align 8, !tbaa !9
  %2266 = sub nsw i64 %2265, 1
  %2267 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %2266)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %2258, i64 noundef 1, ptr noundef %2264, i64 noundef 1, i64 noundef %2267)
  br label %2268

2268:                                             ; preds = %2250, %1374
  store i64 0, ptr %34, align 8, !tbaa !9
  br label %2269

2269:                                             ; preds = %2444, %2268
  %2270 = load i64, ptr %34, align 8, !tbaa !9
  %2271 = load i64, ptr %33, align 8, !tbaa !9
  %2272 = sub nsw i64 %2271, 1
  %2273 = icmp sle i64 %2270, %2272
  br i1 %2273, label %2274, label %2447

2274:                                             ; preds = %2269
  %2275 = load ptr, ptr %25, align 8, !tbaa !5
  %2276 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2275, i32 0, i32 4
  %2277 = load ptr, ptr %2276, align 8, !tbaa !27
  %2278 = load i64, ptr %34, align 8, !tbaa !9
  %2279 = getelementptr inbounds double, ptr %2277, i64 %2278
  %2280 = load double, ptr %2279, align 8, !tbaa !28
  %2281 = load ptr, ptr %29, align 8, !tbaa !5
  %2282 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2281, i32 0, i32 14
  %2283 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2282, i32 0, i32 4
  %2284 = load ptr, ptr %2283, align 8, !tbaa !27
  %2285 = load i64, ptr %34, align 8, !tbaa !9
  %2286 = getelementptr inbounds double, ptr %2284, i64 %2285
  %2287 = load double, ptr %2286, align 8, !tbaa !28
  %2288 = load ptr, ptr %26, align 8, !tbaa !5
  %2289 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2288, i32 0, i32 4
  %2290 = load ptr, ptr %2289, align 8, !tbaa !27
  %2291 = load i64, ptr %34, align 8, !tbaa !9
  %2292 = getelementptr inbounds double, ptr %2290, i64 %2291
  %2293 = load double, ptr %2292, align 8, !tbaa !28
  %2294 = call double @llvm.fmuladd.f64(double %2280, double %2287, double %2293)
  %2295 = load ptr, ptr %30, align 8, !tbaa !5
  %2296 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2295, i32 0, i32 4
  %2297 = load ptr, ptr %2296, align 8, !tbaa !27
  %2298 = load i64, ptr %34, align 8, !tbaa !9
  %2299 = getelementptr inbounds double, ptr %2297, i64 %2298
  store double %2294, ptr %2299, align 8, !tbaa !28
  %2300 = load ptr, ptr %29, align 8, !tbaa !5
  %2301 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2300, i32 0, i32 11
  %2302 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2301, i32 0, i32 4
  %2303 = load ptr, ptr %2302, align 8, !tbaa !27
  %2304 = load i64, ptr %34, align 8, !tbaa !9
  %2305 = getelementptr inbounds i8, ptr %2303, i64 %2304
  %2306 = load i8, ptr %2305, align 1, !tbaa !11, !range !34, !noundef !35
  %2307 = trunc i8 %2306 to i1
  br i1 %2307, label %2308, label %2334

2308:                                             ; preds = %2274
  %2309 = load ptr, ptr %30, align 8, !tbaa !5
  %2310 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2309, i32 0, i32 4
  %2311 = load ptr, ptr %2310, align 8, !tbaa !27
  %2312 = load i64, ptr %34, align 8, !tbaa !9
  %2313 = getelementptr inbounds double, ptr %2311, i64 %2312
  %2314 = load double, ptr %2313, align 8, !tbaa !28
  %2315 = load ptr, ptr %23, align 8, !tbaa !5
  %2316 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2315, i32 0, i32 4
  %2317 = load ptr, ptr %2316, align 8, !tbaa !27
  %2318 = load i64, ptr %34, align 8, !tbaa !9
  %2319 = getelementptr inbounds double, ptr %2317, i64 %2318
  %2320 = load double, ptr %2319, align 8, !tbaa !28
  %2321 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %2314, double noundef %2320)
  br i1 %2321, label %2322, label %2334

2322:                                             ; preds = %2308
  %2323 = load ptr, ptr %23, align 8, !tbaa !5
  %2324 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2323, i32 0, i32 4
  %2325 = load ptr, ptr %2324, align 8, !tbaa !27
  %2326 = load i64, ptr %34, align 8, !tbaa !9
  %2327 = getelementptr inbounds double, ptr %2325, i64 %2326
  %2328 = load double, ptr %2327, align 8, !tbaa !28
  %2329 = load ptr, ptr %30, align 8, !tbaa !5
  %2330 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2329, i32 0, i32 4
  %2331 = load ptr, ptr %2330, align 8, !tbaa !27
  %2332 = load i64, ptr %34, align 8, !tbaa !9
  %2333 = getelementptr inbounds double, ptr %2331, i64 %2332
  store double %2328, ptr %2333, align 8, !tbaa !28
  br label %2334

2334:                                             ; preds = %2322, %2308, %2274
  %2335 = load ptr, ptr %29, align 8, !tbaa !5
  %2336 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2335, i32 0, i32 12
  %2337 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2336, i32 0, i32 4
  %2338 = load ptr, ptr %2337, align 8, !tbaa !27
  %2339 = load i64, ptr %34, align 8, !tbaa !9
  %2340 = getelementptr inbounds i8, ptr %2338, i64 %2339
  %2341 = load i8, ptr %2340, align 1, !tbaa !11, !range !34, !noundef !35
  %2342 = trunc i8 %2341 to i1
  br i1 %2342, label %2343, label %2369

2343:                                             ; preds = %2334
  %2344 = load ptr, ptr %30, align 8, !tbaa !5
  %2345 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2344, i32 0, i32 4
  %2346 = load ptr, ptr %2345, align 8, !tbaa !27
  %2347 = load i64, ptr %34, align 8, !tbaa !9
  %2348 = getelementptr inbounds double, ptr %2346, i64 %2347
  %2349 = load double, ptr %2348, align 8, !tbaa !28
  %2350 = load ptr, ptr %24, align 8, !tbaa !5
  %2351 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2350, i32 0, i32 4
  %2352 = load ptr, ptr %2351, align 8, !tbaa !27
  %2353 = load i64, ptr %34, align 8, !tbaa !9
  %2354 = getelementptr inbounds double, ptr %2352, i64 %2353
  %2355 = load double, ptr %2354, align 8, !tbaa !28
  %2356 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2349, double noundef %2355)
  br i1 %2356, label %2357, label %2369

2357:                                             ; preds = %2343
  %2358 = load ptr, ptr %24, align 8, !tbaa !5
  %2359 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2358, i32 0, i32 4
  %2360 = load ptr, ptr %2359, align 8, !tbaa !27
  %2361 = load i64, ptr %34, align 8, !tbaa !9
  %2362 = getelementptr inbounds double, ptr %2360, i64 %2361
  %2363 = load double, ptr %2362, align 8, !tbaa !28
  %2364 = load ptr, ptr %30, align 8, !tbaa !5
  %2365 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2364, i32 0, i32 4
  %2366 = load ptr, ptr %2365, align 8, !tbaa !27
  %2367 = load i64, ptr %34, align 8, !tbaa !9
  %2368 = getelementptr inbounds double, ptr %2366, i64 %2367
  store double %2363, ptr %2368, align 8, !tbaa !28
  br label %2369

2369:                                             ; preds = %2357, %2343, %2334
  %2370 = load ptr, ptr %29, align 8, !tbaa !5
  %2371 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2370, i32 0, i32 11
  %2372 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2371, i32 0, i32 4
  %2373 = load ptr, ptr %2372, align 8, !tbaa !27
  %2374 = load i64, ptr %34, align 8, !tbaa !9
  %2375 = getelementptr inbounds i8, ptr %2373, i64 %2374
  %2376 = load i8, ptr %2375, align 1, !tbaa !11, !range !34, !noundef !35
  %2377 = trunc i8 %2376 to i1
  br i1 %2377, label %2378, label %2406

2378:                                             ; preds = %2369
  %2379 = load ptr, ptr %29, align 8, !tbaa !5
  %2380 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2379, i32 0, i32 14
  %2381 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2380, i32 0, i32 4
  %2382 = load ptr, ptr %2381, align 8, !tbaa !27
  %2383 = load i64, ptr %34, align 8, !tbaa !9
  %2384 = getelementptr inbounds double, ptr %2382, i64 %2383
  %2385 = load double, ptr %2384, align 8, !tbaa !28
  %2386 = load ptr, ptr %29, align 8, !tbaa !5
  %2387 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2386, i32 0, i32 9
  %2388 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2387, i32 0, i32 4
  %2389 = load ptr, ptr %2388, align 8, !tbaa !27
  %2390 = load i64, ptr %34, align 8, !tbaa !9
  %2391 = getelementptr inbounds double, ptr %2389, i64 %2390
  %2392 = load double, ptr %2391, align 8, !tbaa !28
  %2393 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2385, double noundef %2392)
  br i1 %2393, label %2394, label %2406

2394:                                             ; preds = %2378
  %2395 = load ptr, ptr %23, align 8, !tbaa !5
  %2396 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2395, i32 0, i32 4
  %2397 = load ptr, ptr %2396, align 8, !tbaa !27
  %2398 = load i64, ptr %34, align 8, !tbaa !9
  %2399 = getelementptr inbounds double, ptr %2397, i64 %2398
  %2400 = load double, ptr %2399, align 8, !tbaa !28
  %2401 = load ptr, ptr %30, align 8, !tbaa !5
  %2402 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2401, i32 0, i32 4
  %2403 = load ptr, ptr %2402, align 8, !tbaa !27
  %2404 = load i64, ptr %34, align 8, !tbaa !9
  %2405 = getelementptr inbounds double, ptr %2403, i64 %2404
  store double %2400, ptr %2405, align 8, !tbaa !28
  br label %2406

2406:                                             ; preds = %2394, %2378, %2369
  %2407 = load ptr, ptr %29, align 8, !tbaa !5
  %2408 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2407, i32 0, i32 12
  %2409 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2408, i32 0, i32 4
  %2410 = load ptr, ptr %2409, align 8, !tbaa !27
  %2411 = load i64, ptr %34, align 8, !tbaa !9
  %2412 = getelementptr inbounds i8, ptr %2410, i64 %2411
  %2413 = load i8, ptr %2412, align 1, !tbaa !11, !range !34, !noundef !35
  %2414 = trunc i8 %2413 to i1
  br i1 %2414, label %2415, label %2443

2415:                                             ; preds = %2406
  %2416 = load ptr, ptr %29, align 8, !tbaa !5
  %2417 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2416, i32 0, i32 14
  %2418 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2417, i32 0, i32 4
  %2419 = load ptr, ptr %2418, align 8, !tbaa !27
  %2420 = load i64, ptr %34, align 8, !tbaa !9
  %2421 = getelementptr inbounds double, ptr %2419, i64 %2420
  %2422 = load double, ptr %2421, align 8, !tbaa !28
  %2423 = load ptr, ptr %29, align 8, !tbaa !5
  %2424 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %2423, i32 0, i32 10
  %2425 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2424, i32 0, i32 4
  %2426 = load ptr, ptr %2425, align 8, !tbaa !27
  %2427 = load i64, ptr %34, align 8, !tbaa !9
  %2428 = getelementptr inbounds double, ptr %2426, i64 %2427
  %2429 = load double, ptr %2428, align 8, !tbaa !28
  %2430 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2422, double noundef %2429)
  br i1 %2430, label %2431, label %2443

2431:                                             ; preds = %2415
  %2432 = load ptr, ptr %24, align 8, !tbaa !5
  %2433 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2432, i32 0, i32 4
  %2434 = load ptr, ptr %2433, align 8, !tbaa !27
  %2435 = load i64, ptr %34, align 8, !tbaa !9
  %2436 = getelementptr inbounds double, ptr %2434, i64 %2435
  %2437 = load double, ptr %2436, align 8, !tbaa !28
  %2438 = load ptr, ptr %30, align 8, !tbaa !5
  %2439 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %2438, i32 0, i32 4
  %2440 = load ptr, ptr %2439, align 8, !tbaa !27
  %2441 = load i64, ptr %34, align 8, !tbaa !9
  %2442 = getelementptr inbounds double, ptr %2440, i64 %2441
  store double %2437, ptr %2442, align 8, !tbaa !28
  br label %2443

2443:                                             ; preds = %2431, %2415, %2406
  br label %2444

2444:                                             ; preds = %2443
  %2445 = load i64, ptr %34, align 8, !tbaa !9
  %2446 = add nsw i64 %2445, 1
  store i64 %2446, ptr %34, align 8, !tbaa !9
  br label %2269, !llvm.loop !79

2447:                                             ; preds = %2269
  store i32 0, ptr %63, align 4
  br label %2448

2448:                                             ; preds = %2447, %1391, %174
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  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 1, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  %2449 = load i32, ptr %63, align 4
  switch i32 %2449, label %2451 [
    i32 0, label %2450
    i32 1, label %2450
  ]

2450:                                             ; preds = %2448, %2448
  ret void

2451:                                             ; preds = %2448
  unreachable
}

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL29qqpsolver_findbeststepandmoveEPNS_10qqpbuffersEPNS_10sactivesetEPNS_9ae_vectorEdbldS5_lS5_S5_S5_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef, double noundef, i1 noundef zeroext, i64 noundef, double noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!14, !10, i64 0}
!14 = !{!"_ZTSN11alglib_impl10qqpbuffersE", !10, i64 0, !10, i64 8, !15, i64 16, !17, i64 96, !12, i64 464, !19, i64 472, !19, i64 480, !19, i64 488, !18, i64 496, !18, i64 560, !18, i64 624, !18, i64 688, !18, i64 752, !18, i64 816, !18, i64 880, !18, i64 944, !18, i64 1008, !18, i64 1072, !18, i64 1136, !18, i64 1200, !18, i64 1264, !20, i64 1328, !18, i64 5672, !10, i64 5736, !10, i64 5744, !15, i64 5752, !17, i64 5832, !18, i64 6200, !18, i64 6264, !18, i64 6328, !18, i64 6392, !18, i64 6456, !18, i64 6520, !18, i64 6584, !18, i64 6648, !18, i64 6712, !22, i64 6776, !10, i64 7272, !10, i64 7280, !10, i64 7288, !10, i64 7296}
!15 = !{!"_ZTSN11alglib_impl9ae_matrixE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !12, i64 32, !16, i64 40, !7, i64 72}
!16 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!17 = !{!"_ZTSN11alglib_impl12sparsematrixE", !18, i64 0, !18, i64 64, !18, i64 128, !18, i64 192, !18, i64 256, !10, i64 320, !10, i64 328, !10, i64 336, !10, i64 344, !10, i64 352, !10, i64 360}
!18 = !{!"_ZTSN11alglib_impl9ae_vectorE", !10, i64 0, !10, i64 8, !12, i64 16, !16, i64 24, !7, i64 56}
!19 = !{!"double", !7, i64 0}
!20 = !{!"_ZTSN11alglib_impl10sactivesetE", !10, i64 0, !10, i64 8, !18, i64 16, !12, i64 80, !18, i64 88, !18, i64 152, !18, i64 216, !12, i64 280, !15, i64 288, !15, i64 368, !15, i64 448, !10, i64 528, !18, i64 536, !10, i64 600, !10, i64 608, !12, i64 616, !12, i64 617, !18, i64 624, !18, i64 688, !18, i64 752, !18, i64 816, !15, i64 880, !10, i64 960, !10, i64 968, !18, i64 976, !18, i64 1040, !18, i64 1104, !18, i64 1168, !18, i64 1232, !18, i64 1296, !21, i64 1360, !18, i64 3000, !18, i64 3064, !18, i64 3128, !15, i64 3192, !18, i64 3272, !18, i64 3336, !18, i64 3400, !15, i64 3464, !15, i64 3544, !18, i64 3624, !18, i64 3688, !18, i64 3752, !15, i64 3816, !18, i64 3896, !18, i64 3960, !18, i64 4024, !18, i64 4088, !18, i64 4152, !18, i64 4216, !18, i64 4280}
!21 = !{!"_ZTSN11alglib_impl11snnlssolverE", !10, i64 0, !10, i64 8, !10, i64 16, !15, i64 24, !18, i64 104, !18, i64 168, !19, i64 232, !10, i64 240, !18, i64 248, !18, i64 312, !15, i64 376, !15, i64 456, !15, i64 536, !18, i64 616, !18, i64 680, !18, i64 744, !18, i64 808, !18, i64 872, !18, i64 936, !18, i64 1000, !18, i64 1064, !18, i64 1128, !18, i64 1192, !18, i64 1256, !18, i64 1320, !18, i64 1384, !18, i64 1448, !18, i64 1512, !18, i64 1576}
!22 = !{!"_ZTSN11alglib_impl13sparsebuffersE", !18, i64 0, !18, i64 64, !17, i64 128}
!23 = !{!14, !10, i64 7272}
!24 = !{!14, !10, i64 7280}
!25 = !{!14, !10, i64 7288}
!26 = !{!14, !10, i64 7296}
!27 = !{!7, !7, i64 0}
!28 = !{!19, !19, i64 0}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = distinct !{!31, !30}
!32 = !{!33, !12, i64 32}
!33 = !{!"_ZTSN11alglib_impl11qqpsettingsE", !19, i64 0, !19, i64 8, !19, i64 16, !10, i64 24, !12, i64 32, !12, i64 33, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64}
!34 = !{i8 0, i8 2}
!35 = !{}
!36 = !{!33, !12, i64 33}
!37 = distinct !{!37, !30}
!38 = !{!14, !10, i64 8}
!39 = !{!14, !19, i64 472}
!40 = !{!14, !19, i64 480}
!41 = !{!14, !19, i64 488}
!42 = distinct !{!42, !30}
!43 = distinct !{!43, !30}
!44 = !{!14, !12, i64 464}
!45 = distinct !{!45, !30}
!46 = distinct !{!46, !30}
!47 = distinct !{!47, !30}
!48 = distinct !{!48, !30}
!49 = distinct !{!49, !30}
!50 = distinct !{!50, !30}
!51 = !{!52, !19, i64 24}
!52 = !{!"_ZTSN11alglib_impl8ae_stateE", !10, i64 0, !19, i64 8, !19, i64 16, !19, i64 24, !6, i64 32, !16, i64 40, !6, i64 72, !53, i64 80, !6, i64 88, !54, i64 96, !6, i64 104, !6, i64 112, !6, i64 120}
!53 = !{!"_ZTSN11alglib_impl13ae_error_typeE", !7, i64 0}
!54 = !{!"long long", !7, i64 0}
!55 = !{!52, !19, i64 16}
!56 = distinct !{!56, !30}
!57 = distinct !{!57, !30}
!58 = !{!33, !10, i64 64}
!59 = distinct !{!59, !30}
!60 = distinct !{!60, !30}
!61 = distinct !{!61, !30}
!62 = distinct !{!62, !30}
!63 = distinct !{!63, !30}
!64 = distinct !{!64, !30}
!65 = !{!33, !10, i64 40}
!66 = !{!33, !10, i64 24}
!67 = !{!33, !19, i64 8}
!68 = !{!33, !19, i64 16}
!69 = distinct !{!69, !30}
!70 = distinct !{!70, !30}
!71 = !{!33, !19, i64 0}
!72 = distinct !{!72, !30}
!73 = !{!14, !10, i64 6712}
!74 = distinct !{!74, !30}
!75 = !{!33, !10, i64 48}
!76 = distinct !{!76, !30}
!77 = distinct !{!77, !30}
!78 = distinct !{!78, !30}
!79 = distinct !{!79, !30}


; 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.199 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.200 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.201 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.202 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.203 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.204 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.205 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.206 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.207 = external hidden unnamed_addr constant [36 x i8], align 1
@_ZN11alglib_implL26qqpsolver_quickqprestartcgE = external hidden local_unnamed_addr global i64, align 8
@.str.208 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.209 = external hidden unnamed_addr constant [29 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl17fblscholeskysolveEPNS_9ae_matrixEdlbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef, double noundef, i64 noundef, i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

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

declare noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double 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

declare noundef zeroext i1 @_ZN11alglib_impl20spdmatrixcholeskyrecEPNS_9ae_matrixEllbPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, i1 noundef zeroext, ptr noundef, ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

32:                                               ; preds = %16
  %33 = tail call noundef i64 @_ZN11alglib_impl14sparsegetnrowsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %1, ptr noundef %15)
  %34 = icmp eq i64 %33, %10
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %34, ptr noundef nonnull @.str.200, ptr noundef %15)
  %35 = tail call noundef i64 @_ZN11alglib_impl14sparsegetncolsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %1, ptr noundef %15)
  %36 = icmp eq i64 %35, %10
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %36, ptr noundef nonnull @.str.201, ptr noundef %15)
  br label %37

37:                                               ; preds = %32, %16
  %.not.not939 = icmp sgt i64 %10, 0
  br i1 %.not.not939, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %37
  %38 = getelementptr inbounds i8, ptr %8, i64 56
  br label %41

.preheader938:                                    ; preds = %51
  br i1 %.not.not939, label %.lr.ph943, label %._crit_edge

.lr.ph943:                                        ; preds = %.preheader938
  %39 = getelementptr inbounds i8, ptr %6, i64 56
  %40 = getelementptr inbounds i8, ptr %7, i64 56
  br label %54

41:                                               ; preds = %.lr.ph, %51
  %.0845940 = phi i64 [ 0, %.lr.ph ], [ %53, %51 ]
  %42 = load ptr, ptr %38, align 8, !tbaa !21
  %43 = getelementptr inbounds double, ptr %42, i64 %.0845940
  %44 = load double, ptr %43, align 8, !tbaa !22
  %45 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %44, ptr noundef %15)
  br i1 %45, label %46, label %51

46:                                               ; preds = %41
  %47 = load ptr, ptr %38, align 8, !tbaa !21
  %48 = getelementptr inbounds double, ptr %47, i64 %.0845940
  %49 = load double, ptr %48, align 8, !tbaa !22
  %50 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %49, double noundef 0.000000e+00)
  br label %51

51:                                               ; preds = %46, %41
  %52 = phi i1 [ false, %41 ], [ %50, %46 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %52, ptr noundef nonnull @.str.202, ptr noundef %15)
  %53 = add nuw nsw i64 %.0845940, 1
  %exitcond.not = icmp eq i64 %53, %10
  br i1 %exitcond.not, label %.preheader938, label %41, !llvm.loop !23

54:                                               ; preds = %.lr.ph943, %72
  %.1942 = phi i64 [ 0, %.lr.ph943 ], [ %73, %72 ]
  %55 = load ptr, ptr %39, align 8, !tbaa !21
  %56 = getelementptr inbounds double, ptr %55, i64 %.1942
  %57 = load double, ptr %56, align 8, !tbaa !22
  %58 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %57, ptr noundef %15)
  br i1 %58, label %59, label %72

59:                                               ; preds = %54
  %60 = load ptr, ptr %40, align 8, !tbaa !21
  %61 = getelementptr inbounds double, ptr %60, i64 %.1942
  %62 = load double, ptr %61, align 8, !tbaa !22
  %63 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %62, ptr noundef %15)
  br i1 %63, label %64, label %72

64:                                               ; preds = %59
  %65 = load ptr, ptr %39, align 8, !tbaa !21
  %66 = getelementptr inbounds double, ptr %65, i64 %.1942
  %67 = load double, ptr %66, align 8, !tbaa !22
  %68 = load ptr, ptr %40, align 8, !tbaa !21
  %69 = getelementptr inbounds double, ptr %68, i64 %.1942
  %70 = load double, ptr %69, align 8, !tbaa !22
  %71 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %67, double noundef %70)
  br i1 %71, label %.loopexit.sink.split, label %72

72:                                               ; preds = %54, %59, %64
  %73 = add nuw nsw i64 %.1942, 1
  %exitcond1055.not = icmp eq i64 %73, %10
  br i1 %exitcond1055.not, label %._crit_edge, label %54, !llvm.loop !25

._crit_edge:                                      ; preds = %72, %37, %.preheader938
  %74 = add nsw i64 %10, -1
  %75 = getelementptr inbounds i8, ptr %11, i64 32
  %76 = load i8, ptr %75, align 8, !tbaa !26, !range !28, !noundef !29
  %77 = trunc nuw i8 %76 to i1
  br i1 %77, label %82, label %78

78:                                               ; preds = %._crit_edge
  %79 = getelementptr inbounds i8, ptr %11, i64 33
  %80 = load i8, ptr %79, align 1, !tbaa !30, !range !28, !noundef !29
  %81 = trunc nuw i8 %80 to i1
  br label %82

82:                                               ; preds = %78, %._crit_edge
  %83 = phi i1 [ true, %._crit_edge ], [ %81, %78 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %83, ptr noundef nonnull @.str.203, ptr noundef %15)
  %84 = getelementptr inbounds i8, ptr %12, i64 560
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %84, i64 noundef %10, ptr noundef %15)
  %85 = getelementptr inbounds i8, ptr %12, i64 624
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %85, i64 noundef %10, ptr noundef %15)
  %86 = getelementptr inbounds i8, ptr %12, i64 688
  tail call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %86, i64 noundef %10, ptr noundef %15)
  %87 = getelementptr inbounds i8, ptr %12, i64 752
  tail call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %87, i64 noundef %10, ptr noundef %15)
  %88 = getelementptr inbounds i8, ptr %12, i64 816
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %88, i64 noundef %10, ptr noundef %15)
  %89 = getelementptr inbounds i8, ptr %12, i64 880
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %89, i64 noundef %10, ptr noundef %15)
  %90 = getelementptr inbounds i8, ptr %12, i64 1008
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %90, i64 noundef %10, ptr noundef %15)
  %91 = getelementptr inbounds i8, ptr %12, i64 944
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %91, i64 noundef %10, ptr noundef %15)
  %92 = getelementptr inbounds i8, ptr %12, i64 1200
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %92, i64 noundef %10, ptr noundef %15)
  %93 = getelementptr inbounds i8, ptr %12, i64 1264
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %93, i64 noundef %10, ptr noundef %15)
  %94 = getelementptr inbounds i8, ptr %12, i64 1072
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %94, i64 noundef %10, ptr noundef %15)
  %95 = getelementptr inbounds i8, ptr %12, i64 1136
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %95, i64 noundef %10, ptr noundef %15)
  %96 = getelementptr inbounds i8, ptr %12, i64 6584
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %96, i64 noundef %10, ptr noundef %15)
  %97 = getelementptr inbounds i8, ptr %12, i64 6648
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %97, i64 noundef %10, ptr noundef %15)
  %98 = getelementptr inbounds i8, ptr %12, i64 6712
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %98, i64 noundef 15, ptr noundef %15)
  %99 = getelementptr inbounds i8, ptr %12, i64 1328
  tail call void @_ZN11alglib_impl7sasinitElPNS_10sactivesetEPNS_8ae_stateE(i64 noundef %10, ptr noundef nonnull %99, ptr noundef %15)
  %100 = getelementptr inbounds i8, ptr %12, i64 496
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %100, i64 noundef %10, ptr noundef %15)
  br i1 %.not.not939, label %.lr.ph947, label %._crit_edge948

.lr.ph947:                                        ; preds = %82
  %101 = getelementptr inbounds i8, ptr %8, i64 56
  %102 = getelementptr inbounds i8, ptr %5, i64 56
  %103 = getelementptr inbounds i8, ptr %12, i64 552
  %xtraiter = and i64 %10, 1
  %104 = icmp eq i64 %10, 1
  br i1 %104, label %._crit_edge948.loopexit.unr-lcssa, label %.lr.ph947.new

.lr.ph947.new:                                    ; preds = %.lr.ph947
  %unroll_iter = and i64 %10, 9223372036854775806
  br label %105

105:                                              ; preds = %105, %.lr.ph947.new
  %.2945 = phi i64 [ 0, %.lr.ph947.new ], [ %125, %105 ]
  %niter = phi i64 [ 0, %.lr.ph947.new ], [ %niter.next.1, %105 ]
  %106 = load ptr, ptr %101, align 8, !tbaa !21
  %107 = getelementptr inbounds double, ptr %106, i64 %.2945
  %108 = load double, ptr %107, align 8, !tbaa !22
  %109 = load ptr, ptr %102, align 8, !tbaa !21
  %110 = getelementptr inbounds double, ptr %109, i64 %.2945
  %111 = load double, ptr %110, align 8, !tbaa !22
  %112 = fmul double %108, %111
  %113 = load ptr, ptr %103, align 8, !tbaa !21
  %114 = getelementptr inbounds double, ptr %113, i64 %.2945
  store double %112, ptr %114, align 8, !tbaa !22
  %115 = or disjoint i64 %.2945, 1
  %116 = load ptr, ptr %101, align 8, !tbaa !21
  %117 = getelementptr inbounds double, ptr %116, i64 %115
  %118 = load double, ptr %117, align 8, !tbaa !22
  %119 = load ptr, ptr %102, align 8, !tbaa !21
  %120 = getelementptr inbounds double, ptr %119, i64 %115
  %121 = load double, ptr %120, align 8, !tbaa !22
  %122 = fmul double %118, %121
  %123 = load ptr, ptr %103, align 8, !tbaa !21
  %124 = getelementptr inbounds double, ptr %123, i64 %115
  store double %122, ptr %124, align 8, !tbaa !22
  %125 = add nuw nsw i64 %.2945, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge948.loopexit.unr-lcssa, label %105, !llvm.loop !31

._crit_edge948.loopexit.unr-lcssa:                ; preds = %105, %.lr.ph947
  %.2945.unr = phi i64 [ 0, %.lr.ph947 ], [ %125, %105 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge948, label %._crit_edge948.loopexit.epilog-lcssa

._crit_edge948.loopexit.epilog-lcssa:             ; preds = %._crit_edge948.loopexit.unr-lcssa
  %126 = load ptr, ptr %101, align 8, !tbaa !21
  %127 = getelementptr inbounds double, ptr %126, i64 %.2945.unr
  %128 = load double, ptr %127, align 8, !tbaa !22
  %129 = load ptr, ptr %102, align 8, !tbaa !21
  %130 = getelementptr inbounds double, ptr %129, i64 %.2945.unr
  %131 = load double, ptr %130, align 8, !tbaa !22
  %132 = fmul double %128, %131
  %133 = load ptr, ptr %103, align 8, !tbaa !21
  %134 = getelementptr inbounds double, ptr %133, i64 %.2945.unr
  store double %132, ptr %134, align 8, !tbaa !22
  br label %._crit_edge948

._crit_edge948:                                   ; preds = %._crit_edge948.loopexit.epilog-lcssa, %._crit_edge948.loopexit.unr-lcssa, %82
  %135 = getelementptr inbounds i8, ptr %12, i64 8
  store i64 -99, ptr %135, align 8, !tbaa !32
  br i1 %25, label %136, label %.loopexit937

136:                                              ; preds = %._crit_edge948
  %137 = getelementptr inbounds i8, ptr %12, i64 16
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %137, i64 noundef %10, i64 noundef %10, ptr noundef %15)
  tail call void @_ZN11alglib_impl7cqmgetaEPNS_20convexquadraticmodelEPNS_9ae_matrixEPNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %137, ptr noundef %15)
  store i64 0, ptr %135, align 8, !tbaa !32
  %138 = getelementptr inbounds i8, ptr %12, i64 472
  %139 = getelementptr inbounds i8, ptr %12, i64 480
  %140 = getelementptr inbounds i8, ptr %12, i64 488
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %138, i8 0, i64 24, i1 false)
  br i1 %.not.not939, label %.preheader936.lr.ph, label %.loopexit931.thread

.preheader936.lr.ph:                              ; preds = %136
  %141 = getelementptr inbounds i8, ptr %8, i64 56
  %142 = getelementptr inbounds i8, ptr %12, i64 88
  br label %.preheader936.us

.preheader936.us:                                 ; preds = %._crit_edge952.us, %.preheader936.lr.ph
  %.3954.us = phi i64 [ 0, %.preheader936.lr.ph ], [ %168, %._crit_edge952.us ]
  br label %143

143:                                              ; preds = %.preheader936.us, %143
  %.0846950.us = phi i64 [ 0, %.preheader936.us ], [ %167, %143 ]
  %144 = load ptr, ptr %141, align 8, !tbaa !21
  %145 = getelementptr inbounds double, ptr %144, i64 %.3954.us
  %146 = load double, ptr %145, align 8, !tbaa !22
  %147 = load ptr, ptr %142, align 8, !tbaa !21
  %148 = getelementptr inbounds ptr, ptr %147, i64 %.3954.us
  %149 = load ptr, ptr %148, align 8, !tbaa !33
  %150 = getelementptr inbounds double, ptr %149, i64 %.0846950.us
  %151 = load double, ptr %150, align 8, !tbaa !22
  %152 = fmul double %146, %151
  %153 = getelementptr inbounds double, ptr %144, i64 %.0846950.us
  %154 = load double, ptr %153, align 8, !tbaa !22
  %155 = fmul double %152, %154
  %156 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %155, ptr noundef %15)
  %157 = load ptr, ptr %142, align 8, !tbaa !21
  %158 = getelementptr inbounds ptr, ptr %157, i64 %.3954.us
  %159 = load ptr, ptr %158, align 8, !tbaa !33
  %160 = getelementptr inbounds double, ptr %159, i64 %.0846950.us
  store double %155, ptr %160, align 8, !tbaa !22
  %161 = load double, ptr %138, align 8, !tbaa !34
  %162 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %161, double noundef %156, ptr noundef %15)
  store double %162, ptr %138, align 8, !tbaa !34
  %163 = load double, ptr %139, align 8, !tbaa !35
  %164 = fadd double %156, %163
  store double %164, ptr %139, align 8, !tbaa !35
  %165 = load double, ptr %140, align 8, !tbaa !36
  %166 = tail call double @llvm.fmuladd.f64(double %156, double %156, double %165)
  store double %166, ptr %140, align 8, !tbaa !36
  %167 = add nuw nsw i64 %.0846950.us, 1
  %exitcond1057.not = icmp eq i64 %167, %10
  br i1 %exitcond1057.not, label %._crit_edge952.us, label %143, !llvm.loop !37

._crit_edge952.us:                                ; preds = %143
  %168 = add nuw nsw i64 %.3954.us, 1
  %exitcond1058.not = icmp eq i64 %168, %10
  br i1 %exitcond1058.not, label %.loopexit937, label %.preheader936.us, !llvm.loop !38

.loopexit937:                                     ; preds = %._crit_edge952.us, %._crit_edge948
  br i1 %26, label %169, label %.loopexit935

169:                                              ; preds = %.loopexit937
  %170 = getelementptr inbounds i8, ptr %12, i64 96
  tail call void @_ZN11alglib_impl18sparsecopytosksbufEPNS_12sparsematrixES1_PNS_8ae_stateE(ptr noundef %1, ptr noundef nonnull %170, ptr noundef %15)
  br i1 %4, label %171, label %172

171:                                              ; preds = %169
  tail call void @_ZN11alglib_impl18sparsetransposesksEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef nonnull %170, ptr noundef %15)
  br label %172

172:                                              ; preds = %171, %169
  store i64 1, ptr %135, align 8, !tbaa !32
  %173 = getelementptr inbounds i8, ptr %12, i64 464
  store i8 0, ptr %173, align 8, !tbaa !39
  %174 = getelementptr inbounds i8, ptr %12, i64 472
  %175 = getelementptr inbounds i8, ptr %12, i64 480
  %176 = getelementptr inbounds i8, ptr %12, i64 488
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %174, i8 0, i64 24, i1 false)
  br i1 %.not.not939, label %.lr.ph964, label %.loopexit931.thread

.lr.ph964:                                        ; preds = %172
  %177 = getelementptr inbounds i8, ptr %12, i64 280
  %178 = getelementptr inbounds i8, ptr %12, i64 344
  %179 = getelementptr inbounds i8, ptr %8, i64 56
  %180 = getelementptr inbounds i8, ptr %12, i64 152
  br label %181

181:                                              ; preds = %.lr.ph964, %._crit_edge960
  %.4962 = phi i64 [ 0, %.lr.ph964 ], [ %213, %._crit_edge960 ]
  %182 = load ptr, ptr %178, align 8, !tbaa !21
  %183 = getelementptr inbounds i64, ptr %182, i64 %.4962
  %184 = load i64, ptr %183, align 8, !tbaa !5
  %.not899955 = icmp slt i64 %184, 0
  br i1 %.not899955, label %._crit_edge960, label %.lr.ph959.preheader

.lr.ph959.preheader:                              ; preds = %181
  %185 = sub nsw i64 %.4962, %184
  %186 = load ptr, ptr %177, align 8, !tbaa !21
  %187 = getelementptr inbounds i64, ptr %186, i64 %.4962
  %188 = load i64, ptr %187, align 8, !tbaa !5
  br label %.lr.ph959

.lr.ph959:                                        ; preds = %.lr.ph959.preheader, %.lr.ph959
  %.1847957 = phi i64 [ %212, %.lr.ph959 ], [ %185, %.lr.ph959.preheader ]
  %.0869956 = phi i64 [ %211, %.lr.ph959 ], [ %188, %.lr.ph959.preheader ]
  %189 = load ptr, ptr %179, align 8, !tbaa !21
  %190 = getelementptr inbounds double, ptr %189, i64 %.4962
  %191 = load double, ptr %190, align 8, !tbaa !22
  %192 = load ptr, ptr %180, align 8, !tbaa !21
  %193 = getelementptr inbounds double, ptr %192, i64 %.0869956
  %194 = load double, ptr %193, align 8, !tbaa !22
  %195 = fmul double %191, %194
  %196 = getelementptr inbounds double, ptr %189, i64 %.1847957
  %197 = load double, ptr %196, align 8, !tbaa !22
  %198 = fmul double %195, %197
  %199 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %198, ptr noundef %15)
  %200 = load ptr, ptr %180, align 8, !tbaa !21
  %201 = getelementptr inbounds double, ptr %200, i64 %.0869956
  store double %198, ptr %201, align 8, !tbaa !22
  %202 = icmp eq i64 %.4962, %.1847957
  %203 = load double, ptr %174, align 8, !tbaa !34
  %204 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %203, double noundef %199, ptr noundef %15)
  %205 = load double, ptr %175, align 8, !tbaa !35
  %206 = load double, ptr %176, align 8, !tbaa !36
  %207 = tail call double @llvm.fmuladd.f64(double %199, double 2.000000e+00, double %205)
  %208 = fmul double %199, 2.000000e+00
  %209 = fadd double %199, %205
  %.sink1087 = select i1 %202, double %199, double %208
  %.sink = select i1 %202, double %209, double %207
  %210 = tail call double @llvm.fmuladd.f64(double %.sink1087, double %199, double %206)
  store double %204, ptr %174, align 8
  store double %.sink, ptr %175, align 8
  store double %210, ptr %176, align 8, !tbaa !36
  %211 = add nsw i64 %.0869956, 1
  %212 = add nsw i64 %.1847957, 1
  %.not899.not = icmp slt i64 %.1847957, %.4962
  br i1 %.not899.not, label %.lr.ph959, label %._crit_edge960, !llvm.loop !40

._crit_edge960:                                   ; preds = %.lr.ph959, %181
  %213 = add nuw nsw i64 %.4962, 1
  %exitcond1059.not = icmp eq i64 %213, %10
  br i1 %exitcond1059.not, label %.loopexit935, label %181, !llvm.loop !41

.loopexit935:                                     ; preds = %._crit_edge960, %.loopexit937
  br i1 %27, label %214, label %.loopexit931

214:                                              ; preds = %.loopexit935
  %215 = getelementptr inbounds i8, ptr %12, i64 16
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %215, i64 noundef %10, i64 noundef %10, ptr noundef %15)
  store i64 0, ptr %135, align 8, !tbaa !32
  %216 = getelementptr inbounds i8, ptr %12, i64 472
  %217 = getelementptr inbounds i8, ptr %12, i64 480
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %216, i8 0, i64 24, i1 false)
  br i1 %4, label %.preheader930, label %.preheader933

.preheader933:                                    ; preds = %214
  br i1 %.not.not939, label %.preheader932.lr.ph, label %.loopexit931.thread

.preheader932.lr.ph:                              ; preds = %.preheader933
  %218 = getelementptr inbounds i8, ptr %8, i64 56
  %219 = getelementptr inbounds i8, ptr %2, i64 72
  %220 = getelementptr inbounds i8, ptr %12, i64 88
  br label %.preheader932

.preheader930:                                    ; preds = %214
  br i1 %.not.not939, label %.preheader929.lr.ph, label %.loopexit931.thread

.preheader929.lr.ph:                              ; preds = %.preheader930
  %221 = getelementptr inbounds i8, ptr %8, i64 56
  %222 = getelementptr inbounds i8, ptr %2, i64 72
  %223 = getelementptr inbounds i8, ptr %12, i64 88
  br label %.preheader929

.preheader929:                                    ; preds = %.preheader929.lr.ph, %258
  %.5970 = phi i64 [ 0, %.preheader929.lr.ph ], [ %259, %258 ]
  %224 = uitofp nneg i64 %.5970 to double
  br label %225

225:                                              ; preds = %.preheader929, %225
  %.2848968 = phi i64 [ %.5970, %.preheader929 ], [ %257, %225 ]
  %226 = load ptr, ptr %221, align 8, !tbaa !21
  %227 = getelementptr inbounds double, ptr %226, i64 %.5970
  %228 = load double, ptr %227, align 8, !tbaa !22
  %229 = load ptr, ptr %222, align 8, !tbaa !21
  %230 = getelementptr inbounds ptr, ptr %229, i64 %.5970
  %231 = load ptr, ptr %230, align 8, !tbaa !33
  %232 = getelementptr inbounds double, ptr %231, i64 %.2848968
  %233 = load double, ptr %232, align 8, !tbaa !22
  %234 = fmul double %228, %233
  %235 = getelementptr inbounds double, ptr %226, i64 %.2848968
  %236 = load double, ptr %235, align 8, !tbaa !22
  %237 = fmul double %234, %236
  %238 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %237, ptr noundef %15)
  %239 = load ptr, ptr %223, align 8, !tbaa !21
  %240 = getelementptr inbounds ptr, ptr %239, i64 %.5970
  %241 = load ptr, ptr %240, align 8, !tbaa !33
  %242 = getelementptr inbounds double, ptr %241, i64 %.2848968
  store double %237, ptr %242, align 8, !tbaa !22
  %243 = load ptr, ptr %223, align 8, !tbaa !21
  %244 = getelementptr inbounds ptr, ptr %243, i64 %.2848968
  %245 = load ptr, ptr %244, align 8, !tbaa !33
  %246 = getelementptr inbounds double, ptr %245, i64 %.5970
  store double %237, ptr %246, align 8, !tbaa !22
  %247 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %224, double noundef %237)
  %. = select i1 %247, double 1.000000e+00, double 2.000000e+00
  %248 = load double, ptr %216, align 8, !tbaa !34
  %249 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %248, double noundef %238, ptr noundef %15)
  store double %249, ptr %216, align 8, !tbaa !34
  %250 = fmul double %238, %238
  %251 = load <2 x double>, ptr %217, align 8, !tbaa !22
  %252 = insertelement <2 x double> poison, double %238, i64 0
  %253 = insertelement <2 x double> %252, double %250, i64 1
  %254 = insertelement <2 x double> poison, double %., i64 0
  %255 = shufflevector <2 x double> %254, <2 x double> poison, <2 x i32> zeroinitializer
  %256 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %253, <2 x double> %255, <2 x double> %251)
  store <2 x double> %256, ptr %217, align 8, !tbaa !22
  %257 = add nuw nsw i64 %.2848968, 1
  %.not898.not = icmp slt i64 %257, %10
  br i1 %.not898.not, label %225, label %258, !llvm.loop !42

258:                                              ; preds = %225
  %259 = add nuw nsw i64 %.5970, 1
  %exitcond1062.not = icmp eq i64 %259, %10
  br i1 %exitcond1062.not, label %.loopexit931, label %.preheader929, !llvm.loop !43

.preheader932:                                    ; preds = %.preheader932.lr.ph, %294
  %indvars.iv = phi i64 [ 1, %.preheader932.lr.ph ], [ %indvars.iv.next, %294 ]
  %.6967 = phi i64 [ 0, %.preheader932.lr.ph ], [ %295, %294 ]
  %260 = uitofp nneg i64 %.6967 to double
  br label %261

261:                                              ; preds = %.preheader932, %261
  %.3849965 = phi i64 [ 0, %.preheader932 ], [ %293, %261 ]
  %262 = load ptr, ptr %218, align 8, !tbaa !21
  %263 = getelementptr inbounds double, ptr %262, i64 %.6967
  %264 = load double, ptr %263, align 8, !tbaa !22
  %265 = load ptr, ptr %219, align 8, !tbaa !21
  %266 = getelementptr inbounds ptr, ptr %265, i64 %.6967
  %267 = load ptr, ptr %266, align 8, !tbaa !33
  %268 = getelementptr inbounds double, ptr %267, i64 %.3849965
  %269 = load double, ptr %268, align 8, !tbaa !22
  %270 = fmul double %264, %269
  %271 = getelementptr inbounds double, ptr %262, i64 %.3849965
  %272 = load double, ptr %271, align 8, !tbaa !22
  %273 = fmul double %270, %272
  %274 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %273, ptr noundef %15)
  %275 = load ptr, ptr %220, align 8, !tbaa !21
  %276 = getelementptr inbounds ptr, ptr %275, i64 %.6967
  %277 = load ptr, ptr %276, align 8, !tbaa !33
  %278 = getelementptr inbounds double, ptr %277, i64 %.3849965
  store double %273, ptr %278, align 8, !tbaa !22
  %279 = load ptr, ptr %220, align 8, !tbaa !21
  %280 = getelementptr inbounds ptr, ptr %279, i64 %.3849965
  %281 = load ptr, ptr %280, align 8, !tbaa !33
  %282 = getelementptr inbounds double, ptr %281, i64 %.6967
  store double %273, ptr %282, align 8, !tbaa !22
  %283 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %260, double noundef %273)
  %.901 = select i1 %283, double 1.000000e+00, double 2.000000e+00
  %284 = load double, ptr %216, align 8, !tbaa !34
  %285 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %284, double noundef %274, ptr noundef %15)
  store double %285, ptr %216, align 8, !tbaa !34
  %286 = fmul double %274, %274
  %287 = load <2 x double>, ptr %217, align 8, !tbaa !22
  %288 = insertelement <2 x double> poison, double %274, i64 0
  %289 = insertelement <2 x double> %288, double %286, i64 1
  %290 = insertelement <2 x double> poison, double %.901, i64 0
  %291 = shufflevector <2 x double> %290, <2 x double> poison, <2 x i32> zeroinitializer
  %292 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %289, <2 x double> %291, <2 x double> %287)
  store <2 x double> %292, ptr %217, align 8, !tbaa !22
  %293 = add nuw nsw i64 %.3849965, 1
  %exitcond1060.not = icmp eq i64 %293, %indvars.iv
  br i1 %exitcond1060.not, label %294, label %261, !llvm.loop !44

294:                                              ; preds = %261
  %295 = add nuw nsw i64 %.6967, 1
  %indvars.iv.next = add nuw i64 %indvars.iv, 1
  %exitcond1061.not = icmp eq i64 %295, %10
  br i1 %exitcond1061.not, label %.loopexit931, label %.preheader932, !llvm.loop !45

.loopexit931.thread:                              ; preds = %.preheader933, %.preheader930, %172, %136
  %296 = load i64, ptr %135, align 8, !tbaa !32
  %297 = icmp sgt i64 %296, -1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %297, ptr noundef nonnull @.str.204, ptr noundef %15)
  br label %._crit_edge978

.loopexit931:                                     ; preds = %294, %258, %.loopexit935
  %298 = load i64, ptr %135, align 8, !tbaa !32
  %299 = icmp sgt i64 %298, -1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %299, ptr noundef nonnull @.str.204, ptr noundef %15)
  br i1 %.not.not939, label %.lr.ph974, label %._crit_edge978

.lr.ph974:                                        ; preds = %.loopexit931
  %300 = getelementptr inbounds i8, ptr %6, i64 56
  %301 = getelementptr inbounds i8, ptr %12, i64 744
  %302 = getelementptr inbounds i8, ptr %15, i64 24
  %303 = getelementptr inbounds i8, ptr %12, i64 616
  %304 = getelementptr inbounds i8, ptr %9, i64 56
  %305 = getelementptr inbounds i8, ptr %8, i64 56
  %306 = getelementptr inbounds i8, ptr %7, i64 56
  %307 = getelementptr inbounds i8, ptr %12, i64 808
  %308 = getelementptr inbounds i8, ptr %15, i64 16
  %309 = getelementptr inbounds i8, ptr %12, i64 680
  br label %320

.preheader928:                                    ; preds = %376
  br i1 %.not.not939, label %.lr.ph977, label %._crit_edge978

.lr.ph977:                                        ; preds = %.preheader928
  %310 = getelementptr inbounds i8, ptr %13, i64 56
  %311 = getelementptr inbounds i8, ptr %9, i64 56
  %312 = getelementptr inbounds i8, ptr %8, i64 56
  %313 = getelementptr inbounds i8, ptr %12, i64 872
  %314 = getelementptr inbounds i8, ptr %12, i64 744
  %315 = getelementptr inbounds i8, ptr %12, i64 616
  %316 = getelementptr inbounds i8, ptr %12, i64 808
  %317 = getelementptr inbounds i8, ptr %12, i64 680
  %318 = getelementptr inbounds i8, ptr %6, i64 56
  %319 = getelementptr inbounds i8, ptr %7, i64 56
  br label %380

320:                                              ; preds = %.lr.ph974, %376
  %.7972 = phi i64 [ 0, %.lr.ph974 ], [ %379, %376 ]
  %321 = load ptr, ptr %300, align 8, !tbaa !21
  %322 = getelementptr inbounds double, ptr %321, i64 %.7972
  %323 = load double, ptr %322, align 8, !tbaa !22
  %324 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %323, ptr noundef %15)
  %325 = load ptr, ptr %301, align 8, !tbaa !21
  %326 = getelementptr inbounds i8, ptr %325, i64 %.7972
  %327 = zext i1 %324 to i8
  store i8 %327, ptr %326, align 1, !tbaa !46
  %328 = load ptr, ptr %301, align 8, !tbaa !21
  %329 = getelementptr inbounds i8, ptr %328, i64 %.7972
  %330 = load i8, ptr %329, align 1, !tbaa !46, !range !28, !noundef !29
  %331 = trunc nuw i8 %330 to i1
  %332 = load ptr, ptr %300, align 8, !tbaa !21
  %333 = getelementptr inbounds double, ptr %332, i64 %.7972
  %334 = load double, ptr %333, align 8, !tbaa !22
  br i1 %331, label %335, label %344

335:                                              ; preds = %320
  %336 = load ptr, ptr %304, align 8, !tbaa !21
  %337 = getelementptr inbounds double, ptr %336, i64 %.7972
  %338 = load double, ptr %337, align 8, !tbaa !22
  %339 = fsub double %334, %338
  %340 = load ptr, ptr %305, align 8, !tbaa !21
  %341 = getelementptr inbounds double, ptr %340, i64 %.7972
  %342 = load double, ptr %341, align 8, !tbaa !22
  %343 = fdiv double %339, %342
  br label %347

344:                                              ; preds = %320
  %345 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isneginfEdPNS_8ae_stateE(double noundef %334, ptr noundef %15)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %345, ptr noundef nonnull @.str.205, ptr noundef %15)
  %346 = load double, ptr %302, align 8, !tbaa !47
  br label %347

347:                                              ; preds = %344, %335
  %.sink1088 = phi double [ %346, %344 ], [ %343, %335 ]
  %348 = load ptr, ptr %303, align 8, !tbaa !21
  %349 = getelementptr inbounds double, ptr %348, i64 %.7972
  store double %.sink1088, ptr %349, align 8, !tbaa !22
  %350 = load ptr, ptr %306, align 8, !tbaa !21
  %351 = getelementptr inbounds double, ptr %350, i64 %.7972
  %352 = load double, ptr %351, align 8, !tbaa !22
  %353 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %352, ptr noundef %15)
  %354 = load ptr, ptr %307, align 8, !tbaa !21
  %355 = getelementptr inbounds i8, ptr %354, i64 %.7972
  %356 = zext i1 %353 to i8
  store i8 %356, ptr %355, align 1, !tbaa !46
  %357 = load ptr, ptr %307, align 8, !tbaa !21
  %358 = getelementptr inbounds i8, ptr %357, i64 %.7972
  %359 = load i8, ptr %358, align 1, !tbaa !46, !range !28, !noundef !29
  %360 = trunc nuw i8 %359 to i1
  %361 = load ptr, ptr %306, align 8, !tbaa !21
  %362 = getelementptr inbounds double, ptr %361, i64 %.7972
  %363 = load double, ptr %362, align 8, !tbaa !22
  br i1 %360, label %364, label %373

364:                                              ; preds = %347
  %365 = load ptr, ptr %304, align 8, !tbaa !21
  %366 = getelementptr inbounds double, ptr %365, i64 %.7972
  %367 = load double, ptr %366, align 8, !tbaa !22
  %368 = fsub double %363, %367
  %369 = load ptr, ptr %305, align 8, !tbaa !21
  %370 = getelementptr inbounds double, ptr %369, i64 %.7972
  %371 = load double, ptr %370, align 8, !tbaa !22
  %372 = fdiv double %368, %371
  br label %376

373:                                              ; preds = %347
  %374 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isposinfEdPNS_8ae_stateE(double noundef %363, ptr noundef %15)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %374, ptr noundef nonnull @.str.206, ptr noundef %15)
  %375 = load double, ptr %308, align 8, !tbaa !51
  br label %376

376:                                              ; preds = %364, %373
  %.sink1091 = phi double [ %372, %364 ], [ %375, %373 ]
  %377 = load ptr, ptr %309, align 8, !tbaa !21
  %378 = getelementptr inbounds double, ptr %377, i64 %.7972
  store double %.sink1091, ptr %378, align 8, !tbaa !22
  %379 = add nuw nsw i64 %.7972, 1
  %exitcond1063.not = icmp eq i64 %379, %10
  br i1 %exitcond1063.not, label %.preheader928, label %320, !llvm.loop !52

380:                                              ; preds = %.lr.ph977, %469
  %.8976 = phi i64 [ 0, %.lr.ph977 ], [ %470, %469 ]
  %381 = load ptr, ptr %310, align 8, !tbaa !21
  %382 = getelementptr inbounds double, ptr %381, i64 %.8976
  %383 = load double, ptr %382, align 8, !tbaa !22
  %384 = load ptr, ptr %311, align 8, !tbaa !21
  %385 = getelementptr inbounds double, ptr %384, i64 %.8976
  %386 = load double, ptr %385, align 8, !tbaa !22
  %387 = fsub double %383, %386
  %388 = load ptr, ptr %312, align 8, !tbaa !21
  %389 = getelementptr inbounds double, ptr %388, i64 %.8976
  %390 = load double, ptr %389, align 8, !tbaa !22
  %391 = fdiv double %387, %390
  %392 = load ptr, ptr %313, align 8, !tbaa !21
  %393 = getelementptr inbounds double, ptr %392, i64 %.8976
  store double %391, ptr %393, align 8, !tbaa !22
  %394 = load ptr, ptr %314, align 8, !tbaa !21
  %395 = getelementptr inbounds i8, ptr %394, i64 %.8976
  %396 = load i8, ptr %395, align 1, !tbaa !46, !range !28, !noundef !29
  %397 = trunc nuw i8 %396 to i1
  br i1 %397, label %398, label %412

398:                                              ; preds = %380
  %399 = load ptr, ptr %313, align 8, !tbaa !21
  %400 = getelementptr inbounds double, ptr %399, i64 %.8976
  %401 = load double, ptr %400, align 8, !tbaa !22
  %402 = load ptr, ptr %315, align 8, !tbaa !21
  %403 = getelementptr inbounds double, ptr %402, i64 %.8976
  %404 = load double, ptr %403, align 8, !tbaa !22
  %405 = tail call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %401, double noundef %404)
  br i1 %405, label %406, label %412

406:                                              ; preds = %398
  %407 = load ptr, ptr %315, align 8, !tbaa !21
  %408 = getelementptr inbounds double, ptr %407, i64 %.8976
  %409 = load double, ptr %408, align 8, !tbaa !22
  %410 = load ptr, ptr %313, align 8, !tbaa !21
  %411 = getelementptr inbounds double, ptr %410, i64 %.8976
  store double %409, ptr %411, align 8, !tbaa !22
  br label %412

412:                                              ; preds = %406, %398, %380
  %413 = load ptr, ptr %316, align 8, !tbaa !21
  %414 = getelementptr inbounds i8, ptr %413, i64 %.8976
  %415 = load i8, ptr %414, align 1, !tbaa !46, !range !28, !noundef !29
  %416 = trunc nuw i8 %415 to i1
  br i1 %416, label %417, label %431

417:                                              ; preds = %412
  %418 = load ptr, ptr %313, align 8, !tbaa !21
  %419 = getelementptr inbounds double, ptr %418, i64 %.8976
  %420 = load double, ptr %419, align 8, !tbaa !22
  %421 = load ptr, ptr %317, align 8, !tbaa !21
  %422 = getelementptr inbounds double, ptr %421, i64 %.8976
  %423 = load double, ptr %422, align 8, !tbaa !22
  %424 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %420, double noundef %423)
  br i1 %424, label %425, label %431

425:                                              ; preds = %417
  %426 = load ptr, ptr %317, align 8, !tbaa !21
  %427 = getelementptr inbounds double, ptr %426, i64 %.8976
  %428 = load double, ptr %427, align 8, !tbaa !22
  %429 = load ptr, ptr %313, align 8, !tbaa !21
  %430 = getelementptr inbounds double, ptr %429, i64 %.8976
  store double %428, ptr %430, align 8, !tbaa !22
  br label %431

431:                                              ; preds = %425, %417, %412
  %432 = load ptr, ptr %314, align 8, !tbaa !21
  %433 = getelementptr inbounds i8, ptr %432, i64 %.8976
  %434 = load i8, ptr %433, align 1, !tbaa !46, !range !28, !noundef !29
  %435 = trunc nuw i8 %434 to i1
  br i1 %435, label %436, label %450

436:                                              ; preds = %431
  %437 = load ptr, ptr %310, align 8, !tbaa !21
  %438 = getelementptr inbounds double, ptr %437, i64 %.8976
  %439 = load double, ptr %438, align 8, !tbaa !22
  %440 = load ptr, ptr %318, align 8, !tbaa !21
  %441 = getelementptr inbounds double, ptr %440, i64 %.8976
  %442 = load double, ptr %441, align 8, !tbaa !22
  %443 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %439, double noundef %442)
  br i1 %443, label %444, label %450

444:                                              ; preds = %436
  %445 = load ptr, ptr %315, align 8, !tbaa !21
  %446 = getelementptr inbounds double, ptr %445, i64 %.8976
  %447 = load double, ptr %446, align 8, !tbaa !22
  %448 = load ptr, ptr %313, align 8, !tbaa !21
  %449 = getelementptr inbounds double, ptr %448, i64 %.8976
  store double %447, ptr %449, align 8, !tbaa !22
  br label %450

450:                                              ; preds = %444, %436, %431
  %451 = load ptr, ptr %316, align 8, !tbaa !21
  %452 = getelementptr inbounds i8, ptr %451, i64 %.8976
  %453 = load i8, ptr %452, align 1, !tbaa !46, !range !28, !noundef !29
  %454 = trunc nuw i8 %453 to i1
  br i1 %454, label %455, label %469

455:                                              ; preds = %450
  %456 = load ptr, ptr %310, align 8, !tbaa !21
  %457 = getelementptr inbounds double, ptr %456, i64 %.8976
  %458 = load double, ptr %457, align 8, !tbaa !22
  %459 = load ptr, ptr %319, align 8, !tbaa !21
  %460 = getelementptr inbounds double, ptr %459, i64 %.8976
  %461 = load double, ptr %460, align 8, !tbaa !22
  %462 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %458, double noundef %461)
  br i1 %462, label %463, label %469

463:                                              ; preds = %455
  %464 = load ptr, ptr %317, align 8, !tbaa !21
  %465 = getelementptr inbounds double, ptr %464, i64 %.8976
  %466 = load double, ptr %465, align 8, !tbaa !22
  %467 = load ptr, ptr %313, align 8, !tbaa !21
  %468 = getelementptr inbounds double, ptr %467, i64 %.8976
  store double %466, ptr %468, align 8, !tbaa !22
  br label %469

469:                                              ; preds = %450, %455, %463
  %470 = add nuw nsw i64 %.8976, 1
  %exitcond1064.not = icmp eq i64 %470, %10
  br i1 %exitcond1064.not, label %._crit_edge978, label %380, !llvm.loop !53

._crit_edge978:                                   ; preds = %469, %.loopexit931, %.loopexit931.thread, %.preheader928
  br i1 %26, label %471, label %474

471:                                              ; preds = %._crit_edge978
  %472 = getelementptr inbounds i8, ptr %12, i64 96
  %473 = tail call noundef zeroext i1 @_ZN11alglib_impl11sparseissksEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef nonnull %472, ptr noundef %15)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext true, ptr noundef nonnull @.str.207, ptr noundef %15)
  br label %474

474:                                              ; preds = %._crit_edge978, %471
  %.0854 = phi i64 [ 2, %471 ], [ 0, %._crit_edge978 ]
  br i1 %.not.not939, label %.lr.ph983, label %.critedge1048

.lr.ph983:                                        ; preds = %474
  %475 = getelementptr inbounds i8, ptr %12, i64 744
  %476 = getelementptr inbounds i8, ptr %12, i64 808
  %xtraiter1111 = and i64 %10, 1
  %477 = icmp eq i64 %10, 1
  br i1 %477, label %._crit_edge984.unr-lcssa, label %.lr.ph983.new

.lr.ph983.new:                                    ; preds = %.lr.ph983
  %unroll_iter1114 = and i64 %10, 9223372036854775806
  br label %478

478:                                              ; preds = %502, %.lr.ph983.new
  %.0843981 = phi i1 [ false, %.lr.ph983.new ], [ %503, %502 ]
  %.9980 = phi i64 [ 0, %.lr.ph983.new ], [ %504, %502 ]
  %niter1115 = phi i64 [ 0, %.lr.ph983.new ], [ %niter1115.next.1, %502 ]
  br i1 %.0843981, label %489, label %479

479:                                              ; preds = %478
  %480 = load ptr, ptr %475, align 8, !tbaa !21
  %481 = getelementptr inbounds i8, ptr %480, i64 %.9980
  %482 = load i8, ptr %481, align 1, !tbaa !46, !range !28, !noundef !29
  %483 = trunc nuw i8 %482 to i1
  br i1 %483, label %489, label %484

484:                                              ; preds = %479
  %485 = load ptr, ptr %476, align 8, !tbaa !21
  %486 = getelementptr inbounds i8, ptr %485, i64 %.9980
  %487 = load i8, ptr %486, align 1, !tbaa !46, !range !28, !noundef !29
  %488 = trunc nuw i8 %487 to i1
  br label %489

489:                                              ; preds = %484, %479, %478
  %490 = phi i1 [ true, %479 ], [ true, %478 ], [ %488, %484 ]
  %491 = or disjoint i64 %.9980, 1
  br i1 %490, label %502, label %492

492:                                              ; preds = %489
  %493 = load ptr, ptr %475, align 8, !tbaa !21
  %494 = getelementptr inbounds i8, ptr %493, i64 %491
  %495 = load i8, ptr %494, align 1, !tbaa !46, !range !28, !noundef !29
  %496 = trunc nuw i8 %495 to i1
  br i1 %496, label %502, label %497

497:                                              ; preds = %492
  %498 = load ptr, ptr %476, align 8, !tbaa !21
  %499 = getelementptr inbounds i8, ptr %498, i64 %491
  %500 = load i8, ptr %499, align 1, !tbaa !46, !range !28, !noundef !29
  %501 = trunc nuw i8 %500 to i1
  br label %502

502:                                              ; preds = %497, %492, %489
  %503 = phi i1 [ true, %492 ], [ true, %489 ], [ %501, %497 ]
  %504 = add nuw nsw i64 %.9980, 2
  %niter1115.next.1 = add i64 %niter1115, 2
  %niter1115.ncmp.1 = icmp eq i64 %niter1115.next.1, %unroll_iter1114
  br i1 %niter1115.ncmp.1, label %._crit_edge984.unr-lcssa, label %478, !llvm.loop !54

._crit_edge984.unr-lcssa:                         ; preds = %502, %.lr.ph983
  %.lcssa1108.ph = phi i1 [ poison, %.lr.ph983 ], [ %503, %502 ]
  %.0843981.unr = phi i1 [ false, %.lr.ph983 ], [ %503, %502 ]
  %.9980.unr = phi i64 [ 0, %.lr.ph983 ], [ %504, %502 ]
  %lcmp.mod1112.not = icmp eq i64 %xtraiter1111, 0
  br i1 %lcmp.mod1112.not, label %._crit_edge984, label %.epil.preheader1110

.epil.preheader1110:                              ; preds = %._crit_edge984.unr-lcssa
  br i1 %.0843981.unr, label %.critedge, label %505

505:                                              ; preds = %.epil.preheader1110
  %506 = load ptr, ptr %475, align 8, !tbaa !21
  %507 = getelementptr inbounds i8, ptr %506, i64 %.9980.unr
  %508 = load i8, ptr %507, align 1, !tbaa !46, !range !28, !noundef !29
  %509 = trunc nuw i8 %508 to i1
  br i1 %509, label %.critedge, label %510

510:                                              ; preds = %505
  %511 = load ptr, ptr %476, align 8, !tbaa !21
  %512 = getelementptr inbounds i8, ptr %511, i64 %.9980.unr
  %513 = load i8, ptr %512, align 1, !tbaa !46, !range !28, !noundef !29
  %514 = trunc nuw i8 %513 to i1
  br label %._crit_edge984

._crit_edge984:                                   ; preds = %510, %._crit_edge984.unr-lcssa
  %.lcssa1108 = phi i1 [ %.lcssa1108.ph, %._crit_edge984.unr-lcssa ], [ %514, %510 ]
  br i1 %.lcssa1108, label %.critedge, label %.critedge1048

.critedge1048:                                    ; preds = %474, %._crit_edge984
  %515 = getelementptr inbounds i8, ptr %11, i64 33
  %516 = load i8, ptr %515, align 1, !tbaa !30, !range !28, !noundef !29
  %517 = trunc nuw i8 %516 to i1
  %or.cond3 = and i1 %25, %517
  br i1 %or.cond3, label %518, label %.critedge

518:                                              ; preds = %.critedge1048
  %519 = getelementptr inbounds i8, ptr %12, i64 5752
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %519, i64 noundef %10, i64 noundef %10, ptr noundef %15)
  %520 = getelementptr inbounds i8, ptr %12, i64 6392
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %520, i64 noundef %10, ptr noundef %15)
  br i1 %.not.not939, label %.preheader927.lr.ph, label %._crit_edge988

.preheader927.lr.ph:                              ; preds = %518
  %521 = getelementptr inbounds i8, ptr %12, i64 88
  %522 = getelementptr inbounds i8, ptr %12, i64 5824
  %xtraiter1116 = and i64 %10, 1
  %523 = icmp eq i64 %10, 1
  br i1 %523, label %._crit_edge988.loopexit.unr-lcssa, label %.preheader927.lr.ph.new

.preheader927.lr.ph.new:                          ; preds = %.preheader927.lr.ph
  %unroll_iter1118 = and i64 %10, 9223372036854775806
  br label %.preheader927

.preheader927:                                    ; preds = %547, %.preheader927.lr.ph.new
  %.10987 = phi i64 [ 0, %.preheader927.lr.ph.new ], [ %548, %547 ]
  %niter1119 = phi i64 [ 0, %.preheader927.lr.ph.new ], [ %niter1119.next.1, %547 ]
  br label %524

524:                                              ; preds = %.preheader927, %524
  %.4850985 = phi i64 [ %.10987, %.preheader927 ], [ %534, %524 ]
  %525 = load ptr, ptr %521, align 8, !tbaa !21
  %526 = getelementptr inbounds ptr, ptr %525, i64 %.10987
  %527 = load ptr, ptr %526, align 8, !tbaa !33
  %528 = getelementptr inbounds double, ptr %527, i64 %.4850985
  %529 = load double, ptr %528, align 8, !tbaa !22
  %530 = load ptr, ptr %522, align 8, !tbaa !21
  %531 = getelementptr inbounds ptr, ptr %530, i64 %.10987
  %532 = load ptr, ptr %531, align 8, !tbaa !33
  %533 = getelementptr inbounds double, ptr %532, i64 %.4850985
  store double %529, ptr %533, align 8, !tbaa !22
  %534 = add nuw nsw i64 %.4850985, 1
  %.not888.not = icmp slt i64 %534, %10
  br i1 %.not888.not, label %524, label %.preheader927.1, !llvm.loop !55

.preheader927.1:                                  ; preds = %524
  %535 = or disjoint i64 %.10987, 1
  br label %536

536:                                              ; preds = %536, %.preheader927.1
  %.4850985.1 = phi i64 [ %535, %.preheader927.1 ], [ %546, %536 ]
  %537 = load ptr, ptr %521, align 8, !tbaa !21
  %538 = getelementptr inbounds ptr, ptr %537, i64 %535
  %539 = load ptr, ptr %538, align 8, !tbaa !33
  %540 = getelementptr inbounds double, ptr %539, i64 %.4850985.1
  %541 = load double, ptr %540, align 8, !tbaa !22
  %542 = load ptr, ptr %522, align 8, !tbaa !21
  %543 = getelementptr inbounds ptr, ptr %542, i64 %535
  %544 = load ptr, ptr %543, align 8, !tbaa !33
  %545 = getelementptr inbounds double, ptr %544, i64 %.4850985.1
  store double %541, ptr %545, align 8, !tbaa !22
  %546 = add nuw nsw i64 %.4850985.1, 1
  %.not888.not.1 = icmp slt i64 %546, %10
  br i1 %.not888.not.1, label %536, label %547, !llvm.loop !55

547:                                              ; preds = %536
  %548 = add nuw nsw i64 %.10987, 2
  %niter1119.next.1 = add i64 %niter1119, 2
  %niter1119.ncmp.1 = icmp eq i64 %niter1119.next.1, %unroll_iter1118
  br i1 %niter1119.ncmp.1, label %._crit_edge988.loopexit.unr-lcssa, label %.preheader927, !llvm.loop !56

._crit_edge988.loopexit.unr-lcssa:                ; preds = %547, %.preheader927.lr.ph
  %.10987.unr = phi i64 [ 0, %.preheader927.lr.ph ], [ %548, %547 ]
  %lcmp.mod1117.not = icmp eq i64 %xtraiter1116, 0
  br i1 %lcmp.mod1117.not, label %._crit_edge988, label %.preheader927.epil

.preheader927.epil:                               ; preds = %._crit_edge988.loopexit.unr-lcssa, %.preheader927.epil
  %.4850985.epil = phi i64 [ %558, %.preheader927.epil ], [ %.10987.unr, %._crit_edge988.loopexit.unr-lcssa ]
  %549 = load ptr, ptr %521, align 8, !tbaa !21
  %550 = getelementptr inbounds ptr, ptr %549, i64 %.10987.unr
  %551 = load ptr, ptr %550, align 8, !tbaa !33
  %552 = getelementptr inbounds double, ptr %551, i64 %.4850985.epil
  %553 = load double, ptr %552, align 8, !tbaa !22
  %554 = load ptr, ptr %522, align 8, !tbaa !21
  %555 = getelementptr inbounds ptr, ptr %554, i64 %.10987.unr
  %556 = load ptr, ptr %555, align 8, !tbaa !33
  %557 = getelementptr inbounds double, ptr %556, i64 %.4850985.epil
  store double %553, ptr %557, align 8, !tbaa !22
  %558 = add nuw nsw i64 %.4850985.epil, 1
  %.not888.not.epil = icmp slt i64 %558, %10
  br i1 %.not888.not.epil, label %.preheader927.epil, label %._crit_edge988, !llvm.loop !55

._crit_edge988:                                   ; preds = %._crit_edge988.loopexit.unr-lcssa, %.preheader927.epil, %518
  tail call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %30, ptr noundef %15)
  %559 = tail call noundef zeroext i1 @_ZN11alglib_impl20spdmatrixcholeskyrecEPNS_9ae_matrixEllbPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %519, i64 noundef 0, i64 noundef %10, i1 noundef zeroext true, ptr noundef nonnull %520, ptr noundef %15)
  br i1 %559, label %560, label %.critedge

560:                                              ; preds = %._crit_edge988
  %561 = getelementptr inbounds i8, ptr %12, i64 936
  %562 = load ptr, ptr %561, align 8, !tbaa !21
  %563 = getelementptr inbounds i8, ptr %12, i64 872
  %564 = load ptr, ptr %563, align 8, !tbaa !21
  %565 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  tail call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %562, i64 noundef 1, ptr noundef %564, i64 noundef 1, i64 noundef %565)
  br i1 %.not.not939, label %.lr.ph992, label %._crit_edge993

.lr.ph992:                                        ; preds = %560
  %566 = getelementptr inbounds i8, ptr %12, i64 1128
  %567 = add nsw i64 %10, -1
  %xtraiter1121 = and i64 %10, 3
  %568 = icmp ult i64 %567, 3
  br i1 %568, label %._crit_edge993.loopexit.unr-lcssa, label %.lr.ph992.new

.lr.ph992.new:                                    ; preds = %.lr.ph992
  %unroll_iter1123 = and i64 %10, 9223372036854775804
  br label %569

569:                                              ; preds = %569, %.lr.ph992.new
  %.11990 = phi i64 [ 0, %.lr.ph992.new ], [ %581, %569 ]
  %niter1124 = phi i64 [ 0, %.lr.ph992.new ], [ %niter1124.next.3, %569 ]
  %570 = load ptr, ptr %566, align 8, !tbaa !21
  %571 = getelementptr inbounds double, ptr %570, i64 %.11990
  store double 0.000000e+00, ptr %571, align 8, !tbaa !22
  %572 = or disjoint i64 %.11990, 1
  %573 = load ptr, ptr %566, align 8, !tbaa !21
  %574 = getelementptr inbounds double, ptr %573, i64 %572
  store double 0.000000e+00, ptr %574, align 8, !tbaa !22
  %575 = or disjoint i64 %.11990, 2
  %576 = load ptr, ptr %566, align 8, !tbaa !21
  %577 = getelementptr inbounds double, ptr %576, i64 %575
  store double 0.000000e+00, ptr %577, align 8, !tbaa !22
  %578 = or disjoint i64 %.11990, 3
  %579 = load ptr, ptr %566, align 8, !tbaa !21
  %580 = getelementptr inbounds double, ptr %579, i64 %578
  store double 0.000000e+00, ptr %580, align 8, !tbaa !22
  %581 = add nuw nsw i64 %.11990, 4
  %niter1124.next.3 = add i64 %niter1124, 4
  %niter1124.ncmp.3 = icmp eq i64 %niter1124.next.3, %unroll_iter1123
  br i1 %niter1124.ncmp.3, label %._crit_edge993.loopexit.unr-lcssa, label %569, !llvm.loop !57

._crit_edge993.loopexit.unr-lcssa:                ; preds = %569, %.lr.ph992
  %.11990.unr = phi i64 [ 0, %.lr.ph992 ], [ %581, %569 ]
  %lcmp.mod1122.not = icmp eq i64 %xtraiter1121, 0
  br i1 %lcmp.mod1122.not, label %._crit_edge993, label %.epil.preheader1120

.epil.preheader1120:                              ; preds = %._crit_edge993.loopexit.unr-lcssa, %.epil.preheader1120
  %.11990.epil = phi i64 [ %584, %.epil.preheader1120 ], [ %.11990.unr, %._crit_edge993.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader1120 ], [ 0, %._crit_edge993.loopexit.unr-lcssa ]
  %582 = load ptr, ptr %566, align 8, !tbaa !21
  %583 = getelementptr inbounds double, ptr %582, i64 %.11990.epil
  store double 0.000000e+00, ptr %583, align 8, !tbaa !22
  %584 = add nuw nsw i64 %.11990.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter1121
  br i1 %epil.iter.cmp.not, label %._crit_edge993, label %.epil.preheader1120, !llvm.loop !58

._crit_edge993:                                   ; preds = %._crit_edge993.loopexit.unr-lcssa, %.epil.preheader1120, %560
  %585 = tail call noundef double @_ZN11alglib_implL33qqpsolver_projectedtargetfunctionEPNS_10qqpbuffersEPNS_9ae_vectorES3_dS3_S3_PNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef nonnull %89, ptr noundef nonnull %94, double noundef 0.000000e+00, ptr noundef nonnull %520, ptr noundef nonnull %97, ptr noundef %15)
  %586 = getelementptr inbounds i8, ptr %12, i64 16
  %587 = getelementptr inbounds i8, ptr %12, i64 1000
  %588 = getelementptr inbounds i8, ptr %12, i64 552
  %589 = getelementptr inbounds i8, ptr %12, i64 1128
  tail call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %10, i64 noundef %10, ptr noundef nonnull %586, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %89, i64 noundef 0, ptr noundef nonnull %91, i64 noundef 0, ptr noundef %15)
  %590 = load ptr, ptr %587, align 8, !tbaa !21
  %591 = load ptr, ptr %588, align 8, !tbaa !21
  %592 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  tail call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %590, i64 noundef 1, ptr noundef %591, i64 noundef 1, i64 noundef %592)
  br i1 %.not.not939, label %.lr.ph997.preheader, label %._crit_edge998

.lr.ph997.preheader:                              ; preds = %._crit_edge993
  %xtraiter1125 = and i64 %10, 1
  %593 = icmp eq i64 %10, 1
  br i1 %593, label %._crit_edge998.loopexit.unr-lcssa, label %.lr.ph997.preheader.new

.lr.ph997.preheader.new:                          ; preds = %.lr.ph997.preheader
  %unroll_iter1128 = and i64 %10, 9223372036854775806
  br label %.lr.ph997

.lr.ph997:                                        ; preds = %.lr.ph997, %.lr.ph997.preheader.new
  %.12995 = phi i64 [ 0, %.lr.ph997.preheader.new ], [ %607, %.lr.ph997 ]
  %niter1129 = phi i64 [ 0, %.lr.ph997.preheader.new ], [ %niter1129.next.1, %.lr.ph997 ]
  %594 = load ptr, ptr %587, align 8, !tbaa !21
  %595 = getelementptr inbounds double, ptr %594, i64 %.12995
  %596 = load double, ptr %595, align 8, !tbaa !22
  %597 = fneg double %596
  %598 = load ptr, ptr %589, align 8, !tbaa !21
  %599 = getelementptr inbounds double, ptr %598, i64 %.12995
  store double %597, ptr %599, align 8, !tbaa !22
  %600 = or disjoint i64 %.12995, 1
  %601 = load ptr, ptr %587, align 8, !tbaa !21
  %602 = getelementptr inbounds double, ptr %601, i64 %600
  %603 = load double, ptr %602, align 8, !tbaa !22
  %604 = fneg double %603
  %605 = load ptr, ptr %589, align 8, !tbaa !21
  %606 = getelementptr inbounds double, ptr %605, i64 %600
  store double %604, ptr %606, align 8, !tbaa !22
  %607 = add nuw nsw i64 %.12995, 2
  %niter1129.next.1 = add i64 %niter1129, 2
  %niter1129.ncmp.1 = icmp eq i64 %niter1129.next.1, %unroll_iter1128
  br i1 %niter1129.ncmp.1, label %._crit_edge998.loopexit.unr-lcssa, label %.lr.ph997, !llvm.loop !60

._crit_edge998.loopexit.unr-lcssa:                ; preds = %.lr.ph997, %.lr.ph997.preheader
  %.12995.unr = phi i64 [ 0, %.lr.ph997.preheader ], [ %607, %.lr.ph997 ]
  %lcmp.mod1127.not = icmp eq i64 %xtraiter1125, 0
  br i1 %lcmp.mod1127.not, label %._crit_edge998, label %.lr.ph997.epil

.lr.ph997.epil:                                   ; preds = %._crit_edge998.loopexit.unr-lcssa
  %608 = load ptr, ptr %587, align 8, !tbaa !21
  %609 = getelementptr inbounds double, ptr %608, i64 %.12995.unr
  %610 = load double, ptr %609, align 8, !tbaa !22
  %611 = fneg double %610
  %612 = load ptr, ptr %589, align 8, !tbaa !21
  %613 = getelementptr inbounds double, ptr %612, i64 %.12995.unr
  store double %611, ptr %613, align 8, !tbaa !22
  br label %._crit_edge998

._crit_edge998:                                   ; preds = %.lr.ph997.epil, %._crit_edge998.loopexit.unr-lcssa, %._crit_edge993
  tail call void @_ZN11alglib_impl17fblscholeskysolveEPNS_9ae_matrixEdlbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %519, double noundef 1.000000e+00, i64 noundef %10, i1 noundef zeroext true, ptr noundef nonnull %94, ptr noundef nonnull %520, ptr noundef %15)
  %614 = tail call noundef double @_ZN11alglib_implL33qqpsolver_projectedtargetfunctionEPNS_10qqpbuffersEPNS_9ae_vectorES3_dS3_S3_PNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef nonnull %89, ptr noundef nonnull %94, double noundef 1.000000e+00, ptr noundef nonnull %520, ptr noundef nonnull %97, ptr noundef %15)
  %615 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %614, double noundef %585)
  br i1 %615, label %710, label %616

616:                                              ; preds = %._crit_edge998
  %617 = load ptr, ptr %561, align 8, !tbaa !21
  %618 = load ptr, ptr %589, align 8, !tbaa !21
  %619 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  tail call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %617, i64 noundef 1, ptr noundef %618, i64 noundef 1, i64 noundef %619)
  tail call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %10, i64 noundef %10, ptr noundef nonnull %586, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %89, i64 noundef 0, ptr noundef nonnull %91, i64 noundef 0, ptr noundef %15)
  %620 = load ptr, ptr %587, align 8, !tbaa !21
  %621 = load ptr, ptr %588, align 8, !tbaa !21
  %622 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  tail call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %620, i64 noundef 1, ptr noundef %621, i64 noundef 1, i64 noundef %622)
  br i1 %.not.not939, label %.lr.ph997.1.preheader, label %._crit_edge998.1

.lr.ph997.1.preheader:                            ; preds = %616
  %xtraiter1132 = and i64 %10, 1
  %623 = icmp eq i64 %10, 1
  br i1 %623, label %._crit_edge998.1.loopexit.unr-lcssa, label %.lr.ph997.1.preheader.new

.lr.ph997.1.preheader.new:                        ; preds = %.lr.ph997.1.preheader
  %unroll_iter1135 = and i64 %10, 9223372036854775806
  br label %.lr.ph997.1

.lr.ph997.1:                                      ; preds = %.lr.ph997.1, %.lr.ph997.1.preheader.new
  %.12995.1 = phi i64 [ 0, %.lr.ph997.1.preheader.new ], [ %637, %.lr.ph997.1 ]
  %niter1136 = phi i64 [ 0, %.lr.ph997.1.preheader.new ], [ %niter1136.next.1, %.lr.ph997.1 ]
  %624 = load ptr, ptr %587, align 8, !tbaa !21
  %625 = getelementptr inbounds double, ptr %624, i64 %.12995.1
  %626 = load double, ptr %625, align 8, !tbaa !22
  %627 = fneg double %626
  %628 = load ptr, ptr %589, align 8, !tbaa !21
  %629 = getelementptr inbounds double, ptr %628, i64 %.12995.1
  store double %627, ptr %629, align 8, !tbaa !22
  %630 = or disjoint i64 %.12995.1, 1
  %631 = load ptr, ptr %587, align 8, !tbaa !21
  %632 = getelementptr inbounds double, ptr %631, i64 %630
  %633 = load double, ptr %632, align 8, !tbaa !22
  %634 = fneg double %633
  %635 = load ptr, ptr %589, align 8, !tbaa !21
  %636 = getelementptr inbounds double, ptr %635, i64 %630
  store double %634, ptr %636, align 8, !tbaa !22
  %637 = add nuw nsw i64 %.12995.1, 2
  %niter1136.next.1 = add i64 %niter1136, 2
  %niter1136.ncmp.1 = icmp eq i64 %niter1136.next.1, %unroll_iter1135
  br i1 %niter1136.ncmp.1, label %._crit_edge998.1.loopexit.unr-lcssa, label %.lr.ph997.1, !llvm.loop !60

._crit_edge998.1.loopexit.unr-lcssa:              ; preds = %.lr.ph997.1, %.lr.ph997.1.preheader
  %.12995.1.unr = phi i64 [ 0, %.lr.ph997.1.preheader ], [ %637, %.lr.ph997.1 ]
  %lcmp.mod1134.not = icmp eq i64 %xtraiter1132, 0
  br i1 %lcmp.mod1134.not, label %._crit_edge998.1, label %.lr.ph997.1.epil

.lr.ph997.1.epil:                                 ; preds = %._crit_edge998.1.loopexit.unr-lcssa
  %638 = load ptr, ptr %587, align 8, !tbaa !21
  %639 = getelementptr inbounds double, ptr %638, i64 %.12995.1.unr
  %640 = load double, ptr %639, align 8, !tbaa !22
  %641 = fneg double %640
  %642 = load ptr, ptr %589, align 8, !tbaa !21
  %643 = getelementptr inbounds double, ptr %642, i64 %.12995.1.unr
  store double %641, ptr %643, align 8, !tbaa !22
  br label %._crit_edge998.1

._crit_edge998.1:                                 ; preds = %.lr.ph997.1.epil, %._crit_edge998.1.loopexit.unr-lcssa, %616
  tail call void @_ZN11alglib_impl17fblscholeskysolveEPNS_9ae_matrixEdlbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %519, double noundef 1.000000e+00, i64 noundef %10, i1 noundef zeroext true, ptr noundef nonnull %94, ptr noundef nonnull %520, ptr noundef %15)
  %644 = tail call noundef double @_ZN11alglib_implL33qqpsolver_projectedtargetfunctionEPNS_10qqpbuffersEPNS_9ae_vectorES3_dS3_S3_PNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef nonnull %89, ptr noundef nonnull %94, double noundef 1.000000e+00, ptr noundef nonnull %520, ptr noundef nonnull %97, ptr noundef %15)
  %645 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %644, double noundef %614)
  br i1 %645, label %710, label %646

646:                                              ; preds = %._crit_edge998.1
  %647 = load ptr, ptr %561, align 8, !tbaa !21
  %648 = load ptr, ptr %589, align 8, !tbaa !21
  %649 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  tail call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %647, i64 noundef 1, ptr noundef %648, i64 noundef 1, i64 noundef %649)
  tail call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %10, i64 noundef %10, ptr noundef nonnull %586, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %89, i64 noundef 0, ptr noundef nonnull %91, i64 noundef 0, ptr noundef %15)
  %650 = load ptr, ptr %587, align 8, !tbaa !21
  %651 = load ptr, ptr %588, align 8, !tbaa !21
  %652 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  tail call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %650, i64 noundef 1, ptr noundef %651, i64 noundef 1, i64 noundef %652)
  br i1 %.not.not939, label %.lr.ph997.2.preheader, label %._crit_edge998.2

.lr.ph997.2.preheader:                            ; preds = %646
  %xtraiter1137 = and i64 %10, 1
  %653 = icmp eq i64 %10, 1
  br i1 %653, label %._crit_edge998.2.loopexit.unr-lcssa, label %.lr.ph997.2.preheader.new

.lr.ph997.2.preheader.new:                        ; preds = %.lr.ph997.2.preheader
  %unroll_iter1140 = and i64 %10, 9223372036854775806
  br label %.lr.ph997.2

.lr.ph997.2:                                      ; preds = %.lr.ph997.2, %.lr.ph997.2.preheader.new
  %.12995.2 = phi i64 [ 0, %.lr.ph997.2.preheader.new ], [ %667, %.lr.ph997.2 ]
  %niter1141 = phi i64 [ 0, %.lr.ph997.2.preheader.new ], [ %niter1141.next.1, %.lr.ph997.2 ]
  %654 = load ptr, ptr %587, align 8, !tbaa !21
  %655 = getelementptr inbounds double, ptr %654, i64 %.12995.2
  %656 = load double, ptr %655, align 8, !tbaa !22
  %657 = fneg double %656
  %658 = load ptr, ptr %589, align 8, !tbaa !21
  %659 = getelementptr inbounds double, ptr %658, i64 %.12995.2
  store double %657, ptr %659, align 8, !tbaa !22
  %660 = or disjoint i64 %.12995.2, 1
  %661 = load ptr, ptr %587, align 8, !tbaa !21
  %662 = getelementptr inbounds double, ptr %661, i64 %660
  %663 = load double, ptr %662, align 8, !tbaa !22
  %664 = fneg double %663
  %665 = load ptr, ptr %589, align 8, !tbaa !21
  %666 = getelementptr inbounds double, ptr %665, i64 %660
  store double %664, ptr %666, align 8, !tbaa !22
  %667 = add nuw nsw i64 %.12995.2, 2
  %niter1141.next.1 = add i64 %niter1141, 2
  %niter1141.ncmp.1 = icmp eq i64 %niter1141.next.1, %unroll_iter1140
  br i1 %niter1141.ncmp.1, label %._crit_edge998.2.loopexit.unr-lcssa, label %.lr.ph997.2, !llvm.loop !60

._crit_edge998.2.loopexit.unr-lcssa:              ; preds = %.lr.ph997.2, %.lr.ph997.2.preheader
  %.12995.2.unr = phi i64 [ 0, %.lr.ph997.2.preheader ], [ %667, %.lr.ph997.2 ]
  %lcmp.mod1139.not = icmp eq i64 %xtraiter1137, 0
  br i1 %lcmp.mod1139.not, label %._crit_edge998.2, label %.lr.ph997.2.epil

.lr.ph997.2.epil:                                 ; preds = %._crit_edge998.2.loopexit.unr-lcssa
  %668 = load ptr, ptr %587, align 8, !tbaa !21
  %669 = getelementptr inbounds double, ptr %668, i64 %.12995.2.unr
  %670 = load double, ptr %669, align 8, !tbaa !22
  %671 = fneg double %670
  %672 = load ptr, ptr %589, align 8, !tbaa !21
  %673 = getelementptr inbounds double, ptr %672, i64 %.12995.2.unr
  store double %671, ptr %673, align 8, !tbaa !22
  br label %._crit_edge998.2

._crit_edge998.2:                                 ; preds = %.lr.ph997.2.epil, %._crit_edge998.2.loopexit.unr-lcssa, %646
  tail call void @_ZN11alglib_impl17fblscholeskysolveEPNS_9ae_matrixEdlbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %519, double noundef 1.000000e+00, i64 noundef %10, i1 noundef zeroext true, ptr noundef nonnull %94, ptr noundef nonnull %520, ptr noundef %15)
  %674 = tail call noundef double @_ZN11alglib_implL33qqpsolver_projectedtargetfunctionEPNS_10qqpbuffersEPNS_9ae_vectorES3_dS3_S3_PNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef nonnull %89, ptr noundef nonnull %94, double noundef 1.000000e+00, ptr noundef nonnull %520, ptr noundef nonnull %97, ptr noundef %15)
  %675 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %674, double noundef %644)
  br i1 %675, label %710, label %676

676:                                              ; preds = %._crit_edge998.2
  %677 = load ptr, ptr %561, align 8, !tbaa !21
  %678 = load ptr, ptr %589, align 8, !tbaa !21
  %679 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  tail call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %677, i64 noundef 1, ptr noundef %678, i64 noundef 1, i64 noundef %679)
  tail call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %10, i64 noundef %10, ptr noundef nonnull %586, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %89, i64 noundef 0, ptr noundef nonnull %91, i64 noundef 0, ptr noundef %15)
  %680 = load ptr, ptr %587, align 8, !tbaa !21
  %681 = load ptr, ptr %588, align 8, !tbaa !21
  %682 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  tail call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %680, i64 noundef 1, ptr noundef %681, i64 noundef 1, i64 noundef %682)
  br i1 %.not.not939, label %.lr.ph997.3.preheader, label %._crit_edge998.3

.lr.ph997.3.preheader:                            ; preds = %676
  %xtraiter1142 = and i64 %10, 1
  %683 = icmp eq i64 %10, 1
  br i1 %683, label %._crit_edge998.3.loopexit.unr-lcssa, label %.lr.ph997.3.preheader.new

.lr.ph997.3.preheader.new:                        ; preds = %.lr.ph997.3.preheader
  %unroll_iter1145 = and i64 %10, 9223372036854775806
  br label %.lr.ph997.3

.lr.ph997.3:                                      ; preds = %.lr.ph997.3, %.lr.ph997.3.preheader.new
  %.12995.3 = phi i64 [ 0, %.lr.ph997.3.preheader.new ], [ %697, %.lr.ph997.3 ]
  %niter1146 = phi i64 [ 0, %.lr.ph997.3.preheader.new ], [ %niter1146.next.1, %.lr.ph997.3 ]
  %684 = load ptr, ptr %587, align 8, !tbaa !21
  %685 = getelementptr inbounds double, ptr %684, i64 %.12995.3
  %686 = load double, ptr %685, align 8, !tbaa !22
  %687 = fneg double %686
  %688 = load ptr, ptr %589, align 8, !tbaa !21
  %689 = getelementptr inbounds double, ptr %688, i64 %.12995.3
  store double %687, ptr %689, align 8, !tbaa !22
  %690 = or disjoint i64 %.12995.3, 1
  %691 = load ptr, ptr %587, align 8, !tbaa !21
  %692 = getelementptr inbounds double, ptr %691, i64 %690
  %693 = load double, ptr %692, align 8, !tbaa !22
  %694 = fneg double %693
  %695 = load ptr, ptr %589, align 8, !tbaa !21
  %696 = getelementptr inbounds double, ptr %695, i64 %690
  store double %694, ptr %696, align 8, !tbaa !22
  %697 = add nuw nsw i64 %.12995.3, 2
  %niter1146.next.1 = add i64 %niter1146, 2
  %niter1146.ncmp.1 = icmp eq i64 %niter1146.next.1, %unroll_iter1145
  br i1 %niter1146.ncmp.1, label %._crit_edge998.3.loopexit.unr-lcssa, label %.lr.ph997.3, !llvm.loop !60

._crit_edge998.3.loopexit.unr-lcssa:              ; preds = %.lr.ph997.3, %.lr.ph997.3.preheader
  %.12995.3.unr = phi i64 [ 0, %.lr.ph997.3.preheader ], [ %697, %.lr.ph997.3 ]
  %lcmp.mod1144.not = icmp eq i64 %xtraiter1142, 0
  br i1 %lcmp.mod1144.not, label %._crit_edge998.3, label %.lr.ph997.3.epil

.lr.ph997.3.epil:                                 ; preds = %._crit_edge998.3.loopexit.unr-lcssa
  %698 = load ptr, ptr %587, align 8, !tbaa !21
  %699 = getelementptr inbounds double, ptr %698, i64 %.12995.3.unr
  %700 = load double, ptr %699, align 8, !tbaa !22
  %701 = fneg double %700
  %702 = load ptr, ptr %589, align 8, !tbaa !21
  %703 = getelementptr inbounds double, ptr %702, i64 %.12995.3.unr
  store double %701, ptr %703, align 8, !tbaa !22
  br label %._crit_edge998.3

._crit_edge998.3:                                 ; preds = %.lr.ph997.3.epil, %._crit_edge998.3.loopexit.unr-lcssa, %676
  tail call void @_ZN11alglib_impl17fblscholeskysolveEPNS_9ae_matrixEdlbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %519, double noundef 1.000000e+00, i64 noundef %10, i1 noundef zeroext true, ptr noundef nonnull %94, ptr noundef nonnull %520, ptr noundef %15)
  %704 = tail call noundef double @_ZN11alglib_implL33qqpsolver_projectedtargetfunctionEPNS_10qqpbuffersEPNS_9ae_vectorES3_dS3_S3_PNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef nonnull %89, ptr noundef nonnull %94, double noundef 1.000000e+00, ptr noundef nonnull %520, ptr noundef nonnull %97, ptr noundef %15)
  %705 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %704, double noundef %674)
  br i1 %705, label %710, label %706

706:                                              ; preds = %._crit_edge998.3
  %707 = load ptr, ptr %561, align 8, !tbaa !21
  %708 = load ptr, ptr %589, align 8, !tbaa !21
  %709 = tail call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  tail call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %707, i64 noundef 1, ptr noundef %708, i64 noundef 1, i64 noundef %709)
  br label %710

710:                                              ; preds = %706, %._crit_edge998.3, %._crit_edge998.2, %._crit_edge998.1, %._crit_edge998
  store i64 2, ptr %14, align 8, !tbaa !5
  br label %1025

.critedge:                                        ; preds = %505, %.epil.preheader1110, %.critedge1048, %._crit_edge988, %._crit_edge984
  tail call void @_ZN11alglib_impl8sassetbcEPNS_10sactivesetEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %99, ptr noundef nonnull %84, ptr noundef nonnull %85, ptr noundef %15)
  %711 = tail call noundef zeroext i1 @_ZN11alglib_impl20sasstartoptimizationEPNS_10sactivesetEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %99, ptr noundef nonnull %88, ptr noundef %15)
  br i1 %711, label %712, label %.loopexit.sink.split

712:                                              ; preds = %.critedge
  %713 = getelementptr inbounds i8, ptr %11, i64 40
  %714 = load i64, ptr %713, align 8, !tbaa !61
  %715 = getelementptr inbounds i8, ptr %11, i64 24
  %716 = getelementptr inbounds i8, ptr %11, i64 8
  %717 = getelementptr inbounds i8, ptr %12, i64 1344
  %718 = getelementptr inbounds i8, ptr %11, i64 16
  %719 = getelementptr inbounds i8, ptr %12, i64 1064
  %720 = getelementptr inbounds i8, ptr %12, i64 1400
  %721 = getelementptr inbounds i8, ptr %12, i64 1320
  %722 = getelementptr inbounds i8, ptr %12, i64 1192
  %723 = getelementptr inbounds i8, ptr %12, i64 1256
  %724 = getelementptr inbounds i8, ptr %12, i64 1000
  %725 = getelementptr inbounds i8, ptr %12, i64 1128
  %726 = getelementptr inbounds i8, ptr %12, i64 744
  %727 = getelementptr inbounds i8, ptr %12, i64 616
  %728 = getelementptr inbounds i8, ptr %12, i64 808
  %729 = getelementptr inbounds i8, ptr %12, i64 680
  %730 = getelementptr inbounds i8, ptr %12, i64 6768
  %731 = getelementptr inbounds i8, ptr %12, i64 5672
  %732 = getelementptr inbounds i8, ptr %11, i64 48
  %733 = getelementptr inbounds i8, ptr %11, i64 33
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %28, i8 0, i64 16, i1 false)
  %734 = add i64 %10, -1
  %xtraiter1147 = and i64 %10, 1
  %735 = icmp eq i64 %734, 0
  %unroll_iter1150 = and i64 %10, 9223372036854775806
  %lcmp.mod1149.not = icmp eq i64 %xtraiter1147, 0
  %xtraiter1152 = and i64 %10, 3
  %736 = icmp ult i64 %734, 3
  %unroll_iter1155 = and i64 %10, 9223372036854775804
  %lcmp.mod1154.not = icmp eq i64 %xtraiter1152, 0
  br label %737

737:                                              ; preds = %.thread917, %712
  %.0855 = phi i64 [ %714, %712 ], [ %.4859.ph, %.thread917 ]
  %738 = load i64, ptr %715, align 8, !tbaa !62
  %739 = icmp slt i64 %738, 1
  %740 = load i64, ptr %29, align 8, !tbaa !63
  %.not889 = icmp slt i64 %740, %738
  %or.cond = select i1 %739, i1 true, i1 %.not889
  br i1 %or.cond, label %thread-pre-split, label %.thread.sink.split

thread-pre-split:                                 ; preds = %737
  %741 = icmp sgt i64 %740, 0
  br i1 %741, label %742, label %772

742:                                              ; preds = %thread-pre-split
  %743 = load double, ptr %716, align 8, !tbaa !64
  %744 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %743, double noundef 0.000000e+00)
  br i1 %744, label %745, label %756

745:                                              ; preds = %742
  %746 = call noundef double @_ZN11alglib_implL33qqpsolver_projectedtargetfunctionEPNS_10qqpbuffersEPNS_9ae_vectorES3_dS3_S3_PNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef nonnull %90, ptr noundef nonnull %94, double noundef 0.000000e+00, ptr noundef nonnull %96, ptr noundef nonnull %97, ptr noundef %15)
  %747 = call noundef double @_ZN11alglib_implL33qqpsolver_projectedtargetfunctionEPNS_10qqpbuffersEPNS_9ae_vectorES3_dS3_S3_PNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef nonnull %717, ptr noundef nonnull %94, double noundef 0.000000e+00, ptr noundef nonnull %96, ptr noundef nonnull %97, ptr noundef %15)
  %748 = fsub double %746, %747
  %749 = load double, ptr %716, align 8, !tbaa !64
  %750 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %746, ptr noundef %15)
  %751 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %747, ptr noundef %15)
  %752 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %751, double noundef 1.000000e+00, ptr noundef %15)
  %753 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %750, double noundef %752, ptr noundef %15)
  %754 = fmul double %749, %753
  %755 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %748, double noundef %754)
  br i1 %755, label %.thread.sink.split, label %756

756:                                              ; preds = %745, %742
  %757 = load double, ptr %718, align 8, !tbaa !65
  %758 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %757, double noundef 0.000000e+00)
  br i1 %758, label %.preheader926, label %772

.preheader926:                                    ; preds = %756
  br i1 %.not.not939, label %.lr.ph1004, label %._crit_edge1005

.lr.ph1004:                                       ; preds = %.preheader926, %.lr.ph1004
  %.131003 = phi i64 [ %768, %.lr.ph1004 ], [ 0, %.preheader926 ]
  %.08671002 = phi double [ %767, %.lr.ph1004 ], [ 0.000000e+00, %.preheader926 ]
  %759 = load ptr, ptr %719, align 8, !tbaa !21
  %760 = getelementptr inbounds double, ptr %759, i64 %.131003
  %761 = load double, ptr %760, align 8, !tbaa !22
  %762 = load ptr, ptr %720, align 8, !tbaa !21
  %763 = getelementptr inbounds double, ptr %762, i64 %.131003
  %764 = load double, ptr %763, align 8, !tbaa !22
  %765 = fsub double %761, %764
  %766 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %765, ptr noundef %15)
  %767 = fadd double %.08671002, %766
  %768 = add nuw nsw i64 %.131003, 1
  %exitcond1070.not = icmp eq i64 %768, %10
  br i1 %exitcond1070.not, label %._crit_edge1005, label %.lr.ph1004, !llvm.loop !66

._crit_edge1005:                                  ; preds = %.lr.ph1004, %.preheader926
  %.0867.lcssa = phi double [ 0.000000e+00, %.preheader926 ], [ %767, %.lr.ph1004 ]
  %769 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.0867.lcssa, ptr noundef %15)
  %770 = load double, ptr %718, align 8, !tbaa !65
  %771 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %769, double noundef %770)
  br i1 %771, label %.thread.sink.split, label %772

772:                                              ; preds = %756, %._crit_edge1005, %thread-pre-split
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %29, ptr noundef %15)
  %773 = load ptr, ptr %719, align 8, !tbaa !21
  %774 = load ptr, ptr %720, align 8, !tbaa !21
  %775 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %773, i64 noundef 1, ptr noundef %774, i64 noundef 1, i64 noundef %775)
  %776 = load i8, ptr %75, align 8, !tbaa !26, !range !28, !noundef !29
  %777 = trunc nuw i8 %776 to i1
  br i1 %.not.not939, label %.lr.ph1010.preheader, label %.preheader

.lr.ph1010.preheader:                             ; preds = %772
  br i1 %735, label %.preheader.loopexit.unr-lcssa, label %.lr.ph1010

.preheader.loopexit.unr-lcssa:                    ; preds = %.lr.ph1010, %.lr.ph1010.preheader
  %.141008.unr = phi i64 [ 0, %.lr.ph1010.preheader ], [ %791, %.lr.ph1010 ]
  br i1 %lcmp.mod1149.not, label %.preheader, label %.lr.ph1010.epil

.lr.ph1010.epil:                                  ; preds = %.preheader.loopexit.unr-lcssa
  %778 = load ptr, ptr %721, align 8, !tbaa !21
  %779 = getelementptr inbounds double, ptr %778, i64 %.141008.unr
  store double 0.000000e+00, ptr %779, align 8, !tbaa !22
  %780 = load ptr, ptr %722, align 8, !tbaa !21
  %781 = getelementptr inbounds double, ptr %780, i64 %.141008.unr
  store double 0.000000e+00, ptr %781, align 8, !tbaa !22
  br label %.preheader

.preheader:                                       ; preds = %.lr.ph1010.epil, %.preheader.loopexit.unr-lcssa, %772
  %.not892.not9251022 = icmp sgt i64 %.0855, 0
  %.not892.not1023 = select i1 %777, i1 %.not892.not9251022, i1 false
  br i1 %.not892.not1023, label %.lr.ph1025, label %._crit_edge1026

.lr.ph1010:                                       ; preds = %.lr.ph1010.preheader, %.lr.ph1010
  %.141008 = phi i64 [ %791, %.lr.ph1010 ], [ 0, %.lr.ph1010.preheader ]
  %niter1151 = phi i64 [ %niter1151.next.1, %.lr.ph1010 ], [ 0, %.lr.ph1010.preheader ]
  %782 = load ptr, ptr %721, align 8, !tbaa !21
  %783 = getelementptr inbounds double, ptr %782, i64 %.141008
  store double 0.000000e+00, ptr %783, align 8, !tbaa !22
  %784 = load ptr, ptr %722, align 8, !tbaa !21
  %785 = getelementptr inbounds double, ptr %784, i64 %.141008
  store double 0.000000e+00, ptr %785, align 8, !tbaa !22
  %786 = or disjoint i64 %.141008, 1
  %787 = load ptr, ptr %721, align 8, !tbaa !21
  %788 = getelementptr inbounds double, ptr %787, i64 %786
  store double 0.000000e+00, ptr %788, align 8, !tbaa !22
  %789 = load ptr, ptr %722, align 8, !tbaa !21
  %790 = getelementptr inbounds double, ptr %789, i64 %786
  store double 0.000000e+00, ptr %790, align 8, !tbaa !22
  %791 = add nuw nsw i64 %.141008, 2
  %niter1151.next.1 = add i64 %niter1151, 2
  %niter1151.ncmp.1 = icmp eq i64 %niter1151.next.1, %unroll_iter1150
  br i1 %niter1151.ncmp.1, label %.preheader.loopexit.unr-lcssa, label %.lr.ph1010, !llvm.loop !67

.lr.ph1025:                                       ; preds = %.preheader, %907
  %.08601024 = phi i64 [ %918, %907 ], [ 0, %.preheader ]
  call void @_ZN11alglib_implL24qqpsolver_targetgradientEPNS_10qqpbuffersEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef nonnull %717, ptr noundef nonnull %91, ptr noundef %15)
  call void @_ZN11alglib_impl24sasreactivateconstraintsEPNS_10sactivesetEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %99, ptr noundef nonnull %91, ptr noundef %15)
  %792 = load ptr, ptr %723, align 8, !tbaa !21
  %793 = load ptr, ptr %724, align 8, !tbaa !21
  %794 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %792, i64 noundef 1, ptr noundef %793, i64 noundef 1, i64 noundef %794)
  call void @_ZN11alglib_impl23sasconstraineddirectionEPNS_10sactivesetEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %99, ptr noundef nonnull %92, ptr noundef %15)
  %795 = load ptr, ptr %723, align 8, !tbaa !21
  %796 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  %797 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %795, i64 noundef 1, ptr noundef %795, i64 noundef 1, i64 noundef %796)
  %798 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %797, ptr noundef %15)
  %799 = load double, ptr %11, align 8, !tbaa !68
  %800 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %798, double noundef %799)
  br i1 %800, label %.thread.sink.split, label %801

801:                                              ; preds = %.lr.ph1025
  %802 = load ptr, ptr %725, align 8, !tbaa !21
  %803 = load ptr, ptr %723, align 8, !tbaa !21
  %804 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  call void @_ZN11alglib_impl12ae_v_movenegEPdlPKdll(ptr noundef %802, i64 noundef 1, ptr noundef %803, i64 noundef 1, i64 noundef %804)
  br i1 %.not.not939, label %.lr.ph1017, label %._crit_edge1018.thread

.lr.ph1017:                                       ; preds = %801, %.critedge904
  %.151015 = phi i64 [ %851, %.critedge904 ], [ 0, %801 ]
  %.08511014 = phi i1 [ %850, %.critedge904 ], [ false, %801 ]
  %805 = phi <2 x double> [ %814, %.critedge904 ], [ zeroinitializer, %801 ]
  %806 = load ptr, ptr %723, align 8, !tbaa !21
  %807 = getelementptr inbounds double, ptr %806, i64 %.151015
  %808 = load double, ptr %807, align 8, !tbaa !22
  %809 = load ptr, ptr %721, align 8, !tbaa !21
  %810 = getelementptr inbounds double, ptr %809, i64 %.151015
  %811 = load double, ptr %810, align 8, !tbaa !22
  %812 = insertelement <2 x double> poison, double %808, i64 0
  %813 = insertelement <2 x double> %812, double %811, i64 1
  %814 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %813, <2 x double> %813, <2 x double> %805)
  br i1 %.08511014, label %.critedge904, label %815

815:                                              ; preds = %.lr.ph1017
  %816 = load ptr, ptr %726, align 8, !tbaa !21
  %817 = getelementptr inbounds i8, ptr %816, i64 %.151015
  %818 = load i8, ptr %817, align 1, !tbaa !46, !range !28, !noundef !29
  %819 = trunc nuw i8 %818 to i1
  br i1 %819, label %820, label %.critedge906

820:                                              ; preds = %815
  %821 = load ptr, ptr %720, align 8, !tbaa !21
  %822 = getelementptr inbounds double, ptr %821, i64 %.151015
  %823 = load double, ptr %822, align 8, !tbaa !22
  %824 = load ptr, ptr %727, align 8, !tbaa !21
  %825 = getelementptr inbounds double, ptr %824, i64 %.151015
  %826 = load double, ptr %825, align 8, !tbaa !22
  %827 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %823, double noundef %826)
  br i1 %827, label %828, label %.critedge906

828:                                              ; preds = %820
  %829 = load ptr, ptr %722, align 8, !tbaa !21
  %830 = getelementptr inbounds double, ptr %829, i64 %.151015
  %831 = load double, ptr %830, align 8, !tbaa !22
  %832 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %831, double noundef 0.000000e+00)
  br i1 %832, label %.critedge904, label %.critedge906

.critedge906:                                     ; preds = %820, %815, %828
  %833 = load ptr, ptr %728, align 8, !tbaa !21
  %834 = getelementptr inbounds i8, ptr %833, i64 %.151015
  %835 = load i8, ptr %834, align 1, !tbaa !46, !range !28, !noundef !29
  %836 = trunc nuw i8 %835 to i1
  br i1 %836, label %837, label %.critedge904

837:                                              ; preds = %.critedge906
  %838 = load ptr, ptr %720, align 8, !tbaa !21
  %839 = getelementptr inbounds double, ptr %838, i64 %.151015
  %840 = load double, ptr %839, align 8, !tbaa !22
  %841 = load ptr, ptr %729, align 8, !tbaa !21
  %842 = getelementptr inbounds double, ptr %841, i64 %.151015
  %843 = load double, ptr %842, align 8, !tbaa !22
  %844 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %840, double noundef %843)
  br i1 %844, label %845, label %.critedge904

845:                                              ; preds = %837
  %846 = load ptr, ptr %722, align 8, !tbaa !21
  %847 = getelementptr inbounds double, ptr %846, i64 %.151015
  %848 = load double, ptr %847, align 8, !tbaa !22
  %849 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %848, double noundef 0.000000e+00)
  br label %.critedge904

.critedge904:                                     ; preds = %.lr.ph1017, %.critedge906, %837, %845, %828
  %850 = phi i1 [ true, %828 ], [ false, %837 ], [ false, %.critedge906 ], [ %849, %845 ], [ true, %.lr.ph1017 ]
  %851 = add nuw nsw i64 %.151015, 1
  %exitcond1072.not = icmp eq i64 %851, %10
  br i1 %exitcond1072.not, label %._crit_edge1018, label %.lr.ph1017, !llvm.loop !69

._crit_edge1018:                                  ; preds = %.critedge904
  br i1 %850, label %.critedge909, label %._crit_edge1018.thread

._crit_edge1018.thread:                           ; preds = %801, %._crit_edge1018
  %852 = phi <2 x double> [ %814, %._crit_edge1018 ], [ zeroinitializer, %801 ]
  %853 = extractelement <2 x double> %852, i64 1
  %854 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %853, double noundef 0.000000e+00)
  br i1 %854, label %.critedge909, label %.critedge908

.critedge908:                                     ; preds = %._crit_edge1018.thread
  %855 = load i64, ptr @_ZN11alglib_implL26qqpsolver_quickqprestartcgE, align 8, !tbaa !5
  %856 = srem i64 %.08601024, %855
  %857 = icmp eq i64 %856, 0
  br i1 %857, label %.critedge909, label %858

858:                                              ; preds = %.critedge908
  %859 = extractelement <2 x double> %852, i64 0
  %860 = fdiv double %859, %853
  br label %.critedge909

.critedge909:                                     ; preds = %.critedge908, %._crit_edge1018, %._crit_edge1018.thread, %858
  %.0853 = phi double [ %860, %858 ], [ 0.000000e+00, %._crit_edge1018.thread ], [ 0.000000e+00, %._crit_edge1018 ], [ 0.000000e+00, %.critedge908 ]
  %861 = load ptr, ptr %725, align 8, !tbaa !21
  %862 = load ptr, ptr %722, align 8, !tbaa !21
  %863 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %861, i64 noundef 1, ptr noundef %862, i64 noundef 1, i64 noundef %863, double noundef %.0853)
  call void @_ZN11alglib_impl23sasconstraineddirectionEPNS_10sactivesetEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %99, ptr noundef nonnull %94, ptr noundef %15)
  call void @_ZN11alglib_impl19sasexploredirectionEPNS_10sactivesetEPNS_9ae_vectorEPdPlS4_PNS_8ae_stateE(ptr noundef nonnull %99, ptr noundef nonnull %94, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef %15)
  call void @_ZN11alglib_implL24qqpsolver_quadraticmodelEPNS_10qqpbuffersEPNS_9ae_vectorES3_S3_PdPlS4_S5_S3_PNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef nonnull %717, ptr noundef nonnull %94, ptr noundef nonnull %91, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %17, ptr noundef nonnull %20, ptr noundef nonnull %96, ptr noundef %15)
  %864 = load double, ptr %18, align 8, !tbaa !22
  %865 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %864, double noundef 0.000000e+00)
  br i1 %865, label %866, label %869

866:                                              ; preds = %.critedge909
  %867 = load double, ptr %17, align 8, !tbaa !22
  %868 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %867, double noundef 0.000000e+00)
  br i1 %868, label %.thread.sink.split, label %869

869:                                              ; preds = %866, %.critedge909
  %870 = load i64, ptr %19, align 8, !tbaa !5
  %871 = icmp sgt i64 %870, -1
  br i1 %871, label %.thread.sink.split, label %872

872:                                              ; preds = %869
  %873 = load i64, ptr %20, align 8, !tbaa !5
  %874 = icmp slt i64 %873, 1
  %875 = load i64, ptr %22, align 8
  %876 = icmp slt i64 %875, 0
  %or.cond5 = select i1 %874, i1 %876, i1 false
  br i1 %or.cond5, label %.thread.sink.split, label %877

877:                                              ; preds = %872
  %878 = icmp sgt i64 %873, 0
  br i1 %878, label %879, label %900

879:                                              ; preds = %877
  %880 = load double, ptr %18, align 8, !tbaa !22
  %881 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %880, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %881, ptr noundef nonnull @.str.208, ptr noundef %15)
  %882 = load double, ptr %18, align 8, !tbaa !22
  %883 = fneg double %882
  %884 = load double, ptr %17, align 8, !tbaa !22
  %885 = fmul double %884, 2.000000e+00
  %886 = fdiv double %883, %885
  %887 = load double, ptr %21, align 8, !tbaa !22
  %888 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %886, double noundef %887)
  br i1 %888, label %889, label %907

889:                                              ; preds = %879
  %890 = load i64, ptr %98, align 8, !tbaa !70
  %891 = icmp sgt i64 %890, 2
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %891, ptr noundef nonnull @.str.209, ptr noundef %15)
  %892 = load double, ptr %21, align 8, !tbaa !22
  %893 = fmul double %892, 4.000000e+00
  %894 = load ptr, ptr %730, align 8, !tbaa !21
  store double %893, ptr %894, align 8, !tbaa !22
  %895 = load ptr, ptr %730, align 8, !tbaa !21
  %896 = getelementptr inbounds i8, ptr %895, i64 8
  store double %886, ptr %896, align 8, !tbaa !22
  %897 = fmul double %886, 2.500000e-01
  %898 = load ptr, ptr %730, align 8, !tbaa !21
  %899 = getelementptr inbounds i8, ptr %898, i64 16
  store double %897, ptr %899, align 8, !tbaa !22
  br label %907

900:                                              ; preds = %877
  %901 = icmp sgt i64 %875, -1
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %901, ptr noundef nonnull @.str.208, ptr noundef %15)
  %902 = load i64, ptr %98, align 8, !tbaa !70
  %903 = icmp sgt i64 %902, 1
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %903, ptr noundef nonnull @.str.209, ptr noundef %15)
  %904 = load double, ptr %21, align 8, !tbaa !22
  %905 = fmul double %904, 4.000000e+00
  %906 = load ptr, ptr %730, align 8, !tbaa !21
  store double %905, ptr %906, align 8, !tbaa !22
  br label %907

907:                                              ; preds = %879, %889, %900
  %.0865.shrunk = phi i1 [ true, %889 ], [ true, %900 ], [ false, %879 ]
  %.0863 = phi double [ %892, %889 ], [ %904, %900 ], [ %886, %879 ]
  %.0861 = phi i64 [ 3, %889 ], [ 1, %900 ], [ 0, %879 ]
  %908 = load i64, ptr %22, align 8, !tbaa !5
  %909 = load double, ptr %23, align 8, !tbaa !22
  call void @_ZN11alglib_implL29qqpsolver_findbeststepandmoveEPNS_10qqpbuffersEPNS_10sactivesetEPNS_9ae_vectorEdbldS5_lS5_S5_S5_PNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef nonnull %99, ptr noundef nonnull %94, double noundef %.0863, i1 noundef zeroext %.0865.shrunk, i64 noundef %908, double noundef %909, ptr noundef nonnull %98, i64 noundef %.0861, ptr noundef nonnull %731, ptr noundef nonnull %96, ptr noundef nonnull %97, ptr noundef %15)
  %910 = load ptr, ptr %722, align 8, !tbaa !21
  %911 = load ptr, ptr %725, align 8, !tbaa !21
  %912 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %910, i64 noundef 1, ptr noundef %911, i64 noundef 1, i64 noundef %912)
  %913 = load ptr, ptr %721, align 8, !tbaa !21
  %914 = load ptr, ptr %723, align 8, !tbaa !21
  %915 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %913, i64 noundef 1, ptr noundef %914, i64 noundef 1, i64 noundef %915)
  %916 = load i64, ptr %28, align 8, !tbaa !71
  %917 = add nsw i64 %916, 1
  store i64 %917, ptr %28, align 8, !tbaa !71
  %918 = add nuw nsw i64 %.08601024, 1
  %.not892.not925 = icmp sgt i64 %.0855, %918
  br i1 %.not892.not925, label %.lr.ph1025, label %._crit_edge1026, !llvm.loop !72

._crit_edge1026:                                  ; preds = %907, %.preheader
  %.pr911 = load i64, ptr %14, align 8, !tbaa !5
  %.not894 = icmp eq i64 %.pr911, 0
  br i1 %.not894, label %919, label %.thread

919:                                              ; preds = %._crit_edge1026
  %920 = load i64, ptr %732, align 8, !tbaa !73
  store i64 0, ptr %24, align 8, !tbaa !5
  %921 = load i8, ptr %733, align 1, !tbaa !30, !range !28, !noundef !29
  %922 = trunc nuw i8 %921 to i1
  br i1 %922, label %.lr.ph1034, label %.thread917

.lr.ph1034thread-pre-split:                       ; preds = %1017
  %.pr1081 = load i64, ptr %24, align 8, !tbaa !5
  br label %.lr.ph1034

.lr.ph1034:                                       ; preds = %919, %.lr.ph1034thread-pre-split
  %923 = phi i64 [ %.pr1081, %.lr.ph1034thread-pre-split ], [ 0, %919 ]
  %.28571032 = phi i64 [ %.3858916, %.lr.ph1034thread-pre-split ], [ %920, %919 ]
  %924 = icmp eq i64 %923, 0
  br i1 %924, label %925, label %928

925:                                              ; preds = %.lr.ph1034
  %926 = call noundef zeroext i1 @_ZN11alglib_implL22qqpsolver_cnewtonbuildEPNS_10qqpbuffersElPlPNS_8ae_stateE(ptr noundef %12, i64 noundef %.0854, ptr noundef nonnull %30, ptr noundef %15)
  br i1 %926, label %.thread913, label %.thread917

.thread913:                                       ; preds = %925
  %927 = load i64, ptr %713, align 8, !tbaa !61
  br label %930

928:                                              ; preds = %.lr.ph1034
  %929 = call noundef zeroext i1 @_ZN11alglib_implL23qqpsolver_cnewtonupdateEPNS_10qqpbuffersEPNS_11qqpsettingsEPlPNS_8ae_stateE(ptr noundef %12, ptr noundef nonnull %11, ptr noundef nonnull %31, ptr noundef %15)
  br i1 %929, label %930, label %.thread917

930:                                              ; preds = %.thread913, %928
  %.3858916 = phi i64 [ %927, %.thread913 ], [ %.28571032, %928 ]
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %24, ptr noundef %15)
  call void @_ZN11alglib_implL24qqpsolver_targetgradientEPNS_10qqpbuffersEPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %12, ptr noundef nonnull %717, ptr noundef nonnull %91, ptr noundef %15)
  br i1 %.not.not939, label %.lr.ph1030.preheader, label %._crit_edge1031

.lr.ph1030.preheader:                             ; preds = %930
  br i1 %736, label %._crit_edge1031.loopexit.unr-lcssa, label %.lr.ph1030

.lr.ph1030:                                       ; preds = %.lr.ph1030.preheader, %.lr.ph1030
  %.161028 = phi i64 [ %954, %.lr.ph1030 ], [ 0, %.lr.ph1030.preheader ]
  %niter1156 = phi i64 [ %niter1156.next.3, %.lr.ph1030 ], [ 0, %.lr.ph1030.preheader ]
  %931 = load ptr, ptr %724, align 8, !tbaa !21
  %932 = getelementptr inbounds double, ptr %931, i64 %.161028
  %933 = load double, ptr %932, align 8, !tbaa !22
  %934 = load ptr, ptr %725, align 8, !tbaa !21
  %935 = getelementptr inbounds double, ptr %934, i64 %.161028
  store double %933, ptr %935, align 8, !tbaa !22
  %936 = or disjoint i64 %.161028, 1
  %937 = load ptr, ptr %724, align 8, !tbaa !21
  %938 = getelementptr inbounds double, ptr %937, i64 %936
  %939 = load double, ptr %938, align 8, !tbaa !22
  %940 = load ptr, ptr %725, align 8, !tbaa !21
  %941 = getelementptr inbounds double, ptr %940, i64 %936
  store double %939, ptr %941, align 8, !tbaa !22
  %942 = or disjoint i64 %.161028, 2
  %943 = load ptr, ptr %724, align 8, !tbaa !21
  %944 = getelementptr inbounds double, ptr %943, i64 %942
  %945 = load double, ptr %944, align 8, !tbaa !22
  %946 = load ptr, ptr %725, align 8, !tbaa !21
  %947 = getelementptr inbounds double, ptr %946, i64 %942
  store double %945, ptr %947, align 8, !tbaa !22
  %948 = or disjoint i64 %.161028, 3
  %949 = load ptr, ptr %724, align 8, !tbaa !21
  %950 = getelementptr inbounds double, ptr %949, i64 %948
  %951 = load double, ptr %950, align 8, !tbaa !22
  %952 = load ptr, ptr %725, align 8, !tbaa !21
  %953 = getelementptr inbounds double, ptr %952, i64 %948
  store double %951, ptr %953, align 8, !tbaa !22
  %954 = add nuw nsw i64 %.161028, 4
  %niter1156.next.3 = add i64 %niter1156, 4
  %niter1156.ncmp.3 = icmp eq i64 %niter1156.next.3, %unroll_iter1155
  br i1 %niter1156.ncmp.3, label %._crit_edge1031.loopexit.unr-lcssa, label %.lr.ph1030, !llvm.loop !74

._crit_edge1031.loopexit.unr-lcssa:               ; preds = %.lr.ph1030, %.lr.ph1030.preheader
  %.161028.unr = phi i64 [ 0, %.lr.ph1030.preheader ], [ %954, %.lr.ph1030 ]
  br i1 %lcmp.mod1154.not, label %._crit_edge1031, label %.lr.ph1030.epil

.lr.ph1030.epil:                                  ; preds = %._crit_edge1031.loopexit.unr-lcssa, %.lr.ph1030.epil
  %.161028.epil = phi i64 [ %960, %.lr.ph1030.epil ], [ %.161028.unr, %._crit_edge1031.loopexit.unr-lcssa ]
  %epil.iter1153 = phi i64 [ %epil.iter1153.next, %.lr.ph1030.epil ], [ 0, %._crit_edge1031.loopexit.unr-lcssa ]
  %955 = load ptr, ptr %724, align 8, !tbaa !21
  %956 = getelementptr inbounds double, ptr %955, i64 %.161028.epil
  %957 = load double, ptr %956, align 8, !tbaa !22
  %958 = load ptr, ptr %725, align 8, !tbaa !21
  %959 = getelementptr inbounds double, ptr %958, i64 %.161028.epil
  store double %957, ptr %959, align 8, !tbaa !22
  %960 = add nuw nsw i64 %.161028.epil, 1
  %epil.iter1153.next = add i64 %epil.iter1153, 1
  %epil.iter1153.cmp.not = icmp eq i64 %epil.iter1153.next, %xtraiter1152
  br i1 %epil.iter1153.cmp.not, label %._crit_edge1031, label %.lr.ph1030.epil, !llvm.loop !75

._crit_edge1031:                                  ; preds = %._crit_edge1031.loopexit.unr-lcssa, %.lr.ph1030.epil, %930
  %961 = call noundef zeroext i1 @_ZN11alglib_implL21qqpsolver_cnewtonstepEPNS_10qqpbuffersEPNS_11qqpsettingsEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %12, ptr noundef %11, ptr noundef nonnull %94, ptr noundef %15)
  br i1 %961, label %962, label %.thread917

962:                                              ; preds = %._crit_edge1031
  call void @_ZN11alglib_implL24qqpsolver_quadraticmodelEPNS_10qqpbuffersEPNS_9ae_vectorES3_S3_PdPlS4_S5_S3_PNS_8ae_stateE(ptr noundef %12, ptr noundef nonnull %717, ptr noundef nonnull %94, ptr noundef nonnull %91, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %17, ptr noundef nonnull %20, ptr noundef nonnull %96, ptr noundef %15)
  %963 = load i64, ptr %19, align 8, !tbaa !5
  %964 = icmp sgt i64 %963, -1
  br i1 %964, label %.thread917, label %965

965:                                              ; preds = %962
  %966 = load i64, ptr %20, align 8, !tbaa !5
  %967 = icmp sgt i64 %966, 0
  br i1 %967, label %968, label %992

968:                                              ; preds = %965
  %969 = load double, ptr %18, align 8, !tbaa !22
  %970 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %969, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %970, ptr noundef nonnull @.str.208, ptr noundef %15)
  %971 = load double, ptr %18, align 8, !tbaa !22
  %972 = fneg double %971
  %973 = load double, ptr %17, align 8, !tbaa !22
  %974 = fmul double %973, 2.000000e+00
  %975 = fdiv double %972, %974
  call void @_ZN11alglib_impl19sasexploredirectionEPNS_10sactivesetEPNS_9ae_vectorEPdPlS4_PNS_8ae_stateE(ptr noundef nonnull %99, ptr noundef nonnull %94, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef %15)
  %976 = load double, ptr %21, align 8, !tbaa !22
  %977 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %975, double noundef %976)
  br i1 %977, label %978, label %989

978:                                              ; preds = %968
  %979 = load i64, ptr %98, align 8, !tbaa !70
  %980 = icmp sgt i64 %979, 2
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %980, ptr noundef nonnull @.str.209, ptr noundef %15)
  %981 = load double, ptr %21, align 8, !tbaa !22
  %982 = fmul double %981, 4.000000e+00
  %983 = load ptr, ptr %730, align 8, !tbaa !21
  store double %982, ptr %983, align 8, !tbaa !22
  %984 = load ptr, ptr %730, align 8, !tbaa !21
  %985 = getelementptr inbounds i8, ptr %984, i64 8
  store double %975, ptr %985, align 8, !tbaa !22
  %986 = fmul double %975, 2.500000e-01
  %987 = load ptr, ptr %730, align 8, !tbaa !21
  %988 = getelementptr inbounds i8, ptr %987, i64 16
  store double %986, ptr %988, align 8, !tbaa !22
  br label %989

989:                                              ; preds = %968, %978
  %.1864 = phi double [ %981, %978 ], [ %975, %968 ]
  %.1862 = phi i64 [ 3, %978 ], [ 0, %968 ]
  %990 = load i64, ptr %22, align 8, !tbaa !5
  %991 = load double, ptr %23, align 8, !tbaa !22
  call void @_ZN11alglib_implL29qqpsolver_findbeststepandmoveEPNS_10qqpbuffersEPNS_10sactivesetEPNS_9ae_vectorEdbldS5_lS5_S5_S5_PNS_8ae_stateE(ptr noundef %12, ptr noundef nonnull %99, ptr noundef nonnull %94, double noundef %.1864, i1 noundef zeroext %977, i64 noundef %990, double noundef %991, ptr noundef nonnull %98, i64 noundef %.1862, ptr noundef nonnull %731, ptr noundef nonnull %96, ptr noundef nonnull %97, ptr noundef %15)
  br label %1017

992:                                              ; preds = %965
  call void @_ZN11alglib_impl19sasexploredirectionEPNS_10sactivesetEPNS_9ae_vectorEPdPlS4_PNS_8ae_stateE(ptr noundef nonnull %99, ptr noundef nonnull %94, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef %15)
  %993 = load i64, ptr %22, align 8, !tbaa !5
  %994 = icmp slt i64 %993, 0
  br i1 %994, label %.thread.sink.split, label %995

995:                                              ; preds = %992
  %996 = load double, ptr %21, align 8, !tbaa !22
  %997 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %996, double noundef 0.000000e+00)
  br i1 %997, label %.thread917.sink.split, label %998

998:                                              ; preds = %995
  %999 = load double, ptr %21, align 8, !tbaa !22
  %1000 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %999, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1000, ptr noundef nonnull @.str.208, ptr noundef %15)
  %1001 = call noundef double @_ZN11alglib_implL33qqpsolver_projectedtargetfunctionEPNS_10qqpbuffersEPNS_9ae_vectorES3_dS3_S3_PNS_8ae_stateE(ptr noundef %12, ptr noundef nonnull %717, ptr noundef nonnull %94, double noundef 0.000000e+00, ptr noundef nonnull %96, ptr noundef nonnull %97, ptr noundef %15)
  %1002 = load double, ptr %21, align 8, !tbaa !22
  %1003 = call noundef double @_ZN11alglib_implL33qqpsolver_projectedtargetfunctionEPNS_10qqpbuffersEPNS_9ae_vectorES3_dS3_S3_PNS_8ae_stateE(ptr noundef %12, ptr noundef nonnull %717, ptr noundef nonnull %94, double noundef %1002, ptr noundef nonnull %96, ptr noundef nonnull %97, ptr noundef %15)
  %1004 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %1003, double noundef %1001)
  br i1 %1004, label %.thread917.sink.split, label %1005

1005:                                             ; preds = %998
  %1006 = load i64, ptr %98, align 8, !tbaa !70
  %1007 = icmp sgt i64 %1006, 2
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %1007, ptr noundef nonnull @.str.209, ptr noundef %15)
  %1008 = load double, ptr %21, align 8, !tbaa !22
  %1009 = fmul double %1008, 4.000000e+00
  %1010 = load ptr, ptr %730, align 8, !tbaa !21
  store double %1009, ptr %1010, align 8, !tbaa !22
  %1011 = load ptr, ptr %730, align 8, !tbaa !21
  %1012 = getelementptr inbounds i8, ptr %1011, i64 8
  store double 1.000000e+00, ptr %1012, align 8, !tbaa !22
  %1013 = load ptr, ptr %730, align 8, !tbaa !21
  %1014 = getelementptr inbounds i8, ptr %1013, i64 16
  store double 2.500000e-01, ptr %1014, align 8, !tbaa !22
  %1015 = load i64, ptr %22, align 8, !tbaa !5
  %1016 = load double, ptr %23, align 8, !tbaa !22
  call void @_ZN11alglib_implL29qqpsolver_findbeststepandmoveEPNS_10qqpbuffersEPNS_10sactivesetEPNS_9ae_vectorEdbldS5_lS5_S5_S5_PNS_8ae_stateE(ptr noundef %12, ptr noundef nonnull %99, ptr noundef nonnull %94, double noundef %1008, i1 noundef zeroext true, i64 noundef %1015, double noundef %1016, ptr noundef nonnull %98, i64 noundef 3, ptr noundef nonnull %731, ptr noundef nonnull %96, ptr noundef nonnull %97, ptr noundef %15)
  br label %1017

1017:                                             ; preds = %1005, %989
  %1018 = load i8, ptr %733, align 1, !tbaa !30, !range !28, !noundef !29
  %1019 = trunc nuw i8 %1018 to i1
  br i1 %1019, label %.lr.ph1034thread-pre-split, label %.thread917, !llvm.loop !76

.thread917.sink.split:                            ; preds = %998, %995
  %1020 = load i64, ptr %732, align 8, !tbaa !73
  br label %.thread917

.thread917:                                       ; preds = %1017, %928, %._crit_edge1031, %962, %925, %.thread917.sink.split, %919
  %.4859.ph = phi i64 [ %920, %919 ], [ %1020, %.thread917.sink.split ], [ %.3858916, %1017 ], [ %.28571032, %928 ], [ %.3858916, %._crit_edge1031 ], [ %.3858916, %962 ], [ %.28571032, %925 ]
  %.pr921 = load i64, ptr %14, align 8, !tbaa !5
  %.not896 = icmp eq i64 %.pr921, 0
  br i1 %.not896, label %737, label %.thread, !llvm.loop !77

.thread.sink.split:                               ; preds = %._crit_edge1005, %745, %737, %872, %869, %866, %.lr.ph1025, %992
  %.sink1094 = phi i64 [ -4, %992 ], [ 4, %.lr.ph1025 ], [ 4, %866 ], [ 7, %869 ], [ -4, %872 ], [ 5, %737 ], [ 1, %745 ], [ 2, %._crit_edge1005 ]
  store i64 %.sink1094, ptr %14, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread917, %._crit_edge1026, %.thread.sink.split
  call void @_ZN11alglib_impl19sasstopoptimizationEPNS_10sactivesetEPNS_8ae_stateE(ptr noundef nonnull %99, ptr noundef %15)
  %1021 = getelementptr inbounds i8, ptr %12, i64 936
  %1022 = load ptr, ptr %1021, align 8, !tbaa !21
  %1023 = load ptr, ptr %720, align 8, !tbaa !21
  %1024 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %1022, i64 noundef 1, ptr noundef %1023, i64 noundef 1, i64 noundef %1024)
  br label %1025

1025:                                             ; preds = %710, %.thread
  br i1 %.not.not939, label %.lr.ph1047, label %.loopexit

.lr.ph1047:                                       ; preds = %1025
  %1026 = getelementptr inbounds i8, ptr %8, i64 56
  %1027 = getelementptr inbounds i8, ptr %12, i64 936
  %1028 = getelementptr inbounds i8, ptr %9, i64 56
  %1029 = getelementptr inbounds i8, ptr %13, i64 56
  %1030 = getelementptr inbounds i8, ptr %12, i64 744
  %1031 = getelementptr inbounds i8, ptr %6, i64 56
  %1032 = getelementptr inbounds i8, ptr %12, i64 808
  %1033 = getelementptr inbounds i8, ptr %7, i64 56
  %1034 = getelementptr inbounds i8, ptr %12, i64 616
  %1035 = getelementptr inbounds i8, ptr %12, i64 680
  br label %1036

1036:                                             ; preds = %.lr.ph1047, %1124
  %.171045 = phi i64 [ 0, %.lr.ph1047 ], [ %1125, %1124 ]
  %1037 = load ptr, ptr %1026, align 8, !tbaa !21
  %1038 = getelementptr inbounds double, ptr %1037, i64 %.171045
  %1039 = load double, ptr %1038, align 8, !tbaa !22
  %1040 = load ptr, ptr %1027, align 8, !tbaa !21
  %1041 = getelementptr inbounds double, ptr %1040, i64 %.171045
  %1042 = load double, ptr %1041, align 8, !tbaa !22
  %1043 = load ptr, ptr %1028, align 8, !tbaa !21
  %1044 = getelementptr inbounds double, ptr %1043, i64 %.171045
  %1045 = load double, ptr %1044, align 8, !tbaa !22
  %1046 = call double @llvm.fmuladd.f64(double %1039, double %1042, double %1045)
  %1047 = load ptr, ptr %1029, align 8, !tbaa !21
  %1048 = getelementptr inbounds double, ptr %1047, i64 %.171045
  store double %1046, ptr %1048, align 8, !tbaa !22
  %1049 = load ptr, ptr %1030, align 8, !tbaa !21
  %1050 = getelementptr inbounds i8, ptr %1049, i64 %.171045
  %1051 = load i8, ptr %1050, align 1, !tbaa !46, !range !28, !noundef !29
  %1052 = trunc nuw i8 %1051 to i1
  br i1 %1052, label %1053, label %1067

1053:                                             ; preds = %1036
  %1054 = load ptr, ptr %1029, align 8, !tbaa !21
  %1055 = getelementptr inbounds double, ptr %1054, i64 %.171045
  %1056 = load double, ptr %1055, align 8, !tbaa !22
  %1057 = load ptr, ptr %1031, align 8, !tbaa !21
  %1058 = getelementptr inbounds double, ptr %1057, i64 %.171045
  %1059 = load double, ptr %1058, align 8, !tbaa !22
  %1060 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1056, double noundef %1059)
  br i1 %1060, label %1061, label %1067

1061:                                             ; preds = %1053
  %1062 = load ptr, ptr %1031, align 8, !tbaa !21
  %1063 = getelementptr inbounds double, ptr %1062, i64 %.171045
  %1064 = load double, ptr %1063, align 8, !tbaa !22
  %1065 = load ptr, ptr %1029, align 8, !tbaa !21
  %1066 = getelementptr inbounds double, ptr %1065, i64 %.171045
  store double %1064, ptr %1066, align 8, !tbaa !22
  br label %1067

1067:                                             ; preds = %1061, %1053, %1036
  %1068 = load ptr, ptr %1032, align 8, !tbaa !21
  %1069 = getelementptr inbounds i8, ptr %1068, i64 %.171045
  %1070 = load i8, ptr %1069, align 1, !tbaa !46, !range !28, !noundef !29
  %1071 = trunc nuw i8 %1070 to i1
  br i1 %1071, label %1072, label %1086

1072:                                             ; preds = %1067
  %1073 = load ptr, ptr %1029, align 8, !tbaa !21
  %1074 = getelementptr inbounds double, ptr %1073, i64 %.171045
  %1075 = load double, ptr %1074, align 8, !tbaa !22
  %1076 = load ptr, ptr %1033, align 8, !tbaa !21
  %1077 = getelementptr inbounds double, ptr %1076, i64 %.171045
  %1078 = load double, ptr %1077, align 8, !tbaa !22
  %1079 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1075, double noundef %1078)
  br i1 %1079, label %1080, label %1086

1080:                                             ; preds = %1072
  %1081 = load ptr, ptr %1033, align 8, !tbaa !21
  %1082 = getelementptr inbounds double, ptr %1081, i64 %.171045
  %1083 = load double, ptr %1082, align 8, !tbaa !22
  %1084 = load ptr, ptr %1029, align 8, !tbaa !21
  %1085 = getelementptr inbounds double, ptr %1084, i64 %.171045
  store double %1083, ptr %1085, align 8, !tbaa !22
  br label %1086

1086:                                             ; preds = %1080, %1072, %1067
  %1087 = load ptr, ptr %1030, align 8, !tbaa !21
  %1088 = getelementptr inbounds i8, ptr %1087, i64 %.171045
  %1089 = load i8, ptr %1088, align 1, !tbaa !46, !range !28, !noundef !29
  %1090 = trunc nuw i8 %1089 to i1
  br i1 %1090, label %1091, label %1105

1091:                                             ; preds = %1086
  %1092 = load ptr, ptr %1027, align 8, !tbaa !21
  %1093 = getelementptr inbounds double, ptr %1092, i64 %.171045
  %1094 = load double, ptr %1093, align 8, !tbaa !22
  %1095 = load ptr, ptr %1034, align 8, !tbaa !21
  %1096 = getelementptr inbounds double, ptr %1095, i64 %.171045
  %1097 = load double, ptr %1096, align 8, !tbaa !22
  %1098 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1094, double noundef %1097)
  br i1 %1098, label %1099, label %1105

1099:                                             ; preds = %1091
  %1100 = load ptr, ptr %1031, align 8, !tbaa !21
  %1101 = getelementptr inbounds double, ptr %1100, i64 %.171045
  %1102 = load double, ptr %1101, align 8, !tbaa !22
  %1103 = load ptr, ptr %1029, align 8, !tbaa !21
  %1104 = getelementptr inbounds double, ptr %1103, i64 %.171045
  store double %1102, ptr %1104, align 8, !tbaa !22
  br label %1105

1105:                                             ; preds = %1099, %1091, %1086
  %1106 = load ptr, ptr %1032, align 8, !tbaa !21
  %1107 = getelementptr inbounds i8, ptr %1106, i64 %.171045
  %1108 = load i8, ptr %1107, align 1, !tbaa !46, !range !28, !noundef !29
  %1109 = trunc nuw i8 %1108 to i1
  br i1 %1109, label %1110, label %1124

1110:                                             ; preds = %1105
  %1111 = load ptr, ptr %1027, align 8, !tbaa !21
  %1112 = getelementptr inbounds double, ptr %1111, i64 %.171045
  %1113 = load double, ptr %1112, align 8, !tbaa !22
  %1114 = load ptr, ptr %1035, align 8, !tbaa !21
  %1115 = getelementptr inbounds double, ptr %1114, i64 %.171045
  %1116 = load double, ptr %1115, align 8, !tbaa !22
  %1117 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1113, double noundef %1116)
  br i1 %1117, label %1118, label %1124

1118:                                             ; preds = %1110
  %1119 = load ptr, ptr %1033, align 8, !tbaa !21
  %1120 = getelementptr inbounds double, ptr %1119, i64 %.171045
  %1121 = load double, ptr %1120, align 8, !tbaa !22
  %1122 = load ptr, ptr %1029, align 8, !tbaa !21
  %1123 = getelementptr inbounds double, ptr %1122, i64 %.171045
  store double %1121, ptr %1123, align 8, !tbaa !22
  br label %1124

1124:                                             ; preds = %1105, %1110, %1118
  %1125 = add nuw nsw i64 %.171045, 1
  %exitcond1074.not = icmp eq i64 %1125, %10
  br i1 %exitcond1074.not, label %.loopexit, label %1036, !llvm.loop !78

.loopexit.sink.split:                             ; preds = %64, %.critedge
  store i64 -3, ptr %14, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %1124, %.loopexit.sink.split, %1025
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  ret void
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #6

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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, !6, i64 0}
!10 = !{!"_ZTSN11alglib_impl10qqpbuffersE", !6, i64 0, !6, i64 8, !11, i64 16, !15, i64 96, !12, i64 464, !17, i64 472, !17, i64 480, !17, i64 488, !16, i64 496, !16, i64 560, !16, i64 624, !16, i64 688, !16, i64 752, !16, i64 816, !16, i64 880, !16, i64 944, !16, i64 1008, !16, i64 1072, !16, i64 1136, !16, i64 1200, !16, i64 1264, !18, i64 1328, !16, i64 5672, !6, i64 5736, !6, i64 5744, !11, i64 5752, !15, i64 5832, !16, i64 6200, !16, i64 6264, !16, i64 6328, !16, i64 6392, !16, i64 6456, !16, i64 6520, !16, i64 6584, !16, i64 6648, !16, i64 6712, !20, i64 6776, !6, i64 7272, !6, i64 7280, !6, i64 7288, !6, i64 7296}
!11 = !{!"_ZTSN11alglib_impl9ae_matrixE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !12, i64 32, !13, i64 40, !7, i64 72}
!12 = !{!"bool", !7, i64 0}
!13 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24}
!14 = !{!"any pointer", !7, i64 0}
!15 = !{!"_ZTSN11alglib_impl12sparsematrixE", !16, i64 0, !16, i64 64, !16, i64 128, !16, i64 192, !16, i64 256, !6, i64 320, !6, i64 328, !6, i64 336, !6, i64 344, !6, i64 352, !6, i64 360}
!16 = !{!"_ZTSN11alglib_impl9ae_vectorE", !6, i64 0, !6, i64 8, !12, i64 16, !13, i64 24, !7, i64 56}
!17 = !{!"double", !7, i64 0}
!18 = !{!"_ZTSN11alglib_impl10sactivesetE", !6, i64 0, !6, i64 8, !16, i64 16, !12, i64 80, !16, i64 88, !16, i64 152, !16, i64 216, !12, i64 280, !11, i64 288, !11, i64 368, !11, i64 448, !6, i64 528, !16, i64 536, !6, i64 600, !6, i64 608, !12, i64 616, !12, i64 617, !16, i64 624, !16, i64 688, !16, i64 752, !16, i64 816, !11, i64 880, !6, i64 960, !6, i64 968, !16, i64 976, !16, i64 1040, !16, i64 1104, !16, i64 1168, !16, i64 1232, !16, i64 1296, !19, i64 1360, !16, i64 3000, !16, i64 3064, !16, i64 3128, !11, i64 3192, !16, i64 3272, !16, i64 3336, !16, i64 3400, !11, i64 3464, !11, i64 3544, !16, i64 3624, !16, i64 3688, !16, i64 3752, !11, i64 3816, !16, i64 3896, !16, i64 3960, !16, i64 4024, !16, i64 4088, !16, i64 4152, !16, i64 4216, !16, i64 4280}
!19 = !{!"_ZTSN11alglib_impl11snnlssolverE", !6, i64 0, !6, i64 8, !6, i64 16, !11, i64 24, !16, i64 104, !16, i64 168, !17, i64 232, !6, i64 240, !16, i64 248, !16, i64 312, !11, i64 376, !11, i64 456, !11, i64 536, !16, i64 616, !16, i64 680, !16, i64 744, !16, i64 808, !16, i64 872, !16, i64 936, !16, i64 1000, !16, i64 1064, !16, i64 1128, !16, i64 1192, !16, i64 1256, !16, i64 1320, !16, i64 1384, !16, i64 1448, !16, i64 1512, !16, i64 1576}
!20 = !{!"_ZTSN11alglib_impl13sparsebuffersE", !16, i64 0, !16, i64 64, !15, i64 128}
!21 = !{!7, !7, i64 0}
!22 = !{!17, !17, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = distinct !{!25, !24}
!26 = !{!27, !12, i64 32}
!27 = !{!"_ZTSN11alglib_impl11qqpsettingsE", !17, i64 0, !17, i64 8, !17, i64 16, !6, i64 24, !12, i64 32, !12, i64 33, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64}
!28 = !{i8 0, i8 2}
!29 = !{}
!30 = !{!27, !12, i64 33}
!31 = distinct !{!31, !24}
!32 = !{!10, !6, i64 8}
!33 = !{!14, !14, i64 0}
!34 = !{!10, !17, i64 472}
!35 = !{!10, !17, i64 480}
!36 = !{!10, !17, i64 488}
!37 = distinct !{!37, !24}
!38 = distinct !{!38, !24}
!39 = !{!10, !12, i64 464}
!40 = distinct !{!40, !24}
!41 = distinct !{!41, !24}
!42 = distinct !{!42, !24}
!43 = distinct !{!43, !24}
!44 = distinct !{!44, !24}
!45 = distinct !{!45, !24}
!46 = !{!12, !12, i64 0}
!47 = !{!48, !17, i64 24}
!48 = !{!"_ZTSN11alglib_impl8ae_stateE", !6, i64 0, !17, i64 8, !17, i64 16, !17, i64 24, !14, i64 32, !13, i64 40, !14, i64 72, !49, i64 80, !14, i64 88, !50, i64 96, !14, i64 104, !14, i64 112, !14, i64 120}
!49 = !{!"_ZTSN11alglib_impl13ae_error_typeE", !7, i64 0}
!50 = !{!"long long", !7, i64 0}
!51 = !{!48, !17, i64 16}
!52 = distinct !{!52, !24}
!53 = distinct !{!53, !24}
!54 = distinct !{!54, !24}
!55 = distinct !{!55, !24}
!56 = distinct !{!56, !24}
!57 = distinct !{!57, !24}
!58 = distinct !{!58, !59}
!59 = !{!"llvm.loop.unroll.disable"}
!60 = distinct !{!60, !24}
!61 = !{!27, !6, i64 40}
!62 = !{!27, !6, i64 24}
!63 = !{!10, !6, i64 7280}
!64 = !{!27, !17, i64 8}
!65 = !{!27, !17, i64 16}
!66 = distinct !{!66, !24}
!67 = distinct !{!67, !24}
!68 = !{!27, !17, i64 0}
!69 = distinct !{!69, !24}
!70 = !{!10, !6, i64 6712}
!71 = !{!10, !6, i64 7272}
!72 = distinct !{!72, !24}
!73 = !{!27, !6, i64 48}
!74 = distinct !{!74, !24}
!75 = distinct !{!75, !59}
!76 = distinct !{!76, !24}
!77 = distinct !{!77, !24}
!78 = distinct !{!78, !24}


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