; LLVM IR from venumb/ZSPACE :: cpp/depends/alglib/cpp/tests/test_c.ll (Z8testfblsbPN11alglib_impl8ae_stateE)

; 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::ae_frame" = type { %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon }
%union.anon = type { ptr }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::fblslincgstate" = type { double, double, %"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_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::rcommstate", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::rcommstate" = type { i32, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }

@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.284 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.285 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.286 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.287 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.288 = external hidden unnamed_addr constant [42 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

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

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

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

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

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

declare i32 @printf(ptr noundef, ...) #1

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #1

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

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

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

declare noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef) #1

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z8testfblsbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) #4 {
  %3 = alloca i8, align 1
  %4 = alloca ptr, align 8
  %5 = alloca %"struct.alglib_impl::ae_frame", align 8
  %6 = alloca i64, align 8
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i8, align 1
  %12 = alloca i8, align 1
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca %"struct.alglib_impl::ae_vector", align 8
  %20 = alloca %"struct.alglib_impl::ae_vector", align 8
  %21 = alloca %"struct.alglib_impl::ae_vector", align 8
  %22 = alloca double, align 8
  %23 = alloca i8, align 1
  %24 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %25 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %26 = alloca %"struct.alglib_impl::ae_vector", align 8
  %27 = alloca %"struct.alglib_impl::ae_vector", align 8
  %28 = alloca %"struct.alglib_impl::ae_vector", align 8
  %29 = alloca %"struct.alglib_impl::ae_vector", align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca %"struct.alglib_impl::fblslincgstate", align 8
  %34 = alloca i8, align 1
  %35 = zext i1 %0 to i8
  store i8 %35, ptr %3, align 1, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 936, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #5
  %36 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %36, ptr noundef %5)
  call void @llvm.memset.p0.i64(ptr align 8 %19, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %21, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %24, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %25, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %26, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %27, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %28, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %29, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %33, i8 0, i64 936, i1 false)
  %37 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %19, i64 noundef 0, i64 noundef 3, ptr noundef %37, i1 noundef zeroext true)
  %38 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %20, i64 noundef 0, i64 noundef 3, ptr noundef %38, i1 noundef zeroext true)
  %39 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %21, i64 noundef 0, i64 noundef 3, ptr noundef %39, i1 noundef zeroext true)
  %40 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %24, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %40, i1 noundef zeroext true)
  %41 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %25, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %41, i1 noundef zeroext true)
  %42 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %26, i64 noundef 0, i64 noundef 3, ptr noundef %42, i1 noundef zeroext true)
  %43 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %27, i64 noundef 0, i64 noundef 3, ptr noundef %43, i1 noundef zeroext true)
  %44 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %28, i64 noundef 0, i64 noundef 3, ptr noundef %44, i1 noundef zeroext true)
  %45 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %29, i64 noundef 0, i64 noundef 3, ptr noundef %45, i1 noundef zeroext true)
  %46 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20_fblslincgstate_initEPvPNS_8ae_stateEb(ptr noundef %33, ptr noundef %46, i1 noundef zeroext true)
  store i64 10, ptr %8, align 8, !tbaa !11
  store i8 0, ptr %11, align 1, !tbaa !5
  store i8 0, ptr %12, align 1, !tbaa !5
  store i8 0, ptr %13, align 1, !tbaa !5
  store i8 0, ptr %14, align 1, !tbaa !5
  store i64 1, ptr %6, align 8, !tbaa !11
  br label %47

47:                                               ; preds = %452, %2
  %48 = load i64, ptr %6, align 8, !tbaa !11
  %49 = load i64, ptr %8, align 8, !tbaa !11
  %50 = icmp sle i64 %48, %49
  br i1 %50, label %51, label %455

51:                                               ; preds = %47
  store i64 1, ptr %7, align 8, !tbaa !11
  br label %52

52:                                               ; preds = %448, %51
  %53 = load i64, ptr %7, align 8, !tbaa !11
  %54 = load i64, ptr %8, align 8, !tbaa !11
  %55 = icmp sle i64 %53, %54
  br i1 %55, label %56, label %451

56:                                               ; preds = %52
  %57 = load i64, ptr %7, align 8, !tbaa !11
  %58 = load i64, ptr %6, align 8, !tbaa !11
  %59 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %24, i64 noundef %57, i64 noundef %58, ptr noundef %59)
  %60 = load i64, ptr %6, align 8, !tbaa !11
  %61 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %26, i64 noundef %60, ptr noundef %61)
  %62 = load i64, ptr %6, align 8, !tbaa !11
  %63 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %27, i64 noundef %62, ptr noundef %63)
  %64 = load i64, ptr %6, align 8, !tbaa !11
  %65 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %28, i64 noundef %64, ptr noundef %65)
  %66 = load i64, ptr %7, align 8, !tbaa !11
  %67 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %20, i64 noundef %66, ptr noundef %67)
  %68 = load i64, ptr %6, align 8, !tbaa !11
  %69 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %21, i64 noundef %68, ptr noundef %69)
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %70

70:                                               ; preds = %96, %56
  %71 = load i64, ptr %9, align 8, !tbaa !11
  %72 = load i64, ptr %7, align 8, !tbaa !11
  %73 = sub nsw i64 %72, 1
  %74 = icmp sle i64 %71, %73
  br i1 %74, label %75, label %99

75:                                               ; preds = %70
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %76

76:                                               ; preds = %92, %75
  %77 = load i64, ptr %10, align 8, !tbaa !11
  %78 = load i64, ptr %6, align 8, !tbaa !11
  %79 = sub nsw i64 %78, 1
  %80 = icmp sle i64 %77, %79
  br i1 %80, label %81, label %95

81:                                               ; preds = %76
  %82 = load ptr, ptr %4, align 8, !tbaa !9
  %83 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %82)
  %84 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %83, double -1.000000e+00)
  %85 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %24, i32 0, i32 6
  %86 = load ptr, ptr %85, align 8, !tbaa !13
  %87 = load i64, ptr %9, align 8, !tbaa !11
  %88 = getelementptr inbounds ptr, ptr %86, i64 %87
  %89 = load ptr, ptr %88, align 8, !tbaa !9
  %90 = load i64, ptr %10, align 8, !tbaa !11
  %91 = getelementptr inbounds double, ptr %89, i64 %90
  store double %84, ptr %91, align 8, !tbaa !14
  br label %92

92:                                               ; preds = %81
  %93 = load i64, ptr %10, align 8, !tbaa !11
  %94 = add nsw i64 %93, 1
  store i64 %94, ptr %10, align 8, !tbaa !11
  br label %76, !llvm.loop !16

95:                                               ; preds = %76
  br label %96

96:                                               ; preds = %95
  %97 = load i64, ptr %9, align 8, !tbaa !11
  %98 = add nsw i64 %97, 1
  store i64 %98, ptr %9, align 8, !tbaa !11
  br label %70, !llvm.loop !18

99:                                               ; preds = %70
  %100 = load ptr, ptr %4, align 8, !tbaa !9
  %101 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %100)
  %102 = fadd double %101, 1.000000e-01
  store double %102, ptr %30, align 8, !tbaa !14
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %103

103:                                              ; preds = %136, %99
  %104 = load i64, ptr %9, align 8, !tbaa !11
  %105 = load i64, ptr %6, align 8, !tbaa !11
  %106 = sub nsw i64 %105, 1
  %107 = icmp sle i64 %104, %106
  br i1 %107, label %108, label %139

108:                                              ; preds = %103
  %109 = load ptr, ptr %4, align 8, !tbaa !9
  %110 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %109)
  %111 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %110, double -1.000000e+00)
  %112 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 4
  %113 = load ptr, ptr %112, align 8, !tbaa !13
  %114 = load i64, ptr %9, align 8, !tbaa !11
  %115 = getelementptr inbounds double, ptr %113, i64 %114
  store double %111, ptr %115, align 8, !tbaa !14
  %116 = load ptr, ptr %4, align 8, !tbaa !9
  %117 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %116)
  %118 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %117, double -1.000000e+00)
  %119 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %120 = load ptr, ptr %119, align 8, !tbaa !13
  %121 = load i64, ptr %9, align 8, !tbaa !11
  %122 = getelementptr inbounds double, ptr %120, i64 %121
  store double %118, ptr %122, align 8, !tbaa !14
  %123 = load ptr, ptr %4, align 8, !tbaa !9
  %124 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 2, ptr noundef %123)
  %125 = mul nsw i64 2, %124
  %126 = sub nsw i64 %125, 1
  %127 = sitofp i64 %126 to double
  %128 = load ptr, ptr %4, align 8, !tbaa !9
  %129 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %128)
  %130 = fadd double 2.000000e+00, %129
  %131 = fmul double %127, %130
  %132 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %133 = load ptr, ptr %132, align 8, !tbaa !13
  %134 = load i64, ptr %9, align 8, !tbaa !11
  %135 = getelementptr inbounds double, ptr %133, i64 %134
  store double %131, ptr %135, align 8, !tbaa !14
  br label %136

136:                                              ; preds = %108
  %137 = load i64, ptr %9, align 8, !tbaa !11
  %138 = add nsw i64 %137, 1
  store i64 %138, ptr %9, align 8, !tbaa !11
  br label %103, !llvm.loop !19

139:                                              ; preds = %103
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %140

140:                                              ; preds = %159, %139
  %141 = load i64, ptr %9, align 8, !tbaa !11
  %142 = load i64, ptr %6, align 8, !tbaa !11
  %143 = sub nsw i64 %142, 1
  %144 = icmp sle i64 %141, %143
  br i1 %144, label %145, label %162

145:                                              ; preds = %140
  %146 = load ptr, ptr %4, align 8, !tbaa !9
  %147 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 2, ptr noundef %146)
  %148 = mul nsw i64 2, %147
  %149 = sub nsw i64 %148, 1
  %150 = sitofp i64 %149 to double
  %151 = load ptr, ptr %4, align 8, !tbaa !9
  %152 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %151)
  %153 = fadd double 2.000000e+00, %152
  %154 = fmul double %150, %153
  %155 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %156 = load ptr, ptr %155, align 8, !tbaa !13
  %157 = load i64, ptr %9, align 8, !tbaa !11
  %158 = getelementptr inbounds double, ptr %156, i64 %157
  store double %154, ptr %158, align 8, !tbaa !14
  br label %159

159:                                              ; preds = %145
  %160 = load i64, ptr %9, align 8, !tbaa !11
  %161 = add nsw i64 %160, 1
  store i64 %161, ptr %9, align 8, !tbaa !11
  br label %140, !llvm.loop !20

162:                                              ; preds = %140
  %163 = load i64, ptr %7, align 8, !tbaa !11
  %164 = load i64, ptr %6, align 8, !tbaa !11
  %165 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %163, i64 noundef %164, ptr noundef %24, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %27, i64 noundef 0, ptr noundef %20, i64 noundef 0, ptr noundef %165)
  %166 = load i64, ptr %6, align 8, !tbaa !11
  %167 = load i64, ptr %7, align 8, !tbaa !11
  %168 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %166, i64 noundef %167, ptr noundef %24, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef %20, i64 noundef 0, ptr noundef %21, i64 noundef 0, ptr noundef %168)
  %169 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %170 = load ptr, ptr %169, align 8, !tbaa !13
  %171 = getelementptr inbounds double, ptr %170, i64 0
  %172 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %173 = load ptr, ptr %172, align 8, !tbaa !13
  %174 = getelementptr inbounds double, ptr %173, i64 0
  %175 = load i64, ptr %6, align 8, !tbaa !11
  %176 = sub nsw i64 %175, 1
  %177 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %176)
  %178 = load double, ptr %30, align 8, !tbaa !14
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %171, i64 noundef 1, ptr noundef %174, i64 noundef 1, i64 noundef %177, double noundef %178)
  %179 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %180 = load ptr, ptr %179, align 8, !tbaa !13
  %181 = getelementptr inbounds double, ptr %180, i64 0
  %182 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 4
  %183 = load ptr, ptr %182, align 8, !tbaa !13
  %184 = getelementptr inbounds double, ptr %183, i64 0
  %185 = load i64, ptr %6, align 8, !tbaa !11
  %186 = sub nsw i64 %185, 1
  %187 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %186)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %181, i64 noundef 1, ptr noundef %184, i64 noundef 1, i64 noundef %187)
  %188 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %189 = load ptr, ptr %188, align 8, !tbaa !13
  %190 = getelementptr inbounds double, ptr %189, i64 0
  %191 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %192 = load ptr, ptr %191, align 8, !tbaa !13
  %193 = getelementptr inbounds double, ptr %192, i64 0
  %194 = load i64, ptr %6, align 8, !tbaa !11
  %195 = sub nsw i64 %194, 1
  %196 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %195)
  %197 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %190, i64 noundef 1, ptr noundef %193, i64 noundef 1, i64 noundef %196)
  store double %197, ptr %16, align 8, !tbaa !14
  %198 = load double, ptr %16, align 8, !tbaa !14
  %199 = load ptr, ptr %4, align 8, !tbaa !9
  %200 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %198, ptr noundef %199)
  store double %200, ptr %31, align 8, !tbaa !14
  %201 = load i64, ptr %7, align 8, !tbaa !11
  %202 = load i64, ptr %6, align 8, !tbaa !11
  %203 = load double, ptr %30, align 8, !tbaa !14
  %204 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12fblssolvecgxEPNS_9ae_matrixElldPNS_9ae_vectorES3_S3_PNS_8ae_stateE(ptr noundef %24, i64 noundef %201, i64 noundef %202, double noundef %203, ptr noundef %26, ptr noundef %27, ptr noundef %29, ptr noundef %204)
  %205 = load i64, ptr %7, align 8, !tbaa !11
  %206 = load i64, ptr %6, align 8, !tbaa !11
  %207 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %205, i64 noundef %206, ptr noundef %24, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %27, i64 noundef 0, ptr noundef %20, i64 noundef 0, ptr noundef %207)
  %208 = load i64, ptr %6, align 8, !tbaa !11
  %209 = load i64, ptr %7, align 8, !tbaa !11
  %210 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %208, i64 noundef %209, ptr noundef %24, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef %20, i64 noundef 0, ptr noundef %21, i64 noundef 0, ptr noundef %210)
  %211 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %212 = load ptr, ptr %211, align 8, !tbaa !13
  %213 = getelementptr inbounds double, ptr %212, i64 0
  %214 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %215 = load ptr, ptr %214, align 8, !tbaa !13
  %216 = getelementptr inbounds double, ptr %215, i64 0
  %217 = load i64, ptr %6, align 8, !tbaa !11
  %218 = sub nsw i64 %217, 1
  %219 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %218)
  %220 = load double, ptr %30, align 8, !tbaa !14
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %213, i64 noundef 1, ptr noundef %216, i64 noundef 1, i64 noundef %219, double noundef %220)
  %221 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %222 = load ptr, ptr %221, align 8, !tbaa !13
  %223 = getelementptr inbounds double, ptr %222, i64 0
  %224 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 4
  %225 = load ptr, ptr %224, align 8, !tbaa !13
  %226 = getelementptr inbounds double, ptr %225, i64 0
  %227 = load i64, ptr %6, align 8, !tbaa !11
  %228 = sub nsw i64 %227, 1
  %229 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %228)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %223, i64 noundef 1, ptr noundef %226, i64 noundef 1, i64 noundef %229)
  %230 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %231 = load ptr, ptr %230, align 8, !tbaa !13
  %232 = getelementptr inbounds double, ptr %231, i64 0
  %233 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %234 = load ptr, ptr %233, align 8, !tbaa !13
  %235 = getelementptr inbounds double, ptr %234, i64 0
  %236 = load i64, ptr %6, align 8, !tbaa !11
  %237 = sub nsw i64 %236, 1
  %238 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %237)
  %239 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %232, i64 noundef 1, ptr noundef %235, i64 noundef 1, i64 noundef %238)
  store double %239, ptr %16, align 8, !tbaa !14
  %240 = load double, ptr %16, align 8, !tbaa !14
  %241 = load ptr, ptr %4, align 8, !tbaa !9
  %242 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %240, ptr noundef %241)
  store double %242, ptr %32, align 8, !tbaa !14
  %243 = load i8, ptr %12, align 1, !tbaa !5, !range !21, !noundef !22
  %244 = trunc i8 %243 to i1
  br i1 %244, label %250, label %245

245:                                              ; preds = %162
  %246 = load double, ptr %32, align 8, !tbaa !14
  %247 = load double, ptr %31, align 8, !tbaa !14
  %248 = fmul double 1.000000e-03, %247
  %249 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %246, double noundef %248)
  br label %250

250:                                              ; preds = %245, %162
  %251 = phi i1 [ true, %162 ], [ %249, %245 ]
  %252 = zext i1 %251 to i8
  store i8 %252, ptr %12, align 1, !tbaa !5
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %253

253:                                              ; preds = %272, %250
  %254 = load i64, ptr %9, align 8, !tbaa !11
  %255 = load i64, ptr %6, align 8, !tbaa !11
  %256 = sub nsw i64 %255, 1
  %257 = icmp sle i64 %254, %256
  br i1 %257, label %258, label %275

258:                                              ; preds = %253
  %259 = load ptr, ptr %4, align 8, !tbaa !9
  %260 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 2, ptr noundef %259)
  %261 = mul nsw i64 2, %260
  %262 = sub nsw i64 %261, 1
  %263 = sitofp i64 %262 to double
  %264 = load ptr, ptr %4, align 8, !tbaa !9
  %265 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %264)
  %266 = fadd double 2.000000e+00, %265
  %267 = fmul double %263, %266
  %268 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %269 = load ptr, ptr %268, align 8, !tbaa !13
  %270 = load i64, ptr %9, align 8, !tbaa !11
  %271 = getelementptr inbounds double, ptr %269, i64 %270
  store double %267, ptr %271, align 8, !tbaa !14
  br label %272

272:                                              ; preds = %258
  %273 = load i64, ptr %9, align 8, !tbaa !11
  %274 = add nsw i64 %273, 1
  store i64 %274, ptr %9, align 8, !tbaa !11
  br label %253, !llvm.loop !23

275:                                              ; preds = %253
  %276 = load i64, ptr %7, align 8, !tbaa !11
  %277 = load i64, ptr %6, align 8, !tbaa !11
  %278 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %276, i64 noundef %277, ptr noundef %24, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %27, i64 noundef 0, ptr noundef %20, i64 noundef 0, ptr noundef %278)
  %279 = load i64, ptr %6, align 8, !tbaa !11
  %280 = load i64, ptr %7, align 8, !tbaa !11
  %281 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %279, i64 noundef %280, ptr noundef %24, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef %20, i64 noundef 0, ptr noundef %21, i64 noundef 0, ptr noundef %281)
  %282 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %283 = load ptr, ptr %282, align 8, !tbaa !13
  %284 = getelementptr inbounds double, ptr %283, i64 0
  %285 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %286 = load ptr, ptr %285, align 8, !tbaa !13
  %287 = getelementptr inbounds double, ptr %286, i64 0
  %288 = load i64, ptr %6, align 8, !tbaa !11
  %289 = sub nsw i64 %288, 1
  %290 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %289)
  %291 = load double, ptr %30, align 8, !tbaa !14
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %284, i64 noundef 1, ptr noundef %287, i64 noundef 1, i64 noundef %290, double noundef %291)
  %292 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %293 = load ptr, ptr %292, align 8, !tbaa !13
  %294 = getelementptr inbounds double, ptr %293, i64 0
  %295 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 4
  %296 = load ptr, ptr %295, align 8, !tbaa !13
  %297 = getelementptr inbounds double, ptr %296, i64 0
  %298 = load i64, ptr %6, align 8, !tbaa !11
  %299 = sub nsw i64 %298, 1
  %300 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %299)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %294, i64 noundef 1, ptr noundef %297, i64 noundef 1, i64 noundef %300)
  %301 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %302 = load ptr, ptr %301, align 8, !tbaa !13
  %303 = getelementptr inbounds double, ptr %302, i64 0
  %304 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %305 = load ptr, ptr %304, align 8, !tbaa !13
  %306 = getelementptr inbounds double, ptr %305, i64 0
  %307 = load i64, ptr %6, align 8, !tbaa !11
  %308 = sub nsw i64 %307, 1
  %309 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %308)
  %310 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %303, i64 noundef 1, ptr noundef %306, i64 noundef 1, i64 noundef %309)
  store double %310, ptr %16, align 8, !tbaa !14
  %311 = load double, ptr %16, align 8, !tbaa !14
  %312 = load ptr, ptr %4, align 8, !tbaa !9
  %313 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %311, ptr noundef %312)
  store double %313, ptr %31, align 8, !tbaa !14
  %314 = load i64, ptr %6, align 8, !tbaa !11
  %315 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12fblscgcreateEPNS_9ae_vectorES1_lPNS_14fblslincgstateEPNS_8ae_stateE(ptr noundef %27, ptr noundef %26, i64 noundef %314, ptr noundef %33, ptr noundef %315)
  br label %316

316:                                              ; preds = %319, %275
  %317 = load ptr, ptr %4, align 8, !tbaa !9
  %318 = call noundef zeroext i1 @_ZN11alglib_impl15fblscgiterationEPNS_14fblslincgstateEPNS_8ae_stateE(ptr noundef %33, ptr noundef %317)
  br i1 %318, label %319, label %367

319:                                              ; preds = %316
  %320 = load i64, ptr %7, align 8, !tbaa !11
  %321 = load i64, ptr %6, align 8, !tbaa !11
  %322 = getelementptr inbounds %"struct.alglib_impl::fblslincgstate", ptr %33, i32 0, i32 2
  %323 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %320, i64 noundef %321, ptr noundef %24, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %322, i64 noundef 0, ptr noundef %20, i64 noundef 0, ptr noundef %323)
  %324 = load i64, ptr %6, align 8, !tbaa !11
  %325 = load i64, ptr %7, align 8, !tbaa !11
  %326 = getelementptr inbounds %"struct.alglib_impl::fblslincgstate", ptr %33, i32 0, i32 3
  %327 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %324, i64 noundef %325, ptr noundef %24, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef %20, i64 noundef 0, ptr noundef %326, i64 noundef 0, ptr noundef %327)
  %328 = getelementptr inbounds %"struct.alglib_impl::fblslincgstate", ptr %33, i32 0, i32 3
  %329 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %328, i32 0, i32 4
  %330 = load ptr, ptr %329, align 8, !tbaa !13
  %331 = getelementptr inbounds double, ptr %330, i64 0
  %332 = getelementptr inbounds %"struct.alglib_impl::fblslincgstate", ptr %33, i32 0, i32 2
  %333 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %332, i32 0, i32 4
  %334 = load ptr, ptr %333, align 8, !tbaa !13
  %335 = getelementptr inbounds double, ptr %334, i64 0
  %336 = load i64, ptr %6, align 8, !tbaa !11
  %337 = sub nsw i64 %336, 1
  %338 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %337)
  %339 = load double, ptr %30, align 8, !tbaa !14
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %331, i64 noundef 1, ptr noundef %335, i64 noundef 1, i64 noundef %338, double noundef %339)
  %340 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %20, i32 0, i32 4
  %341 = load ptr, ptr %340, align 8, !tbaa !13
  %342 = getelementptr inbounds double, ptr %341, i64 0
  %343 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %20, i32 0, i32 4
  %344 = load ptr, ptr %343, align 8, !tbaa !13
  %345 = getelementptr inbounds double, ptr %344, i64 0
  %346 = load i64, ptr %7, align 8, !tbaa !11
  %347 = sub nsw i64 %346, 1
  %348 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %347)
  %349 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %342, i64 noundef 1, ptr noundef %345, i64 noundef 1, i64 noundef %348)
  store double %349, ptr %17, align 8, !tbaa !14
  %350 = getelementptr inbounds %"struct.alglib_impl::fblslincgstate", ptr %33, i32 0, i32 2
  %351 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %350, i32 0, i32 4
  %352 = load ptr, ptr %351, align 8, !tbaa !13
  %353 = getelementptr inbounds double, ptr %352, i64 0
  %354 = getelementptr inbounds %"struct.alglib_impl::fblslincgstate", ptr %33, i32 0, i32 2
  %355 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %354, i32 0, i32 4
  %356 = load ptr, ptr %355, align 8, !tbaa !13
  %357 = getelementptr inbounds double, ptr %356, i64 0
  %358 = load i64, ptr %6, align 8, !tbaa !11
  %359 = sub nsw i64 %358, 1
  %360 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %359)
  %361 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %353, i64 noundef 1, ptr noundef %357, i64 noundef 1, i64 noundef %360)
  store double %361, ptr %18, align 8, !tbaa !14
  %362 = load double, ptr %17, align 8, !tbaa !14
  %363 = load double, ptr %30, align 8, !tbaa !14
  %364 = load double, ptr %18, align 8, !tbaa !14
  %365 = call double @llvm.fmuladd.f64(double %363, double %364, double %362)
  %366 = getelementptr inbounds %"struct.alglib_impl::fblslincgstate", ptr %33, i32 0, i32 4
  store double %365, ptr %366, align 8, !tbaa !24
  br label %316, !llvm.loop !30

367:                                              ; preds = %316
  %368 = load i64, ptr %7, align 8, !tbaa !11
  %369 = load i64, ptr %6, align 8, !tbaa !11
  %370 = getelementptr inbounds %"struct.alglib_impl::fblslincgstate", ptr %33, i32 0, i32 8
  %371 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %368, i64 noundef %369, ptr noundef %24, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %370, i64 noundef 0, ptr noundef %20, i64 noundef 0, ptr noundef %371)
  %372 = load i64, ptr %6, align 8, !tbaa !11
  %373 = load i64, ptr %7, align 8, !tbaa !11
  %374 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %372, i64 noundef %373, ptr noundef %24, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef %20, i64 noundef 0, ptr noundef %21, i64 noundef 0, ptr noundef %374)
  %375 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %376 = load ptr, ptr %375, align 8, !tbaa !13
  %377 = getelementptr inbounds double, ptr %376, i64 0
  %378 = getelementptr inbounds %"struct.alglib_impl::fblslincgstate", ptr %33, i32 0, i32 8
  %379 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %378, i32 0, i32 4
  %380 = load ptr, ptr %379, align 8, !tbaa !13
  %381 = getelementptr inbounds double, ptr %380, i64 0
  %382 = load i64, ptr %6, align 8, !tbaa !11
  %383 = sub nsw i64 %382, 1
  %384 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %383)
  %385 = load double, ptr %30, align 8, !tbaa !14
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %377, i64 noundef 1, ptr noundef %381, i64 noundef 1, i64 noundef %384, double noundef %385)
  %386 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %387 = load ptr, ptr %386, align 8, !tbaa !13
  %388 = getelementptr inbounds double, ptr %387, i64 0
  %389 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 4
  %390 = load ptr, ptr %389, align 8, !tbaa !13
  %391 = getelementptr inbounds double, ptr %390, i64 0
  %392 = load i64, ptr %6, align 8, !tbaa !11
  %393 = sub nsw i64 %392, 1
  %394 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %393)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %388, i64 noundef 1, ptr noundef %391, i64 noundef 1, i64 noundef %394)
  %395 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %396 = load ptr, ptr %395, align 8, !tbaa !13
  %397 = getelementptr inbounds double, ptr %396, i64 0
  %398 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %399 = load ptr, ptr %398, align 8, !tbaa !13
  %400 = getelementptr inbounds double, ptr %399, i64 0
  %401 = load i64, ptr %6, align 8, !tbaa !11
  %402 = sub nsw i64 %401, 1
  %403 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %402)
  %404 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %397, i64 noundef 1, ptr noundef %400, i64 noundef 1, i64 noundef %403)
  store double %404, ptr %16, align 8, !tbaa !14
  %405 = load double, ptr %16, align 8, !tbaa !14
  %406 = load ptr, ptr %4, align 8, !tbaa !9
  %407 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %405, ptr noundef %406)
  store double %407, ptr %32, align 8, !tbaa !14
  %408 = load i8, ptr %12, align 1, !tbaa !5, !range !21, !noundef !22
  %409 = trunc i8 %408 to i1
  br i1 %409, label %420, label %410

410:                                              ; preds = %367
  %411 = load double, ptr %31, align 8, !tbaa !14
  %412 = getelementptr inbounds %"struct.alglib_impl::fblslincgstate", ptr %33, i32 0, i32 0
  %413 = load double, ptr %412, align 8, !tbaa !31
  %414 = fsub double %411, %413
  %415 = load ptr, ptr %4, align 8, !tbaa !9
  %416 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %414, ptr noundef %415)
  %417 = load double, ptr %31, align 8, !tbaa !14
  %418 = fmul double 5.000000e-14, %417
  %419 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %416, double noundef %418)
  br label %420

420:                                              ; preds = %410, %367
  %421 = phi i1 [ true, %367 ], [ %419, %410 ]
  %422 = zext i1 %421 to i8
  store i8 %422, ptr %12, align 1, !tbaa !5
  %423 = load i8, ptr %12, align 1, !tbaa !5, !range !21, !noundef !22
  %424 = trunc i8 %423 to i1
  br i1 %424, label %435, label %425

425:                                              ; preds = %420
  %426 = load double, ptr %32, align 8, !tbaa !14
  %427 = getelementptr inbounds %"struct.alglib_impl::fblslincgstate", ptr %33, i32 0, i32 1
  %428 = load double, ptr %427, align 8, !tbaa !32
  %429 = fsub double %426, %428
  %430 = load ptr, ptr %4, align 8, !tbaa !9
  %431 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %429, ptr noundef %430)
  %432 = load double, ptr %31, align 8, !tbaa !14
  %433 = fmul double 5.000000e-14, %432
  %434 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %431, double noundef %433)
  br label %435

435:                                              ; preds = %425, %420
  %436 = phi i1 [ true, %420 ], [ %434, %425 ]
  %437 = zext i1 %436 to i8
  store i8 %437, ptr %12, align 1, !tbaa !5
  %438 = load i8, ptr %12, align 1, !tbaa !5, !range !21, !noundef !22
  %439 = trunc i8 %438 to i1
  br i1 %439, label %445, label %440

440:                                              ; preds = %435
  %441 = load double, ptr %32, align 8, !tbaa !14
  %442 = load double, ptr %31, align 8, !tbaa !14
  %443 = fmul double 1.000000e-03, %442
  %444 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %441, double noundef %443)
  br label %445

445:                                              ; preds = %440, %435
  %446 = phi i1 [ true, %435 ], [ %444, %440 ]
  %447 = zext i1 %446 to i8
  store i8 %447, ptr %12, align 1, !tbaa !5
  br label %448

448:                                              ; preds = %445
  %449 = load i64, ptr %7, align 8, !tbaa !11
  %450 = add nsw i64 %449, 1
  store i64 %450, ptr %7, align 8, !tbaa !11
  br label %52, !llvm.loop !33

451:                                              ; preds = %52
  br label %452

452:                                              ; preds = %451
  %453 = load i64, ptr %6, align 8, !tbaa !11
  %454 = add nsw i64 %453, 1
  store i64 %454, ptr %6, align 8, !tbaa !11
  br label %47, !llvm.loop !34

455:                                              ; preds = %47
  store double 0x3EB0C6F7A0B5ED8D, ptr %15, align 8, !tbaa !14
  store i64 1, ptr %6, align 8, !tbaa !11
  br label %456

456:                                              ; preds = %634, %455
  %457 = load i64, ptr %6, align 8, !tbaa !11
  %458 = icmp sle i64 %457, 5
  br i1 %458, label %459, label %637

459:                                              ; preds = %456
  %460 = load i64, ptr %6, align 8, !tbaa !11
  store i64 %460, ptr %7, align 8, !tbaa !11
  br label %461

461:                                              ; preds = %630, %459
  %462 = load i64, ptr %7, align 8, !tbaa !11
  %463 = load i64, ptr %6, align 8, !tbaa !11
  %464 = mul nsw i64 2, %463
  %465 = icmp sle i64 %462, %464
  br i1 %465, label %466, label %633

466:                                              ; preds = %461
  %467 = load i64, ptr %7, align 8, !tbaa !11
  %468 = load i64, ptr %6, align 8, !tbaa !11
  %469 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %24, i64 noundef %467, i64 noundef %468, ptr noundef %469)
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %470

470:                                              ; preds = %498, %466
  %471 = load i64, ptr %9, align 8, !tbaa !11
  %472 = load i64, ptr %7, align 8, !tbaa !11
  %473 = load i64, ptr %6, align 8, !tbaa !11
  %474 = sub nsw i64 %472, %473
  %475 = sub nsw i64 %474, 1
  %476 = icmp sle i64 %471, %475
  br i1 %476, label %477, label %501

477:                                              ; preds = %470
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %478

478:                                              ; preds = %494, %477
  %479 = load i64, ptr %10, align 8, !tbaa !11
  %480 = load i64, ptr %6, align 8, !tbaa !11
  %481 = sub nsw i64 %480, 1
  %482 = icmp sle i64 %479, %481
  br i1 %482, label %483, label %497

483:                                              ; preds = %478
  %484 = load ptr, ptr %4, align 8, !tbaa !9
  %485 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %484)
  %486 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %485, double -1.000000e+00)
  %487 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %24, i32 0, i32 6
  %488 = load ptr, ptr %487, align 8, !tbaa !13
  %489 = load i64, ptr %9, align 8, !tbaa !11
  %490 = getelementptr inbounds ptr, ptr %488, i64 %489
  %491 = load ptr, ptr %490, align 8, !tbaa !9
  %492 = load i64, ptr %10, align 8, !tbaa !11
  %493 = getelementptr inbounds double, ptr %491, i64 %492
  store double %486, ptr %493, align 8, !tbaa !14
  br label %494

494:                                              ; preds = %483
  %495 = load i64, ptr %10, align 8, !tbaa !11
  %496 = add nsw i64 %495, 1
  store i64 %496, ptr %10, align 8, !tbaa !11
  br label %478, !llvm.loop !35

497:                                              ; preds = %478
  br label %498

498:                                              ; preds = %497
  %499 = load i64, ptr %9, align 8, !tbaa !11
  %500 = add nsw i64 %499, 1
  store i64 %500, ptr %9, align 8, !tbaa !11
  br label %470, !llvm.loop !36

501:                                              ; preds = %470
  %502 = load i64, ptr %7, align 8, !tbaa !11
  %503 = load i64, ptr %6, align 8, !tbaa !11
  %504 = sub nsw i64 %502, %503
  store i64 %504, ptr %9, align 8, !tbaa !11
  br label %505

505:                                              ; preds = %543, %501
  %506 = load i64, ptr %9, align 8, !tbaa !11
  %507 = load i64, ptr %7, align 8, !tbaa !11
  %508 = sub nsw i64 %507, 1
  %509 = icmp sle i64 %506, %508
  br i1 %509, label %510, label %546

510:                                              ; preds = %505
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %511

511:                                              ; preds = %528, %510
  %512 = load i64, ptr %10, align 8, !tbaa !11
  %513 = load i64, ptr %6, align 8, !tbaa !11
  %514 = sub nsw i64 %513, 1
  %515 = icmp sle i64 %512, %514
  br i1 %515, label %516, label %531

516:                                              ; preds = %511
  %517 = load ptr, ptr %4, align 8, !tbaa !9
  %518 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %517)
  %519 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %518, double -1.000000e+00)
  %520 = fmul double 1.000000e-02, %519
  %521 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %24, i32 0, i32 6
  %522 = load ptr, ptr %521, align 8, !tbaa !13
  %523 = load i64, ptr %9, align 8, !tbaa !11
  %524 = getelementptr inbounds ptr, ptr %522, i64 %523
  %525 = load ptr, ptr %524, align 8, !tbaa !9
  %526 = load i64, ptr %10, align 8, !tbaa !11
  %527 = getelementptr inbounds double, ptr %525, i64 %526
  store double %520, ptr %527, align 8, !tbaa !14
  br label %528

528:                                              ; preds = %516
  %529 = load i64, ptr %10, align 8, !tbaa !11
  %530 = add nsw i64 %529, 1
  store i64 %530, ptr %10, align 8, !tbaa !11
  br label %511, !llvm.loop !37

531:                                              ; preds = %511
  %532 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %24, i32 0, i32 6
  %533 = load ptr, ptr %532, align 8, !tbaa !13
  %534 = load i64, ptr %9, align 8, !tbaa !11
  %535 = getelementptr inbounds ptr, ptr %533, i64 %534
  %536 = load ptr, ptr %535, align 8, !tbaa !9
  %537 = load i64, ptr %9, align 8, !tbaa !11
  %538 = load i64, ptr %7, align 8, !tbaa !11
  %539 = load i64, ptr %6, align 8, !tbaa !11
  %540 = sub nsw i64 %538, %539
  %541 = sub nsw i64 %537, %540
  %542 = getelementptr inbounds double, ptr %536, i64 %541
  store double 1.000000e+00, ptr %542, align 8, !tbaa !14
  br label %543

543:                                              ; preds = %531
  %544 = load i64, ptr %9, align 8, !tbaa !11
  %545 = add nsw i64 %544, 1
  store i64 %545, ptr %9, align 8, !tbaa !11
  br label %505, !llvm.loop !38

546:                                              ; preds = %505
  %547 = load i64, ptr %6, align 8, !tbaa !11
  %548 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %28, i64 noundef %547, ptr noundef %548)
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %549

549:                                              ; preds = %562, %546
  %550 = load i64, ptr %9, align 8, !tbaa !11
  %551 = load i64, ptr %6, align 8, !tbaa !11
  %552 = sub nsw i64 %551, 1
  %553 = icmp sle i64 %550, %552
  br i1 %553, label %554, label %565

554:                                              ; preds = %549
  %555 = load ptr, ptr %4, align 8, !tbaa !9
  %556 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %555)
  %557 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %556, double -1.000000e+00)
  %558 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %559 = load ptr, ptr %558, align 8, !tbaa !13
  %560 = load i64, ptr %9, align 8, !tbaa !11
  %561 = getelementptr inbounds double, ptr %559, i64 %560
  store double %557, ptr %561, align 8, !tbaa !14
  br label %562

562:                                              ; preds = %554
  %563 = load i64, ptr %9, align 8, !tbaa !11
  %564 = add nsw i64 %563, 1
  store i64 %564, ptr %9, align 8, !tbaa !11
  br label %549, !llvm.loop !39

565:                                              ; preds = %549
  %566 = load i64, ptr %7, align 8, !tbaa !11
  %567 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %26, i64 noundef %566, ptr noundef %567)
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %568

568:                                              ; preds = %592, %565
  %569 = load i64, ptr %9, align 8, !tbaa !11
  %570 = load i64, ptr %7, align 8, !tbaa !11
  %571 = sub nsw i64 %570, 1
  %572 = icmp sle i64 %569, %571
  br i1 %572, label %573, label %595

573:                                              ; preds = %568
  %574 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %24, i32 0, i32 6
  %575 = load ptr, ptr %574, align 8, !tbaa !13
  %576 = load i64, ptr %9, align 8, !tbaa !11
  %577 = getelementptr inbounds ptr, ptr %575, i64 %576
  %578 = load ptr, ptr %577, align 8, !tbaa !9
  %579 = getelementptr inbounds double, ptr %578, i64 0
  %580 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %581 = load ptr, ptr %580, align 8, !tbaa !13
  %582 = getelementptr inbounds double, ptr %581, i64 0
  %583 = load i64, ptr %6, align 8, !tbaa !11
  %584 = sub nsw i64 %583, 1
  %585 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %584)
  %586 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %579, i64 noundef 1, ptr noundef %582, i64 noundef 1, i64 noundef %585)
  store double %586, ptr %16, align 8, !tbaa !14
  %587 = load double, ptr %16, align 8, !tbaa !14
  %588 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 4
  %589 = load ptr, ptr %588, align 8, !tbaa !13
  %590 = load i64, ptr %9, align 8, !tbaa !11
  %591 = getelementptr inbounds double, ptr %589, i64 %590
  store double %587, ptr %591, align 8, !tbaa !14
  br label %592

592:                                              ; preds = %573
  %593 = load i64, ptr %9, align 8, !tbaa !11
  %594 = add nsw i64 %593, 1
  store i64 %594, ptr %9, align 8, !tbaa !11
  br label %568, !llvm.loop !40

595:                                              ; preds = %568
  %596 = load i64, ptr %7, align 8, !tbaa !11
  %597 = load i64, ptr %6, align 8, !tbaa !11
  %598 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11fblssolvelsEPNS_9ae_matrixEPNS_9ae_vectorEllS3_S3_S3_PNS_8ae_stateE(ptr noundef %24, ptr noundef %26, i64 noundef %596, i64 noundef %597, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %598)
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %599

599:                                              ; preds = %626, %595
  %600 = load i64, ptr %9, align 8, !tbaa !11
  %601 = load i64, ptr %6, align 8, !tbaa !11
  %602 = sub nsw i64 %601, 1
  %603 = icmp sle i64 %600, %602
  br i1 %603, label %604, label %629

604:                                              ; preds = %599
  %605 = load i8, ptr %13, align 1, !tbaa !5, !range !21, !noundef !22
  %606 = trunc i8 %605 to i1
  br i1 %606, label %623, label %607

607:                                              ; preds = %604
  %608 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 4
  %609 = load ptr, ptr %608, align 8, !tbaa !13
  %610 = load i64, ptr %9, align 8, !tbaa !11
  %611 = getelementptr inbounds double, ptr %609, i64 %610
  %612 = load double, ptr %611, align 8, !tbaa !14
  %613 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %614 = load ptr, ptr %613, align 8, !tbaa !13
  %615 = load i64, ptr %9, align 8, !tbaa !11
  %616 = getelementptr inbounds double, ptr %614, i64 %615
  %617 = load double, ptr %616, align 8, !tbaa !14
  %618 = fsub double %612, %617
  %619 = load ptr, ptr %4, align 8, !tbaa !9
  %620 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %618, ptr noundef %619)
  %621 = load double, ptr %15, align 8, !tbaa !14
  %622 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %620, double noundef %621)
  br label %623

623:                                              ; preds = %607, %604
  %624 = phi i1 [ true, %604 ], [ %622, %607 ]
  %625 = zext i1 %624 to i8
  store i8 %625, ptr %13, align 1, !tbaa !5
  br label %626

626:                                              ; preds = %623
  %627 = load i64, ptr %9, align 8, !tbaa !11
  %628 = add nsw i64 %627, 1
  store i64 %628, ptr %9, align 8, !tbaa !11
  br label %599, !llvm.loop !41

629:                                              ; preds = %599
  br label %630

630:                                              ; preds = %629
  %631 = load i64, ptr %7, align 8, !tbaa !11
  %632 = add nsw i64 %631, 1
  store i64 %632, ptr %7, align 8, !tbaa !11
  br label %461, !llvm.loop !42

633:                                              ; preds = %461
  br label %634

634:                                              ; preds = %633
  %635 = load i64, ptr %6, align 8, !tbaa !11
  %636 = add nsw i64 %635, 1
  store i64 %636, ptr %6, align 8, !tbaa !11
  br label %456, !llvm.loop !43

637:                                              ; preds = %456
  store i64 1, ptr %6, align 8, !tbaa !11
  br label %638

638:                                              ; preds = %867, %637
  %639 = load i64, ptr %6, align 8, !tbaa !11
  %640 = icmp sle i64 %639, 30
  br i1 %640, label %641, label %870

641:                                              ; preds = %638
  %642 = load i64, ptr %6, align 8, !tbaa !11
  %643 = load i64, ptr %6, align 8, !tbaa !11
  %644 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %24, i64 noundef %642, i64 noundef %643, ptr noundef %644)
  %645 = load i64, ptr %6, align 8, !tbaa !11
  %646 = load i64, ptr %6, align 8, !tbaa !11
  %647 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %25, i64 noundef %645, i64 noundef %646, ptr noundef %647)
  %648 = load i64, ptr %6, align 8, !tbaa !11
  %649 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %28, i64 noundef %648, ptr noundef %649)
  %650 = load i64, ptr %6, align 8, !tbaa !11
  %651 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %26, i64 noundef %650, ptr noundef %651)
  %652 = load i64, ptr %6, align 8, !tbaa !11
  %653 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %29, i64 noundef %652, ptr noundef %653)
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %654

654:                                              ; preds = %698, %641
  %655 = load i64, ptr %9, align 8, !tbaa !11
  %656 = load i64, ptr %6, align 8, !tbaa !11
  %657 = sub nsw i64 %656, 1
  %658 = icmp sle i64 %655, %657
  br i1 %658, label %659, label %701

659:                                              ; preds = %654
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %660

660:                                              ; preds = %677, %659
  %661 = load i64, ptr %10, align 8, !tbaa !11
  %662 = load i64, ptr %6, align 8, !tbaa !11
  %663 = sub nsw i64 %662, 1
  %664 = icmp sle i64 %661, %663
  br i1 %664, label %665, label %680

665:                                              ; preds = %660
  %666 = load ptr, ptr %4, align 8, !tbaa !9
  %667 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %666)
  %668 = fsub double %667, 5.000000e-01
  %669 = fmul double 1.000000e-02, %668
  %670 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %24, i32 0, i32 6
  %671 = load ptr, ptr %670, align 8, !tbaa !13
  %672 = load i64, ptr %9, align 8, !tbaa !11
  %673 = getelementptr inbounds ptr, ptr %671, i64 %672
  %674 = load ptr, ptr %673, align 8, !tbaa !9
  %675 = load i64, ptr %10, align 8, !tbaa !11
  %676 = getelementptr inbounds double, ptr %674, i64 %675
  store double %669, ptr %676, align 8, !tbaa !14
  br label %677

677:                                              ; preds = %665
  %678 = load i64, ptr %10, align 8, !tbaa !11
  %679 = add nsw i64 %678, 1
  store i64 %679, ptr %10, align 8, !tbaa !11
  br label %660, !llvm.loop !44

680:                                              ; preds = %660
  %681 = load ptr, ptr %4, align 8, !tbaa !9
  %682 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %681)
  %683 = fadd double 1.000000e+00, %682
  %684 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %24, i32 0, i32 6
  %685 = load ptr, ptr %684, align 8, !tbaa !13
  %686 = load i64, ptr %9, align 8, !tbaa !11
  %687 = getelementptr inbounds ptr, ptr %685, i64 %686
  %688 = load ptr, ptr %687, align 8, !tbaa !9
  %689 = load i64, ptr %9, align 8, !tbaa !11
  %690 = getelementptr inbounds double, ptr %688, i64 %689
  store double %683, ptr %690, align 8, !tbaa !14
  %691 = load ptr, ptr %4, align 8, !tbaa !9
  %692 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %691)
  %693 = fsub double %692, 5.000000e-01
  %694 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %695 = load ptr, ptr %694, align 8, !tbaa !13
  %696 = load i64, ptr %9, align 8, !tbaa !11
  %697 = getelementptr inbounds double, ptr %695, i64 %696
  store double %693, ptr %697, align 8, !tbaa !14
  br label %698

698:                                              ; preds = %680
  %699 = load i64, ptr %9, align 8, !tbaa !11
  %700 = add nsw i64 %699, 1
  store i64 %700, ptr %9, align 8, !tbaa !11
  br label %654, !llvm.loop !45

701:                                              ; preds = %654
  %702 = load ptr, ptr %4, align 8, !tbaa !9
  %703 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %702)
  %704 = call double @llvm.fmuladd.f64(double %703, double 4.000000e+00, double -2.000000e+00)
  %705 = load ptr, ptr %4, align 8, !tbaa !9
  %706 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 1.000000e+01, double noundef %704, ptr noundef %705)
  store double %706, ptr %22, align 8, !tbaa !14
  %707 = load ptr, ptr %4, align 8, !tbaa !9
  %708 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %707)
  %709 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %708, double noundef 5.000000e-01)
  %710 = zext i1 %709 to i8
  store i8 %710, ptr %23, align 1, !tbaa !5
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %711

711:                                              ; preds = %808, %701
  %712 = load i64, ptr %9, align 8, !tbaa !11
  %713 = load i64, ptr %6, align 8, !tbaa !11
  %714 = sub nsw i64 %713, 1
  %715 = icmp sle i64 %712, %714
  br i1 %715, label %716, label %811

716:                                              ; preds = %711
  %717 = load i8, ptr %23, align 1, !tbaa !5, !range !21, !noundef !22
  %718 = trunc i8 %717 to i1
  br i1 %718, label %719, label %763

719:                                              ; preds = %716
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %720

720:                                              ; preds = %733, %719
  %721 = load i64, ptr %10, align 8, !tbaa !11
  %722 = load i64, ptr %9, align 8, !tbaa !11
  %723 = sub nsw i64 %722, 1
  %724 = icmp sle i64 %721, %723
  br i1 %724, label %725, label %736

725:                                              ; preds = %720
  %726 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %25, i32 0, i32 6
  %727 = load ptr, ptr %726, align 8, !tbaa !13
  %728 = load i64, ptr %9, align 8, !tbaa !11
  %729 = getelementptr inbounds ptr, ptr %727, i64 %728
  %730 = load ptr, ptr %729, align 8, !tbaa !9
  %731 = load i64, ptr %10, align 8, !tbaa !11
  %732 = getelementptr inbounds double, ptr %730, i64 %731
  store double 0.000000e+00, ptr %732, align 8, !tbaa !14
  br label %733

733:                                              ; preds = %725
  %734 = load i64, ptr %10, align 8, !tbaa !11
  %735 = add nsw i64 %734, 1
  store i64 %735, ptr %10, align 8, !tbaa !11
  br label %720, !llvm.loop !46

736:                                              ; preds = %720
  %737 = load i64, ptr %9, align 8, !tbaa !11
  store i64 %737, ptr %10, align 8, !tbaa !11
  br label %738

738:                                              ; preds = %759, %736
  %739 = load i64, ptr %10, align 8, !tbaa !11
  %740 = load i64, ptr %6, align 8, !tbaa !11
  %741 = sub nsw i64 %740, 1
  %742 = icmp sle i64 %739, %741
  br i1 %742, label %743, label %762

743:                                              ; preds = %738
  %744 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %24, i32 0, i32 6
  %745 = load ptr, ptr %744, align 8, !tbaa !13
  %746 = load i64, ptr %9, align 8, !tbaa !11
  %747 = getelementptr inbounds ptr, ptr %745, i64 %746
  %748 = load ptr, ptr %747, align 8, !tbaa !9
  %749 = load i64, ptr %10, align 8, !tbaa !11
  %750 = getelementptr inbounds double, ptr %748, i64 %749
  %751 = load double, ptr %750, align 8, !tbaa !14
  %752 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %25, i32 0, i32 6
  %753 = load ptr, ptr %752, align 8, !tbaa !13
  %754 = load i64, ptr %9, align 8, !tbaa !11
  %755 = getelementptr inbounds ptr, ptr %753, i64 %754
  %756 = load ptr, ptr %755, align 8, !tbaa !9
  %757 = load i64, ptr %10, align 8, !tbaa !11
  %758 = getelementptr inbounds double, ptr %756, i64 %757
  store double %751, ptr %758, align 8, !tbaa !14
  br label %759

759:                                              ; preds = %743
  %760 = load i64, ptr %10, align 8, !tbaa !11
  %761 = add nsw i64 %760, 1
  store i64 %761, ptr %10, align 8, !tbaa !11
  br label %738, !llvm.loop !47

762:                                              ; preds = %738
  br label %807

763:                                              ; preds = %716
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %764

764:                                              ; preds = %784, %763
  %765 = load i64, ptr %10, align 8, !tbaa !11
  %766 = load i64, ptr %9, align 8, !tbaa !11
  %767 = icmp sle i64 %765, %766
  br i1 %767, label %768, label %787

768:                                              ; preds = %764
  %769 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %24, i32 0, i32 6
  %770 = load ptr, ptr %769, align 8, !tbaa !13
  %771 = load i64, ptr %9, align 8, !tbaa !11
  %772 = getelementptr inbounds ptr, ptr %770, i64 %771
  %773 = load ptr, ptr %772, align 8, !tbaa !9
  %774 = load i64, ptr %10, align 8, !tbaa !11
  %775 = getelementptr inbounds double, ptr %773, i64 %774
  %776 = load double, ptr %775, align 8, !tbaa !14
  %777 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %25, i32 0, i32 6
  %778 = load ptr, ptr %777, align 8, !tbaa !13
  %779 = load i64, ptr %9, align 8, !tbaa !11
  %780 = getelementptr inbounds ptr, ptr %778, i64 %779
  %781 = load ptr, ptr %780, align 8, !tbaa !9
  %782 = load i64, ptr %10, align 8, !tbaa !11
  %783 = getelementptr inbounds double, ptr %781, i64 %782
  store double %776, ptr %783, align 8, !tbaa !14
  br label %784

784:                                              ; preds = %768
  %785 = load i64, ptr %10, align 8, !tbaa !11
  %786 = add nsw i64 %785, 1
  store i64 %786, ptr %10, align 8, !tbaa !11
  br label %764, !llvm.loop !48

787:                                              ; preds = %764
  %788 = load i64, ptr %9, align 8, !tbaa !11
  %789 = add nsw i64 %788, 1
  store i64 %789, ptr %10, align 8, !tbaa !11
  br label %790

790:                                              ; preds = %803, %787
  %791 = load i64, ptr %10, align 8, !tbaa !11
  %792 = load i64, ptr %6, align 8, !tbaa !11
  %793 = sub nsw i64 %792, 1
  %794 = icmp sle i64 %791, %793
  br i1 %794, label %795, label %806

795:                                              ; preds = %790
  %796 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %25, i32 0, i32 6
  %797 = load ptr, ptr %796, align 8, !tbaa !13
  %798 = load i64, ptr %9, align 8, !tbaa !11
  %799 = getelementptr inbounds ptr, ptr %797, i64 %798
  %800 = load ptr, ptr %799, align 8, !tbaa !9
  %801 = load i64, ptr %10, align 8, !tbaa !11
  %802 = getelementptr inbounds double, ptr %800, i64 %801
  store double 0.000000e+00, ptr %802, align 8, !tbaa !14
  br label %803

803:                                              ; preds = %795
  %804 = load i64, ptr %10, align 8, !tbaa !11
  %805 = add nsw i64 %804, 1
  store i64 %805, ptr %10, align 8, !tbaa !11
  br label %790, !llvm.loop !49

806:                                              ; preds = %790
  br label %807

807:                                              ; preds = %806, %762
  br label %808

808:                                              ; preds = %807
  %809 = load i64, ptr %9, align 8, !tbaa !11
  %810 = add nsw i64 %809, 1
  store i64 %810, ptr %9, align 8, !tbaa !11
  br label %711, !llvm.loop !50

811:                                              ; preds = %711
  %812 = load i8, ptr %23, align 1, !tbaa !5, !range !21, !noundef !22
  %813 = trunc i8 %812 to i1
  br i1 %813, label %814, label %821

814:                                              ; preds = %811
  %815 = load i64, ptr %6, align 8, !tbaa !11
  %816 = load i64, ptr %6, align 8, !tbaa !11
  %817 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11rmatrixgemvElldPNS_9ae_matrixElllPNS_9ae_vectorEldS3_lPNS_8ae_stateE(i64 noundef %815, i64 noundef %816, double noundef 1.000000e+00, ptr noundef %25, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %28, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %29, i64 noundef 0, ptr noundef %817)
  %818 = load i64, ptr %6, align 8, !tbaa !11
  %819 = load i64, ptr %6, align 8, !tbaa !11
  %820 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11rmatrixgemvElldPNS_9ae_matrixElllPNS_9ae_vectorEldS3_lPNS_8ae_stateE(i64 noundef %818, i64 noundef %819, double noundef 1.000000e+00, ptr noundef %25, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef %29, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %26, i64 noundef 0, ptr noundef %820)
  br label %828

821:                                              ; preds = %811
  %822 = load i64, ptr %6, align 8, !tbaa !11
  %823 = load i64, ptr %6, align 8, !tbaa !11
  %824 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11rmatrixgemvElldPNS_9ae_matrixElllPNS_9ae_vectorEldS3_lPNS_8ae_stateE(i64 noundef %822, i64 noundef %823, double noundef 1.000000e+00, ptr noundef %25, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef %28, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %29, i64 noundef 0, ptr noundef %824)
  %825 = load i64, ptr %6, align 8, !tbaa !11
  %826 = load i64, ptr %6, align 8, !tbaa !11
  %827 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11rmatrixgemvElldPNS_9ae_matrixElllPNS_9ae_vectorEldS3_lPNS_8ae_stateE(i64 noundef %825, i64 noundef %826, double noundef 1.000000e+00, ptr noundef %25, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %29, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %26, i64 noundef 0, ptr noundef %827)
  br label %828

828:                                              ; preds = %821, %814
  %829 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 4
  %830 = load ptr, ptr %829, align 8, !tbaa !13
  %831 = getelementptr inbounds double, ptr %830, i64 0
  %832 = load i64, ptr %6, align 8, !tbaa !11
  %833 = sub nsw i64 %832, 1
  %834 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %833)
  %835 = load double, ptr %22, align 8, !tbaa !14
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %831, i64 noundef 1, i64 noundef %834, double noundef %835)
  %836 = load double, ptr %22, align 8, !tbaa !14
  %837 = load ptr, ptr %4, align 8, !tbaa !9
  %838 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %836, ptr noundef %837)
  %839 = load i64, ptr %6, align 8, !tbaa !11
  %840 = load i8, ptr %23, align 1, !tbaa !5, !range !21, !noundef !22
  %841 = trunc i8 %840 to i1
  %842 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl17fblscholeskysolveEPNS_9ae_matrixEdlbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %24, double noundef %838, i64 noundef %839, i1 noundef zeroext %841, ptr noundef %26, ptr noundef %29, ptr noundef %842)
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %843

843:                                              ; preds = %863, %828
  %844 = load i64, ptr %9, align 8, !tbaa !11
  %845 = load i64, ptr %6, align 8, !tbaa !11
  %846 = sub nsw i64 %845, 1
  %847 = icmp sle i64 %844, %846
  br i1 %847, label %848, label %866

848:                                              ; preds = %843
  %849 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 4
  %850 = load ptr, ptr %849, align 8, !tbaa !13
  %851 = load i64, ptr %9, align 8, !tbaa !11
  %852 = getelementptr inbounds double, ptr %850, i64 %851
  %853 = load double, ptr %852, align 8, !tbaa !14
  %854 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %28, i32 0, i32 4
  %855 = load ptr, ptr %854, align 8, !tbaa !13
  %856 = load i64, ptr %9, align 8, !tbaa !11
  %857 = getelementptr inbounds double, ptr %855, i64 %856
  %858 = load double, ptr %857, align 8, !tbaa !14
  %859 = fsub double %853, %858
  %860 = load ptr, ptr %4, align 8, !tbaa !9
  %861 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %859, ptr noundef %860)
  %862 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %861, double noundef 5.000000e-13)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %14, i1 noundef zeroext %862, ptr noundef @.str.8, i32 noundef 23240, ptr noundef @.str.284)
  br label %863

863:                                              ; preds = %848
  %864 = load i64, ptr %9, align 8, !tbaa !11
  %865 = add nsw i64 %864, 1
  store i64 %865, ptr %9, align 8, !tbaa !11
  br label %843, !llvm.loop !51

866:                                              ; preds = %843
  br label %867

867:                                              ; preds = %866
  %868 = load i64, ptr %6, align 8, !tbaa !11
  %869 = add nsw i64 %868, 1
  store i64 %869, ptr %6, align 8, !tbaa !11
  br label %638, !llvm.loop !52

870:                                              ; preds = %638
  %871 = load i8, ptr %12, align 1, !tbaa !5, !range !21, !noundef !22
  %872 = trunc i8 %871 to i1
  br i1 %872, label %879, label %873

873:                                              ; preds = %870
  %874 = load i8, ptr %13, align 1, !tbaa !5, !range !21, !noundef !22
  %875 = trunc i8 %874 to i1
  br i1 %875, label %879, label %876

876:                                              ; preds = %873
  %877 = load i8, ptr %14, align 1, !tbaa !5, !range !21, !noundef !22
  %878 = trunc i8 %877 to i1
  br label %879

879:                                              ; preds = %876, %873, %870
  %880 = phi i1 [ true, %873 ], [ true, %870 ], [ %878, %876 ]
  %881 = zext i1 %880 to i8
  store i8 %881, ptr %11, align 1, !tbaa !5
  %882 = load i8, ptr %3, align 1, !tbaa !5, !range !21, !noundef !22
  %883 = trunc i8 %882 to i1
  br i1 %883, label %918, label %884

884:                                              ; preds = %879
  %885 = call i32 (ptr, ...) @printf(ptr noundef @.str.285)
  %886 = call i32 (ptr, ...) @printf(ptr noundef @.str.286)
  %887 = load i8, ptr %12, align 1, !tbaa !5, !range !21, !noundef !22
  %888 = trunc i8 %887 to i1
  br i1 %888, label %889, label %891

889:                                              ; preds = %884
  %890 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %893

891:                                              ; preds = %884
  %892 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %893

893:                                              ; preds = %891, %889
  %894 = call i32 (ptr, ...) @printf(ptr noundef @.str.287)
  %895 = load i8, ptr %13, align 1, !tbaa !5, !range !21, !noundef !22
  %896 = trunc i8 %895 to i1
  br i1 %896, label %897, label %899

897:                                              ; preds = %893
  %898 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %901

899:                                              ; preds = %893
  %900 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %901

901:                                              ; preds = %899, %897
  %902 = call i32 (ptr, ...) @printf(ptr noundef @.str.288)
  %903 = load i8, ptr %14, align 1, !tbaa !5, !range !21, !noundef !22
  %904 = trunc i8 %903 to i1
  br i1 %904, label %905, label %907

905:                                              ; preds = %901
  %906 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %909

907:                                              ; preds = %901
  %908 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %909

909:                                              ; preds = %907, %905
  %910 = load i8, ptr %11, align 1, !tbaa !5, !range !21, !noundef !22
  %911 = trunc i8 %910 to i1
  br i1 %911, label %912, label %914

912:                                              ; preds = %909
  %913 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %916

914:                                              ; preds = %909
  %915 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %916

916:                                              ; preds = %914, %912
  %917 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %918

918:                                              ; preds = %916, %879
  %919 = load i8, ptr %11, align 1, !tbaa !5, !range !21, !noundef !22
  %920 = trunc i8 %919 to i1
  %921 = xor i1 %920, true
  %922 = zext i1 %921 to i8
  store i8 %922, ptr %34, align 1, !tbaa !5
  %923 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %923)
  %924 = load i8, ptr %34, align 1, !tbaa !5, !range !21, !noundef !22
  %925 = trunc i8 %924 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 936, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #5
  ret i1 %925
}

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

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

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

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

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

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

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

declare noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef, double noundef, ptr 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_impl17fblscholeskysolveEPNS_9ae_matrixEdlbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef, double noundef, i64 noundef, i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef) #1

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"double", !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = distinct !{!19, !17}
!20 = distinct !{!20, !17}
!21 = !{i8 0, i8 2}
!22 = !{}
!23 = distinct !{!23, !17}
!24 = !{!25, !15, i64 144}
!25 = !{!"_ZTSN11alglib_impl14fblslincgstateE", !15, i64 0, !15, i64 8, !26, i64 16, !26, i64 80, !15, i64 144, !12, i64 152, !26, i64 160, !26, i64 224, !26, i64 288, !26, i64 352, !26, i64 416, !26, i64 480, !26, i64 544, !28, i64 608, !26, i64 872}
!26 = !{!"_ZTSN11alglib_impl9ae_vectorE", !12, i64 0, !12, i64 8, !6, i64 16, !27, i64 24, !7, i64 56}
!27 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!28 = !{!"_ZTSN11alglib_impl10rcommstateE", !29, i64 0, !26, i64 8, !26, i64 72, !26, i64 136, !26, i64 200}
!29 = !{!"int", !7, i64 0}
!30 = distinct !{!30, !17}
!31 = !{!25, !15, i64 0}
!32 = !{!25, !15, i64 8}
!33 = distinct !{!33, !17}
!34 = distinct !{!34, !17}
!35 = distinct !{!35, !17}
!36 = distinct !{!36, !17}
!37 = distinct !{!37, !17}
!38 = distinct !{!38, !17}
!39 = distinct !{!39, !17}
!40 = distinct !{!40, !17}
!41 = distinct !{!41, !17}
!42 = distinct !{!42, !17}
!43 = distinct !{!43, !17}
!44 = distinct !{!44, !17}
!45 = distinct !{!45, !17}
!46 = distinct !{!46, !17}
!47 = distinct !{!47, !17}
!48 = distinct !{!48, !17}
!49 = distinct !{!49, !17}
!50 = distinct !{!50, !17}
!51 = distinct !{!51, !17}
!52 = distinct !{!52, !17}


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

%"struct.alglib_impl::ae_frame" = type { %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon }
%union.anon = type { ptr }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::fblslincgstate" = type { double, double, %"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_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::rcommstate", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::rcommstate" = type { i32, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }

@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.284 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.285 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.286 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.287 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.288 = external hidden unnamed_addr constant [42 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

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

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

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

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

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

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #3

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #1

; 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_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #1

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

declare noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(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) #4

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z8testfblsbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) local_unnamed_addr #5 {
  %3 = alloca %"struct.alglib_impl::ae_frame", align 8
  %4 = alloca i8, align 1
  %5 = alloca %"struct.alglib_impl::ae_vector", align 8
  %6 = alloca %"struct.alglib_impl::ae_vector", align 8
  %7 = alloca %"struct.alglib_impl::ae_vector", align 8
  %8 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %9 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %10 = alloca %"struct.alglib_impl::ae_vector", align 8
  %11 = alloca %"struct.alglib_impl::ae_vector", align 8
  %12 = alloca %"struct.alglib_impl::ae_vector", align 8
  %13 = alloca %"struct.alglib_impl::ae_vector", align 8
  %14 = alloca %"struct.alglib_impl::fblslincgstate", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 936, ptr nonnull %14) #6
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %1, ptr noundef nonnull %3)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %5, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %6, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %7, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %8, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %9, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %10, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %11, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %12, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %13, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(936) %14, i8 0, i64 936, i1 false)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %5, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %6, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %7, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %8, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %9, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %10, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %11, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %12, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %13, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl20_fblslincgstate_initEPvPNS_8ae_stateEb(ptr noundef nonnull %14, ptr noundef %1, i1 noundef zeroext true)
  store i8 0, ptr %4, align 1, !tbaa !5
  %15 = getelementptr inbounds i8, ptr %8, i64 72
  %16 = getelementptr inbounds i8, ptr %10, i64 56
  %17 = getelementptr inbounds i8, ptr %12, i64 56
  %18 = getelementptr inbounds i8, ptr %11, i64 56
  %19 = getelementptr inbounds i8, ptr %7, i64 56
  %20 = getelementptr inbounds i8, ptr %14, i64 16
  %21 = getelementptr inbounds i8, ptr %14, i64 80
  %22 = getelementptr inbounds i8, ptr %14, i64 136
  %23 = getelementptr inbounds i8, ptr %14, i64 72
  %24 = getelementptr inbounds i8, ptr %6, i64 56
  %25 = getelementptr inbounds i8, ptr %14, i64 144
  %26 = getelementptr inbounds i8, ptr %14, i64 288
  %27 = getelementptr inbounds i8, ptr %14, i64 344
  %28 = getelementptr inbounds i8, ptr %14, i64 8
  br label %.preheader357

.preheader357:                                    ; preds = %2, %159
  %.0370 = phi i64 [ 1, %2 ], [ %160, %159 ]
  %.0313369 = phi i1 [ false, %2 ], [ %157, %159 ]
  %29 = add nsw i64 %.0370, -1
  br label %30

30:                                               ; preds = %.preheader357, %.critedge343
  %.0300368 = phi i64 [ 1, %.preheader357 ], [ %158, %.critedge343 ]
  %.1314367 = phi i1 [ %.0313369, %.preheader357 ], [ %157, %.critedge343 ]
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0300368, i64 noundef %.0370, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %.0370, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.0370, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %.0370, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %.0300368, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.0370, ptr noundef %1)
  br label %.preheader355

.preheader355:                                    ; preds = %30, %39
  %.0302363 = phi i64 [ 0, %30 ], [ %40, %39 ]
  br label %31

31:                                               ; preds = %.preheader355, %31
  %.0305362 = phi i64 [ 0, %.preheader355 ], [ %38, %31 ]
  %32 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %33 = call double @llvm.fmuladd.f64(double %32, double 2.000000e+00, double -1.000000e+00)
  %34 = load ptr, ptr %15, align 8, !tbaa !9
  %35 = getelementptr inbounds ptr, ptr %34, i64 %.0302363
  %36 = load ptr, ptr %35, align 8, !tbaa !10
  %37 = getelementptr inbounds double, ptr %36, i64 %.0305362
  store double %33, ptr %37, align 8, !tbaa !12
  %38 = add nuw nsw i64 %.0305362, 1
  %exitcond.not = icmp eq i64 %38, %.0370
  br i1 %exitcond.not, label %39, label %31, !llvm.loop !14

39:                                               ; preds = %31
  %40 = add nuw nsw i64 %.0302363, 1
  %exitcond411.not = icmp eq i64 %40, %.0300368
  br i1 %exitcond411.not, label %41, label %.preheader355, !llvm.loop !16

41:                                               ; preds = %39
  %42 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  br label %43

43:                                               ; preds = %41, %43
  %.1303364 = phi i64 [ 0, %41 ], [ %61, %43 ]
  %44 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %45 = call double @llvm.fmuladd.f64(double %44, double 2.000000e+00, double -1.000000e+00)
  %46 = load ptr, ptr %16, align 8, !tbaa !9
  %47 = getelementptr inbounds double, ptr %46, i64 %.1303364
  store double %45, ptr %47, align 8, !tbaa !12
  %48 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %49 = call double @llvm.fmuladd.f64(double %48, double 2.000000e+00, double -1.000000e+00)
  %50 = load ptr, ptr %17, align 8, !tbaa !9
  %51 = getelementptr inbounds double, ptr %50, i64 %.1303364
  store double %49, ptr %51, align 8, !tbaa !12
  %52 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 2, ptr noundef %1)
  %53 = shl nsw i64 %52, 1
  %54 = add nsw i64 %53, -1
  %55 = sitofp i64 %54 to double
  %56 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %57 = fadd double %56, 2.000000e+00
  %58 = fmul double %57, %55
  %59 = load ptr, ptr %18, align 8, !tbaa !9
  %60 = getelementptr inbounds double, ptr %59, i64 %.1303364
  store double %58, ptr %60, align 8, !tbaa !12
  %61 = add nuw nsw i64 %.1303364, 1
  %exitcond412.not = icmp eq i64 %61, %.0370
  br i1 %exitcond412.not, label %.preheader356.preheader, label %43, !llvm.loop !17

.preheader356.preheader:                          ; preds = %43
  %62 = add nsw i64 %.0300368, -1
  br label %.preheader356

.preheader356:                                    ; preds = %.preheader356.preheader, %.preheader356
  %.2304365 = phi i64 [ %72, %.preheader356 ], [ 0, %.preheader356.preheader ]
  %63 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 2, ptr noundef %1)
  %64 = shl nsw i64 %63, 1
  %65 = add nsw i64 %64, -1
  %66 = sitofp i64 %65 to double
  %67 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %68 = fadd double %67, 2.000000e+00
  %69 = fmul double %68, %66
  %70 = load ptr, ptr %18, align 8, !tbaa !9
  %71 = getelementptr inbounds double, ptr %70, i64 %.2304365
  store double %69, ptr %71, align 8, !tbaa !12
  %72 = add nuw nsw i64 %.2304365, 1
  %exitcond413.not = icmp eq i64 %72, %.0370
  br i1 %exitcond413.not, label %73, label %.preheader356, !llvm.loop !18

73:                                               ; preds = %.preheader356
  %74 = fadd double %42, 1.000000e-01
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %.0300368, i64 noundef %.0370, ptr noundef nonnull %8, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %11, i64 noundef 0, ptr noundef nonnull %6, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %.0370, i64 noundef %.0300368, ptr noundef nonnull %8, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %6, i64 noundef 0, ptr noundef nonnull %7, i64 noundef 0, ptr noundef %1)
  %75 = load ptr, ptr %19, align 8, !tbaa !9
  %76 = load ptr, ptr %18, align 8, !tbaa !9
  %77 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %29)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %75, i64 noundef 1, ptr noundef %76, i64 noundef 1, i64 noundef %77, double noundef %74)
  %78 = load ptr, ptr %19, align 8, !tbaa !9
  %79 = load ptr, ptr %16, align 8, !tbaa !9
  %80 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %29)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %78, i64 noundef 1, ptr noundef %79, i64 noundef 1, i64 noundef %80)
  %81 = load ptr, ptr %19, align 8, !tbaa !9
  %82 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %29)
  %83 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %81, i64 noundef 1, ptr noundef %81, i64 noundef 1, i64 noundef %82)
  %84 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %83, ptr noundef %1)
  call void @_ZN11alglib_impl12fblssolvecgxEPNS_9ae_matrixElldPNS_9ae_vectorES3_S3_PNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0300368, i64 noundef %.0370, double noundef %74, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef %1)
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %.0300368, i64 noundef %.0370, ptr noundef nonnull %8, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %11, i64 noundef 0, ptr noundef nonnull %6, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %.0370, i64 noundef %.0300368, ptr noundef nonnull %8, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %6, i64 noundef 0, ptr noundef nonnull %7, i64 noundef 0, ptr noundef %1)
  %85 = load ptr, ptr %19, align 8, !tbaa !9
  %86 = load ptr, ptr %18, align 8, !tbaa !9
  %87 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %29)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %85, i64 noundef 1, ptr noundef %86, i64 noundef 1, i64 noundef %87, double noundef %74)
  %88 = load ptr, ptr %19, align 8, !tbaa !9
  %89 = load ptr, ptr %16, align 8, !tbaa !9
  %90 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %29)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %88, i64 noundef 1, ptr noundef %89, i64 noundef 1, i64 noundef %90)
  %91 = load ptr, ptr %19, align 8, !tbaa !9
  %92 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %29)
  %93 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %91, i64 noundef 1, ptr noundef %91, i64 noundef 1, i64 noundef %92)
  %94 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %93, ptr noundef %1)
  br i1 %.1314367, label %98, label %95

95:                                               ; preds = %73
  %96 = fmul double %84, 1.000000e-03
  %97 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %94, double noundef %96)
  br label %98

98:                                               ; preds = %95, %73
  %99 = phi i1 [ true, %73 ], [ %97, %95 ]
  br label %100

100:                                              ; preds = %98, %100
  %.3366 = phi i64 [ 0, %98 ], [ %110, %100 ]
  %101 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 2, ptr noundef %1)
  %102 = shl nsw i64 %101, 1
  %103 = add nsw i64 %102, -1
  %104 = sitofp i64 %103 to double
  %105 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %106 = fadd double %105, 2.000000e+00
  %107 = fmul double %106, %104
  %108 = load ptr, ptr %18, align 8, !tbaa !9
  %109 = getelementptr inbounds double, ptr %108, i64 %.3366
  store double %107, ptr %109, align 8, !tbaa !12
  %110 = add nuw nsw i64 %.3366, 1
  %exitcond414.not = icmp eq i64 %110, %.0370
  br i1 %exitcond414.not, label %111, label %100, !llvm.loop !19

111:                                              ; preds = %100
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %.0300368, i64 noundef %.0370, ptr noundef nonnull %8, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %11, i64 noundef 0, ptr noundef nonnull %6, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %.0370, i64 noundef %.0300368, ptr noundef nonnull %8, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %6, i64 noundef 0, ptr noundef nonnull %7, i64 noundef 0, ptr noundef %1)
  %112 = load ptr, ptr %19, align 8, !tbaa !9
  %113 = load ptr, ptr %18, align 8, !tbaa !9
  %114 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %29)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %112, i64 noundef 1, ptr noundef %113, i64 noundef 1, i64 noundef %114, double noundef %74)
  %115 = load ptr, ptr %19, align 8, !tbaa !9
  %116 = load ptr, ptr %16, align 8, !tbaa !9
  %117 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %29)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %115, i64 noundef 1, ptr noundef %116, i64 noundef 1, i64 noundef %117)
  %118 = load ptr, ptr %19, align 8, !tbaa !9
  %119 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %29)
  %120 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %118, i64 noundef 1, ptr noundef %118, i64 noundef 1, i64 noundef %119)
  %121 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %120, ptr noundef %1)
  call void @_ZN11alglib_impl12fblscgcreateEPNS_9ae_vectorES1_lPNS_14fblslincgstateEPNS_8ae_stateE(ptr noundef nonnull %11, ptr noundef nonnull %10, i64 noundef %.0370, ptr noundef nonnull %14, ptr noundef %1)
  %122 = call noundef zeroext i1 @_ZN11alglib_impl15fblscgiterationEPNS_14fblslincgstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %122, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %111, %.lr.ph
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %.0300368, i64 noundef %.0370, ptr noundef nonnull %8, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %20, i64 noundef 0, ptr noundef nonnull %6, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %.0370, i64 noundef %.0300368, ptr noundef nonnull %8, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %6, i64 noundef 0, ptr noundef nonnull %21, i64 noundef 0, ptr noundef %1)
  %123 = load ptr, ptr %22, align 8, !tbaa !9
  %124 = load ptr, ptr %23, align 8, !tbaa !9
  %125 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %29)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %123, i64 noundef 1, ptr noundef %124, i64 noundef 1, i64 noundef %125, double noundef %74)
  %126 = load ptr, ptr %24, align 8, !tbaa !9
  %127 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %62)
  %128 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %126, i64 noundef 1, ptr noundef %126, i64 noundef 1, i64 noundef %127)
  %129 = load ptr, ptr %23, align 8, !tbaa !9
  %130 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %29)
  %131 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %129, i64 noundef 1, ptr noundef %129, i64 noundef 1, i64 noundef %130)
  %132 = call double @llvm.fmuladd.f64(double %74, double %131, double %128)
  store double %132, ptr %25, align 8, !tbaa !20
  %133 = call noundef zeroext i1 @_ZN11alglib_impl15fblscgiterationEPNS_14fblslincgstateEPNS_8ae_stateE(ptr noundef nonnull %14, ptr noundef %1)
  br i1 %133, label %.lr.ph, label %._crit_edge, !llvm.loop !27

._crit_edge:                                      ; preds = %.lr.ph, %111
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %.0300368, i64 noundef %.0370, ptr noundef nonnull %8, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %26, i64 noundef 0, ptr noundef nonnull %6, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl9rmatrixmvEllPNS_9ae_matrixElllPNS_9ae_vectorElS3_lPNS_8ae_stateE(i64 noundef %.0370, i64 noundef %.0300368, ptr noundef nonnull %8, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %6, i64 noundef 0, ptr noundef nonnull %7, i64 noundef 0, ptr noundef %1)
  %134 = load ptr, ptr %19, align 8, !tbaa !9
  %135 = load ptr, ptr %27, align 8, !tbaa !9
  %136 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %29)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %134, i64 noundef 1, ptr noundef %135, i64 noundef 1, i64 noundef %136, double noundef %74)
  %137 = load ptr, ptr %19, align 8, !tbaa !9
  %138 = load ptr, ptr %16, align 8, !tbaa !9
  %139 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %29)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %137, i64 noundef 1, ptr noundef %138, i64 noundef 1, i64 noundef %139)
  %140 = load ptr, ptr %19, align 8, !tbaa !9
  %141 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %29)
  %142 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %140, i64 noundef 1, ptr noundef %140, i64 noundef 1, i64 noundef %141)
  %143 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %142, ptr noundef %1)
  br i1 %99, label %.critedge343, label %144

144:                                              ; preds = %._crit_edge
  %145 = load double, ptr %14, align 8, !tbaa !28
  %146 = fsub double %121, %145
  %147 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %146, ptr noundef %1)
  %148 = fmul double %121, 5.000000e-14
  %149 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %147, double noundef %148)
  br i1 %149, label %.critedge343, label %.critedge

.critedge:                                        ; preds = %144
  %150 = load double, ptr %28, align 8, !tbaa !29
  %151 = fsub double %143, %150
  %152 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %151, ptr noundef %1)
  %153 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %152, double noundef %148)
  br i1 %153, label %.critedge343, label %154

154:                                              ; preds = %.critedge
  %155 = fmul double %121, 1.000000e-03
  %156 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %143, double noundef %155)
  br label %.critedge343

.critedge343:                                     ; preds = %144, %._crit_edge, %154, %.critedge
  %157 = phi i1 [ true, %.critedge ], [ %156, %154 ], [ true, %._crit_edge ], [ true, %144 ]
  %158 = add nuw nsw i64 %.0300368, 1
  %exitcond415.not = icmp eq i64 %158, 11
  br i1 %exitcond415.not, label %159, label %30, !llvm.loop !30

159:                                              ; preds = %.critedge343
  %160 = add nuw nsw i64 %.0370, 1
  %exitcond416.not = icmp eq i64 %160, 11
  br i1 %exitcond416.not, label %.lr.ph385, label %.preheader357, !llvm.loop !31

.lr.ph385:                                        ; preds = %159, %._crit_edge386
  %.1388 = phi i64 [ %226, %._crit_edge386 ], [ 1, %159 ]
  %.0315387 = phi i1 [ %222, %._crit_edge386 ], [ false, %159 ]
  %161 = shl nuw nsw i64 %.1388, 1
  %162 = add nsw i64 %.1388, -1
  br label %164

.preheader349:                                    ; preds = %._crit_edge386
  %163 = getelementptr inbounds i8, ptr %9, i64 72
  br label %227

164:                                              ; preds = %.lr.ph385, %224
  %indvars.iv = phi i64 [ 0, %.lr.ph385 ], [ %indvars.iv.next, %224 ]
  %.1301384 = phi i64 [ %.1388, %.lr.ph385 ], [ %225, %224 ]
  %.1316383 = phi i1 [ %.0315387, %.lr.ph385 ], [ %222, %224 ]
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.1301384, i64 noundef %.1388, ptr noundef %1)
  %165 = sub nuw nsw i64 %.1301384, %.1388
  %.not331.not372.not = icmp eq i64 %165, 0
  br i1 %.not331.not372.not, label %.preheader350.preheader, label %.preheader351

.preheader351:                                    ; preds = %164, %174
  %.4373 = phi i64 [ %175, %174 ], [ 0, %164 ]
  br label %166

166:                                              ; preds = %.preheader351, %166
  %.1306371 = phi i64 [ 0, %.preheader351 ], [ %173, %166 ]
  %167 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %168 = call double @llvm.fmuladd.f64(double %167, double 2.000000e+00, double -1.000000e+00)
  %169 = load ptr, ptr %15, align 8, !tbaa !9
  %170 = getelementptr inbounds ptr, ptr %169, i64 %.4373
  %171 = load ptr, ptr %170, align 8, !tbaa !10
  %172 = getelementptr inbounds double, ptr %171, i64 %.1306371
  store double %168, ptr %172, align 8, !tbaa !12
  %173 = add nuw nsw i64 %.1306371, 1
  %exitcond417.not = icmp eq i64 %173, %.1388
  br i1 %exitcond417.not, label %174, label %166, !llvm.loop !32

174:                                              ; preds = %166
  %175 = add nuw nsw i64 %.4373, 1
  %exitcond418.not = icmp eq i64 %175, %indvars.iv
  br i1 %exitcond418.not, label %.preheader350.preheader, label %.preheader351, !llvm.loop !33

.preheader350.preheader:                          ; preds = %174, %164
  br label %.preheader350

.preheader350:                                    ; preds = %.preheader350.preheader, %185
  %.5376 = phi i64 [ %191, %185 ], [ %165, %.preheader350.preheader ]
  br label %176

176:                                              ; preds = %.preheader350, %176
  %.2307374 = phi i64 [ 0, %.preheader350 ], [ %184, %176 ]
  %177 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %178 = call double @llvm.fmuladd.f64(double %177, double 2.000000e+00, double -1.000000e+00)
  %179 = fmul double %178, 1.000000e-02
  %180 = load ptr, ptr %15, align 8, !tbaa !9
  %181 = getelementptr inbounds ptr, ptr %180, i64 %.5376
  %182 = load ptr, ptr %181, align 8, !tbaa !10
  %183 = getelementptr inbounds double, ptr %182, i64 %.2307374
  store double %179, ptr %183, align 8, !tbaa !12
  %184 = add nuw nsw i64 %.2307374, 1
  %exitcond419.not = icmp eq i64 %184, %.1388
  br i1 %exitcond419.not, label %185, label %176, !llvm.loop !34

185:                                              ; preds = %176
  %186 = load ptr, ptr %15, align 8, !tbaa !9
  %187 = getelementptr inbounds ptr, ptr %186, i64 %.5376
  %188 = load ptr, ptr %187, align 8, !tbaa !10
  %189 = sub nuw nsw i64 %.5376, %165
  %190 = getelementptr inbounds double, ptr %188, i64 %189
  store double 1.000000e+00, ptr %190, align 8, !tbaa !12
  %191 = add nuw nsw i64 %.5376, 1
  %exitcond420.not = icmp eq i64 %191, %.1301384
  br i1 %exitcond420.not, label %._crit_edge377, label %.preheader350, !llvm.loop !35

._crit_edge377:                                   ; preds = %185
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %.1388, ptr noundef %1)
  br label %192

192:                                              ; preds = %._crit_edge377, %192
  %.6378 = phi i64 [ 0, %._crit_edge377 ], [ %197, %192 ]
  %193 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %194 = call double @llvm.fmuladd.f64(double %193, double 2.000000e+00, double -1.000000e+00)
  %195 = load ptr, ptr %17, align 8, !tbaa !9
  %196 = getelementptr inbounds double, ptr %195, i64 %.6378
  store double %194, ptr %196, align 8, !tbaa !12
  %197 = add nuw nsw i64 %.6378, 1
  %exitcond421.not = icmp eq i64 %197, %.1388
  br i1 %exitcond421.not, label %198, label %192, !llvm.loop !36

198:                                              ; preds = %192
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %.1301384, ptr noundef %1)
  br label %199

199:                                              ; preds = %198, %199
  %.7379 = phi i64 [ 0, %198 ], [ %208, %199 ]
  %200 = load ptr, ptr %15, align 8, !tbaa !9
  %201 = getelementptr inbounds ptr, ptr %200, i64 %.7379
  %202 = load ptr, ptr %201, align 8, !tbaa !10
  %203 = load ptr, ptr %17, align 8, !tbaa !9
  %204 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %162)
  %205 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %202, i64 noundef 1, ptr noundef %203, i64 noundef 1, i64 noundef %204)
  %206 = load ptr, ptr %16, align 8, !tbaa !9
  %207 = getelementptr inbounds double, ptr %206, i64 %.7379
  store double %205, ptr %207, align 8, !tbaa !12
  %208 = add nuw nsw i64 %.7379, 1
  %exitcond422.not = icmp eq i64 %208, %.1301384
  br i1 %exitcond422.not, label %209, label %199, !llvm.loop !37

209:                                              ; preds = %199
  call void @_ZN11alglib_impl11fblssolvelsEPNS_9ae_matrixEPNS_9ae_vectorEllS3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %8, ptr noundef nonnull %10, i64 noundef %.1301384, i64 noundef %.1388, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef %1)
  br label %210

210:                                              ; preds = %209, %221
  %.8381 = phi i64 [ 0, %209 ], [ %223, %221 ]
  %.2317380 = phi i1 [ %.1316383, %209 ], [ %222, %221 ]
  br i1 %.2317380, label %221, label %211

211:                                              ; preds = %210
  %212 = load ptr, ptr %16, align 8, !tbaa !9
  %213 = getelementptr inbounds double, ptr %212, i64 %.8381
  %214 = load double, ptr %213, align 8, !tbaa !12
  %215 = load ptr, ptr %17, align 8, !tbaa !9
  %216 = getelementptr inbounds double, ptr %215, i64 %.8381
  %217 = load double, ptr %216, align 8, !tbaa !12
  %218 = fsub double %214, %217
  %219 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %218, ptr noundef %1)
  %220 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %219, double noundef 0x3EB0C6F7A0B5ED8D)
  br label %221

221:                                              ; preds = %211, %210
  %222 = phi i1 [ true, %210 ], [ %220, %211 ]
  %223 = add nuw nsw i64 %.8381, 1
  %exitcond423.not = icmp eq i64 %223, %.1388
  br i1 %exitcond423.not, label %224, label %210, !llvm.loop !38

224:                                              ; preds = %221
  %225 = add nuw nsw i64 %.1301384, 1
  %.not330.not = icmp ult i64 %.1301384, %161
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  br i1 %.not330.not, label %164, label %._crit_edge386, !llvm.loop !39

._crit_edge386:                                   ; preds = %224
  %226 = add nuw nsw i64 %.1388, 1
  %exitcond424.not = icmp eq i64 %226, 6
  br i1 %exitcond424.not, label %.preheader349, label %.lr.ph385, !llvm.loop !40

227:                                              ; preds = %.preheader349, %343
  %.2406 = phi i64 [ 1, %.preheader349 ], [ %344, %343 ]
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.2406, i64 noundef %.2406, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.2406, i64 noundef %.2406, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %.2406, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %.2406, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %.2406, ptr noundef %1)
  br label %.preheader348

.preheader348:                                    ; preds = %227, %237
  %.9390 = phi i64 [ 0, %227 ], [ %248, %237 ]
  br label %228

228:                                              ; preds = %.preheader348, %228
  %.3308389 = phi i64 [ 0, %.preheader348 ], [ %236, %228 ]
  %229 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %230 = fadd double %229, -5.000000e-01
  %231 = fmul double %230, 1.000000e-02
  %232 = load ptr, ptr %15, align 8, !tbaa !9
  %233 = getelementptr inbounds ptr, ptr %232, i64 %.9390
  %234 = load ptr, ptr %233, align 8, !tbaa !10
  %235 = getelementptr inbounds double, ptr %234, i64 %.3308389
  store double %231, ptr %235, align 8, !tbaa !12
  %236 = add nuw nsw i64 %.3308389, 1
  %exitcond425.not = icmp eq i64 %236, %.2406
  br i1 %exitcond425.not, label %237, label %228, !llvm.loop !41

237:                                              ; preds = %228
  %238 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %239 = fadd double %238, 1.000000e+00
  %240 = load ptr, ptr %15, align 8, !tbaa !9
  %241 = getelementptr inbounds ptr, ptr %240, i64 %.9390
  %242 = load ptr, ptr %241, align 8, !tbaa !10
  %243 = getelementptr inbounds double, ptr %242, i64 %.9390
  store double %239, ptr %243, align 8, !tbaa !12
  %244 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %245 = fadd double %244, -5.000000e-01
  %246 = load ptr, ptr %17, align 8, !tbaa !9
  %247 = getelementptr inbounds double, ptr %246, i64 %.9390
  store double %245, ptr %247, align 8, !tbaa !12
  %248 = add nuw nsw i64 %.9390, 1
  %exitcond426.not = icmp eq i64 %248, %.2406
  br i1 %exitcond426.not, label %249, label %.preheader348, !llvm.loop !42

249:                                              ; preds = %237
  %250 = add nsw i64 %.2406, -1
  %251 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %252 = call double @llvm.fmuladd.f64(double %251, double 4.000000e+00, double -2.000000e+00)
  %253 = call noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef 1.000000e+01, double noundef %252, ptr noundef %1)
  %254 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %255 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %254, double noundef 5.000000e-01)
  br i1 %255, label %.preheader344.us, label %.preheader347

.preheader344.us:                                 ; preds = %249, %.loopexit.us
  %.10401.us = phi i64 [ %292, %.loopexit.us ], [ 0, %249 ]
  %.not327.not395.us.not = icmp eq i64 %.10401.us, 0
  br i1 %.not327.not395.us.not, label %.lr.ph400.us.preheader, label %.lr.ph397.us.preheader

.lr.ph397.us.preheader:                           ; preds = %.preheader344.us
  %xtraiter445 = and i64 %.10401.us, 3
  %256 = icmp ult i64 %.10401.us, 4
  br i1 %256, label %.lr.ph400.us.preheader.loopexit.unr-lcssa, label %.lr.ph397.us.preheader.new

.lr.ph397.us.preheader.new:                       ; preds = %.lr.ph397.us.preheader
  %unroll_iter447 = and i64 %.10401.us, 9223372036854775804
  br label %.lr.ph397.us

.lr.ph400.us.preheader.loopexit.unr-lcssa:        ; preds = %.lr.ph397.us, %.lr.ph397.us.preheader
  %.4309396.us.unr = phi i64 [ 0, %.lr.ph397.us.preheader ], [ %291, %.lr.ph397.us ]
  %lcmp.mod446.not = icmp eq i64 %xtraiter445, 0
  br i1 %lcmp.mod446.not, label %.lr.ph400.us.preheader, label %.lr.ph397.us.epil

.lr.ph397.us.epil:                                ; preds = %.lr.ph400.us.preheader.loopexit.unr-lcssa, %.lr.ph397.us.epil
  %.4309396.us.epil = phi i64 [ %261, %.lr.ph397.us.epil ], [ %.4309396.us.unr, %.lr.ph400.us.preheader.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph397.us.epil ], [ 0, %.lr.ph400.us.preheader.loopexit.unr-lcssa ]
  %257 = load ptr, ptr %163, align 8, !tbaa !9
  %258 = getelementptr inbounds ptr, ptr %257, i64 %.10401.us
  %259 = load ptr, ptr %258, align 8, !tbaa !10
  %260 = getelementptr inbounds double, ptr %259, i64 %.4309396.us.epil
  store double 0.000000e+00, ptr %260, align 8, !tbaa !12
  %261 = add nuw nsw i64 %.4309396.us.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter445
  br i1 %epil.iter.cmp.not, label %.lr.ph400.us.preheader, label %.lr.ph397.us.epil, !llvm.loop !43

.lr.ph400.us.preheader:                           ; preds = %.lr.ph400.us.preheader.loopexit.unr-lcssa, %.lr.ph397.us.epil, %.preheader344.us
  br label %.lr.ph400.us

.lr.ph400.us:                                     ; preds = %.lr.ph400.us.preheader, %.lr.ph400.us
  %.5310399.us = phi i64 [ %271, %.lr.ph400.us ], [ %.10401.us, %.lr.ph400.us.preheader ]
  %262 = load ptr, ptr %15, align 8, !tbaa !9
  %263 = getelementptr inbounds ptr, ptr %262, i64 %.10401.us
  %264 = load ptr, ptr %263, align 8, !tbaa !10
  %265 = getelementptr inbounds double, ptr %264, i64 %.5310399.us
  %266 = load double, ptr %265, align 8, !tbaa !12
  %267 = load ptr, ptr %163, align 8, !tbaa !9
  %268 = getelementptr inbounds ptr, ptr %267, i64 %.10401.us
  %269 = load ptr, ptr %268, align 8, !tbaa !10
  %270 = getelementptr inbounds double, ptr %269, i64 %.5310399.us
  store double %266, ptr %270, align 8, !tbaa !12
  %271 = add nuw nsw i64 %.5310399.us, 1
  %.not328.not.us = icmp ult i64 %271, %.2406
  br i1 %.not328.not.us, label %.lr.ph400.us, label %.loopexit.us, !llvm.loop !45

.lr.ph397.us:                                     ; preds = %.lr.ph397.us, %.lr.ph397.us.preheader.new
  %.4309396.us = phi i64 [ 0, %.lr.ph397.us.preheader.new ], [ %291, %.lr.ph397.us ]
  %niter448 = phi i64 [ 0, %.lr.ph397.us.preheader.new ], [ %niter448.next.3, %.lr.ph397.us ]
  %272 = load ptr, ptr %163, align 8, !tbaa !9
  %273 = getelementptr inbounds ptr, ptr %272, i64 %.10401.us
  %274 = load ptr, ptr %273, align 8, !tbaa !10
  %275 = getelementptr inbounds double, ptr %274, i64 %.4309396.us
  store double 0.000000e+00, ptr %275, align 8, !tbaa !12
  %276 = or disjoint i64 %.4309396.us, 1
  %277 = load ptr, ptr %163, align 8, !tbaa !9
  %278 = getelementptr inbounds ptr, ptr %277, i64 %.10401.us
  %279 = load ptr, ptr %278, align 8, !tbaa !10
  %280 = getelementptr inbounds double, ptr %279, i64 %276
  store double 0.000000e+00, ptr %280, align 8, !tbaa !12
  %281 = or disjoint i64 %.4309396.us, 2
  %282 = load ptr, ptr %163, align 8, !tbaa !9
  %283 = getelementptr inbounds ptr, ptr %282, i64 %.10401.us
  %284 = load ptr, ptr %283, align 8, !tbaa !10
  %285 = getelementptr inbounds double, ptr %284, i64 %281
  store double 0.000000e+00, ptr %285, align 8, !tbaa !12
  %286 = or disjoint i64 %.4309396.us, 3
  %287 = load ptr, ptr %163, align 8, !tbaa !9
  %288 = getelementptr inbounds ptr, ptr %287, i64 %.10401.us
  %289 = load ptr, ptr %288, align 8, !tbaa !10
  %290 = getelementptr inbounds double, ptr %289, i64 %286
  store double 0.000000e+00, ptr %290, align 8, !tbaa !12
  %291 = add nuw nsw i64 %.4309396.us, 4
  %niter448.next.3 = add i64 %niter448, 4
  %niter448.ncmp.3 = icmp eq i64 %niter448.next.3, %unroll_iter447
  br i1 %niter448.ncmp.3, label %.lr.ph400.us.preheader.loopexit.unr-lcssa, label %.lr.ph397.us, !llvm.loop !46

.loopexit.us:                                     ; preds = %.lr.ph400.us
  %292 = add nuw nsw i64 %.10401.us, 1
  %exitcond432.not = icmp eq i64 %292, %.2406
  br i1 %exitcond432.not, label %.split404.us, label %.preheader344.us, !llvm.loop !47

.preheader347:                                    ; preds = %249, %.loopexit346
  %indvars.iv427 = phi i64 [ %indvars.iv.next428, %.loopexit346 ], [ 1, %249 ]
  %.10401 = phi i64 [ %328, %.loopexit346 ], [ 0, %249 ]
  %xtraiter = and i64 %indvars.iv427, 1
  %293 = icmp eq i64 %.10401, 0
  br i1 %293, label %.preheader345.unr-lcssa, label %.preheader347.new

.preheader347.new:                                ; preds = %.preheader347
  %unroll_iter = and i64 %indvars.iv427, 9223372036854775806
  br label %303

.preheader345.unr-lcssa:                          ; preds = %303, %.preheader347
  %.6311391.unr = phi i64 [ 0, %.preheader347 ], [ %323, %303 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader345, label %.preheader345.epilog-lcssa

.preheader345.epilog-lcssa:                       ; preds = %.preheader345.unr-lcssa
  %294 = load ptr, ptr %15, align 8, !tbaa !9
  %295 = getelementptr inbounds ptr, ptr %294, i64 %.10401
  %296 = load ptr, ptr %295, align 8, !tbaa !10
  %297 = getelementptr inbounds double, ptr %296, i64 %.6311391.unr
  %298 = load double, ptr %297, align 8, !tbaa !12
  %299 = load ptr, ptr %163, align 8, !tbaa !9
  %300 = getelementptr inbounds ptr, ptr %299, i64 %.10401
  %301 = load ptr, ptr %300, align 8, !tbaa !10
  %302 = getelementptr inbounds double, ptr %301, i64 %.6311391.unr
  store double %298, ptr %302, align 8, !tbaa !12
  br label %.preheader345

.preheader345:                                    ; preds = %.preheader345.unr-lcssa, %.preheader345.epilog-lcssa
  %.not326.not392 = icmp ult i64 %.10401, %250
  br i1 %.not326.not392, label %.lr.ph394, label %.loopexit346

303:                                              ; preds = %303, %.preheader347.new
  %.6311391 = phi i64 [ 0, %.preheader347.new ], [ %323, %303 ]
  %niter = phi i64 [ 0, %.preheader347.new ], [ %niter.next.1, %303 ]
  %304 = load ptr, ptr %15, align 8, !tbaa !9
  %305 = getelementptr inbounds ptr, ptr %304, i64 %.10401
  %306 = load ptr, ptr %305, align 8, !tbaa !10
  %307 = getelementptr inbounds double, ptr %306, i64 %.6311391
  %308 = load double, ptr %307, align 8, !tbaa !12
  %309 = load ptr, ptr %163, align 8, !tbaa !9
  %310 = getelementptr inbounds ptr, ptr %309, i64 %.10401
  %311 = load ptr, ptr %310, align 8, !tbaa !10
  %312 = getelementptr inbounds double, ptr %311, i64 %.6311391
  store double %308, ptr %312, align 8, !tbaa !12
  %313 = or disjoint i64 %.6311391, 1
  %314 = load ptr, ptr %15, align 8, !tbaa !9
  %315 = getelementptr inbounds ptr, ptr %314, i64 %.10401
  %316 = load ptr, ptr %315, align 8, !tbaa !10
  %317 = getelementptr inbounds double, ptr %316, i64 %313
  %318 = load double, ptr %317, align 8, !tbaa !12
  %319 = load ptr, ptr %163, align 8, !tbaa !9
  %320 = getelementptr inbounds ptr, ptr %319, i64 %.10401
  %321 = load ptr, ptr %320, align 8, !tbaa !10
  %322 = getelementptr inbounds double, ptr %321, i64 %313
  store double %318, ptr %322, align 8, !tbaa !12
  %323 = add nuw nsw i64 %.6311391, 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 %.preheader345.unr-lcssa, label %303, !llvm.loop !48

.lr.ph394:                                        ; preds = %.preheader345, %.lr.ph394
  %.7312.in393 = phi i64 [ %.7312, %.lr.ph394 ], [ %.10401, %.preheader345 ]
  %.7312 = add nuw nsw i64 %.7312.in393, 1
  %324 = load ptr, ptr %163, align 8, !tbaa !9
  %325 = getelementptr inbounds ptr, ptr %324, i64 %.10401
  %326 = load ptr, ptr %325, align 8, !tbaa !10
  %327 = getelementptr inbounds double, ptr %326, i64 %.7312
  store double 0.000000e+00, ptr %327, align 8, !tbaa !12
  %.not326.not = icmp ult i64 %.7312, %250
  br i1 %.not326.not, label %.lr.ph394, label %.loopexit346, !llvm.loop !49

.loopexit346:                                     ; preds = %.lr.ph394, %.preheader345
  %328 = add nuw nsw i64 %.10401, 1
  %indvars.iv.next428 = add nuw nsw i64 %indvars.iv427, 1
  %exitcond430.not = icmp eq i64 %328, %.2406
  br i1 %exitcond430.not, label %.split404.us, label %.preheader347, !llvm.loop !47

.split404.us:                                     ; preds = %.loopexit346, %.loopexit.us
  %not. = xor i1 %255, true
  %. = zext i1 %not. to i64
  %.440 = zext i1 %255 to i64
  call void @_ZN11alglib_impl11rmatrixgemvElldPNS_9ae_matrixElllPNS_9ae_vectorEldS3_lPNS_8ae_stateE(i64 noundef %.2406, i64 noundef %.2406, double noundef 1.000000e+00, ptr noundef nonnull %9, i64 noundef 0, i64 noundef 0, i64 noundef %., ptr noundef nonnull %12, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %13, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl11rmatrixgemvElldPNS_9ae_matrixElllPNS_9ae_vectorEldS3_lPNS_8ae_stateE(i64 noundef %.2406, i64 noundef %.2406, double noundef 1.000000e+00, ptr noundef nonnull %9, i64 noundef 0, i64 noundef 0, i64 noundef %.440, ptr noundef nonnull %13, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %10, i64 noundef 0, ptr noundef %1)
  %329 = load ptr, ptr %16, align 8, !tbaa !9
  %330 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %250)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %329, i64 noundef 1, i64 noundef %330, double noundef %253)
  %331 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %253, ptr noundef %1)
  call void @_ZN11alglib_impl17fblscholeskysolveEPNS_9ae_matrixEdlbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %8, double noundef %331, i64 noundef %.2406, i1 noundef zeroext %255, ptr noundef nonnull %10, ptr noundef nonnull %13, ptr noundef %1)
  br label %332

332:                                              ; preds = %.split404.us, %332
  %.11405 = phi i64 [ 0, %.split404.us ], [ %342, %332 ]
  %333 = load ptr, ptr %16, align 8, !tbaa !9
  %334 = getelementptr inbounds double, ptr %333, i64 %.11405
  %335 = load double, ptr %334, align 8, !tbaa !12
  %336 = load ptr, ptr %17, align 8, !tbaa !9
  %337 = getelementptr inbounds double, ptr %336, i64 %.11405
  %338 = load double, ptr %337, align 8, !tbaa !12
  %339 = fsub double %335, %338
  %340 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %339, ptr noundef %1)
  %341 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %340, double noundef 5.000000e-13)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %4, i1 noundef zeroext %341, ptr noundef nonnull @.str.8, i32 noundef 23240, ptr noundef nonnull @.str.284)
  %342 = add nuw nsw i64 %.11405, 1
  %exitcond433.not = icmp eq i64 %342, %.2406
  br i1 %exitcond433.not, label %343, label %332, !llvm.loop !50

343:                                              ; preds = %332
  %344 = add nuw nsw i64 %.2406, 1
  %exitcond434.not = icmp eq i64 %344, 31
  br i1 %exitcond434.not, label %345, label %227, !llvm.loop !51

345:                                              ; preds = %343
  %brmerge = or i1 %157, %222
  br i1 %brmerge, label %349, label %346

346:                                              ; preds = %345
  %347 = load i8, ptr %4, align 1, !tbaa !5, !range !52, !noundef !53
  %348 = trunc nuw i8 %347 to i1
  br label %349

349:                                              ; preds = %345, %346
  %350 = phi i1 [ true, %345 ], [ %348, %346 ]
  br i1 %0, label %363, label %351

351:                                              ; preds = %349
  %352 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.285)
  %353 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.286)
  %.str.7..str.6 = select i1 %157, ptr @.str.7, ptr @.str.6
  %354 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7..str.6)
  %355 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.287)
  %.str.6.sink438 = select i1 %222, ptr @.str.7, ptr @.str.6
  %356 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink438)
  %357 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.288)
  %358 = load i8, ptr %4, align 1, !tbaa !5, !range !52, !noundef !53
  %359 = trunc nuw i8 %358 to i1
  %.str.6.sink439 = select i1 %359, ptr @.str.7, ptr @.str.6
  %360 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.6.sink439)
  %.str.2.sink = select i1 %350, ptr @.str.1, ptr @.str.2
  %361 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink)
  %362 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  br label %363

363:                                              ; preds = %351, %349
  %364 = xor i1 %350, true
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 936, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #6
  ret i1 %364
}

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

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

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

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

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

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

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

declare noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef, double noundef, ptr 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_impl17fblscholeskysolveEPNS_9ae_matrixEdlbPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef, double noundef, i64 noundef, i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"any pointer", !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"double", !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15}
!19 = distinct !{!19, !15}
!20 = !{!21, !13, i64 144}
!21 = !{!"_ZTSN11alglib_impl14fblslincgstateE", !13, i64 0, !13, i64 8, !22, i64 16, !22, i64 80, !13, i64 144, !23, i64 152, !22, i64 160, !22, i64 224, !22, i64 288, !22, i64 352, !22, i64 416, !22, i64 480, !22, i64 544, !25, i64 608, !22, i64 872}
!22 = !{!"_ZTSN11alglib_impl9ae_vectorE", !23, i64 0, !23, i64 8, !6, i64 16, !24, i64 24, !7, i64 56}
!23 = !{!"long", !7, i64 0}
!24 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24}
!25 = !{!"_ZTSN11alglib_impl10rcommstateE", !26, i64 0, !22, i64 8, !22, i64 72, !22, i64 136, !22, i64 200}
!26 = !{!"int", !7, i64 0}
!27 = distinct !{!27, !15}
!28 = !{!21, !13, i64 0}
!29 = !{!21, !13, i64 8}
!30 = distinct !{!30, !15}
!31 = distinct !{!31, !15}
!32 = distinct !{!32, !15}
!33 = distinct !{!33, !15}
!34 = distinct !{!34, !15}
!35 = distinct !{!35, !15}
!36 = distinct !{!36, !15}
!37 = distinct !{!37, !15}
!38 = distinct !{!38, !15}
!39 = distinct !{!39, !15}
!40 = distinct !{!40, !15}
!41 = distinct !{!41, !15}
!42 = distinct !{!42, !15}
!43 = distinct !{!43, !44}
!44 = !{!"llvm.loop.unroll.disable"}
!45 = distinct !{!45, !15}
!46 = distinct !{!46, !15}
!47 = distinct !{!47, !15}
!48 = distinct !{!48, !15}
!49 = distinct !{!49, !15}
!50 = distinct !{!50, !15}
!51 = distinct !{!51, !15}
!52 = !{i8 0, i8 2}
!53 = !{}


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