; 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::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::ecqpstate" = type { %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::spcholanalysis", %"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::fblsgmresstate", i64, i64, i8, i8, %"struct.alglib_impl::stimer", %"struct.alglib_impl::stimer", %"struct.alglib_impl::stimer", %"struct.alglib_impl::stimer", %"struct.alglib_impl::stimer" }
%"struct.alglib_impl::spcholanalysis" = type { i64, i64, i64, i8, i64, double, double, double, double, %"struct.alglib_impl::ae_vector", i8, i8, i8, i8, i8, %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", 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_vector", %"struct.alglib_impl::ae_vector", i8, i8, %"struct.alglib_impl::spcholadj", %"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_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"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::amdbuffer", %"struct.alglib_impl::priorityamdbuffers", %"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::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::spcholadj" = 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", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ae_nxpool" = type { i64, i64, i64, i64, %"struct.alglib_impl::ae_dyn_block", %"struct.alglib_impl::ae_lock", %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_lock" = type { ptr, %"struct.alglib_impl::ae_dyn_block", i8 }
%"struct.alglib_impl::amdbuffer" = type { i64, i8, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::amdllmatrix", %"struct.alglib_impl::amdvertexset", %"struct.alglib_impl::niset", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::niset", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::amdllmatrix" = type { i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64 }
%"struct.alglib_impl::amdvertexset" = type { i64, i8, 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::ae_vector" }
%"struct.alglib_impl::amdknset" = type { 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", i64, i64, i64 }
%"struct.alglib_impl::niset" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64 }
%"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 }
%"struct.alglib_impl::priorityamdbuffers" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::amdbuffer", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix" }
%"struct.alglib_impl::fblsgmresstate" = 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_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, double, double, double, double, i64, i64, double, %"struct.alglib_impl::rcommstate" }
%"struct.alglib_impl::rcommstate" = type { i32, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::stimer" = type { i64, i64, i8 }

@.str.212 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.612 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.675 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.676 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.677 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.678 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.679 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.680 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.681 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.682 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.683 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.684 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.685 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.686 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.687 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.688 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.689 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.690 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.691 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.692 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.693 = external hidden unnamed_addr constant [33 x i8], align 1
@_ZN11alglib_implL20ecqpsolver_mupromoteE = external hidden global double, align 8
@.str.694 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.695 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.696 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.697 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.698 = external hidden unnamed_addr constant [49 x i8], align 1

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef, ...) #1

declare noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef) #1

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl9ecqpsolveEPNS_9ecqpstateElPKNS_12sparsematrixEPKNS_9ae_vectorES4_S7_lPS5_S8_PlPNS_8ae_stateE(ptr noundef %0, i64 noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, i64 noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10) #2 {
  %12 = alloca ptr, align 8
  %13 = alloca i64, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i64, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %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 double, align 8
  %31 = alloca double, align 8
  %32 = alloca i64, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca i64, align 8
  store ptr %0, ptr %12, align 8, !tbaa !5
  store i64 %1, ptr %13, align 8, !tbaa !9
  store ptr %2, ptr %14, align 8, !tbaa !5
  store ptr %3, ptr %15, align 8, !tbaa !5
  store ptr %4, ptr %16, align 8, !tbaa !5
  store ptr %5, ptr %17, align 8, !tbaa !5
  store i64 %6, ptr %18, align 8, !tbaa !9
  store ptr %7, ptr %19, align 8, !tbaa !5
  store ptr %8, ptr %20, align 8, !tbaa !5
  store ptr %9, ptr %21, align 8, !tbaa !5
  store ptr %10, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  %39 = load ptr, ptr %21, align 8, !tbaa !5
  store i64 0, ptr %39, align 8, !tbaa !9
  %40 = load i64, ptr %13, align 8, !tbaa !9
  %41 = icmp sge i64 %40, 1
  %42 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %41, ptr noundef @.str.681, ptr noundef %42)
  %43 = load ptr, ptr %15, align 8, !tbaa !5
  %44 = load i64, ptr %13, align 8, !tbaa !9
  %45 = load ptr, ptr %22, align 8, !tbaa !5
  %46 = call noundef zeroext i1 @_ZN11alglib_impl14isfinitevectorEPKNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %43, i64 noundef %44, ptr noundef %45)
  %47 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %46, ptr noundef @.str.682, ptr noundef %47)
  %48 = load i64, ptr %18, align 8, !tbaa !9
  %49 = icmp sge i64 %48, 0
  %50 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %49, ptr noundef @.str.683, ptr noundef %50)
  %51 = load i64, ptr %18, align 8, !tbaa !9
  %52 = icmp eq i64 %51, 0
  br i1 %52, label %58, label %53

53:                                               ; preds = %11
  %54 = load ptr, ptr %16, align 8, !tbaa !5
  %55 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %54, i32 0, i32 5
  %56 = load i64, ptr %55, align 8, !tbaa !11
  %57 = icmp eq i64 %56, 1
  br label %58

58:                                               ; preds = %53, %11
  %59 = phi i1 [ true, %11 ], [ %57, %53 ]
  %60 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %59, ptr noundef @.str.684, ptr noundef %60)
  %61 = load i64, ptr %18, align 8, !tbaa !9
  %62 = icmp eq i64 %61, 0
  br i1 %62, label %77, label %63

63:                                               ; preds = %58
  %64 = load ptr, ptr %16, align 8, !tbaa !5
  %65 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %64, i32 0, i32 6
  %66 = load i64, ptr %65, align 8, !tbaa !16
  %67 = load i64, ptr %18, align 8, !tbaa !9
  %68 = icmp eq i64 %66, %67
  br i1 %68, label %69, label %75

69:                                               ; preds = %63
  %70 = load ptr, ptr %16, align 8, !tbaa !5
  %71 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %70, i32 0, i32 7
  %72 = load i64, ptr %71, align 8, !tbaa !17
  %73 = load i64, ptr %13, align 8, !tbaa !9
  %74 = icmp eq i64 %72, %73
  br label %75

75:                                               ; preds = %69, %63
  %76 = phi i1 [ false, %63 ], [ %74, %69 ]
  br label %77

77:                                               ; preds = %75, %58
  %78 = phi i1 [ true, %58 ], [ %76, %75 ]
  %79 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %78, ptr noundef @.str.685, ptr noundef %79)
  %80 = load ptr, ptr %17, align 8, !tbaa !5
  %81 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %80, i32 0, i32 0
  %82 = load i64, ptr %81, align 8, !tbaa !18
  %83 = load i64, ptr %18, align 8, !tbaa !9
  %84 = icmp sge i64 %82, %83
  %85 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %84, ptr noundef @.str.686, ptr noundef %85)
  store i64 0, ptr %23, align 8, !tbaa !9
  %86 = load i64, ptr %18, align 8, !tbaa !9
  %87 = icmp sgt i64 %86, 0
  br i1 %87, label %88, label %96

88:                                               ; preds = %77
  %89 = load ptr, ptr %16, align 8, !tbaa !5
  %90 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %89, i32 0, i32 2
  %91 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %90, i32 0, i32 4
  %92 = load ptr, ptr %91, align 8, !tbaa !19
  %93 = load i64, ptr %18, align 8, !tbaa !9
  %94 = getelementptr inbounds i64, ptr %92, i64 %93
  %95 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %95, ptr %23, align 8, !tbaa !9
  br label %96

96:                                               ; preds = %88, %77
  %97 = load i64, ptr %13, align 8, !tbaa !9
  %98 = load i64, ptr %18, align 8, !tbaa !9
  %99 = add nsw i64 %97, %98
  store i64 %99, ptr %24, align 8, !tbaa !9
  %100 = load ptr, ptr %12, align 8, !tbaa !5
  %101 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %100, i32 0, i32 9
  store i64 0, ptr %101, align 8, !tbaa !20
  %102 = load ptr, ptr %12, align 8, !tbaa !5
  %103 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %102, i32 0, i32 10
  store i64 0, ptr %103, align 8, !tbaa !38
  %104 = call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef @.str.687)
  %105 = load ptr, ptr %12, align 8, !tbaa !5
  %106 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %105, i32 0, i32 11
  %107 = zext i1 %104 to i8
  store i8 %107, ptr %106, align 8, !tbaa !39
  %108 = load ptr, ptr %12, align 8, !tbaa !5
  %109 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %108, i32 0, i32 11
  %110 = load i8, ptr %109, align 8, !tbaa !39, !range !40, !noundef !41
  %111 = trunc i8 %110 to i1
  br i1 %111, label %114, label %112

112:                                              ; preds = %96
  %113 = call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef @.str.688)
  br label %114

114:                                              ; preds = %112, %96
  %115 = phi i1 [ true, %96 ], [ %113, %112 ]
  %116 = load ptr, ptr %12, align 8, !tbaa !5
  %117 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %116, i32 0, i32 12
  %118 = zext i1 %115 to i8
  store i8 %118, ptr %117, align 1, !tbaa !42
  %119 = load ptr, ptr %12, align 8, !tbaa !5
  %120 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %119, i32 0, i32 12
  %121 = load i8, ptr %120, align 1, !tbaa !42, !range !40, !noundef !41
  %122 = trunc i8 %121 to i1
  br i1 %122, label %123, label %142

123:                                              ; preds = %114
  %124 = load ptr, ptr %12, align 8, !tbaa !5
  %125 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %124, i32 0, i32 13
  %126 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef %125, ptr noundef %126)
  %127 = load ptr, ptr %12, align 8, !tbaa !5
  %128 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %127, i32 0, i32 14
  %129 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef %128, ptr noundef %129)
  %130 = load ptr, ptr %12, align 8, !tbaa !5
  %131 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %130, i32 0, i32 15
  %132 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef %131, ptr noundef %132)
  %133 = load ptr, ptr %12, align 8, !tbaa !5
  %134 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %133, i32 0, i32 16
  %135 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef %134, ptr noundef %135)
  %136 = load ptr, ptr %12, align 8, !tbaa !5
  %137 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %136, i32 0, i32 17
  %138 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef %137, ptr noundef %138)
  %139 = load ptr, ptr %12, align 8, !tbaa !5
  %140 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %139, i32 0, i32 13
  %141 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl11stimerstartEPNS_6stimerEPNS_8ae_stateE(ptr noundef %140, ptr noundef %141)
  br label %142

142:                                              ; preds = %123, %114
  %143 = load ptr, ptr %12, align 8, !tbaa !5
  %144 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %143, i32 0, i32 11
  %145 = load i8, ptr %144, align 8, !tbaa !39, !range !40, !noundef !41
  %146 = trunc i8 %145 to i1
  br i1 %146, label %152, label %147

147:                                              ; preds = %142
  %148 = load ptr, ptr %12, align 8, !tbaa !5
  %149 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %148, i32 0, i32 12
  %150 = load i8, ptr %149, align 1, !tbaa !42, !range !40, !noundef !41
  %151 = trunc i8 %150 to i1
  br i1 %151, label %152, label %153

152:                                              ; preds = %147, %142
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.612)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.212)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.689)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.212)
  br label %153

153:                                              ; preds = %152, %147
  %154 = load i64, ptr %24, align 8, !tbaa !9
  %155 = load ptr, ptr %12, align 8, !tbaa !5
  %156 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %155, i32 0, i32 3
  %157 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %154, ptr noundef %156, ptr noundef %157)
  %158 = load ptr, ptr %12, align 8, !tbaa !5
  %159 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %158, i32 0, i32 0
  %160 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %159, i32 0, i32 5
  store i64 1, ptr %160, align 8, !tbaa !43
  %161 = load i64, ptr %24, align 8, !tbaa !9
  %162 = load ptr, ptr %12, align 8, !tbaa !5
  %163 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %162, i32 0, i32 0
  %164 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %163, i32 0, i32 6
  store i64 %161, ptr %164, align 8, !tbaa !44
  %165 = load i64, ptr %24, align 8, !tbaa !9
  %166 = load ptr, ptr %12, align 8, !tbaa !5
  %167 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %166, i32 0, i32 0
  %168 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %167, i32 0, i32 7
  store i64 %165, ptr %168, align 8, !tbaa !45
  %169 = load i64, ptr %24, align 8, !tbaa !9
  %170 = add nsw i64 %169, 1
  %171 = load ptr, ptr %12, align 8, !tbaa !5
  %172 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %171, i32 0, i32 0
  %173 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %172, i32 0, i32 2
  %174 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %170, ptr noundef %173, ptr noundef %174)
  %175 = load ptr, ptr %14, align 8, !tbaa !5
  %176 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %175, i32 0, i32 5
  %177 = load i64, ptr %176, align 8, !tbaa !11
  %178 = icmp eq i64 %177, 1
  %179 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %178, ptr noundef @.str.690, ptr noundef %179)
  %180 = load ptr, ptr %14, align 8, !tbaa !5
  %181 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %180, i32 0, i32 6
  %182 = load i64, ptr %181, align 8, !tbaa !16
  %183 = load i64, ptr %13, align 8, !tbaa !9
  %184 = icmp eq i64 %182, %183
  %185 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %184, ptr noundef @.str.691, ptr noundef %185)
  %186 = load ptr, ptr %14, align 8, !tbaa !5
  %187 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %186, i32 0, i32 7
  %188 = load i64, ptr %187, align 8, !tbaa !17
  %189 = load i64, ptr %13, align 8, !tbaa !9
  %190 = icmp eq i64 %188, %189
  %191 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %190, ptr noundef @.str.691, ptr noundef %191)
  %192 = load ptr, ptr %14, align 8, !tbaa !5
  %193 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %192, i32 0, i32 2
  %194 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %193, i32 0, i32 4
  %195 = load ptr, ptr %194, align 8, !tbaa !19
  %196 = load i64, ptr %13, align 8, !tbaa !9
  %197 = getelementptr inbounds i64, ptr %195, i64 %196
  %198 = load i64, ptr %197, align 8, !tbaa !9
  %199 = load i64, ptr %13, align 8, !tbaa !9
  %200 = add nsw i64 %198, %199
  %201 = load i64, ptr %23, align 8, !tbaa !9
  %202 = add nsw i64 %200, %201
  %203 = load i64, ptr %13, align 8, !tbaa !9
  %204 = add nsw i64 %202, %203
  %205 = load ptr, ptr %12, align 8, !tbaa !5
  %206 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %205, i32 0, i32 0
  %207 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %206, i32 0, i32 1
  %208 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %204, ptr noundef %207, ptr noundef %208)
  %209 = load ptr, ptr %14, align 8, !tbaa !5
  %210 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %209, i32 0, i32 2
  %211 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %210, i32 0, i32 4
  %212 = load ptr, ptr %211, align 8, !tbaa !19
  %213 = load i64, ptr %13, align 8, !tbaa !9
  %214 = getelementptr inbounds i64, ptr %212, i64 %213
  %215 = load i64, ptr %214, align 8, !tbaa !9
  %216 = load i64, ptr %13, align 8, !tbaa !9
  %217 = add nsw i64 %215, %216
  %218 = load i64, ptr %23, align 8, !tbaa !9
  %219 = add nsw i64 %217, %218
  %220 = load i64, ptr %13, align 8, !tbaa !9
  %221 = add nsw i64 %219, %220
  %222 = load ptr, ptr %12, align 8, !tbaa !5
  %223 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %222, i32 0, i32 0
  %224 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %223, i32 0, i32 0
  %225 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %221, ptr noundef %224, ptr noundef %225)
  %226 = load ptr, ptr %12, align 8, !tbaa !5
  %227 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %226, i32 0, i32 0
  %228 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %227, i32 0, i32 2
  %229 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %228, i32 0, i32 4
  %230 = load ptr, ptr %229, align 8, !tbaa !19
  %231 = getelementptr inbounds i64, ptr %230, i64 0
  store i64 0, ptr %231, align 8, !tbaa !9
  store i64 0, ptr %32, align 8, !tbaa !9
  store double 0.000000e+00, ptr %31, align 8, !tbaa !46
  store i64 0, ptr %25, align 8, !tbaa !9
  br label %232

232:                                              ; preds = %364, %153
  %233 = load i64, ptr %25, align 8, !tbaa !9
  %234 = load i64, ptr %13, align 8, !tbaa !9
  %235 = sub nsw i64 %234, 1
  %236 = icmp sle i64 %233, %235
  br i1 %236, label %237, label %367

237:                                              ; preds = %232
  %238 = load ptr, ptr %14, align 8, !tbaa !5
  %239 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %238, i32 0, i32 2
  %240 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %239, i32 0, i32 4
  %241 = load ptr, ptr %240, align 8, !tbaa !19
  %242 = load i64, ptr %25, align 8, !tbaa !9
  %243 = getelementptr inbounds i64, ptr %241, i64 %242
  %244 = load i64, ptr %243, align 8, !tbaa !9
  store i64 %244, ptr %28, align 8, !tbaa !9
  %245 = load ptr, ptr %14, align 8, !tbaa !5
  %246 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %245, i32 0, i32 3
  %247 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %246, i32 0, i32 4
  %248 = load ptr, ptr %247, align 8, !tbaa !19
  %249 = load i64, ptr %25, align 8, !tbaa !9
  %250 = getelementptr inbounds i64, ptr %248, i64 %249
  %251 = load i64, ptr %250, align 8, !tbaa !9
  %252 = sub nsw i64 %251, 1
  store i64 %252, ptr %29, align 8, !tbaa !9
  %253 = load i64, ptr %28, align 8, !tbaa !9
  store i64 %253, ptr %27, align 8, !tbaa !9
  br label %254

254:                                              ; preds = %293, %237
  %255 = load i64, ptr %27, align 8, !tbaa !9
  %256 = load i64, ptr %29, align 8, !tbaa !9
  %257 = icmp sle i64 %255, %256
  br i1 %257, label %258, label %296

258:                                              ; preds = %254
  %259 = load ptr, ptr %14, align 8, !tbaa !5
  %260 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %259, i32 0, i32 0
  %261 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %260, i32 0, i32 4
  %262 = load ptr, ptr %261, align 8, !tbaa !19
  %263 = load i64, ptr %27, align 8, !tbaa !9
  %264 = getelementptr inbounds double, ptr %262, i64 %263
  %265 = load double, ptr %264, align 8, !tbaa !46
  store double %265, ptr %30, align 8, !tbaa !46
  %266 = load ptr, ptr %14, align 8, !tbaa !5
  %267 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %266, i32 0, i32 1
  %268 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %267, i32 0, i32 4
  %269 = load ptr, ptr %268, align 8, !tbaa !19
  %270 = load i64, ptr %27, align 8, !tbaa !9
  %271 = getelementptr inbounds i64, ptr %269, i64 %270
  %272 = load i64, ptr %271, align 8, !tbaa !9
  %273 = load ptr, ptr %12, align 8, !tbaa !5
  %274 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %273, i32 0, i32 0
  %275 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %274, i32 0, i32 1
  %276 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %275, i32 0, i32 4
  %277 = load ptr, ptr %276, align 8, !tbaa !19
  %278 = load i64, ptr %32, align 8, !tbaa !9
  %279 = getelementptr inbounds i64, ptr %277, i64 %278
  store i64 %272, ptr %279, align 8, !tbaa !9
  %280 = load double, ptr %30, align 8, !tbaa !46
  %281 = load ptr, ptr %12, align 8, !tbaa !5
  %282 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %281, i32 0, i32 0
  %283 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %282, i32 0, i32 0
  %284 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %283, i32 0, i32 4
  %285 = load ptr, ptr %284, align 8, !tbaa !19
  %286 = load i64, ptr %32, align 8, !tbaa !9
  %287 = getelementptr inbounds double, ptr %285, i64 %286
  store double %280, ptr %287, align 8, !tbaa !46
  %288 = load double, ptr %31, align 8, !tbaa !46
  %289 = load double, ptr %30, align 8, !tbaa !46
  %290 = fadd double %288, %289
  store double %290, ptr %31, align 8, !tbaa !46
  %291 = load i64, ptr %32, align 8, !tbaa !9
  %292 = add nsw i64 %291, 1
  store i64 %292, ptr %32, align 8, !tbaa !9
  br label %293

293:                                              ; preds = %258
  %294 = load i64, ptr %27, align 8, !tbaa !9
  %295 = add nsw i64 %294, 1
  store i64 %295, ptr %27, align 8, !tbaa !9
  br label %254, !llvm.loop !47

296:                                              ; preds = %254
  store double 0.000000e+00, ptr %30, align 8, !tbaa !46
  %297 = load ptr, ptr %14, align 8, !tbaa !5
  %298 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %297, i32 0, i32 4
  %299 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %298, i32 0, i32 4
  %300 = load ptr, ptr %299, align 8, !tbaa !19
  %301 = load i64, ptr %25, align 8, !tbaa !9
  %302 = getelementptr inbounds i64, ptr %300, i64 %301
  %303 = load i64, ptr %302, align 8, !tbaa !9
  %304 = load ptr, ptr %14, align 8, !tbaa !5
  %305 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %304, i32 0, i32 3
  %306 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %305, i32 0, i32 4
  %307 = load ptr, ptr %306, align 8, !tbaa !19
  %308 = load i64, ptr %25, align 8, !tbaa !9
  %309 = getelementptr inbounds i64, ptr %307, i64 %308
  %310 = load i64, ptr %309, align 8, !tbaa !9
  %311 = icmp ne i64 %303, %310
  br i1 %311, label %312, label %326

312:                                              ; preds = %296
  %313 = load ptr, ptr %14, align 8, !tbaa !5
  %314 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %313, i32 0, i32 0
  %315 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %314, i32 0, i32 4
  %316 = load ptr, ptr %315, align 8, !tbaa !19
  %317 = load ptr, ptr %14, align 8, !tbaa !5
  %318 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %317, i32 0, i32 3
  %319 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %318, i32 0, i32 4
  %320 = load ptr, ptr %319, align 8, !tbaa !19
  %321 = load i64, ptr %25, align 8, !tbaa !9
  %322 = getelementptr inbounds i64, ptr %320, i64 %321
  %323 = load i64, ptr %322, align 8, !tbaa !9
  %324 = getelementptr inbounds double, ptr %316, i64 %323
  %325 = load double, ptr %324, align 8, !tbaa !46
  store double %325, ptr %30, align 8, !tbaa !46
  br label %326

326:                                              ; preds = %312, %296
  %327 = load i64, ptr %25, align 8, !tbaa !9
  %328 = load ptr, ptr %12, align 8, !tbaa !5
  %329 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %328, i32 0, i32 0
  %330 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %329, i32 0, i32 1
  %331 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %330, i32 0, i32 4
  %332 = load ptr, ptr %331, align 8, !tbaa !19
  %333 = load i64, ptr %32, align 8, !tbaa !9
  %334 = getelementptr inbounds i64, ptr %332, i64 %333
  store i64 %327, ptr %334, align 8, !tbaa !9
  %335 = load double, ptr %30, align 8, !tbaa !46
  %336 = load ptr, ptr %12, align 8, !tbaa !5
  %337 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %336, i32 0, i32 0
  %338 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %337, i32 0, i32 0
  %339 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %338, i32 0, i32 4
  %340 = load ptr, ptr %339, align 8, !tbaa !19
  %341 = load i64, ptr %32, align 8, !tbaa !9
  %342 = getelementptr inbounds double, ptr %340, i64 %341
  store double %335, ptr %342, align 8, !tbaa !46
  %343 = load double, ptr %30, align 8, !tbaa !46
  %344 = load ptr, ptr %12, align 8, !tbaa !5
  %345 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %344, i32 0, i32 3
  %346 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %345, i32 0, i32 4
  %347 = load ptr, ptr %346, align 8, !tbaa !19
  %348 = load i64, ptr %25, align 8, !tbaa !9
  %349 = getelementptr inbounds double, ptr %347, i64 %348
  store double %343, ptr %349, align 8, !tbaa !46
  %350 = load double, ptr %31, align 8, !tbaa !46
  %351 = load double, ptr %30, align 8, !tbaa !46
  %352 = fadd double %350, %351
  store double %352, ptr %31, align 8, !tbaa !46
  %353 = load i64, ptr %32, align 8, !tbaa !9
  %354 = add nsw i64 %353, 1
  store i64 %354, ptr %32, align 8, !tbaa !9
  %355 = load i64, ptr %32, align 8, !tbaa !9
  %356 = load ptr, ptr %12, align 8, !tbaa !5
  %357 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %356, i32 0, i32 0
  %358 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %357, i32 0, i32 2
  %359 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %358, i32 0, i32 4
  %360 = load ptr, ptr %359, align 8, !tbaa !19
  %361 = load i64, ptr %25, align 8, !tbaa !9
  %362 = add nsw i64 %361, 1
  %363 = getelementptr inbounds i64, ptr %360, i64 %362
  store i64 %355, ptr %363, align 8, !tbaa !9
  br label %364

364:                                              ; preds = %326
  %365 = load i64, ptr %25, align 8, !tbaa !9
  %366 = add nsw i64 %365, 1
  store i64 %366, ptr %25, align 8, !tbaa !9
  br label %232, !llvm.loop !49

367:                                              ; preds = %232
  store i64 0, ptr %25, align 8, !tbaa !9
  br label %368

368:                                              ; preds = %478, %367
  %369 = load i64, ptr %25, align 8, !tbaa !9
  %370 = load i64, ptr %18, align 8, !tbaa !9
  %371 = sub nsw i64 %370, 1
  %372 = icmp sle i64 %369, %371
  br i1 %372, label %373, label %481

373:                                              ; preds = %368
  %374 = load ptr, ptr %12, align 8, !tbaa !5
  %375 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %374, i32 0, i32 0
  %376 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %375, i32 0, i32 2
  %377 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %376, i32 0, i32 4
  %378 = load ptr, ptr %377, align 8, !tbaa !19
  %379 = load i64, ptr %13, align 8, !tbaa !9
  %380 = load i64, ptr %25, align 8, !tbaa !9
  %381 = add nsw i64 %379, %380
  %382 = getelementptr inbounds i64, ptr %378, i64 %381
  %383 = load i64, ptr %382, align 8, !tbaa !9
  store i64 %383, ptr %32, align 8, !tbaa !9
  %384 = load ptr, ptr %16, align 8, !tbaa !5
  %385 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %384, i32 0, i32 2
  %386 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %385, i32 0, i32 4
  %387 = load ptr, ptr %386, align 8, !tbaa !19
  %388 = load i64, ptr %25, align 8, !tbaa !9
  %389 = getelementptr inbounds i64, ptr %387, i64 %388
  %390 = load i64, ptr %389, align 8, !tbaa !9
  store i64 %390, ptr %28, align 8, !tbaa !9
  %391 = load ptr, ptr %16, align 8, !tbaa !5
  %392 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %391, i32 0, i32 2
  %393 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %392, i32 0, i32 4
  %394 = load ptr, ptr %393, align 8, !tbaa !19
  %395 = load i64, ptr %25, align 8, !tbaa !9
  %396 = add nsw i64 %395, 1
  %397 = getelementptr inbounds i64, ptr %394, i64 %396
  %398 = load i64, ptr %397, align 8, !tbaa !9
  %399 = sub nsw i64 %398, 1
  store i64 %399, ptr %29, align 8, !tbaa !9
  %400 = load i64, ptr %28, align 8, !tbaa !9
  store i64 %400, ptr %26, align 8, !tbaa !9
  br label %401

401:                                              ; preds = %436, %373
  %402 = load i64, ptr %26, align 8, !tbaa !9
  %403 = load i64, ptr %29, align 8, !tbaa !9
  %404 = icmp sle i64 %402, %403
  br i1 %404, label %405, label %439

405:                                              ; preds = %401
  %406 = load ptr, ptr %16, align 8, !tbaa !5
  %407 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %406, i32 0, i32 1
  %408 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %407, i32 0, i32 4
  %409 = load ptr, ptr %408, align 8, !tbaa !19
  %410 = load i64, ptr %26, align 8, !tbaa !9
  %411 = getelementptr inbounds i64, ptr %409, i64 %410
  %412 = load i64, ptr %411, align 8, !tbaa !9
  %413 = load ptr, ptr %12, align 8, !tbaa !5
  %414 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %413, i32 0, i32 0
  %415 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %414, i32 0, i32 1
  %416 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %415, i32 0, i32 4
  %417 = load ptr, ptr %416, align 8, !tbaa !19
  %418 = load i64, ptr %32, align 8, !tbaa !9
  %419 = getelementptr inbounds i64, ptr %417, i64 %418
  store i64 %412, ptr %419, align 8, !tbaa !9
  %420 = load ptr, ptr %16, align 8, !tbaa !5
  %421 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %420, i32 0, i32 0
  %422 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %421, i32 0, i32 4
  %423 = load ptr, ptr %422, align 8, !tbaa !19
  %424 = load i64, ptr %26, align 8, !tbaa !9
  %425 = getelementptr inbounds double, ptr %423, i64 %424
  %426 = load double, ptr %425, align 8, !tbaa !46
  %427 = load ptr, ptr %12, align 8, !tbaa !5
  %428 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %427, i32 0, i32 0
  %429 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %428, i32 0, i32 0
  %430 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %429, i32 0, i32 4
  %431 = load ptr, ptr %430, align 8, !tbaa !19
  %432 = load i64, ptr %32, align 8, !tbaa !9
  %433 = getelementptr inbounds double, ptr %431, i64 %432
  store double %426, ptr %433, align 8, !tbaa !46
  %434 = load i64, ptr %32, align 8, !tbaa !9
  %435 = add nsw i64 %434, 1
  store i64 %435, ptr %32, align 8, !tbaa !9
  br label %436

436:                                              ; preds = %405
  %437 = load i64, ptr %26, align 8, !tbaa !9
  %438 = add nsw i64 %437, 1
  store i64 %438, ptr %26, align 8, !tbaa !9
  br label %401, !llvm.loop !50

439:                                              ; preds = %401
  %440 = load i64, ptr %13, align 8, !tbaa !9
  %441 = load i64, ptr %25, align 8, !tbaa !9
  %442 = add nsw i64 %440, %441
  %443 = load ptr, ptr %12, align 8, !tbaa !5
  %444 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %443, i32 0, i32 0
  %445 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %444, i32 0, i32 1
  %446 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %445, i32 0, i32 4
  %447 = load ptr, ptr %446, align 8, !tbaa !19
  %448 = load i64, ptr %32, align 8, !tbaa !9
  %449 = getelementptr inbounds i64, ptr %447, i64 %448
  store i64 %442, ptr %449, align 8, !tbaa !9
  %450 = load ptr, ptr %12, align 8, !tbaa !5
  %451 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %450, i32 0, i32 0
  %452 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %451, i32 0, i32 0
  %453 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %452, i32 0, i32 4
  %454 = load ptr, ptr %453, align 8, !tbaa !19
  %455 = load i64, ptr %32, align 8, !tbaa !9
  %456 = getelementptr inbounds double, ptr %454, i64 %455
  store double 0.000000e+00, ptr %456, align 8, !tbaa !46
  %457 = load ptr, ptr %12, align 8, !tbaa !5
  %458 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %457, i32 0, i32 3
  %459 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %458, i32 0, i32 4
  %460 = load ptr, ptr %459, align 8, !tbaa !19
  %461 = load i64, ptr %13, align 8, !tbaa !9
  %462 = load i64, ptr %25, align 8, !tbaa !9
  %463 = add nsw i64 %461, %462
  %464 = getelementptr inbounds double, ptr %460, i64 %463
  store double 0.000000e+00, ptr %464, align 8, !tbaa !46
  %465 = load i64, ptr %32, align 8, !tbaa !9
  %466 = add nsw i64 %465, 1
  store i64 %466, ptr %32, align 8, !tbaa !9
  %467 = load i64, ptr %32, align 8, !tbaa !9
  %468 = load ptr, ptr %12, align 8, !tbaa !5
  %469 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %468, i32 0, i32 0
  %470 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %469, i32 0, i32 2
  %471 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %470, i32 0, i32 4
  %472 = load ptr, ptr %471, align 8, !tbaa !19
  %473 = load i64, ptr %13, align 8, !tbaa !9
  %474 = load i64, ptr %25, align 8, !tbaa !9
  %475 = add nsw i64 %473, %474
  %476 = add nsw i64 %475, 1
  %477 = getelementptr inbounds i64, ptr %472, i64 %476
  store i64 %467, ptr %477, align 8, !tbaa !9
  br label %478

478:                                              ; preds = %439
  %479 = load i64, ptr %25, align 8, !tbaa !9
  %480 = add nsw i64 %479, 1
  store i64 %480, ptr %25, align 8, !tbaa !9
  br label %368, !llvm.loop !51

481:                                              ; preds = %368
  %482 = load double, ptr %31, align 8, !tbaa !46
  %483 = load ptr, ptr %22, align 8, !tbaa !5
  %484 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %482, ptr noundef %483)
  %485 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %484, ptr noundef @.str.692, ptr noundef %485)
  %486 = load i64, ptr %32, align 8, !tbaa !9
  %487 = load ptr, ptr %12, align 8, !tbaa !5
  %488 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %487, i32 0, i32 0
  %489 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %488, i32 0, i32 0
  %490 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %489, i32 0, i32 0
  %491 = load i64, ptr %490, align 8, !tbaa !52
  %492 = icmp sle i64 %486, %491
  br i1 %492, label %493, label %501

493:                                              ; preds = %481
  %494 = load i64, ptr %32, align 8, !tbaa !9
  %495 = load ptr, ptr %12, align 8, !tbaa !5
  %496 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %495, i32 0, i32 0
  %497 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %496, i32 0, i32 1
  %498 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %497, i32 0, i32 0
  %499 = load i64, ptr %498, align 8, !tbaa !53
  %500 = icmp sle i64 %494, %499
  br label %501

501:                                              ; preds = %493, %481
  %502 = phi i1 [ false, %481 ], [ %500, %493 ]
  %503 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %502, ptr noundef @.str.693, ptr noundef %503)
  %504 = load ptr, ptr %12, align 8, !tbaa !5
  %505 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %504, i32 0, i32 0
  %506 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl22sparsecreatecrsinplaceEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %505, ptr noundef %506)
  %507 = load ptr, ptr %12, align 8, !tbaa !5
  %508 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %507, i32 0, i32 0
  %509 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %508, i32 0, i32 7
  %510 = load i64, ptr %509, align 8, !tbaa !45
  %511 = load ptr, ptr %12, align 8, !tbaa !5
  %512 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %511, i32 0, i32 1
  %513 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl10isetallocvEllPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %510, i64 noundef 0, ptr noundef %512, ptr noundef %513)
  %514 = load i64, ptr %13, align 8, !tbaa !9
  %515 = load ptr, ptr %12, align 8, !tbaa !5
  %516 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %515, i32 0, i32 1
  %517 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl5isetvEllPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %514, i64 noundef 1, ptr noundef %516, ptr noundef %517)
  %518 = load ptr, ptr %12, align 8, !tbaa !5
  %519 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %518, i32 0, i32 14
  %520 = load ptr, ptr %12, align 8, !tbaa !5
  %521 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %520, i32 0, i32 12
  %522 = load i8, ptr %521, align 1, !tbaa !42, !range !40, !noundef !41
  %523 = trunc i8 %522 to i1
  %524 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl15stimerstartcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef %519, i1 noundef zeroext %523, ptr noundef %524)
  %525 = load ptr, ptr %12, align 8, !tbaa !5
  %526 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %525, i32 0, i32 0
  %527 = load ptr, ptr %12, align 8, !tbaa !5
  %528 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %527, i32 0, i32 1
  %529 = load double, ptr @_ZN11alglib_implL20ecqpsolver_mupromoteE, align 8, !tbaa !46
  %530 = load ptr, ptr %12, align 8, !tbaa !5
  %531 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %530, i32 0, i32 2
  %532 = load ptr, ptr %22, align 8, !tbaa !5
  %533 = call noundef zeroext i1 @_ZN11alglib_impl13spsymmanalyzeEPKNS_12sparsematrixEPKNS_9ae_vectorEdllllPNS_14spcholanalysisEPNS_8ae_stateE(ptr noundef %526, ptr noundef %528, double noundef %529, i64 noundef 0, i64 noundef 1, i64 noundef 3, i64 noundef 1, ptr noundef %531, ptr noundef %532)
  br i1 %533, label %536, label %534

534:                                              ; preds = %501
  %535 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef @.str.694, ptr noundef %535)
  br label %536

536:                                              ; preds = %534, %501
  %537 = load ptr, ptr %12, align 8, !tbaa !5
  %538 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %537, i32 0, i32 14
  %539 = load ptr, ptr %12, align 8, !tbaa !5
  %540 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %539, i32 0, i32 12
  %541 = load i8, ptr %540, align 1, !tbaa !42, !range !40, !noundef !41
  %542 = trunc i8 %541 to i1
  %543 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl14stimerstopcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef %538, i1 noundef zeroext %542, ptr noundef %543)
  %544 = load i64, ptr %24, align 8, !tbaa !9
  %545 = load ptr, ptr %12, align 8, !tbaa !5
  %546 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %545, i32 0, i32 4
  %547 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %544, ptr noundef %546, ptr noundef %547)
  %548 = load ptr, ptr %22, align 8, !tbaa !5
  %549 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %548)
  store double %549, ptr %33, align 8, !tbaa !46
  store double 1.000000e+50, ptr %35, align 8, !tbaa !46
  br label %550

550:                                              ; preds = %675, %638, %536
  store i64 0, ptr %25, align 8, !tbaa !9
  br label %551

551:                                              ; preds = %572, %550
  %552 = load i64, ptr %25, align 8, !tbaa !9
  %553 = load i64, ptr %13, align 8, !tbaa !9
  %554 = sub nsw i64 %553, 1
  %555 = icmp sle i64 %552, %554
  br i1 %555, label %556, label %575

556:                                              ; preds = %551
  %557 = load ptr, ptr %12, align 8, !tbaa !5
  %558 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %557, i32 0, i32 3
  %559 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %558, i32 0, i32 4
  %560 = load ptr, ptr %559, align 8, !tbaa !19
  %561 = load i64, ptr %25, align 8, !tbaa !9
  %562 = getelementptr inbounds double, ptr %560, i64 %561
  %563 = load double, ptr %562, align 8, !tbaa !46
  %564 = load double, ptr %33, align 8, !tbaa !46
  %565 = fadd double %563, %564
  %566 = load ptr, ptr %12, align 8, !tbaa !5
  %567 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %566, i32 0, i32 4
  %568 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %567, i32 0, i32 4
  %569 = load ptr, ptr %568, align 8, !tbaa !19
  %570 = load i64, ptr %25, align 8, !tbaa !9
  %571 = getelementptr inbounds double, ptr %569, i64 %570
  store double %565, ptr %571, align 8, !tbaa !46
  br label %572

572:                                              ; preds = %556
  %573 = load i64, ptr %25, align 8, !tbaa !9
  %574 = add nsw i64 %573, 1
  store i64 %574, ptr %25, align 8, !tbaa !9
  br label %551, !llvm.loop !54

575:                                              ; preds = %551
  %576 = load i64, ptr %13, align 8, !tbaa !9
  store i64 %576, ptr %25, align 8, !tbaa !9
  br label %577

577:                                              ; preds = %598, %575
  %578 = load i64, ptr %25, align 8, !tbaa !9
  %579 = load i64, ptr %24, align 8, !tbaa !9
  %580 = sub nsw i64 %579, 1
  %581 = icmp sle i64 %578, %580
  br i1 %581, label %582, label %601

582:                                              ; preds = %577
  %583 = load ptr, ptr %12, align 8, !tbaa !5
  %584 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %583, i32 0, i32 3
  %585 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %584, i32 0, i32 4
  %586 = load ptr, ptr %585, align 8, !tbaa !19
  %587 = load i64, ptr %25, align 8, !tbaa !9
  %588 = getelementptr inbounds double, ptr %586, i64 %587
  %589 = load double, ptr %588, align 8, !tbaa !46
  %590 = load double, ptr %33, align 8, !tbaa !46
  %591 = fsub double %589, %590
  %592 = load ptr, ptr %12, align 8, !tbaa !5
  %593 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %592, i32 0, i32 4
  %594 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %593, i32 0, i32 4
  %595 = load ptr, ptr %594, align 8, !tbaa !19
  %596 = load i64, ptr %25, align 8, !tbaa !9
  %597 = getelementptr inbounds double, ptr %595, i64 %596
  store double %591, ptr %597, align 8, !tbaa !46
  br label %598

598:                                              ; preds = %582
  %599 = load i64, ptr %25, align 8, !tbaa !9
  %600 = add nsw i64 %599, 1
  store i64 %600, ptr %25, align 8, !tbaa !9
  br label %577, !llvm.loop !55

601:                                              ; preds = %577
  %602 = load ptr, ptr %12, align 8, !tbaa !5
  %603 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %602, i32 0, i32 2
  %604 = load ptr, ptr %12, align 8, !tbaa !5
  %605 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %604, i32 0, i32 4
  %606 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl20spsymmreloaddiagonalEPNS_14spcholanalysisEPKNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %603, ptr noundef %605, ptr noundef %606)
  %607 = load ptr, ptr %12, align 8, !tbaa !5
  %608 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %607, i32 0, i32 2
  %609 = load double, ptr %35, align 8, !tbaa !46
  %610 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl29spsymmsetmodificationstrategyEPNS_14spcholanalysisElddddPNS_8ae_stateE(ptr noundef %608, i64 noundef 1, double noundef 5.000000e-16, double noundef %609, double noundef 0.000000e+00, double noundef 0.000000e+00, ptr noundef %610)
  %611 = load ptr, ptr %12, align 8, !tbaa !5
  %612 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %611, i32 0, i32 15
  %613 = load ptr, ptr %12, align 8, !tbaa !5
  %614 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %613, i32 0, i32 12
  %615 = load i8, ptr %614, align 1, !tbaa !42, !range !40, !noundef !41
  %616 = trunc i8 %615 to i1
  %617 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl15stimerstartcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef %612, i1 noundef zeroext %616, ptr noundef %617)
  %618 = load ptr, ptr %12, align 8, !tbaa !5
  %619 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %618, i32 0, i32 2
  %620 = load ptr, ptr %22, align 8, !tbaa !5
  %621 = call noundef zeroext i1 @_ZN11alglib_impl15spsymmfactorizeEPNS_14spcholanalysisEPNS_8ae_stateE(ptr noundef %619, ptr noundef %620)
  br i1 %621, label %639, label %622

622:                                              ; preds = %601
  %623 = load ptr, ptr %12, align 8, !tbaa !5
  %624 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %623, i32 0, i32 15
  %625 = load ptr, ptr %12, align 8, !tbaa !5
  %626 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %625, i32 0, i32 12
  %627 = load i8, ptr %626, align 1, !tbaa !42, !range !40, !noundef !41
  %628 = trunc i8 %627 to i1
  %629 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl14stimerstopcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef %624, i1 noundef zeroext %628, ptr noundef %629)
  %630 = load double, ptr %33, align 8, !tbaa !46
  %631 = fmul double 1.000000e+01, %630
  store double %631, ptr %33, align 8, !tbaa !46
  %632 = load ptr, ptr %12, align 8, !tbaa !5
  %633 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %632, i32 0, i32 11
  %634 = load i8, ptr %633, align 8, !tbaa !39, !range !40, !noundef !41
  %635 = trunc i8 %634 to i1
  br i1 %635, label %636, label %638

636:                                              ; preds = %622
  %637 = load double, ptr %33, align 8, !tbaa !46
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.695, double noundef %637)
  br label %638

638:                                              ; preds = %636, %622
  br label %550, !llvm.loop !56

639:                                              ; preds = %601
  %640 = load ptr, ptr %12, align 8, !tbaa !5
  %641 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %640, i32 0, i32 15
  %642 = load ptr, ptr %12, align 8, !tbaa !5
  %643 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %642, i32 0, i32 12
  %644 = load i8, ptr %643, align 1, !tbaa !42, !range !40, !noundef !41
  %645 = trunc i8 %644 to i1
  %646 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl14stimerstopcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef %641, i1 noundef zeroext %645, ptr noundef %646)
  %647 = load ptr, ptr %12, align 8, !tbaa !5
  %648 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %647, i32 0, i32 2
  %649 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl13spsymmdiagerrEPNS_14spcholanalysisEPdS2_PNS_8ae_stateE(ptr noundef %648, ptr noundef %36, ptr noundef %37, ptr noundef %649)
  %650 = load double, ptr %37, align 8, !tbaa !46
  %651 = load double, ptr %36, align 8, !tbaa !46
  %652 = fadd double 1.000000e+00, %651
  %653 = fdiv double %650, %652
  %654 = load ptr, ptr %22, align 8, !tbaa !5
  %655 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %653, ptr noundef %654)
  %656 = load ptr, ptr %22, align 8, !tbaa !5
  %657 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %656)
  %658 = fmul double 1.000000e+02, %657
  %659 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %655, double noundef %658)
  br i1 %659, label %660, label %676

660:                                              ; preds = %639
  %661 = load double, ptr %33, align 8, !tbaa !46
  %662 = fmul double 1.000000e+01, %661
  store double %662, ptr %33, align 8, !tbaa !46
  %663 = load ptr, ptr %12, align 8, !tbaa !5
  %664 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %663, i32 0, i32 11
  %665 = load i8, ptr %664, align 8, !tbaa !39, !range !40, !noundef !41
  %666 = trunc i8 %665 to i1
  br i1 %666, label %667, label %675

667:                                              ; preds = %660
  %668 = load double, ptr %37, align 8, !tbaa !46
  %669 = load double, ptr %36, align 8, !tbaa !46
  %670 = fadd double 1.000000e+00, %669
  %671 = fdiv double %668, %670
  %672 = load ptr, ptr %22, align 8, !tbaa !5
  %673 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %671, ptr noundef %672)
  %674 = load double, ptr %33, align 8, !tbaa !46
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.696, double noundef %673, double noundef %674)
  br label %675

675:                                              ; preds = %667, %660
  br label %550, !llvm.loop !56

676:                                              ; preds = %639
  %677 = load ptr, ptr %12, align 8, !tbaa !5
  %678 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %677, i32 0, i32 11
  %679 = load i8, ptr %678, align 8, !tbaa !39, !range !40, !noundef !41
  %680 = trunc i8 %679 to i1
  br i1 %680, label %681, label %682

681:                                              ; preds = %676
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.697)
  br label %682

682:                                              ; preds = %681, %676
  br label %683

683:                                              ; preds = %682
  %684 = load ptr, ptr %12, align 8, !tbaa !5
  %685 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %684, i32 0, i32 17
  %686 = load ptr, ptr %12, align 8, !tbaa !5
  %687 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %686, i32 0, i32 12
  %688 = load i8, ptr %687, align 1, !tbaa !42, !range !40, !noundef !41
  %689 = trunc i8 %688 to i1
  %690 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl15stimerstartcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef %685, i1 noundef zeroext %689, ptr noundef %690)
  store double 5.000000e-13, ptr %34, align 8, !tbaa !46
  %691 = load i64, ptr %24, align 8, !tbaa !9
  %692 = load ptr, ptr %12, align 8, !tbaa !5
  %693 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %692, i32 0, i32 6
  %694 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %691, ptr noundef %693, ptr noundef %694)
  %695 = load i64, ptr %13, align 8, !tbaa !9
  %696 = load ptr, ptr %15, align 8, !tbaa !5
  %697 = load ptr, ptr %12, align 8, !tbaa !5
  %698 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %697, i32 0, i32 6
  %699 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl9rcopymulvEldPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %695, double noundef -1.000000e+00, ptr noundef %696, ptr noundef %698, ptr noundef %699)
  %700 = load i64, ptr %18, align 8, !tbaa !9
  %701 = load ptr, ptr %17, align 8, !tbaa !5
  %702 = load ptr, ptr %12, align 8, !tbaa !5
  %703 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %702, i32 0, i32 6
  %704 = load i64, ptr %13, align 8, !tbaa !9
  %705 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rcopyvxElPKNS_9ae_vectorElPS0_lPNS_8ae_stateE(i64 noundef %700, ptr noundef %701, i64 noundef 0, ptr noundef %703, i64 noundef %704, ptr noundef %705)
  %706 = load ptr, ptr %12, align 8, !tbaa !5
  %707 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %706, i32 0, i32 6
  %708 = load i64, ptr %24, align 8, !tbaa !9
  %709 = load i64, ptr %24, align 8, !tbaa !9
  %710 = load ptr, ptr %22, align 8, !tbaa !5
  %711 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef 25, i64 noundef %709, ptr noundef %710)
  %712 = load ptr, ptr %12, align 8, !tbaa !5
  %713 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %712, i32 0, i32 8
  %714 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl15fblsgmrescreateEPKNS_9ae_vectorEllPNS_14fblsgmresstateEPNS_8ae_stateE(ptr noundef %707, i64 noundef %708, i64 noundef %711, ptr noundef %713, ptr noundef %714)
  %715 = load ptr, ptr %12, align 8, !tbaa !5
  %716 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %715, i32 0, i32 8
  %717 = getelementptr inbounds %"struct.alglib_impl::fblsgmresstate", ptr %716, i32 0, i32 16
  store double 5.000000e-14, ptr %717, align 8, !tbaa !57
  %718 = load ptr, ptr %12, align 8, !tbaa !5
  %719 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %718, i32 0, i32 8
  %720 = getelementptr inbounds %"struct.alglib_impl::fblsgmresstate", ptr %719, i32 0, i32 17
  store double 0x3FEFFFFDE7210BE9, ptr %720, align 8, !tbaa !58
  store i64 0, ptr %38, align 8, !tbaa !9
  br label %721

721:                                              ; preds = %853, %683
  %722 = load ptr, ptr %12, align 8, !tbaa !5
  %723 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %722, i32 0, i32 8
  %724 = load ptr, ptr %22, align 8, !tbaa !5
  %725 = call noundef zeroext i1 @_ZN11alglib_impl18fblsgmresiterationEPNS_14fblsgmresstateEPNS_8ae_stateE(ptr noundef %723, ptr noundef %724)
  br i1 %725, label %726, label %856

726:                                              ; preds = %721
  %727 = load ptr, ptr %12, align 8, !tbaa !5
  %728 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %727, i32 0, i32 11
  %729 = load i8, ptr %728, align 8, !tbaa !39, !range !40, !noundef !41
  %730 = trunc i8 %729 to i1
  br i1 %730, label %731, label %738

731:                                              ; preds = %726
  %732 = load i64, ptr %38, align 8, !tbaa !9
  %733 = trunc i64 %732 to i32
  %734 = load ptr, ptr %12, align 8, !tbaa !5
  %735 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %734, i32 0, i32 8
  %736 = getelementptr inbounds %"struct.alglib_impl::fblsgmresstate", ptr %735, i32 0, i32 21
  %737 = load double, ptr %736, align 8, !tbaa !59
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.698, i32 noundef %733, double noundef %737)
  br label %738

738:                                              ; preds = %731, %726
  store i64 0, ptr %25, align 8, !tbaa !9
  br label %739

739:                                              ; preds = %762, %738
  %740 = load i64, ptr %25, align 8, !tbaa !9
  %741 = load i64, ptr %13, align 8, !tbaa !9
  %742 = sub nsw i64 %741, 1
  %743 = icmp sle i64 %740, %742
  br i1 %743, label %744, label %765

744:                                              ; preds = %739
  %745 = load double, ptr %34, align 8, !tbaa !46
  %746 = load ptr, ptr %12, align 8, !tbaa !5
  %747 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %746, i32 0, i32 8
  %748 = getelementptr inbounds %"struct.alglib_impl::fblsgmresstate", ptr %747, i32 0, i32 1
  %749 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %748, i32 0, i32 4
  %750 = load ptr, ptr %749, align 8, !tbaa !19
  %751 = load i64, ptr %25, align 8, !tbaa !9
  %752 = getelementptr inbounds double, ptr %750, i64 %751
  %753 = load double, ptr %752, align 8, !tbaa !46
  %754 = fmul double %745, %753
  %755 = load ptr, ptr %12, align 8, !tbaa !5
  %756 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %755, i32 0, i32 8
  %757 = getelementptr inbounds %"struct.alglib_impl::fblsgmresstate", ptr %756, i32 0, i32 2
  %758 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %757, i32 0, i32 4
  %759 = load ptr, ptr %758, align 8, !tbaa !19
  %760 = load i64, ptr %25, align 8, !tbaa !9
  %761 = getelementptr inbounds double, ptr %759, i64 %760
  store double %754, ptr %761, align 8, !tbaa !46
  br label %762

762:                                              ; preds = %744
  %763 = load i64, ptr %25, align 8, !tbaa !9
  %764 = add nsw i64 %763, 1
  store i64 %764, ptr %25, align 8, !tbaa !9
  br label %739, !llvm.loop !60

765:                                              ; preds = %739
  %766 = load i64, ptr %13, align 8, !tbaa !9
  store i64 %766, ptr %25, align 8, !tbaa !9
  br label %767

767:                                              ; preds = %791, %765
  %768 = load i64, ptr %25, align 8, !tbaa !9
  %769 = load i64, ptr %24, align 8, !tbaa !9
  %770 = sub nsw i64 %769, 1
  %771 = icmp sle i64 %768, %770
  br i1 %771, label %772, label %794

772:                                              ; preds = %767
  %773 = load double, ptr %34, align 8, !tbaa !46
  %774 = fneg double %773
  %775 = load ptr, ptr %12, align 8, !tbaa !5
  %776 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %775, i32 0, i32 8
  %777 = getelementptr inbounds %"struct.alglib_impl::fblsgmresstate", ptr %776, i32 0, i32 1
  %778 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %777, i32 0, i32 4
  %779 = load ptr, ptr %778, align 8, !tbaa !19
  %780 = load i64, ptr %25, align 8, !tbaa !9
  %781 = getelementptr inbounds double, ptr %779, i64 %780
  %782 = load double, ptr %781, align 8, !tbaa !46
  %783 = fmul double %774, %782
  %784 = load ptr, ptr %12, align 8, !tbaa !5
  %785 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %784, i32 0, i32 8
  %786 = getelementptr inbounds %"struct.alglib_impl::fblsgmresstate", ptr %785, i32 0, i32 2
  %787 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %786, i32 0, i32 4
  %788 = load ptr, ptr %787, align 8, !tbaa !19
  %789 = load i64, ptr %25, align 8, !tbaa !9
  %790 = getelementptr inbounds double, ptr %788, i64 %789
  store double %783, ptr %790, align 8, !tbaa !46
  br label %791

791:                                              ; preds = %772
  %792 = load i64, ptr %25, align 8, !tbaa !9
  %793 = add nsw i64 %792, 1
  store i64 %793, ptr %25, align 8, !tbaa !9
  br label %767, !llvm.loop !61

794:                                              ; preds = %767
  %795 = load i64, ptr %24, align 8, !tbaa !9
  %796 = load ptr, ptr %12, align 8, !tbaa !5
  %797 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %796, i32 0, i32 8
  %798 = getelementptr inbounds %"struct.alglib_impl::fblsgmresstate", ptr %797, i32 0, i32 1
  %799 = load ptr, ptr %12, align 8, !tbaa !5
  %800 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %799, i32 0, i32 5
  %801 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %795, ptr noundef %798, ptr noundef %800, ptr noundef %801)
  %802 = load ptr, ptr %12, align 8, !tbaa !5
  %803 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %802, i32 0, i32 16
  %804 = load ptr, ptr %12, align 8, !tbaa !5
  %805 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %804, i32 0, i32 12
  %806 = load i8, ptr %805, align 1, !tbaa !42, !range !40, !noundef !41
  %807 = trunc i8 %806 to i1
  %808 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl15stimerstartcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef %803, i1 noundef zeroext %807, ptr noundef %808)
  %809 = load ptr, ptr %12, align 8, !tbaa !5
  %810 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %809, i32 0, i32 2
  %811 = load ptr, ptr %12, align 8, !tbaa !5
  %812 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %811, i32 0, i32 5
  %813 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl11spsymmsolveEPNS_14spcholanalysisEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %810, ptr noundef %812, ptr noundef %813)
  %814 = load ptr, ptr %12, align 8, !tbaa !5
  %815 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %814, i32 0, i32 16
  %816 = load ptr, ptr %12, align 8, !tbaa !5
  %817 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %816, i32 0, i32 12
  %818 = load i8, ptr %817, align 1, !tbaa !42, !range !40, !noundef !41
  %819 = trunc i8 %818 to i1
  %820 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl14stimerstopcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef %815, i1 noundef zeroext %819, ptr noundef %820)
  %821 = load ptr, ptr %14, align 8, !tbaa !5
  %822 = load ptr, ptr %12, align 8, !tbaa !5
  %823 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %822, i32 0, i32 5
  %824 = load ptr, ptr %12, align 8, !tbaa !5
  %825 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %824, i32 0, i32 7
  %826 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl9sparsesmvEPKNS_12sparsematrixEbPKNS_9ae_vectorEPS3_PNS_8ae_stateE(ptr noundef %821, i1 noundef zeroext false, ptr noundef %823, ptr noundef %825, ptr noundef %826)
  %827 = load i64, ptr %13, align 8, !tbaa !9
  %828 = load ptr, ptr %12, align 8, !tbaa !5
  %829 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %828, i32 0, i32 7
  %830 = load ptr, ptr %12, align 8, !tbaa !5
  %831 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %830, i32 0, i32 8
  %832 = getelementptr inbounds %"struct.alglib_impl::fblsgmresstate", ptr %831, i32 0, i32 2
  %833 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl6raddvxEldPKNS_9ae_vectorElPS0_lPNS_8ae_stateE(i64 noundef %827, double noundef 1.000000e+00, ptr noundef %829, i64 noundef 0, ptr noundef %832, i64 noundef 0, ptr noundef %833)
  %834 = load i64, ptr %18, align 8, !tbaa !9
  %835 = icmp sgt i64 %834, 0
  br i1 %835, label %836, label %853

836:                                              ; preds = %794
  %837 = load ptr, ptr %16, align 8, !tbaa !5
  %838 = load ptr, ptr %12, align 8, !tbaa !5
  %839 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %838, i32 0, i32 5
  %840 = load i64, ptr %13, align 8, !tbaa !9
  %841 = load ptr, ptr %12, align 8, !tbaa !5
  %842 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %841, i32 0, i32 8
  %843 = getelementptr inbounds %"struct.alglib_impl::fblsgmresstate", ptr %842, i32 0, i32 2
  %844 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl10sparsegemvEPKNS_12sparsematrixEdlPKNS_9ae_vectorEldPS3_lPNS_8ae_stateE(ptr noundef %837, double noundef 1.000000e+00, i64 noundef 1, ptr noundef %839, i64 noundef %840, double noundef 1.000000e+00, ptr noundef %843, i64 noundef 0, ptr noundef %844)
  %845 = load ptr, ptr %16, align 8, !tbaa !5
  %846 = load ptr, ptr %12, align 8, !tbaa !5
  %847 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %846, i32 0, i32 5
  %848 = load ptr, ptr %12, align 8, !tbaa !5
  %849 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %848, i32 0, i32 8
  %850 = getelementptr inbounds %"struct.alglib_impl::fblsgmresstate", ptr %849, i32 0, i32 2
  %851 = load i64, ptr %13, align 8, !tbaa !9
  %852 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl10sparsegemvEPKNS_12sparsematrixEdlPKNS_9ae_vectorEldPS3_lPNS_8ae_stateE(ptr noundef %845, double noundef 1.000000e+00, i64 noundef 0, ptr noundef %847, i64 noundef 0, double noundef 1.000000e+00, ptr noundef %850, i64 noundef %851, ptr noundef %852)
  br label %853

853:                                              ; preds = %836, %794
  %854 = load i64, ptr %38, align 8, !tbaa !9
  %855 = add nsw i64 %854, 1
  store i64 %855, ptr %38, align 8, !tbaa !9
  br label %721, !llvm.loop !62

856:                                              ; preds = %721
  %857 = load ptr, ptr %12, align 8, !tbaa !5
  %858 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %857, i32 0, i32 16
  %859 = load ptr, ptr %12, align 8, !tbaa !5
  %860 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %859, i32 0, i32 12
  %861 = load i8, ptr %860, align 1, !tbaa !42, !range !40, !noundef !41
  %862 = trunc i8 %861 to i1
  %863 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl15stimerstartcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef %858, i1 noundef zeroext %862, ptr noundef %863)
  %864 = load ptr, ptr %12, align 8, !tbaa !5
  %865 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %864, i32 0, i32 2
  %866 = load ptr, ptr %12, align 8, !tbaa !5
  %867 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %866, i32 0, i32 8
  %868 = getelementptr inbounds %"struct.alglib_impl::fblsgmresstate", ptr %867, i32 0, i32 3
  %869 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl11spsymmsolveEPNS_14spcholanalysisEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %865, ptr noundef %868, ptr noundef %869)
  %870 = load ptr, ptr %12, align 8, !tbaa !5
  %871 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %870, i32 0, i32 16
  %872 = load ptr, ptr %12, align 8, !tbaa !5
  %873 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %872, i32 0, i32 12
  %874 = load i8, ptr %873, align 1, !tbaa !42, !range !40, !noundef !41
  %875 = trunc i8 %874 to i1
  %876 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl14stimerstopcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef %871, i1 noundef zeroext %875, ptr noundef %876)
  %877 = load ptr, ptr %12, align 8, !tbaa !5
  %878 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %877, i32 0, i32 17
  %879 = load ptr, ptr %12, align 8, !tbaa !5
  %880 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %879, i32 0, i32 12
  %881 = load i8, ptr %880, align 1, !tbaa !42, !range !40, !noundef !41
  %882 = trunc i8 %881 to i1
  %883 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl14stimerstopcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef %878, i1 noundef zeroext %882, ptr noundef %883)
  %884 = load i64, ptr %13, align 8, !tbaa !9
  %885 = load ptr, ptr %19, align 8, !tbaa !5
  %886 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %884, ptr noundef %885, ptr noundef %886)
  %887 = load i64, ptr %18, align 8, !tbaa !9
  %888 = load ptr, ptr %20, align 8, !tbaa !5
  %889 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %887, ptr noundef %888, ptr noundef %889)
  %890 = load i64, ptr %13, align 8, !tbaa !9
  %891 = load ptr, ptr %12, align 8, !tbaa !5
  %892 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %891, i32 0, i32 8
  %893 = getelementptr inbounds %"struct.alglib_impl::fblsgmresstate", ptr %892, i32 0, i32 3
  %894 = load ptr, ptr %19, align 8, !tbaa !5
  %895 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rcopyvxElPKNS_9ae_vectorElPS0_lPNS_8ae_stateE(i64 noundef %890, ptr noundef %893, i64 noundef 0, ptr noundef %894, i64 noundef 0, ptr noundef %895)
  %896 = load i64, ptr %18, align 8, !tbaa !9
  %897 = load ptr, ptr %12, align 8, !tbaa !5
  %898 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %897, i32 0, i32 8
  %899 = getelementptr inbounds %"struct.alglib_impl::fblsgmresstate", ptr %898, i32 0, i32 3
  %900 = load i64, ptr %13, align 8, !tbaa !9
  %901 = load ptr, ptr %20, align 8, !tbaa !5
  %902 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rcopyvxElPKNS_9ae_vectorElPS0_lPNS_8ae_stateE(i64 noundef %896, ptr noundef %899, i64 noundef %900, ptr noundef %901, i64 noundef 0, ptr noundef %902)
  %903 = load ptr, ptr %12, align 8, !tbaa !5
  %904 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %903, i32 0, i32 9
  store i64 1, ptr %904, align 8, !tbaa !20
  %905 = load ptr, ptr %12, align 8, !tbaa !5
  %906 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %905, i32 0, i32 10
  store i64 1, ptr %906, align 8, !tbaa !38
  %907 = load ptr, ptr %21, align 8, !tbaa !5
  store i64 1, ptr %907, align 8, !tbaa !9
  %908 = load ptr, ptr %12, align 8, !tbaa !5
  %909 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %908, i32 0, i32 12
  %910 = load i8, ptr %909, align 1, !tbaa !42, !range !40, !noundef !41
  %911 = trunc i8 %910 to i1
  br i1 %911, label %912, label %941

912:                                              ; preds = %856
  %913 = load ptr, ptr %12, align 8, !tbaa !5
  %914 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %913, i32 0, i32 13
  %915 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZN11alglib_impl10stimerstopEPNS_6stimerEPNS_8ae_stateE(ptr noundef %914, ptr noundef %915)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.675)
  %916 = load ptr, ptr %12, align 8, !tbaa !5
  %917 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %916, i32 0, i32 13
  %918 = load ptr, ptr %22, align 8, !tbaa !5
  %919 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef %917, ptr noundef %918)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.676, double noundef %919)
  %920 = load ptr, ptr %12, align 8, !tbaa !5
  %921 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %920, i32 0, i32 14
  %922 = load ptr, ptr %22, align 8, !tbaa !5
  %923 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef %921, ptr noundef %922)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.677, double noundef %923)
  %924 = load ptr, ptr %12, align 8, !tbaa !5
  %925 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %924, i32 0, i32 15
  %926 = load ptr, ptr %22, align 8, !tbaa !5
  %927 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef %925, ptr noundef %926)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.678, double noundef %927)
  %928 = load ptr, ptr %12, align 8, !tbaa !5
  %929 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %928, i32 0, i32 16
  %930 = load ptr, ptr %22, align 8, !tbaa !5
  %931 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef %929, ptr noundef %930)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.679, double noundef %931)
  %932 = load ptr, ptr %12, align 8, !tbaa !5
  %933 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %932, i32 0, i32 17
  %934 = load ptr, ptr %22, align 8, !tbaa !5
  %935 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef %933, ptr noundef %934)
  %936 = load ptr, ptr %12, align 8, !tbaa !5
  %937 = getelementptr inbounds %"struct.alglib_impl::ecqpstate", ptr %936, i32 0, i32 16
  %938 = load ptr, ptr %22, align 8, !tbaa !5
  %939 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef %937, ptr noundef %938)
  %940 = fsub double %935, %939
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.680, double noundef %940)
  br label %941

941:                                              ; preds = %912, %856
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  ret void
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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, !10, i64 320}
!12 = !{!"_ZTSN11alglib_impl12sparsematrixE", !13, i64 0, !13, i64 64, !13, i64 128, !13, i64 192, !13, i64 256, !10, i64 320, !10, i64 328, !10, i64 336, !10, i64 344, !10, i64 352, !10, i64 360}
!13 = !{!"_ZTSN11alglib_impl9ae_vectorE", !10, i64 0, !10, i64 8, !14, i64 16, !15, i64 24, !7, i64 56}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!16 = !{!12, !10, i64 328}
!17 = !{!12, !10, i64 336}
!18 = !{!13, !10, i64 0}
!19 = !{!7, !7, i64 0}
!20 = !{!21, !10, i64 17064}
!21 = !{!"_ZTSN11alglib_impl9ecqpstateE", !12, i64 0, !13, i64 368, !22, i64 432, !13, i64 15496, !13, i64 15560, !13, i64 15624, !13, i64 15688, !13, i64 15752, !34, i64 15816, !10, i64 17064, !10, i64 17072, !14, i64 17080, !14, i64 17081, !37, i64 17088, !37, i64 17112, !37, i64 17136, !37, i64 17160, !37, i64 17184}
!22 = !{!"_ZTSN11alglib_impl14spcholanalysisE", !10, i64 0, !10, i64 8, !10, i64 16, !14, i64 24, !10, i64 32, !23, i64 40, !23, i64 48, !23, i64 56, !23, i64 64, !13, i64 72, !14, i64 136, !14, i64 137, !14, i64 138, !14, i64 139, !14, i64 140, !13, i64 144, !10, i64 208, !13, i64 216, !13, i64 280, !13, i64 344, !13, i64 408, !13, i64 472, !13, i64 536, !14, i64 600, !13, i64 608, !13, i64 672, !13, i64 736, !13, i64 800, !13, i64 864, !13, i64 928, !14, i64 992, !14, i64 993, !24, i64 1000, !13, i64 1512, !13, i64 1576, !13, i64 1640, !13, i64 1704, !13, i64 1768, !13, i64 1832, !25, i64 1896, !25, i64 2040, !25, i64 2184, !25, i64 2328, !25, i64 2472, !25, i64 2616, !13, i64 2760, !13, i64 2824, !13, i64 2888, !13, i64 2952, !13, i64 3016, !27, i64 3080, !33, i64 7464, !13, i64 13816, !13, i64 13880, !13, i64 13944, !13, i64 14008, !13, i64 14072, !13, i64 14136, !12, i64 14200, !12, i64 14568, !13, i64 14936, !13, i64 15000}
!23 = !{!"double", !7, i64 0}
!24 = !{!"_ZTSN11alglib_impl9spcholadjE", !13, i64 0, !13, i64 64, !13, i64 128, !13, i64 192, !13, i64 256, !13, i64 320, !13, i64 384, !13, i64 448}
!25 = !{!"_ZTSN11alglib_impl9ae_nxpoolE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !15, i64 32, !26, i64 64, !15, i64 112}
!26 = !{!"_ZTSN11alglib_impl7ae_lockE", !6, i64 0, !15, i64 8, !14, i64 40}
!27 = !{!"_ZTSN11alglib_impl9amdbufferE", !10, i64 0, !14, i64 8, !14, i64 9, !13, i64 16, !13, i64 80, !13, i64 144, !28, i64 208, !28, i64 568, !28, i64 928, !29, i64 1288, !30, i64 1496, !31, i64 1968, !13, i64 2120, !13, i64 2184, !13, i64 2248, !31, i64 2312, !31, i64 2464, !31, i64 2616, !31, i64 2768, !31, i64 2920, !31, i64 3072, !13, i64 3224, !10, i64 3288, !31, i64 3296, !31, i64 3448, !28, i64 3600, !31, i64 3960, !13, i64 4112, !13, i64 4176, !13, i64 4240, !32, i64 4304}
!28 = !{!"_ZTSN11alglib_impl8amdknsetE", !10, i64 0, !10, i64 8, !13, i64 16, !13, i64 80, !13, i64 144, !13, i64 208, !13, i64 272, !10, i64 336, !10, i64 344, !10, i64 352}
!29 = !{!"_ZTSN11alglib_impl11amdllmatrixE", !10, i64 0, !13, i64 8, !13, i64 72, !13, i64 136, !10, i64 200}
!30 = !{!"_ZTSN11alglib_impl12amdvertexsetE", !10, i64 0, !14, i64 8, !10, i64 16, !13, i64 24, !13, i64 88, !13, i64 152, !13, i64 216, !13, i64 280, !13, i64 344, !13, i64 408}
!31 = !{!"_ZTSN11alglib_impl5nisetE", !10, i64 0, !10, i64 8, !13, i64 16, !13, i64 80, !10, i64 144}
!32 = !{!"_ZTSN11alglib_impl9ae_matrixE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !14, i64 32, !15, i64 40, !7, i64 72}
!33 = !{!"_ZTSN11alglib_impl18priorityamdbuffersE", !13, i64 0, !13, i64 64, !27, i64 128, !12, i64 4512, !12, i64 4880, !12, i64 5248, !12, i64 5616, !12, i64 5984}
!34 = !{!"_ZTSN11alglib_impl14fblsgmresstateE", !13, i64 0, !13, i64 64, !13, i64 128, !13, i64 192, !32, i64 256, !32, i64 336, !32, i64 416, !32, i64 496, !32, i64 576, !13, i64 656, !13, i64 720, !13, i64 784, !13, i64 848, !10, i64 912, !10, i64 920, !23, i64 928, !23, i64 936, !23, i64 944, !23, i64 952, !10, i64 960, !10, i64 968, !23, i64 976, !35, i64 984}
!35 = !{!"_ZTSN11alglib_impl10rcommstateE", !36, i64 0, !13, i64 8, !13, i64 72, !13, i64 136, !13, i64 200}
!36 = !{!"int", !7, i64 0}
!37 = !{!"_ZTSN11alglib_impl6stimerE", !10, i64 0, !10, i64 8, !14, i64 16}
!38 = !{!21, !10, i64 17072}
!39 = !{!21, !14, i64 17080}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = !{!21, !14, i64 17081}
!43 = !{!21, !10, i64 320}
!44 = !{!21, !10, i64 328}
!45 = !{!21, !10, i64 336}
!46 = !{!23, !23, i64 0}
!47 = distinct !{!47, !48}
!48 = !{!"llvm.loop.mustprogress"}
!49 = distinct !{!49, !48}
!50 = distinct !{!50, !48}
!51 = distinct !{!51, !48}
!52 = !{!21, !10, i64 0}
!53 = !{!21, !10, i64 64}
!54 = distinct !{!54, !48}
!55 = distinct !{!55, !48}
!56 = distinct !{!56, !48}
!57 = !{!21, !23, i64 16752}
!58 = !{!21, !23, i64 16760}
!59 = !{!21, !23, i64 16792}
!60 = distinct !{!60, !48}
!61 = distinct !{!61, !48}
!62 = distinct !{!62, !48}


; 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.212 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.612 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.675 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.676 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.677 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.678 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.679 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.680 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.681 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.682 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.683 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.684 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.685 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.686 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.687 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.688 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.689 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.690 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.691 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.692 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.693 = external hidden unnamed_addr constant [33 x i8], align 1
@_ZN11alglib_implL20ecqpsolver_mupromoteE = external hidden local_unnamed_addr global double, align 8
@.str.694 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.695 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.696 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.697 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.698 = external hidden unnamed_addr constant [49 x i8], align 1

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef, ...) local_unnamed_addr #1

declare noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl9ecqpsolveEPNS_9ecqpstateElPKNS_12sparsematrixEPKNS_9ae_vectorES4_S7_lPS5_S8_PlPNS_8ae_stateE(ptr noundef %0, i64 noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, i64 noundef %6, ptr noundef %7, ptr noundef %8, ptr nocapture noundef writeonly %9, ptr noundef %10) local_unnamed_addr #2 {
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #4
  store i64 0, ptr %9, align 8, !tbaa !5
  %14 = icmp sgt i64 %1, 0
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %14, ptr noundef nonnull @.str.681, ptr noundef %10)
  %15 = tail call noundef zeroext i1 @_ZN11alglib_impl14isfinitevectorEPKNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %3, i64 noundef %1, ptr noundef %10)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %15, ptr noundef nonnull @.str.682, ptr noundef %10)
  %16 = icmp sgt i64 %6, -1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %16, ptr noundef nonnull @.str.683, ptr noundef %10)
  %17 = icmp eq i64 %6, 0
  br i1 %17, label %.critedge, label %18

18:                                               ; preds = %11
  %19 = getelementptr inbounds i8, ptr %4, i64 320
  %20 = load i64, ptr %19, align 8, !tbaa !9
  %21 = icmp eq i64 %20, 1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %21, ptr noundef nonnull @.str.684, ptr noundef %10)
  %22 = getelementptr inbounds i8, ptr %4, i64 328
  %23 = load i64, ptr %22, align 8, !tbaa !15
  %24 = icmp eq i64 %23, %6
  br i1 %24, label %25, label %29

25:                                               ; preds = %18
  %26 = getelementptr inbounds i8, ptr %4, i64 336
  %27 = load i64, ptr %26, align 8, !tbaa !16
  %28 = icmp eq i64 %27, %1
  br label %29

.critedge:                                        ; preds = %11
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext true, ptr noundef nonnull @.str.684, ptr noundef %10)
  br label %29

29:                                               ; preds = %.critedge, %18, %25
  %30 = phi i1 [ false, %18 ], [ %28, %25 ], [ true, %.critedge ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %30, ptr noundef nonnull @.str.685, ptr noundef %10)
  %31 = load i64, ptr %5, align 8, !tbaa !17
  %32 = icmp sge i64 %31, %6
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %32, ptr noundef nonnull @.str.686, ptr noundef %10)
  %33 = icmp sgt i64 %6, 0
  br i1 %33, label %34, label %39

34:                                               ; preds = %29
  %35 = getelementptr inbounds i8, ptr %4, i64 184
  %36 = load ptr, ptr %35, align 8, !tbaa !18
  %37 = getelementptr inbounds i64, ptr %36, i64 %6
  %38 = load i64, ptr %37, align 8, !tbaa !5
  br label %39

39:                                               ; preds = %34, %29
  %.0361 = phi i64 [ %38, %34 ], [ 0, %29 ]
  %40 = add nsw i64 %6, %1
  %41 = getelementptr inbounds i8, ptr %0, i64 17064
  %42 = getelementptr inbounds i8, ptr %0, i64 17072
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %41, i8 0, i64 16, i1 false)
  %43 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.687)
  %44 = getelementptr inbounds i8, ptr %0, i64 17080
  %45 = zext i1 %43 to i8
  store i8 %45, ptr %44, align 8, !tbaa !19
  br i1 %43, label %.thread, label %47

.thread:                                          ; preds = %39
  %46 = getelementptr inbounds i8, ptr %0, i64 17081
  store i8 1, ptr %46, align 1, !tbaa !37
  br label %51

47:                                               ; preds = %39
  %48 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.688)
  %49 = getelementptr inbounds i8, ptr %0, i64 17081
  %50 = zext i1 %48 to i8
  store i8 %50, ptr %49, align 1, !tbaa !37
  br i1 %48, label %51, label %58

51:                                               ; preds = %.thread, %47
  %52 = phi ptr [ %46, %.thread ], [ %49, %47 ]
  %53 = getelementptr inbounds i8, ptr %0, i64 17088
  tail call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %53, ptr noundef %10)
  %54 = getelementptr inbounds i8, ptr %0, i64 17112
  tail call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %54, ptr noundef %10)
  %55 = getelementptr inbounds i8, ptr %0, i64 17136
  tail call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %55, ptr noundef %10)
  %56 = getelementptr inbounds i8, ptr %0, i64 17160
  tail call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %56, ptr noundef %10)
  %57 = getelementptr inbounds i8, ptr %0, i64 17184
  tail call void @_ZN11alglib_impl10stimerinitEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %57, ptr noundef %10)
  tail call void @_ZN11alglib_impl11stimerstartEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %53, ptr noundef %10)
  br label %58

58:                                               ; preds = %51, %47
  %59 = phi ptr [ %52, %51 ], [ %49, %47 ]
  %60 = load i8, ptr %44, align 8, !tbaa !19, !range !38, !noundef !39
  %61 = trunc nuw i8 %60 to i1
  br i1 %61, label %65, label %62

62:                                               ; preds = %58
  %63 = load i8, ptr %59, align 1, !tbaa !37, !range !38, !noundef !39
  %64 = trunc nuw i8 %63 to i1
  br i1 %64, label %65, label %66

65:                                               ; preds = %62, %58
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.612)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.212)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.689)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.212)
  br label %66

66:                                               ; preds = %65, %62
  %67 = getelementptr inbounds i8, ptr %0, i64 15496
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %40, ptr noundef nonnull %67, ptr noundef %10)
  %68 = getelementptr inbounds i8, ptr %0, i64 320
  store i64 1, ptr %68, align 8, !tbaa !40
  %69 = getelementptr inbounds i8, ptr %0, i64 328
  store i64 %40, ptr %69, align 8, !tbaa !41
  %70 = getelementptr inbounds i8, ptr %0, i64 336
  store i64 %40, ptr %70, align 8, !tbaa !42
  %71 = add nsw i64 %40, 1
  %72 = getelementptr inbounds i8, ptr %0, i64 128
  tail call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %71, ptr noundef nonnull %72, ptr noundef %10)
  %73 = getelementptr inbounds i8, ptr %2, i64 320
  %74 = load i64, ptr %73, align 8, !tbaa !9
  %75 = icmp eq i64 %74, 1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %75, ptr noundef nonnull @.str.690, ptr noundef %10)
  %76 = getelementptr inbounds i8, ptr %2, i64 328
  %77 = load i64, ptr %76, align 8, !tbaa !15
  %78 = icmp eq i64 %77, %1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %78, ptr noundef nonnull @.str.691, ptr noundef %10)
  %79 = getelementptr inbounds i8, ptr %2, i64 336
  %80 = load i64, ptr %79, align 8, !tbaa !16
  %81 = icmp eq i64 %80, %1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %81, ptr noundef nonnull @.str.691, ptr noundef %10)
  %82 = getelementptr inbounds i8, ptr %2, i64 184
  %83 = load ptr, ptr %82, align 8, !tbaa !18
  %84 = getelementptr inbounds i64, ptr %83, i64 %1
  %85 = load i64, ptr %84, align 8, !tbaa !5
  %factor = shl i64 %1, 1
  %86 = add i64 %.0361, %factor
  %87 = add i64 %86, %85
  %88 = getelementptr inbounds i8, ptr %0, i64 64
  tail call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %87, ptr noundef nonnull %88, ptr noundef %10)
  %89 = load ptr, ptr %82, align 8, !tbaa !18
  %90 = getelementptr inbounds i64, ptr %89, i64 %1
  %91 = load i64, ptr %90, align 8, !tbaa !5
  %92 = add i64 %86, %91
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %92, ptr noundef nonnull %0, ptr noundef %10)
  %93 = getelementptr inbounds i8, ptr %0, i64 184
  %94 = load ptr, ptr %93, align 8, !tbaa !18
  store i64 0, ptr %94, align 8, !tbaa !5
  br i1 %14, label %.lr.ph399, label %.preheader388

.lr.ph399:                                        ; preds = %66
  %95 = getelementptr inbounds i8, ptr %2, i64 248
  %96 = getelementptr inbounds i8, ptr %2, i64 56
  %97 = getelementptr inbounds i8, ptr %2, i64 120
  %98 = getelementptr inbounds i8, ptr %0, i64 120
  %99 = getelementptr inbounds i8, ptr %0, i64 56
  %100 = getelementptr inbounds i8, ptr %2, i64 312
  %101 = getelementptr inbounds i8, ptr %0, i64 15552
  br label %108

.preheader388:                                    ; preds = %166, %66
  %.0368.lcssa = phi double [ 0.000000e+00, %66 ], [ %173, %166 ]
  %.0364.lcssa = phi i64 [ 0, %66 ], [ %174, %166 ]
  br i1 %33, label %.lr.ph411, label %._crit_edge412

.lr.ph411:                                        ; preds = %.preheader388
  %102 = getelementptr inbounds i8, ptr %4, i64 184
  %103 = getelementptr inbounds i8, ptr %4, i64 120
  %104 = getelementptr inbounds i8, ptr %0, i64 120
  %105 = getelementptr inbounds i8, ptr %4, i64 56
  %106 = getelementptr inbounds i8, ptr %0, i64 56
  %107 = getelementptr inbounds i8, ptr %0, i64 15552
  br label %178

108:                                              ; preds = %.lr.ph399, %166
  %.0362397 = phi i64 [ 0, %.lr.ph399 ], [ %176, %166 ]
  %.0364396 = phi i64 [ 0, %.lr.ph399 ], [ %174, %166 ]
  %.0368395 = phi double [ 0.000000e+00, %.lr.ph399 ], [ %173, %166 ]
  %109 = load ptr, ptr %82, align 8, !tbaa !18
  %110 = getelementptr inbounds i64, ptr %109, i64 %.0362397
  %111 = load i64, ptr %110, align 8, !tbaa !5
  %112 = load ptr, ptr %95, align 8, !tbaa !18
  %113 = getelementptr inbounds i64, ptr %112, i64 %.0362397
  %114 = load i64, ptr %113, align 8, !tbaa !5
  %.not384.not389 = icmp slt i64 %111, %114
  br i1 %.not384.not389, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %108
  %115 = add i64 %.0364396, %114
  %116 = sub i64 %115, %111
  %117 = sub i64 %114, %111
  %.neg = add i64 %111, 1
  %xtraiter = and i64 %117, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader
  %118 = load ptr, ptr %96, align 8, !tbaa !18
  %119 = getelementptr inbounds double, ptr %118, i64 %111
  %120 = load double, ptr %119, align 8, !tbaa !43
  %121 = load ptr, ptr %97, align 8, !tbaa !18
  %122 = getelementptr inbounds i64, ptr %121, i64 %111
  %123 = load i64, ptr %122, align 8, !tbaa !5
  %124 = load ptr, ptr %98, align 8, !tbaa !18
  %125 = getelementptr inbounds i64, ptr %124, i64 %.0364396
  store i64 %123, ptr %125, align 8, !tbaa !5
  %126 = load ptr, ptr %99, align 8, !tbaa !18
  %127 = getelementptr inbounds double, ptr %126, i64 %.0364396
  store double %120, ptr %127, align 8, !tbaa !43
  %128 = fadd double %.0368395, %120
  %129 = add i64 %.0364396, 1
  %130 = add nsw i64 %111, 1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader
  %.lcssa455.unr = phi double [ poison, %.lr.ph.preheader ], [ %128, %.lr.ph.prol ]
  %.1365392.unr = phi i64 [ %.0364396, %.lr.ph.preheader ], [ %129, %.lr.ph.prol ]
  %.1369391.unr = phi double [ %.0368395, %.lr.ph.preheader ], [ %128, %.lr.ph.prol ]
  %.0371390.unr = phi i64 [ %111, %.lr.ph.preheader ], [ %130, %.lr.ph.prol ]
  %131 = icmp eq i64 %114, %.neg
  br i1 %131, label %._crit_edge.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %.1365392 = phi i64 [ %156, %.lr.ph ], [ %.1365392.unr, %.lr.ph.prol.loopexit ]
  %.1369391 = phi double [ %155, %.lr.ph ], [ %.1369391.unr, %.lr.ph.prol.loopexit ]
  %.0371390 = phi i64 [ %157, %.lr.ph ], [ %.0371390.unr, %.lr.ph.prol.loopexit ]
  %132 = load ptr, ptr %96, align 8, !tbaa !18
  %133 = getelementptr inbounds double, ptr %132, i64 %.0371390
  %134 = load double, ptr %133, align 8, !tbaa !43
  %135 = load ptr, ptr %97, align 8, !tbaa !18
  %136 = getelementptr inbounds i64, ptr %135, i64 %.0371390
  %137 = load i64, ptr %136, align 8, !tbaa !5
  %138 = load ptr, ptr %98, align 8, !tbaa !18
  %139 = getelementptr inbounds i64, ptr %138, i64 %.1365392
  store i64 %137, ptr %139, align 8, !tbaa !5
  %140 = load ptr, ptr %99, align 8, !tbaa !18
  %141 = getelementptr inbounds double, ptr %140, i64 %.1365392
  store double %134, ptr %141, align 8, !tbaa !43
  %142 = fadd double %.1369391, %134
  %143 = add i64 %.1365392, 1
  %144 = add nsw i64 %.0371390, 1
  %145 = load ptr, ptr %96, align 8, !tbaa !18
  %146 = getelementptr inbounds double, ptr %145, i64 %144
  %147 = load double, ptr %146, align 8, !tbaa !43
  %148 = load ptr, ptr %97, align 8, !tbaa !18
  %149 = getelementptr inbounds i64, ptr %148, i64 %144
  %150 = load i64, ptr %149, align 8, !tbaa !5
  %151 = load ptr, ptr %98, align 8, !tbaa !18
  %152 = getelementptr inbounds i64, ptr %151, i64 %143
  store i64 %150, ptr %152, align 8, !tbaa !5
  %153 = load ptr, ptr %99, align 8, !tbaa !18
  %154 = getelementptr inbounds double, ptr %153, i64 %143
  store double %147, ptr %154, align 8, !tbaa !43
  %155 = fadd double %142, %147
  %156 = add i64 %.1365392, 2
  %157 = add nsw i64 %.0371390, 2
  %exitcond.not.1 = icmp eq i64 %156, %116
  br i1 %exitcond.not.1, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !44

._crit_edge.loopexit:                             ; preds = %.lr.ph, %.lr.ph.prol.loopexit
  %.lcssa455 = phi double [ %.lcssa455.unr, %.lr.ph.prol.loopexit ], [ %155, %.lr.ph ]
  %.pre = load ptr, ptr %95, align 8, !tbaa !18
  %.phi.trans.insert = getelementptr inbounds i64, ptr %.pre, i64 %.0362397
  %.pre444 = load i64, ptr %.phi.trans.insert, align 8, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %108
  %158 = phi i64 [ %114, %108 ], [ %.pre444, %._crit_edge.loopexit ]
  %.1369.lcssa = phi double [ %.0368395, %108 ], [ %.lcssa455, %._crit_edge.loopexit ]
  %.1365.lcssa = phi i64 [ %.0364396, %108 ], [ %116, %._crit_edge.loopexit ]
  %159 = load ptr, ptr %100, align 8, !tbaa !18
  %160 = getelementptr inbounds i64, ptr %159, i64 %.0362397
  %161 = load i64, ptr %160, align 8, !tbaa !5
  %.not385 = icmp eq i64 %161, %158
  br i1 %.not385, label %166, label %162

162:                                              ; preds = %._crit_edge
  %163 = load ptr, ptr %96, align 8, !tbaa !18
  %164 = getelementptr inbounds double, ptr %163, i64 %158
  %165 = load double, ptr %164, align 8, !tbaa !43
  br label %166

166:                                              ; preds = %162, %._crit_edge
  %.0370 = phi double [ %165, %162 ], [ 0.000000e+00, %._crit_edge ]
  %167 = load ptr, ptr %98, align 8, !tbaa !18
  %168 = getelementptr inbounds i64, ptr %167, i64 %.1365.lcssa
  store i64 %.0362397, ptr %168, align 8, !tbaa !5
  %169 = load ptr, ptr %99, align 8, !tbaa !18
  %170 = getelementptr inbounds double, ptr %169, i64 %.1365.lcssa
  store double %.0370, ptr %170, align 8, !tbaa !43
  %171 = load ptr, ptr %101, align 8, !tbaa !18
  %172 = getelementptr inbounds double, ptr %171, i64 %.0362397
  store double %.0370, ptr %172, align 8, !tbaa !43
  %173 = fadd double %.1369.lcssa, %.0370
  %174 = add nsw i64 %.1365.lcssa, 1
  %175 = load ptr, ptr %93, align 8, !tbaa !18
  %176 = add nuw nsw i64 %.0362397, 1
  %177 = getelementptr inbounds i64, ptr %175, i64 %176
  store i64 %174, ptr %177, align 8, !tbaa !5
  %exitcond439.not = icmp eq i64 %176, %1
  br i1 %exitcond439.not, label %.preheader388, label %108, !llvm.loop !46

178:                                              ; preds = %.lr.ph411, %._crit_edge407
  %.1410 = phi i64 [ 0, %.lr.ph411 ], [ %186, %._crit_edge407 ]
  %179 = load ptr, ptr %93, align 8, !tbaa !18
  %180 = add nsw i64 %.1410, %1
  %181 = getelementptr inbounds i64, ptr %179, i64 %180
  %182 = load i64, ptr %181, align 8, !tbaa !5
  %183 = load ptr, ptr %102, align 8, !tbaa !18
  %184 = getelementptr inbounds i64, ptr %183, i64 %.1410
  %185 = load i64, ptr %184, align 8, !tbaa !5
  %186 = add nuw nsw i64 %.1410, 1
  %187 = getelementptr inbounds i64, ptr %183, i64 %186
  %188 = load i64, ptr %187, align 8, !tbaa !5
  %.not383.not402 = icmp slt i64 %185, %188
  br i1 %.not383.not402, label %.lr.ph406.preheader, label %._crit_edge407

.lr.ph406.preheader:                              ; preds = %178
  %189 = sub i64 %188, %185
  %.neg466 = add i64 %185, 1
  %xtraiter458 = and i64 %189, 1
  %lcmp.mod459.not = icmp eq i64 %xtraiter458, 0
  br i1 %lcmp.mod459.not, label %.lr.ph406.prol.loopexit, label %.lr.ph406.prol

.lr.ph406.prol:                                   ; preds = %.lr.ph406.preheader
  %190 = load ptr, ptr %103, align 8, !tbaa !18
  %191 = getelementptr inbounds i64, ptr %190, i64 %185
  %192 = load i64, ptr %191, align 8, !tbaa !5
  %193 = load ptr, ptr %104, align 8, !tbaa !18
  %194 = getelementptr inbounds i64, ptr %193, i64 %182
  store i64 %192, ptr %194, align 8, !tbaa !5
  %195 = load ptr, ptr %105, align 8, !tbaa !18
  %196 = getelementptr inbounds double, ptr %195, i64 %185
  %197 = load double, ptr %196, align 8, !tbaa !43
  %198 = load ptr, ptr %106, align 8, !tbaa !18
  %199 = getelementptr inbounds double, ptr %198, i64 %182
  store double %197, ptr %199, align 8, !tbaa !43
  %200 = add nsw i64 %182, 1
  %201 = add nsw i64 %185, 1
  br label %.lr.ph406.prol.loopexit

.lr.ph406.prol.loopexit:                          ; preds = %.lr.ph406.prol, %.lr.ph406.preheader
  %.lcssa.unr = phi i64 [ poison, %.lr.ph406.preheader ], [ %200, %.lr.ph406.prol ]
  %.3367404.unr = phi i64 [ %182, %.lr.ph406.preheader ], [ %200, %.lr.ph406.prol ]
  %.0372403.unr = phi i64 [ %185, %.lr.ph406.preheader ], [ %201, %.lr.ph406.prol ]
  %202 = icmp eq i64 %188, %.neg466
  br i1 %202, label %._crit_edge407, label %.lr.ph406

.lr.ph406:                                        ; preds = %.lr.ph406.prol.loopexit, %.lr.ph406
  %.3367404 = phi i64 [ %225, %.lr.ph406 ], [ %.3367404.unr, %.lr.ph406.prol.loopexit ]
  %.0372403 = phi i64 [ %226, %.lr.ph406 ], [ %.0372403.unr, %.lr.ph406.prol.loopexit ]
  %203 = load ptr, ptr %103, align 8, !tbaa !18
  %204 = getelementptr inbounds i64, ptr %203, i64 %.0372403
  %205 = load i64, ptr %204, align 8, !tbaa !5
  %206 = load ptr, ptr %104, align 8, !tbaa !18
  %207 = getelementptr inbounds i64, ptr %206, i64 %.3367404
  store i64 %205, ptr %207, align 8, !tbaa !5
  %208 = load ptr, ptr %105, align 8, !tbaa !18
  %209 = getelementptr inbounds double, ptr %208, i64 %.0372403
  %210 = load double, ptr %209, align 8, !tbaa !43
  %211 = load ptr, ptr %106, align 8, !tbaa !18
  %212 = getelementptr inbounds double, ptr %211, i64 %.3367404
  store double %210, ptr %212, align 8, !tbaa !43
  %213 = add nsw i64 %.3367404, 1
  %214 = add nsw i64 %.0372403, 1
  %215 = load ptr, ptr %103, align 8, !tbaa !18
  %216 = getelementptr inbounds i64, ptr %215, i64 %214
  %217 = load i64, ptr %216, align 8, !tbaa !5
  %218 = load ptr, ptr %104, align 8, !tbaa !18
  %219 = getelementptr inbounds i64, ptr %218, i64 %213
  store i64 %217, ptr %219, align 8, !tbaa !5
  %220 = load ptr, ptr %105, align 8, !tbaa !18
  %221 = getelementptr inbounds double, ptr %220, i64 %214
  %222 = load double, ptr %221, align 8, !tbaa !43
  %223 = load ptr, ptr %106, align 8, !tbaa !18
  %224 = getelementptr inbounds double, ptr %223, i64 %213
  store double %222, ptr %224, align 8, !tbaa !43
  %225 = add nsw i64 %.3367404, 2
  %226 = add nsw i64 %.0372403, 2
  %exitcond440.not.1 = icmp eq i64 %226, %188
  br i1 %exitcond440.not.1, label %._crit_edge407, label %.lr.ph406, !llvm.loop !47

._crit_edge407:                                   ; preds = %.lr.ph406.prol.loopexit, %.lr.ph406, %178
  %.3367.lcssa = phi i64 [ %182, %178 ], [ %.lcssa.unr, %.lr.ph406.prol.loopexit ], [ %225, %.lr.ph406 ]
  %227 = load ptr, ptr %104, align 8, !tbaa !18
  %228 = getelementptr inbounds i64, ptr %227, i64 %.3367.lcssa
  store i64 %180, ptr %228, align 8, !tbaa !5
  %229 = load ptr, ptr %106, align 8, !tbaa !18
  %230 = getelementptr inbounds double, ptr %229, i64 %.3367.lcssa
  store double 0.000000e+00, ptr %230, align 8, !tbaa !43
  %231 = load ptr, ptr %107, align 8, !tbaa !18
  %232 = getelementptr inbounds double, ptr %231, i64 %180
  store double 0.000000e+00, ptr %232, align 8, !tbaa !43
  %233 = add nsw i64 %.3367.lcssa, 1
  %234 = load ptr, ptr %93, align 8, !tbaa !18
  %235 = getelementptr i64, ptr %234, i64 %180
  %236 = getelementptr i8, ptr %235, i64 8
  store i64 %233, ptr %236, align 8, !tbaa !5
  %exitcond441.not = icmp eq i64 %186, %6
  br i1 %exitcond441.not, label %._crit_edge412, label %178, !llvm.loop !48

._crit_edge412:                                   ; preds = %._crit_edge407, %.preheader388
  %.2366.lcssa = phi i64 [ %.0364.lcssa, %.preheader388 ], [ %233, %._crit_edge407 ]
  %237 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %.0368.lcssa, ptr noundef %10)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %237, ptr noundef nonnull @.str.692, ptr noundef %10)
  %238 = load i64, ptr %0, align 8, !tbaa !49
  %.not = icmp sgt i64 %.2366.lcssa, %238
  br i1 %.not, label %242, label %239

239:                                              ; preds = %._crit_edge412
  %240 = load i64, ptr %88, align 8, !tbaa !50
  %241 = icmp sle i64 %.2366.lcssa, %240
  br label %242

242:                                              ; preds = %239, %._crit_edge412
  %243 = phi i1 [ false, %._crit_edge412 ], [ %241, %239 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %243, ptr noundef nonnull @.str.693, ptr noundef %10)
  tail call void @_ZN11alglib_impl22sparsecreatecrsinplaceEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %10)
  %244 = load i64, ptr %70, align 8, !tbaa !42
  %245 = getelementptr inbounds i8, ptr %0, i64 368
  tail call void @_ZN11alglib_impl10isetallocvEllPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %244, i64 noundef 0, ptr noundef nonnull %245, ptr noundef %10)
  tail call void @_ZN11alglib_impl5isetvEllPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1, i64 noundef 1, ptr noundef nonnull %245, ptr noundef %10)
  %246 = getelementptr inbounds i8, ptr %0, i64 17112
  %247 = load i8, ptr %59, align 1, !tbaa !37, !range !38, !noundef !39
  %248 = trunc nuw i8 %247 to i1
  tail call void @_ZN11alglib_impl15stimerstartcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef nonnull %246, i1 noundef zeroext %248, ptr noundef %10)
  %249 = load double, ptr @_ZN11alglib_implL20ecqpsolver_mupromoteE, align 8, !tbaa !43
  %250 = getelementptr inbounds i8, ptr %0, i64 432
  %251 = tail call noundef zeroext i1 @_ZN11alglib_impl13spsymmanalyzeEPKNS_12sparsematrixEPKNS_9ae_vectorEdllllPNS_14spcholanalysisEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef nonnull %245, double noundef %249, i64 noundef 0, i64 noundef 1, i64 noundef 3, i64 noundef 1, ptr noundef nonnull %250, ptr noundef %10)
  br i1 %251, label %253, label %252

252:                                              ; preds = %242
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef nonnull @.str.694, ptr noundef %10)
  br label %253

253:                                              ; preds = %252, %242
  %254 = load i8, ptr %59, align 1, !tbaa !37, !range !38, !noundef !39
  %255 = trunc nuw i8 %254 to i1
  tail call void @_ZN11alglib_impl14stimerstopcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef nonnull %246, i1 noundef zeroext %255, ptr noundef %10)
  %256 = getelementptr inbounds i8, ptr %0, i64 15560
  tail call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %40, ptr noundef nonnull %256, ptr noundef %10)
  %257 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %10)
  %258 = getelementptr inbounds i8, ptr %0, i64 15552
  %259 = getelementptr inbounds i8, ptr %0, i64 15616
  %260 = getelementptr inbounds i8, ptr %0, i64 17136
  %261 = add i64 %1, -1
  %xtraiter460 = and i64 %1, 1
  %262 = icmp eq i64 %261, 0
  %unroll_iter = and i64 %1, 9223372036854775806
  %lcmp.mod461.not = icmp eq i64 %xtraiter460, 0
  br label %.backedge

.backedge:                                        ; preds = %.backedge.backedge, %253
  %.0363 = phi double [ %257, %253 ], [ %.0363.be, %.backedge.backedge ]
  br i1 %14, label %.lr.ph417.preheader, label %.preheader387

.lr.ph417.preheader:                              ; preds = %.backedge
  br i1 %262, label %.preheader387.loopexit.unr-lcssa, label %.lr.ph417

.preheader387.loopexit.unr-lcssa:                 ; preds = %.lr.ph417, %.lr.ph417.preheader
  %.2415.unr = phi i64 [ 0, %.lr.ph417.preheader ], [ %282, %.lr.ph417 ]
  br i1 %lcmp.mod461.not, label %.preheader387, label %.lr.ph417.epil

.lr.ph417.epil:                                   ; preds = %.preheader387.loopexit.unr-lcssa
  %263 = load ptr, ptr %258, align 8, !tbaa !18
  %264 = getelementptr inbounds double, ptr %263, i64 %.2415.unr
  %265 = load double, ptr %264, align 8, !tbaa !43
  %266 = fadd double %.0363, %265
  %267 = load ptr, ptr %259, align 8, !tbaa !18
  %268 = getelementptr inbounds double, ptr %267, i64 %.2415.unr
  store double %266, ptr %268, align 8, !tbaa !43
  br label %.preheader387

.preheader387:                                    ; preds = %.lr.ph417.epil, %.preheader387.loopexit.unr-lcssa, %.backedge
  br i1 %33, label %.lr.ph420, label %._crit_edge421

.lr.ph417:                                        ; preds = %.lr.ph417.preheader, %.lr.ph417
  %.2415 = phi i64 [ %282, %.lr.ph417 ], [ 0, %.lr.ph417.preheader ]
  %niter = phi i64 [ %niter.next.1, %.lr.ph417 ], [ 0, %.lr.ph417.preheader ]
  %269 = load ptr, ptr %258, align 8, !tbaa !18
  %270 = getelementptr inbounds double, ptr %269, i64 %.2415
  %271 = load double, ptr %270, align 8, !tbaa !43
  %272 = fadd double %.0363, %271
  %273 = load ptr, ptr %259, align 8, !tbaa !18
  %274 = getelementptr inbounds double, ptr %273, i64 %.2415
  store double %272, ptr %274, align 8, !tbaa !43
  %275 = or disjoint i64 %.2415, 1
  %276 = load ptr, ptr %258, align 8, !tbaa !18
  %277 = getelementptr inbounds double, ptr %276, i64 %275
  %278 = load double, ptr %277, align 8, !tbaa !43
  %279 = fadd double %.0363, %278
  %280 = load ptr, ptr %259, align 8, !tbaa !18
  %281 = getelementptr inbounds double, ptr %280, i64 %275
  store double %279, ptr %281, align 8, !tbaa !43
  %282 = add nuw nsw i64 %.2415, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.preheader387.loopexit.unr-lcssa, label %.lr.ph417, !llvm.loop !51

.lr.ph420:                                        ; preds = %.preheader387, %.lr.ph420
  %.3419 = phi i64 [ %289, %.lr.ph420 ], [ %1, %.preheader387 ]
  %283 = load ptr, ptr %258, align 8, !tbaa !18
  %284 = getelementptr inbounds double, ptr %283, i64 %.3419
  %285 = load double, ptr %284, align 8, !tbaa !43
  %286 = fsub double %285, %.0363
  %287 = load ptr, ptr %259, align 8, !tbaa !18
  %288 = getelementptr inbounds double, ptr %287, i64 %.3419
  store double %286, ptr %288, align 8, !tbaa !43
  %289 = add nsw i64 %.3419, 1
  %.not380.not = icmp slt i64 %289, %40
  br i1 %.not380.not, label %.lr.ph420, label %._crit_edge421, !llvm.loop !52

._crit_edge421:                                   ; preds = %.lr.ph420, %.preheader387
  call void @_ZN11alglib_impl20spsymmreloaddiagonalEPNS_14spcholanalysisEPKNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %250, ptr noundef nonnull %256, ptr noundef %10)
  call void @_ZN11alglib_impl29spsymmsetmodificationstrategyEPNS_14spcholanalysisElddddPNS_8ae_stateE(ptr noundef nonnull %250, i64 noundef 1, double noundef 5.000000e-16, double noundef 1.000000e+50, double noundef 0.000000e+00, double noundef 0.000000e+00, ptr noundef %10)
  %290 = load i8, ptr %59, align 1, !tbaa !37, !range !38, !noundef !39
  %291 = trunc nuw i8 %290 to i1
  call void @_ZN11alglib_impl15stimerstartcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef nonnull %260, i1 noundef zeroext %291, ptr noundef %10)
  %292 = call noundef zeroext i1 @_ZN11alglib_impl15spsymmfactorizeEPNS_14spcholanalysisEPNS_8ae_stateE(ptr noundef nonnull %250, ptr noundef %10)
  %293 = load i8, ptr %59, align 1, !tbaa !37, !range !38, !noundef !39
  %294 = trunc nuw i8 %293 to i1
  call void @_ZN11alglib_impl14stimerstopcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef nonnull %260, i1 noundef zeroext %294, ptr noundef %10)
  br i1 %292, label %300, label %295

295:                                              ; preds = %._crit_edge421
  %296 = fmul double %.0363, 1.000000e+01
  %297 = load i8, ptr %44, align 8, !tbaa !19, !range !38, !noundef !39
  %298 = trunc nuw i8 %297 to i1
  br i1 %298, label %299, label %.backedge.backedge

299:                                              ; preds = %295
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.695, double noundef %296)
  br label %.backedge.backedge

300:                                              ; preds = %._crit_edge421
  call void @_ZN11alglib_impl13spsymmdiagerrEPNS_14spcholanalysisEPdS2_PNS_8ae_stateE(ptr noundef nonnull %250, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef %10)
  %301 = load double, ptr %13, align 8, !tbaa !43
  %302 = load double, ptr %12, align 8, !tbaa !43
  %303 = fadd double %302, 1.000000e+00
  %304 = fdiv double %301, %303
  %305 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %304, ptr noundef %10)
  %306 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 5.000000e-16, ptr noundef %10)
  %307 = fmul double %306, 1.000000e+02
  %308 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %305, double noundef %307)
  br i1 %308, label %309, label %319

309:                                              ; preds = %300
  %310 = fmul double %.0363, 1.000000e+01
  %311 = load i8, ptr %44, align 8, !tbaa !19, !range !38, !noundef !39
  %312 = trunc nuw i8 %311 to i1
  br i1 %312, label %313, label %.backedge.backedge

.backedge.backedge:                               ; preds = %309, %313, %295, %299
  %.0363.be = phi double [ %296, %299 ], [ %296, %295 ], [ %310, %313 ], [ %310, %309 ]
  br label %.backedge, !llvm.loop !53

313:                                              ; preds = %309
  %314 = load double, ptr %13, align 8, !tbaa !43
  %315 = load double, ptr %12, align 8, !tbaa !43
  %316 = fadd double %315, 1.000000e+00
  %317 = fdiv double %314, %316
  %318 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %317, ptr noundef %10)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.696, double noundef %318, double noundef %310)
  br label %.backedge.backedge

319:                                              ; preds = %300
  %320 = load i8, ptr %44, align 8, !tbaa !19, !range !38, !noundef !39
  %321 = trunc nuw i8 %320 to i1
  br i1 %321, label %322, label %323

322:                                              ; preds = %319
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.697)
  br label %323

323:                                              ; preds = %319, %322
  %324 = getelementptr inbounds i8, ptr %0, i64 17184
  %325 = load i8, ptr %59, align 1, !tbaa !37, !range !38, !noundef !39
  %326 = trunc nuw i8 %325 to i1
  call void @_ZN11alglib_impl15stimerstartcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef nonnull %324, i1 noundef zeroext %326, ptr noundef %10)
  %327 = getelementptr inbounds i8, ptr %0, i64 15688
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %40, ptr noundef nonnull %327, ptr noundef %10)
  call void @_ZN11alglib_impl9rcopymulvEldPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %1, double noundef -1.000000e+00, ptr noundef %3, ptr noundef nonnull %327, ptr noundef %10)
  call void @_ZN11alglib_impl7rcopyvxElPKNS_9ae_vectorElPS0_lPNS_8ae_stateE(i64 noundef %6, ptr noundef nonnull %5, i64 noundef 0, ptr noundef nonnull %327, i64 noundef %1, ptr noundef %10)
  %328 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef 25, i64 noundef %40, ptr noundef %10)
  %329 = getelementptr inbounds i8, ptr %0, i64 15816
  call void @_ZN11alglib_impl15fblsgmrescreateEPKNS_9ae_vectorEllPNS_14fblsgmresstateEPNS_8ae_stateE(ptr noundef nonnull %327, i64 noundef %40, i64 noundef %328, ptr noundef nonnull %329, ptr noundef %10)
  %330 = getelementptr inbounds i8, ptr %0, i64 16752
  store <2 x double> <double 5.000000e-14, double 0x3FEFFFFDE7210BE9>, ptr %330, align 8, !tbaa !43
  %331 = call noundef zeroext i1 @_ZN11alglib_impl18fblsgmresiterationEPNS_14fblsgmresstateEPNS_8ae_stateE(ptr noundef nonnull %329, ptr noundef %10)
  br i1 %331, label %.lr.ph432, label %._crit_edge433

.lr.ph432:                                        ; preds = %323
  %332 = getelementptr inbounds i8, ptr %0, i64 16792
  %333 = getelementptr inbounds i8, ptr %0, i64 15936
  %334 = getelementptr inbounds i8, ptr %0, i64 16000
  %335 = getelementptr inbounds i8, ptr %0, i64 15880
  %336 = getelementptr inbounds i8, ptr %0, i64 15624
  %337 = getelementptr inbounds i8, ptr %0, i64 17160
  %338 = getelementptr inbounds i8, ptr %0, i64 15752
  %339 = getelementptr inbounds i8, ptr %0, i64 15944
  %xtraiter462 = and i64 %1, 1
  %340 = icmp eq i64 %261, 0
  %unroll_iter464 = and i64 %1, 9223372036854775806
  %lcmp.mod463.not = icmp eq i64 %xtraiter462, 0
  br label %341

341:                                              ; preds = %.lr.ph432, %383
  %.0430 = phi i32 [ 0, %.lr.ph432 ], [ %384, %383 ]
  %342 = load i8, ptr %44, align 8, !tbaa !19, !range !38, !noundef !39
  %343 = trunc nuw i8 %342 to i1
  br i1 %343, label %344, label %346

344:                                              ; preds = %341
  %345 = load double, ptr %332, align 8, !tbaa !54
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.698, i32 noundef %.0430, double noundef %345)
  br label %346

346:                                              ; preds = %344, %341
  br i1 %14, label %.lr.ph425.preheader, label %.preheader

.lr.ph425.preheader:                              ; preds = %346
  br i1 %340, label %.preheader.loopexit.unr-lcssa, label %.lr.ph425

.preheader.loopexit.unr-lcssa:                    ; preds = %.lr.ph425, %.lr.ph425.preheader
  %.4423.unr = phi i64 [ 0, %.lr.ph425.preheader ], [ %366, %.lr.ph425 ]
  br i1 %lcmp.mod463.not, label %.preheader, label %.lr.ph425.epil

.lr.ph425.epil:                                   ; preds = %.preheader.loopexit.unr-lcssa
  %347 = load ptr, ptr %333, align 8, !tbaa !18
  %348 = getelementptr inbounds double, ptr %347, i64 %.4423.unr
  %349 = load double, ptr %348, align 8, !tbaa !43
  %350 = fmul double %349, 5.000000e-13
  %351 = load ptr, ptr %334, align 8, !tbaa !18
  %352 = getelementptr inbounds double, ptr %351, i64 %.4423.unr
  store double %350, ptr %352, align 8, !tbaa !43
  br label %.preheader

.preheader:                                       ; preds = %.lr.ph425.epil, %.preheader.loopexit.unr-lcssa, %346
  br i1 %33, label %.lr.ph428, label %.critedge449

.lr.ph425:                                        ; preds = %.lr.ph425.preheader, %.lr.ph425
  %.4423 = phi i64 [ %366, %.lr.ph425 ], [ 0, %.lr.ph425.preheader ]
  %niter465 = phi i64 [ %niter465.next.1, %.lr.ph425 ], [ 0, %.lr.ph425.preheader ]
  %353 = load ptr, ptr %333, align 8, !tbaa !18
  %354 = getelementptr inbounds double, ptr %353, i64 %.4423
  %355 = load double, ptr %354, align 8, !tbaa !43
  %356 = fmul double %355, 5.000000e-13
  %357 = load ptr, ptr %334, align 8, !tbaa !18
  %358 = getelementptr inbounds double, ptr %357, i64 %.4423
  store double %356, ptr %358, align 8, !tbaa !43
  %359 = or disjoint i64 %.4423, 1
  %360 = load ptr, ptr %333, align 8, !tbaa !18
  %361 = getelementptr inbounds double, ptr %360, i64 %359
  %362 = load double, ptr %361, align 8, !tbaa !43
  %363 = fmul double %362, 5.000000e-13
  %364 = load ptr, ptr %334, align 8, !tbaa !18
  %365 = getelementptr inbounds double, ptr %364, i64 %359
  store double %363, ptr %365, align 8, !tbaa !43
  %366 = add nuw nsw i64 %.4423, 2
  %niter465.next.1 = add i64 %niter465, 2
  %niter465.ncmp.1 = icmp eq i64 %niter465.next.1, %unroll_iter464
  br i1 %niter465.ncmp.1, label %.preheader.loopexit.unr-lcssa, label %.lr.ph425, !llvm.loop !55

.lr.ph428:                                        ; preds = %.preheader, %.lr.ph428
  %.5427 = phi i64 [ %373, %.lr.ph428 ], [ %1, %.preheader ]
  %367 = load ptr, ptr %333, align 8, !tbaa !18
  %368 = getelementptr inbounds double, ptr %367, i64 %.5427
  %369 = load double, ptr %368, align 8, !tbaa !43
  %370 = fmul double %369, -5.000000e-13
  %371 = load ptr, ptr %334, align 8, !tbaa !18
  %372 = getelementptr inbounds double, ptr %371, i64 %.5427
  store double %370, ptr %372, align 8, !tbaa !43
  %373 = add nsw i64 %.5427, 1
  %.not382.not = icmp slt i64 %373, %40
  br i1 %.not382.not, label %.lr.ph428, label %._crit_edge429, !llvm.loop !56

._crit_edge429:                                   ; preds = %.lr.ph428
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %40, ptr noundef nonnull %335, ptr noundef nonnull %336, ptr noundef %10)
  %374 = load i8, ptr %59, align 1, !tbaa !37, !range !38, !noundef !39
  %375 = trunc nuw i8 %374 to i1
  call void @_ZN11alglib_impl15stimerstartcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef nonnull %337, i1 noundef zeroext %375, ptr noundef %10)
  call void @_ZN11alglib_impl11spsymmsolveEPNS_14spcholanalysisEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %250, ptr noundef nonnull %336, ptr noundef %10)
  %376 = load i8, ptr %59, align 1, !tbaa !37, !range !38, !noundef !39
  %377 = trunc nuw i8 %376 to i1
  call void @_ZN11alglib_impl14stimerstopcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef nonnull %337, i1 noundef zeroext %377, ptr noundef %10)
  call void @_ZN11alglib_impl9sparsesmvEPKNS_12sparsematrixEbPKNS_9ae_vectorEPS3_PNS_8ae_stateE(ptr noundef %2, i1 noundef zeroext false, ptr noundef nonnull %336, ptr noundef nonnull %338, ptr noundef %10)
  call void @_ZN11alglib_impl6raddvxEldPKNS_9ae_vectorElPS0_lPNS_8ae_stateE(i64 noundef %1, double noundef 1.000000e+00, ptr noundef nonnull %338, i64 noundef 0, ptr noundef nonnull %339, i64 noundef 0, ptr noundef %10)
  br i1 %33, label %378, label %383

378:                                              ; preds = %._crit_edge429
  call void @_ZN11alglib_impl10sparsegemvEPKNS_12sparsematrixEdlPKNS_9ae_vectorEldPS3_lPNS_8ae_stateE(ptr noundef %4, double noundef 1.000000e+00, i64 noundef 1, ptr noundef nonnull %336, i64 noundef %1, double noundef 1.000000e+00, ptr noundef nonnull %339, i64 noundef 0, ptr noundef %10)
  call void @_ZN11alglib_impl10sparsegemvEPKNS_12sparsematrixEdlPKNS_9ae_vectorEldPS3_lPNS_8ae_stateE(ptr noundef %4, double noundef 1.000000e+00, i64 noundef 0, ptr noundef nonnull %336, i64 noundef 0, double noundef 1.000000e+00, ptr noundef nonnull %339, i64 noundef %1, ptr noundef %10)
  br label %383

.critedge449:                                     ; preds = %.preheader
  call void @_ZN11alglib_impl11rcopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %40, ptr noundef nonnull %335, ptr noundef nonnull %336, ptr noundef %10)
  %379 = load i8, ptr %59, align 1, !tbaa !37, !range !38, !noundef !39
  %380 = trunc nuw i8 %379 to i1
  call void @_ZN11alglib_impl15stimerstartcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef nonnull %337, i1 noundef zeroext %380, ptr noundef %10)
  call void @_ZN11alglib_impl11spsymmsolveEPNS_14spcholanalysisEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %250, ptr noundef nonnull %336, ptr noundef %10)
  %381 = load i8, ptr %59, align 1, !tbaa !37, !range !38, !noundef !39
  %382 = trunc nuw i8 %381 to i1
  call void @_ZN11alglib_impl14stimerstopcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef nonnull %337, i1 noundef zeroext %382, ptr noundef %10)
  call void @_ZN11alglib_impl9sparsesmvEPKNS_12sparsematrixEbPKNS_9ae_vectorEPS3_PNS_8ae_stateE(ptr noundef %2, i1 noundef zeroext false, ptr noundef nonnull %336, ptr noundef nonnull %338, ptr noundef %10)
  call void @_ZN11alglib_impl6raddvxEldPKNS_9ae_vectorElPS0_lPNS_8ae_stateE(i64 noundef %1, double noundef 1.000000e+00, ptr noundef nonnull %338, i64 noundef 0, ptr noundef nonnull %339, i64 noundef 0, ptr noundef %10)
  br label %383

383:                                              ; preds = %.critedge449, %378, %._crit_edge429
  %384 = add i32 %.0430, 1
  %385 = call noundef zeroext i1 @_ZN11alglib_impl18fblsgmresiterationEPNS_14fblsgmresstateEPNS_8ae_stateE(ptr noundef nonnull %329, ptr noundef %10)
  br i1 %385, label %341, label %._crit_edge433, !llvm.loop !57

._crit_edge433:                                   ; preds = %383, %323
  %386 = getelementptr inbounds i8, ptr %0, i64 17160
  %387 = load i8, ptr %59, align 1, !tbaa !37, !range !38, !noundef !39
  %388 = trunc nuw i8 %387 to i1
  call void @_ZN11alglib_impl15stimerstartcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef nonnull %386, i1 noundef zeroext %388, ptr noundef %10)
  %389 = getelementptr inbounds i8, ptr %0, i64 16008
  call void @_ZN11alglib_impl11spsymmsolveEPNS_14spcholanalysisEPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %250, ptr noundef nonnull %389, ptr noundef %10)
  %390 = load i8, ptr %59, align 1, !tbaa !37, !range !38, !noundef !39
  %391 = trunc nuw i8 %390 to i1
  call void @_ZN11alglib_impl14stimerstopcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef nonnull %386, i1 noundef zeroext %391, ptr noundef %10)
  %392 = load i8, ptr %59, align 1, !tbaa !37, !range !38, !noundef !39
  %393 = trunc nuw i8 %392 to i1
  call void @_ZN11alglib_impl14stimerstopcondEPNS_6stimerEbPNS_8ae_stateE(ptr noundef nonnull %324, i1 noundef zeroext %393, ptr noundef %10)
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %1, ptr noundef %7, ptr noundef %10)
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %6, ptr noundef %8, ptr noundef %10)
  call void @_ZN11alglib_impl7rcopyvxElPKNS_9ae_vectorElPS0_lPNS_8ae_stateE(i64 noundef %1, ptr noundef nonnull %389, i64 noundef 0, ptr noundef %7, i64 noundef 0, ptr noundef %10)
  call void @_ZN11alglib_impl7rcopyvxElPKNS_9ae_vectorElPS0_lPNS_8ae_stateE(i64 noundef %6, ptr noundef nonnull %389, i64 noundef %1, ptr noundef %8, i64 noundef 0, ptr noundef %10)
  store i64 1, ptr %41, align 8, !tbaa !58
  store i64 1, ptr %42, align 8, !tbaa !59
  store i64 1, ptr %9, align 8, !tbaa !5
  %394 = load i8, ptr %59, align 1, !tbaa !37, !range !38, !noundef !39
  %395 = trunc nuw i8 %394 to i1
  br i1 %395, label %396, label %405

396:                                              ; preds = %._crit_edge433
  %397 = getelementptr inbounds i8, ptr %0, i64 17088
  call void @_ZN11alglib_impl10stimerstopEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %397, ptr noundef %10)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.675)
  %398 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %397, ptr noundef %10)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.676, double noundef %398)
  %399 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %246, ptr noundef %10)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.677, double noundef %399)
  %400 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %260, ptr noundef %10)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.678, double noundef %400)
  %401 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %386, ptr noundef %10)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.679, double noundef %401)
  %402 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %324, ptr noundef %10)
  %403 = call noundef double @_ZN11alglib_impl11stimergetmsEPNS_6stimerEPNS_8ae_stateE(ptr noundef nonnull %386, ptr noundef %10)
  %404 = fsub double %402, %403
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.680, double noundef %404)
  br label %405

405:                                              ; preds = %396, %._crit_edge433
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #4
  ret void
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 320}
!10 = !{!"_ZTSN11alglib_impl12sparsematrixE", !11, i64 0, !11, i64 64, !11, i64 128, !11, i64 192, !11, i64 256, !6, i64 320, !6, i64 328, !6, i64 336, !6, i64 344, !6, i64 352, !6, i64 360}
!11 = !{!"_ZTSN11alglib_impl9ae_vectorE", !6, i64 0, !6, i64 8, !12, i64 16, !13, i64 24, !7, i64 56}
!12 = !{!"bool", !7, i64 0}
!13 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24}
!14 = !{!"any pointer", !7, i64 0}
!15 = !{!10, !6, i64 328}
!16 = !{!10, !6, i64 336}
!17 = !{!11, !6, i64 0}
!18 = !{!7, !7, i64 0}
!19 = !{!20, !12, i64 17080}
!20 = !{!"_ZTSN11alglib_impl9ecqpstateE", !10, i64 0, !11, i64 368, !21, i64 432, !11, i64 15496, !11, i64 15560, !11, i64 15624, !11, i64 15688, !11, i64 15752, !33, i64 15816, !6, i64 17064, !6, i64 17072, !12, i64 17080, !12, i64 17081, !36, i64 17088, !36, i64 17112, !36, i64 17136, !36, i64 17160, !36, i64 17184}
!21 = !{!"_ZTSN11alglib_impl14spcholanalysisE", !6, i64 0, !6, i64 8, !6, i64 16, !12, i64 24, !6, i64 32, !22, i64 40, !22, i64 48, !22, i64 56, !22, i64 64, !11, i64 72, !12, i64 136, !12, i64 137, !12, i64 138, !12, i64 139, !12, i64 140, !11, i64 144, !6, i64 208, !11, i64 216, !11, i64 280, !11, i64 344, !11, i64 408, !11, i64 472, !11, i64 536, !12, i64 600, !11, i64 608, !11, i64 672, !11, i64 736, !11, i64 800, !11, i64 864, !11, i64 928, !12, i64 992, !12, i64 993, !23, i64 1000, !11, i64 1512, !11, i64 1576, !11, i64 1640, !11, i64 1704, !11, i64 1768, !11, i64 1832, !24, i64 1896, !24, i64 2040, !24, i64 2184, !24, i64 2328, !24, i64 2472, !24, i64 2616, !11, i64 2760, !11, i64 2824, !11, i64 2888, !11, i64 2952, !11, i64 3016, !26, i64 3080, !32, i64 7464, !11, i64 13816, !11, i64 13880, !11, i64 13944, !11, i64 14008, !11, i64 14072, !11, i64 14136, !10, i64 14200, !10, i64 14568, !11, i64 14936, !11, i64 15000}
!22 = !{!"double", !7, i64 0}
!23 = !{!"_ZTSN11alglib_impl9spcholadjE", !11, i64 0, !11, i64 64, !11, i64 128, !11, i64 192, !11, i64 256, !11, i64 320, !11, i64 384, !11, i64 448}
!24 = !{!"_ZTSN11alglib_impl9ae_nxpoolE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !13, i64 32, !25, i64 64, !13, i64 112}
!25 = !{!"_ZTSN11alglib_impl7ae_lockE", !14, i64 0, !13, i64 8, !12, i64 40}
!26 = !{!"_ZTSN11alglib_impl9amdbufferE", !6, i64 0, !12, i64 8, !12, i64 9, !11, i64 16, !11, i64 80, !11, i64 144, !27, i64 208, !27, i64 568, !27, i64 928, !28, i64 1288, !29, i64 1496, !30, i64 1968, !11, i64 2120, !11, i64 2184, !11, i64 2248, !30, i64 2312, !30, i64 2464, !30, i64 2616, !30, i64 2768, !30, i64 2920, !30, i64 3072, !11, i64 3224, !6, i64 3288, !30, i64 3296, !30, i64 3448, !27, i64 3600, !30, i64 3960, !11, i64 4112, !11, i64 4176, !11, i64 4240, !31, i64 4304}
!27 = !{!"_ZTSN11alglib_impl8amdknsetE", !6, i64 0, !6, i64 8, !11, i64 16, !11, i64 80, !11, i64 144, !11, i64 208, !11, i64 272, !6, i64 336, !6, i64 344, !6, i64 352}
!28 = !{!"_ZTSN11alglib_impl11amdllmatrixE", !6, i64 0, !11, i64 8, !11, i64 72, !11, i64 136, !6, i64 200}
!29 = !{!"_ZTSN11alglib_impl12amdvertexsetE", !6, i64 0, !12, i64 8, !6, i64 16, !11, i64 24, !11, i64 88, !11, i64 152, !11, i64 216, !11, i64 280, !11, i64 344, !11, i64 408}
!30 = !{!"_ZTSN11alglib_impl5nisetE", !6, i64 0, !6, i64 8, !11, i64 16, !11, i64 80, !6, i64 144}
!31 = !{!"_ZTSN11alglib_impl9ae_matrixE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !12, i64 32, !13, i64 40, !7, i64 72}
!32 = !{!"_ZTSN11alglib_impl18priorityamdbuffersE", !11, i64 0, !11, i64 64, !26, i64 128, !10, i64 4512, !10, i64 4880, !10, i64 5248, !10, i64 5616, !10, i64 5984}
!33 = !{!"_ZTSN11alglib_impl14fblsgmresstateE", !11, i64 0, !11, i64 64, !11, i64 128, !11, i64 192, !31, i64 256, !31, i64 336, !31, i64 416, !31, i64 496, !31, i64 576, !11, i64 656, !11, i64 720, !11, i64 784, !11, i64 848, !6, i64 912, !6, i64 920, !22, i64 928, !22, i64 936, !22, i64 944, !22, i64 952, !6, i64 960, !6, i64 968, !22, i64 976, !34, i64 984}
!34 = !{!"_ZTSN11alglib_impl10rcommstateE", !35, i64 0, !11, i64 8, !11, i64 72, !11, i64 136, !11, i64 200}
!35 = !{!"int", !7, i64 0}
!36 = !{!"_ZTSN11alglib_impl6stimerE", !6, i64 0, !6, i64 8, !12, i64 16}
!37 = !{!20, !12, i64 17081}
!38 = !{i8 0, i8 2}
!39 = !{}
!40 = !{!20, !6, i64 320}
!41 = !{!20, !6, i64 328}
!42 = !{!20, !6, i64 336}
!43 = !{!22, !22, i64 0}
!44 = distinct !{!44, !45}
!45 = !{!"llvm.loop.mustprogress"}
!46 = distinct !{!46, !45}
!47 = distinct !{!47, !45}
!48 = distinct !{!48, !45}
!49 = !{!20, !6, i64 0}
!50 = !{!20, !6, i64 64}
!51 = distinct !{!51, !45}
!52 = distinct !{!52, !45}
!53 = distinct !{!53, !45}
!54 = !{!20, !22, i64 16792}
!55 = distinct !{!55, !45}
!56 = distinct !{!56, !45}
!57 = distinct !{!57, !45}
!58 = !{!20, !6, i64 17064}
!59 = !{!20, !6, i64 17072}


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