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

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

%"struct.alglib_impl::sactiveset" = type { i64, i64, %"struct.alglib_impl::ae_vector", i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i8, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", i64, %"struct.alglib_impl::ae_vector", i64, i64, i8, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::snnlssolver", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::snnlssolver" = type { i64, i64, i64, %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", double, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.1 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%union.anon.1 = type { ptr }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }

@.str.191 = external hidden unnamed_addr constant [28 x i8], align 1
@_ZN11alglib_implL29sactivesets_minnormseparationE = external hidden global double, align 8
@.str.192 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.193 = external hidden unnamed_addr constant [59 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl15sasrebuildbasisEPNS_10sactivesetEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) #3 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i64, align 8
  %6 = alloca i64, align 8
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca i8, align 1
  %11 = alloca i64, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca i64, align 8
  %16 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  %17 = load ptr, ptr %3, align 8, !tbaa !5
  %18 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %17, i32 0, i32 7
  %19 = load i8, ptr %18, align 8, !tbaa !9, !range !18, !noundef !19
  %20 = trunc i8 %19 to i1
  br i1 %20, label %21, label %22

21:                                               ; preds = %2
  store i32 1, ptr %16, align 4
  br label %972

22:                                               ; preds = %2
  %23 = load ptr, ptr %3, align 8, !tbaa !5
  %24 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %23, i32 0, i32 0
  %25 = load i64, ptr %24, align 8, !tbaa !20
  store i64 %25, ptr %5, align 8, !tbaa !21
  %26 = load ptr, ptr %3, align 8, !tbaa !5
  %27 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %26, i32 0, i32 22
  %28 = load i64, ptr %27, align 8, !tbaa !22
  store i64 %28, ptr %6, align 8, !tbaa !21
  %29 = load ptr, ptr %3, align 8, !tbaa !5
  %30 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %29, i32 0, i32 23
  %31 = load i64, ptr %30, align 8, !tbaa !23
  store i64 %31, ptr %7, align 8, !tbaa !21
  %32 = load ptr, ptr %3, align 8, !tbaa !5
  %33 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %32, i32 0, i32 32
  %34 = load i64, ptr %5, align 8, !tbaa !21
  %35 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %33, i64 noundef %34, ptr noundef %35)
  %36 = load ptr, ptr %3, align 8, !tbaa !5
  %37 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %36, i32 0, i32 46
  %38 = load i64, ptr %5, align 8, !tbaa !21
  %39 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %37, i64 noundef %38, ptr noundef %39)
  %40 = load ptr, ptr %3, align 8, !tbaa !5
  %41 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %40, i32 0, i32 47
  %42 = load i64, ptr %5, align 8, !tbaa !21
  %43 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %41, i64 noundef %42, ptr noundef %43)
  %44 = load ptr, ptr %3, align 8, !tbaa !5
  %45 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %44, i32 0, i32 48
  %46 = load i64, ptr %5, align 8, !tbaa !21
  %47 = add nsw i64 %46, 1
  %48 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %45, i64 noundef %47, ptr noundef %48)
  %49 = load ptr, ptr %3, align 8, !tbaa !5
  %50 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %49, i32 0, i32 49
  %51 = load i64, ptr %5, align 8, !tbaa !21
  %52 = add nsw i64 %51, 1
  %53 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %50, i64 noundef %52, ptr noundef %53)
  %54 = load ptr, ptr %3, align 8, !tbaa !5
  %55 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %54, i32 0, i32 50
  %56 = load i64, ptr %5, align 8, !tbaa !21
  %57 = add nsw i64 %56, 1
  %58 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %55, i64 noundef %57, ptr noundef %58)
  %59 = load ptr, ptr %3, align 8, !tbaa !5
  %60 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %59, i32 0, i32 43
  %61 = load i64, ptr %6, align 8, !tbaa !21
  %62 = load i64, ptr %7, align 8, !tbaa !21
  %63 = add nsw i64 %61, %62
  %64 = load i64, ptr %5, align 8, !tbaa !21
  %65 = add nsw i64 %64, 1
  %66 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %60, i64 noundef %63, i64 noundef %65, ptr noundef %66)
  %67 = load ptr, ptr %3, align 8, !tbaa !5
  %68 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %67, i32 0, i32 9
  %69 = load i64, ptr %6, align 8, !tbaa !21
  %70 = load i64, ptr %7, align 8, !tbaa !21
  %71 = add nsw i64 %69, %70
  %72 = load i64, ptr %5, align 8, !tbaa !21
  %73 = add nsw i64 %72, 1
  %74 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %68, i64 noundef %71, i64 noundef %73, ptr noundef %74)
  %75 = load ptr, ptr %3, align 8, !tbaa !5
  %76 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %75, i32 0, i32 10
  %77 = load i64, ptr %6, align 8, !tbaa !21
  %78 = load i64, ptr %7, align 8, !tbaa !21
  %79 = add nsw i64 %77, %78
  %80 = load i64, ptr %5, align 8, !tbaa !21
  %81 = add nsw i64 %80, 1
  %82 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %76, i64 noundef %79, i64 noundef %81, ptr noundef %82)
  %83 = load ptr, ptr %3, align 8, !tbaa !5
  %84 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %83, i32 0, i32 8
  %85 = load i64, ptr %6, align 8, !tbaa !21
  %86 = load i64, ptr %7, align 8, !tbaa !21
  %87 = add nsw i64 %85, %86
  %88 = load i64, ptr %5, align 8, !tbaa !21
  %89 = add nsw i64 %88, 1
  %90 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %84, i64 noundef %87, i64 noundef %89, ptr noundef %90)
  %91 = load ptr, ptr %3, align 8, !tbaa !5
  %92 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %91, i32 0, i32 12
  %93 = load i64, ptr %5, align 8, !tbaa !21
  %94 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %92, i64 noundef %93, ptr noundef %94)
  %95 = load ptr, ptr %3, align 8, !tbaa !5
  %96 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %95, i32 0, i32 13
  store i64 0, ptr %96, align 8, !tbaa !24
  %97 = load ptr, ptr %3, align 8, !tbaa !5
  %98 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %97, i32 0, i32 11
  store i64 0, ptr %98, align 8, !tbaa !25
  %99 = load ptr, ptr %3, align 8, !tbaa !5
  %100 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %99, i32 0, i32 14
  store i64 0, ptr %100, align 8, !tbaa !26
  %101 = load ptr, ptr %3, align 8, !tbaa !5
  %102 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %101, i32 0, i32 7
  store i8 1, ptr %102, align 8, !tbaa !9
  store i8 0, ptr %10, align 1, !tbaa !27
  store i64 0, ptr %8, align 8, !tbaa !21
  br label %103

103:                                              ; preds = %123, %22
  %104 = load i64, ptr %8, align 8, !tbaa !21
  %105 = load i64, ptr %6, align 8, !tbaa !21
  %106 = load i64, ptr %7, align 8, !tbaa !21
  %107 = add nsw i64 %105, %106
  %108 = sub nsw i64 %107, 1
  %109 = icmp sle i64 %104, %108
  br i1 %109, label %110, label %126

110:                                              ; preds = %103
  %111 = load ptr, ptr %3, align 8, !tbaa !5
  %112 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %111, i32 0, i32 6
  %113 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %112, i32 0, i32 4
  %114 = load ptr, ptr %113, align 8, !tbaa !28
  %115 = load i64, ptr %5, align 8, !tbaa !21
  %116 = load i64, ptr %8, align 8, !tbaa !21
  %117 = add nsw i64 %115, %116
  %118 = getelementptr inbounds i64, ptr %114, i64 %117
  %119 = load i64, ptr %118, align 8, !tbaa !21
  %120 = icmp sgt i64 %119, 0
  br i1 %120, label %121, label %122

121:                                              ; preds = %110
  store i8 1, ptr %10, align 1, !tbaa !27
  br label %122

122:                                              ; preds = %121, %110
  br label %123

123:                                              ; preds = %122
  %124 = load i64, ptr %8, align 8, !tbaa !21
  %125 = add nsw i64 %124, 1
  store i64 %125, ptr %8, align 8, !tbaa !21
  br label %103, !llvm.loop !29

126:                                              ; preds = %103
  store i64 0, ptr %9, align 8, !tbaa !21
  br label %127

127:                                              ; preds = %158, %126
  %128 = load i64, ptr %9, align 8, !tbaa !21
  %129 = load i64, ptr %5, align 8, !tbaa !21
  %130 = sub nsw i64 %129, 1
  %131 = icmp sle i64 %128, %130
  br i1 %131, label %132, label %161

132:                                              ; preds = %127
  %133 = load ptr, ptr %3, align 8, !tbaa !5
  %134 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %133, i32 0, i32 6
  %135 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %134, i32 0, i32 4
  %136 = load ptr, ptr %135, align 8, !tbaa !28
  %137 = load i64, ptr %9, align 8, !tbaa !21
  %138 = getelementptr inbounds i64, ptr %136, i64 %137
  %139 = load i64, ptr %138, align 8, !tbaa !21
  %140 = icmp sgt i64 %139, 0
  br i1 %140, label %141, label %157

141:                                              ; preds = %132
  %142 = load i64, ptr %9, align 8, !tbaa !21
  %143 = load ptr, ptr %3, align 8, !tbaa !5
  %144 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %143, i32 0, i32 12
  %145 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %144, i32 0, i32 4
  %146 = load ptr, ptr %145, align 8, !tbaa !28
  %147 = load ptr, ptr %3, align 8, !tbaa !5
  %148 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %147, i32 0, i32 13
  %149 = load i64, ptr %148, align 8, !tbaa !24
  %150 = getelementptr inbounds i64, ptr %146, i64 %149
  store i64 %142, ptr %150, align 8, !tbaa !21
  %151 = load ptr, ptr %3, align 8, !tbaa !5
  %152 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %151, i32 0, i32 13
  %153 = load i64, ptr %152, align 8, !tbaa !24
  %154 = add nsw i64 %153, 1
  %155 = load ptr, ptr %3, align 8, !tbaa !5
  %156 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %155, i32 0, i32 13
  store i64 %154, ptr %156, align 8, !tbaa !24
  br label %157

157:                                              ; preds = %141, %132
  br label %158

158:                                              ; preds = %157
  %159 = load i64, ptr %9, align 8, !tbaa !21
  %160 = add nsw i64 %159, 1
  store i64 %160, ptr %9, align 8, !tbaa !21
  br label %127, !llvm.loop !31

161:                                              ; preds = %127
  %162 = load i8, ptr %10, align 1, !tbaa !27, !range !18, !noundef !19
  %163 = trunc i8 %162 to i1
  br i1 %163, label %165, label %164

164:                                              ; preds = %161
  store i32 1, ptr %16, align 4
  br label %972

165:                                              ; preds = %161
  %166 = load ptr, ptr %3, align 8, !tbaa !5
  %167 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %166, i32 0, i32 45
  %168 = load i64, ptr %5, align 8, !tbaa !21
  %169 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %167, i64 noundef %168, ptr noundef %169)
  store i64 0, ptr %8, align 8, !tbaa !21
  br label %170

170:                                              ; preds = %190, %165
  %171 = load i64, ptr %8, align 8, !tbaa !21
  %172 = load i64, ptr %5, align 8, !tbaa !21
  %173 = sub nsw i64 %172, 1
  %174 = icmp sle i64 %171, %173
  br i1 %174, label %175, label %193

175:                                              ; preds = %170
  %176 = load ptr, ptr %3, align 8, !tbaa !5
  %177 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %176, i32 0, i32 5
  %178 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %177, i32 0, i32 4
  %179 = load ptr, ptr %178, align 8, !tbaa !28
  %180 = load i64, ptr %8, align 8, !tbaa !21
  %181 = getelementptr inbounds double, ptr %179, i64 %180
  %182 = load double, ptr %181, align 8, !tbaa !32
  %183 = fdiv double 1.000000e+00, %182
  %184 = load ptr, ptr %3, align 8, !tbaa !5
  %185 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %184, i32 0, i32 45
  %186 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %185, i32 0, i32 4
  %187 = load ptr, ptr %186, align 8, !tbaa !28
  %188 = load i64, ptr %8, align 8, !tbaa !21
  %189 = getelementptr inbounds double, ptr %187, i64 %188
  store double %183, ptr %189, align 8, !tbaa !32
  br label %190

190:                                              ; preds = %175
  %191 = load i64, ptr %8, align 8, !tbaa !21
  %192 = add nsw i64 %191, 1
  store i64 %192, ptr %8, align 8, !tbaa !21
  br label %170, !llvm.loop !33

193:                                              ; preds = %170
  store i64 0, ptr %11, align 8, !tbaa !21
  store i64 0, ptr %8, align 8, !tbaa !21
  br label %194

194:                                              ; preds = %233, %193
  %195 = load i64, ptr %8, align 8, !tbaa !21
  %196 = load i64, ptr %6, align 8, !tbaa !21
  %197 = load i64, ptr %7, align 8, !tbaa !21
  %198 = add nsw i64 %196, %197
  %199 = sub nsw i64 %198, 1
  %200 = icmp sle i64 %195, %199
  br i1 %200, label %201, label %236

201:                                              ; preds = %194
  %202 = load ptr, ptr %3, align 8, !tbaa !5
  %203 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %202, i32 0, i32 6
  %204 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %203, i32 0, i32 4
  %205 = load ptr, ptr %204, align 8, !tbaa !28
  %206 = load i64, ptr %5, align 8, !tbaa !21
  %207 = load i64, ptr %8, align 8, !tbaa !21
  %208 = add nsw i64 %206, %207
  %209 = getelementptr inbounds i64, ptr %205, i64 %208
  %210 = load i64, ptr %209, align 8, !tbaa !21
  %211 = icmp sgt i64 %210, 0
  br i1 %211, label %212, label %232

212:                                              ; preds = %201
  %213 = load ptr, ptr %3, align 8, !tbaa !5
  %214 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %213, i32 0, i32 43
  %215 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %214, i32 0, i32 6
  %216 = load ptr, ptr %215, align 8, !tbaa !28
  %217 = load i64, ptr %11, align 8, !tbaa !21
  %218 = getelementptr inbounds ptr, ptr %216, i64 %217
  %219 = load ptr, ptr %218, align 8, !tbaa !5
  %220 = getelementptr inbounds double, ptr %219, i64 0
  %221 = load ptr, ptr %3, align 8, !tbaa !5
  %222 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %221, i32 0, i32 21
  %223 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %222, i32 0, i32 6
  %224 = load ptr, ptr %223, align 8, !tbaa !28
  %225 = load i64, ptr %8, align 8, !tbaa !21
  %226 = getelementptr inbounds ptr, ptr %224, i64 %225
  %227 = load ptr, ptr %226, align 8, !tbaa !5
  %228 = getelementptr inbounds double, ptr %227, i64 0
  %229 = load i64, ptr %5, align 8, !tbaa !21
  %230 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %229)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %220, i64 noundef 1, ptr noundef %228, i64 noundef 1, i64 noundef %230)
  %231 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %11, ptr noundef %231)
  br label %232

232:                                              ; preds = %212, %201
  br label %233

233:                                              ; preds = %232
  %234 = load i64, ptr %8, align 8, !tbaa !21
  %235 = add nsw i64 %234, 1
  store i64 %235, ptr %8, align 8, !tbaa !21
  br label %194, !llvm.loop !34

236:                                              ; preds = %194
  store i64 0, ptr %8, align 8, !tbaa !21
  br label %237

237:                                              ; preds = %312, %236
  %238 = load i64, ptr %8, align 8, !tbaa !21
  %239 = load i64, ptr %11, align 8, !tbaa !21
  %240 = sub nsw i64 %239, 1
  %241 = icmp sle i64 %238, %240
  br i1 %241, label %242, label %315

242:                                              ; preds = %237
  store double 0.000000e+00, ptr %12, align 8, !tbaa !32
  store i64 0, ptr %9, align 8, !tbaa !21
  br label %243

243:                                              ; preds = %270, %242
  %244 = load i64, ptr %9, align 8, !tbaa !21
  %245 = load i64, ptr %5, align 8, !tbaa !21
  %246 = sub nsw i64 %245, 1
  %247 = icmp sle i64 %244, %246
  br i1 %247, label %248, label %273

248:                                              ; preds = %243
  %249 = load double, ptr %12, align 8, !tbaa !32
  %250 = load ptr, ptr %3, align 8, !tbaa !5
  %251 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %250, i32 0, i32 43
  %252 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %251, i32 0, i32 6
  %253 = load ptr, ptr %252, align 8, !tbaa !28
  %254 = load i64, ptr %8, align 8, !tbaa !21
  %255 = getelementptr inbounds ptr, ptr %253, i64 %254
  %256 = load ptr, ptr %255, align 8, !tbaa !5
  %257 = load i64, ptr %9, align 8, !tbaa !21
  %258 = getelementptr inbounds double, ptr %256, i64 %257
  %259 = load double, ptr %258, align 8, !tbaa !32
  %260 = load ptr, ptr %4, align 8, !tbaa !5
  %261 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %259, ptr noundef %260)
  %262 = load ptr, ptr %3, align 8, !tbaa !5
  %263 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %262, i32 0, i32 45
  %264 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %263, i32 0, i32 4
  %265 = load ptr, ptr %264, align 8, !tbaa !28
  %266 = load i64, ptr %9, align 8, !tbaa !21
  %267 = getelementptr inbounds double, ptr %265, i64 %266
  %268 = load double, ptr %267, align 8, !tbaa !32
  %269 = call double @llvm.fmuladd.f64(double %261, double %268, double %249)
  store double %269, ptr %12, align 8, !tbaa !32
  br label %270

270:                                              ; preds = %248
  %271 = load i64, ptr %9, align 8, !tbaa !21
  %272 = add nsw i64 %271, 1
  store i64 %272, ptr %9, align 8, !tbaa !21
  br label %243, !llvm.loop !35

273:                                              ; preds = %243
  %274 = load double, ptr %12, align 8, !tbaa !32
  %275 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %274, double noundef 0.000000e+00)
  br i1 %275, label %276, label %311

276:                                              ; preds = %273
  %277 = load double, ptr %12, align 8, !tbaa !32
  %278 = load ptr, ptr %4, align 8, !tbaa !5
  %279 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %277, ptr noundef %278)
  %280 = fdiv double 1.000000e+00, %279
  store double %280, ptr %12, align 8, !tbaa !32
  store i64 0, ptr %9, align 8, !tbaa !21
  br label %281

281:                                              ; preds = %307, %276
  %282 = load i64, ptr %9, align 8, !tbaa !21
  %283 = load i64, ptr %5, align 8, !tbaa !21
  %284 = icmp sle i64 %282, %283
  br i1 %284, label %285, label %310

285:                                              ; preds = %281
  %286 = load ptr, ptr %3, align 8, !tbaa !5
  %287 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %286, i32 0, i32 43
  %288 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %287, i32 0, i32 6
  %289 = load ptr, ptr %288, align 8, !tbaa !28
  %290 = load i64, ptr %8, align 8, !tbaa !21
  %291 = getelementptr inbounds ptr, ptr %289, i64 %290
  %292 = load ptr, ptr %291, align 8, !tbaa !5
  %293 = load i64, ptr %9, align 8, !tbaa !21
  %294 = getelementptr inbounds double, ptr %292, i64 %293
  %295 = load double, ptr %294, align 8, !tbaa !32
  %296 = load double, ptr %12, align 8, !tbaa !32
  %297 = fmul double %295, %296
  %298 = load ptr, ptr %3, align 8, !tbaa !5
  %299 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %298, i32 0, i32 43
  %300 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %299, i32 0, i32 6
  %301 = load ptr, ptr %300, align 8, !tbaa !28
  %302 = load i64, ptr %8, align 8, !tbaa !21
  %303 = getelementptr inbounds ptr, ptr %301, i64 %302
  %304 = load ptr, ptr %303, align 8, !tbaa !5
  %305 = load i64, ptr %9, align 8, !tbaa !21
  %306 = getelementptr inbounds double, ptr %304, i64 %305
  store double %297, ptr %306, align 8, !tbaa !32
  br label %307

307:                                              ; preds = %285
  %308 = load i64, ptr %9, align 8, !tbaa !21
  %309 = add nsw i64 %308, 1
  store i64 %309, ptr %9, align 8, !tbaa !21
  br label %281, !llvm.loop !36

310:                                              ; preds = %281
  br label %311

311:                                              ; preds = %310, %273
  br label %312

312:                                              ; preds = %311
  %313 = load i64, ptr %8, align 8, !tbaa !21
  %314 = add nsw i64 %313, 1
  store i64 %314, ptr %8, align 8, !tbaa !21
  br label %237, !llvm.loop !37

315:                                              ; preds = %237
  store i64 0, ptr %9, align 8, !tbaa !21
  br label %316

316:                                              ; preds = %389, %315
  %317 = load i64, ptr %9, align 8, !tbaa !21
  %318 = load i64, ptr %5, align 8, !tbaa !21
  %319 = sub nsw i64 %318, 1
  %320 = icmp sle i64 %317, %319
  br i1 %320, label %321, label %392

321:                                              ; preds = %316
  %322 = load ptr, ptr %3, align 8, !tbaa !5
  %323 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %322, i32 0, i32 6
  %324 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %323, i32 0, i32 4
  %325 = load ptr, ptr %324, align 8, !tbaa !28
  %326 = load i64, ptr %9, align 8, !tbaa !21
  %327 = getelementptr inbounds i64, ptr %325, i64 %326
  %328 = load i64, ptr %327, align 8, !tbaa !21
  %329 = icmp sgt i64 %328, 0
  br i1 %329, label %330, label %388

330:                                              ; preds = %321
  store i64 0, ptr %8, align 8, !tbaa !21
  br label %331

331:                                              ; preds = %384, %330
  %332 = load i64, ptr %8, align 8, !tbaa !21
  %333 = load i64, ptr %11, align 8, !tbaa !21
  %334 = sub nsw i64 %333, 1
  %335 = icmp sle i64 %332, %334
  br i1 %335, label %336, label %387

336:                                              ; preds = %331
  %337 = load ptr, ptr %3, align 8, !tbaa !5
  %338 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %337, i32 0, i32 43
  %339 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %338, i32 0, i32 6
  %340 = load ptr, ptr %339, align 8, !tbaa !28
  %341 = load i64, ptr %8, align 8, !tbaa !21
  %342 = getelementptr inbounds ptr, ptr %340, i64 %341
  %343 = load ptr, ptr %342, align 8, !tbaa !5
  %344 = load i64, ptr %5, align 8, !tbaa !21
  %345 = getelementptr inbounds double, ptr %343, i64 %344
  %346 = load double, ptr %345, align 8, !tbaa !32
  %347 = load ptr, ptr %3, align 8, !tbaa !5
  %348 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %347, i32 0, i32 43
  %349 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %348, i32 0, i32 6
  %350 = load ptr, ptr %349, align 8, !tbaa !28
  %351 = load i64, ptr %8, align 8, !tbaa !21
  %352 = getelementptr inbounds ptr, ptr %350, i64 %351
  %353 = load ptr, ptr %352, align 8, !tbaa !5
  %354 = load i64, ptr %9, align 8, !tbaa !21
  %355 = getelementptr inbounds double, ptr %353, i64 %354
  %356 = load double, ptr %355, align 8, !tbaa !32
  %357 = load ptr, ptr %3, align 8, !tbaa !5
  %358 = getelementptr inbounds %"struct.alglib_impl::sactiveset", 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 !28
  %361 = load i64, ptr %9, align 8, !tbaa !21
  %362 = getelementptr inbounds double, ptr %360, i64 %361
  %363 = load double, ptr %362, align 8, !tbaa !32
  %364 = fneg double %356
  %365 = call double @llvm.fmuladd.f64(double %364, double %363, double %346)
  %366 = load ptr, ptr %3, align 8, !tbaa !5
  %367 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %366, i32 0, i32 43
  %368 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %367, i32 0, i32 6
  %369 = load ptr, ptr %368, align 8, !tbaa !28
  %370 = load i64, ptr %8, align 8, !tbaa !21
  %371 = getelementptr inbounds ptr, ptr %369, i64 %370
  %372 = load ptr, ptr %371, align 8, !tbaa !5
  %373 = load i64, ptr %5, align 8, !tbaa !21
  %374 = getelementptr inbounds double, ptr %372, i64 %373
  store double %365, ptr %374, align 8, !tbaa !32
  %375 = load ptr, ptr %3, align 8, !tbaa !5
  %376 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %375, i32 0, i32 43
  %377 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %376, i32 0, i32 6
  %378 = load ptr, ptr %377, align 8, !tbaa !28
  %379 = load i64, ptr %8, align 8, !tbaa !21
  %380 = getelementptr inbounds ptr, ptr %378, i64 %379
  %381 = load ptr, ptr %380, align 8, !tbaa !5
  %382 = load i64, ptr %9, align 8, !tbaa !21
  %383 = getelementptr inbounds double, ptr %381, i64 %382
  store double 0.000000e+00, ptr %383, align 8, !tbaa !32
  br label %384

384:                                              ; preds = %336
  %385 = load i64, ptr %8, align 8, !tbaa !21
  %386 = add nsw i64 %385, 1
  store i64 %386, ptr %8, align 8, !tbaa !21
  br label %331, !llvm.loop !38

387:                                              ; preds = %331
  br label %388

388:                                              ; preds = %387, %321
  br label %389

389:                                              ; preds = %388
  %390 = load i64, ptr %9, align 8, !tbaa !21
  %391 = add nsw i64 %390, 1
  store i64 %391, ptr %9, align 8, !tbaa !21
  br label %316, !llvm.loop !39

392:                                              ; preds = %316
  store i64 0, ptr %8, align 8, !tbaa !21
  br label %393

393:                                              ; preds = %465, %392
  %394 = load i64, ptr %8, align 8, !tbaa !21
  %395 = load i64, ptr %11, align 8, !tbaa !21
  %396 = sub nsw i64 %395, 1
  %397 = icmp sle i64 %394, %396
  br i1 %397, label %398, label %468

398:                                              ; preds = %393
  store i64 0, ptr %9, align 8, !tbaa !21
  br label %399

399:                                              ; preds = %461, %398
  %400 = load i64, ptr %9, align 8, !tbaa !21
  %401 = load i64, ptr %5, align 8, !tbaa !21
  %402 = icmp sle i64 %400, %401
  br i1 %402, label %403, label %464

403:                                              ; preds = %399
  %404 = load ptr, ptr %3, align 8, !tbaa !5
  %405 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %404, i32 0, i32 43
  %406 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %405, i32 0, i32 6
  %407 = load ptr, ptr %406, align 8, !tbaa !28
  %408 = load i64, ptr %8, align 8, !tbaa !21
  %409 = getelementptr inbounds ptr, ptr %407, i64 %408
  %410 = load ptr, ptr %409, align 8, !tbaa !5
  %411 = load i64, ptr %9, align 8, !tbaa !21
  %412 = getelementptr inbounds double, ptr %410, i64 %411
  %413 = load double, ptr %412, align 8, !tbaa !32
  %414 = load ptr, ptr %3, align 8, !tbaa !5
  %415 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %414, i32 0, i32 9
  %416 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %415, i32 0, i32 6
  %417 = load ptr, ptr %416, align 8, !tbaa !28
  %418 = load i64, ptr %8, align 8, !tbaa !21
  %419 = getelementptr inbounds ptr, ptr %417, i64 %418
  %420 = load ptr, ptr %419, align 8, !tbaa !5
  %421 = load i64, ptr %9, align 8, !tbaa !21
  %422 = getelementptr inbounds double, ptr %420, i64 %421
  store double %413, ptr %422, align 8, !tbaa !32
  %423 = load ptr, ptr %3, align 8, !tbaa !5
  %424 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %423, i32 0, i32 43
  %425 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %424, i32 0, i32 6
  %426 = load ptr, ptr %425, align 8, !tbaa !28
  %427 = load i64, ptr %8, align 8, !tbaa !21
  %428 = getelementptr inbounds ptr, ptr %426, i64 %427
  %429 = load ptr, ptr %428, align 8, !tbaa !5
  %430 = load i64, ptr %9, align 8, !tbaa !21
  %431 = getelementptr inbounds double, ptr %429, i64 %430
  %432 = load double, ptr %431, align 8, !tbaa !32
  %433 = load ptr, ptr %3, align 8, !tbaa !5
  %434 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %433, i32 0, i32 8
  %435 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %434, i32 0, i32 6
  %436 = load ptr, ptr %435, align 8, !tbaa !28
  %437 = load i64, ptr %8, align 8, !tbaa !21
  %438 = getelementptr inbounds ptr, ptr %436, i64 %437
  %439 = load ptr, ptr %438, align 8, !tbaa !5
  %440 = load i64, ptr %9, align 8, !tbaa !21
  %441 = getelementptr inbounds double, ptr %439, i64 %440
  store double %432, ptr %441, align 8, !tbaa !32
  %442 = load ptr, ptr %3, align 8, !tbaa !5
  %443 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %442, i32 0, i32 43
  %444 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %443, i32 0, i32 6
  %445 = load ptr, ptr %444, align 8, !tbaa !28
  %446 = load i64, ptr %8, align 8, !tbaa !21
  %447 = getelementptr inbounds ptr, ptr %445, i64 %446
  %448 = load ptr, ptr %447, align 8, !tbaa !5
  %449 = load i64, ptr %9, align 8, !tbaa !21
  %450 = getelementptr inbounds double, ptr %448, i64 %449
  %451 = load double, ptr %450, align 8, !tbaa !32
  %452 = load ptr, ptr %3, align 8, !tbaa !5
  %453 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %452, i32 0, i32 10
  %454 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %453, i32 0, i32 6
  %455 = load ptr, ptr %454, align 8, !tbaa !28
  %456 = load i64, ptr %8, align 8, !tbaa !21
  %457 = getelementptr inbounds ptr, ptr %455, i64 %456
  %458 = load ptr, ptr %457, align 8, !tbaa !5
  %459 = load i64, ptr %9, align 8, !tbaa !21
  %460 = getelementptr inbounds double, ptr %458, i64 %459
  store double %451, ptr %460, align 8, !tbaa !32
  br label %461

461:                                              ; preds = %403
  %462 = load i64, ptr %9, align 8, !tbaa !21
  %463 = add nsw i64 %462, 1
  store i64 %463, ptr %9, align 8, !tbaa !21
  br label %399, !llvm.loop !40

464:                                              ; preds = %399
  br label %465

465:                                              ; preds = %464
  %466 = load i64, ptr %8, align 8, !tbaa !21
  %467 = add nsw i64 %466, 1
  store i64 %467, ptr %8, align 8, !tbaa !21
  br label %393, !llvm.loop !41

468:                                              ; preds = %393
  %469 = load ptr, ptr %3, align 8, !tbaa !5
  %470 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %469, i32 0, i32 11
  %471 = load i64, ptr %470, align 8, !tbaa !25
  %472 = icmp eq i64 %471, 0
  %473 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %472, ptr noundef @.str.191, ptr noundef %473)
  %474 = load double, ptr @_ZN11alglib_implL29sactivesets_minnormseparationE, align 8, !tbaa !32
  %475 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %474, double noundef 0.000000e+00)
  %476 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %475, ptr noundef @.str.191, ptr noundef %476)
  %477 = load ptr, ptr %3, align 8, !tbaa !5
  %478 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %477, i32 0, i32 44
  %479 = load i64, ptr %11, align 8, !tbaa !21
  %480 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %478, i64 noundef %479, ptr noundef %480)
  store i64 0, ptr %8, align 8, !tbaa !21
  br label %481

481:                                              ; preds = %493, %468
  %482 = load i64, ptr %8, align 8, !tbaa !21
  %483 = load i64, ptr %11, align 8, !tbaa !21
  %484 = sub nsw i64 %483, 1
  %485 = icmp sle i64 %482, %484
  br i1 %485, label %486, label %496

486:                                              ; preds = %481
  %487 = load ptr, ptr %3, align 8, !tbaa !5
  %488 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %487, i32 0, i32 44
  %489 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %488, i32 0, i32 4
  %490 = load ptr, ptr %489, align 8, !tbaa !28
  %491 = load i64, ptr %8, align 8, !tbaa !21
  %492 = getelementptr inbounds double, ptr %490, i64 %491
  store double 1.000000e+00, ptr %492, align 8, !tbaa !32
  br label %493

493:                                              ; preds = %486
  %494 = load i64, ptr %8, align 8, !tbaa !21
  %495 = add nsw i64 %494, 1
  store i64 %495, ptr %8, align 8, !tbaa !21
  br label %481, !llvm.loop !42

496:                                              ; preds = %481
  br label %497

497:                                              ; preds = %879, %496
  %498 = load ptr, ptr %3, align 8, !tbaa !5
  %499 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %498, i32 0, i32 13
  %500 = load i64, ptr %499, align 8, !tbaa !24
  %501 = load ptr, ptr %3, align 8, !tbaa !5
  %502 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %501, i32 0, i32 11
  %503 = load i64, ptr %502, align 8, !tbaa !25
  %504 = add nsw i64 %500, %503
  %505 = load i64, ptr %5, align 8, !tbaa !21
  %506 = icmp slt i64 %504, %505
  br i1 %506, label %507, label %971

507:                                              ; preds = %497
  %508 = load i64, ptr %11, align 8, !tbaa !21
  %509 = icmp eq i64 %508, 0
  br i1 %509, label %510, label %511

510:                                              ; preds = %507
  br label %971

511:                                              ; preds = %507
  store double 0.000000e+00, ptr %14, align 8, !tbaa !32
  store i64 -1, ptr %15, align 8, !tbaa !21
  %512 = load ptr, ptr %3, align 8, !tbaa !5
  %513 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %512, i32 0, i32 11
  %514 = load i64, ptr %513, align 8, !tbaa !25
  store i64 %514, ptr %8, align 8, !tbaa !21
  br label %515

515:                                              ; preds = %588, %511
  %516 = load i64, ptr %8, align 8, !tbaa !21
  %517 = load ptr, ptr %3, align 8, !tbaa !5
  %518 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %517, i32 0, i32 11
  %519 = load i64, ptr %518, align 8, !tbaa !25
  %520 = load i64, ptr %11, align 8, !tbaa !21
  %521 = add nsw i64 %519, %520
  %522 = sub nsw i64 %521, 1
  %523 = icmp sle i64 %516, %522
  br i1 %523, label %524, label %591

524:                                              ; preds = %515
  %525 = load ptr, ptr %3, align 8, !tbaa !5
  %526 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %525, i32 0, i32 44
  %527 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %526, i32 0, i32 4
  %528 = load ptr, ptr %527, align 8, !tbaa !28
  %529 = load i64, ptr %8, align 8, !tbaa !21
  %530 = getelementptr inbounds double, ptr %528, i64 %529
  %531 = load double, ptr %530, align 8, !tbaa !32
  %532 = load double, ptr %14, align 8, !tbaa !32
  %533 = load double, ptr @_ZN11alglib_implL29sactivesets_minnormseparationE, align 8, !tbaa !32
  %534 = fadd double 1.000000e+00, %533
  %535 = fmul double %532, %534
  %536 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %531, double noundef %535)
  br i1 %536, label %537, label %538

537:                                              ; preds = %524
  br label %588

538:                                              ; preds = %524
  store double 0.000000e+00, ptr %12, align 8, !tbaa !32
  store i64 0, ptr %9, align 8, !tbaa !21
  br label %539

539:                                              ; preds = %567, %538
  %540 = load i64, ptr %9, align 8, !tbaa !21
  %541 = load i64, ptr %5, align 8, !tbaa !21
  %542 = sub nsw i64 %541, 1
  %543 = icmp sle i64 %540, %542
  br i1 %543, label %544, label %570

544:                                              ; preds = %539
  %545 = load ptr, ptr %3, align 8, !tbaa !5
  %546 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %545, i32 0, i32 9
  %547 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %546, i32 0, i32 6
  %548 = load ptr, ptr %547, align 8, !tbaa !28
  %549 = load i64, ptr %8, align 8, !tbaa !21
  %550 = getelementptr inbounds ptr, ptr %548, i64 %549
  %551 = load ptr, ptr %550, align 8, !tbaa !5
  %552 = load i64, ptr %9, align 8, !tbaa !21
  %553 = getelementptr inbounds double, ptr %551, i64 %552
  %554 = load double, ptr %553, align 8, !tbaa !32
  store double %554, ptr %13, align 8, !tbaa !32
  %555 = load double, ptr %12, align 8, !tbaa !32
  %556 = load double, ptr %13, align 8, !tbaa !32
  %557 = load double, ptr %13, align 8, !tbaa !32
  %558 = fmul double %556, %557
  %559 = load ptr, ptr %3, align 8, !tbaa !5
  %560 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %559, i32 0, i32 45
  %561 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %560, i32 0, i32 4
  %562 = load ptr, ptr %561, align 8, !tbaa !28
  %563 = load i64, ptr %9, align 8, !tbaa !21
  %564 = getelementptr inbounds double, ptr %562, i64 %563
  %565 = load double, ptr %564, align 8, !tbaa !32
  %566 = call double @llvm.fmuladd.f64(double %558, double %565, double %555)
  store double %566, ptr %12, align 8, !tbaa !32
  br label %567

567:                                              ; preds = %544
  %568 = load i64, ptr %9, align 8, !tbaa !21
  %569 = add nsw i64 %568, 1
  store i64 %569, ptr %9, align 8, !tbaa !21
  br label %539, !llvm.loop !43

570:                                              ; preds = %539
  %571 = load double, ptr %12, align 8, !tbaa !32
  %572 = load ptr, ptr %4, align 8, !tbaa !5
  %573 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %571, ptr noundef %572)
  store double %573, ptr %12, align 8, !tbaa !32
  %574 = load double, ptr %12, align 8, !tbaa !32
  %575 = load ptr, ptr %3, align 8, !tbaa !5
  %576 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %575, i32 0, i32 44
  %577 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %576, i32 0, i32 4
  %578 = load ptr, ptr %577, align 8, !tbaa !28
  %579 = load i64, ptr %8, align 8, !tbaa !21
  %580 = getelementptr inbounds double, ptr %578, i64 %579
  store double %574, ptr %580, align 8, !tbaa !32
  %581 = load double, ptr %12, align 8, !tbaa !32
  %582 = load double, ptr %14, align 8, !tbaa !32
  %583 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %581, double noundef %582)
  br i1 %583, label %584, label %587

584:                                              ; preds = %570
  %585 = load double, ptr %12, align 8, !tbaa !32
  store double %585, ptr %14, align 8, !tbaa !32
  %586 = load i64, ptr %8, align 8, !tbaa !21
  store i64 %586, ptr %15, align 8, !tbaa !21
  br label %587

587:                                              ; preds = %584, %570
  br label %588

588:                                              ; preds = %587, %537
  %589 = load i64, ptr %8, align 8, !tbaa !21
  %590 = add nsw i64 %589, 1
  store i64 %590, ptr %8, align 8, !tbaa !21
  br label %515, !llvm.loop !44

591:                                              ; preds = %515
  %592 = load double, ptr %14, align 8, !tbaa !32
  %593 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %592, double noundef 0x3D95FD7FE1796496)
  br i1 %593, label %597, label %594

594:                                              ; preds = %591
  %595 = load i64, ptr %15, align 8, !tbaa !21
  %596 = icmp slt i64 %595, 0
  br i1 %596, label %597, label %598

597:                                              ; preds = %594, %591
  store i64 0, ptr %11, align 8, !tbaa !21
  br label %971

598:                                              ; preds = %594
  %599 = load ptr, ptr %3, align 8, !tbaa !5
  %600 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %599, i32 0, i32 9
  %601 = load ptr, ptr %3, align 8, !tbaa !5
  %602 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %601, i32 0, i32 11
  %603 = load i64, ptr %602, align 8, !tbaa !25
  %604 = load i64, ptr %15, align 8, !tbaa !21
  %605 = load i64, ptr %5, align 8, !tbaa !21
  %606 = add nsw i64 %605, 1
  %607 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl8swaprowsEPNS_9ae_matrixElllPNS_8ae_stateE(ptr noundef %600, i64 noundef %603, i64 noundef %604, i64 noundef %606, ptr noundef %607)
  %608 = load ptr, ptr %3, align 8, !tbaa !5
  %609 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %608, i32 0, i32 8
  %610 = load ptr, ptr %3, align 8, !tbaa !5
  %611 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %610, i32 0, i32 11
  %612 = load i64, ptr %611, align 8, !tbaa !25
  %613 = load i64, ptr %15, align 8, !tbaa !21
  %614 = load i64, ptr %5, align 8, !tbaa !21
  %615 = add nsw i64 %614, 1
  %616 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl8swaprowsEPNS_9ae_matrixElllPNS_8ae_stateE(ptr noundef %609, i64 noundef %612, i64 noundef %613, i64 noundef %615, ptr noundef %616)
  %617 = load ptr, ptr %3, align 8, !tbaa !5
  %618 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %617, i32 0, i32 10
  %619 = load ptr, ptr %3, align 8, !tbaa !5
  %620 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %619, i32 0, i32 11
  %621 = load i64, ptr %620, align 8, !tbaa !25
  %622 = load i64, ptr %15, align 8, !tbaa !21
  %623 = load i64, ptr %5, align 8, !tbaa !21
  %624 = add nsw i64 %623, 1
  %625 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl8swaprowsEPNS_9ae_matrixElllPNS_8ae_stateE(ptr noundef %618, i64 noundef %621, i64 noundef %622, i64 noundef %624, ptr noundef %625)
  %626 = load ptr, ptr %3, align 8, !tbaa !5
  %627 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %626, i32 0, i32 44
  %628 = load ptr, ptr %3, align 8, !tbaa !5
  %629 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %628, i32 0, i32 11
  %630 = load i64, ptr %629, align 8, !tbaa !25
  %631 = load i64, ptr %15, align 8, !tbaa !21
  %632 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl12swapelementsEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef %627, i64 noundef %630, i64 noundef %631, ptr noundef %632)
  %633 = load double, ptr %14, align 8, !tbaa !32
  %634 = fdiv double 1.000000e+00, %633
  store double %634, ptr %12, align 8, !tbaa !32
  %635 = load ptr, ptr %3, align 8, !tbaa !5
  %636 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %635, i32 0, i32 9
  %637 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %636, i32 0, i32 6
  %638 = load ptr, ptr %637, align 8, !tbaa !28
  %639 = load ptr, ptr %3, align 8, !tbaa !5
  %640 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %639, i32 0, i32 11
  %641 = load i64, ptr %640, align 8, !tbaa !25
  %642 = getelementptr inbounds ptr, ptr %638, i64 %641
  %643 = load ptr, ptr %642, align 8, !tbaa !5
  %644 = getelementptr inbounds double, ptr %643, i64 0
  %645 = load i64, ptr %5, align 8, !tbaa !21
  %646 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %645)
  %647 = load double, ptr %12, align 8, !tbaa !32
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %644, i64 noundef 1, i64 noundef %646, double noundef %647)
  store double 0.000000e+00, ptr %12, align 8, !tbaa !32
  store i64 0, ptr %9, align 8, !tbaa !21
  br label %648

648:                                              ; preds = %678, %598
  %649 = load i64, ptr %9, align 8, !tbaa !21
  %650 = load i64, ptr %5, align 8, !tbaa !21
  %651 = sub nsw i64 %650, 1
  %652 = icmp sle i64 %649, %651
  br i1 %652, label %653, label %681

653:                                              ; preds = %648
  %654 = load ptr, ptr %3, align 8, !tbaa !5
  %655 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %654, i32 0, i32 8
  %656 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %655, i32 0, i32 6
  %657 = load ptr, ptr %656, align 8, !tbaa !28
  %658 = load ptr, ptr %3, align 8, !tbaa !5
  %659 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %658, i32 0, i32 11
  %660 = load i64, ptr %659, align 8, !tbaa !25
  %661 = getelementptr inbounds ptr, ptr %657, i64 %660
  %662 = load ptr, ptr %661, align 8, !tbaa !5
  %663 = load i64, ptr %9, align 8, !tbaa !21
  %664 = getelementptr inbounds double, ptr %662, i64 %663
  %665 = load double, ptr %664, align 8, !tbaa !32
  %666 = load ptr, ptr %3, align 8, !tbaa !5
  %667 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %666, i32 0, i32 4
  %668 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %667, i32 0, i32 4
  %669 = load ptr, ptr %668, align 8, !tbaa !28
  %670 = load i64, ptr %9, align 8, !tbaa !21
  %671 = getelementptr inbounds double, ptr %669, i64 %670
  %672 = load double, ptr %671, align 8, !tbaa !32
  %673 = fmul double %665, %672
  store double %673, ptr %13, align 8, !tbaa !32
  %674 = load double, ptr %12, align 8, !tbaa !32
  %675 = load double, ptr %13, align 8, !tbaa !32
  %676 = load double, ptr %13, align 8, !tbaa !32
  %677 = call double @llvm.fmuladd.f64(double %675, double %676, double %674)
  store double %677, ptr %12, align 8, !tbaa !32
  br label %678

678:                                              ; preds = %653
  %679 = load i64, ptr %9, align 8, !tbaa !21
  %680 = add nsw i64 %679, 1
  store i64 %680, ptr %9, align 8, !tbaa !21
  br label %648, !llvm.loop !45

681:                                              ; preds = %648
  %682 = load double, ptr %12, align 8, !tbaa !32
  %683 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %682, double noundef 0.000000e+00)
  %684 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %683, ptr noundef @.str.192, ptr noundef %684)
  %685 = load double, ptr %12, align 8, !tbaa !32
  %686 = load ptr, ptr %4, align 8, !tbaa !5
  %687 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %685, ptr noundef %686)
  %688 = fdiv double 1.000000e+00, %687
  store double %688, ptr %12, align 8, !tbaa !32
  %689 = load ptr, ptr %3, align 8, !tbaa !5
  %690 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %689, i32 0, i32 8
  %691 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %690, i32 0, i32 6
  %692 = load ptr, ptr %691, align 8, !tbaa !28
  %693 = load ptr, ptr %3, align 8, !tbaa !5
  %694 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %693, i32 0, i32 11
  %695 = load i64, ptr %694, align 8, !tbaa !25
  %696 = getelementptr inbounds ptr, ptr %692, i64 %695
  %697 = load ptr, ptr %696, align 8, !tbaa !5
  %698 = getelementptr inbounds double, ptr %697, i64 0
  %699 = load i64, ptr %5, align 8, !tbaa !21
  %700 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %699)
  %701 = load double, ptr %12, align 8, !tbaa !32
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %698, i64 noundef 1, i64 noundef %700, double noundef %701)
  store double 0.000000e+00, ptr %12, align 8, !tbaa !32
  store i64 0, ptr %9, align 8, !tbaa !21
  br label %702

702:                                              ; preds = %724, %681
  %703 = load i64, ptr %9, align 8, !tbaa !21
  %704 = load i64, ptr %5, align 8, !tbaa !21
  %705 = sub nsw i64 %704, 1
  %706 = icmp sle i64 %703, %705
  br i1 %706, label %707, label %727

707:                                              ; preds = %702
  %708 = load ptr, ptr %3, align 8, !tbaa !5
  %709 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %708, i32 0, i32 10
  %710 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %709, i32 0, i32 6
  %711 = load ptr, ptr %710, align 8, !tbaa !28
  %712 = load ptr, ptr %3, align 8, !tbaa !5
  %713 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %712, i32 0, i32 11
  %714 = load i64, ptr %713, align 8, !tbaa !25
  %715 = getelementptr inbounds ptr, ptr %711, i64 %714
  %716 = load ptr, ptr %715, align 8, !tbaa !5
  %717 = load i64, ptr %9, align 8, !tbaa !21
  %718 = getelementptr inbounds double, ptr %716, i64 %717
  %719 = load double, ptr %718, align 8, !tbaa !32
  store double %719, ptr %13, align 8, !tbaa !32
  %720 = load double, ptr %12, align 8, !tbaa !32
  %721 = load double, ptr %13, align 8, !tbaa !32
  %722 = load double, ptr %13, align 8, !tbaa !32
  %723 = call double @llvm.fmuladd.f64(double %721, double %722, double %720)
  store double %723, ptr %12, align 8, !tbaa !32
  br label %724

724:                                              ; preds = %707
  %725 = load i64, ptr %9, align 8, !tbaa !21
  %726 = add nsw i64 %725, 1
  store i64 %726, ptr %9, align 8, !tbaa !21
  br label %702, !llvm.loop !46

727:                                              ; preds = %702
  %728 = load double, ptr %12, align 8, !tbaa !32
  %729 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %728, double noundef 0.000000e+00)
  %730 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %729, ptr noundef @.str.193, ptr noundef %730)
  %731 = load double, ptr %12, align 8, !tbaa !32
  %732 = load ptr, ptr %4, align 8, !tbaa !5
  %733 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %731, ptr noundef %732)
  %734 = fdiv double 1.000000e+00, %733
  store double %734, ptr %12, align 8, !tbaa !32
  %735 = load ptr, ptr %3, align 8, !tbaa !5
  %736 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %735, i32 0, i32 10
  %737 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %736, i32 0, i32 6
  %738 = load ptr, ptr %737, align 8, !tbaa !28
  %739 = load ptr, ptr %3, align 8, !tbaa !5
  %740 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %739, i32 0, i32 11
  %741 = load i64, ptr %740, align 8, !tbaa !25
  %742 = getelementptr inbounds ptr, ptr %738, i64 %741
  %743 = load ptr, ptr %742, align 8, !tbaa !5
  %744 = getelementptr inbounds double, ptr %743, i64 0
  %745 = load i64, ptr %5, align 8, !tbaa !21
  %746 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %745)
  %747 = load double, ptr %12, align 8, !tbaa !32
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %744, i64 noundef 1, i64 noundef %746, double noundef %747)
  %748 = load ptr, ptr %3, align 8, !tbaa !5
  %749 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %748, i32 0, i32 32
  %750 = load i64, ptr %11, align 8, !tbaa !21
  %751 = sub nsw i64 %750, 1
  %752 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %749, i64 noundef %751, ptr noundef %752)
  store i64 0, ptr %9, align 8, !tbaa !21
  br label %753

753:                                              ; preds = %813, %727
  %754 = load i64, ptr %9, align 8, !tbaa !21
  %755 = load i64, ptr %5, align 8, !tbaa !21
  %756 = sub nsw i64 %755, 1
  %757 = icmp sle i64 %754, %756
  br i1 %757, label %758, label %816

758:                                              ; preds = %753
  %759 = load ptr, ptr %3, align 8, !tbaa !5
  %760 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %759, i32 0, i32 9
  %761 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %760, i32 0, i32 6
  %762 = load ptr, ptr %761, align 8, !tbaa !28
  %763 = load ptr, ptr %3, align 8, !tbaa !5
  %764 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %763, i32 0, i32 11
  %765 = load i64, ptr %764, align 8, !tbaa !25
  %766 = getelementptr inbounds ptr, ptr %762, i64 %765
  %767 = load ptr, ptr %766, align 8, !tbaa !5
  %768 = load i64, ptr %9, align 8, !tbaa !21
  %769 = getelementptr inbounds double, ptr %767, i64 %768
  %770 = load double, ptr %769, align 8, !tbaa !32
  %771 = load ptr, ptr %3, align 8, !tbaa !5
  %772 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %771, i32 0, i32 5
  %773 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %772, i32 0, i32 4
  %774 = load ptr, ptr %773, align 8, !tbaa !28
  %775 = load i64, ptr %9, align 8, !tbaa !21
  %776 = getelementptr inbounds double, ptr %774, i64 %775
  %777 = load double, ptr %776, align 8, !tbaa !32
  %778 = fdiv double %770, %777
  %779 = load ptr, ptr %3, align 8, !tbaa !5
  %780 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %779, i32 0, i32 46
  %781 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %780, i32 0, i32 4
  %782 = load ptr, ptr %781, align 8, !tbaa !28
  %783 = load i64, ptr %9, align 8, !tbaa !21
  %784 = getelementptr inbounds double, ptr %782, i64 %783
  store double %778, ptr %784, align 8, !tbaa !32
  %785 = load ptr, ptr %3, align 8, !tbaa !5
  %786 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %785, i32 0, i32 8
  %787 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %786, i32 0, i32 6
  %788 = load ptr, ptr %787, align 8, !tbaa !28
  %789 = load ptr, ptr %3, align 8, !tbaa !5
  %790 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %789, i32 0, i32 11
  %791 = load i64, ptr %790, align 8, !tbaa !25
  %792 = getelementptr inbounds ptr, ptr %788, i64 %791
  %793 = load ptr, ptr %792, align 8, !tbaa !5
  %794 = load i64, ptr %9, align 8, !tbaa !21
  %795 = getelementptr inbounds double, ptr %793, i64 %794
  %796 = load double, ptr %795, align 8, !tbaa !32
  %797 = load ptr, ptr %3, align 8, !tbaa !5
  %798 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %797, i32 0, i32 4
  %799 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %798, i32 0, i32 4
  %800 = load ptr, ptr %799, align 8, !tbaa !28
  %801 = load i64, ptr %9, align 8, !tbaa !21
  %802 = getelementptr inbounds double, ptr %800, i64 %801
  %803 = load double, ptr %802, align 8, !tbaa !32
  %804 = load ptr, ptr %4, align 8, !tbaa !5
  %805 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %803, ptr noundef %804)
  %806 = fmul double %796, %805
  %807 = load ptr, ptr %3, align 8, !tbaa !5
  %808 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %807, i32 0, i32 47
  %809 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %808, i32 0, i32 4
  %810 = load ptr, ptr %809, align 8, !tbaa !28
  %811 = load i64, ptr %9, align 8, !tbaa !21
  %812 = getelementptr inbounds double, ptr %810, i64 %811
  store double %806, ptr %812, align 8, !tbaa !32
  br label %813

813:                                              ; preds = %758
  %814 = load i64, ptr %9, align 8, !tbaa !21
  %815 = add nsw i64 %814, 1
  store i64 %815, ptr %9, align 8, !tbaa !21
  br label %753, !llvm.loop !47

816:                                              ; preds = %753
  store i64 0, ptr %9, align 8, !tbaa !21
  br label %817

817:                                              ; preds = %876, %816
  %818 = load i64, ptr %9, align 8, !tbaa !21
  %819 = load i64, ptr %5, align 8, !tbaa !21
  %820 = icmp sle i64 %818, %819
  br i1 %820, label %821, label %879

821:                                              ; preds = %817
  %822 = load ptr, ptr %3, align 8, !tbaa !5
  %823 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %822, i32 0, i32 9
  %824 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %823, i32 0, i32 6
  %825 = load ptr, ptr %824, align 8, !tbaa !28
  %826 = load ptr, ptr %3, align 8, !tbaa !5
  %827 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %826, i32 0, i32 11
  %828 = load i64, ptr %827, align 8, !tbaa !25
  %829 = getelementptr inbounds ptr, ptr %825, i64 %828
  %830 = load ptr, ptr %829, align 8, !tbaa !5
  %831 = load i64, ptr %9, align 8, !tbaa !21
  %832 = getelementptr inbounds double, ptr %830, i64 %831
  %833 = load double, ptr %832, align 8, !tbaa !32
  %834 = load ptr, ptr %3, align 8, !tbaa !5
  %835 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %834, i32 0, i32 48
  %836 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %835, i32 0, i32 4
  %837 = load ptr, ptr %836, align 8, !tbaa !28
  %838 = load i64, ptr %9, align 8, !tbaa !21
  %839 = getelementptr inbounds double, ptr %837, i64 %838
  store double %833, ptr %839, align 8, !tbaa !32
  %840 = load ptr, ptr %3, align 8, !tbaa !5
  %841 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %840, i32 0, i32 8
  %842 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %841, i32 0, i32 6
  %843 = load ptr, ptr %842, align 8, !tbaa !28
  %844 = load ptr, ptr %3, align 8, !tbaa !5
  %845 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %844, i32 0, i32 11
  %846 = load i64, ptr %845, align 8, !tbaa !25
  %847 = getelementptr inbounds ptr, ptr %843, i64 %846
  %848 = load ptr, ptr %847, align 8, !tbaa !5
  %849 = load i64, ptr %9, align 8, !tbaa !21
  %850 = getelementptr inbounds double, ptr %848, i64 %849
  %851 = load double, ptr %850, align 8, !tbaa !32
  %852 = load ptr, ptr %3, align 8, !tbaa !5
  %853 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %852, i32 0, i32 49
  %854 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %853, i32 0, i32 4
  %855 = load ptr, ptr %854, align 8, !tbaa !28
  %856 = load i64, ptr %9, align 8, !tbaa !21
  %857 = getelementptr inbounds double, ptr %855, i64 %856
  store double %851, ptr %857, align 8, !tbaa !32
  %858 = load ptr, ptr %3, align 8, !tbaa !5
  %859 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %858, i32 0, i32 10
  %860 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %859, i32 0, i32 6
  %861 = load ptr, ptr %860, align 8, !tbaa !28
  %862 = load ptr, ptr %3, align 8, !tbaa !5
  %863 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %862, i32 0, i32 11
  %864 = load i64, ptr %863, align 8, !tbaa !25
  %865 = getelementptr inbounds ptr, ptr %861, i64 %864
  %866 = load ptr, ptr %865, align 8, !tbaa !5
  %867 = load i64, ptr %9, align 8, !tbaa !21
  %868 = getelementptr inbounds double, ptr %866, i64 %867
  %869 = load double, ptr %868, align 8, !tbaa !32
  %870 = load ptr, ptr %3, align 8, !tbaa !5
  %871 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %870, i32 0, i32 50
  %872 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %871, i32 0, i32 4
  %873 = load ptr, ptr %872, align 8, !tbaa !28
  %874 = load i64, ptr %9, align 8, !tbaa !21
  %875 = getelementptr inbounds double, ptr %873, i64 %874
  store double %869, ptr %875, align 8, !tbaa !32
  br label %876

876:                                              ; preds = %821
  %877 = load i64, ptr %9, align 8, !tbaa !21
  %878 = add nsw i64 %877, 1
  store i64 %878, ptr %9, align 8, !tbaa !21
  br label %817, !llvm.loop !48

879:                                              ; preds = %817
  %880 = load i64, ptr %11, align 8, !tbaa !21
  %881 = sub nsw i64 %880, 1
  %882 = load i64, ptr %5, align 8, !tbaa !21
  %883 = load ptr, ptr %3, align 8, !tbaa !5
  %884 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %883, i32 0, i32 9
  %885 = load ptr, ptr %3, align 8, !tbaa !5
  %886 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %885, i32 0, i32 11
  %887 = load i64, ptr %886, align 8, !tbaa !25
  %888 = add nsw i64 %887, 1
  %889 = load ptr, ptr %3, align 8, !tbaa !5
  %890 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %889, i32 0, i32 46
  %891 = load ptr, ptr %3, align 8, !tbaa !5
  %892 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %891, i32 0, i32 32
  %893 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemvElldPNS_9ae_matrixElllPNS_9ae_vectorEldS3_lPNS_8ae_stateE(i64 noundef %881, i64 noundef %882, double noundef 1.000000e+00, ptr noundef %884, i64 noundef %888, i64 noundef 0, i64 noundef 0, ptr noundef %890, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %892, i64 noundef 0, ptr noundef %893)
  %894 = load i64, ptr %11, align 8, !tbaa !21
  %895 = sub nsw i64 %894, 1
  %896 = load i64, ptr %5, align 8, !tbaa !21
  %897 = add nsw i64 %896, 1
  %898 = load ptr, ptr %3, align 8, !tbaa !5
  %899 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %898, i32 0, i32 9
  %900 = load ptr, ptr %3, align 8, !tbaa !5
  %901 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %900, i32 0, i32 11
  %902 = load i64, ptr %901, align 8, !tbaa !25
  %903 = add nsw i64 %902, 1
  %904 = load ptr, ptr %3, align 8, !tbaa !5
  %905 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %904, i32 0, i32 32
  %906 = load ptr, ptr %3, align 8, !tbaa !5
  %907 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %906, i32 0, i32 48
  %908 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rmatrixgerEllPNS_9ae_matrixElldPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %895, i64 noundef %897, ptr noundef %899, i64 noundef %903, i64 noundef 0, double noundef -1.000000e+00, ptr noundef %905, i64 noundef 0, ptr noundef %907, i64 noundef 0, ptr noundef %908)
  %909 = load i64, ptr %11, align 8, !tbaa !21
  %910 = sub nsw i64 %909, 1
  %911 = load i64, ptr %5, align 8, !tbaa !21
  %912 = load ptr, ptr %3, align 8, !tbaa !5
  %913 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %912, i32 0, i32 8
  %914 = load ptr, ptr %3, align 8, !tbaa !5
  %915 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %914, i32 0, i32 11
  %916 = load i64, ptr %915, align 8, !tbaa !25
  %917 = add nsw i64 %916, 1
  %918 = load ptr, ptr %3, align 8, !tbaa !5
  %919 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %918, i32 0, i32 47
  %920 = load ptr, ptr %3, align 8, !tbaa !5
  %921 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %920, i32 0, i32 32
  %922 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemvElldPNS_9ae_matrixElllPNS_9ae_vectorEldS3_lPNS_8ae_stateE(i64 noundef %910, i64 noundef %911, double noundef 1.000000e+00, ptr noundef %913, i64 noundef %917, i64 noundef 0, i64 noundef 0, ptr noundef %919, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %921, i64 noundef 0, ptr noundef %922)
  %923 = load i64, ptr %11, align 8, !tbaa !21
  %924 = sub nsw i64 %923, 1
  %925 = load i64, ptr %5, align 8, !tbaa !21
  %926 = add nsw i64 %925, 1
  %927 = load ptr, ptr %3, align 8, !tbaa !5
  %928 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %927, i32 0, i32 8
  %929 = load ptr, ptr %3, align 8, !tbaa !5
  %930 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %929, i32 0, i32 11
  %931 = load i64, ptr %930, align 8, !tbaa !25
  %932 = add nsw i64 %931, 1
  %933 = load ptr, ptr %3, align 8, !tbaa !5
  %934 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %933, i32 0, i32 32
  %935 = load ptr, ptr %3, align 8, !tbaa !5
  %936 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %935, i32 0, i32 49
  %937 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rmatrixgerEllPNS_9ae_matrixElldPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %924, i64 noundef %926, ptr noundef %928, i64 noundef %932, i64 noundef 0, double noundef -1.000000e+00, ptr noundef %934, i64 noundef 0, ptr noundef %936, i64 noundef 0, ptr noundef %937)
  %938 = load i64, ptr %11, align 8, !tbaa !21
  %939 = sub nsw i64 %938, 1
  %940 = load i64, ptr %5, align 8, !tbaa !21
  %941 = load ptr, ptr %3, align 8, !tbaa !5
  %942 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %941, i32 0, i32 10
  %943 = load ptr, ptr %3, align 8, !tbaa !5
  %944 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %943, i32 0, i32 11
  %945 = load i64, ptr %944, align 8, !tbaa !25
  %946 = add nsw i64 %945, 1
  %947 = load ptr, ptr %3, align 8, !tbaa !5
  %948 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %947, i32 0, i32 50
  %949 = load ptr, ptr %3, align 8, !tbaa !5
  %950 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %949, i32 0, i32 32
  %951 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemvElldPNS_9ae_matrixElllPNS_9ae_vectorEldS3_lPNS_8ae_stateE(i64 noundef %939, i64 noundef %940, double noundef 1.000000e+00, ptr noundef %942, i64 noundef %946, i64 noundef 0, i64 noundef 0, ptr noundef %948, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %950, i64 noundef 0, ptr noundef %951)
  %952 = load i64, ptr %11, align 8, !tbaa !21
  %953 = sub nsw i64 %952, 1
  %954 = load i64, ptr %5, align 8, !tbaa !21
  %955 = add nsw i64 %954, 1
  %956 = load ptr, ptr %3, align 8, !tbaa !5
  %957 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %956, i32 0, i32 10
  %958 = load ptr, ptr %3, align 8, !tbaa !5
  %959 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %958, i32 0, i32 11
  %960 = load i64, ptr %959, align 8, !tbaa !25
  %961 = add nsw i64 %960, 1
  %962 = load ptr, ptr %3, align 8, !tbaa !5
  %963 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %962, i32 0, i32 32
  %964 = load ptr, ptr %3, align 8, !tbaa !5
  %965 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %964, i32 0, i32 50
  %966 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl10rmatrixgerEllPNS_9ae_matrixElldPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %953, i64 noundef %955, ptr noundef %957, i64 noundef %961, i64 noundef 0, double noundef -1.000000e+00, ptr noundef %963, i64 noundef 0, ptr noundef %965, i64 noundef 0, ptr noundef %966)
  %967 = load ptr, ptr %3, align 8, !tbaa !5
  %968 = getelementptr inbounds %"struct.alglib_impl::sactiveset", ptr %967, i32 0, i32 11
  %969 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %968, ptr noundef %969)
  %970 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl3decEPlPNS_8ae_stateE(ptr noundef %11, ptr noundef %970)
  br label %497, !llvm.loop !49

971:                                              ; preds = %597, %510, %497
  store i32 0, ptr %16, align 4
  br label %972

972:                                              ; preds = %971, %164, %21
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #4
  %973 = load i32, ptr %16, align 4
  switch i32 %973, label %975 [
    i32 0, label %974
    i32 1, label %974
  ]

974:                                              ; preds = %972, %972
  ret void

975:                                              ; preds = %972
  unreachable
}

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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, !13, i64 280}
!10 = !{!"_ZTSN11alglib_impl10sactivesetE", !11, i64 0, !11, i64 8, !12, i64 16, !13, i64 80, !12, i64 88, !12, i64 152, !12, i64 216, !13, i64 280, !15, i64 288, !15, i64 368, !15, i64 448, !11, i64 528, !12, i64 536, !11, i64 600, !11, i64 608, !13, i64 616, !13, i64 617, !12, i64 624, !12, i64 688, !12, i64 752, !12, i64 816, !15, i64 880, !11, i64 960, !11, i64 968, !12, i64 976, !12, i64 1040, !12, i64 1104, !12, i64 1168, !12, i64 1232, !12, i64 1296, !16, i64 1360, !12, i64 3000, !12, i64 3064, !12, i64 3128, !15, i64 3192, !12, i64 3272, !12, i64 3336, !12, i64 3400, !15, i64 3464, !15, i64 3544, !12, i64 3624, !12, i64 3688, !12, i64 3752, !15, i64 3816, !12, i64 3896, !12, i64 3960, !12, i64 4024, !12, i64 4088, !12, i64 4152, !12, i64 4216, !12, i64 4280}
!11 = !{!"long", !7, i64 0}
!12 = !{!"_ZTSN11alglib_impl9ae_vectorE", !11, i64 0, !11, i64 8, !13, i64 16, !14, i64 24, !7, i64 56}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!15 = !{!"_ZTSN11alglib_impl9ae_matrixE", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !13, i64 32, !14, i64 40, !7, i64 72}
!16 = !{!"_ZTSN11alglib_impl11snnlssolverE", !11, i64 0, !11, i64 8, !11, i64 16, !15, i64 24, !12, i64 104, !12, i64 168, !17, i64 232, !11, i64 240, !12, i64 248, !12, i64 312, !15, i64 376, !15, i64 456, !15, i64 536, !12, i64 616, !12, i64 680, !12, i64 744, !12, i64 808, !12, i64 872, !12, i64 936, !12, i64 1000, !12, i64 1064, !12, i64 1128, !12, i64 1192, !12, i64 1256, !12, i64 1320, !12, i64 1384, !12, i64 1448, !12, i64 1512, !12, i64 1576}
!17 = !{!"double", !7, i64 0}
!18 = !{i8 0, i8 2}
!19 = !{}
!20 = !{!10, !11, i64 0}
!21 = !{!11, !11, i64 0}
!22 = !{!10, !11, i64 960}
!23 = !{!10, !11, i64 968}
!24 = !{!10, !11, i64 600}
!25 = !{!10, !11, i64 528}
!26 = !{!10, !11, i64 608}
!27 = !{!13, !13, i64 0}
!28 = !{!7, !7, i64 0}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = distinct !{!31, !30}
!32 = !{!17, !17, i64 0}
!33 = distinct !{!33, !30}
!34 = distinct !{!34, !30}
!35 = distinct !{!35, !30}
!36 = distinct !{!36, !30}
!37 = distinct !{!37, !30}
!38 = distinct !{!38, !30}
!39 = distinct !{!39, !30}
!40 = distinct !{!40, !30}
!41 = distinct !{!41, !30}
!42 = distinct !{!42, !30}
!43 = distinct !{!43, !30}
!44 = distinct !{!44, !30}
!45 = distinct !{!45, !30}
!46 = distinct !{!46, !30}
!47 = distinct !{!47, !30}
!48 = distinct !{!48, !30}
!49 = distinct !{!49, !30}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str.191 = external hidden unnamed_addr constant [28 x i8], align 1
@_ZN11alglib_implL29sactivesets_minnormseparationE = external hidden local_unnamed_addr global double, align 8
@.str.192 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.193 = external hidden unnamed_addr constant [59 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl15sasrebuildbasisEPNS_10sactivesetEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) local_unnamed_addr #3 {
  %3 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #5
  %4 = getelementptr inbounds i8, ptr %0, i64 280
  %5 = load i8, ptr %4, align 8, !tbaa !5, !range !17, !noundef !18
  %6 = trunc nuw i8 %5 to i1
  br i1 %6, label %.loopexit, label %7

7:                                                ; preds = %2
  %8 = load i64, ptr %0, align 8, !tbaa !19
  %9 = getelementptr inbounds i8, ptr %0, i64 960
  %10 = load i64, ptr %9, align 8, !tbaa !20
  %11 = getelementptr inbounds i8, ptr %0, i64 968
  %12 = load i64, ptr %11, align 8, !tbaa !21
  %13 = getelementptr inbounds i8, ptr %0, i64 3064
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %8, ptr noundef %1)
  %14 = getelementptr inbounds i8, ptr %0, i64 4024
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %14, i64 noundef %8, ptr noundef %1)
  %15 = getelementptr inbounds i8, ptr %0, i64 4088
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %8, ptr noundef %1)
  %16 = getelementptr inbounds i8, ptr %0, i64 4152
  %17 = add i64 %8, 1
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %17, ptr noundef %1)
  %18 = getelementptr inbounds i8, ptr %0, i64 4216
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %18, i64 noundef %17, ptr noundef %1)
  %19 = getelementptr inbounds i8, ptr %0, i64 4280
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %19, i64 noundef %17, ptr noundef %1)
  %20 = getelementptr inbounds i8, ptr %0, i64 3816
  %21 = add nsw i64 %12, %10
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %20, i64 noundef %21, i64 noundef %17, ptr noundef %1)
  %22 = getelementptr inbounds i8, ptr %0, i64 368
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %22, i64 noundef %21, i64 noundef %17, ptr noundef %1)
  %23 = getelementptr inbounds i8, ptr %0, i64 448
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %23, i64 noundef %21, i64 noundef %17, ptr noundef %1)
  %24 = getelementptr inbounds i8, ptr %0, i64 288
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %24, i64 noundef %21, i64 noundef %17, ptr noundef %1)
  %25 = getelementptr inbounds i8, ptr %0, i64 536
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %25, i64 noundef %8, ptr noundef %1)
  %26 = getelementptr inbounds i8, ptr %0, i64 600
  %27 = getelementptr inbounds i8, ptr %0, i64 528
  store i64 0, ptr %27, align 8, !tbaa !22
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %26, i8 0, i64 16, i1 false)
  store i8 1, ptr %4, align 8, !tbaa !5
  %.not.not387 = icmp sgt i64 %21, 0
  br i1 %.not.not387, label %.lr.ph, label %.preheader386.thread

.lr.ph:                                           ; preds = %7
  %28 = getelementptr inbounds i8, ptr %0, i64 272
  %29 = load ptr, ptr %28, align 8, !tbaa !23
  %30 = getelementptr i64, ptr %29, i64 %8
  %min.iters.check = icmp ult i64 %21, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph
  %.0342389.ph = phi i1 [ false, %.lr.ph ], [ %39, %middle.block ]
  %.0348388.ph = phi i64 [ 0, %.lr.ph ], [ %n.vec, %middle.block ]
  br label %scalar.ph

vector.ph:                                        ; preds = %.lr.ph
  %n.vec = and i64 %21, 9223372036854775804
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.phi = phi <2 x i1> [ zeroinitializer, %vector.ph ], [ %35, %vector.body ]
  %vec.phi521 = phi <2 x i1> [ zeroinitializer, %vector.ph ], [ %36, %vector.body ]
  %31 = getelementptr i64, ptr %30, i64 %index
  %32 = getelementptr i8, ptr %31, i64 16
  %wide.load = load <2 x i64>, ptr %31, align 8, !tbaa !24
  %wide.load522 = load <2 x i64>, ptr %32, align 8, !tbaa !24
  %33 = icmp sgt <2 x i64> %wide.load, zeroinitializer
  %34 = icmp sgt <2 x i64> %wide.load522, zeroinitializer
  %35 = or <2 x i1> %vec.phi, %33
  %36 = or <2 x i1> %vec.phi521, %34
  %index.next = add nuw i64 %index, 4
  %37 = icmp eq i64 %index.next, %n.vec
  br i1 %37, label %middle.block, label %vector.body, !llvm.loop !25

middle.block:                                     ; preds = %vector.body
  %bin.rdx = or <2 x i1> %36, %35
  %bin.rdx.fr = freeze <2 x i1> %bin.rdx
  %38 = bitcast <2 x i1> %bin.rdx.fr to i2
  %39 = icmp ne i2 %38, 0
  %cmp.n = icmp eq i64 %21, %n.vec
  br i1 %cmp.n, label %.preheader386, label %scalar.ph.preheader

.preheader386:                                    ; preds = %scalar.ph, %middle.block
  %spec.select.lcssa = phi i1 [ %39, %middle.block ], [ %spec.select, %scalar.ph ]
  %.not.not359390 = icmp sgt i64 %8, 0
  br i1 %.not.not359390, label %.lr.ph392, label %._crit_edge.thread

.preheader386.thread:                             ; preds = %7
  %.not.not359390502 = icmp sgt i64 %8, 0
  br i1 %.not.not359390502, label %.lr.ph392, label %.loopexit

.lr.ph392:                                        ; preds = %.preheader386.thread, %.preheader386
  %.0342.lcssa503 = phi i1 [ false, %.preheader386.thread ], [ %spec.select.lcssa, %.preheader386 ]
  %40 = getelementptr inbounds i8, ptr %0, i64 272
  %41 = getelementptr inbounds i8, ptr %0, i64 592
  %42 = add i64 %8, -1
  %xtraiter = and i64 %8, 1
  %43 = icmp eq i64 %42, 0
  br i1 %43, label %._crit_edge.unr-lcssa, label %.lr.ph392.new

.lr.ph392.new:                                    ; preds = %.lr.ph392
  %unroll_iter = and i64 %8, -2
  br label %48

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.0342389 = phi i1 [ %spec.select, %scalar.ph ], [ %.0342389.ph, %scalar.ph.preheader ]
  %.0348388 = phi i64 [ %47, %scalar.ph ], [ %.0348388.ph, %scalar.ph.preheader ]
  %44 = getelementptr i64, ptr %30, i64 %.0348388
  %45 = load i64, ptr %44, align 8, !tbaa !24
  %46 = icmp sgt i64 %45, 0
  %spec.select = select i1 %46, i1 true, i1 %.0342389
  %47 = add nuw nsw i64 %.0348388, 1
  %exitcond.not = icmp eq i64 %47, %21
  br i1 %exitcond.not, label %.preheader386, label %scalar.ph, !llvm.loop !29

48:                                               ; preds = %71, %.lr.ph392.new
  %49 = phi i64 [ 0, %.lr.ph392.new ], [ %72, %71 ]
  %.0344391 = phi i64 [ 0, %.lr.ph392.new ], [ %73, %71 ]
  %niter = phi i64 [ 0, %.lr.ph392.new ], [ %niter.next.1, %71 ]
  %50 = load ptr, ptr %40, align 8, !tbaa !23
  %51 = getelementptr inbounds i64, ptr %50, i64 %.0344391
  %52 = load i64, ptr %51, align 8, !tbaa !24
  %53 = icmp sgt i64 %52, 0
  br i1 %53, label %54, label %59

54:                                               ; preds = %48
  %55 = load ptr, ptr %41, align 8, !tbaa !23
  %56 = getelementptr inbounds i64, ptr %55, i64 %49
  store i64 %.0344391, ptr %56, align 8, !tbaa !24
  %57 = load i64, ptr %26, align 8, !tbaa !30
  %58 = add nsw i64 %57, 1
  store i64 %58, ptr %26, align 8, !tbaa !30
  br label %59

59:                                               ; preds = %48, %54
  %60 = phi i64 [ %49, %48 ], [ %58, %54 ]
  %61 = or disjoint i64 %.0344391, 1
  %62 = load ptr, ptr %40, align 8, !tbaa !23
  %63 = getelementptr inbounds i64, ptr %62, i64 %61
  %64 = load i64, ptr %63, align 8, !tbaa !24
  %65 = icmp sgt i64 %64, 0
  br i1 %65, label %66, label %71

66:                                               ; preds = %59
  %67 = load ptr, ptr %41, align 8, !tbaa !23
  %68 = getelementptr inbounds i64, ptr %67, i64 %60
  store i64 %61, ptr %68, align 8, !tbaa !24
  %69 = load i64, ptr %26, align 8, !tbaa !30
  %70 = add nsw i64 %69, 1
  store i64 %70, ptr %26, align 8, !tbaa !30
  br label %71

71:                                               ; preds = %66, %59
  %72 = phi i64 [ %60, %59 ], [ %70, %66 ]
  %73 = add nuw nsw i64 %.0344391, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.unr-lcssa, label %48, !llvm.loop !31

._crit_edge.unr-lcssa:                            ; preds = %71, %.lr.ph392
  %.unr = phi i64 [ 0, %.lr.ph392 ], [ %72, %71 ]
  %.0344391.unr = phi i64 [ 0, %.lr.ph392 ], [ %73, %71 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge.unr-lcssa
  %74 = load ptr, ptr %40, align 8, !tbaa !23
  %75 = getelementptr inbounds i64, ptr %74, i64 %.0344391.unr
  %76 = load i64, ptr %75, align 8, !tbaa !24
  %77 = icmp sgt i64 %76, 0
  br i1 %77, label %78, label %._crit_edge

78:                                               ; preds = %.epil.preheader
  %79 = load ptr, ptr %41, align 8, !tbaa !23
  %80 = getelementptr inbounds i64, ptr %79, i64 %.unr
  store i64 %.0344391.unr, ptr %80, align 8, !tbaa !24
  %81 = load i64, ptr %26, align 8, !tbaa !30
  %82 = add nsw i64 %81, 1
  store i64 %82, ptr %26, align 8, !tbaa !30
  br label %._crit_edge

._crit_edge:                                      ; preds = %.epil.preheader, %78, %._crit_edge.unr-lcssa
  br i1 %.0342.lcssa503, label %.lr.ph396, label %.loopexit

._crit_edge.thread:                               ; preds = %.preheader386
  br i1 %spec.select.lcssa, label %.thread, label %.loopexit

.thread:                                          ; preds = %._crit_edge.thread
  %83 = getelementptr inbounds i8, ptr %0, i64 3960
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %83, i64 noundef %8, ptr noundef %1)
  br label %._crit_edge397

.lr.ph396:                                        ; preds = %._crit_edge
  %84 = getelementptr inbounds i8, ptr %0, i64 3960
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %84, i64 noundef %8, ptr noundef %1)
  %85 = getelementptr inbounds i8, ptr %0, i64 208
  %86 = getelementptr inbounds i8, ptr %0, i64 4016
  %xtraiter532 = and i64 %8, 1
  %87 = icmp eq i64 %42, 0
  br i1 %87, label %._crit_edge397.loopexit.unr-lcssa, label %.lr.ph396.new

.lr.ph396.new:                                    ; preds = %.lr.ph396
  %unroll_iter534 = and i64 %8, -2
  br label %88

88:                                               ; preds = %88, %.lr.ph396.new
  %.1349394 = phi i64 [ 0, %.lr.ph396.new ], [ %102, %88 ]
  %niter535 = phi i64 [ 0, %.lr.ph396.new ], [ %niter535.next.1, %88 ]
  %89 = load ptr, ptr %85, align 8, !tbaa !23
  %90 = getelementptr inbounds double, ptr %89, i64 %.1349394
  %91 = load double, ptr %90, align 8, !tbaa !32
  %92 = fdiv double 1.000000e+00, %91
  %93 = load ptr, ptr %86, align 8, !tbaa !23
  %94 = getelementptr inbounds double, ptr %93, i64 %.1349394
  store double %92, ptr %94, align 8, !tbaa !32
  %95 = or disjoint i64 %.1349394, 1
  %96 = load ptr, ptr %85, align 8, !tbaa !23
  %97 = getelementptr inbounds double, ptr %96, i64 %95
  %98 = load double, ptr %97, align 8, !tbaa !32
  %99 = fdiv double 1.000000e+00, %98
  %100 = load ptr, ptr %86, align 8, !tbaa !23
  %101 = getelementptr inbounds double, ptr %100, i64 %95
  store double %99, ptr %101, align 8, !tbaa !32
  %102 = add nuw nsw i64 %.1349394, 2
  %niter535.next.1 = add i64 %niter535, 2
  %niter535.ncmp.1 = icmp eq i64 %niter535.next.1, %unroll_iter534
  br i1 %niter535.ncmp.1, label %._crit_edge397.loopexit.unr-lcssa, label %88, !llvm.loop !33

._crit_edge397.loopexit.unr-lcssa:                ; preds = %88, %.lr.ph396
  %.1349394.unr = phi i64 [ 0, %.lr.ph396 ], [ %102, %88 ]
  %lcmp.mod533.not = icmp eq i64 %xtraiter532, 0
  br i1 %lcmp.mod533.not, label %._crit_edge397, label %._crit_edge397.loopexit.epilog-lcssa

._crit_edge397.loopexit.epilog-lcssa:             ; preds = %._crit_edge397.loopexit.unr-lcssa
  %103 = load ptr, ptr %85, align 8, !tbaa !23
  %104 = getelementptr inbounds double, ptr %103, i64 %.1349394.unr
  %105 = load double, ptr %104, align 8, !tbaa !32
  %106 = fdiv double 1.000000e+00, %105
  %107 = load ptr, ptr %86, align 8, !tbaa !23
  %108 = getelementptr inbounds double, ptr %107, i64 %.1349394.unr
  store double %106, ptr %108, align 8, !tbaa !32
  br label %._crit_edge397

._crit_edge397:                                   ; preds = %._crit_edge397.loopexit.epilog-lcssa, %._crit_edge397.loopexit.unr-lcssa, %.thread
  %.not.not359390506 = phi i1 [ false, %.thread ], [ true, %._crit_edge397.loopexit.unr-lcssa ], [ true, %._crit_edge397.loopexit.epilog-lcssa ]
  store i64 0, ptr %3, align 8, !tbaa !24
  br i1 %.not.not387, label %.lr.ph401, label %.preheader382

.lr.ph401:                                        ; preds = %._crit_edge397
  %109 = getelementptr inbounds i8, ptr %0, i64 272
  %110 = getelementptr inbounds i8, ptr %0, i64 3888
  %111 = getelementptr inbounds i8, ptr %0, i64 952
  br label %117

.preheader385:                                    ; preds = %132
  %.pre = load i64, ptr %3, align 8, !tbaa !24
  %.not.not362412 = icmp sgt i64 %.pre, 0
  br i1 %.not.not362412, label %.preheader384.lr.ph, label %.preheader382

.preheader384.lr.ph:                              ; preds = %.preheader385
  %112 = getelementptr inbounds i8, ptr %0, i64 3888
  %113 = getelementptr inbounds i8, ptr %0, i64 4016
  %.not374408 = icmp slt i64 %8, 0
  %114 = add i64 %8, 1
  %115 = icmp eq i64 %8, 0
  %unroll_iter538 = and i64 %114, -2
  %116 = and i64 %8, 1
  %lcmp.mod537.not.not = icmp eq i64 %116, 0
  br label %.preheader384

117:                                              ; preds = %.lr.ph401, %132
  %.2350399 = phi i64 [ 0, %.lr.ph401 ], [ %133, %132 ]
  %118 = load ptr, ptr %109, align 8, !tbaa !23
  %119 = getelementptr i64, ptr %118, i64 %8
  %120 = getelementptr i64, ptr %119, i64 %.2350399
  %121 = load i64, ptr %120, align 8, !tbaa !24
  %122 = icmp sgt i64 %121, 0
  br i1 %122, label %123, label %132

123:                                              ; preds = %117
  %124 = load ptr, ptr %110, align 8, !tbaa !23
  %125 = load i64, ptr %3, align 8, !tbaa !24
  %126 = getelementptr inbounds ptr, ptr %124, i64 %125
  %127 = load ptr, ptr %126, align 8, !tbaa !34
  %128 = load ptr, ptr %111, align 8, !tbaa !23
  %129 = getelementptr inbounds ptr, ptr %128, i64 %.2350399
  %130 = load ptr, ptr %129, align 8, !tbaa !34
  %131 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %8)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %127, i64 noundef 1, ptr noundef %130, i64 noundef 1, i64 noundef %131)
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %3, ptr noundef %1)
  br label %132

132:                                              ; preds = %117, %123
  %133 = add nuw nsw i64 %.2350399, 1
  %exitcond481.not = icmp eq i64 %133, %21
  br i1 %exitcond481.not, label %.preheader385, label %117, !llvm.loop !35

.preheader384:                                    ; preds = %.preheader384.lr.ph, %.loopexit383
  %.3351413 = phi i64 [ 0, %.preheader384.lr.ph ], [ %194, %.loopexit383 ]
  br i1 %.not.not359390506, label %.lr.ph405, label %._crit_edge406

.preheader382:                                    ; preds = %.loopexit383, %._crit_edge397, %.preheader385
  %.lcssa = phi i64 [ %.pre, %.preheader385 ], [ 0, %._crit_edge397 ], [ %195, %.loopexit383 ]
  %.lcssa.fr = freeze i64 %.lcssa
  br i1 %.not.not359390506, label %.lr.ph422, label %.preheader379

.lr.ph422:                                        ; preds = %.preheader382
  %134 = getelementptr inbounds i8, ptr %0, i64 272
  %.not372.not416 = icmp sgt i64 %.lcssa.fr, 0
  %135 = getelementptr inbounds i8, ptr %0, i64 3888
  %136 = getelementptr inbounds i8, ptr %0, i64 72
  br i1 %.not372.not416, label %.lr.ph422.split.us, label %._crit_edge429

.lr.ph422.split.us:                               ; preds = %.lr.ph422, %..loopexit381_crit_edge.us
  %.3347420.us = phi i64 [ %141, %..loopexit381_crit_edge.us ], [ 0, %.lr.ph422 ]
  %137 = load ptr, ptr %134, align 8, !tbaa !23
  %138 = getelementptr inbounds i64, ptr %137, i64 %.3347420.us
  %139 = load i64, ptr %138, align 8, !tbaa !24
  %140 = icmp sgt i64 %139, 0
  br i1 %140, label %.preheader380.us, label %..loopexit381_crit_edge.us

..loopexit381_crit_edge.us:                       ; preds = %.preheader380.us, %.lr.ph422.split.us
  %141 = add nuw nsw i64 %.3347420.us, 1
  %exitcond485.not = icmp eq i64 %141, %8
  br i1 %exitcond485.not, label %.preheader379, label %.lr.ph422.split.us, !llvm.loop !36

.preheader380.us:                                 ; preds = %.lr.ph422.split.us, %.preheader380.us
  %.4352417.us = phi i64 [ %158, %.preheader380.us ], [ 0, %.lr.ph422.split.us ]
  %142 = load ptr, ptr %135, align 8, !tbaa !23
  %143 = getelementptr inbounds ptr, ptr %142, i64 %.4352417.us
  %144 = load ptr, ptr %143, align 8, !tbaa !34
  %145 = getelementptr inbounds double, ptr %144, i64 %8
  %146 = load double, ptr %145, align 8, !tbaa !32
  %147 = getelementptr inbounds double, ptr %144, i64 %.3347420.us
  %148 = load double, ptr %147, align 8, !tbaa !32
  %149 = load ptr, ptr %136, align 8, !tbaa !23
  %150 = getelementptr inbounds double, ptr %149, i64 %.3347420.us
  %151 = load double, ptr %150, align 8, !tbaa !32
  %152 = fneg double %148
  %153 = call double @llvm.fmuladd.f64(double %152, double %151, double %146)
  store double %153, ptr %145, align 8, !tbaa !32
  %154 = load ptr, ptr %135, align 8, !tbaa !23
  %155 = getelementptr inbounds ptr, ptr %154, i64 %.4352417.us
  %156 = load ptr, ptr %155, align 8, !tbaa !34
  %157 = getelementptr inbounds double, ptr %156, i64 %.3347420.us
  store double 0.000000e+00, ptr %157, align 8, !tbaa !32
  %158 = add nuw nsw i64 %.4352417.us, 1
  %exitcond484.not = icmp eq i64 %158, %.lcssa.fr
  br i1 %exitcond484.not, label %..loopexit381_crit_edge.us, label %.preheader380.us, !llvm.loop !37

.lr.ph405:                                        ; preds = %.preheader384, %.lr.ph405
  %.0340404 = phi double [ %168, %.lr.ph405 ], [ 0.000000e+00, %.preheader384 ]
  %.1345403 = phi i64 [ %169, %.lr.ph405 ], [ 0, %.preheader384 ]
  %159 = load ptr, ptr %112, align 8, !tbaa !23
  %160 = getelementptr inbounds ptr, ptr %159, i64 %.3351413
  %161 = load ptr, ptr %160, align 8, !tbaa !34
  %162 = getelementptr inbounds double, ptr %161, i64 %.1345403
  %163 = load double, ptr %162, align 8, !tbaa !32
  %164 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %163, ptr noundef %1)
  %165 = load ptr, ptr %113, align 8, !tbaa !23
  %166 = getelementptr inbounds double, ptr %165, i64 %.1345403
  %167 = load double, ptr %166, align 8, !tbaa !32
  %168 = call double @llvm.fmuladd.f64(double %164, double %167, double %.0340404)
  %169 = add nuw nsw i64 %.1345403, 1
  %exitcond482.not = icmp eq i64 %169, %8
  br i1 %exitcond482.not, label %._crit_edge406, label %.lr.ph405, !llvm.loop !38

._crit_edge406:                                   ; preds = %.lr.ph405, %.preheader384
  %.0340.lcssa = phi double [ 0.000000e+00, %.preheader384 ], [ %168, %.lr.ph405 ]
  %170 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %.0340.lcssa, double noundef 0.000000e+00)
  br i1 %170, label %171, label %.loopexit383

171:                                              ; preds = %._crit_edge406
  %172 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.0340.lcssa, ptr noundef %1)
  %173 = fdiv double 1.000000e+00, %172
  br i1 %.not374408, label %.loopexit383, label %.lr.ph411.preheader

.lr.ph411.preheader:                              ; preds = %171
  br i1 %115, label %.loopexit383.loopexit.unr-lcssa, label %.lr.ph411

.lr.ph411:                                        ; preds = %.lr.ph411.preheader, %.lr.ph411
  %.2346409 = phi i64 [ %187, %.lr.ph411 ], [ 0, %.lr.ph411.preheader ]
  %niter539 = phi i64 [ %niter539.next.1, %.lr.ph411 ], [ 0, %.lr.ph411.preheader ]
  %174 = load ptr, ptr %112, align 8, !tbaa !23
  %175 = getelementptr inbounds ptr, ptr %174, i64 %.3351413
  %176 = load ptr, ptr %175, align 8, !tbaa !34
  %177 = getelementptr inbounds double, ptr %176, i64 %.2346409
  %178 = load double, ptr %177, align 8, !tbaa !32
  %179 = fmul double %173, %178
  store double %179, ptr %177, align 8, !tbaa !32
  %180 = or disjoint i64 %.2346409, 1
  %181 = load ptr, ptr %112, align 8, !tbaa !23
  %182 = getelementptr inbounds ptr, ptr %181, i64 %.3351413
  %183 = load ptr, ptr %182, align 8, !tbaa !34
  %184 = getelementptr inbounds double, ptr %183, i64 %180
  %185 = load double, ptr %184, align 8, !tbaa !32
  %186 = fmul double %173, %185
  store double %186, ptr %184, align 8, !tbaa !32
  %187 = add nuw i64 %.2346409, 2
  %niter539.next.1 = add i64 %niter539, 2
  %niter539.ncmp.1 = icmp eq i64 %niter539.next.1, %unroll_iter538
  br i1 %niter539.ncmp.1, label %.loopexit383.loopexit.unr-lcssa, label %.lr.ph411, !llvm.loop !39

.loopexit383.loopexit.unr-lcssa:                  ; preds = %.lr.ph411, %.lr.ph411.preheader
  %.2346409.unr = phi i64 [ 0, %.lr.ph411.preheader ], [ %187, %.lr.ph411 ]
  br i1 %lcmp.mod537.not.not, label %.lr.ph411.epil, label %.loopexit383

.lr.ph411.epil:                                   ; preds = %.loopexit383.loopexit.unr-lcssa
  %188 = load ptr, ptr %112, align 8, !tbaa !23
  %189 = getelementptr inbounds ptr, ptr %188, i64 %.3351413
  %190 = load ptr, ptr %189, align 8, !tbaa !34
  %191 = getelementptr inbounds double, ptr %190, i64 %.2346409.unr
  %192 = load double, ptr %191, align 8, !tbaa !32
  %193 = fmul double %173, %192
  store double %193, ptr %191, align 8, !tbaa !32
  br label %.loopexit383

.loopexit383:                                     ; preds = %.lr.ph411.epil, %.loopexit383.loopexit.unr-lcssa, %171, %._crit_edge406
  %194 = add nuw nsw i64 %.3351413, 1
  %195 = load i64, ptr %3, align 8, !tbaa !24
  %.not.not362 = icmp slt i64 %194, %195
  br i1 %.not.not362, label %.preheader384, label %.preheader382, !llvm.loop !40

.preheader379:                                    ; preds = %..loopexit381_crit_edge.us, %.preheader382
  %.not.not364427 = icmp sgt i64 %.lcssa.fr, 0
  br i1 %.not.not364427, label %.preheader378.lr.ph, label %._crit_edge429

.preheader378.lr.ph:                              ; preds = %.preheader379
  %.not371423 = icmp slt i64 %8, 0
  %196 = getelementptr inbounds i8, ptr %0, i64 3888
  %197 = getelementptr inbounds i8, ptr %0, i64 440
  %198 = getelementptr inbounds i8, ptr %0, i64 360
  %199 = getelementptr inbounds i8, ptr %0, i64 520
  br i1 %.not371423, label %._crit_edge429, label %.preheader378

.preheader378:                                    ; preds = %.preheader378.lr.ph, %._crit_edge426
  %.5353428 = phi i64 [ %229, %._crit_edge426 ], [ 0, %.preheader378.lr.ph ]
  br label %200

200:                                              ; preds = %.preheader378, %200
  %.4424 = phi i64 [ 0, %.preheader378 ], [ %228, %200 ]
  %201 = load ptr, ptr %196, align 8, !tbaa !23
  %202 = getelementptr inbounds ptr, ptr %201, i64 %.5353428
  %203 = load ptr, ptr %202, align 8, !tbaa !34
  %204 = getelementptr inbounds double, ptr %203, i64 %.4424
  %205 = load double, ptr %204, align 8, !tbaa !32
  %206 = load ptr, ptr %197, align 8, !tbaa !23
  %207 = getelementptr inbounds ptr, ptr %206, i64 %.5353428
  %208 = load ptr, ptr %207, align 8, !tbaa !34
  %209 = getelementptr inbounds double, ptr %208, i64 %.4424
  store double %205, ptr %209, align 8, !tbaa !32
  %210 = load ptr, ptr %196, align 8, !tbaa !23
  %211 = getelementptr inbounds ptr, ptr %210, i64 %.5353428
  %212 = load ptr, ptr %211, align 8, !tbaa !34
  %213 = getelementptr inbounds double, ptr %212, i64 %.4424
  %214 = load double, ptr %213, align 8, !tbaa !32
  %215 = load ptr, ptr %198, align 8, !tbaa !23
  %216 = getelementptr inbounds ptr, ptr %215, i64 %.5353428
  %217 = load ptr, ptr %216, align 8, !tbaa !34
  %218 = getelementptr inbounds double, ptr %217, i64 %.4424
  store double %214, ptr %218, align 8, !tbaa !32
  %219 = load ptr, ptr %196, align 8, !tbaa !23
  %220 = getelementptr inbounds ptr, ptr %219, i64 %.5353428
  %221 = load ptr, ptr %220, align 8, !tbaa !34
  %222 = getelementptr inbounds double, ptr %221, i64 %.4424
  %223 = load double, ptr %222, align 8, !tbaa !32
  %224 = load ptr, ptr %199, align 8, !tbaa !23
  %225 = getelementptr inbounds ptr, ptr %224, i64 %.5353428
  %226 = load ptr, ptr %225, align 8, !tbaa !34
  %227 = getelementptr inbounds double, ptr %226, i64 %.4424
  store double %223, ptr %227, align 8, !tbaa !32
  %228 = add nuw i64 %.4424, 1
  %exitcond486.not = icmp eq i64 %.4424, %8
  br i1 %exitcond486.not, label %._crit_edge426, label %200, !llvm.loop !41

._crit_edge426:                                   ; preds = %200
  %229 = add nuw nsw i64 %.5353428, 1
  %exitcond487.not = icmp eq i64 %229, %.lcssa.fr
  br i1 %exitcond487.not, label %._crit_edge429, label %.preheader378, !llvm.loop !42

._crit_edge429:                                   ; preds = %._crit_edge426, %.lr.ph422, %.preheader378.lr.ph, %.preheader379
  %230 = load i64, ptr %27, align 8, !tbaa !22
  %231 = icmp eq i64 %230, 0
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %231, ptr noundef nonnull @.str.191, ptr noundef %1)
  %232 = load double, ptr @_ZN11alglib_implL29sactivesets_minnormseparationE, align 8, !tbaa !32
  %233 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %232, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %233, ptr noundef nonnull @.str.191, ptr noundef %1)
  %234 = getelementptr inbounds i8, ptr %0, i64 3896
  %235 = load i64, ptr %3, align 8, !tbaa !24
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %234, i64 noundef %235, ptr noundef %1)
  %236 = load i64, ptr %3, align 8
  %.not.not365430 = icmp sgt i64 %236, 0
  br i1 %.not.not365430, label %.lr.ph433, label %.preheader377

.lr.ph433:                                        ; preds = %._crit_edge429
  %237 = getelementptr inbounds i8, ptr %0, i64 3952
  %xtraiter541 = and i64 %236, 3
  %238 = icmp ult i64 %236, 4
  br i1 %238, label %.preheader377.loopexit.unr-lcssa, label %.lr.ph433.new

.lr.ph433.new:                                    ; preds = %.lr.ph433
  %unroll_iter543 = and i64 %236, 9223372036854775804
  br label %264

.preheader377.loopexit.unr-lcssa:                 ; preds = %264, %.lr.ph433
  %.6354431.unr = phi i64 [ 0, %.lr.ph433 ], [ %276, %264 ]
  %lcmp.mod542.not = icmp eq i64 %xtraiter541, 0
  br i1 %lcmp.mod542.not, label %.preheader377.loopexit, label %.epil.preheader540

.epil.preheader540:                               ; preds = %.preheader377.loopexit.unr-lcssa, %.epil.preheader540
  %.6354431.epil = phi i64 [ %241, %.epil.preheader540 ], [ %.6354431.unr, %.preheader377.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader540 ], [ 0, %.preheader377.loopexit.unr-lcssa ]
  %239 = load ptr, ptr %237, align 8, !tbaa !23
  %240 = getelementptr inbounds double, ptr %239, i64 %.6354431.epil
  store double 1.000000e+00, ptr %240, align 8, !tbaa !32
  %241 = add nuw nsw i64 %.6354431.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter541
  br i1 %epil.iter.cmp.not, label %.preheader377.loopexit, label %.epil.preheader540, !llvm.loop !43

.preheader377.loopexit:                           ; preds = %.epil.preheader540, %.preheader377.loopexit.unr-lcssa
  %.pre494 = load i64, ptr %3, align 8
  br label %.preheader377

.preheader377:                                    ; preds = %.preheader377.loopexit, %._crit_edge429
  %242 = phi i64 [ %.pre494, %.preheader377.loopexit ], [ %236, %._crit_edge429 ]
  %243 = load i64, ptr %26, align 8, !tbaa !30
  %244 = load i64, ptr %27, align 8, !tbaa !22
  %245 = add nsw i64 %244, %243
  %246 = icmp sge i64 %245, %8
  %247 = icmp eq i64 %242, 0
  %or.cond3470 = select i1 %246, i1 true, i1 %247
  br i1 %or.cond3470, label %.loopexit, label %.preheader376.lr.ph

.preheader376.lr.ph:                              ; preds = %.preheader377
  %248 = getelementptr inbounds i8, ptr %0, i64 3952
  %249 = getelementptr inbounds i8, ptr %0, i64 440
  %250 = getelementptr inbounds i8, ptr %0, i64 4016
  %251 = getelementptr inbounds i8, ptr %0, i64 360
  %252 = getelementptr inbounds i8, ptr %0, i64 144
  %253 = getelementptr inbounds i8, ptr %0, i64 520
  %254 = getelementptr inbounds i8, ptr %0, i64 208
  %255 = getelementptr inbounds i8, ptr %0, i64 4080
  %256 = getelementptr inbounds i8, ptr %0, i64 4144
  %.not466 = icmp slt i64 %8, 0
  %257 = getelementptr inbounds i8, ptr %0, i64 4208
  %258 = getelementptr inbounds i8, ptr %0, i64 4272
  %259 = getelementptr inbounds i8, ptr %0, i64 4336
  %260 = add i64 %8, -1
  %xtraiter546 = and i64 %8, 3
  %261 = icmp ult i64 %260, 3
  %unroll_iter550 = and i64 %8, -4
  %lcmp.mod548.not = icmp eq i64 %xtraiter546, 0
  %xtraiter553 = and i64 %8, 3
  %262 = icmp ult i64 %260, 3
  %unroll_iter557 = and i64 %8, -4
  %lcmp.mod555.not = icmp eq i64 %xtraiter553, 0
  %xtraiter560 = and i64 %8, 3
  %263 = icmp ult i64 %260, 3
  %unroll_iter564 = and i64 %8, -4
  %lcmp.mod562.not = icmp eq i64 %xtraiter560, 0
  br label %.preheader376

264:                                              ; preds = %264, %.lr.ph433.new
  %.6354431 = phi i64 [ 0, %.lr.ph433.new ], [ %276, %264 ]
  %niter544 = phi i64 [ 0, %.lr.ph433.new ], [ %niter544.next.3, %264 ]
  %265 = load ptr, ptr %237, align 8, !tbaa !23
  %266 = getelementptr inbounds double, ptr %265, i64 %.6354431
  store double 1.000000e+00, ptr %266, align 8, !tbaa !32
  %267 = or disjoint i64 %.6354431, 1
  %268 = load ptr, ptr %237, align 8, !tbaa !23
  %269 = getelementptr inbounds double, ptr %268, i64 %267
  store double 1.000000e+00, ptr %269, align 8, !tbaa !32
  %270 = or disjoint i64 %.6354431, 2
  %271 = load ptr, ptr %237, align 8, !tbaa !23
  %272 = getelementptr inbounds double, ptr %271, i64 %270
  store double 1.000000e+00, ptr %272, align 8, !tbaa !32
  %273 = or disjoint i64 %.6354431, 3
  %274 = load ptr, ptr %237, align 8, !tbaa !23
  %275 = getelementptr inbounds double, ptr %274, i64 %273
  store double 1.000000e+00, ptr %275, align 8, !tbaa !32
  %276 = add nuw nsw i64 %.6354431, 4
  %niter544.next.3 = add i64 %niter544, 4
  %niter544.ncmp.3 = icmp eq i64 %niter544.next.3, %unroll_iter543
  br i1 %niter544.ncmp.3, label %.preheader377.loopexit.unr-lcssa, label %264, !llvm.loop !45

.preheader376:                                    ; preds = %.preheader376.lr.ph, %._crit_edge469
  %277 = phi i64 [ %242, %.preheader376.lr.ph ], [ %513, %._crit_edge469 ]
  %278 = phi i64 [ %244, %.preheader376.lr.ph ], [ %510, %._crit_edge469 ]
  %.not.not366440 = icmp sgt i64 %277, 0
  br i1 %.not.not366440, label %.lr.ph444, label %._crit_edge445.thread

._crit_edge445.thread:                            ; preds = %.preheader376
  %279 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef 0.000000e+00, double noundef 0x3D95FD7FE1796496)
  br label %.loopexit

.lr.ph444:                                        ; preds = %.preheader376, %331
  %.0443 = phi i64 [ %.1, %331 ], [ -1, %.preheader376 ]
  %.0338442 = phi double [ %.1339, %331 ], [ 0.000000e+00, %.preheader376 ]
  %.7355441 = phi i64 [ %332, %331 ], [ %278, %.preheader376 ]
  %280 = load ptr, ptr %248, align 8, !tbaa !23
  %281 = getelementptr inbounds double, ptr %280, i64 %.7355441
  %282 = load double, ptr %281, align 8, !tbaa !32
  %283 = load double, ptr @_ZN11alglib_implL29sactivesets_minnormseparationE, align 8, !tbaa !32
  %284 = fadd double %283, 1.000000e+00
  %285 = fmul double %.0338442, %284
  %286 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %282, double noundef %285)
  br i1 %286, label %331, label %.preheader

.preheader:                                       ; preds = %.lr.ph444
  br i1 %.not.not359390506, label %.lr.ph437, label %._crit_edge438

.lr.ph437:                                        ; preds = %.preheader
  %287 = load ptr, ptr %249, align 8, !tbaa !23
  %288 = getelementptr inbounds ptr, ptr %287, i64 %.7355441
  %289 = load ptr, ptr %288, align 8, !tbaa !34
  %290 = load ptr, ptr %250, align 8, !tbaa !23
  br i1 %261, label %._crit_edge438.loopexit.unr-lcssa, label %.lr.ph437.new

.lr.ph437.new:                                    ; preds = %.lr.ph437, %.lr.ph437.new
  %.1341436 = phi double [ %317, %.lr.ph437.new ], [ 0.000000e+00, %.lr.ph437 ]
  %.5435 = phi i64 [ %318, %.lr.ph437.new ], [ 0, %.lr.ph437 ]
  %niter551 = phi i64 [ %niter551.next.3, %.lr.ph437.new ], [ 0, %.lr.ph437 ]
  %291 = getelementptr inbounds double, ptr %289, i64 %.5435
  %292 = load double, ptr %291, align 8, !tbaa !32
  %293 = fmul double %292, %292
  %294 = getelementptr inbounds double, ptr %290, i64 %.5435
  %295 = load double, ptr %294, align 8, !tbaa !32
  %296 = call double @llvm.fmuladd.f64(double %293, double %295, double %.1341436)
  %297 = or disjoint i64 %.5435, 1
  %298 = getelementptr inbounds double, ptr %289, i64 %297
  %299 = load double, ptr %298, align 8, !tbaa !32
  %300 = fmul double %299, %299
  %301 = getelementptr inbounds double, ptr %290, i64 %297
  %302 = load double, ptr %301, align 8, !tbaa !32
  %303 = call double @llvm.fmuladd.f64(double %300, double %302, double %296)
  %304 = or disjoint i64 %.5435, 2
  %305 = getelementptr inbounds double, ptr %289, i64 %304
  %306 = load double, ptr %305, align 8, !tbaa !32
  %307 = fmul double %306, %306
  %308 = getelementptr inbounds double, ptr %290, i64 %304
  %309 = load double, ptr %308, align 8, !tbaa !32
  %310 = call double @llvm.fmuladd.f64(double %307, double %309, double %303)
  %311 = or disjoint i64 %.5435, 3
  %312 = getelementptr inbounds double, ptr %289, i64 %311
  %313 = load double, ptr %312, align 8, !tbaa !32
  %314 = fmul double %313, %313
  %315 = getelementptr inbounds double, ptr %290, i64 %311
  %316 = load double, ptr %315, align 8, !tbaa !32
  %317 = call double @llvm.fmuladd.f64(double %314, double %316, double %310)
  %318 = add nuw nsw i64 %.5435, 4
  %niter551.next.3 = add i64 %niter551, 4
  %niter551.ncmp.3 = icmp eq i64 %niter551.next.3, %unroll_iter550
  br i1 %niter551.ncmp.3, label %._crit_edge438.loopexit.unr-lcssa, label %.lr.ph437.new, !llvm.loop !46

._crit_edge438.loopexit.unr-lcssa:                ; preds = %.lr.ph437.new, %.lr.ph437
  %.lcssa523.ph = phi double [ poison, %.lr.ph437 ], [ %317, %.lr.ph437.new ]
  %.1341436.unr = phi double [ 0.000000e+00, %.lr.ph437 ], [ %317, %.lr.ph437.new ]
  %.5435.unr = phi i64 [ 0, %.lr.ph437 ], [ %318, %.lr.ph437.new ]
  br i1 %lcmp.mod548.not, label %._crit_edge438, label %.epil.preheader545

.epil.preheader545:                               ; preds = %._crit_edge438.loopexit.unr-lcssa, %.epil.preheader545
  %.1341436.epil = phi double [ %324, %.epil.preheader545 ], [ %.1341436.unr, %._crit_edge438.loopexit.unr-lcssa ]
  %.5435.epil = phi i64 [ %325, %.epil.preheader545 ], [ %.5435.unr, %._crit_edge438.loopexit.unr-lcssa ]
  %epil.iter547 = phi i64 [ %epil.iter547.next, %.epil.preheader545 ], [ 0, %._crit_edge438.loopexit.unr-lcssa ]
  %319 = getelementptr inbounds double, ptr %289, i64 %.5435.epil
  %320 = load double, ptr %319, align 8, !tbaa !32
  %321 = fmul double %320, %320
  %322 = getelementptr inbounds double, ptr %290, i64 %.5435.epil
  %323 = load double, ptr %322, align 8, !tbaa !32
  %324 = call double @llvm.fmuladd.f64(double %321, double %323, double %.1341436.epil)
  %325 = add nuw nsw i64 %.5435.epil, 1
  %epil.iter547.next = add i64 %epil.iter547, 1
  %epil.iter547.cmp.not = icmp eq i64 %epil.iter547.next, %xtraiter546
  br i1 %epil.iter547.cmp.not, label %._crit_edge438, label %.epil.preheader545, !llvm.loop !47

._crit_edge438:                                   ; preds = %._crit_edge438.loopexit.unr-lcssa, %.epil.preheader545, %.preheader
  %.1341.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %.lcssa523.ph, %._crit_edge438.loopexit.unr-lcssa ], [ %324, %.epil.preheader545 ]
  %326 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.1341.lcssa, ptr noundef %1)
  %327 = load ptr, ptr %248, align 8, !tbaa !23
  %328 = getelementptr inbounds double, ptr %327, i64 %.7355441
  store double %326, ptr %328, align 8, !tbaa !32
  %329 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %326, double noundef %.0338442)
  br i1 %329, label %330, label %331

330:                                              ; preds = %._crit_edge438
  br label %331

331:                                              ; preds = %._crit_edge438, %330, %.lr.ph444
  %.1339 = phi double [ %.0338442, %.lr.ph444 ], [ %326, %330 ], [ %.0338442, %._crit_edge438 ]
  %.1 = phi i64 [ %.0443, %.lr.ph444 ], [ %.7355441, %330 ], [ %.0443, %._crit_edge438 ]
  %332 = add nsw i64 %.7355441, 1
  %333 = load i64, ptr %27, align 8, !tbaa !22
  %334 = load i64, ptr %3, align 8, !tbaa !24
  %335 = add nsw i64 %334, %333
  %.not.not366 = icmp slt i64 %332, %335
  br i1 %.not.not366, label %.lr.ph444, label %._crit_edge445, !llvm.loop !48

._crit_edge445:                                   ; preds = %331
  %336 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %.1339, double noundef 0x3D95FD7FE1796496)
  %337 = icmp slt i64 %.1, 0
  %or.cond = select i1 %336, i1 true, i1 %337
  br i1 %or.cond, label %.loopexit, label %338

338:                                              ; preds = %._crit_edge445
  %339 = load i64, ptr %27, align 8, !tbaa !22
  call void @_ZN11alglib_impl8swaprowsEPNS_9ae_matrixElllPNS_8ae_stateE(ptr noundef nonnull %22, i64 noundef %339, i64 noundef %.1, i64 noundef %17, ptr noundef %1)
  %340 = load i64, ptr %27, align 8, !tbaa !22
  call void @_ZN11alglib_impl8swaprowsEPNS_9ae_matrixElllPNS_8ae_stateE(ptr noundef nonnull %24, i64 noundef %340, i64 noundef %.1, i64 noundef %17, ptr noundef %1)
  %341 = load i64, ptr %27, align 8, !tbaa !22
  call void @_ZN11alglib_impl8swaprowsEPNS_9ae_matrixElllPNS_8ae_stateE(ptr noundef nonnull %23, i64 noundef %341, i64 noundef %.1, i64 noundef %17, ptr noundef %1)
  %342 = load i64, ptr %27, align 8, !tbaa !22
  call void @_ZN11alglib_impl12swapelementsEPNS_9ae_vectorEllPNS_8ae_stateE(ptr noundef nonnull %234, i64 noundef %342, i64 noundef %.1, ptr noundef %1)
  %343 = fdiv double 1.000000e+00, %.1339
  %344 = load ptr, ptr %249, align 8, !tbaa !23
  %345 = load i64, ptr %27, align 8, !tbaa !22
  %346 = getelementptr inbounds ptr, ptr %344, i64 %345
  %347 = load ptr, ptr %346, align 8, !tbaa !34
  %348 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %8)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %347, i64 noundef 1, i64 noundef %348, double noundef %343)
  br i1 %.not.not359390506, label %.lr.ph452, label %._crit_edge460.critedge

.lr.ph452:                                        ; preds = %338
  %349 = load ptr, ptr %251, align 8, !tbaa !23
  %350 = load i64, ptr %27, align 8, !tbaa !22
  %351 = getelementptr inbounds ptr, ptr %349, i64 %350
  %352 = load ptr, ptr %351, align 8, !tbaa !34
  %353 = load ptr, ptr %252, align 8, !tbaa !23
  br i1 %262, label %._crit_edge453.unr-lcssa, label %.lr.ph452.new

.lr.ph452.new:                                    ; preds = %.lr.ph452, %.lr.ph452.new
  %.2450 = phi double [ %380, %.lr.ph452.new ], [ 0.000000e+00, %.lr.ph452 ]
  %.6449 = phi i64 [ %381, %.lr.ph452.new ], [ 0, %.lr.ph452 ]
  %niter558 = phi i64 [ %niter558.next.3, %.lr.ph452.new ], [ 0, %.lr.ph452 ]
  %354 = getelementptr inbounds double, ptr %352, i64 %.6449
  %355 = load double, ptr %354, align 8, !tbaa !32
  %356 = getelementptr inbounds double, ptr %353, i64 %.6449
  %357 = load double, ptr %356, align 8, !tbaa !32
  %358 = fmul double %355, %357
  %359 = call double @llvm.fmuladd.f64(double %358, double %358, double %.2450)
  %360 = or disjoint i64 %.6449, 1
  %361 = getelementptr inbounds double, ptr %352, i64 %360
  %362 = load double, ptr %361, align 8, !tbaa !32
  %363 = getelementptr inbounds double, ptr %353, i64 %360
  %364 = load double, ptr %363, align 8, !tbaa !32
  %365 = fmul double %362, %364
  %366 = call double @llvm.fmuladd.f64(double %365, double %365, double %359)
  %367 = or disjoint i64 %.6449, 2
  %368 = getelementptr inbounds double, ptr %352, i64 %367
  %369 = load double, ptr %368, align 8, !tbaa !32
  %370 = getelementptr inbounds double, ptr %353, i64 %367
  %371 = load double, ptr %370, align 8, !tbaa !32
  %372 = fmul double %369, %371
  %373 = call double @llvm.fmuladd.f64(double %372, double %372, double %366)
  %374 = or disjoint i64 %.6449, 3
  %375 = getelementptr inbounds double, ptr %352, i64 %374
  %376 = load double, ptr %375, align 8, !tbaa !32
  %377 = getelementptr inbounds double, ptr %353, i64 %374
  %378 = load double, ptr %377, align 8, !tbaa !32
  %379 = fmul double %376, %378
  %380 = call double @llvm.fmuladd.f64(double %379, double %379, double %373)
  %381 = add nuw nsw i64 %.6449, 4
  %niter558.next.3 = add i64 %niter558, 4
  %niter558.ncmp.3 = icmp eq i64 %niter558.next.3, %unroll_iter557
  br i1 %niter558.ncmp.3, label %._crit_edge453.unr-lcssa, label %.lr.ph452.new, !llvm.loop !49

._crit_edge453.unr-lcssa:                         ; preds = %.lr.ph452.new, %.lr.ph452
  %.lcssa524.ph = phi double [ poison, %.lr.ph452 ], [ %380, %.lr.ph452.new ]
  %.2450.unr = phi double [ 0.000000e+00, %.lr.ph452 ], [ %380, %.lr.ph452.new ]
  %.6449.unr = phi i64 [ 0, %.lr.ph452 ], [ %381, %.lr.ph452.new ]
  br i1 %lcmp.mod555.not, label %._crit_edge453, label %.epil.preheader552

.epil.preheader552:                               ; preds = %._crit_edge453.unr-lcssa, %.epil.preheader552
  %.2450.epil = phi double [ %387, %.epil.preheader552 ], [ %.2450.unr, %._crit_edge453.unr-lcssa ]
  %.6449.epil = phi i64 [ %388, %.epil.preheader552 ], [ %.6449.unr, %._crit_edge453.unr-lcssa ]
  %epil.iter554 = phi i64 [ %epil.iter554.next, %.epil.preheader552 ], [ 0, %._crit_edge453.unr-lcssa ]
  %382 = getelementptr inbounds double, ptr %352, i64 %.6449.epil
  %383 = load double, ptr %382, align 8, !tbaa !32
  %384 = getelementptr inbounds double, ptr %353, i64 %.6449.epil
  %385 = load double, ptr %384, align 8, !tbaa !32
  %386 = fmul double %383, %385
  %387 = call double @llvm.fmuladd.f64(double %386, double %386, double %.2450.epil)
  %388 = add nuw nsw i64 %.6449.epil, 1
  %epil.iter554.next = add i64 %epil.iter554, 1
  %epil.iter554.cmp.not = icmp eq i64 %epil.iter554.next, %xtraiter553
  br i1 %epil.iter554.cmp.not, label %._crit_edge453, label %.epil.preheader552, !llvm.loop !50

._crit_edge453:                                   ; preds = %.epil.preheader552, %._crit_edge453.unr-lcssa
  %.lcssa524 = phi double [ %.lcssa524.ph, %._crit_edge453.unr-lcssa ], [ %387, %.epil.preheader552 ]
  %389 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %.lcssa524, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %389, ptr noundef nonnull @.str.192, ptr noundef %1)
  %390 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.lcssa524, ptr noundef %1)
  %391 = fdiv double 1.000000e+00, %390
  %392 = load ptr, ptr %251, align 8, !tbaa !23
  %393 = load i64, ptr %27, align 8, !tbaa !22
  %394 = getelementptr inbounds ptr, ptr %392, i64 %393
  %395 = load ptr, ptr %394, align 8, !tbaa !34
  %396 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %8)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %395, i64 noundef 1, i64 noundef %396, double noundef %391)
  br i1 %.not.not359390506, label %.lr.ph459, label %._crit_edge460

.lr.ph459:                                        ; preds = %._crit_edge453
  %397 = load ptr, ptr %253, align 8, !tbaa !23
  %398 = load i64, ptr %27, align 8, !tbaa !22
  %399 = getelementptr inbounds ptr, ptr %397, i64 %398
  %400 = load ptr, ptr %399, align 8, !tbaa !34
  br i1 %263, label %._crit_edge460.loopexit.unr-lcssa, label %.lr.ph459.new

.lr.ph459.new:                                    ; preds = %.lr.ph459, %.lr.ph459.new
  %.3457 = phi double [ %415, %.lr.ph459.new ], [ 0.000000e+00, %.lr.ph459 ]
  %.7456 = phi i64 [ %416, %.lr.ph459.new ], [ 0, %.lr.ph459 ]
  %niter565 = phi i64 [ %niter565.next.3, %.lr.ph459.new ], [ 0, %.lr.ph459 ]
  %401 = getelementptr inbounds double, ptr %400, i64 %.7456
  %402 = load double, ptr %401, align 8, !tbaa !32
  %403 = call double @llvm.fmuladd.f64(double %402, double %402, double %.3457)
  %404 = or disjoint i64 %.7456, 1
  %405 = getelementptr inbounds double, ptr %400, i64 %404
  %406 = load double, ptr %405, align 8, !tbaa !32
  %407 = call double @llvm.fmuladd.f64(double %406, double %406, double %403)
  %408 = or disjoint i64 %.7456, 2
  %409 = getelementptr inbounds double, ptr %400, i64 %408
  %410 = load double, ptr %409, align 8, !tbaa !32
  %411 = call double @llvm.fmuladd.f64(double %410, double %410, double %407)
  %412 = or disjoint i64 %.7456, 3
  %413 = getelementptr inbounds double, ptr %400, i64 %412
  %414 = load double, ptr %413, align 8, !tbaa !32
  %415 = call double @llvm.fmuladd.f64(double %414, double %414, double %411)
  %416 = add nuw nsw i64 %.7456, 4
  %niter565.next.3 = add i64 %niter565, 4
  %niter565.ncmp.3 = icmp eq i64 %niter565.next.3, %unroll_iter564
  br i1 %niter565.ncmp.3, label %._crit_edge460.loopexit.unr-lcssa, label %.lr.ph459.new, !llvm.loop !51

._crit_edge460.critedge:                          ; preds = %338
  %417 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef 0.000000e+00, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %417, ptr noundef nonnull @.str.192, ptr noundef %1)
  %418 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef 0.000000e+00, ptr noundef %1)
  %419 = fdiv double 1.000000e+00, %418
  %420 = load ptr, ptr %251, align 8, !tbaa !23
  %421 = load i64, ptr %27, align 8, !tbaa !22
  %422 = getelementptr inbounds ptr, ptr %420, i64 %421
  %423 = load ptr, ptr %422, align 8, !tbaa !34
  %424 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %8)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %423, i64 noundef 1, i64 noundef %424, double noundef %419)
  br label %._crit_edge460

._crit_edge460.loopexit.unr-lcssa:                ; preds = %.lr.ph459.new, %.lr.ph459
  %.lcssa525.ph = phi double [ poison, %.lr.ph459 ], [ %415, %.lr.ph459.new ]
  %.3457.unr = phi double [ 0.000000e+00, %.lr.ph459 ], [ %415, %.lr.ph459.new ]
  %.7456.unr = phi i64 [ 0, %.lr.ph459 ], [ %416, %.lr.ph459.new ]
  br i1 %lcmp.mod562.not, label %._crit_edge460, label %.epil.preheader559

.epil.preheader559:                               ; preds = %._crit_edge460.loopexit.unr-lcssa, %.epil.preheader559
  %.3457.epil = phi double [ %427, %.epil.preheader559 ], [ %.3457.unr, %._crit_edge460.loopexit.unr-lcssa ]
  %.7456.epil = phi i64 [ %428, %.epil.preheader559 ], [ %.7456.unr, %._crit_edge460.loopexit.unr-lcssa ]
  %epil.iter561 = phi i64 [ %epil.iter561.next, %.epil.preheader559 ], [ 0, %._crit_edge460.loopexit.unr-lcssa ]
  %425 = getelementptr inbounds double, ptr %400, i64 %.7456.epil
  %426 = load double, ptr %425, align 8, !tbaa !32
  %427 = call double @llvm.fmuladd.f64(double %426, double %426, double %.3457.epil)
  %428 = add nuw nsw i64 %.7456.epil, 1
  %epil.iter561.next = add i64 %epil.iter561, 1
  %epil.iter561.cmp.not = icmp eq i64 %epil.iter561.next, %xtraiter560
  br i1 %epil.iter561.cmp.not, label %._crit_edge460, label %.epil.preheader559, !llvm.loop !52

._crit_edge460:                                   ; preds = %._crit_edge460.loopexit.unr-lcssa, %.epil.preheader559, %._crit_edge460.critedge, %._crit_edge453
  %.3.lcssa = phi double [ 0.000000e+00, %._crit_edge453 ], [ 0.000000e+00, %._crit_edge460.critedge ], [ %.lcssa525.ph, %._crit_edge460.loopexit.unr-lcssa ], [ %427, %.epil.preheader559 ]
  %429 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %.3.lcssa, double noundef 0.000000e+00)
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %429, ptr noundef nonnull @.str.193, ptr noundef %1)
  %430 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.3.lcssa, ptr noundef %1)
  %431 = fdiv double 1.000000e+00, %430
  %432 = load ptr, ptr %253, align 8, !tbaa !23
  %433 = load i64, ptr %27, align 8, !tbaa !22
  %434 = getelementptr inbounds ptr, ptr %432, i64 %433
  %435 = load ptr, ptr %434, align 8, !tbaa !34
  %436 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %8)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %435, i64 noundef 1, i64 noundef %436, double noundef %431)
  %437 = load i64, ptr %3, align 8, !tbaa !24
  %438 = add nsw i64 %437, -1
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %438, ptr noundef %1)
  br i1 %.not.not359390506, label %.lr.ph465, label %.preheader375

.preheader375:                                    ; preds = %.lr.ph465, %._crit_edge460
  %.pre495 = load i64, ptr %27, align 8, !tbaa !22
  br i1 %.not466, label %._crit_edge469, label %.lr.ph468

.lr.ph465:                                        ; preds = %._crit_edge460, %.lr.ph465
  %.8463 = phi i64 [ %463, %.lr.ph465 ], [ 0, %._crit_edge460 ]
  %439 = load ptr, ptr %249, align 8, !tbaa !23
  %440 = load i64, ptr %27, align 8, !tbaa !22
  %441 = getelementptr inbounds ptr, ptr %439, i64 %440
  %442 = load ptr, ptr %441, align 8, !tbaa !34
  %443 = getelementptr inbounds double, ptr %442, i64 %.8463
  %444 = load double, ptr %443, align 8, !tbaa !32
  %445 = load ptr, ptr %254, align 8, !tbaa !23
  %446 = getelementptr inbounds double, ptr %445, i64 %.8463
  %447 = load double, ptr %446, align 8, !tbaa !32
  %448 = fdiv double %444, %447
  %449 = load ptr, ptr %255, align 8, !tbaa !23
  %450 = getelementptr inbounds double, ptr %449, i64 %.8463
  store double %448, ptr %450, align 8, !tbaa !32
  %451 = load ptr, ptr %251, align 8, !tbaa !23
  %452 = getelementptr inbounds ptr, ptr %451, i64 %440
  %453 = load ptr, ptr %452, align 8, !tbaa !34
  %454 = getelementptr inbounds double, ptr %453, i64 %.8463
  %455 = load double, ptr %454, align 8, !tbaa !32
  %456 = load ptr, ptr %252, align 8, !tbaa !23
  %457 = getelementptr inbounds double, ptr %456, i64 %.8463
  %458 = load double, ptr %457, align 8, !tbaa !32
  %459 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %458, ptr noundef %1)
  %460 = fmul double %455, %459
  %461 = load ptr, ptr %256, align 8, !tbaa !23
  %462 = getelementptr inbounds double, ptr %461, i64 %.8463
  store double %460, ptr %462, align 8, !tbaa !32
  %463 = add nuw nsw i64 %.8463, 1
  %exitcond492.not = icmp eq i64 %463, %8
  br i1 %exitcond492.not, label %.preheader375, label %.lr.ph465, !llvm.loop !53

.lr.ph468:                                        ; preds = %.preheader375, %.lr.ph468
  %.9467 = phi i64 [ %485, %.lr.ph468 ], [ 0, %.preheader375 ]
  %464 = load ptr, ptr %249, align 8, !tbaa !23
  %465 = getelementptr inbounds ptr, ptr %464, i64 %.pre495
  %466 = load ptr, ptr %465, align 8, !tbaa !34
  %467 = getelementptr inbounds double, ptr %466, i64 %.9467
  %468 = load double, ptr %467, align 8, !tbaa !32
  %469 = load ptr, ptr %257, align 8, !tbaa !23
  %470 = getelementptr inbounds double, ptr %469, i64 %.9467
  store double %468, ptr %470, align 8, !tbaa !32
  %471 = load ptr, ptr %251, align 8, !tbaa !23
  %472 = getelementptr inbounds ptr, ptr %471, i64 %.pre495
  %473 = load ptr, ptr %472, align 8, !tbaa !34
  %474 = getelementptr inbounds double, ptr %473, i64 %.9467
  %475 = load double, ptr %474, align 8, !tbaa !32
  %476 = load ptr, ptr %258, align 8, !tbaa !23
  %477 = getelementptr inbounds double, ptr %476, i64 %.9467
  store double %475, ptr %477, align 8, !tbaa !32
  %478 = load ptr, ptr %253, align 8, !tbaa !23
  %479 = getelementptr inbounds ptr, ptr %478, i64 %.pre495
  %480 = load ptr, ptr %479, align 8, !tbaa !34
  %481 = getelementptr inbounds double, ptr %480, i64 %.9467
  %482 = load double, ptr %481, align 8, !tbaa !32
  %483 = load ptr, ptr %259, align 8, !tbaa !23
  %484 = getelementptr inbounds double, ptr %483, i64 %.9467
  store double %482, ptr %484, align 8, !tbaa !32
  %485 = add nuw i64 %.9467, 1
  %exitcond493.not = icmp eq i64 %.9467, %8
  br i1 %exitcond493.not, label %._crit_edge469, label %.lr.ph468, !llvm.loop !54

._crit_edge469:                                   ; preds = %.lr.ph468, %.preheader375
  %486 = load i64, ptr %3, align 8, !tbaa !24
  %487 = add nsw i64 %486, -1
  %488 = add nsw i64 %.pre495, 1
  call void @_ZN11alglib_impl11rmatrixgemvElldPNS_9ae_matrixElllPNS_9ae_vectorEldS3_lPNS_8ae_stateE(i64 noundef %487, i64 noundef %8, double noundef 1.000000e+00, ptr noundef nonnull %22, i64 noundef %488, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %14, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %13, i64 noundef 0, ptr noundef %1)
  %489 = load i64, ptr %3, align 8, !tbaa !24
  %490 = add nsw i64 %489, -1
  %491 = load i64, ptr %27, align 8, !tbaa !22
  %492 = add nsw i64 %491, 1
  call void @_ZN11alglib_impl10rmatrixgerEllPNS_9ae_matrixElldPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %490, i64 noundef %17, ptr noundef nonnull %22, i64 noundef %492, i64 noundef 0, double noundef -1.000000e+00, ptr noundef nonnull %13, i64 noundef 0, ptr noundef nonnull %16, i64 noundef 0, ptr noundef %1)
  %493 = load i64, ptr %3, align 8, !tbaa !24
  %494 = add nsw i64 %493, -1
  %495 = load i64, ptr %27, align 8, !tbaa !22
  %496 = add nsw i64 %495, 1
  call void @_ZN11alglib_impl11rmatrixgemvElldPNS_9ae_matrixElllPNS_9ae_vectorEldS3_lPNS_8ae_stateE(i64 noundef %494, i64 noundef %8, double noundef 1.000000e+00, ptr noundef nonnull %24, i64 noundef %496, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %15, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %13, i64 noundef 0, ptr noundef %1)
  %497 = load i64, ptr %3, align 8, !tbaa !24
  %498 = add nsw i64 %497, -1
  %499 = load i64, ptr %27, align 8, !tbaa !22
  %500 = add nsw i64 %499, 1
  call void @_ZN11alglib_impl10rmatrixgerEllPNS_9ae_matrixElldPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %498, i64 noundef %17, ptr noundef nonnull %24, i64 noundef %500, i64 noundef 0, double noundef -1.000000e+00, ptr noundef nonnull %13, i64 noundef 0, ptr noundef nonnull %18, i64 noundef 0, ptr noundef %1)
  %501 = load i64, ptr %3, align 8, !tbaa !24
  %502 = add nsw i64 %501, -1
  %503 = load i64, ptr %27, align 8, !tbaa !22
  %504 = add nsw i64 %503, 1
  call void @_ZN11alglib_impl11rmatrixgemvElldPNS_9ae_matrixElllPNS_9ae_vectorEldS3_lPNS_8ae_stateE(i64 noundef %502, i64 noundef %8, double noundef 1.000000e+00, ptr noundef nonnull %23, i64 noundef %504, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %19, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %13, i64 noundef 0, ptr noundef %1)
  %505 = load i64, ptr %3, align 8, !tbaa !24
  %506 = add nsw i64 %505, -1
  %507 = load i64, ptr %27, align 8, !tbaa !22
  %508 = add nsw i64 %507, 1
  call void @_ZN11alglib_impl10rmatrixgerEllPNS_9ae_matrixElldPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %506, i64 noundef %17, ptr noundef nonnull %23, i64 noundef %508, i64 noundef 0, double noundef -1.000000e+00, ptr noundef nonnull %13, i64 noundef 0, ptr noundef nonnull %19, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %27, ptr noundef %1)
  call void @_ZN11alglib_impl3decEPlPNS_8ae_stateE(ptr noundef nonnull %3, ptr noundef %1)
  %509 = load i64, ptr %26, align 8, !tbaa !30
  %510 = load i64, ptr %27, align 8, !tbaa !22
  %511 = add nsw i64 %510, %509
  %512 = icmp sge i64 %511, %8
  %513 = load i64, ptr %3, align 8
  %514 = icmp eq i64 %513, 0
  %or.cond3 = select i1 %512, i1 true, i1 %514
  br i1 %or.cond3, label %.loopexit, label %.preheader376, !llvm.loop !55

.loopexit:                                        ; preds = %._crit_edge469, %._crit_edge445, %._crit_edge445.thread, %.preheader386.thread, %._crit_edge.thread, %.preheader377, %._crit_edge, %2
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #5
  ret void
}

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !11, i64 280}
!6 = !{!"_ZTSN11alglib_impl10sactivesetE", !7, i64 0, !7, i64 8, !10, i64 16, !11, i64 80, !10, i64 88, !10, i64 152, !10, i64 216, !11, i64 280, !14, i64 288, !14, i64 368, !14, i64 448, !7, i64 528, !10, i64 536, !7, i64 600, !7, i64 608, !11, i64 616, !11, i64 617, !10, i64 624, !10, i64 688, !10, i64 752, !10, i64 816, !14, i64 880, !7, i64 960, !7, i64 968, !10, i64 976, !10, i64 1040, !10, i64 1104, !10, i64 1168, !10, i64 1232, !10, i64 1296, !15, i64 1360, !10, i64 3000, !10, i64 3064, !10, i64 3128, !14, i64 3192, !10, i64 3272, !10, i64 3336, !10, i64 3400, !14, i64 3464, !14, i64 3544, !10, i64 3624, !10, i64 3688, !10, i64 3752, !14, i64 3816, !10, i64 3896, !10, i64 3960, !10, i64 4024, !10, i64 4088, !10, i64 4152, !10, i64 4216, !10, i64 4280}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSN11alglib_impl9ae_vectorE", !7, i64 0, !7, i64 8, !11, i64 16, !12, i64 24, !8, i64 56}
!11 = !{!"bool", !8, i64 0}
!12 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24}
!13 = !{!"any pointer", !8, i64 0}
!14 = !{!"_ZTSN11alglib_impl9ae_matrixE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !11, i64 32, !12, i64 40, !8, i64 72}
!15 = !{!"_ZTSN11alglib_impl11snnlssolverE", !7, i64 0, !7, i64 8, !7, i64 16, !14, i64 24, !10, i64 104, !10, i64 168, !16, i64 232, !7, i64 240, !10, i64 248, !10, i64 312, !14, i64 376, !14, i64 456, !14, i64 536, !10, i64 616, !10, i64 680, !10, i64 744, !10, i64 808, !10, i64 872, !10, i64 936, !10, i64 1000, !10, i64 1064, !10, i64 1128, !10, i64 1192, !10, i64 1256, !10, i64 1320, !10, i64 1384, !10, i64 1448, !10, i64 1512, !10, i64 1576}
!16 = !{!"double", !8, i64 0}
!17 = !{i8 0, i8 2}
!18 = !{}
!19 = !{!6, !7, i64 0}
!20 = !{!6, !7, i64 960}
!21 = !{!6, !7, i64 968}
!22 = !{!6, !7, i64 528}
!23 = !{!8, !8, i64 0}
!24 = !{!7, !7, i64 0}
!25 = distinct !{!25, !26, !27, !28}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!"llvm.loop.isvectorized", i32 1}
!28 = !{!"llvm.loop.unroll.runtime.disable"}
!29 = distinct !{!29, !26, !28, !27}
!30 = !{!6, !7, i64 600}
!31 = distinct !{!31, !26}
!32 = !{!16, !16, i64 0}
!33 = distinct !{!33, !26}
!34 = !{!13, !13, i64 0}
!35 = distinct !{!35, !26}
!36 = distinct !{!36, !26}
!37 = distinct !{!37, !26}
!38 = distinct !{!38, !26}
!39 = distinct !{!39, !26}
!40 = distinct !{!40, !26}
!41 = distinct !{!41, !26}
!42 = distinct !{!42, !26}
!43 = distinct !{!43, !44}
!44 = !{!"llvm.loop.unroll.disable"}
!45 = distinct !{!45, !26}
!46 = distinct !{!46, !26}
!47 = distinct !{!47, !44}
!48 = distinct !{!48, !26}
!49 = distinct !{!49, !26}
!50 = distinct !{!50, !44}
!51 = distinct !{!51, !26}
!52 = distinct !{!52, !44}
!53 = distinct !{!53, !26}
!54 = distinct !{!54, !26}
!55 = distinct !{!55, !26}


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