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

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

%"struct.alglib_impl::qpdenseaulsettings" = type { double, i64, double }
%"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 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::qpdenseaulbuffers" = type { %"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_matrix", %"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::qqpsettings", %"struct.alglib_impl::qqpbuffers", %"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::convexquadraticmodel", %"struct.alglib_impl::sparsematrix", %"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", i64, i64, i64, i64, i64, i64, i64, i64 }
%"struct.alglib_impl::qqpsettings" = type { double, double, double, i64, i8, i8, i64, i64, i64, i64 }
%"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::sparsebuffers" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::sparsematrix" }
%"struct.alglib_impl::convexquadraticmodel" = type { i64, i64, double, double, double, %"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_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, %"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", double, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", i8, i8, i8, i8 }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.1 }
%union.anon.1 = type { ptr }

@.str.576 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.577 = external hidden unnamed_addr constant [50 x i8], align 1
@_ZN11alglib_implL31qpdenseaulsolver_expansionratioE = external hidden global double, align 8
@_ZN11alglib_implL30qpdenseaulsolver_evictionlevelE = external hidden global double, align 8

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef, double 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 noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef, double noundef) #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl18qpdenseauloptimizeEPKNS_20convexquadraticmodelEPKNS_12sparsematrixElbPKNS_9ae_vectorES8_S8_S8_S8_lPKNS_9ae_matrixEllS5_llbPKNS_18qpdenseaulsettingsEPNS_17qpdenseaulbuffersEPS6_SH_SH_PlPNS_8ae_stateE(ptr noundef %0, ptr noundef %1, i64 noundef %2, i1 noundef zeroext %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, i64 noundef %9, ptr noundef %10, i64 noundef %11, i64 noundef %12, ptr noundef %13, i64 noundef %14, i64 noundef %15, i1 noundef zeroext %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23) #3 {
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca i64, align 8
  %28 = alloca i8, align 1
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca i64, align 8
  %35 = alloca ptr, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca ptr, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i8, align 1
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca i64, align 8
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca double, align 8
  %56 = alloca i64, align 8
  %57 = alloca i64, align 8
  %58 = alloca i64, align 8
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca double, align 8
  %62 = alloca double, align 8
  %63 = alloca double, align 8
  %64 = alloca double, align 8
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca i64, align 8
  %68 = alloca i64, align 8
  %69 = alloca i64, align 8
  %70 = alloca i64, align 8
  %71 = alloca i64, align 8
  %72 = alloca i8, align 1
  %73 = alloca i8, align 1
  %74 = alloca double, align 8
  store ptr %0, ptr %25, align 8, !tbaa !5
  store ptr %1, ptr %26, align 8, !tbaa !5
  store i64 %2, ptr %27, align 8, !tbaa !9
  %75 = zext i1 %3 to i8
  store i8 %75, ptr %28, align 1, !tbaa !11
  store ptr %4, ptr %29, align 8, !tbaa !5
  store ptr %5, ptr %30, align 8, !tbaa !5
  store ptr %6, ptr %31, align 8, !tbaa !5
  store ptr %7, ptr %32, align 8, !tbaa !5
  store ptr %8, ptr %33, align 8, !tbaa !5
  store i64 %9, ptr %34, align 8, !tbaa !9
  store ptr %10, ptr %35, align 8, !tbaa !5
  store i64 %11, ptr %36, align 8, !tbaa !9
  store i64 %12, ptr %37, align 8, !tbaa !9
  store ptr %13, ptr %38, align 8, !tbaa !5
  store i64 %14, ptr %39, align 8, !tbaa !9
  store i64 %15, ptr %40, align 8, !tbaa !9
  %76 = zext i1 %16 to i8
  store i8 %76, ptr %41, align 1, !tbaa !11
  store ptr %17, ptr %42, align 8, !tbaa !5
  store ptr %18, ptr %43, align 8, !tbaa !5
  store ptr %19, ptr %44, align 8, !tbaa !5
  store ptr %20, ptr %45, align 8, !tbaa !5
  store ptr %21, ptr %46, align 8, !tbaa !5
  store ptr %22, ptr %47, align 8, !tbaa !5
  store ptr %23, ptr %48, align 8, !tbaa !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 8, 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 8, ptr %59) #5
  call void @llvm.lifetime.start.p0(i64 8, 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
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #5
  %77 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 0, ptr %77, align 8, !tbaa !9
  %78 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %78, ptr %57, align 8, !tbaa !9
  %79 = load i64, ptr %37, align 8, !tbaa !9
  %80 = load i64, ptr %40, align 8, !tbaa !9
  %81 = add nsw i64 %79, %80
  store i64 %81, ptr %58, align 8, !tbaa !9
  %82 = load i64, ptr %57, align 8, !tbaa !9
  %83 = load i64, ptr %58, align 8, !tbaa !9
  %84 = add nsw i64 %82, %83
  store i64 %84, ptr %59, align 8, !tbaa !9
  %85 = load i64, ptr %36, align 8, !tbaa !9
  %86 = load i64, ptr %39, align 8, !tbaa !9
  %87 = add nsw i64 %85, %86
  store i64 %87, ptr %67, align 8, !tbaa !9
  %88 = load i64, ptr %37, align 8, !tbaa !9
  %89 = load i64, ptr %40, align 8, !tbaa !9
  %90 = add nsw i64 %88, %89
  store i64 %90, ptr %68, align 8, !tbaa !9
  %91 = load i64, ptr %36, align 8, !tbaa !9
  %92 = load i64, ptr %37, align 8, !tbaa !9
  %93 = add nsw i64 %91, %92
  %94 = load i64, ptr %39, align 8, !tbaa !9
  %95 = add nsw i64 %93, %94
  %96 = load i64, ptr %40, align 8, !tbaa !9
  %97 = add nsw i64 %95, %96
  store i64 %97, ptr %60, align 8, !tbaa !9
  %98 = load ptr, ptr %42, align 8, !tbaa !5
  %99 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulsettings", ptr %98, i32 0, i32 2
  %100 = load double, ptr %99, align 8, !tbaa !13
  store double %100, ptr %54, align 8, !tbaa !16
  %101 = load ptr, ptr %42, align 8, !tbaa !5
  %102 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulsettings", ptr %101, i32 0, i32 0
  %103 = load double, ptr %102, align 8, !tbaa !17
  store double %103, ptr %55, align 8, !tbaa !16
  store double 3.300000e-01, ptr %64, align 8, !tbaa !16
  store double 1.000000e+12, ptr %61, align 8, !tbaa !16
  %104 = load double, ptr %55, align 8, !tbaa !16
  %105 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %104, double noundef 0.000000e+00)
  br i1 %105, label %106, label %107

106:                                              ; preds = %24
  store double 1.000000e-09, ptr %55, align 8, !tbaa !16
  br label %107

107:                                              ; preds = %106, %24
  %108 = load i64, ptr %39, align 8, !tbaa !9
  %109 = load i64, ptr %40, align 8, !tbaa !9
  %110 = add nsw i64 %108, %109
  %111 = icmp sgt i64 %110, 0
  br i1 %111, label %112, label %133

112:                                              ; preds = %107
  %113 = load ptr, ptr %38, align 8, !tbaa !5
  %114 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %113, i32 0, i32 5
  %115 = load i64, ptr %114, align 8, !tbaa !18
  %116 = icmp eq i64 %115, 1
  %117 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %116, ptr noundef @.str.576, ptr noundef %117)
  %118 = load ptr, ptr %38, align 8, !tbaa !5
  %119 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %118, i32 0, i32 6
  %120 = load i64, ptr %119, align 8, !tbaa !22
  %121 = load i64, ptr %39, align 8, !tbaa !9
  %122 = load i64, ptr %40, align 8, !tbaa !9
  %123 = add nsw i64 %121, %122
  %124 = icmp eq i64 %120, %123
  %125 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %124, ptr noundef @.str.577, ptr noundef %125)
  %126 = load ptr, ptr %38, align 8, !tbaa !5
  %127 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %126, i32 0, i32 7
  %128 = load i64, ptr %127, align 8, !tbaa !23
  %129 = load i64, ptr %57, align 8, !tbaa !9
  %130 = add nsw i64 %129, 1
  %131 = icmp eq i64 %128, %130
  %132 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %131, ptr noundef @.str.577, ptr noundef %132)
  br label %133

133:                                              ; preds = %112, %107
  %134 = load ptr, ptr %43, align 8, !tbaa !5
  %135 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %134, i32 0, i32 36
  store i64 0, ptr %135, align 8, !tbaa !24
  %136 = load ptr, ptr %43, align 8, !tbaa !5
  %137 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %136, i32 0, i32 37
  store i64 0, ptr %137, align 8, !tbaa !33
  %138 = load ptr, ptr %43, align 8, !tbaa !5
  %139 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %138, i32 0, i32 38
  store i64 0, ptr %139, align 8, !tbaa !34
  %140 = load ptr, ptr %43, align 8, !tbaa !5
  %141 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %140, i32 0, i32 43
  store i64 0, ptr %141, align 8, !tbaa !35
  %142 = load ptr, ptr %43, align 8, !tbaa !5
  %143 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %142, i32 0, i32 39
  store i64 0, ptr %143, align 8, !tbaa !36
  %144 = load ptr, ptr %43, align 8, !tbaa !5
  %145 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %144, i32 0, i32 40
  store i64 0, ptr %145, align 8, !tbaa !37
  %146 = load ptr, ptr %43, align 8, !tbaa !5
  %147 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %146, i32 0, i32 41
  store i64 0, ptr %147, align 8, !tbaa !38
  %148 = load ptr, ptr %43, align 8, !tbaa !5
  %149 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %148, i32 0, i32 42
  store i64 0, ptr %149, align 8, !tbaa !39
  %150 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 0, ptr %150, align 8, !tbaa !9
  %151 = load ptr, ptr %43, align 8, !tbaa !5
  %152 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %151, i32 0, i32 9
  %153 = load i64, ptr %60, align 8, !tbaa !9
  %154 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %152, i64 noundef %153, ptr noundef %154)
  %155 = load ptr, ptr %43, align 8, !tbaa !5
  %156 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %155, i32 0, i32 0
  %157 = load i64, ptr %60, align 8, !tbaa !9
  %158 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %156, i64 noundef %157, ptr noundef %158)
  %159 = load ptr, ptr %43, align 8, !tbaa !5
  %160 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %159, i32 0, i32 20
  %161 = load i64, ptr %60, align 8, !tbaa !9
  %162 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %160, i64 noundef %161, ptr noundef %162)
  %163 = load ptr, ptr %43, align 8, !tbaa !5
  %164 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %163, i32 0, i32 12
  %165 = load i64, ptr %59, align 8, !tbaa !9
  %166 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %164, i64 noundef %165, ptr noundef %166)
  %167 = load ptr, ptr %43, align 8, !tbaa !5
  %168 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %167, i32 0, i32 13
  %169 = load i64, ptr %59, align 8, !tbaa !9
  %170 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %168, i64 noundef %169, ptr noundef %170)
  %171 = load ptr, ptr %43, align 8, !tbaa !5
  %172 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %171, i32 0, i32 17
  %173 = load i64, ptr %59, align 8, !tbaa !9
  %174 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %172, i64 noundef %173, ptr noundef %174)
  %175 = load ptr, ptr %43, align 8, !tbaa !5
  %176 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %175, i32 0, i32 14
  %177 = load i64, ptr %59, align 8, !tbaa !9
  %178 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %176, i64 noundef %177, ptr noundef %178)
  %179 = load ptr, ptr %43, align 8, !tbaa !5
  %180 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %179, i32 0, i32 15
  %181 = load i64, ptr %59, align 8, !tbaa !9
  %182 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %180, i64 noundef %181, ptr noundef %182)
  %183 = load ptr, ptr %43, align 8, !tbaa !5
  %184 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %183, i32 0, i32 16
  %185 = load i64, ptr %59, align 8, !tbaa !9
  %186 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %184, i64 noundef %185, ptr noundef %186)
  %187 = load ptr, ptr %43, align 8, !tbaa !5
  %188 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %187, i32 0, i32 22
  %189 = load i64, ptr %59, align 8, !tbaa !9
  %190 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %188, i64 noundef %189, ptr noundef %190)
  %191 = load ptr, ptr %43, align 8, !tbaa !5
  %192 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %191, i32 0, i32 34
  %193 = load i64, ptr %68, align 8, !tbaa !9
  %194 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %192, i64 noundef %193, ptr noundef %194)
  %195 = load ptr, ptr %43, align 8, !tbaa !5
  %196 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %195, i32 0, i32 35
  %197 = load i64, ptr %68, align 8, !tbaa !9
  %198 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %196, i64 noundef %197, ptr noundef %198)
  %199 = load ptr, ptr %45, align 8, !tbaa !5
  %200 = load i64, ptr %57, align 8, !tbaa !9
  %201 = load ptr, ptr %48, 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 %46, align 8, !tbaa !5
  %203 = load i64, ptr %60, align 8, !tbaa !9
  %204 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %202, i64 noundef %203, ptr noundef %204)
  store i64 0, ptr %49, align 8, !tbaa !9
  br label %205

205:                                              ; preds = %216, %133
  %206 = load i64, ptr %49, align 8, !tbaa !9
  %207 = load i64, ptr %57, align 8, !tbaa !9
  %208 = sub nsw i64 %207, 1
  %209 = icmp sle i64 %206, %208
  br i1 %209, label %210, label %219

210:                                              ; preds = %205
  %211 = load ptr, ptr %45, align 8, !tbaa !5
  %212 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %211, i32 0, i32 4
  %213 = load ptr, ptr %212, align 8, !tbaa !40
  %214 = load i64, ptr %49, align 8, !tbaa !9
  %215 = getelementptr inbounds double, ptr %213, i64 %214
  store double 0.000000e+00, ptr %215, align 8, !tbaa !16
  br label %216

216:                                              ; preds = %210
  %217 = load i64, ptr %49, align 8, !tbaa !9
  %218 = add nsw i64 %217, 1
  store i64 %218, ptr %49, align 8, !tbaa !9
  br label %205, !llvm.loop !41

219:                                              ; preds = %205
  store i64 0, ptr %49, align 8, !tbaa !9
  br label %220

220:                                              ; preds = %231, %219
  %221 = load i64, ptr %49, align 8, !tbaa !9
  %222 = load i64, ptr %60, align 8, !tbaa !9
  %223 = sub nsw i64 %222, 1
  %224 = icmp sle i64 %221, %223
  br i1 %224, label %225, label %234

225:                                              ; preds = %220
  %226 = load ptr, ptr %46, align 8, !tbaa !5
  %227 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %226, i32 0, i32 4
  %228 = load ptr, ptr %227, align 8, !tbaa !40
  %229 = load i64, ptr %49, align 8, !tbaa !9
  %230 = getelementptr inbounds double, ptr %228, i64 %229
  store double 0.000000e+00, ptr %230, align 8, !tbaa !16
  br label %231

231:                                              ; preds = %225
  %232 = load i64, ptr %49, align 8, !tbaa !9
  %233 = add nsw i64 %232, 1
  store i64 %233, ptr %49, align 8, !tbaa !9
  br label %220, !llvm.loop !43

234:                                              ; preds = %220
  %235 = load ptr, ptr %25, align 8, !tbaa !5
  %236 = load ptr, ptr %26, align 8, !tbaa !5
  %237 = load i64, ptr %27, align 8, !tbaa !9
  %238 = load i8, ptr %28, align 1, !tbaa !11, !range !44, !noundef !45
  %239 = trunc i8 %238 to i1
  %240 = load ptr, ptr %29, align 8, !tbaa !5
  %241 = load ptr, ptr %30, align 8, !tbaa !5
  %242 = load ptr, ptr %31, align 8, !tbaa !5
  %243 = load ptr, ptr %32, align 8, !tbaa !5
  %244 = load ptr, ptr %33, align 8, !tbaa !5
  %245 = load i64, ptr %57, align 8, !tbaa !9
  %246 = load ptr, ptr %35, align 8, !tbaa !5
  %247 = load i64, ptr %36, align 8, !tbaa !9
  %248 = load i64, ptr %37, align 8, !tbaa !9
  %249 = load ptr, ptr %38, align 8, !tbaa !5
  %250 = load i64, ptr %39, align 8, !tbaa !9
  %251 = load i64, ptr %40, align 8, !tbaa !9
  %252 = load i8, ptr %41, align 1, !tbaa !11, !range !44, !noundef !45
  %253 = trunc i8 %252 to i1
  %254 = load ptr, ptr %43, align 8, !tbaa !5
  %255 = load ptr, ptr %44, align 8, !tbaa !5
  %256 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_implL42qpdenseaulsolver_scaleshiftoriginalproblemEPKNS_20convexquadraticmodelEPKNS_12sparsematrixElbPKNS_9ae_vectorES8_S8_S8_S8_lPKNS_9ae_matrixEllS5_llbPNS_17qpdenseaulbuffersEPS6_PNS_8ae_stateE(ptr noundef %235, ptr noundef %236, i64 noundef %237, i1 noundef zeroext %239, ptr noundef %240, ptr noundef %241, ptr noundef %242, ptr noundef %243, ptr noundef %244, i64 noundef %245, ptr noundef %246, i64 noundef %247, i64 noundef %248, ptr noundef %249, i64 noundef %250, i64 noundef %251, i1 noundef zeroext %253, ptr noundef %254, ptr noundef %255, ptr noundef %256)
  %257 = load ptr, ptr %43, align 8, !tbaa !5
  %258 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %257, i32 0, i32 1
  %259 = load ptr, ptr %43, align 8, !tbaa !5
  %260 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %259, i32 0, i32 2
  %261 = load i64, ptr %57, align 8, !tbaa !9
  %262 = load ptr, ptr %43, align 8, !tbaa !5
  %263 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %262, i32 0, i32 8
  %264 = load i64, ptr %67, align 8, !tbaa !9
  %265 = load i64, ptr %68, align 8, !tbaa !9
  %266 = load i8, ptr %41, align 1, !tbaa !11, !range !44, !noundef !45
  %267 = trunc i8 %266 to i1
  %268 = load ptr, ptr %43, align 8, !tbaa !5
  %269 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %268, i32 0, i32 23
  %270 = load ptr, ptr %48, align 8, !tbaa !5
  %271 = call noundef double @_ZN11alglib_implL39qpdenseaulsolver_normalizequadratictermEPNS_9ae_matrixEPNS_9ae_vectorElPKS0_llbS1_PNS_8ae_stateE(ptr noundef %258, ptr noundef %260, i64 noundef %261, ptr noundef %263, i64 noundef %264, i64 noundef %265, i1 noundef zeroext %267, ptr noundef %269, ptr noundef %270)
  store double %271, ptr %74, align 8, !tbaa !16
  %272 = load ptr, ptr %43, align 8, !tbaa !5
  %273 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %272, i32 0, i32 1
  %274 = load i64, ptr %57, align 8, !tbaa !9
  %275 = load ptr, ptr %43, align 8, !tbaa !5
  %276 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %275, i32 0, i32 8
  %277 = load i64, ptr %67, align 8, !tbaa !9
  %278 = load i64, ptr %68, align 8, !tbaa !9
  %279 = load ptr, ptr %43, align 8, !tbaa !5
  %280 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %279, i32 0, i32 22
  %281 = load ptr, ptr %43, align 8, !tbaa !5
  %282 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %281, i32 0, i32 23
  %283 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_implL40qpdenseaulsolver_selectinitialworkingsetEPKNS_9ae_matrixElS2_llPNS_9ae_vectorEPS0_PlPbPNS_8ae_stateE(ptr noundef %273, i64 noundef %274, ptr noundef %276, i64 noundef %277, i64 noundef %278, ptr noundef %280, ptr noundef %282, ptr noundef %69, ptr noundef %72, ptr noundef %283)
  %284 = load i64, ptr %67, align 8, !tbaa !9
  %285 = load i64, ptr %69, align 8, !tbaa !9
  %286 = add nsw i64 %284, %285
  store i64 %286, ptr %70, align 8, !tbaa !9
  %287 = load i64, ptr %57, align 8, !tbaa !9
  %288 = load i64, ptr %69, align 8, !tbaa !9
  %289 = add nsw i64 %287, %288
  store i64 %289, ptr %71, align 8, !tbaa !9
  %290 = load i64, ptr %69, align 8, !tbaa !9
  %291 = load ptr, ptr %43, align 8, !tbaa !5
  %292 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %291, i32 0, i32 40
  store i64 %290, ptr %292, align 8, !tbaa !37
  store i64 0, ptr %49, align 8, !tbaa !9
  br label %293

293:                                              ; preds = %305, %234
  %294 = load i64, ptr %49, align 8, !tbaa !9
  %295 = load i64, ptr %69, align 8, !tbaa !9
  %296 = sub nsw i64 %295, 1
  %297 = icmp sle i64 %294, %296
  br i1 %297, label %298, label %308

298:                                              ; preds = %293
  %299 = load ptr, ptr %43, align 8, !tbaa !5
  %300 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %299, i32 0, i32 35
  %301 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %300, i32 0, i32 4
  %302 = load ptr, ptr %301, align 8, !tbaa !40
  %303 = load i64, ptr %49, align 8, !tbaa !9
  %304 = getelementptr inbounds i64, ptr %302, i64 %303
  store i64 1, ptr %304, align 8, !tbaa !9
  br label %305

305:                                              ; preds = %298
  %306 = load i64, ptr %49, align 8, !tbaa !9
  %307 = add nsw i64 %306, 1
  store i64 %307, ptr %49, align 8, !tbaa !9
  br label %293, !llvm.loop !46

308:                                              ; preds = %293
  %309 = load i64, ptr %69, align 8, !tbaa !9
  store i64 %309, ptr %49, align 8, !tbaa !9
  br label %310

310:                                              ; preds = %322, %308
  %311 = load i64, ptr %49, align 8, !tbaa !9
  %312 = load i64, ptr %68, align 8, !tbaa !9
  %313 = sub nsw i64 %312, 1
  %314 = icmp sle i64 %311, %313
  br i1 %314, label %315, label %325

315:                                              ; preds = %310
  %316 = load ptr, ptr %43, align 8, !tbaa !5
  %317 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %316, i32 0, i32 35
  %318 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %317, i32 0, i32 4
  %319 = load ptr, ptr %318, align 8, !tbaa !40
  %320 = load i64, ptr %49, align 8, !tbaa !9
  %321 = getelementptr inbounds i64, ptr %319, i64 %320
  store i64 0, ptr %321, align 8, !tbaa !9
  br label %322

322:                                              ; preds = %315
  %323 = load i64, ptr %49, align 8, !tbaa !9
  %324 = add nsw i64 %323, 1
  store i64 %324, ptr %49, align 8, !tbaa !9
  br label %310, !llvm.loop !47

325:                                              ; preds = %310
  store i64 0, ptr %49, align 8, !tbaa !9
  br label %326

326:                                              ; preds = %339, %325
  %327 = load i64, ptr %49, align 8, !tbaa !9
  %328 = load i64, ptr %60, align 8, !tbaa !9
  %329 = sub nsw i64 %328, 1
  %330 = icmp sle i64 %327, %329
  br i1 %330, label %331, label %342

331:                                              ; preds = %326
  %332 = load i64, ptr %49, align 8, !tbaa !9
  %333 = load ptr, ptr %43, align 8, !tbaa !5
  %334 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %333, i32 0, i32 9
  %335 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %334, i32 0, i32 4
  %336 = load ptr, ptr %335, align 8, !tbaa !40
  %337 = load i64, ptr %49, align 8, !tbaa !9
  %338 = getelementptr inbounds i64, ptr %336, i64 %337
  store i64 %332, ptr %338, align 8, !tbaa !9
  br label %339

339:                                              ; preds = %331
  %340 = load i64, ptr %49, align 8, !tbaa !9
  %341 = add nsw i64 %340, 1
  store i64 %341, ptr %49, align 8, !tbaa !9
  br label %326, !llvm.loop !48

342:                                              ; preds = %326
  store i64 0, ptr %49, align 8, !tbaa !9
  br label %343

343:                                              ; preds = %355, %342
  %344 = load i64, ptr %49, align 8, !tbaa !9
  %345 = load i64, ptr %60, align 8, !tbaa !9
  %346 = sub nsw i64 %345, 1
  %347 = icmp sle i64 %344, %346
  br i1 %347, label %348, label %358

348:                                              ; preds = %343
  %349 = load ptr, ptr %43, align 8, !tbaa !5
  %350 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %349, i32 0, i32 0
  %351 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %350, i32 0, i32 4
  %352 = load ptr, ptr %351, align 8, !tbaa !40
  %353 = load i64, ptr %49, align 8, !tbaa !9
  %354 = getelementptr inbounds double, ptr %352, i64 %353
  store double 0.000000e+00, ptr %354, align 8, !tbaa !16
  br label %355

355:                                              ; preds = %348
  %356 = load i64, ptr %49, align 8, !tbaa !9
  %357 = add nsw i64 %356, 1
  store i64 %357, ptr %49, align 8, !tbaa !9
  br label %343, !llvm.loop !49

358:                                              ; preds = %343
  store i64 0, ptr %49, align 8, !tbaa !9
  br label %359

359:                                              ; preds = %377, %358
  %360 = load i64, ptr %49, align 8, !tbaa !9
  %361 = load i64, ptr %59, align 8, !tbaa !9
  %362 = sub nsw i64 %361, 1
  %363 = icmp sle i64 %360, %362
  br i1 %363, label %364, label %380

364:                                              ; preds = %359
  %365 = load ptr, ptr %43, align 8, !tbaa !5
  %366 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %365, i32 0, i32 16
  %367 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %366, i32 0, i32 4
  %368 = load ptr, ptr %367, align 8, !tbaa !40
  %369 = load i64, ptr %49, align 8, !tbaa !9
  %370 = getelementptr inbounds double, ptr %368, i64 %369
  store double 1.000000e+00, ptr %370, align 8, !tbaa !16
  %371 = load ptr, ptr %43, align 8, !tbaa !5
  %372 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %371, i32 0, i32 17
  %373 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %372, i32 0, i32 4
  %374 = load ptr, ptr %373, align 8, !tbaa !40
  %375 = load i64, ptr %49, align 8, !tbaa !9
  %376 = getelementptr inbounds double, ptr %374, i64 %375
  store double 0.000000e+00, ptr %376, align 8, !tbaa !16
  br label %377

377:                                              ; preds = %364
  %378 = load i64, ptr %49, align 8, !tbaa !9
  %379 = add nsw i64 %378, 1
  store i64 %379, ptr %49, align 8, !tbaa !9
  br label %359, !llvm.loop !50

380:                                              ; preds = %359
  %381 = load ptr, ptr %43, align 8, !tbaa !5
  %382 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %381, i32 0, i32 7
  %383 = load i64, ptr %57, align 8, !tbaa !9
  %384 = load i64, ptr %58, align 8, !tbaa !9
  %385 = load ptr, ptr %43, align 8, !tbaa !5
  %386 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %385, i32 0, i32 13
  %387 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_implL39qpdenseaulsolver_generateexinitialpointEPKNS_9ae_vectorEllPS0_PNS_8ae_stateE(ptr noundef %382, i64 noundef %383, i64 noundef %384, ptr noundef %386, ptr noundef %387)
  store i64 0, ptr %65, align 8, !tbaa !9
  store i64 0, ptr %66, align 8, !tbaa !9
  store double 1.000000e+300, ptr %62, align 8, !tbaa !16
  store i64 0, ptr %56, align 8, !tbaa !9
  br label %388

388:                                              ; preds = %1001, %380
  %389 = load i64, ptr %56, align 8, !tbaa !9
  %390 = load ptr, ptr %42, align 8, !tbaa !5
  %391 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulsettings", ptr %390, i32 0, i32 1
  %392 = load i64, ptr %391, align 8, !tbaa !51
  %393 = sub nsw i64 %392, 1
  %394 = icmp sle i64 %389, %393
  br i1 %394, label %395, label %1004

395:                                              ; preds = %388
  br label %396

396:                                              ; preds = %809, %395
  %397 = load ptr, ptr %43, align 8, !tbaa !5
  %398 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %397, i32 0, i32 11
  %399 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %398, i32 0, i32 0
  %400 = load i64, ptr %399, align 8, !tbaa !52
  %401 = load i64, ptr %71, align 8, !tbaa !9
  %402 = icmp slt i64 %400, %401
  br i1 %402, label %410, label %403

403:                                              ; preds = %396
  %404 = load ptr, ptr %43, align 8, !tbaa !5
  %405 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %404, i32 0, i32 11
  %406 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %405, i32 0, i32 1
  %407 = load i64, ptr %406, align 8, !tbaa !53
  %408 = load i64, ptr %71, align 8, !tbaa !9
  %409 = icmp slt i64 %407, %408
  br i1 %409, label %410, label %421

410:                                              ; preds = %403, %396
  %411 = load i64, ptr %71, align 8, !tbaa !9
  %412 = load i64, ptr %71, align 8, !tbaa !9
  %413 = sdiv i64 %412, 3
  %414 = add nsw i64 %411, %413
  %415 = add nsw i64 %414, 1
  store i64 %415, ptr %49, align 8, !tbaa !9
  %416 = load ptr, ptr %43, align 8, !tbaa !5
  %417 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %416, i32 0, i32 11
  %418 = load i64, ptr %49, align 8, !tbaa !9
  %419 = load i64, ptr %49, align 8, !tbaa !9
  %420 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %417, i64 noundef %418, i64 noundef %419, ptr noundef %420)
  br label %421

421:                                              ; preds = %410, %403
  %422 = load ptr, ptr %43, align 8, !tbaa !5
  %423 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %422, i32 0, i32 19
  %424 = load i64, ptr %71, align 8, !tbaa !9
  %425 = load i64, ptr %49, align 8, !tbaa !9
  %426 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl23qqppreallocategrowdenseEPNS_10qqpbuffersEllPNS_8ae_stateE(ptr noundef %423, i64 noundef %424, i64 noundef %425, ptr noundef %426)
  %427 = load ptr, ptr %43, align 8, !tbaa !5
  %428 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %427, i32 0, i32 1
  %429 = load ptr, ptr %43, align 8, !tbaa !5
  %430 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %429, i32 0, i32 2
  %431 = load i64, ptr %57, align 8, !tbaa !9
  %432 = load ptr, ptr %43, align 8, !tbaa !5
  %433 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %432, i32 0, i32 5
  %434 = load ptr, ptr %43, align 8, !tbaa !5
  %435 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %434, i32 0, i32 3
  %436 = load ptr, ptr %43, align 8, !tbaa !5
  %437 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %436, i32 0, i32 6
  %438 = load ptr, ptr %43, align 8, !tbaa !5
  %439 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %438, i32 0, i32 4
  %440 = load ptr, ptr %43, align 8, !tbaa !5
  %441 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %440, i32 0, i32 8
  %442 = load i64, ptr %67, align 8, !tbaa !9
  %443 = load i64, ptr %69, align 8, !tbaa !9
  %444 = load ptr, ptr %43, align 8, !tbaa !5
  %445 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %444, i32 0, i32 0
  %446 = load double, ptr %54, align 8, !tbaa !16
  %447 = load ptr, ptr %43, align 8, !tbaa !5
  %448 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %447, i32 0, i32 11
  %449 = load ptr, ptr %43, align 8, !tbaa !5
  %450 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %449, i32 0, i32 12
  %451 = load ptr, ptr %43, align 8, !tbaa !5
  %452 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %451, i32 0, i32 14
  %453 = load ptr, ptr %43, align 8, !tbaa !5
  %454 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %453, i32 0, i32 15
  %455 = load ptr, ptr %43, align 8, !tbaa !5
  %456 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %455, i32 0, i32 23
  %457 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_implL32qpdenseaulsolver_generateexmodelEPKNS_9ae_matrixEPKNS_9ae_vectorElS5_S5_S5_S5_S2_llS5_dPS0_PS3_S7_S7_S6_PNS_8ae_stateE(ptr noundef %428, ptr noundef %430, i64 noundef %431, ptr noundef %433, ptr noundef %435, ptr noundef %437, ptr noundef %439, ptr noundef %441, i64 noundef %442, i64 noundef %443, ptr noundef %445, double noundef %446, ptr noundef %448, ptr noundef %450, ptr noundef %452, ptr noundef %454, ptr noundef %456, ptr noundef %457)
  %458 = load i64, ptr %71, align 8, !tbaa !9
  %459 = load ptr, ptr %43, align 8, !tbaa !5
  %460 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %459, i32 0, i32 18
  %461 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl15qqploaddefaultsElPNS_11qqpsettingsEPNS_8ae_stateE(i64 noundef %458, ptr noundef %460, ptr noundef %461)
  %462 = load ptr, ptr %43, align 8, !tbaa !5
  %463 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %462, i32 0, i32 18
  %464 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %463, i32 0, i32 3
  store i64 50, ptr %464, align 8, !tbaa !54
  %465 = load ptr, ptr %43, align 8, !tbaa !5
  %466 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %465, i32 0, i32 18
  %467 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %466, i32 0, i32 0
  store double 0.000000e+00, ptr %467, align 8, !tbaa !55
  %468 = load ptr, ptr %43, align 8, !tbaa !5
  %469 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %468, i32 0, i32 18
  %470 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %469, i32 0, i32 1
  store double 0.000000e+00, ptr %470, align 8, !tbaa !56
  %471 = load double, ptr %55, align 8, !tbaa !16
  %472 = fmul double 1.000000e-02, %471
  %473 = load ptr, ptr %43, align 8, !tbaa !5
  %474 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %473, i32 0, i32 18
  %475 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %474, i32 0, i32 2
  store double %472, ptr %475, align 8, !tbaa !57
  %476 = load ptr, ptr %43, align 8, !tbaa !5
  %477 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %476, i32 0, i32 18
  %478 = getelementptr inbounds %"struct.alglib_impl::qqpsettings", ptr %477, i32 0, i32 5
  store i8 1, ptr %478, align 1, !tbaa !58
  %479 = load ptr, ptr %43, align 8, !tbaa !5
  %480 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %479, i32 0, i32 27
  %481 = load ptr, ptr %43, align 8, !tbaa !5
  %482 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %481, i32 0, i32 28
  %483 = load ptr, ptr %43, align 8, !tbaa !5
  %484 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %483, i32 0, i32 11
  %485 = load ptr, ptr %43, align 8, !tbaa !5
  %486 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %485, i32 0, i32 12
  %487 = load ptr, ptr %43, align 8, !tbaa !5
  %488 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %487, i32 0, i32 14
  %489 = load ptr, ptr %43, align 8, !tbaa !5
  %490 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %489, i32 0, i32 15
  %491 = load ptr, ptr %43, align 8, !tbaa !5
  %492 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %491, i32 0, i32 16
  %493 = load ptr, ptr %43, align 8, !tbaa !5
  %494 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %493, i32 0, i32 17
  %495 = load i64, ptr %71, align 8, !tbaa !9
  %496 = load ptr, ptr %43, align 8, !tbaa !5
  %497 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %496, i32 0, i32 18
  %498 = load ptr, ptr %43, align 8, !tbaa !5
  %499 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %498, i32 0, i32 19
  %500 = load ptr, ptr %43, align 8, !tbaa !5
  %501 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %500, i32 0, i32 13
  %502 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl11qqpoptimizeEPKNS_20convexquadraticmodelEPKNS_12sparsematrixEPKNS_9ae_matrixElbPKNS_9ae_vectorESB_SB_SB_SB_lPKNS_11qqpsettingsEPNS_10qqpbuffersEPS9_PlPNS_8ae_stateE(ptr noundef %480, ptr noundef %482, ptr noundef %484, i64 noundef 2, i1 noundef zeroext true, ptr noundef %486, ptr noundef %488, ptr noundef %490, ptr noundef %492, ptr noundef %494, i64 noundef %495, ptr noundef %497, ptr noundef %499, ptr noundef %501, ptr noundef %51, ptr noundef %502)
  %503 = load ptr, ptr %43, align 8, !tbaa !5
  %504 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %503, i32 0, i32 38
  %505 = load i64, ptr %504, align 8, !tbaa !34
  %506 = load ptr, ptr %43, align 8, !tbaa !5
  %507 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %506, i32 0, i32 19
  %508 = getelementptr inbounds %"struct.alglib_impl::qqpbuffers", ptr %507, i32 0, i32 39
  %509 = load i64, ptr %508, align 8, !tbaa !59
  %510 = add nsw i64 %505, %509
  %511 = load ptr, ptr %43, align 8, !tbaa !5
  %512 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %511, i32 0, i32 38
  store i64 %510, ptr %512, align 8, !tbaa !34
  store i64 0, ptr %49, align 8, !tbaa !9
  br label %513

513:                                              ; preds = %559, %421
  %514 = load i64, ptr %49, align 8, !tbaa !9
  %515 = load i64, ptr %68, align 8, !tbaa !9
  %516 = sub nsw i64 %515, 1
  %517 = icmp sle i64 %514, %516
  br i1 %517, label %518, label %562

518:                                              ; preds = %513
  %519 = load ptr, ptr %43, align 8, !tbaa !5
  %520 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %519, i32 0, i32 8
  %521 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %520, i32 0, i32 6
  %522 = load ptr, ptr %521, align 8, !tbaa !40
  %523 = load i64, ptr %67, align 8, !tbaa !9
  %524 = load i64, ptr %49, align 8, !tbaa !9
  %525 = add nsw i64 %523, %524
  %526 = getelementptr inbounds ptr, ptr %522, i64 %525
  %527 = load ptr, ptr %526, align 8, !tbaa !5
  %528 = getelementptr inbounds double, ptr %527, i64 0
  %529 = load ptr, ptr %43, align 8, !tbaa !5
  %530 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %529, i32 0, i32 13
  %531 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %530, i32 0, i32 4
  %532 = load ptr, ptr %531, align 8, !tbaa !40
  %533 = getelementptr inbounds double, ptr %532, i64 0
  %534 = load i64, ptr %57, align 8, !tbaa !9
  %535 = sub nsw i64 %534, 1
  %536 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %535)
  %537 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %528, i64 noundef 1, ptr noundef %533, i64 noundef 1, i64 noundef %536)
  store double %537, ptr %52, align 8, !tbaa !16
  %538 = load double, ptr %52, align 8, !tbaa !16
  %539 = load ptr, ptr %43, align 8, !tbaa !5
  %540 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %539, i32 0, i32 8
  %541 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %540, i32 0, i32 6
  %542 = load ptr, ptr %541, align 8, !tbaa !40
  %543 = load i64, ptr %67, align 8, !tbaa !9
  %544 = load i64, ptr %49, align 8, !tbaa !9
  %545 = add nsw i64 %543, %544
  %546 = getelementptr inbounds ptr, ptr %542, i64 %545
  %547 = load ptr, ptr %546, align 8, !tbaa !5
  %548 = load i64, ptr %57, align 8, !tbaa !9
  %549 = getelementptr inbounds double, ptr %547, i64 %548
  %550 = load double, ptr %549, align 8, !tbaa !16
  %551 = fsub double %538, %550
  store double %551, ptr %52, align 8, !tbaa !16
  %552 = load double, ptr %52, align 8, !tbaa !16
  %553 = load ptr, ptr %43, align 8, !tbaa !5
  %554 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %553, i32 0, i32 34
  %555 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %554, i32 0, i32 4
  %556 = load ptr, ptr %555, align 8, !tbaa !40
  %557 = load i64, ptr %49, align 8, !tbaa !9
  %558 = getelementptr inbounds double, ptr %556, i64 %557
  store double %552, ptr %558, align 8, !tbaa !16
  br label %559

559:                                              ; preds = %518
  %560 = load i64, ptr %49, align 8, !tbaa !9
  %561 = add nsw i64 %560, 1
  store i64 %561, ptr %49, align 8, !tbaa !9
  br label %513, !llvm.loop !60

562:                                              ; preds = %513
  store i8 0, ptr %73, align 1, !tbaa !11
  store i64 0, ptr %49, align 8, !tbaa !9
  br label %563

563:                                              ; preds = %689, %562
  %564 = load i64, ptr %49, align 8, !tbaa !9
  %565 = sitofp i64 %564 to double
  %566 = load double, ptr @_ZN11alglib_implL31qpdenseaulsolver_expansionratioE, align 8, !tbaa !16
  %567 = load i64, ptr %57, align 8, !tbaa !9
  %568 = sitofp i64 %567 to double
  %569 = call double @llvm.fmuladd.f64(double %566, double %568, double 1.000000e+00)
  %570 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %565, double noundef %569)
  br i1 %570, label %571, label %575

571:                                              ; preds = %563
  %572 = load i64, ptr %69, align 8, !tbaa !9
  %573 = load i64, ptr %68, align 8, !tbaa !9
  %574 = icmp slt i64 %572, %573
  br label %575

575:                                              ; preds = %571, %563
  %576 = phi i1 [ false, %563 ], [ %574, %571 ]
  br i1 %576, label %577, label %690

577:                                              ; preds = %575
  %578 = load i64, ptr %69, align 8, !tbaa !9
  store i64 %578, ptr %51, align 8, !tbaa !9
  %579 = load i64, ptr %69, align 8, !tbaa !9
  store i64 %579, ptr %50, align 8, !tbaa !9
  br label %580

580:                                              ; preds = %604, %577
  %581 = load i64, ptr %50, align 8, !tbaa !9
  %582 = load i64, ptr %68, align 8, !tbaa !9
  %583 = sub nsw i64 %582, 1
  %584 = icmp sle i64 %581, %583
  br i1 %584, label %585, label %607

585:                                              ; preds = %580
  %586 = load ptr, ptr %43, align 8, !tbaa !5
  %587 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %586, i32 0, i32 34
  %588 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %587, i32 0, i32 4
  %589 = load ptr, ptr %588, align 8, !tbaa !40
  %590 = load i64, ptr %50, align 8, !tbaa !9
  %591 = getelementptr inbounds double, ptr %589, i64 %590
  %592 = load double, ptr %591, align 8, !tbaa !16
  %593 = load ptr, ptr %43, align 8, !tbaa !5
  %594 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %593, i32 0, i32 34
  %595 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %594, i32 0, i32 4
  %596 = load ptr, ptr %595, align 8, !tbaa !40
  %597 = load i64, ptr %51, align 8, !tbaa !9
  %598 = getelementptr inbounds double, ptr %596, i64 %597
  %599 = load double, ptr %598, align 8, !tbaa !16
  %600 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %592, double noundef %599)
  br i1 %600, label %601, label %603

601:                                              ; preds = %585
  %602 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %602, ptr %51, align 8, !tbaa !9
  br label %603

603:                                              ; preds = %601, %585
  br label %604

604:                                              ; preds = %603
  %605 = load i64, ptr %50, align 8, !tbaa !9
  %606 = add nsw i64 %605, 1
  store i64 %606, ptr %50, align 8, !tbaa !9
  br label %580, !llvm.loop !61

607:                                              ; preds = %580
  %608 = load ptr, ptr %43, align 8, !tbaa !5
  %609 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %608, i32 0, i32 34
  %610 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %609, i32 0, i32 4
  %611 = load ptr, ptr %610, align 8, !tbaa !40
  %612 = load i64, ptr %51, align 8, !tbaa !9
  %613 = getelementptr inbounds double, ptr %611, i64 %612
  %614 = load double, ptr %613, align 8, !tbaa !16
  %615 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %614, double noundef 0.000000e+00)
  br i1 %615, label %616, label %688

616:                                              ; preds = %607
  %617 = load ptr, ptr %43, align 8, !tbaa !5
  %618 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %617, i32 0, i32 8
  %619 = load i64, ptr %67, align 8, !tbaa !9
  %620 = load i64, ptr %69, align 8, !tbaa !9
  %621 = add nsw i64 %619, %620
  %622 = load i64, ptr %67, align 8, !tbaa !9
  %623 = load i64, ptr %51, align 8, !tbaa !9
  %624 = add nsw i64 %622, %623
  %625 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl8swaprowsEPNS_9ae_matrixElllPNS_8ae_stateE(ptr noundef %618, i64 noundef %621, i64 noundef %624, i64 noundef -1, ptr noundef %625)
  %626 = load ptr, ptr %43, align 8, !tbaa !5
  %627 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %626, i32 0, i32 34
  %628 = load i64, ptr %69, align 8, !tbaa !9
  %629 = load i64, ptr %51, align 8, !tbaa !9
  %630 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl12swapelementsEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %627, i64 noundef %628, i64 noundef %629, ptr noundef %630)
  %631 = load ptr, ptr %43, align 8, !tbaa !5
  %632 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %631, i32 0, i32 35
  %633 = load i64, ptr %69, align 8, !tbaa !9
  %634 = load i64, ptr %51, align 8, !tbaa !9
  %635 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl13swapelementsiEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %632, i64 noundef %633, i64 noundef %634, ptr noundef %635)
  %636 = load ptr, ptr %43, align 8, !tbaa !5
  %637 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %636, i32 0, i32 9
  %638 = load i64, ptr %67, align 8, !tbaa !9
  %639 = load i64, ptr %69, align 8, !tbaa !9
  %640 = add nsw i64 %638, %639
  %641 = load i64, ptr %67, align 8, !tbaa !9
  %642 = load i64, ptr %51, align 8, !tbaa !9
  %643 = add nsw i64 %641, %642
  %644 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl13swapelementsiEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %637, i64 noundef %640, i64 noundef %643, ptr noundef %644)
  %645 = load ptr, ptr %43, align 8, !tbaa !5
  %646 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %645, i32 0, i32 10
  %647 = load i64, ptr %67, align 8, !tbaa !9
  %648 = load i64, ptr %69, align 8, !tbaa !9
  %649 = add nsw i64 %647, %648
  %650 = load i64, ptr %67, align 8, !tbaa !9
  %651 = load i64, ptr %51, align 8, !tbaa !9
  %652 = add nsw i64 %650, %651
  %653 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl12swapelementsEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %646, i64 noundef %649, i64 noundef %652, ptr noundef %653)
  %654 = load ptr, ptr %43, align 8, !tbaa !5
  %655 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %654, i32 0, i32 13
  %656 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %655, i32 0, i32 4
  %657 = load ptr, ptr %656, align 8, !tbaa !40
  %658 = load i64, ptr %57, align 8, !tbaa !9
  %659 = load i64, ptr %69, align 8, !tbaa !9
  %660 = add nsw i64 %658, %659
  %661 = getelementptr inbounds double, ptr %657, i64 %660
  store double 0.000000e+00, ptr %661, align 8, !tbaa !16
  %662 = load ptr, ptr %43, align 8, !tbaa !5
  %663 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %662, i32 0, i32 0
  %664 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %663, i32 0, i32 4
  %665 = load ptr, ptr %664, align 8, !tbaa !40
  %666 = load i64, ptr %67, align 8, !tbaa !9
  %667 = load i64, ptr %69, align 8, !tbaa !9
  %668 = add nsw i64 %666, %667
  %669 = getelementptr inbounds double, ptr %665, i64 %668
  store double 0.000000e+00, ptr %669, align 8, !tbaa !16
  %670 = load ptr, ptr %43, align 8, !tbaa !5
  %671 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %670, i32 0, i32 35
  %672 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %671, i32 0, i32 4
  %673 = load ptr, ptr %672, align 8, !tbaa !40
  %674 = load i64, ptr %69, align 8, !tbaa !9
  %675 = getelementptr inbounds i64, ptr %673, i64 %674
  %676 = load i64, ptr %675, align 8, !tbaa !9
  %677 = add nsw i64 %676, 1
  %678 = load ptr, ptr %43, align 8, !tbaa !5
  %679 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %678, i32 0, i32 35
  %680 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %679, i32 0, i32 4
  %681 = load ptr, ptr %680, align 8, !tbaa !40
  %682 = load i64, ptr %69, align 8, !tbaa !9
  %683 = getelementptr inbounds i64, ptr %681, i64 %682
  store i64 %677, ptr %683, align 8, !tbaa !9
  %684 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %69, ptr noundef %684)
  %685 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %71, ptr noundef %685)
  %686 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %70, ptr noundef %686)
  %687 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %49, ptr noundef %687)
  store i8 1, ptr %73, align 1, !tbaa !11
  br label %689

688:                                              ; preds = %607
  br label %690

689:                                              ; preds = %616
  br label %563, !llvm.loop !62

690:                                              ; preds = %688, %575
  %691 = load i8, ptr %72, align 1, !tbaa !11, !range !44, !noundef !45
  %692 = trunc i8 %691 to i1
  br i1 %692, label %693, label %789

693:                                              ; preds = %690
  %694 = load i64, ptr %69, align 8, !tbaa !9
  %695 = sub nsw i64 %694, 1
  store i64 %695, ptr %51, align 8, !tbaa !9
  br label %696

696:                                              ; preds = %785, %693
  %697 = load i64, ptr %51, align 8, !tbaa !9
  %698 = icmp sge i64 %697, 0
  br i1 %698, label %699, label %788

699:                                              ; preds = %696
  %700 = load ptr, ptr %43, align 8, !tbaa !5
  %701 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %700, i32 0, i32 34
  %702 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %701, i32 0, i32 4
  %703 = load ptr, ptr %702, align 8, !tbaa !40
  %704 = load i64, ptr %51, align 8, !tbaa !9
  %705 = getelementptr inbounds double, ptr %703, i64 %704
  %706 = load double, ptr %705, align 8, !tbaa !16
  %707 = load double, ptr @_ZN11alglib_implL30qpdenseaulsolver_evictionlevelE, align 8, !tbaa !16
  %708 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %706, double noundef %707)
  br i1 %708, label %709, label %784

709:                                              ; preds = %699
  %710 = load ptr, ptr %43, align 8, !tbaa !5
  %711 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %710, i32 0, i32 35
  %712 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %711, i32 0, i32 4
  %713 = load ptr, ptr %712, align 8, !tbaa !40
  %714 = load i64, ptr %51, align 8, !tbaa !9
  %715 = getelementptr inbounds i64, ptr %713, i64 %714
  %716 = load i64, ptr %715, align 8, !tbaa !9
  %717 = icmp sle i64 %716, 1
  br i1 %717, label %718, label %784

718:                                              ; preds = %709
  %719 = load ptr, ptr %43, align 8, !tbaa !5
  %720 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %719, i32 0, i32 8
  %721 = load i64, ptr %67, align 8, !tbaa !9
  %722 = load i64, ptr %69, align 8, !tbaa !9
  %723 = add nsw i64 %721, %722
  %724 = sub nsw i64 %723, 1
  %725 = load i64, ptr %67, align 8, !tbaa !9
  %726 = load i64, ptr %51, align 8, !tbaa !9
  %727 = add nsw i64 %725, %726
  %728 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl8swaprowsEPNS_9ae_matrixElllPNS_8ae_stateE(ptr noundef %720, i64 noundef %724, i64 noundef %727, i64 noundef -1, ptr noundef %728)
  %729 = load ptr, ptr %43, align 8, !tbaa !5
  %730 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %729, i32 0, i32 9
  %731 = load i64, ptr %67, align 8, !tbaa !9
  %732 = load i64, ptr %69, align 8, !tbaa !9
  %733 = add nsw i64 %731, %732
  %734 = sub nsw i64 %733, 1
  %735 = load i64, ptr %67, align 8, !tbaa !9
  %736 = load i64, ptr %51, align 8, !tbaa !9
  %737 = add nsw i64 %735, %736
  %738 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl13swapelementsiEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %730, i64 noundef %734, i64 noundef %737, ptr noundef %738)
  %739 = load ptr, ptr %43, align 8, !tbaa !5
  %740 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %739, i32 0, i32 10
  %741 = load i64, ptr %67, align 8, !tbaa !9
  %742 = load i64, ptr %69, align 8, !tbaa !9
  %743 = add nsw i64 %741, %742
  %744 = sub nsw i64 %743, 1
  %745 = load i64, ptr %67, align 8, !tbaa !9
  %746 = load i64, ptr %51, align 8, !tbaa !9
  %747 = add nsw i64 %745, %746
  %748 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl12swapelementsEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %740, i64 noundef %744, i64 noundef %747, ptr noundef %748)
  %749 = load ptr, ptr %43, align 8, !tbaa !5
  %750 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %749, i32 0, i32 34
  %751 = load i64, ptr %69, align 8, !tbaa !9
  %752 = sub nsw i64 %751, 1
  %753 = load i64, ptr %51, align 8, !tbaa !9
  %754 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl12swapelementsEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %750, i64 noundef %752, i64 noundef %753, ptr noundef %754)
  %755 = load ptr, ptr %43, align 8, !tbaa !5
  %756 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %755, i32 0, i32 35
  %757 = load i64, ptr %69, align 8, !tbaa !9
  %758 = sub nsw i64 %757, 1
  %759 = load i64, ptr %51, align 8, !tbaa !9
  %760 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl13swapelementsiEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %756, i64 noundef %758, i64 noundef %759, ptr noundef %760)
  %761 = load ptr, ptr %43, align 8, !tbaa !5
  %762 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %761, i32 0, i32 13
  %763 = load i64, ptr %57, align 8, !tbaa !9
  %764 = load i64, ptr %69, align 8, !tbaa !9
  %765 = add nsw i64 %763, %764
  %766 = sub nsw i64 %765, 1
  %767 = load i64, ptr %57, align 8, !tbaa !9
  %768 = load i64, ptr %51, align 8, !tbaa !9
  %769 = add nsw i64 %767, %768
  %770 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl12swapelementsEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %762, i64 noundef %766, i64 noundef %769, ptr noundef %770)
  %771 = load ptr, ptr %43, align 8, !tbaa !5
  %772 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %771, i32 0, i32 0
  %773 = load i64, ptr %67, align 8, !tbaa !9
  %774 = load i64, ptr %69, align 8, !tbaa !9
  %775 = add nsw i64 %773, %774
  %776 = sub nsw i64 %775, 1
  %777 = load i64, ptr %67, align 8, !tbaa !9
  %778 = load i64, ptr %51, align 8, !tbaa !9
  %779 = add nsw i64 %777, %778
  %780 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl12swapelementsEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %772, i64 noundef %776, i64 noundef %779, ptr noundef %780)
  %781 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl3decEPlPNS_8ae_stateE(ptr noundef %69, ptr noundef %781)
  %782 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl3decEPlPNS_8ae_stateE(ptr noundef %71, ptr noundef %782)
  %783 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl3decEPlPNS_8ae_stateE(ptr noundef %70, ptr noundef %783)
  br label %784

784:                                              ; preds = %718, %709, %699
  br label %785

785:                                              ; preds = %784
  %786 = load i64, ptr %51, align 8, !tbaa !9
  %787 = add nsw i64 %786, -1
  store i64 %787, ptr %51, align 8, !tbaa !9
  br label %696, !llvm.loop !63

788:                                              ; preds = %696
  br label %789

789:                                              ; preds = %788, %690
  %790 = load ptr, ptr %43, align 8, !tbaa !5
  %791 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %790, i32 0, i32 41
  %792 = load i64, ptr %791, align 8, !tbaa !38
  %793 = icmp eq i64 %792, 0
  br i1 %793, label %794, label %798

794:                                              ; preds = %789
  %795 = load i64, ptr %69, align 8, !tbaa !9
  %796 = load ptr, ptr %43, align 8, !tbaa !5
  %797 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %796, i32 0, i32 41
  store i64 %795, ptr %797, align 8, !tbaa !38
  br label %798

798:                                              ; preds = %794, %789
  %799 = load i64, ptr %69, align 8, !tbaa !9
  %800 = load ptr, ptr %43, align 8, !tbaa !5
  %801 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %800, i32 0, i32 42
  store i64 %799, ptr %801, align 8, !tbaa !39
  %802 = load i8, ptr %73, align 1, !tbaa !11, !range !44, !noundef !45
  %803 = trunc i8 %802 to i1
  br i1 %803, label %804, label %808

804:                                              ; preds = %798
  %805 = load ptr, ptr %43, align 8, !tbaa !5
  %806 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %805, i32 0, i32 39
  %807 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %806, ptr noundef %807)
  br label %808

808:                                              ; preds = %804, %798
  br label %809

809:                                              ; preds = %808
  %810 = load i8, ptr %73, align 1, !tbaa !11, !range !44, !noundef !45
  %811 = trunc i8 %810 to i1
  br i1 %811, label %396, label %812, !llvm.loop !64

812:                                              ; preds = %809
  %813 = load ptr, ptr %43, align 8, !tbaa !5
  %814 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %813, i32 0, i32 20
  %815 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %814, i32 0, i32 4
  %816 = load ptr, ptr %815, align 8, !tbaa !40
  %817 = getelementptr inbounds double, ptr %816, i64 0
  %818 = load ptr, ptr %43, align 8, !tbaa !5
  %819 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %818, i32 0, i32 0
  %820 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %819, i32 0, i32 4
  %821 = load ptr, ptr %820, align 8, !tbaa !40
  %822 = getelementptr inbounds double, ptr %821, i64 0
  %823 = load i64, ptr %70, align 8, !tbaa !9
  %824 = sub nsw i64 %823, 1
  %825 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %824)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %817, i64 noundef 1, ptr noundef %822, i64 noundef 1, i64 noundef %825)
  %826 = load ptr, ptr %43, align 8, !tbaa !5
  %827 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %826, i32 0, i32 1
  %828 = load ptr, ptr %43, align 8, !tbaa !5
  %829 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %828, i32 0, i32 2
  %830 = load i64, ptr %57, align 8, !tbaa !9
  %831 = load ptr, ptr %43, align 8, !tbaa !5
  %832 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %831, i32 0, i32 5
  %833 = load ptr, ptr %43, align 8, !tbaa !5
  %834 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %833, i32 0, i32 3
  %835 = load ptr, ptr %43, align 8, !tbaa !5
  %836 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %835, i32 0, i32 6
  %837 = load ptr, ptr %43, align 8, !tbaa !5
  %838 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %837, i32 0, i32 4
  %839 = load ptr, ptr %43, align 8, !tbaa !5
  %840 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %839, i32 0, i32 8
  %841 = load i64, ptr %67, align 8, !tbaa !9
  %842 = load i64, ptr %69, align 8, !tbaa !9
  %843 = load ptr, ptr %43, align 8, !tbaa !5
  %844 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %843, i32 0, i32 13
  %845 = load ptr, ptr %43, align 8, !tbaa !5
  %846 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %845, i32 0, i32 20
  %847 = load ptr, ptr %43, align 8, !tbaa !5
  %848 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_implL42qpdenseaulsolver_updatelagrangemultipliersEPKNS_9ae_matrixEPKNS_9ae_vectorElS5_S5_S5_S5_S2_llS5_PS3_PNS_17qpdenseaulbuffersEPNS_8ae_stateE(ptr noundef %827, ptr noundef %829, i64 noundef %830, ptr noundef %832, ptr noundef %834, ptr noundef %836, ptr noundef %838, ptr noundef %840, i64 noundef %841, i64 noundef %842, ptr noundef %844, ptr noundef %846, ptr noundef %847, ptr noundef %848)
  %849 = load double, ptr %62, align 8, !tbaa !16
  store double %849, ptr %63, align 8, !tbaa !16
  store double 0.000000e+00, ptr %62, align 8, !tbaa !16
  store i64 0, ptr %49, align 8, !tbaa !9
  br label %850

850:                                              ; preds = %959, %812
  %851 = load i64, ptr %49, align 8, !tbaa !9
  %852 = load i64, ptr %70, align 8, !tbaa !9
  %853 = sub nsw i64 %852, 1
  %854 = icmp sle i64 %851, %853
  br i1 %854, label %855, label %962

855:                                              ; preds = %850
  store double 0.000000e+00, ptr %52, align 8, !tbaa !16
  store double 0.000000e+00, ptr %53, align 8, !tbaa !16
  store i64 0, ptr %50, align 8, !tbaa !9
  br label %856

856:                                              ; preds = %895, %855
  %857 = load i64, ptr %50, align 8, !tbaa !9
  %858 = load i64, ptr %57, align 8, !tbaa !9
  %859 = sub nsw i64 %858, 1
  %860 = icmp sle i64 %857, %859
  br i1 %860, label %861, label %898

861:                                              ; preds = %856
  %862 = load double, ptr %52, align 8, !tbaa !16
  %863 = load ptr, ptr %43, align 8, !tbaa !5
  %864 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %863, i32 0, i32 8
  %865 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %864, i32 0, i32 6
  %866 = load ptr, ptr %865, align 8, !tbaa !40
  %867 = load i64, ptr %49, align 8, !tbaa !9
  %868 = getelementptr inbounds ptr, ptr %866, i64 %867
  %869 = load ptr, ptr %868, align 8, !tbaa !5
  %870 = load i64, ptr %50, align 8, !tbaa !9
  %871 = getelementptr inbounds double, ptr %869, i64 %870
  %872 = load double, ptr %871, align 8, !tbaa !16
  %873 = load ptr, ptr %43, align 8, !tbaa !5
  %874 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %873, i32 0, i32 13
  %875 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %874, i32 0, i32 4
  %876 = load ptr, ptr %875, align 8, !tbaa !40
  %877 = load i64, ptr %50, align 8, !tbaa !9
  %878 = getelementptr inbounds double, ptr %876, i64 %877
  %879 = load double, ptr %878, align 8, !tbaa !16
  %880 = call double @llvm.fmuladd.f64(double %872, double %879, double %862)
  store double %880, ptr %52, align 8, !tbaa !16
  %881 = load double, ptr %53, align 8, !tbaa !16
  %882 = load ptr, ptr %43, align 8, !tbaa !5
  %883 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %882, i32 0, i32 8
  %884 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %883, i32 0, i32 6
  %885 = load ptr, ptr %884, align 8, !tbaa !40
  %886 = load i64, ptr %49, align 8, !tbaa !9
  %887 = getelementptr inbounds ptr, ptr %885, i64 %886
  %888 = load ptr, ptr %887, align 8, !tbaa !5
  %889 = load i64, ptr %50, align 8, !tbaa !9
  %890 = getelementptr inbounds double, ptr %888, i64 %889
  %891 = load double, ptr %890, align 8, !tbaa !16
  %892 = load ptr, ptr %48, align 8, !tbaa !5
  %893 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %891, ptr noundef %892)
  %894 = fadd double %881, %893
  store double %894, ptr %53, align 8, !tbaa !16
  br label %895

895:                                              ; preds = %861
  %896 = load i64, ptr %50, align 8, !tbaa !9
  %897 = add nsw i64 %896, 1
  store i64 %897, ptr %50, align 8, !tbaa !9
  br label %856, !llvm.loop !65

898:                                              ; preds = %856
  %899 = load i64, ptr %49, align 8, !tbaa !9
  %900 = load i64, ptr %67, align 8, !tbaa !9
  %901 = icmp sge i64 %899, %900
  br i1 %901, label %902, label %920

902:                                              ; preds = %898
  %903 = load double, ptr %52, align 8, !tbaa !16
  %904 = load ptr, ptr %43, align 8, !tbaa !5
  %905 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %904, i32 0, i32 13
  %906 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %905, i32 0, i32 4
  %907 = load ptr, ptr %906, align 8, !tbaa !40
  %908 = load i64, ptr %57, align 8, !tbaa !9
  %909 = load i64, ptr %49, align 8, !tbaa !9
  %910 = load i64, ptr %67, align 8, !tbaa !9
  %911 = sub nsw i64 %909, %910
  %912 = add nsw i64 %908, %911
  %913 = getelementptr inbounds double, ptr %907, i64 %912
  %914 = load double, ptr %913, align 8, !tbaa !16
  %915 = fadd double %903, %914
  store double %915, ptr %52, align 8, !tbaa !16
  %916 = load double, ptr %53, align 8, !tbaa !16
  %917 = load ptr, ptr %48, align 8, !tbaa !5
  %918 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef 1.000000e+00, ptr noundef %917)
  %919 = fadd double %916, %918
  store double %919, ptr %53, align 8, !tbaa !16
  br label %920

920:                                              ; preds = %902, %898
  %921 = load double, ptr %52, align 8, !tbaa !16
  %922 = load ptr, ptr %43, align 8, !tbaa !5
  %923 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %922, i32 0, i32 8
  %924 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %923, i32 0, i32 6
  %925 = load ptr, ptr %924, align 8, !tbaa !40
  %926 = load i64, ptr %49, align 8, !tbaa !9
  %927 = getelementptr inbounds ptr, ptr %925, i64 %926
  %928 = load ptr, ptr %927, align 8, !tbaa !5
  %929 = load i64, ptr %57, align 8, !tbaa !9
  %930 = getelementptr inbounds double, ptr %928, i64 %929
  %931 = load double, ptr %930, align 8, !tbaa !16
  %932 = fsub double %921, %931
  store double %932, ptr %52, align 8, !tbaa !16
  %933 = load double, ptr %53, align 8, !tbaa !16
  %934 = load ptr, ptr %48, align 8, !tbaa !5
  %935 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %933, double noundef 1.000000e+00, ptr noundef %934)
  store double %935, ptr %53, align 8, !tbaa !16
  %936 = load double, ptr %52, align 8, !tbaa !16
  %937 = load double, ptr %53, align 8, !tbaa !16
  %938 = load ptr, ptr %48, align 8, !tbaa !5
  %939 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %937, ptr noundef %938)
  %940 = fdiv double %936, %939
  store double %940, ptr %52, align 8, !tbaa !16
  %941 = load double, ptr %62, align 8, !tbaa !16
  %942 = load double, ptr %52, align 8, !tbaa !16
  %943 = load ptr, ptr %48, align 8, !tbaa !5
  %944 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %942, ptr noundef %943)
  %945 = fadd double %941, %944
  store double %945, ptr %62, align 8, !tbaa !16
  %946 = load ptr, ptr %43, align 8, !tbaa !5
  %947 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %946, i32 0, i32 20
  %948 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %947, i32 0, i32 4
  %949 = load ptr, ptr %948, align 8, !tbaa !40
  %950 = load i64, ptr %49, align 8, !tbaa !9
  %951 = getelementptr inbounds double, ptr %949, i64 %950
  %952 = load double, ptr %951, align 8, !tbaa !16
  %953 = load ptr, ptr %43, align 8, !tbaa !5
  %954 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %953, i32 0, i32 0
  %955 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %954, i32 0, i32 4
  %956 = load ptr, ptr %955, align 8, !tbaa !40
  %957 = load i64, ptr %49, align 8, !tbaa !9
  %958 = getelementptr inbounds double, ptr %956, i64 %957
  store double %952, ptr %958, align 8, !tbaa !16
  br label %959

959:                                              ; preds = %920
  %960 = load i64, ptr %49, align 8, !tbaa !9
  %961 = add nsw i64 %960, 1
  store i64 %961, ptr %49, align 8, !tbaa !9
  br label %850, !llvm.loop !66

962:                                              ; preds = %850
  %963 = load double, ptr %62, align 8, !tbaa !16
  %964 = load ptr, ptr %48, align 8, !tbaa !5
  %965 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %963, ptr noundef %964)
  store double %965, ptr %62, align 8, !tbaa !16
  %966 = load double, ptr %62, align 8, !tbaa !16
  %967 = load double, ptr %55, align 8, !tbaa !16
  %968 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %966, double noundef %967)
  br i1 %968, label %969, label %971

969:                                              ; preds = %962
  %970 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %65, ptr noundef %970)
  br label %972

971:                                              ; preds = %962
  store i64 0, ptr %65, align 8, !tbaa !9
  br label %972

972:                                              ; preds = %971, %969
  %973 = load double, ptr %62, align 8, !tbaa !16
  %974 = load double, ptr %63, align 8, !tbaa !16
  %975 = load double, ptr %64, align 8, !tbaa !16
  %976 = fmul double %974, %975
  %977 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %973, double noundef %976)
  br i1 %977, label %978, label %980

978:                                              ; preds = %972
  %979 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %66, ptr noundef %979)
  br label %981

980:                                              ; preds = %972
  store i64 0, ptr %66, align 8, !tbaa !9
  br label %981

981:                                              ; preds = %980, %978
  %982 = load i64, ptr %65, align 8, !tbaa !9
  %983 = icmp sge i64 %982, 2
  br i1 %983, label %984, label %985

984:                                              ; preds = %981
  br label %1004

985:                                              ; preds = %981
  %986 = load i64, ptr %66, align 8, !tbaa !9
  %987 = icmp sge i64 %986, 2
  br i1 %987, label %988, label %994

988:                                              ; preds = %985
  %989 = load double, ptr %54, align 8, !tbaa !16
  %990 = fmul double %989, 1.000000e+01
  %991 = load double, ptr %61, align 8, !tbaa !16
  %992 = load ptr, ptr %48, align 8, !tbaa !5
  %993 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %990, double noundef %991, ptr noundef %992)
  store double %993, ptr %54, align 8, !tbaa !16
  br label %1000

994:                                              ; preds = %985
  %995 = load double, ptr %54, align 8, !tbaa !16
  %996 = fmul double %995, 1.410000e+00
  %997 = load double, ptr %61, align 8, !tbaa !16
  %998 = load ptr, ptr %48, align 8, !tbaa !5
  %999 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %996, double noundef %997, ptr noundef %998)
  store double %999, ptr %54, align 8, !tbaa !16
  br label %1000

1000:                                             ; preds = %994, %988
  br label %1001

1001:                                             ; preds = %1000
  %1002 = load i64, ptr %56, align 8, !tbaa !9
  %1003 = add nsw i64 %1002, 1
  store i64 %1003, ptr %56, align 8, !tbaa !9
  br label %388, !llvm.loop !67

1004:                                             ; preds = %984, %388
  store i64 0, ptr %49, align 8, !tbaa !9
  br label %1005

1005:                                             ; preds = %1042, %1004
  %1006 = load i64, ptr %49, align 8, !tbaa !9
  %1007 = load i64, ptr %67, align 8, !tbaa !9
  %1008 = load i64, ptr %69, align 8, !tbaa !9
  %1009 = add nsw i64 %1007, %1008
  %1010 = sub nsw i64 %1009, 1
  %1011 = icmp sle i64 %1006, %1010
  br i1 %1011, label %1012, label %1045

1012:                                             ; preds = %1005
  %1013 = load ptr, ptr %43, align 8, !tbaa !5
  %1014 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1013, i32 0, i32 0
  %1015 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1014, i32 0, i32 4
  %1016 = load ptr, ptr %1015, align 8, !tbaa !40
  %1017 = load i64, ptr %49, align 8, !tbaa !9
  %1018 = getelementptr inbounds double, ptr %1016, i64 %1017
  %1019 = load double, ptr %1018, align 8, !tbaa !16
  %1020 = fneg double %1019
  %1021 = load double, ptr %74, align 8, !tbaa !16
  %1022 = fmul double %1020, %1021
  %1023 = load ptr, ptr %43, align 8, !tbaa !5
  %1024 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1023, i32 0, i32 10
  %1025 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1024, i32 0, i32 4
  %1026 = load ptr, ptr %1025, align 8, !tbaa !40
  %1027 = load i64, ptr %49, align 8, !tbaa !9
  %1028 = getelementptr inbounds double, ptr %1026, i64 %1027
  %1029 = load double, ptr %1028, align 8, !tbaa !16
  %1030 = fdiv double %1022, %1029
  %1031 = load ptr, ptr %46, align 8, !tbaa !5
  %1032 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1031, i32 0, i32 4
  %1033 = load ptr, ptr %1032, align 8, !tbaa !40
  %1034 = load ptr, ptr %43, align 8, !tbaa !5
  %1035 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1034, i32 0, i32 9
  %1036 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1035, i32 0, i32 4
  %1037 = load ptr, ptr %1036, align 8, !tbaa !40
  %1038 = load i64, ptr %49, align 8, !tbaa !9
  %1039 = getelementptr inbounds i64, ptr %1037, i64 %1038
  %1040 = load i64, ptr %1039, align 8, !tbaa !9
  %1041 = getelementptr inbounds double, ptr %1033, i64 %1040
  store double %1030, ptr %1041, align 8, !tbaa !16
  br label %1042

1042:                                             ; preds = %1012
  %1043 = load i64, ptr %49, align 8, !tbaa !9
  %1044 = add nsw i64 %1043, 1
  store i64 %1044, ptr %49, align 8, !tbaa !9
  br label %1005, !llvm.loop !68

1045:                                             ; preds = %1005
  %1046 = load ptr, ptr %43, align 8, !tbaa !5
  %1047 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1046, i32 0, i32 21
  %1048 = load i64, ptr %57, align 8, !tbaa !9
  %1049 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %1047, i64 noundef %1048, ptr noundef %1049)
  store i64 0, ptr %49, align 8, !tbaa !9
  br label %1050

1050:                                             ; preds = %1099, %1045
  %1051 = load i64, ptr %49, align 8, !tbaa !9
  %1052 = load i64, ptr %57, align 8, !tbaa !9
  %1053 = sub nsw i64 %1052, 1
  %1054 = icmp sle i64 %1051, %1053
  br i1 %1054, label %1055, label %1102

1055:                                             ; preds = %1050
  %1056 = load ptr, ptr %43, align 8, !tbaa !5
  %1057 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1056, i32 0, i32 2
  %1058 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1057, i32 0, i32 4
  %1059 = load ptr, ptr %1058, align 8, !tbaa !40
  %1060 = load i64, ptr %49, align 8, !tbaa !9
  %1061 = getelementptr inbounds double, ptr %1059, i64 %1060
  %1062 = load double, ptr %1061, align 8, !tbaa !16
  store double %1062, ptr %52, align 8, !tbaa !16
  store i64 0, ptr %50, align 8, !tbaa !9
  br label %1063

1063:                                             ; preds = %1088, %1055
  %1064 = load i64, ptr %50, align 8, !tbaa !9
  %1065 = load i64, ptr %57, align 8, !tbaa !9
  %1066 = sub nsw i64 %1065, 1
  %1067 = icmp sle i64 %1064, %1066
  br i1 %1067, label %1068, label %1091

1068:                                             ; preds = %1063
  %1069 = load double, ptr %52, align 8, !tbaa !16
  %1070 = load ptr, ptr %43, align 8, !tbaa !5
  %1071 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1070, i32 0, i32 1
  %1072 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %1071, i32 0, i32 6
  %1073 = load ptr, ptr %1072, align 8, !tbaa !40
  %1074 = load i64, ptr %49, align 8, !tbaa !9
  %1075 = getelementptr inbounds ptr, ptr %1073, i64 %1074
  %1076 = load ptr, ptr %1075, align 8, !tbaa !5
  %1077 = load i64, ptr %50, align 8, !tbaa !9
  %1078 = getelementptr inbounds double, ptr %1076, i64 %1077
  %1079 = load double, ptr %1078, align 8, !tbaa !16
  %1080 = load ptr, ptr %43, align 8, !tbaa !5
  %1081 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1080, i32 0, i32 13
  %1082 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1081, i32 0, i32 4
  %1083 = load ptr, ptr %1082, align 8, !tbaa !40
  %1084 = load i64, ptr %50, align 8, !tbaa !9
  %1085 = getelementptr inbounds double, ptr %1083, i64 %1084
  %1086 = load double, ptr %1085, align 8, !tbaa !16
  %1087 = call double @llvm.fmuladd.f64(double %1079, double %1086, double %1069)
  store double %1087, ptr %52, align 8, !tbaa !16
  br label %1088

1088:                                             ; preds = %1068
  %1089 = load i64, ptr %50, align 8, !tbaa !9
  %1090 = add nsw i64 %1089, 1
  store i64 %1090, ptr %50, align 8, !tbaa !9
  br label %1063, !llvm.loop !69

1091:                                             ; preds = %1063
  %1092 = load double, ptr %52, align 8, !tbaa !16
  %1093 = load ptr, ptr %43, align 8, !tbaa !5
  %1094 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1093, i32 0, i32 21
  %1095 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1094, i32 0, i32 4
  %1096 = load ptr, ptr %1095, align 8, !tbaa !40
  %1097 = load i64, ptr %49, align 8, !tbaa !9
  %1098 = getelementptr inbounds double, ptr %1096, i64 %1097
  store double %1092, ptr %1098, align 8, !tbaa !16
  br label %1099

1099:                                             ; preds = %1091
  %1100 = load i64, ptr %49, align 8, !tbaa !9
  %1101 = add nsw i64 %1100, 1
  store i64 %1101, ptr %49, align 8, !tbaa !9
  br label %1050, !llvm.loop !70

1102:                                             ; preds = %1050
  %1103 = load i64, ptr %57, align 8, !tbaa !9
  %1104 = load i64, ptr %67, align 8, !tbaa !9
  %1105 = load i64, ptr %69, align 8, !tbaa !9
  %1106 = add nsw i64 %1104, %1105
  %1107 = load ptr, ptr %43, align 8, !tbaa !5
  %1108 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1107, i32 0, i32 8
  %1109 = load ptr, ptr %43, align 8, !tbaa !5
  %1110 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1109, i32 0, i32 0
  %1111 = load ptr, ptr %43, align 8, !tbaa !5
  %1112 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1111, i32 0, i32 21
  %1113 = load ptr, ptr %48, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemvElldPKNS_9ae_matrixElllPKNS_9ae_vectorEldPS3_lPNS_8ae_stateE(i64 noundef %1103, i64 noundef %1106, double noundef -1.000000e+00, ptr noundef %1108, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef %1110, i64 noundef 0, double noundef 1.000000e+00, ptr noundef %1112, i64 noundef 0, ptr noundef %1113)
  store i64 0, ptr %49, align 8, !tbaa !9
  br label %1114

1114:                                             ; preds = %1184, %1102
  %1115 = load i64, ptr %49, align 8, !tbaa !9
  %1116 = load i64, ptr %57, align 8, !tbaa !9
  %1117 = sub nsw i64 %1116, 1
  %1118 = icmp sle i64 %1115, %1117
  br i1 %1118, label %1119, label %1187

1119:                                             ; preds = %1114
  %1120 = load ptr, ptr %43, align 8, !tbaa !5
  %1121 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1120, i32 0, i32 3
  %1122 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1121, i32 0, i32 4
  %1123 = load ptr, ptr %1122, align 8, !tbaa !40
  %1124 = load i64, ptr %49, align 8, !tbaa !9
  %1125 = getelementptr inbounds i8, ptr %1123, i64 %1124
  %1126 = load i8, ptr %1125, align 1, !tbaa !11, !range !44, !noundef !45
  %1127 = trunc i8 %1126 to i1
  br i1 %1127, label %1128, label %1144

1128:                                             ; preds = %1119
  %1129 = load ptr, ptr %43, align 8, !tbaa !5
  %1130 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1129, i32 0, i32 13
  %1131 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1130, i32 0, i32 4
  %1132 = load ptr, ptr %1131, align 8, !tbaa !40
  %1133 = load i64, ptr %49, align 8, !tbaa !9
  %1134 = getelementptr inbounds double, ptr %1132, i64 %1133
  %1135 = load double, ptr %1134, align 8, !tbaa !16
  %1136 = load ptr, ptr %43, align 8, !tbaa !5
  %1137 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1136, i32 0, i32 5
  %1138 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1137, i32 0, i32 4
  %1139 = load ptr, ptr %1138, align 8, !tbaa !40
  %1140 = load i64, ptr %49, align 8, !tbaa !9
  %1141 = getelementptr inbounds double, ptr %1139, i64 %1140
  %1142 = load double, ptr %1141, align 8, !tbaa !16
  %1143 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1135, double noundef %1142)
  br i1 %1143, label %1169, label %1144

1144:                                             ; preds = %1128, %1119
  %1145 = load ptr, ptr %43, align 8, !tbaa !5
  %1146 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1145, i32 0, i32 4
  %1147 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1146, i32 0, i32 4
  %1148 = load ptr, ptr %1147, align 8, !tbaa !40
  %1149 = load i64, ptr %49, align 8, !tbaa !9
  %1150 = getelementptr inbounds i8, ptr %1148, i64 %1149
  %1151 = load i8, ptr %1150, align 1, !tbaa !11, !range !44, !noundef !45
  %1152 = trunc i8 %1151 to i1
  br i1 %1152, label %1153, label %1183

1153:                                             ; preds = %1144
  %1154 = load ptr, ptr %43, align 8, !tbaa !5
  %1155 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1154, i32 0, i32 13
  %1156 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1155, i32 0, i32 4
  %1157 = load ptr, ptr %1156, align 8, !tbaa !40
  %1158 = load i64, ptr %49, align 8, !tbaa !9
  %1159 = getelementptr inbounds double, ptr %1157, i64 %1158
  %1160 = load double, ptr %1159, align 8, !tbaa !16
  %1161 = load ptr, ptr %43, align 8, !tbaa !5
  %1162 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1161, i32 0, i32 6
  %1163 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1162, i32 0, i32 4
  %1164 = load ptr, ptr %1163, align 8, !tbaa !40
  %1165 = load i64, ptr %49, align 8, !tbaa !9
  %1166 = getelementptr inbounds double, ptr %1164, i64 %1165
  %1167 = load double, ptr %1166, align 8, !tbaa !16
  %1168 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1160, double noundef %1167)
  br i1 %1168, label %1169, label %1183

1169:                                             ; preds = %1153, %1128
  %1170 = load ptr, ptr %43, align 8, !tbaa !5
  %1171 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1170, i32 0, i32 21
  %1172 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1171, i32 0, i32 4
  %1173 = load ptr, ptr %1172, align 8, !tbaa !40
  %1174 = load i64, ptr %49, align 8, !tbaa !9
  %1175 = getelementptr inbounds double, ptr %1173, i64 %1174
  %1176 = load double, ptr %1175, align 8, !tbaa !16
  %1177 = fneg double %1176
  %1178 = load ptr, ptr %45, align 8, !tbaa !5
  %1179 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1178, i32 0, i32 4
  %1180 = load ptr, ptr %1179, align 8, !tbaa !40
  %1181 = load i64, ptr %49, align 8, !tbaa !9
  %1182 = getelementptr inbounds double, ptr %1180, i64 %1181
  store double %1177, ptr %1182, align 8, !tbaa !16
  br label %1183

1183:                                             ; preds = %1169, %1153, %1144
  br label %1184

1184:                                             ; preds = %1183
  %1185 = load i64, ptr %49, align 8, !tbaa !9
  %1186 = add nsw i64 %1185, 1
  store i64 %1186, ptr %49, align 8, !tbaa !9
  br label %1114, !llvm.loop !71

1187:                                             ; preds = %1114
  store i64 0, ptr %49, align 8, !tbaa !9
  br label %1188

1188:                                             ; preds = %1214, %1187
  %1189 = load i64, ptr %49, align 8, !tbaa !9
  %1190 = load i64, ptr %57, align 8, !tbaa !9
  %1191 = sub nsw i64 %1190, 1
  %1192 = icmp sle i64 %1189, %1191
  br i1 %1192, label %1193, label %1217

1193:                                             ; preds = %1188
  %1194 = load ptr, ptr %45, align 8, !tbaa !5
  %1195 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1194, i32 0, i32 4
  %1196 = load ptr, ptr %1195, align 8, !tbaa !40
  %1197 = load i64, ptr %49, align 8, !tbaa !9
  %1198 = getelementptr inbounds double, ptr %1196, i64 %1197
  %1199 = load double, ptr %1198, align 8, !tbaa !16
  %1200 = load double, ptr %74, align 8, !tbaa !16
  %1201 = fmul double %1199, %1200
  %1202 = load ptr, ptr %32, align 8, !tbaa !5
  %1203 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1202, i32 0, i32 4
  %1204 = load ptr, ptr %1203, align 8, !tbaa !40
  %1205 = load i64, ptr %49, align 8, !tbaa !9
  %1206 = getelementptr inbounds double, ptr %1204, i64 %1205
  %1207 = load double, ptr %1206, align 8, !tbaa !16
  %1208 = fdiv double %1201, %1207
  %1209 = load ptr, ptr %45, align 8, !tbaa !5
  %1210 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1209, i32 0, i32 4
  %1211 = load ptr, ptr %1210, align 8, !tbaa !40
  %1212 = load i64, ptr %49, align 8, !tbaa !9
  %1213 = getelementptr inbounds double, ptr %1211, i64 %1212
  store double %1208, ptr %1213, align 8, !tbaa !16
  br label %1214

1214:                                             ; preds = %1193
  %1215 = load i64, ptr %49, align 8, !tbaa !9
  %1216 = add nsw i64 %1215, 1
  store i64 %1216, ptr %49, align 8, !tbaa !9
  br label %1188, !llvm.loop !72

1217:                                             ; preds = %1188
  store i64 0, ptr %49, align 8, !tbaa !9
  br label %1218

1218:                                             ; preds = %1377, %1217
  %1219 = load i64, ptr %49, align 8, !tbaa !9
  %1220 = load i64, ptr %57, align 8, !tbaa !9
  %1221 = sub nsw i64 %1220, 1
  %1222 = icmp sle i64 %1219, %1221
  br i1 %1222, label %1223, label %1380

1223:                                             ; preds = %1218
  %1224 = load ptr, ptr %32, align 8, !tbaa !5
  %1225 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1224, i32 0, i32 4
  %1226 = load ptr, ptr %1225, align 8, !tbaa !40
  %1227 = load i64, ptr %49, align 8, !tbaa !9
  %1228 = getelementptr inbounds double, ptr %1226, i64 %1227
  %1229 = load double, ptr %1228, align 8, !tbaa !16
  %1230 = load ptr, ptr %43, align 8, !tbaa !5
  %1231 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1230, i32 0, i32 13
  %1232 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1231, i32 0, i32 4
  %1233 = load ptr, ptr %1232, align 8, !tbaa !40
  %1234 = load i64, ptr %49, align 8, !tbaa !9
  %1235 = getelementptr inbounds double, ptr %1233, i64 %1234
  %1236 = load double, ptr %1235, align 8, !tbaa !16
  %1237 = load ptr, ptr %33, align 8, !tbaa !5
  %1238 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1237, i32 0, i32 4
  %1239 = load ptr, ptr %1238, align 8, !tbaa !40
  %1240 = load i64, ptr %49, align 8, !tbaa !9
  %1241 = getelementptr inbounds double, ptr %1239, i64 %1240
  %1242 = load double, ptr %1241, align 8, !tbaa !16
  %1243 = call double @llvm.fmuladd.f64(double %1229, double %1236, double %1242)
  %1244 = load ptr, ptr %44, align 8, !tbaa !5
  %1245 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1244, i32 0, i32 4
  %1246 = load ptr, ptr %1245, align 8, !tbaa !40
  %1247 = load i64, ptr %49, align 8, !tbaa !9
  %1248 = getelementptr inbounds double, ptr %1246, i64 %1247
  store double %1243, ptr %1248, align 8, !tbaa !16
  %1249 = load ptr, ptr %43, align 8, !tbaa !5
  %1250 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1249, i32 0, i32 3
  %1251 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1250, i32 0, i32 4
  %1252 = load ptr, ptr %1251, align 8, !tbaa !40
  %1253 = load i64, ptr %49, align 8, !tbaa !9
  %1254 = getelementptr inbounds i8, ptr %1252, i64 %1253
  %1255 = load i8, ptr %1254, align 1, !tbaa !11, !range !44, !noundef !45
  %1256 = trunc i8 %1255 to i1
  br i1 %1256, label %1257, label %1312

1257:                                             ; preds = %1223
  %1258 = load ptr, ptr %44, align 8, !tbaa !5
  %1259 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1258, i32 0, i32 4
  %1260 = load ptr, ptr %1259, align 8, !tbaa !40
  %1261 = load i64, ptr %49, align 8, !tbaa !9
  %1262 = getelementptr inbounds double, ptr %1260, i64 %1261
  %1263 = load double, ptr %1262, align 8, !tbaa !16
  %1264 = load ptr, ptr %30, align 8, !tbaa !5
  %1265 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1264, i32 0, i32 4
  %1266 = load ptr, ptr %1265, align 8, !tbaa !40
  %1267 = load i64, ptr %49, align 8, !tbaa !9
  %1268 = getelementptr inbounds double, ptr %1266, i64 %1267
  %1269 = load double, ptr %1268, align 8, !tbaa !16
  %1270 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1263, double noundef %1269)
  br i1 %1270, label %1271, label %1283

1271:                                             ; preds = %1257
  %1272 = load ptr, ptr %30, align 8, !tbaa !5
  %1273 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1272, i32 0, i32 4
  %1274 = load ptr, ptr %1273, align 8, !tbaa !40
  %1275 = load i64, ptr %49, align 8, !tbaa !9
  %1276 = getelementptr inbounds double, ptr %1274, i64 %1275
  %1277 = load double, ptr %1276, align 8, !tbaa !16
  %1278 = load ptr, ptr %44, align 8, !tbaa !5
  %1279 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1278, i32 0, i32 4
  %1280 = load ptr, ptr %1279, align 8, !tbaa !40
  %1281 = load i64, ptr %49, align 8, !tbaa !9
  %1282 = getelementptr inbounds double, ptr %1280, i64 %1281
  store double %1277, ptr %1282, align 8, !tbaa !16
  br label %1283

1283:                                             ; preds = %1271, %1257
  %1284 = load ptr, ptr %43, align 8, !tbaa !5
  %1285 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1284, i32 0, i32 13
  %1286 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1285, i32 0, i32 4
  %1287 = load ptr, ptr %1286, align 8, !tbaa !40
  %1288 = load i64, ptr %49, align 8, !tbaa !9
  %1289 = getelementptr inbounds double, ptr %1287, i64 %1288
  %1290 = load double, ptr %1289, align 8, !tbaa !16
  %1291 = load ptr, ptr %43, align 8, !tbaa !5
  %1292 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1291, i32 0, i32 5
  %1293 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1292, i32 0, i32 4
  %1294 = load ptr, ptr %1293, align 8, !tbaa !40
  %1295 = load i64, ptr %49, align 8, !tbaa !9
  %1296 = getelementptr inbounds double, ptr %1294, i64 %1295
  %1297 = load double, ptr %1296, align 8, !tbaa !16
  %1298 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1290, double noundef %1297)
  br i1 %1298, label %1299, label %1311

1299:                                             ; preds = %1283
  %1300 = load ptr, ptr %30, align 8, !tbaa !5
  %1301 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1300, i32 0, i32 4
  %1302 = load ptr, ptr %1301, align 8, !tbaa !40
  %1303 = load i64, ptr %49, align 8, !tbaa !9
  %1304 = getelementptr inbounds double, ptr %1302, i64 %1303
  %1305 = load double, ptr %1304, align 8, !tbaa !16
  %1306 = load ptr, ptr %44, align 8, !tbaa !5
  %1307 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1306, i32 0, i32 4
  %1308 = load ptr, ptr %1307, align 8, !tbaa !40
  %1309 = load i64, ptr %49, align 8, !tbaa !9
  %1310 = getelementptr inbounds double, ptr %1308, i64 %1309
  store double %1305, ptr %1310, align 8, !tbaa !16
  br label %1311

1311:                                             ; preds = %1299, %1283
  br label %1312

1312:                                             ; preds = %1311, %1223
  %1313 = load ptr, ptr %43, align 8, !tbaa !5
  %1314 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1313, i32 0, i32 4
  %1315 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1314, i32 0, i32 4
  %1316 = load ptr, ptr %1315, align 8, !tbaa !40
  %1317 = load i64, ptr %49, align 8, !tbaa !9
  %1318 = getelementptr inbounds i8, ptr %1316, i64 %1317
  %1319 = load i8, ptr %1318, align 1, !tbaa !11, !range !44, !noundef !45
  %1320 = trunc i8 %1319 to i1
  br i1 %1320, label %1321, label %1376

1321:                                             ; preds = %1312
  %1322 = load ptr, ptr %44, align 8, !tbaa !5
  %1323 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1322, i32 0, i32 4
  %1324 = load ptr, ptr %1323, align 8, !tbaa !40
  %1325 = load i64, ptr %49, align 8, !tbaa !9
  %1326 = getelementptr inbounds double, ptr %1324, i64 %1325
  %1327 = load double, ptr %1326, align 8, !tbaa !16
  %1328 = load ptr, ptr %31, align 8, !tbaa !5
  %1329 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1328, i32 0, i32 4
  %1330 = load ptr, ptr %1329, align 8, !tbaa !40
  %1331 = load i64, ptr %49, align 8, !tbaa !9
  %1332 = getelementptr inbounds double, ptr %1330, i64 %1331
  %1333 = load double, ptr %1332, align 8, !tbaa !16
  %1334 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1327, double noundef %1333)
  br i1 %1334, label %1335, label %1347

1335:                                             ; preds = %1321
  %1336 = load ptr, ptr %31, align 8, !tbaa !5
  %1337 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1336, i32 0, i32 4
  %1338 = load ptr, ptr %1337, align 8, !tbaa !40
  %1339 = load i64, ptr %49, align 8, !tbaa !9
  %1340 = getelementptr inbounds double, ptr %1338, i64 %1339
  %1341 = load double, ptr %1340, align 8, !tbaa !16
  %1342 = load ptr, ptr %44, align 8, !tbaa !5
  %1343 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1342, i32 0, i32 4
  %1344 = load ptr, ptr %1343, align 8, !tbaa !40
  %1345 = load i64, ptr %49, align 8, !tbaa !9
  %1346 = getelementptr inbounds double, ptr %1344, i64 %1345
  store double %1341, ptr %1346, align 8, !tbaa !16
  br label %1347

1347:                                             ; preds = %1335, %1321
  %1348 = load ptr, ptr %43, align 8, !tbaa !5
  %1349 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1348, i32 0, i32 13
  %1350 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1349, i32 0, i32 4
  %1351 = load ptr, ptr %1350, align 8, !tbaa !40
  %1352 = load i64, ptr %49, align 8, !tbaa !9
  %1353 = getelementptr inbounds double, ptr %1351, i64 %1352
  %1354 = load double, ptr %1353, align 8, !tbaa !16
  %1355 = load ptr, ptr %43, align 8, !tbaa !5
  %1356 = getelementptr inbounds %"struct.alglib_impl::qpdenseaulbuffers", ptr %1355, i32 0, i32 6
  %1357 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1356, i32 0, i32 4
  %1358 = load ptr, ptr %1357, align 8, !tbaa !40
  %1359 = load i64, ptr %49, align 8, !tbaa !9
  %1360 = getelementptr inbounds double, ptr %1358, i64 %1359
  %1361 = load double, ptr %1360, align 8, !tbaa !16
  %1362 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %1354, double noundef %1361)
  br i1 %1362, label %1363, label %1375

1363:                                             ; preds = %1347
  %1364 = load ptr, ptr %31, align 8, !tbaa !5
  %1365 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1364, i32 0, i32 4
  %1366 = load ptr, ptr %1365, align 8, !tbaa !40
  %1367 = load i64, ptr %49, align 8, !tbaa !9
  %1368 = getelementptr inbounds double, ptr %1366, i64 %1367
  %1369 = load double, ptr %1368, align 8, !tbaa !16
  %1370 = load ptr, ptr %44, align 8, !tbaa !5
  %1371 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %1370, i32 0, i32 4
  %1372 = load ptr, ptr %1371, align 8, !tbaa !40
  %1373 = load i64, ptr %49, align 8, !tbaa !9
  %1374 = getelementptr inbounds double, ptr %1372, i64 %1373
  store double %1369, ptr %1374, align 8, !tbaa !16
  br label %1375

1375:                                             ; preds = %1363, %1347
  br label %1376

1376:                                             ; preds = %1375, %1312
  br label %1377

1377:                                             ; preds = %1376
  %1378 = load i64, ptr %49, align 8, !tbaa !9
  %1379 = add nsw i64 %1378, 1
  store i64 %1379, ptr %49, align 8, !tbaa !9
  br label %1218, !llvm.loop !73

1380:                                             ; preds = %1218
  %1381 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 2, ptr %1381, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  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 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 8, 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
  ret void
}

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL42qpdenseaulsolver_scaleshiftoriginalproblemEPKNS_20convexquadraticmodelEPKNS_12sparsematrixElbPKNS_9ae_vectorES8_S8_S8_S8_lPKNS_9ae_matrixEllS5_llbPNS_17qpdenseaulbuffersEPS6_PNS_8ae_stateE(ptr noundef, ptr noundef, i64 noundef, i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden noundef double @_ZN11alglib_implL39qpdenseaulsolver_normalizequadratictermEPNS_9ae_matrixEPNS_9ae_vectorElPKS0_llbS1_PNS_8ae_stateE(ptr noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, i1 noundef zeroext, ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL40qpdenseaulsolver_selectinitialworkingsetEPKNS_9ae_matrixElS2_llPNS_9ae_vectorEPS0_PlPbPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL32qpdenseaulsolver_generateexmodelEPKNS_9ae_matrixEPKNS_9ae_vectorElS5_S5_S5_S5_S2_llS5_dPS0_PS3_S7_S7_S6_PNS_8ae_stateE(ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL42qpdenseaulsolver_updatelagrangemultipliersEPKNS_9ae_matrixEPKNS_9ae_vectorElS5_S5_S5_S5_S2_llS5_PS3_PNS_17qpdenseaulbuffersEPNS_8ae_stateE(ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { 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 #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, !15, i64 16}
!14 = !{!"_ZTSN11alglib_impl18qpdenseaulsettingsE", !15, i64 0, !10, i64 8, !15, i64 16}
!15 = !{!"double", !7, i64 0}
!16 = !{!15, !15, i64 0}
!17 = !{!14, !15, i64 0}
!18 = !{!19, !10, i64 320}
!19 = !{!"_ZTSN11alglib_impl12sparsematrixE", !20, i64 0, !20, i64 64, !20, i64 128, !20, i64 192, !20, i64 256, !10, i64 320, !10, i64 328, !10, i64 336, !10, i64 344, !10, i64 352, !10, i64 360}
!20 = !{!"_ZTSN11alglib_impl9ae_vectorE", !10, i64 0, !10, i64 8, !12, i64 16, !21, i64 24, !7, i64 56}
!21 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!22 = !{!19, !10, i64 328}
!23 = !{!19, !10, i64 336}
!24 = !{!25, !10, i64 11560}
!25 = !{!"_ZTSN11alglib_impl17qpdenseaulbuffersE", !20, i64 0, !26, i64 64, !20, i64 144, !20, i64 208, !20, i64 272, !20, i64 336, !20, i64 400, !20, i64 464, !26, i64 528, !20, i64 608, !20, i64 672, !26, i64 736, !20, i64 816, !20, i64 880, !20, i64 944, !20, i64 1008, !20, i64 1072, !20, i64 1136, !27, i64 1200, !28, i64 1272, !20, i64 8576, !20, i64 8640, !20, i64 8704, !26, i64 8768, !20, i64 8848, !20, i64 8912, !20, i64 8976, !32, i64 9040, !19, i64 10728, !26, i64 11096, !20, i64 11176, !20, i64 11240, !20, i64 11304, !20, i64 11368, !20, i64 11432, !20, i64 11496, !10, i64 11560, !10, i64 11568, !10, i64 11576, !10, i64 11584, !10, i64 11592, !10, i64 11600, !10, i64 11608, !10, i64 11616}
!26 = !{!"_ZTSN11alglib_impl9ae_matrixE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !12, i64 32, !21, i64 40, !7, i64 72}
!27 = !{!"_ZTSN11alglib_impl11qqpsettingsE", !15, i64 0, !15, i64 8, !15, i64 16, !10, i64 24, !12, i64 32, !12, i64 33, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64}
!28 = !{!"_ZTSN11alglib_impl10qqpbuffersE", !10, i64 0, !10, i64 8, !26, i64 16, !19, i64 96, !12, i64 464, !15, i64 472, !15, i64 480, !15, i64 488, !20, i64 496, !20, i64 560, !20, i64 624, !20, i64 688, !20, i64 752, !20, i64 816, !20, i64 880, !20, i64 944, !20, i64 1008, !20, i64 1072, !20, i64 1136, !20, i64 1200, !20, i64 1264, !29, i64 1328, !20, i64 5672, !10, i64 5736, !10, i64 5744, !26, i64 5752, !19, i64 5832, !20, i64 6200, !20, i64 6264, !20, i64 6328, !20, i64 6392, !20, i64 6456, !20, i64 6520, !20, i64 6584, !20, i64 6648, !20, i64 6712, !31, i64 6776, !10, i64 7272, !10, i64 7280, !10, i64 7288, !10, i64 7296}
!29 = !{!"_ZTSN11alglib_impl10sactivesetE", !10, i64 0, !10, i64 8, !20, i64 16, !12, i64 80, !20, i64 88, !20, i64 152, !20, i64 216, !12, i64 280, !26, i64 288, !26, i64 368, !26, i64 448, !10, i64 528, !20, i64 536, !10, i64 600, !10, i64 608, !12, i64 616, !12, i64 617, !20, i64 624, !20, i64 688, !20, i64 752, !20, i64 816, !26, i64 880, !10, i64 960, !10, i64 968, !20, i64 976, !20, i64 1040, !20, i64 1104, !20, i64 1168, !20, i64 1232, !20, i64 1296, !30, i64 1360, !20, i64 3000, !20, i64 3064, !20, i64 3128, !26, i64 3192, !20, i64 3272, !20, i64 3336, !20, i64 3400, !26, i64 3464, !26, i64 3544, !20, i64 3624, !20, i64 3688, !20, i64 3752, !26, i64 3816, !20, i64 3896, !20, i64 3960, !20, i64 4024, !20, i64 4088, !20, i64 4152, !20, i64 4216, !20, i64 4280}
!30 = !{!"_ZTSN11alglib_impl11snnlssolverE", !10, i64 0, !10, i64 8, !10, i64 16, !26, i64 24, !20, i64 104, !20, i64 168, !15, i64 232, !10, i64 240, !20, i64 248, !20, i64 312, !26, i64 376, !26, i64 456, !26, i64 536, !20, i64 616, !20, i64 680, !20, i64 744, !20, i64 808, !20, i64 872, !20, i64 936, !20, i64 1000, !20, i64 1064, !20, i64 1128, !20, i64 1192, !20, i64 1256, !20, i64 1320, !20, i64 1384, !20, i64 1448, !20, i64 1512, !20, i64 1576}
!31 = !{!"_ZTSN11alglib_impl13sparsebuffersE", !20, i64 0, !20, i64 64, !19, i64 128}
!32 = !{!"_ZTSN11alglib_impl20convexquadraticmodelE", !10, i64 0, !10, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !26, i64 40, !26, i64 120, !20, i64 200, !20, i64 264, !20, i64 328, !20, i64 392, !20, i64 456, !26, i64 520, !26, i64 600, !20, i64 680, !20, i64 744, !20, i64 808, !15, i64 872, !15, i64 880, !20, i64 888, !20, i64 952, !10, i64 1016, !10, i64 1024, !26, i64 1032, !26, i64 1112, !26, i64 1192, !20, i64 1272, !20, i64 1336, !15, i64 1400, !20, i64 1408, !20, i64 1472, !20, i64 1536, !26, i64 1600, !12, i64 1680, !12, i64 1681, !12, i64 1682, !12, i64 1683}
!33 = !{!25, !10, i64 11568}
!34 = !{!25, !10, i64 11576}
!35 = !{!25, !10, i64 11616}
!36 = !{!25, !10, i64 11584}
!37 = !{!25, !10, i64 11592}
!38 = !{!25, !10, i64 11600}
!39 = !{!25, !10, i64 11608}
!40 = !{!7, !7, i64 0}
!41 = distinct !{!41, !42}
!42 = !{!"llvm.loop.mustprogress"}
!43 = distinct !{!43, !42}
!44 = !{i8 0, i8 2}
!45 = !{}
!46 = distinct !{!46, !42}
!47 = distinct !{!47, !42}
!48 = distinct !{!48, !42}
!49 = distinct !{!49, !42}
!50 = distinct !{!50, !42}
!51 = !{!14, !10, i64 8}
!52 = !{!25, !10, i64 736}
!53 = !{!25, !10, i64 744}
!54 = !{!25, !10, i64 1224}
!55 = !{!25, !15, i64 1200}
!56 = !{!25, !15, i64 1208}
!57 = !{!25, !15, i64 1216}
!58 = !{!25, !12, i64 1233}
!59 = !{!25, !10, i64 8560}
!60 = distinct !{!60, !42}
!61 = distinct !{!61, !42}
!62 = distinct !{!62, !42}
!63 = distinct !{!63, !42}
!64 = distinct !{!64, !42}
!65 = distinct !{!65, !42}
!66 = distinct !{!66, !42}
!67 = distinct !{!67, !42}
!68 = distinct !{!68, !42}
!69 = distinct !{!69, !42}
!70 = distinct !{!70, !42}
!71 = distinct !{!71, !42}
!72 = distinct !{!72, !42}
!73 = distinct !{!73, !42}


; 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.576 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.577 = external hidden unnamed_addr constant [50 x i8], align 1
@_ZN11alglib_implL31qpdenseaulsolver_expansionratioE = external hidden local_unnamed_addr global double, align 8
@_ZN11alglib_implL30qpdenseaulsolver_evictionlevelE = external hidden local_unnamed_addr global double, align 8

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef, double 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 noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef, double noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl18qpdenseauloptimizeEPKNS_20convexquadraticmodelEPKNS_12sparsematrixElbPKNS_9ae_vectorES8_S8_S8_S8_lPKNS_9ae_matrixEllS5_llbPKNS_18qpdenseaulsettingsEPNS_17qpdenseaulbuffersEPS6_SH_SH_PlPNS_8ae_stateE(ptr noundef %0, ptr noundef %1, i64 noundef %2, i1 noundef zeroext %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, i64 noundef %9, ptr noundef %10, i64 noundef %11, i64 noundef %12, ptr noundef %13, i64 noundef %14, i64 noundef %15, i1 noundef zeroext %16, ptr nocapture noundef readonly %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr nocapture noundef writeonly %22, ptr noundef %23) local_unnamed_addr #3 {
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i8, align 1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #6
  store i64 0, ptr %22, align 8, !tbaa !5
  %33 = add i64 %15, %12
  %34 = add i64 %33, %9
  %35 = add i64 %14, %11
  %36 = add i64 %35, %12
  %37 = add i64 %36, %15
  %38 = getelementptr inbounds i8, ptr %17, i64 16
  %39 = load double, ptr %38, align 8, !tbaa !9
  %40 = load double, ptr %17, align 8, !tbaa !12
  %41 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %40, double noundef 0.000000e+00)
  %.0405 = select i1 %41, double 1.000000e-09, double %40
  %42 = add nsw i64 %15, %14
  %43 = icmp sgt i64 %42, 0
  br i1 %43, label %44, label %55

44:                                               ; preds = %24
  %45 = getelementptr inbounds i8, ptr %13, i64 320
  %46 = load i64, ptr %45, align 8, !tbaa !13
  %47 = icmp eq i64 %46, 1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %47, ptr noundef nonnull @.str.576, ptr noundef %23)
  %48 = getelementptr inbounds i8, ptr %13, i64 328
  %49 = load i64, ptr %48, align 8, !tbaa !19
  %50 = icmp eq i64 %49, %42
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %50, ptr noundef nonnull @.str.577, ptr noundef %23)
  %51 = getelementptr inbounds i8, ptr %13, i64 336
  %52 = load i64, ptr %51, align 8, !tbaa !20
  %53 = add nsw i64 %9, 1
  %54 = icmp eq i64 %52, %53
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %54, ptr noundef nonnull @.str.577, ptr noundef %23)
  br label %55

55:                                               ; preds = %44, %24
  %56 = getelementptr inbounds i8, ptr %18, i64 11560
  %57 = getelementptr inbounds i8, ptr %18, i64 11576
  %58 = getelementptr inbounds i8, ptr %18, i64 11584
  %59 = getelementptr inbounds i8, ptr %18, i64 11592
  %60 = getelementptr inbounds i8, ptr %18, i64 11600
  %61 = getelementptr inbounds i8, ptr %18, i64 11608
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %56, i8 0, i64 64, i1 false)
  store i64 0, ptr %22, align 8, !tbaa !5
  %62 = getelementptr inbounds i8, ptr %18, i64 608
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %62, i64 noundef %37, ptr noundef %23)
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef %37, ptr noundef %23)
  %63 = getelementptr inbounds i8, ptr %18, i64 8576
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %63, i64 noundef %37, ptr noundef %23)
  %64 = getelementptr inbounds i8, ptr %18, i64 816
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %64, i64 noundef %34, ptr noundef %23)
  %65 = getelementptr inbounds i8, ptr %18, i64 880
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %65, i64 noundef %34, ptr noundef %23)
  %66 = getelementptr inbounds i8, ptr %18, i64 1136
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %66, i64 noundef %34, ptr noundef %23)
  %67 = getelementptr inbounds i8, ptr %18, i64 944
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %67, i64 noundef %34, ptr noundef %23)
  %68 = getelementptr inbounds i8, ptr %18, i64 1008
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %68, i64 noundef %34, ptr noundef %23)
  %69 = getelementptr inbounds i8, ptr %18, i64 1072
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %69, i64 noundef %34, ptr noundef %23)
  %70 = getelementptr inbounds i8, ptr %18, i64 8704
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %70, i64 noundef %34, ptr noundef %23)
  %71 = getelementptr inbounds i8, ptr %18, i64 11432
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %71, i64 noundef %33, ptr noundef %23)
  %72 = getelementptr inbounds i8, ptr %18, i64 11496
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %72, i64 noundef %33, ptr noundef %23)
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %20, i64 noundef %9, ptr noundef %23)
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %21, i64 noundef %37, ptr noundef %23)
  %.not.not476 = icmp sgt i64 %9, 0
  br i1 %.not.not476, label %.lr.ph, label %.preheader470

.lr.ph:                                           ; preds = %55
  %73 = getelementptr inbounds i8, ptr %20, i64 56
  %xtraiter = and i64 %9, 3
  %74 = icmp ult i64 %9, 4
  br i1 %74, label %.preheader470.loopexit.unr-lcssa, label %.lr.ph.new

.lr.ph.new:                                       ; preds = %.lr.ph
  %unroll_iter = and i64 %9, 9223372036854775804
  br label %85

.preheader470.loopexit.unr-lcssa:                 ; preds = %85, %.lr.ph
  %storemerge477.unr = phi i64 [ 0, %.lr.ph ], [ %97, %85 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader470, label %.epil.preheader

.epil.preheader:                                  ; preds = %.preheader470.loopexit.unr-lcssa, %.epil.preheader
  %storemerge477.epil = phi i64 [ %77, %.epil.preheader ], [ %storemerge477.unr, %.preheader470.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %.preheader470.loopexit.unr-lcssa ]
  %75 = load ptr, ptr %73, align 8, !tbaa !21
  %76 = getelementptr inbounds double, ptr %75, i64 %storemerge477.epil
  store double 0.000000e+00, ptr %76, align 8, !tbaa !22
  %77 = add nuw nsw i64 %storemerge477.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.preheader470, label %.epil.preheader, !llvm.loop !23

.preheader470:                                    ; preds = %.preheader470.loopexit.unr-lcssa, %.epil.preheader, %55
  %78 = add i64 %9, -1
  %.not.not432478 = icmp sgt i64 %37, 0
  br i1 %.not.not432478, label %.lr.ph480, label %._crit_edge

.lr.ph480:                                        ; preds = %.preheader470
  %79 = getelementptr inbounds i8, ptr %21, i64 56
  %80 = add i64 %15, %14
  %81 = add i64 %80, %12
  %82 = add i64 %81, %11
  %83 = add i64 %82, -1
  %xtraiter615 = and i64 %37, 3
  %84 = icmp ult i64 %83, 3
  br i1 %84, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph480.new

.lr.ph480.new:                                    ; preds = %.lr.ph480
  %unroll_iter618 = and i64 %37, 9223372036854775804
  br label %98

85:                                               ; preds = %85, %.lr.ph.new
  %storemerge477 = phi i64 [ 0, %.lr.ph.new ], [ %97, %85 ]
  %niter = phi i64 [ 0, %.lr.ph.new ], [ %niter.next.3, %85 ]
  %86 = load ptr, ptr %73, align 8, !tbaa !21
  %87 = getelementptr inbounds double, ptr %86, i64 %storemerge477
  store double 0.000000e+00, ptr %87, align 8, !tbaa !22
  %88 = or disjoint i64 %storemerge477, 1
  %89 = load ptr, ptr %73, align 8, !tbaa !21
  %90 = getelementptr inbounds double, ptr %89, i64 %88
  store double 0.000000e+00, ptr %90, align 8, !tbaa !22
  %91 = or disjoint i64 %storemerge477, 2
  %92 = load ptr, ptr %73, align 8, !tbaa !21
  %93 = getelementptr inbounds double, ptr %92, i64 %91
  store double 0.000000e+00, ptr %93, align 8, !tbaa !22
  %94 = or disjoint i64 %storemerge477, 3
  %95 = load ptr, ptr %73, align 8, !tbaa !21
  %96 = getelementptr inbounds double, ptr %95, i64 %94
  store double 0.000000e+00, ptr %96, align 8, !tbaa !22
  %97 = add nuw nsw i64 %storemerge477, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.preheader470.loopexit.unr-lcssa, label %85, !llvm.loop !25

98:                                               ; preds = %98, %.lr.ph480.new
  %storemerge431479 = phi i64 [ 0, %.lr.ph480.new ], [ %110, %98 ]
  %niter619 = phi i64 [ 0, %.lr.ph480.new ], [ %niter619.next.3, %98 ]
  %99 = load ptr, ptr %79, align 8, !tbaa !21
  %100 = getelementptr inbounds double, ptr %99, i64 %storemerge431479
  store double 0.000000e+00, ptr %100, align 8, !tbaa !22
  %101 = or disjoint i64 %storemerge431479, 1
  %102 = load ptr, ptr %79, align 8, !tbaa !21
  %103 = getelementptr inbounds double, ptr %102, i64 %101
  store double 0.000000e+00, ptr %103, align 8, !tbaa !22
  %104 = or disjoint i64 %storemerge431479, 2
  %105 = load ptr, ptr %79, align 8, !tbaa !21
  %106 = getelementptr inbounds double, ptr %105, i64 %104
  store double 0.000000e+00, ptr %106, align 8, !tbaa !22
  %107 = or disjoint i64 %storemerge431479, 3
  %108 = load ptr, ptr %79, align 8, !tbaa !21
  %109 = getelementptr inbounds double, ptr %108, i64 %107
  store double 0.000000e+00, ptr %109, align 8, !tbaa !22
  %110 = add nuw nsw i64 %storemerge431479, 4
  %niter619.next.3 = add i64 %niter619, 4
  %niter619.ncmp.3 = icmp eq i64 %niter619.next.3, %unroll_iter618
  br i1 %niter619.ncmp.3, label %._crit_edge.loopexit.unr-lcssa, label %98, !llvm.loop !27

._crit_edge.loopexit.unr-lcssa:                   ; preds = %98, %.lr.ph480
  %storemerge431479.unr = phi i64 [ 0, %.lr.ph480 ], [ %110, %98 ]
  %lcmp.mod617.not = icmp eq i64 %xtraiter615, 0
  br i1 %lcmp.mod617.not, label %._crit_edge, label %.epil.preheader614

.epil.preheader614:                               ; preds = %._crit_edge.loopexit.unr-lcssa, %.epil.preheader614
  %storemerge431479.epil = phi i64 [ %113, %.epil.preheader614 ], [ %storemerge431479.unr, %._crit_edge.loopexit.unr-lcssa ]
  %epil.iter616 = phi i64 [ %epil.iter616.next, %.epil.preheader614 ], [ 0, %._crit_edge.loopexit.unr-lcssa ]
  %111 = load ptr, ptr %79, align 8, !tbaa !21
  %112 = getelementptr inbounds double, ptr %111, i64 %storemerge431479.epil
  store double 0.000000e+00, ptr %112, align 8, !tbaa !22
  %113 = add nuw nsw i64 %storemerge431479.epil, 1
  %epil.iter616.next = add i64 %epil.iter616, 1
  %epil.iter616.cmp.not = icmp eq i64 %epil.iter616.next, %xtraiter615
  br i1 %epil.iter616.cmp.not, label %._crit_edge, label %.epil.preheader614, !llvm.loop !28

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.epil.preheader614, %.preheader470
  tail call void @_ZN11alglib_implL42qpdenseaulsolver_scaleshiftoriginalproblemEPKNS_20convexquadraticmodelEPKNS_12sparsematrixElbPKNS_9ae_vectorES8_S8_S8_S8_lPKNS_9ae_matrixEllS5_llbPNS_17qpdenseaulbuffersEPS6_PNS_8ae_stateE(ptr noundef %0, ptr noundef %1, i64 noundef %2, i1 noundef zeroext %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, i64 noundef %9, ptr noundef %10, i64 noundef %11, i64 noundef %12, ptr noundef %13, i64 noundef %14, i64 noundef %15, i1 noundef zeroext %16, ptr noundef %18, ptr noundef %19, ptr noundef %23)
  %114 = getelementptr inbounds i8, ptr %18, i64 64
  %115 = getelementptr inbounds i8, ptr %18, i64 144
  %116 = getelementptr inbounds i8, ptr %18, i64 528
  %117 = getelementptr inbounds i8, ptr %18, i64 8768
  %118 = tail call noundef double @_ZN11alglib_implL39qpdenseaulsolver_normalizequadratictermEPNS_9ae_matrixEPNS_9ae_vectorElPKS0_llbS1_PNS_8ae_stateE(ptr noundef nonnull %114, ptr noundef nonnull %115, i64 noundef %9, ptr noundef nonnull %116, i64 noundef %35, i64 noundef %33, i1 noundef zeroext %16, ptr noundef nonnull %117, ptr noundef %23)
  call void @_ZN11alglib_implL40qpdenseaulsolver_selectinitialworkingsetEPKNS_9ae_matrixElS2_llPNS_9ae_vectorEPS0_PlPbPNS_8ae_stateE(ptr noundef nonnull %114, i64 noundef %9, ptr noundef nonnull %116, i64 noundef %35, i64 noundef %33, ptr noundef nonnull %70, ptr noundef nonnull %117, ptr noundef nonnull %29, ptr noundef nonnull %32, ptr noundef %23)
  %119 = load i64, ptr %29, align 8, !tbaa !5
  %120 = add nsw i64 %119, %35
  store i64 %120, ptr %30, align 8, !tbaa !5
  %121 = add nsw i64 %119, %9
  store i64 %121, ptr %31, align 8, !tbaa !5
  store i64 %119, ptr %59, align 8, !tbaa !29
  store i64 0, ptr %25, align 8, !tbaa !5
  %.not.not434482 = icmp sgt i64 %119, 0
  br i1 %.not.not434482, label %.lr.ph485, label %.preheader469

.lr.ph485:                                        ; preds = %._crit_edge
  %122 = getelementptr inbounds i8, ptr %18, i64 11552
  br label %124

.preheader469:                                    ; preds = %124, %._crit_edge
  %.lcssa474 = phi i64 [ %119, %._crit_edge ], [ %129, %124 ]
  store i64 %.lcssa474, ptr %25, align 8, !tbaa !5
  %.not.not436487 = icmp slt i64 %.lcssa474, %33
  br i1 %.not.not436487, label %.lr.ph489, label %.preheader468

.lr.ph489:                                        ; preds = %.preheader469
  %123 = getelementptr inbounds i8, ptr %18, i64 11552
  br label %131

124:                                              ; preds = %.lr.ph485, %124
  %storemerge433483 = phi i64 [ 0, %.lr.ph485 ], [ %128, %124 ]
  %125 = load ptr, ptr %122, align 8, !tbaa !21
  %126 = getelementptr inbounds i64, ptr %125, i64 %storemerge433483
  store i64 1, ptr %126, align 8, !tbaa !5
  %127 = load i64, ptr %25, align 8, !tbaa !5
  %128 = add nsw i64 %127, 1
  store i64 %128, ptr %25, align 8, !tbaa !5
  %129 = load i64, ptr %29, align 8, !tbaa !5
  %.not.not434 = icmp slt i64 %128, %129
  br i1 %.not.not434, label %124, label %.preheader469, !llvm.loop !38

.preheader468:                                    ; preds = %131, %.preheader469
  store i64 0, ptr %25, align 8, !tbaa !5
  br i1 %.not.not432478, label %.lr.ph492, label %.preheader466

.lr.ph492:                                        ; preds = %.preheader468
  %130 = getelementptr inbounds i8, ptr %18, i64 664
  br label %142

131:                                              ; preds = %.lr.ph489, %131
  %storemerge435488 = phi i64 [ %.lcssa474, %.lr.ph489 ], [ %135, %131 ]
  %132 = load ptr, ptr %123, align 8, !tbaa !21
  %133 = getelementptr inbounds i64, ptr %132, i64 %storemerge435488
  store i64 0, ptr %133, align 8, !tbaa !5
  %134 = load i64, ptr %25, align 8, !tbaa !5
  %135 = add nsw i64 %134, 1
  store i64 %135, ptr %25, align 8, !tbaa !5
  %.not.not436 = icmp slt i64 %135, %33
  br i1 %.not.not436, label %131, label %.preheader468, !llvm.loop !39

.preheader467:                                    ; preds = %142
  br i1 %.not.not432478, label %.lr.ph495, label %.preheader466

.lr.ph495:                                        ; preds = %.preheader467
  %136 = getelementptr inbounds i8, ptr %18, i64 56
  %137 = add i64 %15, %14
  %138 = add i64 %137, %12
  %139 = add i64 %138, %11
  %140 = add i64 %139, -1
  %xtraiter621 = and i64 %37, 3
  %141 = icmp ult i64 %140, 3
  br i1 %141, label %.preheader466.loopexit.unr-lcssa, label %.lr.ph495.new

.lr.ph495.new:                                    ; preds = %.lr.ph495
  %unroll_iter624 = and i64 %37, 9223372036854775804
  br label %155

142:                                              ; preds = %.lr.ph492, %142
  %storemerge437491 = phi i64 [ 0, %.lr.ph492 ], [ %146, %142 ]
  %143 = load ptr, ptr %130, align 8, !tbaa !21
  %144 = getelementptr inbounds i64, ptr %143, i64 %storemerge437491
  store i64 %storemerge437491, ptr %144, align 8, !tbaa !5
  %145 = load i64, ptr %25, align 8, !tbaa !5
  %146 = add nsw i64 %145, 1
  store i64 %146, ptr %25, align 8, !tbaa !5
  %.not.not438 = icmp slt i64 %146, %37
  br i1 %.not.not438, label %142, label %.preheader467, !llvm.loop !40

.preheader466.loopexit.unr-lcssa:                 ; preds = %155, %.lr.ph495
  %storemerge439494.unr = phi i64 [ 0, %.lr.ph495 ], [ %167, %155 ]
  %lcmp.mod623.not = icmp eq i64 %xtraiter621, 0
  br i1 %lcmp.mod623.not, label %.preheader466, label %.epil.preheader620

.epil.preheader620:                               ; preds = %.preheader466.loopexit.unr-lcssa, %.epil.preheader620
  %storemerge439494.epil = phi i64 [ %149, %.epil.preheader620 ], [ %storemerge439494.unr, %.preheader466.loopexit.unr-lcssa ]
  %epil.iter622 = phi i64 [ %epil.iter622.next, %.epil.preheader620 ], [ 0, %.preheader466.loopexit.unr-lcssa ]
  %147 = load ptr, ptr %136, align 8, !tbaa !21
  %148 = getelementptr inbounds double, ptr %147, i64 %storemerge439494.epil
  store double 0.000000e+00, ptr %148, align 8, !tbaa !22
  %149 = add nuw nsw i64 %storemerge439494.epil, 1
  %epil.iter622.next = add i64 %epil.iter622, 1
  %epil.iter622.cmp.not = icmp eq i64 %epil.iter622.next, %xtraiter621
  br i1 %epil.iter622.cmp.not, label %.preheader466, label %.epil.preheader620, !llvm.loop !41

.preheader466:                                    ; preds = %.preheader466.loopexit.unr-lcssa, %.epil.preheader620, %.preheader468, %.preheader467
  %.not.not442497 = icmp sgt i64 %34, 0
  br i1 %.not.not442497, label %.lr.ph499, label %._crit_edge500

.lr.ph499:                                        ; preds = %.preheader466
  %150 = getelementptr inbounds i8, ptr %18, i64 1128
  %151 = getelementptr inbounds i8, ptr %18, i64 1192
  %152 = add i64 %15, %12
  %153 = add i64 %152, %9
  %xtraiter627 = and i64 %34, 1
  %154 = icmp eq i64 %153, 1
  br i1 %154, label %._crit_edge500.loopexit.unr-lcssa, label %.lr.ph499.new

.lr.ph499.new:                                    ; preds = %.lr.ph499
  %unroll_iter630 = and i64 %34, 9223372036854775806
  br label %168

155:                                              ; preds = %155, %.lr.ph495.new
  %storemerge439494 = phi i64 [ 0, %.lr.ph495.new ], [ %167, %155 ]
  %niter625 = phi i64 [ 0, %.lr.ph495.new ], [ %niter625.next.3, %155 ]
  %156 = load ptr, ptr %136, align 8, !tbaa !21
  %157 = getelementptr inbounds double, ptr %156, i64 %storemerge439494
  store double 0.000000e+00, ptr %157, align 8, !tbaa !22
  %158 = or disjoint i64 %storemerge439494, 1
  %159 = load ptr, ptr %136, align 8, !tbaa !21
  %160 = getelementptr inbounds double, ptr %159, i64 %158
  store double 0.000000e+00, ptr %160, align 8, !tbaa !22
  %161 = or disjoint i64 %storemerge439494, 2
  %162 = load ptr, ptr %136, align 8, !tbaa !21
  %163 = getelementptr inbounds double, ptr %162, i64 %161
  store double 0.000000e+00, ptr %163, align 8, !tbaa !22
  %164 = or disjoint i64 %storemerge439494, 3
  %165 = load ptr, ptr %136, align 8, !tbaa !21
  %166 = getelementptr inbounds double, ptr %165, i64 %164
  store double 0.000000e+00, ptr %166, align 8, !tbaa !22
  %167 = add nuw nsw i64 %storemerge439494, 4
  %niter625.next.3 = add i64 %niter625, 4
  %niter625.ncmp.3 = icmp eq i64 %niter625.next.3, %unroll_iter624
  br i1 %niter625.ncmp.3, label %.preheader466.loopexit.unr-lcssa, label %155, !llvm.loop !42

168:                                              ; preds = %168, %.lr.ph499.new
  %storemerge441498 = phi i64 [ 0, %.lr.ph499.new ], [ %178, %168 ]
  %niter631 = phi i64 [ 0, %.lr.ph499.new ], [ %niter631.next.1, %168 ]
  %169 = load ptr, ptr %150, align 8, !tbaa !21
  %170 = getelementptr inbounds double, ptr %169, i64 %storemerge441498
  store double 1.000000e+00, ptr %170, align 8, !tbaa !22
  %171 = load ptr, ptr %151, align 8, !tbaa !21
  %172 = getelementptr inbounds double, ptr %171, i64 %storemerge441498
  store double 0.000000e+00, ptr %172, align 8, !tbaa !22
  %173 = or disjoint i64 %storemerge441498, 1
  %174 = load ptr, ptr %150, align 8, !tbaa !21
  %175 = getelementptr inbounds double, ptr %174, i64 %173
  store double 1.000000e+00, ptr %175, align 8, !tbaa !22
  %176 = load ptr, ptr %151, align 8, !tbaa !21
  %177 = getelementptr inbounds double, ptr %176, i64 %173
  store double 0.000000e+00, ptr %177, align 8, !tbaa !22
  %178 = add nuw nsw i64 %storemerge441498, 2
  %niter631.next.1 = add i64 %niter631, 2
  %niter631.ncmp.1 = icmp eq i64 %niter631.next.1, %unroll_iter630
  br i1 %niter631.ncmp.1, label %._crit_edge500.loopexit.unr-lcssa, label %168, !llvm.loop !43

._crit_edge500.loopexit.unr-lcssa:                ; preds = %168, %.lr.ph499
  %storemerge441498.unr = phi i64 [ 0, %.lr.ph499 ], [ %178, %168 ]
  %lcmp.mod629.not = icmp eq i64 %xtraiter627, 0
  br i1 %lcmp.mod629.not, label %._crit_edge500, label %._crit_edge500.loopexit.epilog-lcssa

._crit_edge500.loopexit.epilog-lcssa:             ; preds = %._crit_edge500.loopexit.unr-lcssa
  %179 = load ptr, ptr %150, align 8, !tbaa !21
  %180 = getelementptr inbounds double, ptr %179, i64 %storemerge441498.unr
  store double 1.000000e+00, ptr %180, align 8, !tbaa !22
  %181 = load ptr, ptr %151, align 8, !tbaa !21
  %182 = getelementptr inbounds double, ptr %181, i64 %storemerge441498.unr
  store double 0.000000e+00, ptr %182, align 8, !tbaa !22
  br label %._crit_edge500

._crit_edge500:                                   ; preds = %._crit_edge500.loopexit.epilog-lcssa, %._crit_edge500.loopexit.unr-lcssa, %.preheader466
  %storemerge441.lcssa = phi i64 [ 0, %.preheader466 ], [ %34, %._crit_edge500.loopexit.unr-lcssa ], [ %34, %._crit_edge500.loopexit.epilog-lcssa ]
  store i64 %storemerge441.lcssa, ptr %25, align 8, !tbaa !5
  %183 = getelementptr inbounds i8, ptr %18, i64 464
  call void @_ZN11alglib_implL39qpdenseaulsolver_generateexinitialpointEPKNS_9ae_vectorEllPS0_PNS_8ae_stateE(ptr noundef nonnull %183, i64 noundef %9, i64 noundef %33, ptr noundef nonnull %65, ptr noundef %23)
  store i64 0, ptr %27, align 8, !tbaa !5
  store i64 0, ptr %28, align 8, !tbaa !5
  %184 = getelementptr inbounds i8, ptr %17, i64 8
  %185 = load i64, ptr %184, align 8, !tbaa !44
  %.not.not443531 = icmp sgt i64 %185, 0
  br i1 %.not.not443531, label %.preheader465.lr.ph, label %._crit_edge535

.preheader465.lr.ph:                              ; preds = %._crit_edge500
  %186 = getelementptr inbounds i8, ptr %18, i64 736
  %187 = getelementptr inbounds i8, ptr %18, i64 744
  %188 = getelementptr inbounds i8, ptr %18, i64 1272
  %189 = getelementptr inbounds i8, ptr %18, i64 336
  %190 = getelementptr inbounds i8, ptr %18, i64 208
  %191 = getelementptr inbounds i8, ptr %18, i64 400
  %192 = getelementptr inbounds i8, ptr %18, i64 272
  %193 = getelementptr inbounds i8, ptr %18, i64 1200
  %194 = getelementptr inbounds i8, ptr %18, i64 1224
  %195 = fmul double %.0405, 1.000000e-02
  %196 = getelementptr inbounds i8, ptr %18, i64 1216
  %197 = getelementptr inbounds i8, ptr %18, i64 1233
  %198 = getelementptr inbounds i8, ptr %18, i64 9040
  %199 = getelementptr inbounds i8, ptr %18, i64 10728
  %200 = getelementptr inbounds i8, ptr %18, i64 8560
  %.not.not445502 = icmp sgt i64 %33, 0
  %201 = getelementptr inbounds i8, ptr %18, i64 600
  %202 = getelementptr inbounds i8, ptr %18, i64 936
  %203 = getelementptr inbounds i8, ptr %18, i64 11488
  %204 = sitofp i64 %9 to double
  %205 = getelementptr inbounds i8, ptr %18, i64 672
  %206 = getelementptr inbounds i8, ptr %18, i64 56
  %207 = getelementptr inbounds i8, ptr %18, i64 11552
  %208 = add i64 %35, -1
  %209 = getelementptr inbounds i8, ptr %18, i64 8632
  br label %.preheader465

.preheader465:                                    ; preds = %.preheader465.lr.ph, %417
  %.0403534 = phi double [ %39, %.preheader465.lr.ph ], [ %421, %417 ]
  %.0406533 = phi double [ 1.000000e+300, %.preheader465.lr.ph ], [ %405, %417 ]
  %.0408532 = phi i64 [ 0, %.preheader465.lr.ph ], [ %422, %417 ]
  br label %210

210:                                              ; preds = %.preheader465, %352
  %211 = load i64, ptr %186, align 8, !tbaa !45
  %212 = load i64, ptr %31, align 8, !tbaa !5
  %213 = icmp slt i64 %211, %212
  br i1 %213, label %217, label %214

214:                                              ; preds = %210
  %215 = load i64, ptr %187, align 8, !tbaa !46
  %216 = icmp slt i64 %215, %212
  br i1 %216, label %217, label %221

217:                                              ; preds = %214, %210
  %218 = sdiv i64 %212, 3
  %219 = add i64 %212, 1
  %220 = add i64 %219, %218
  store i64 %220, ptr %25, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %186, i64 noundef %220, i64 noundef %220, ptr noundef %23)
  %.pre = load i64, ptr %31, align 8, !tbaa !5
  br label %221

221:                                              ; preds = %217, %214
  %222 = phi i64 [ %.pre, %217 ], [ %212, %214 ]
  %223 = load i64, ptr %25, align 8, !tbaa !5
  call void @_ZN11alglib_impl23qqppreallocategrowdenseEPNS_10qqpbuffersEllPNS_8ae_stateE(ptr noundef nonnull %188, i64 noundef %222, i64 noundef %223, ptr noundef %23)
  %224 = load i64, ptr %29, align 8, !tbaa !5
  call void @_ZN11alglib_implL32qpdenseaulsolver_generateexmodelEPKNS_9ae_matrixEPKNS_9ae_vectorElS5_S5_S5_S5_S2_llS5_dPS0_PS3_S7_S7_S6_PNS_8ae_stateE(ptr noundef nonnull %114, ptr noundef nonnull %115, i64 noundef %9, ptr noundef nonnull %189, ptr noundef nonnull %190, ptr noundef nonnull %191, ptr noundef nonnull %192, ptr noundef nonnull %116, i64 noundef %35, i64 noundef %224, ptr noundef nonnull %18, double noundef %.0403534, ptr noundef nonnull %186, ptr noundef nonnull %64, ptr noundef nonnull %67, ptr noundef nonnull %68, ptr noundef nonnull %117, ptr noundef %23)
  %225 = load i64, ptr %31, align 8, !tbaa !5
  call void @_ZN11alglib_impl15qqploaddefaultsElPNS_11qqpsettingsEPNS_8ae_stateE(i64 noundef %225, ptr noundef nonnull %193, ptr noundef %23)
  store i64 50, ptr %194, align 8, !tbaa !47
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %193, i8 0, i64 16, i1 false)
  store double %195, ptr %196, align 8, !tbaa !48
  store i8 1, ptr %197, align 1, !tbaa !49
  %226 = load i64, ptr %31, align 8, !tbaa !5
  call void @_ZN11alglib_impl11qqpoptimizeEPKNS_20convexquadraticmodelEPKNS_12sparsematrixEPKNS_9ae_matrixElbPKNS_9ae_vectorESB_SB_SB_SB_lPKNS_11qqpsettingsEPNS_10qqpbuffersEPS9_PlPNS_8ae_stateE(ptr noundef nonnull %198, ptr noundef nonnull %199, ptr noundef nonnull %186, i64 noundef 2, i1 noundef zeroext true, ptr noundef nonnull %64, ptr noundef nonnull %67, ptr noundef nonnull %68, ptr noundef nonnull %69, ptr noundef nonnull %66, i64 noundef %226, ptr noundef nonnull %193, ptr noundef nonnull %188, ptr noundef nonnull %65, ptr noundef nonnull %26, ptr noundef %23)
  %227 = load i64, ptr %57, align 8, !tbaa !50
  %228 = load i64, ptr %200, align 8, !tbaa !51
  %229 = add nsw i64 %228, %227
  store i64 %229, ptr %57, align 8, !tbaa !50
  store i64 0, ptr %25, align 8, !tbaa !5
  br i1 %.not.not445502, label %.lr.ph505, label %._crit_edge506

.lr.ph505:                                        ; preds = %221, %.lr.ph505
  %storemerge444503 = phi i64 [ %247, %.lr.ph505 ], [ 0, %221 ]
  %230 = load ptr, ptr %201, align 8, !tbaa !21
  %231 = getelementptr ptr, ptr %230, i64 %35
  %232 = getelementptr ptr, ptr %231, i64 %storemerge444503
  %233 = load ptr, ptr %232, align 8, !tbaa !52
  %234 = load ptr, ptr %202, align 8, !tbaa !21
  %235 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %78)
  %236 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %233, i64 noundef 1, ptr noundef %234, i64 noundef 1, i64 noundef %235)
  %237 = load ptr, ptr %201, align 8, !tbaa !21
  %238 = load i64, ptr %25, align 8, !tbaa !5
  %239 = getelementptr ptr, ptr %237, i64 %35
  %240 = getelementptr ptr, ptr %239, i64 %238
  %241 = load ptr, ptr %240, align 8, !tbaa !52
  %242 = getelementptr inbounds double, ptr %241, i64 %9
  %243 = load double, ptr %242, align 8, !tbaa !22
  %244 = fsub double %236, %243
  %245 = load ptr, ptr %203, align 8, !tbaa !21
  %246 = getelementptr inbounds double, ptr %245, i64 %238
  store double %244, ptr %246, align 8, !tbaa !22
  %247 = add nsw i64 %238, 1
  store i64 %247, ptr %25, align 8, !tbaa !5
  %.not.not445 = icmp slt i64 %247, %33
  br i1 %.not.not445, label %.lr.ph505, label %._crit_edge506, !llvm.loop !53

._crit_edge506:                                   ; preds = %.lr.ph505, %221
  store i64 0, ptr %25, align 8, !tbaa !5
  %248 = load double, ptr @_ZN11alglib_implL31qpdenseaulsolver_expansionratioE, align 8, !tbaa !22
  %249 = call double @llvm.fmuladd.f64(double %248, double %204, double 1.000000e+00)
  %250 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef 0.000000e+00, double noundef %249)
  %251 = load i64, ptr %29, align 8
  %252 = icmp slt i64 %251, %33
  %253 = select i1 %250, i1 %252, i1 false
  br i1 %253, label %.lr.ph510, label %._crit_edge511

.lr.ph510:                                        ; preds = %._crit_edge506, %272
  %254 = phi i64 [ %304, %272 ], [ %251, %._crit_edge506 ]
  %.0397508 = phi i1 [ true, %272 ], [ false, %._crit_edge506 ]
  store i64 %254, ptr %26, align 8, !tbaa !5
  br label %255

255:                                              ; preds = %.lr.ph510, %264
  %.0507 = phi i64 [ %254, %.lr.ph510 ], [ %265, %264 ]
  %256 = load ptr, ptr %203, align 8, !tbaa !21
  %257 = getelementptr inbounds double, ptr %256, i64 %.0507
  %258 = load double, ptr %257, align 8, !tbaa !22
  %259 = load i64, ptr %26, align 8, !tbaa !5
  %260 = getelementptr inbounds double, ptr %256, i64 %259
  %261 = load double, ptr %260, align 8, !tbaa !22
  %262 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %258, double noundef %261)
  br i1 %262, label %263, label %264

263:                                              ; preds = %255
  store i64 %.0507, ptr %26, align 8, !tbaa !5
  br label %264

264:                                              ; preds = %255, %263
  %265 = add nsw i64 %.0507, 1
  %.not.not446 = icmp slt i64 %265, %33
  br i1 %.not.not446, label %255, label %266, !llvm.loop !54

266:                                              ; preds = %264
  %267 = load ptr, ptr %203, align 8, !tbaa !21
  %268 = load i64, ptr %26, align 8, !tbaa !5
  %269 = getelementptr inbounds double, ptr %267, i64 %268
  %270 = load double, ptr %269, align 8, !tbaa !22
  %271 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %270, double noundef 0.000000e+00)
  %.pre586.pre597.pre.pre = load i64, ptr %29, align 8, !tbaa !5
  br i1 %271, label %272, label %._crit_edge511

272:                                              ; preds = %266
  %273 = add nsw i64 %.pre586.pre597.pre.pre, %35
  %274 = load i64, ptr %26, align 8, !tbaa !5
  %275 = add nsw i64 %274, %35
  call void @_ZN11alglib_impl8swaprowsEPNS_9ae_matrixElllPNS_8ae_stateE(ptr noundef nonnull %116, i64 noundef %273, i64 noundef %275, i64 noundef -1, ptr noundef %23)
  %276 = load i64, ptr %29, align 8, !tbaa !5
  %277 = load i64, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl12swapelementsEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %71, i64 noundef %276, i64 noundef %277, ptr noundef %23)
  %278 = load i64, ptr %29, align 8, !tbaa !5
  %279 = load i64, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl13swapelementsiEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %72, i64 noundef %278, i64 noundef %279, ptr noundef %23)
  %280 = load i64, ptr %29, align 8, !tbaa !5
  %281 = add nsw i64 %280, %35
  %282 = load i64, ptr %26, align 8, !tbaa !5
  %283 = add nsw i64 %282, %35
  call void @_ZN11alglib_impl13swapelementsiEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %62, i64 noundef %281, i64 noundef %283, ptr noundef %23)
  %284 = load i64, ptr %29, align 8, !tbaa !5
  %285 = add nsw i64 %284, %35
  %286 = load i64, ptr %26, align 8, !tbaa !5
  %287 = add nsw i64 %286, %35
  call void @_ZN11alglib_impl12swapelementsEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %205, i64 noundef %285, i64 noundef %287, ptr noundef %23)
  %288 = load ptr, ptr %202, align 8, !tbaa !21
  %289 = load i64, ptr %29, align 8, !tbaa !5
  %290 = getelementptr double, ptr %288, i64 %289
  %291 = getelementptr double, ptr %290, i64 %9
  store double 0.000000e+00, ptr %291, align 8, !tbaa !22
  %292 = load ptr, ptr %206, align 8, !tbaa !21
  %293 = getelementptr double, ptr %292, i64 %35
  %294 = getelementptr double, ptr %293, i64 %289
  store double 0.000000e+00, ptr %294, align 8, !tbaa !22
  %295 = load ptr, ptr %207, align 8, !tbaa !21
  %296 = getelementptr inbounds i64, ptr %295, i64 %289
  %297 = load i64, ptr %296, align 8, !tbaa !5
  %298 = add nsw i64 %297, 1
  store i64 %298, ptr %296, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %29, ptr noundef %23)
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %31, ptr noundef %23)
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %30, ptr noundef %23)
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %25, ptr noundef %23)
  %299 = load i64, ptr %25, align 8, !tbaa !5
  %300 = sitofp i64 %299 to double
  %301 = load double, ptr @_ZN11alglib_implL31qpdenseaulsolver_expansionratioE, align 8, !tbaa !22
  %302 = call double @llvm.fmuladd.f64(double %301, double %204, double 1.000000e+00)
  %303 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %300, double noundef %302)
  %304 = load i64, ptr %29, align 8
  %305 = icmp slt i64 %304, %33
  %306 = select i1 %303, i1 %305, i1 false
  br i1 %306, label %.lr.ph510, label %._crit_edge511, !llvm.loop !55

._crit_edge511:                                   ; preds = %272, %266, %._crit_edge506
  %.pre586.pre597 = phi i64 [ %251, %._crit_edge506 ], [ %.pre586.pre597.pre.pre, %266 ], [ %304, %272 ]
  %.0397.lcssa = phi i1 [ false, %._crit_edge506 ], [ %.0397508, %266 ], [ true, %272 ]
  %307 = load i8, ptr %32, align 1, !tbaa !56, !range !57, !noundef !58
  %308 = trunc nuw i8 %307 to i1
  br i1 %308, label %.preheader464, label %.loopexit

.preheader464:                                    ; preds = %._crit_edge511
  %storemerge447516 = add nsw i64 %.pre586.pre597, -1
  store i64 %storemerge447516, ptr %26, align 8, !tbaa !5
  %309 = icmp sgt i64 %.pre586.pre597, 0
  br i1 %309, label %.lr.ph518, label %.loopexit

.lr.ph518:                                        ; preds = %.preheader464, %346
  %storemerge447517 = phi i64 [ %storemerge447, %346 ], [ %storemerge447516, %.preheader464 ]
  %310 = load ptr, ptr %203, align 8, !tbaa !21
  %311 = getelementptr inbounds double, ptr %310, i64 %storemerge447517
  %312 = load double, ptr %311, align 8, !tbaa !22
  %313 = load double, ptr @_ZN11alglib_implL30qpdenseaulsolver_evictionlevelE, align 8, !tbaa !22
  %314 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %312, double noundef %313)
  %storemerge447.in.pre584 = load i64, ptr %26, align 8, !tbaa !5
  br i1 %314, label %315, label %346

315:                                              ; preds = %.lr.ph518
  %316 = load ptr, ptr %207, align 8, !tbaa !21
  %317 = getelementptr inbounds i64, ptr %316, i64 %storemerge447.in.pre584
  %318 = load i64, ptr %317, align 8, !tbaa !5
  %319 = icmp slt i64 %318, 2
  br i1 %319, label %320, label %346

320:                                              ; preds = %315
  %321 = load i64, ptr %29, align 8, !tbaa !5
  %322 = add i64 %208, %321
  %323 = add nsw i64 %storemerge447.in.pre584, %35
  call void @_ZN11alglib_impl8swaprowsEPNS_9ae_matrixElllPNS_8ae_stateE(ptr noundef nonnull %116, i64 noundef %322, i64 noundef %323, i64 noundef -1, ptr noundef %23)
  %324 = load i64, ptr %29, align 8, !tbaa !5
  %325 = add i64 %208, %324
  %326 = load i64, ptr %26, align 8, !tbaa !5
  %327 = add nsw i64 %326, %35
  call void @_ZN11alglib_impl13swapelementsiEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %62, i64 noundef %325, i64 noundef %327, ptr noundef %23)
  %328 = load i64, ptr %29, align 8, !tbaa !5
  %329 = add i64 %208, %328
  %330 = load i64, ptr %26, align 8, !tbaa !5
  %331 = add nsw i64 %330, %35
  call void @_ZN11alglib_impl12swapelementsEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %205, i64 noundef %329, i64 noundef %331, ptr noundef %23)
  %332 = load i64, ptr %29, align 8, !tbaa !5
  %333 = add nsw i64 %332, -1
  %334 = load i64, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl12swapelementsEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %71, i64 noundef %333, i64 noundef %334, ptr noundef %23)
  %335 = load i64, ptr %29, align 8, !tbaa !5
  %336 = add nsw i64 %335, -1
  %337 = load i64, ptr %26, align 8, !tbaa !5
  call void @_ZN11alglib_impl13swapelementsiEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %72, i64 noundef %336, i64 noundef %337, ptr noundef %23)
  %338 = load i64, ptr %29, align 8, !tbaa !5
  %339 = add i64 %78, %338
  %340 = load i64, ptr %26, align 8, !tbaa !5
  %341 = add nsw i64 %340, %9
  call void @_ZN11alglib_impl12swapelementsEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %65, i64 noundef %339, i64 noundef %341, ptr noundef %23)
  %342 = load i64, ptr %29, align 8, !tbaa !5
  %343 = add i64 %208, %342
  %344 = load i64, ptr %26, align 8, !tbaa !5
  %345 = add nsw i64 %344, %35
  call void @_ZN11alglib_impl12swapelementsEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %18, i64 noundef %343, i64 noundef %345, ptr noundef %23)
  call void @_ZN11alglib_impl3decEPlPNS_8ae_stateE(ptr noundef nonnull %29, ptr noundef %23)
  call void @_ZN11alglib_impl3decEPlPNS_8ae_stateE(ptr noundef nonnull %31, ptr noundef %23)
  call void @_ZN11alglib_impl3decEPlPNS_8ae_stateE(ptr noundef nonnull %30, ptr noundef %23)
  %storemerge447.in.pre = load i64, ptr %26, align 8, !tbaa !5
  br label %346

346:                                              ; preds = %.lr.ph518, %315, %320
  %storemerge447.in = phi i64 [ %storemerge447.in.pre584, %.lr.ph518 ], [ %storemerge447.in.pre584, %315 ], [ %storemerge447.in.pre, %320 ]
  %storemerge447 = add nsw i64 %storemerge447.in, -1
  store i64 %storemerge447, ptr %26, align 8, !tbaa !5
  %347 = icmp sgt i64 %storemerge447.in, 0
  br i1 %347, label %.lr.ph518, label %.loopexit.loopexit, !llvm.loop !59

.loopexit.loopexit:                               ; preds = %346
  %.pre586.pre = load i64, ptr %29, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %.preheader464, %._crit_edge511
  %.pre586 = phi i64 [ %.pre586.pre, %.loopexit.loopexit ], [ %.pre586.pre597, %.preheader464 ], [ %.pre586.pre597, %._crit_edge511 ]
  %348 = load i64, ptr %60, align 8, !tbaa !60
  %349 = icmp eq i64 %348, 0
  br i1 %349, label %350, label %351

350:                                              ; preds = %.loopexit
  store i64 %.pre586, ptr %60, align 8, !tbaa !60
  br label %351

351:                                              ; preds = %350, %.loopexit
  store i64 %.pre586, ptr %61, align 8, !tbaa !61
  br i1 %.0397.lcssa, label %352, label %.critedge

352:                                              ; preds = %351
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %58, ptr noundef %23)
  br label %210, !llvm.loop !62

.critedge:                                        ; preds = %351
  %353 = load ptr, ptr %209, align 8, !tbaa !21
  %354 = load ptr, ptr %206, align 8, !tbaa !21
  %355 = load i64, ptr %30, align 8, !tbaa !5
  %356 = add nsw i64 %355, -1
  %357 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %356)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %353, i64 noundef 1, ptr noundef %354, i64 noundef 1, i64 noundef %357)
  %358 = load i64, ptr %29, align 8, !tbaa !5
  call void @_ZN11alglib_implL42qpdenseaulsolver_updatelagrangemultipliersEPKNS_9ae_matrixEPKNS_9ae_vectorElS5_S5_S5_S5_S2_llS5_PS3_PNS_17qpdenseaulbuffersEPNS_8ae_stateE(ptr noundef nonnull %114, ptr noundef nonnull %115, i64 noundef %9, ptr noundef nonnull %189, ptr noundef nonnull %190, ptr noundef nonnull %191, ptr noundef nonnull %192, ptr noundef nonnull %116, i64 noundef %35, i64 noundef %358, ptr noundef nonnull %65, ptr noundef nonnull %63, ptr noundef nonnull %18, ptr noundef %23)
  store i64 0, ptr %25, align 8, !tbaa !5
  %359 = load i64, ptr %30, align 8, !tbaa !5
  %.not.not449527 = icmp sgt i64 %359, 0
  br i1 %.not.not449527, label %.preheader463, label %._crit_edge529

.preheader463:                                    ; preds = %.critedge, %384
  %360 = phi i64 [ %403, %384 ], [ 0, %.critedge ]
  %.1407528 = phi double [ %396, %384 ], [ 0.000000e+00, %.critedge ]
  br i1 %.not.not476, label %.lr.ph523, label %._crit_edge524

.lr.ph523:                                        ; preds = %.preheader463, %.lr.ph523
  %.1522 = phi i64 [ %373, %.lr.ph523 ], [ 0, %.preheader463 ]
  %.0398521 = phi double [ %370, %.lr.ph523 ], [ 0.000000e+00, %.preheader463 ]
  %.0401520 = phi double [ %372, %.lr.ph523 ], [ 0.000000e+00, %.preheader463 ]
  %361 = load ptr, ptr %201, align 8, !tbaa !21
  %362 = load i64, ptr %25, align 8, !tbaa !5
  %363 = getelementptr inbounds ptr, ptr %361, i64 %362
  %364 = load ptr, ptr %363, align 8, !tbaa !52
  %365 = getelementptr inbounds double, ptr %364, i64 %.1522
  %366 = load double, ptr %365, align 8, !tbaa !22
  %367 = load ptr, ptr %202, align 8, !tbaa !21
  %368 = getelementptr inbounds double, ptr %367, i64 %.1522
  %369 = load double, ptr %368, align 8, !tbaa !22
  %370 = call double @llvm.fmuladd.f64(double %366, double %369, double %.0398521)
  %371 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %366, ptr noundef %23)
  %372 = fadd double %.0401520, %371
  %373 = add nuw nsw i64 %.1522, 1
  %exitcond579.not = icmp eq i64 %373, %9
  br i1 %exitcond579.not, label %._crit_edge524.loopexit, label %.lr.ph523, !llvm.loop !63

._crit_edge524.loopexit:                          ; preds = %.lr.ph523
  %.pre587 = load i64, ptr %25, align 8, !tbaa !5
  br label %._crit_edge524

._crit_edge524:                                   ; preds = %._crit_edge524.loopexit, %.preheader463
  %374 = phi i64 [ %360, %.preheader463 ], [ %.pre587, %._crit_edge524.loopexit ]
  %.0401.lcssa = phi double [ 0.000000e+00, %.preheader463 ], [ %372, %._crit_edge524.loopexit ]
  %.0398.lcssa = phi double [ 0.000000e+00, %.preheader463 ], [ %370, %._crit_edge524.loopexit ]
  %.not = icmp slt i64 %374, %35
  br i1 %.not, label %384, label %375

375:                                              ; preds = %._crit_edge524
  %376 = load ptr, ptr %202, align 8, !tbaa !21
  %377 = sub nsw i64 %374, %35
  %378 = getelementptr double, ptr %376, i64 %377
  %379 = getelementptr double, ptr %378, i64 %9
  %380 = load double, ptr %379, align 8, !tbaa !22
  %381 = fadd double %.0398.lcssa, %380
  %382 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef 1.000000e+00, ptr noundef %23)
  %383 = fadd double %.0401.lcssa, %382
  %.pre588 = load i64, ptr %25, align 8, !tbaa !5
  br label %384

384:                                              ; preds = %375, %._crit_edge524
  %385 = phi i64 [ %.pre588, %375 ], [ %374, %._crit_edge524 ]
  %.1402 = phi double [ %383, %375 ], [ %.0401.lcssa, %._crit_edge524 ]
  %.1399 = phi double [ %381, %375 ], [ %.0398.lcssa, %._crit_edge524 ]
  %386 = load ptr, ptr %201, align 8, !tbaa !21
  %387 = getelementptr inbounds ptr, ptr %386, i64 %385
  %388 = load ptr, ptr %387, align 8, !tbaa !52
  %389 = getelementptr inbounds double, ptr %388, i64 %9
  %390 = load double, ptr %389, align 8, !tbaa !22
  %391 = fsub double %.1399, %390
  %392 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %.1402, double noundef 1.000000e+00, ptr noundef %23)
  %393 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %392, ptr noundef %23)
  %394 = fdiv double %391, %393
  %395 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %394, ptr noundef %23)
  %396 = fadd double %.1407528, %395
  %397 = load ptr, ptr %209, align 8, !tbaa !21
  %398 = load i64, ptr %25, align 8, !tbaa !5
  %399 = getelementptr inbounds double, ptr %397, i64 %398
  %400 = load double, ptr %399, align 8, !tbaa !22
  %401 = load ptr, ptr %206, align 8, !tbaa !21
  %402 = getelementptr inbounds double, ptr %401, i64 %398
  store double %400, ptr %402, align 8, !tbaa !22
  %403 = add nsw i64 %398, 1
  store i64 %403, ptr %25, align 8, !tbaa !5
  %404 = load i64, ptr %30, align 8, !tbaa !5
  %.not.not449 = icmp slt i64 %403, %404
  br i1 %.not.not449, label %.preheader463, label %._crit_edge529, !llvm.loop !64

._crit_edge529:                                   ; preds = %384, %.critedge
  %.1407.lcssa = phi double [ 0.000000e+00, %.critedge ], [ %396, %384 ]
  %405 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.1407.lcssa, ptr noundef %23)
  %406 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %405, double noundef %.0405)
  br i1 %406, label %407, label %408

407:                                              ; preds = %._crit_edge529
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %27, ptr noundef %23)
  br label %409

408:                                              ; preds = %._crit_edge529
  store i64 0, ptr %27, align 8, !tbaa !5
  br label %409

409:                                              ; preds = %408, %407
  %410 = fmul double %.0406533, 3.300000e-01
  %411 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %405, double noundef %410)
  br i1 %411, label %412, label %413

412:                                              ; preds = %409
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %28, ptr noundef %23)
  br label %414

413:                                              ; preds = %409
  store i64 0, ptr %28, align 8, !tbaa !5
  br label %414

414:                                              ; preds = %413, %412
  %415 = load i64, ptr %27, align 8, !tbaa !5
  %416 = icmp sgt i64 %415, 1
  br i1 %416, label %._crit_edge535, label %417

417:                                              ; preds = %414
  %418 = load i64, ptr %28, align 8, !tbaa !5
  %419 = icmp sgt i64 %418, 1
  %. = select i1 %419, double 1.000000e+01, double 1.410000e+00
  %420 = fmul double %.0403534, %.
  %421 = call noundef double @_ZN11alglib_impl10ae_minrealEddPNS_8ae_stateE(double noundef %420, double noundef 1.000000e+12, ptr noundef %23)
  %422 = add nuw nsw i64 %.0408532, 1
  %423 = load i64, ptr %184, align 8, !tbaa !44
  %.not.not443 = icmp slt i64 %422, %423
  br i1 %.not.not443, label %.preheader465, label %._crit_edge535, !llvm.loop !65

._crit_edge535:                                   ; preds = %417, %414, %._crit_edge500
  %424 = load i64, ptr %29, align 8, !tbaa !5
  %425 = add nsw i64 %424, %35
  store i64 0, ptr %25, align 8, !tbaa !5
  %.not.not451537 = icmp sgt i64 %425, 0
  br i1 %.not.not451537, label %.lr.ph540, label %._crit_edge541

.lr.ph540:                                        ; preds = %._crit_edge535
  %426 = getelementptr inbounds i8, ptr %18, i64 56
  %427 = getelementptr inbounds i8, ptr %18, i64 728
  %428 = getelementptr inbounds i8, ptr %21, i64 56
  %429 = getelementptr inbounds i8, ptr %18, i64 664
  br label %430

430:                                              ; preds = %.lr.ph540, %430
  %storemerge450538 = phi i64 [ 0, %.lr.ph540 ], [ %445, %430 ]
  %431 = load ptr, ptr %426, align 8, !tbaa !21
  %432 = getelementptr inbounds double, ptr %431, i64 %storemerge450538
  %433 = load double, ptr %432, align 8, !tbaa !22
  %434 = fneg double %433
  %435 = fmul double %118, %434
  %436 = load ptr, ptr %427, align 8, !tbaa !21
  %437 = getelementptr inbounds double, ptr %436, i64 %storemerge450538
  %438 = load double, ptr %437, align 8, !tbaa !22
  %439 = fdiv double %435, %438
  %440 = load ptr, ptr %428, align 8, !tbaa !21
  %441 = load ptr, ptr %429, align 8, !tbaa !21
  %442 = getelementptr inbounds i64, ptr %441, i64 %storemerge450538
  %443 = load i64, ptr %442, align 8, !tbaa !5
  %444 = getelementptr inbounds double, ptr %440, i64 %443
  store double %439, ptr %444, align 8, !tbaa !22
  %445 = add nuw nsw i64 %storemerge450538, 1
  store i64 %445, ptr %25, align 8, !tbaa !5
  %exitcond580.not = icmp eq i64 %445, %425
  br i1 %exitcond580.not, label %._crit_edge541, label %430, !llvm.loop !66

._crit_edge541:                                   ; preds = %430, %._crit_edge535
  %446 = getelementptr inbounds i8, ptr %18, i64 8640
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %446, i64 noundef %9, ptr noundef %23)
  br i1 %.not.not476, label %.lr.ph552, label %.preheader.thread.critedge

.lr.ph552:                                        ; preds = %._crit_edge541
  %447 = getelementptr inbounds i8, ptr %18, i64 200
  %448 = getelementptr inbounds i8, ptr %18, i64 136
  %449 = getelementptr inbounds i8, ptr %18, i64 936
  %450 = getelementptr inbounds i8, ptr %18, i64 8696
  %xtraiter633 = and i64 %9, 3
  %451 = icmp ult i64 %9, 4
  %unroll_iter637 = and i64 %9, 9223372036854775804
  %lcmp.mod635.not = icmp eq i64 %xtraiter633, 0
  br label %.lr.ph546

.lr.ph546:                                        ; preds = %._crit_edge547, %.lr.ph552
  %storemerge452550 = phi i64 [ 0, %.lr.ph552 ], [ %491, %._crit_edge547 ]
  %452 = load ptr, ptr %447, align 8, !tbaa !21
  %453 = getelementptr inbounds double, ptr %452, i64 %storemerge452550
  %454 = load double, ptr %453, align 8, !tbaa !22
  %455 = load ptr, ptr %448, align 8, !tbaa !21
  %456 = getelementptr inbounds ptr, ptr %455, i64 %storemerge452550
  %457 = load ptr, ptr %456, align 8, !tbaa !52
  %458 = load ptr, ptr %449, align 8, !tbaa !21
  br i1 %451, label %._crit_edge547.unr-lcssa, label %.lr.ph546.new

.lr.ph546.new:                                    ; preds = %.lr.ph546, %.lr.ph546.new
  %.2544 = phi i64 [ %482, %.lr.ph546.new ], [ 0, %.lr.ph546 ]
  %.2400543 = phi double [ %481, %.lr.ph546.new ], [ %454, %.lr.ph546 ]
  %niter638 = phi i64 [ %niter638.next.3, %.lr.ph546.new ], [ 0, %.lr.ph546 ]
  %459 = getelementptr inbounds double, ptr %457, i64 %.2544
  %460 = load double, ptr %459, align 8, !tbaa !22
  %461 = getelementptr inbounds double, ptr %458, i64 %.2544
  %462 = load double, ptr %461, align 8, !tbaa !22
  %463 = call double @llvm.fmuladd.f64(double %460, double %462, double %.2400543)
  %464 = or disjoint i64 %.2544, 1
  %465 = getelementptr inbounds double, ptr %457, i64 %464
  %466 = load double, ptr %465, align 8, !tbaa !22
  %467 = getelementptr inbounds double, ptr %458, i64 %464
  %468 = load double, ptr %467, align 8, !tbaa !22
  %469 = call double @llvm.fmuladd.f64(double %466, double %468, double %463)
  %470 = or disjoint i64 %.2544, 2
  %471 = getelementptr inbounds double, ptr %457, i64 %470
  %472 = load double, ptr %471, align 8, !tbaa !22
  %473 = getelementptr inbounds double, ptr %458, i64 %470
  %474 = load double, ptr %473, align 8, !tbaa !22
  %475 = call double @llvm.fmuladd.f64(double %472, double %474, double %469)
  %476 = or disjoint i64 %.2544, 3
  %477 = getelementptr inbounds double, ptr %457, i64 %476
  %478 = load double, ptr %477, align 8, !tbaa !22
  %479 = getelementptr inbounds double, ptr %458, i64 %476
  %480 = load double, ptr %479, align 8, !tbaa !22
  %481 = call double @llvm.fmuladd.f64(double %478, double %480, double %475)
  %482 = add nuw nsw i64 %.2544, 4
  %niter638.next.3 = add i64 %niter638, 4
  %niter638.ncmp.3 = icmp eq i64 %niter638.next.3, %unroll_iter637
  br i1 %niter638.ncmp.3, label %._crit_edge547.unr-lcssa, label %.lr.ph546.new, !llvm.loop !67

._crit_edge547.unr-lcssa:                         ; preds = %.lr.ph546.new, %.lr.ph546
  %.lcssa.ph = phi double [ poison, %.lr.ph546 ], [ %481, %.lr.ph546.new ]
  %.2544.unr = phi i64 [ 0, %.lr.ph546 ], [ %482, %.lr.ph546.new ]
  %.2400543.unr = phi double [ %454, %.lr.ph546 ], [ %481, %.lr.ph546.new ]
  br i1 %lcmp.mod635.not, label %._crit_edge547, label %.epil.preheader632

.epil.preheader632:                               ; preds = %._crit_edge547.unr-lcssa, %.epil.preheader632
  %.2544.epil = phi i64 [ %488, %.epil.preheader632 ], [ %.2544.unr, %._crit_edge547.unr-lcssa ]
  %.2400543.epil = phi double [ %487, %.epil.preheader632 ], [ %.2400543.unr, %._crit_edge547.unr-lcssa ]
  %epil.iter634 = phi i64 [ %epil.iter634.next, %.epil.preheader632 ], [ 0, %._crit_edge547.unr-lcssa ]
  %483 = getelementptr inbounds double, ptr %457, i64 %.2544.epil
  %484 = load double, ptr %483, align 8, !tbaa !22
  %485 = getelementptr inbounds double, ptr %458, i64 %.2544.epil
  %486 = load double, ptr %485, align 8, !tbaa !22
  %487 = call double @llvm.fmuladd.f64(double %484, double %486, double %.2400543.epil)
  %488 = add nuw nsw i64 %.2544.epil, 1
  %epil.iter634.next = add i64 %epil.iter634, 1
  %epil.iter634.cmp.not = icmp eq i64 %epil.iter634.next, %xtraiter633
  br i1 %epil.iter634.cmp.not, label %._crit_edge547, label %.epil.preheader632, !llvm.loop !68

._crit_edge547:                                   ; preds = %.epil.preheader632, %._crit_edge547.unr-lcssa
  %.lcssa = phi double [ %.lcssa.ph, %._crit_edge547.unr-lcssa ], [ %487, %.epil.preheader632 ]
  %489 = load ptr, ptr %450, align 8, !tbaa !21
  %490 = getelementptr inbounds double, ptr %489, i64 %storemerge452550
  store double %.lcssa, ptr %490, align 8, !tbaa !22
  %491 = add nuw nsw i64 %storemerge452550, 1
  %exitcond582.not = icmp eq i64 %491, %9
  br i1 %exitcond582.not, label %._crit_edge553, label %.lr.ph546, !llvm.loop !69

._crit_edge553:                                   ; preds = %._crit_edge547
  store i64 %9, ptr %25, align 8, !tbaa !5
  %492 = load i64, ptr %29, align 8, !tbaa !5
  %493 = add nsw i64 %492, %35
  call void @_ZN11alglib_impl11rmatrixgemvElldPKNS_9ae_matrixElllPKNS_9ae_vectorEldPS3_lPNS_8ae_stateE(i64 noundef %9, i64 noundef %493, double noundef -1.000000e+00, ptr noundef nonnull %116, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %18, i64 noundef 0, double noundef 1.000000e+00, ptr noundef nonnull %446, i64 noundef 0, ptr noundef %23)
  store i64 0, ptr %25, align 8, !tbaa !5
  br i1 %.not.not476, label %.lr.ph558, label %._crit_edge566

.lr.ph558:                                        ; preds = %._crit_edge553
  %494 = getelementptr inbounds i8, ptr %18, i64 264
  %495 = getelementptr inbounds i8, ptr %18, i64 936
  %496 = getelementptr inbounds i8, ptr %18, i64 392
  %497 = getelementptr inbounds i8, ptr %18, i64 328
  %498 = getelementptr inbounds i8, ptr %18, i64 456
  %499 = getelementptr inbounds i8, ptr %18, i64 8696
  %500 = getelementptr inbounds i8, ptr %20, i64 56
  br label %504

.preheader462:                                    ; preds = %539
  br i1 %.not.not476, label %.lr.ph561, label %._crit_edge566

.lr.ph561:                                        ; preds = %.preheader462
  %501 = getelementptr inbounds i8, ptr %20, i64 56
  %502 = getelementptr inbounds i8, ptr %7, i64 56
  %xtraiter640 = and i64 %9, 1
  %503 = icmp eq i64 %9, 1
  br i1 %503, label %.preheader.unr-lcssa, label %.lr.ph561.new

.lr.ph561.new:                                    ; preds = %.lr.ph561
  %unroll_iter643 = and i64 %9, 9223372036854775806
  br label %562

504:                                              ; preds = %.lr.ph558, %539
  %storemerge454556 = phi i64 [ 0, %.lr.ph558 ], [ %541, %539 ]
  %505 = load ptr, ptr %494, align 8, !tbaa !21
  %506 = getelementptr inbounds i8, ptr %505, i64 %storemerge454556
  %507 = load i8, ptr %506, align 1, !tbaa !56, !range !57, !noundef !58
  %508 = trunc nuw i8 %507 to i1
  br i1 %508, label %509, label %517

509:                                              ; preds = %504
  %510 = load ptr, ptr %495, align 8, !tbaa !21
  %511 = getelementptr inbounds double, ptr %510, i64 %storemerge454556
  %512 = load double, ptr %511, align 8, !tbaa !22
  %513 = load ptr, ptr %496, align 8, !tbaa !21
  %514 = getelementptr inbounds double, ptr %513, i64 %storemerge454556
  %515 = load double, ptr %514, align 8, !tbaa !22
  %516 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %512, double noundef %515)
  br i1 %516, label %531, label %._crit_edge589

._crit_edge589:                                   ; preds = %509
  %.pre590 = load i64, ptr %25, align 8, !tbaa !5
  br label %517

517:                                              ; preds = %._crit_edge589, %504
  %518 = phi i64 [ %.pre590, %._crit_edge589 ], [ %storemerge454556, %504 ]
  %519 = load ptr, ptr %497, align 8, !tbaa !21
  %520 = getelementptr inbounds i8, ptr %519, i64 %518
  %521 = load i8, ptr %520, align 1, !tbaa !56, !range !57, !noundef !58
  %522 = trunc nuw i8 %521 to i1
  br i1 %522, label %523, label %539

523:                                              ; preds = %517
  %524 = load ptr, ptr %495, align 8, !tbaa !21
  %525 = getelementptr inbounds double, ptr %524, i64 %518
  %526 = load double, ptr %525, align 8, !tbaa !22
  %527 = load ptr, ptr %498, align 8, !tbaa !21
  %528 = getelementptr inbounds double, ptr %527, i64 %518
  %529 = load double, ptr %528, align 8, !tbaa !22
  %530 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %526, double noundef %529)
  br i1 %530, label %531, label %._crit_edge591

._crit_edge591:                                   ; preds = %523
  %.pre592 = load i64, ptr %25, align 8, !tbaa !5
  br label %539

531:                                              ; preds = %523, %509
  %532 = load ptr, ptr %499, align 8, !tbaa !21
  %533 = load i64, ptr %25, align 8, !tbaa !5
  %534 = getelementptr inbounds double, ptr %532, i64 %533
  %535 = load double, ptr %534, align 8, !tbaa !22
  %536 = fneg double %535
  %537 = load ptr, ptr %500, align 8, !tbaa !21
  %538 = getelementptr inbounds double, ptr %537, i64 %533
  store double %536, ptr %538, align 8, !tbaa !22
  br label %539

539:                                              ; preds = %._crit_edge591, %517, %531
  %540 = phi i64 [ %.pre592, %._crit_edge591 ], [ %518, %517 ], [ %533, %531 ]
  %541 = add nsw i64 %540, 1
  store i64 %541, ptr %25, align 8, !tbaa !5
  %.not.not455 = icmp slt i64 %541, %9
  br i1 %.not.not455, label %504, label %.preheader462, !llvm.loop !70

.preheader.thread.critedge:                       ; preds = %._crit_edge541
  store i64 0, ptr %25, align 8, !tbaa !5
  %542 = load i64, ptr %29, align 8, !tbaa !5
  %543 = add nsw i64 %542, %35
  call void @_ZN11alglib_impl11rmatrixgemvElldPKNS_9ae_matrixElllPKNS_9ae_vectorEldPS3_lPNS_8ae_stateE(i64 noundef %9, i64 noundef %543, double noundef -1.000000e+00, ptr noundef nonnull %116, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %18, i64 noundef 0, double noundef 1.000000e+00, ptr noundef nonnull %446, i64 noundef 0, ptr noundef %23)
  store i64 0, ptr %25, align 8, !tbaa !5
  br label %._crit_edge566

.preheader.unr-lcssa:                             ; preds = %562, %.lr.ph561
  %storemerge456560.unr = phi i64 [ 0, %.lr.ph561 ], [ %580, %562 ]
  %lcmp.mod642.not = icmp eq i64 %xtraiter640, 0
  br i1 %lcmp.mod642.not, label %.preheader, label %.preheader.epilog-lcssa

.preheader.epilog-lcssa:                          ; preds = %.preheader.unr-lcssa
  %544 = load ptr, ptr %501, align 8, !tbaa !21
  %545 = getelementptr inbounds double, ptr %544, i64 %storemerge456560.unr
  %546 = load double, ptr %545, align 8, !tbaa !22
  %547 = fmul double %118, %546
  %548 = load ptr, ptr %502, align 8, !tbaa !21
  %549 = getelementptr inbounds double, ptr %548, i64 %storemerge456560.unr
  %550 = load double, ptr %549, align 8, !tbaa !22
  %551 = fdiv double %547, %550
  store double %551, ptr %545, align 8, !tbaa !22
  br label %.preheader

.preheader:                                       ; preds = %.preheader.unr-lcssa, %.preheader.epilog-lcssa
  store i64 0, ptr %25, align 8, !tbaa !5
  br i1 %.not.not476, label %.lr.ph565, label %._crit_edge566

.lr.ph565:                                        ; preds = %.preheader
  %552 = getelementptr inbounds i8, ptr %7, i64 56
  %553 = getelementptr inbounds i8, ptr %18, i64 936
  %554 = getelementptr inbounds i8, ptr %8, i64 56
  %555 = getelementptr inbounds i8, ptr %19, i64 56
  %556 = getelementptr inbounds i8, ptr %18, i64 264
  %557 = getelementptr inbounds i8, ptr %5, i64 56
  %558 = getelementptr inbounds i8, ptr %18, i64 392
  %559 = getelementptr inbounds i8, ptr %18, i64 328
  %560 = getelementptr inbounds i8, ptr %6, i64 56
  %561 = getelementptr inbounds i8, ptr %18, i64 456
  br label %581

562:                                              ; preds = %562, %.lr.ph561.new
  %storemerge456560 = phi i64 [ 0, %.lr.ph561.new ], [ %580, %562 ]
  %niter644 = phi i64 [ 0, %.lr.ph561.new ], [ %niter644.next.1, %562 ]
  %563 = load ptr, ptr %501, align 8, !tbaa !21
  %564 = getelementptr inbounds double, ptr %563, i64 %storemerge456560
  %565 = load double, ptr %564, align 8, !tbaa !22
  %566 = fmul double %118, %565
  %567 = load ptr, ptr %502, align 8, !tbaa !21
  %568 = getelementptr inbounds double, ptr %567, i64 %storemerge456560
  %569 = load double, ptr %568, align 8, !tbaa !22
  %570 = fdiv double %566, %569
  store double %570, ptr %564, align 8, !tbaa !22
  %571 = or disjoint i64 %storemerge456560, 1
  %572 = load ptr, ptr %501, align 8, !tbaa !21
  %573 = getelementptr inbounds double, ptr %572, i64 %571
  %574 = load double, ptr %573, align 8, !tbaa !22
  %575 = fmul double %118, %574
  %576 = load ptr, ptr %502, align 8, !tbaa !21
  %577 = getelementptr inbounds double, ptr %576, i64 %571
  %578 = load double, ptr %577, align 8, !tbaa !22
  %579 = fdiv double %575, %578
  store double %579, ptr %573, align 8, !tbaa !22
  %580 = add nuw nsw i64 %storemerge456560, 2
  %niter644.next.1 = add i64 %niter644, 2
  %niter644.ncmp.1 = icmp eq i64 %niter644.next.1, %unroll_iter643
  br i1 %niter644.ncmp.1, label %.preheader.unr-lcssa, label %562, !llvm.loop !71

581:                                              ; preds = %.lr.ph565, %660
  %storemerge458564 = phi i64 [ 0, %.lr.ph565 ], [ %662, %660 ]
  %582 = load ptr, ptr %552, align 8, !tbaa !21
  %583 = getelementptr inbounds double, ptr %582, i64 %storemerge458564
  %584 = load double, ptr %583, align 8, !tbaa !22
  %585 = load ptr, ptr %553, align 8, !tbaa !21
  %586 = getelementptr inbounds double, ptr %585, i64 %storemerge458564
  %587 = load double, ptr %586, align 8, !tbaa !22
  %588 = load ptr, ptr %554, align 8, !tbaa !21
  %589 = getelementptr inbounds double, ptr %588, i64 %storemerge458564
  %590 = load double, ptr %589, align 8, !tbaa !22
  %591 = call double @llvm.fmuladd.f64(double %584, double %587, double %590)
  %592 = load ptr, ptr %555, align 8, !tbaa !21
  %593 = getelementptr inbounds double, ptr %592, i64 %storemerge458564
  store double %591, ptr %593, align 8, !tbaa !22
  %594 = load ptr, ptr %556, align 8, !tbaa !21
  %595 = getelementptr inbounds i8, ptr %594, i64 %storemerge458564
  %596 = load i8, ptr %595, align 1, !tbaa !56, !range !57, !noundef !58
  %597 = trunc nuw i8 %596 to i1
  br i1 %597, label %598, label %626

598:                                              ; preds = %581
  %599 = load ptr, ptr %555, align 8, !tbaa !21
  %600 = getelementptr inbounds double, ptr %599, i64 %storemerge458564
  %601 = load double, ptr %600, align 8, !tbaa !22
  %602 = load ptr, ptr %557, align 8, !tbaa !21
  %603 = getelementptr inbounds double, ptr %602, i64 %storemerge458564
  %604 = load double, ptr %603, align 8, !tbaa !22
  %605 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %601, double noundef %604)
  %.pre593 = load i64, ptr %25, align 8, !tbaa !5
  br i1 %605, label %606, label %612

606:                                              ; preds = %598
  %607 = load ptr, ptr %557, align 8, !tbaa !21
  %608 = getelementptr inbounds double, ptr %607, i64 %.pre593
  %609 = load double, ptr %608, align 8, !tbaa !22
  %610 = load ptr, ptr %555, align 8, !tbaa !21
  %611 = getelementptr inbounds double, ptr %610, i64 %.pre593
  store double %609, ptr %611, align 8, !tbaa !22
  br label %612

612:                                              ; preds = %606, %598
  %613 = load ptr, ptr %553, align 8, !tbaa !21
  %614 = getelementptr inbounds double, ptr %613, i64 %.pre593
  %615 = load double, ptr %614, align 8, !tbaa !22
  %616 = load ptr, ptr %558, align 8, !tbaa !21
  %617 = getelementptr inbounds double, ptr %616, i64 %.pre593
  %618 = load double, ptr %617, align 8, !tbaa !22
  %619 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %615, double noundef %618)
  %.pre594 = load i64, ptr %25, align 8, !tbaa !5
  br i1 %619, label %620, label %626

620:                                              ; preds = %612
  %621 = load ptr, ptr %557, align 8, !tbaa !21
  %622 = getelementptr inbounds double, ptr %621, i64 %.pre594
  %623 = load double, ptr %622, align 8, !tbaa !22
  %624 = load ptr, ptr %555, align 8, !tbaa !21
  %625 = getelementptr inbounds double, ptr %624, i64 %.pre594
  store double %623, ptr %625, align 8, !tbaa !22
  br label %626

626:                                              ; preds = %612, %620, %581
  %627 = phi i64 [ %.pre594, %612 ], [ %.pre594, %620 ], [ %storemerge458564, %581 ]
  %628 = load ptr, ptr %559, align 8, !tbaa !21
  %629 = getelementptr inbounds i8, ptr %628, i64 %627
  %630 = load i8, ptr %629, align 1, !tbaa !56, !range !57, !noundef !58
  %631 = trunc nuw i8 %630 to i1
  br i1 %631, label %632, label %660

632:                                              ; preds = %626
  %633 = load ptr, ptr %555, align 8, !tbaa !21
  %634 = getelementptr inbounds double, ptr %633, i64 %627
  %635 = load double, ptr %634, align 8, !tbaa !22
  %636 = load ptr, ptr %560, align 8, !tbaa !21
  %637 = getelementptr inbounds double, ptr %636, i64 %627
  %638 = load double, ptr %637, align 8, !tbaa !22
  %639 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %635, double noundef %638)
  %.pre595 = load i64, ptr %25, align 8, !tbaa !5
  br i1 %639, label %640, label %646

640:                                              ; preds = %632
  %641 = load ptr, ptr %560, align 8, !tbaa !21
  %642 = getelementptr inbounds double, ptr %641, i64 %.pre595
  %643 = load double, ptr %642, align 8, !tbaa !22
  %644 = load ptr, ptr %555, align 8, !tbaa !21
  %645 = getelementptr inbounds double, ptr %644, i64 %.pre595
  store double %643, ptr %645, align 8, !tbaa !22
  br label %646

646:                                              ; preds = %640, %632
  %647 = load ptr, ptr %553, align 8, !tbaa !21
  %648 = getelementptr inbounds double, ptr %647, i64 %.pre595
  %649 = load double, ptr %648, align 8, !tbaa !22
  %650 = load ptr, ptr %561, align 8, !tbaa !21
  %651 = getelementptr inbounds double, ptr %650, i64 %.pre595
  %652 = load double, ptr %651, align 8, !tbaa !22
  %653 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %649, double noundef %652)
  %.pre596 = load i64, ptr %25, align 8, !tbaa !5
  br i1 %653, label %654, label %660

654:                                              ; preds = %646
  %655 = load ptr, ptr %560, align 8, !tbaa !21
  %656 = getelementptr inbounds double, ptr %655, i64 %.pre596
  %657 = load double, ptr %656, align 8, !tbaa !22
  %658 = load ptr, ptr %555, align 8, !tbaa !21
  %659 = getelementptr inbounds double, ptr %658, i64 %.pre596
  store double %657, ptr %659, align 8, !tbaa !22
  br label %660

660:                                              ; preds = %626, %654, %646
  %661 = phi i64 [ %627, %626 ], [ %.pre596, %654 ], [ %.pre596, %646 ]
  %662 = add nsw i64 %661, 1
  store i64 %662, ptr %25, align 8, !tbaa !5
  %.not.not459 = icmp slt i64 %662, %9
  br i1 %.not.not459, label %581, label %._crit_edge566, !llvm.loop !72

._crit_edge566:                                   ; preds = %660, %._crit_edge553, %.preheader462, %.preheader.thread.critedge, %.preheader
  store i64 2, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  ret void
}

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL40qpdenseaulsolver_selectinitialworkingsetEPKNS_9ae_matrixElS2_llPNS_9ae_vectorEPS0_PlPbPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL32qpdenseaulsolver_generateexmodelEPKNS_9ae_matrixEPKNS_9ae_vectorElS5_S5_S5_S5_S2_llS5_dPS0_PS3_S7_S7_S6_PNS_8ae_stateE(ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL42qpdenseaulsolver_updatelagrangemultipliersEPKNS_9ae_matrixEPKNS_9ae_vectorElS5_S5_S5_S5_S2_llS5_PS3_PNS_17qpdenseaulbuffersEPNS_8ae_stateE(ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 16}
!10 = !{!"_ZTSN11alglib_impl18qpdenseaulsettingsE", !11, i64 0, !6, i64 8, !11, i64 16}
!11 = !{!"double", !7, i64 0}
!12 = !{!10, !11, i64 0}
!13 = !{!14, !6, i64 320}
!14 = !{!"_ZTSN11alglib_impl12sparsematrixE", !15, i64 0, !15, i64 64, !15, i64 128, !15, i64 192, !15, i64 256, !6, i64 320, !6, i64 328, !6, i64 336, !6, i64 344, !6, i64 352, !6, i64 360}
!15 = !{!"_ZTSN11alglib_impl9ae_vectorE", !6, i64 0, !6, i64 8, !16, i64 16, !17, i64 24, !7, i64 56}
!16 = !{!"bool", !7, i64 0}
!17 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !18, i64 0, !18, i64 8, !18, i64 16, !18, i64 24}
!18 = !{!"any pointer", !7, i64 0}
!19 = !{!14, !6, i64 328}
!20 = !{!14, !6, i64 336}
!21 = !{!7, !7, i64 0}
!22 = !{!11, !11, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.unroll.disable"}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = distinct !{!27, !26}
!28 = distinct !{!28, !24}
!29 = !{!30, !6, i64 11592}
!30 = !{!"_ZTSN11alglib_impl17qpdenseaulbuffersE", !15, i64 0, !31, i64 64, !15, i64 144, !15, i64 208, !15, i64 272, !15, i64 336, !15, i64 400, !15, i64 464, !31, i64 528, !15, i64 608, !15, i64 672, !31, i64 736, !15, i64 816, !15, i64 880, !15, i64 944, !15, i64 1008, !15, i64 1072, !15, i64 1136, !32, i64 1200, !33, i64 1272, !15, i64 8576, !15, i64 8640, !15, i64 8704, !31, i64 8768, !15, i64 8848, !15, i64 8912, !15, i64 8976, !37, i64 9040, !14, i64 10728, !31, i64 11096, !15, i64 11176, !15, i64 11240, !15, i64 11304, !15, i64 11368, !15, i64 11432, !15, i64 11496, !6, i64 11560, !6, i64 11568, !6, i64 11576, !6, i64 11584, !6, i64 11592, !6, i64 11600, !6, i64 11608, !6, i64 11616}
!31 = !{!"_ZTSN11alglib_impl9ae_matrixE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !16, i64 32, !17, i64 40, !7, i64 72}
!32 = !{!"_ZTSN11alglib_impl11qqpsettingsE", !11, i64 0, !11, i64 8, !11, i64 16, !6, i64 24, !16, i64 32, !16, i64 33, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64}
!33 = !{!"_ZTSN11alglib_impl10qqpbuffersE", !6, i64 0, !6, i64 8, !31, i64 16, !14, i64 96, !16, i64 464, !11, i64 472, !11, i64 480, !11, i64 488, !15, i64 496, !15, i64 560, !15, i64 624, !15, i64 688, !15, i64 752, !15, i64 816, !15, i64 880, !15, i64 944, !15, i64 1008, !15, i64 1072, !15, i64 1136, !15, i64 1200, !15, i64 1264, !34, i64 1328, !15, i64 5672, !6, i64 5736, !6, i64 5744, !31, i64 5752, !14, i64 5832, !15, i64 6200, !15, i64 6264, !15, i64 6328, !15, i64 6392, !15, i64 6456, !15, i64 6520, !15, i64 6584, !15, i64 6648, !15, i64 6712, !36, i64 6776, !6, i64 7272, !6, i64 7280, !6, i64 7288, !6, i64 7296}
!34 = !{!"_ZTSN11alglib_impl10sactivesetE", !6, i64 0, !6, i64 8, !15, i64 16, !16, i64 80, !15, i64 88, !15, i64 152, !15, i64 216, !16, i64 280, !31, i64 288, !31, i64 368, !31, i64 448, !6, i64 528, !15, i64 536, !6, i64 600, !6, i64 608, !16, i64 616, !16, i64 617, !15, i64 624, !15, i64 688, !15, i64 752, !15, i64 816, !31, i64 880, !6, i64 960, !6, i64 968, !15, i64 976, !15, i64 1040, !15, i64 1104, !15, i64 1168, !15, i64 1232, !15, i64 1296, !35, i64 1360, !15, i64 3000, !15, i64 3064, !15, i64 3128, !31, i64 3192, !15, i64 3272, !15, i64 3336, !15, i64 3400, !31, i64 3464, !31, i64 3544, !15, i64 3624, !15, i64 3688, !15, i64 3752, !31, i64 3816, !15, i64 3896, !15, i64 3960, !15, i64 4024, !15, i64 4088, !15, i64 4152, !15, i64 4216, !15, i64 4280}
!35 = !{!"_ZTSN11alglib_impl11snnlssolverE", !6, i64 0, !6, i64 8, !6, i64 16, !31, i64 24, !15, i64 104, !15, i64 168, !11, i64 232, !6, i64 240, !15, i64 248, !15, i64 312, !31, i64 376, !31, i64 456, !31, i64 536, !15, i64 616, !15, i64 680, !15, i64 744, !15, i64 808, !15, i64 872, !15, i64 936, !15, i64 1000, !15, i64 1064, !15, i64 1128, !15, i64 1192, !15, i64 1256, !15, i64 1320, !15, i64 1384, !15, i64 1448, !15, i64 1512, !15, i64 1576}
!36 = !{!"_ZTSN11alglib_impl13sparsebuffersE", !15, i64 0, !15, i64 64, !14, i64 128}
!37 = !{!"_ZTSN11alglib_impl20convexquadraticmodelE", !6, i64 0, !6, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !31, i64 40, !31, i64 120, !15, i64 200, !15, i64 264, !15, i64 328, !15, i64 392, !15, i64 456, !31, i64 520, !31, i64 600, !15, i64 680, !15, i64 744, !15, i64 808, !11, i64 872, !11, i64 880, !15, i64 888, !15, i64 952, !6, i64 1016, !6, i64 1024, !31, i64 1032, !31, i64 1112, !31, i64 1192, !15, i64 1272, !15, i64 1336, !11, i64 1400, !15, i64 1408, !15, i64 1472, !15, i64 1536, !31, i64 1600, !16, i64 1680, !16, i64 1681, !16, i64 1682, !16, i64 1683}
!38 = distinct !{!38, !26}
!39 = distinct !{!39, !26}
!40 = distinct !{!40, !26}
!41 = distinct !{!41, !24}
!42 = distinct !{!42, !26}
!43 = distinct !{!43, !26}
!44 = !{!10, !6, i64 8}
!45 = !{!30, !6, i64 736}
!46 = !{!30, !6, i64 744}
!47 = !{!30, !6, i64 1224}
!48 = !{!30, !11, i64 1216}
!49 = !{!30, !16, i64 1233}
!50 = !{!30, !6, i64 11576}
!51 = !{!30, !6, i64 8560}
!52 = !{!18, !18, i64 0}
!53 = distinct !{!53, !26}
!54 = distinct !{!54, !26}
!55 = distinct !{!55, !26}
!56 = !{!16, !16, i64 0}
!57 = !{i8 0, i8 2}
!58 = !{}
!59 = distinct !{!59, !26}
!60 = !{!30, !6, i64 11600}
!61 = !{!30, !6, i64 11608}
!62 = distinct !{!62, !26}
!63 = distinct !{!63, !26}
!64 = distinct !{!64, !26}
!65 = distinct !{!65, !26}
!66 = distinct !{!66, !26}
!67 = distinct !{!67, !26}
!68 = distinct !{!68, !24}
!69 = distinct !{!69, !26}
!70 = distinct !{!70, !26}
!71 = distinct !{!71, !26}
!72 = distinct !{!72, !26}


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