; LLVM IR from Dimandragon/non-parametric-dsp :: 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.2 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.487 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.488 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.489 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.490 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.491 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.492 = 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 i32 @printf(ptr noundef, ...) #1

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

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

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

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

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

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

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

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

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) #3

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

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

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

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

declare noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef) #1

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #1

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

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

declare void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef, i64 noundef, i64 noundef, double 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 i8, align 1
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca %"struct.alglib_impl::ae_vector", align 8
  %21 = alloca %"struct.alglib_impl::ae_vector", align 8
  %22 = alloca %"struct.alglib_impl::ae_vector", align 8
  %23 = alloca double, align 8
  %24 = alloca i8, align 1
  %25 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %26 = alloca %"struct.alglib_impl::ae_matrix", 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 %"struct.alglib_impl::ae_vector", align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca %"struct.alglib_impl::fblslincgstate", align 8
  %35 = alloca i8, align 1
  %36 = zext i1 %0 to i8
  store i8 %36, 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 1, 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 8, 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 64, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 80, 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 64, 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 8, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 936, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #5
  %37 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %37, ptr noundef %5)
  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 %22, i8 0, i64 64, 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 80, 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 %30, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %34, i8 0, i64 936, i1 false)
  %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_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %22, 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_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %26, i64 noundef 0, 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_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %30, i64 noundef 0, i64 noundef 3, ptr noundef %46, i1 noundef zeroext true)
  %47 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20_fblslincgstate_initEPvPNS_8ae_stateEb(ptr noundef %34, ptr noundef %47, 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 i8 0, ptr %15, align 1, !tbaa !5
  %48 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testfblsunit_testgmresPbPN11alglib_impl8ae_stateE(ptr noundef %15, ptr noundef %48)
  store i64 1, ptr %6, align 8, !tbaa !11
  br label %49

49:                                               ; preds = %454, %2
  %50 = load i64, ptr %6, align 8, !tbaa !11
  %51 = load i64, ptr %8, align 8, !tbaa !11
  %52 = icmp sle i64 %50, %51
  br i1 %52, label %53, label %457

53:                                               ; preds = %49
  store i64 1, ptr %7, align 8, !tbaa !11
  br label %54

54:                                               ; preds = %450, %53
  %55 = load i64, ptr %7, align 8, !tbaa !11
  %56 = load i64, ptr %8, align 8, !tbaa !11
  %57 = icmp sle i64 %55, %56
  br i1 %57, label %58, label %453

58:                                               ; preds = %54
  %59 = load i64, ptr %7, align 8, !tbaa !11
  %60 = load i64, ptr %6, align 8, !tbaa !11
  %61 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %25, i64 noundef %59, 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 %6, 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 %29, i64 noundef %66, ptr noundef %67)
  %68 = load i64, ptr %7, 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)
  %70 = load i64, ptr %6, align 8, !tbaa !11
  %71 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %22, i64 noundef %70, ptr noundef %71)
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %72

72:                                               ; preds = %98, %58
  %73 = load i64, ptr %9, align 8, !tbaa !11
  %74 = load i64, ptr %7, align 8, !tbaa !11
  %75 = sub nsw i64 %74, 1
  %76 = icmp sle i64 %73, %75
  br i1 %76, label %77, label %101

77:                                               ; preds = %72
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %78

78:                                               ; preds = %94, %77
  %79 = load i64, ptr %10, align 8, !tbaa !11
  %80 = load i64, ptr %6, align 8, !tbaa !11
  %81 = sub nsw i64 %80, 1
  %82 = icmp sle i64 %79, %81
  br i1 %82, label %83, label %97

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

94:                                               ; preds = %83
  %95 = load i64, ptr %10, align 8, !tbaa !11
  %96 = add nsw i64 %95, 1
  store i64 %96, ptr %10, align 8, !tbaa !11
  br label %78, !llvm.loop !16

97:                                               ; preds = %78
  br label %98

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

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

105:                                              ; preds = %138, %101
  %106 = load i64, ptr %9, align 8, !tbaa !11
  %107 = load i64, ptr %6, align 8, !tbaa !11
  %108 = sub nsw i64 %107, 1
  %109 = icmp sle i64 %106, %108
  br i1 %109, label %110, label %141

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

138:                                              ; preds = %110
  %139 = load i64, ptr %9, align 8, !tbaa !11
  %140 = add nsw i64 %139, 1
  store i64 %140, ptr %9, align 8, !tbaa !11
  br label %105, !llvm.loop !19

141:                                              ; preds = %105
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %142

142:                                              ; preds = %161, %141
  %143 = load i64, ptr %9, align 8, !tbaa !11
  %144 = load i64, ptr %6, align 8, !tbaa !11
  %145 = sub nsw i64 %144, 1
  %146 = icmp sle i64 %143, %145
  br i1 %146, label %147, label %164

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

161:                                              ; preds = %147
  %162 = load i64, ptr %9, align 8, !tbaa !11
  %163 = add nsw i64 %162, 1
  store i64 %163, ptr %9, align 8, !tbaa !11
  br label %142, !llvm.loop !20

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

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

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

255:                                              ; preds = %274, %252
  %256 = load i64, ptr %9, align 8, !tbaa !11
  %257 = load i64, ptr %6, align 8, !tbaa !11
  %258 = sub nsw i64 %257, 1
  %259 = icmp sle i64 %256, %258
  br i1 %259, label %260, label %277

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

274:                                              ; preds = %260
  %275 = load i64, ptr %9, align 8, !tbaa !11
  %276 = add nsw i64 %275, 1
  store i64 %276, ptr %9, align 8, !tbaa !11
  br label %255, !llvm.loop !23

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

318:                                              ; preds = %321, %277
  %319 = load ptr, ptr %4, align 8, !tbaa !9
  %320 = call noundef zeroext i1 @_ZN11alglib_impl15fblscgiterationEPNS_14fblslincgstateEPNS_8ae_stateE(ptr noundef %34, ptr noundef %319)
  br i1 %320, label %321, label %369

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

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

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

422:                                              ; preds = %412, %369
  %423 = phi i1 [ true, %369 ], [ %421, %412 ]
  %424 = zext i1 %423 to i8
  store i8 %424, ptr %12, align 1, !tbaa !5
  %425 = load i8, ptr %12, align 1, !tbaa !5, !range !21, !noundef !22
  %426 = trunc i8 %425 to i1
  br i1 %426, label %437, label %427

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

437:                                              ; preds = %427, %422
  %438 = phi i1 [ true, %422 ], [ %436, %427 ]
  %439 = zext i1 %438 to i8
  store i8 %439, ptr %12, align 1, !tbaa !5
  %440 = load i8, ptr %12, align 1, !tbaa !5, !range !21, !noundef !22
  %441 = trunc i8 %440 to i1
  br i1 %441, label %447, label %442

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

447:                                              ; preds = %442, %437
  %448 = phi i1 [ true, %437 ], [ %446, %442 ]
  %449 = zext i1 %448 to i8
  store i8 %449, ptr %12, align 1, !tbaa !5
  br label %450

450:                                              ; preds = %447
  %451 = load i64, ptr %7, align 8, !tbaa !11
  %452 = add nsw i64 %451, 1
  store i64 %452, ptr %7, align 8, !tbaa !11
  br label %54, !llvm.loop !33

453:                                              ; preds = %54
  br label %454

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

457:                                              ; preds = %49
  store double 0x3EB0C6F7A0B5ED8D, ptr %16, align 8, !tbaa !14
  store i64 1, ptr %6, align 8, !tbaa !11
  br label %458

458:                                              ; preds = %636, %457
  %459 = load i64, ptr %6, align 8, !tbaa !11
  %460 = icmp sle i64 %459, 5
  br i1 %460, label %461, label %639

461:                                              ; preds = %458
  %462 = load i64, ptr %6, align 8, !tbaa !11
  store i64 %462, ptr %7, align 8, !tbaa !11
  br label %463

463:                                              ; preds = %632, %461
  %464 = load i64, ptr %7, align 8, !tbaa !11
  %465 = load i64, ptr %6, align 8, !tbaa !11
  %466 = mul nsw i64 2, %465
  %467 = icmp sle i64 %464, %466
  br i1 %467, label %468, label %635

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

472:                                              ; preds = %500, %468
  %473 = load i64, ptr %9, align 8, !tbaa !11
  %474 = load i64, ptr %7, align 8, !tbaa !11
  %475 = load i64, ptr %6, align 8, !tbaa !11
  %476 = sub nsw i64 %474, %475
  %477 = sub nsw i64 %476, 1
  %478 = icmp sle i64 %473, %477
  br i1 %478, label %479, label %503

479:                                              ; preds = %472
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %480

480:                                              ; preds = %496, %479
  %481 = load i64, ptr %10, align 8, !tbaa !11
  %482 = load i64, ptr %6, align 8, !tbaa !11
  %483 = sub nsw i64 %482, 1
  %484 = icmp sle i64 %481, %483
  br i1 %484, label %485, label %499

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

496:                                              ; preds = %485
  %497 = load i64, ptr %10, align 8, !tbaa !11
  %498 = add nsw i64 %497, 1
  store i64 %498, ptr %10, align 8, !tbaa !11
  br label %480, !llvm.loop !35

499:                                              ; preds = %480
  br label %500

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

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

507:                                              ; preds = %545, %503
  %508 = load i64, ptr %9, align 8, !tbaa !11
  %509 = load i64, ptr %7, align 8, !tbaa !11
  %510 = sub nsw i64 %509, 1
  %511 = icmp sle i64 %508, %510
  br i1 %511, label %512, label %548

512:                                              ; preds = %507
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %513

513:                                              ; preds = %530, %512
  %514 = load i64, ptr %10, align 8, !tbaa !11
  %515 = load i64, ptr %6, align 8, !tbaa !11
  %516 = sub nsw i64 %515, 1
  %517 = icmp sle i64 %514, %516
  br i1 %517, label %518, label %533

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

530:                                              ; preds = %518
  %531 = load i64, ptr %10, align 8, !tbaa !11
  %532 = add nsw i64 %531, 1
  store i64 %532, ptr %10, align 8, !tbaa !11
  br label %513, !llvm.loop !37

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

545:                                              ; preds = %533
  %546 = load i64, ptr %9, align 8, !tbaa !11
  %547 = add nsw i64 %546, 1
  store i64 %547, ptr %9, align 8, !tbaa !11
  br label %507, !llvm.loop !38

548:                                              ; preds = %507
  %549 = load i64, ptr %6, align 8, !tbaa !11
  %550 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %29, i64 noundef %549, ptr noundef %550)
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %551

551:                                              ; preds = %564, %548
  %552 = load i64, ptr %9, align 8, !tbaa !11
  %553 = load i64, ptr %6, align 8, !tbaa !11
  %554 = sub nsw i64 %553, 1
  %555 = icmp sle i64 %552, %554
  br i1 %555, label %556, label %567

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

564:                                              ; preds = %556
  %565 = load i64, ptr %9, align 8, !tbaa !11
  %566 = add nsw i64 %565, 1
  store i64 %566, ptr %9, align 8, !tbaa !11
  br label %551, !llvm.loop !39

567:                                              ; preds = %551
  %568 = load i64, ptr %7, align 8, !tbaa !11
  %569 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %27, i64 noundef %568, ptr noundef %569)
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %570

570:                                              ; preds = %594, %567
  %571 = load i64, ptr %9, align 8, !tbaa !11
  %572 = load i64, ptr %7, align 8, !tbaa !11
  %573 = sub nsw i64 %572, 1
  %574 = icmp sle i64 %571, %573
  br i1 %574, label %575, label %597

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

594:                                              ; preds = %575
  %595 = load i64, ptr %9, align 8, !tbaa !11
  %596 = add nsw i64 %595, 1
  store i64 %596, ptr %9, align 8, !tbaa !11
  br label %570, !llvm.loop !40

597:                                              ; preds = %570
  %598 = load i64, ptr %7, align 8, !tbaa !11
  %599 = load i64, ptr %6, align 8, !tbaa !11
  %600 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11fblssolvelsEPNS_9ae_matrixEPNS_9ae_vectorEllS3_S3_S3_PNS_8ae_stateE(ptr noundef %25, ptr noundef %27, i64 noundef %598, i64 noundef %599, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %600)
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %601

601:                                              ; preds = %628, %597
  %602 = load i64, ptr %9, align 8, !tbaa !11
  %603 = load i64, ptr %6, align 8, !tbaa !11
  %604 = sub nsw i64 %603, 1
  %605 = icmp sle i64 %602, %604
  br i1 %605, label %606, label %631

606:                                              ; preds = %601
  %607 = load i8, ptr %13, align 1, !tbaa !5, !range !21, !noundef !22
  %608 = trunc i8 %607 to i1
  br i1 %608, label %625, label %609

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

625:                                              ; preds = %609, %606
  %626 = phi i1 [ true, %606 ], [ %624, %609 ]
  %627 = zext i1 %626 to i8
  store i8 %627, ptr %13, align 1, !tbaa !5
  br label %628

628:                                              ; preds = %625
  %629 = load i64, ptr %9, align 8, !tbaa !11
  %630 = add nsw i64 %629, 1
  store i64 %630, ptr %9, align 8, !tbaa !11
  br label %601, !llvm.loop !41

631:                                              ; preds = %601
  br label %632

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

635:                                              ; preds = %463
  br label %636

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

639:                                              ; preds = %458
  store i64 1, ptr %6, align 8, !tbaa !11
  br label %640

640:                                              ; preds = %869, %639
  %641 = load i64, ptr %6, align 8, !tbaa !11
  %642 = icmp sle i64 %641, 30
  br i1 %642, label %643, label %872

643:                                              ; preds = %640
  %644 = load i64, ptr %6, align 8, !tbaa !11
  %645 = load i64, ptr %6, align 8, !tbaa !11
  %646 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %25, i64 noundef %644, i64 noundef %645, ptr noundef %646)
  %647 = load i64, ptr %6, align 8, !tbaa !11
  %648 = load i64, ptr %6, align 8, !tbaa !11
  %649 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %26, i64 noundef %647, 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 %29, 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 %27, i64 noundef %652, ptr noundef %653)
  %654 = load i64, ptr %6, align 8, !tbaa !11
  %655 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %30, i64 noundef %654, ptr noundef %655)
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %656

656:                                              ; preds = %700, %643
  %657 = load i64, ptr %9, align 8, !tbaa !11
  %658 = load i64, ptr %6, align 8, !tbaa !11
  %659 = sub nsw i64 %658, 1
  %660 = icmp sle i64 %657, %659
  br i1 %660, label %661, label %703

661:                                              ; preds = %656
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %662

662:                                              ; preds = %679, %661
  %663 = load i64, ptr %10, align 8, !tbaa !11
  %664 = load i64, ptr %6, align 8, !tbaa !11
  %665 = sub nsw i64 %664, 1
  %666 = icmp sle i64 %663, %665
  br i1 %666, label %667, label %682

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

679:                                              ; preds = %667
  %680 = load i64, ptr %10, align 8, !tbaa !11
  %681 = add nsw i64 %680, 1
  store i64 %681, ptr %10, align 8, !tbaa !11
  br label %662, !llvm.loop !44

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

700:                                              ; preds = %682
  %701 = load i64, ptr %9, align 8, !tbaa !11
  %702 = add nsw i64 %701, 1
  store i64 %702, ptr %9, align 8, !tbaa !11
  br label %656, !llvm.loop !45

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

713:                                              ; preds = %810, %703
  %714 = load i64, ptr %9, align 8, !tbaa !11
  %715 = load i64, ptr %6, align 8, !tbaa !11
  %716 = sub nsw i64 %715, 1
  %717 = icmp sle i64 %714, %716
  br i1 %717, label %718, label %813

718:                                              ; preds = %713
  %719 = load i8, ptr %24, align 1, !tbaa !5, !range !21, !noundef !22
  %720 = trunc i8 %719 to i1
  br i1 %720, label %721, label %765

721:                                              ; preds = %718
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %722

722:                                              ; preds = %735, %721
  %723 = load i64, ptr %10, align 8, !tbaa !11
  %724 = load i64, ptr %9, align 8, !tbaa !11
  %725 = sub nsw i64 %724, 1
  %726 = icmp sle i64 %723, %725
  br i1 %726, label %727, label %738

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

735:                                              ; preds = %727
  %736 = load i64, ptr %10, align 8, !tbaa !11
  %737 = add nsw i64 %736, 1
  store i64 %737, ptr %10, align 8, !tbaa !11
  br label %722, !llvm.loop !46

738:                                              ; preds = %722
  %739 = load i64, ptr %9, align 8, !tbaa !11
  store i64 %739, ptr %10, align 8, !tbaa !11
  br label %740

740:                                              ; preds = %761, %738
  %741 = load i64, ptr %10, align 8, !tbaa !11
  %742 = load i64, ptr %6, align 8, !tbaa !11
  %743 = sub nsw i64 %742, 1
  %744 = icmp sle i64 %741, %743
  br i1 %744, label %745, label %764

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

761:                                              ; preds = %745
  %762 = load i64, ptr %10, align 8, !tbaa !11
  %763 = add nsw i64 %762, 1
  store i64 %763, ptr %10, align 8, !tbaa !11
  br label %740, !llvm.loop !47

764:                                              ; preds = %740
  br label %809

765:                                              ; preds = %718
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %766

766:                                              ; preds = %786, %765
  %767 = load i64, ptr %10, align 8, !tbaa !11
  %768 = load i64, ptr %9, align 8, !tbaa !11
  %769 = icmp sle i64 %767, %768
  br i1 %769, label %770, label %789

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

786:                                              ; preds = %770
  %787 = load i64, ptr %10, align 8, !tbaa !11
  %788 = add nsw i64 %787, 1
  store i64 %788, ptr %10, align 8, !tbaa !11
  br label %766, !llvm.loop !48

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

792:                                              ; preds = %805, %789
  %793 = load i64, ptr %10, align 8, !tbaa !11
  %794 = load i64, ptr %6, align 8, !tbaa !11
  %795 = sub nsw i64 %794, 1
  %796 = icmp sle i64 %793, %795
  br i1 %796, label %797, label %808

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

805:                                              ; preds = %797
  %806 = load i64, ptr %10, align 8, !tbaa !11
  %807 = add nsw i64 %806, 1
  store i64 %807, ptr %10, align 8, !tbaa !11
  br label %792, !llvm.loop !49

808:                                              ; preds = %792
  br label %809

809:                                              ; preds = %808, %764
  br label %810

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

813:                                              ; preds = %713
  %814 = load i8, ptr %24, align 1, !tbaa !5, !range !21, !noundef !22
  %815 = trunc i8 %814 to i1
  br i1 %815, label %816, label %823

816:                                              ; preds = %813
  %817 = load i64, ptr %6, align 8, !tbaa !11
  %818 = load i64, ptr %6, align 8, !tbaa !11
  %819 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11rmatrixgemvElldPKNS_9ae_matrixElllPKNS_9ae_vectorEldPS3_lPNS_8ae_stateE(i64 noundef %817, i64 noundef %818, double noundef 1.000000e+00, ptr noundef %26, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %29, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %30, i64 noundef 0, ptr noundef %819)
  %820 = load i64, ptr %6, align 8, !tbaa !11
  %821 = load i64, ptr %6, align 8, !tbaa !11
  %822 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11rmatrixgemvElldPKNS_9ae_matrixElllPKNS_9ae_vectorEldPS3_lPNS_8ae_stateE(i64 noundef %820, i64 noundef %821, double noundef 1.000000e+00, ptr noundef %26, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef %30, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %27, i64 noundef 0, ptr noundef %822)
  br label %830

823:                                              ; preds = %813
  %824 = load i64, ptr %6, align 8, !tbaa !11
  %825 = load i64, ptr %6, align 8, !tbaa !11
  %826 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11rmatrixgemvElldPKNS_9ae_matrixElllPKNS_9ae_vectorEldPS3_lPNS_8ae_stateE(i64 noundef %824, i64 noundef %825, double noundef 1.000000e+00, ptr noundef %26, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef %29, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %30, i64 noundef 0, ptr noundef %826)
  %827 = load i64, ptr %6, align 8, !tbaa !11
  %828 = load i64, ptr %6, align 8, !tbaa !11
  %829 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl11rmatrixgemvElldPKNS_9ae_matrixElllPKNS_9ae_vectorEldPS3_lPNS_8ae_stateE(i64 noundef %827, i64 noundef %828, double noundef 1.000000e+00, ptr noundef %26, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %30, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %27, i64 noundef 0, ptr noundef %829)
  br label %830

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

845:                                              ; preds = %865, %830
  %846 = load i64, ptr %9, align 8, !tbaa !11
  %847 = load i64, ptr %6, align 8, !tbaa !11
  %848 = sub nsw i64 %847, 1
  %849 = icmp sle i64 %846, %848
  br i1 %849, label %850, label %868

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

865:                                              ; preds = %850
  %866 = load i64, ptr %9, align 8, !tbaa !11
  %867 = add nsw i64 %866, 1
  store i64 %867, ptr %9, align 8, !tbaa !11
  br label %845, !llvm.loop !51

868:                                              ; preds = %845
  br label %869

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

872:                                              ; preds = %640
  %873 = load i8, ptr %12, align 1, !tbaa !5, !range !21, !noundef !22
  %874 = trunc i8 %873 to i1
  br i1 %874, label %884, label %875

875:                                              ; preds = %872
  %876 = load i8, ptr %13, align 1, !tbaa !5, !range !21, !noundef !22
  %877 = trunc i8 %876 to i1
  br i1 %877, label %884, label %878

878:                                              ; preds = %875
  %879 = load i8, ptr %14, align 1, !tbaa !5, !range !21, !noundef !22
  %880 = trunc i8 %879 to i1
  br i1 %880, label %884, label %881

881:                                              ; preds = %878
  %882 = load i8, ptr %15, align 1, !tbaa !5, !range !21, !noundef !22
  %883 = trunc i8 %882 to i1
  br label %884

884:                                              ; preds = %881, %878, %875, %872
  %885 = phi i1 [ true, %878 ], [ true, %875 ], [ true, %872 ], [ %883, %881 ]
  %886 = zext i1 %885 to i8
  store i8 %886, ptr %11, align 1, !tbaa !5
  %887 = load i8, ptr %3, align 1, !tbaa !5, !range !21, !noundef !22
  %888 = trunc i8 %887 to i1
  br i1 %888, label %931, label %889

889:                                              ; preds = %884
  %890 = call i32 (ptr, ...) @printf(ptr noundef @.str.488)
  %891 = call i32 (ptr, ...) @printf(ptr noundef @.str.489)
  %892 = load i8, ptr %12, align 1, !tbaa !5, !range !21, !noundef !22
  %893 = trunc i8 %892 to i1
  br i1 %893, label %894, label %896

894:                                              ; preds = %889
  %895 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %898

896:                                              ; preds = %889
  %897 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %898

898:                                              ; preds = %896, %894
  %899 = call i32 (ptr, ...) @printf(ptr noundef @.str.490)
  %900 = load i8, ptr %13, align 1, !tbaa !5, !range !21, !noundef !22
  %901 = trunc i8 %900 to i1
  br i1 %901, label %902, label %904

902:                                              ; preds = %898
  %903 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %906

904:                                              ; preds = %898
  %905 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %906

906:                                              ; preds = %904, %902
  %907 = call i32 (ptr, ...) @printf(ptr noundef @.str.491)
  %908 = load i8, ptr %14, align 1, !tbaa !5, !range !21, !noundef !22
  %909 = trunc i8 %908 to i1
  br i1 %909, label %910, label %912

910:                                              ; preds = %906
  %911 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %914

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

914:                                              ; preds = %912, %910
  %915 = call i32 (ptr, ...) @printf(ptr noundef @.str.492)
  %916 = load i8, ptr %15, align 1, !tbaa !5, !range !21, !noundef !22
  %917 = trunc i8 %916 to i1
  br i1 %917, label %918, label %920

918:                                              ; preds = %914
  %919 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %922

920:                                              ; preds = %914
  %921 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %922

922:                                              ; preds = %920, %918
  %923 = load i8, ptr %11, align 1, !tbaa !5, !range !21, !noundef !22
  %924 = trunc i8 %923 to i1
  br i1 %924, label %925, label %927

925:                                              ; preds = %922
  %926 = call i32 (ptr, ...) @printf(ptr noundef @.str.15)
  br label %929

927:                                              ; preds = %922
  %928 = call i32 (ptr, ...) @printf(ptr noundef @.str.16)
  br label %929

929:                                              ; preds = %927, %925
  %930 = call i32 (ptr, ...) @printf(ptr noundef @.str.17)
  br label %931

931:                                              ; preds = %929, %884
  %932 = load i8, ptr %11, align 1, !tbaa !5, !range !21, !noundef !22
  %933 = trunc i8 %932 to i1
  %934 = xor i1 %933, true
  %935 = zext i1 %934 to i8
  store i8 %935, ptr %35, align 1, !tbaa !5
  %936 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %936)
  %937 = load i8, ptr %35, align 1, !tbaa !5, !range !21, !noundef !22
  %938 = trunc i8 %937 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 936, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 64, 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 80, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 64, 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 8, 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 1, 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 %938
}

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

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

declare void @_ZN11alglib_impl9rmatrixmvEllPKNS_9ae_matrixElllPKNS_9ae_vectorElPS3_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_impl12fblssolvecgxEPKNS_9ae_matrixElldPKNS_9ae_vectorEPS3_S6_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

declare void @_ZN11alglib_impl12fblscgcreateEPKNS_9ae_vectorES2_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_impl11rmatrixgemvElldPKNS_9ae_matrixElllPKNS_9ae_vectorEldPS3_lPNS_8ae_stateE(i64 noundef, i64 noundef, double noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, double noundef, ptr noundef, i64 noundef, ptr noundef) #1

declare void @_ZN11alglib_impl17fblscholeskysolveEPKNS_9ae_matrixEdlbPNS_9ae_vectorES4_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 nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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.2 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.487 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.488 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.489 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.490 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.491 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.492 = 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

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) 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

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

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

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

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

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

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

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

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 #3

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

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

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

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

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

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

declare noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #3

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

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

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

; 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 i8, align 1
  %6 = alloca %"struct.alglib_impl::ae_vector", align 8
  %7 = alloca %"struct.alglib_impl::ae_vector", align 8
  %8 = alloca %"struct.alglib_impl::ae_vector", align 8
  %9 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %10 = alloca %"struct.alglib_impl::ae_matrix", 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::ae_vector", align 8
  %15 = 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 1, 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 64, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 80, 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 64, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 936, ptr nonnull %15) #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) %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(64) %8, i8 0, i64 64, 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(80) %10, i8 0, i64 80, 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(64) %14, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(936) %15, i8 0, i64 936, i1 false)
  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_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %8, 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_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %10, 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 %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_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %14, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl20_fblslincgstate_initEPvPNS_8ae_stateEb(ptr noundef nonnull %15, ptr noundef %1, i1 noundef zeroext true)
  store i8 0, ptr %4, align 1, !tbaa !5
  store i8 0, ptr %5, align 1, !tbaa !5
  call void @_ZL22testfblsunit_testgmresPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %5, ptr noundef %1)
  %16 = getelementptr inbounds i8, ptr %9, i64 72
  %17 = getelementptr inbounds i8, ptr %11, i64 56
  %18 = getelementptr inbounds i8, ptr %13, i64 56
  %19 = getelementptr inbounds i8, ptr %12, i64 56
  %20 = getelementptr inbounds i8, ptr %8, i64 56
  %21 = getelementptr inbounds i8, ptr %15, i64 16
  %22 = getelementptr inbounds i8, ptr %15, i64 80
  %23 = getelementptr inbounds i8, ptr %15, i64 136
  %24 = getelementptr inbounds i8, ptr %15, i64 72
  %25 = getelementptr inbounds i8, ptr %7, i64 56
  %26 = getelementptr inbounds i8, ptr %15, i64 144
  %27 = getelementptr inbounds i8, ptr %15, i64 288
  %28 = getelementptr inbounds i8, ptr %15, i64 344
  %29 = getelementptr inbounds i8, ptr %15, i64 8
  br label %.preheader358

.preheader358:                                    ; preds = %2, %160
  %.0371 = phi i64 [ 1, %2 ], [ %161, %160 ]
  %.0314370 = phi i1 [ false, %2 ], [ %158, %160 ]
  %30 = add nsw i64 %.0371, -1
  br label %31

31:                                               ; preds = %.preheader358, %.critedge344
  %.0301369 = phi i64 [ 1, %.preheader358 ], [ %159, %.critedge344 ]
  %.1315368 = phi i1 [ %.0314370, %.preheader358 ], [ %158, %.critedge344 ]
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.0301369, i64 noundef %.0371, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.0371, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %.0371, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %.0371, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.0301369, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0371, ptr noundef %1)
  br label %.preheader356

.preheader356:                                    ; preds = %31, %40
  %.0303364 = phi i64 [ 0, %31 ], [ %41, %40 ]
  br label %32

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

40:                                               ; preds = %32
  %41 = add nuw nsw i64 %.0303364, 1
  %exitcond412.not = icmp eq i64 %41, %.0301369
  br i1 %exitcond412.not, label %42, label %.preheader356, !llvm.loop !16

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

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

.preheader357.preheader:                          ; preds = %44
  %63 = add nsw i64 %.0301369, -1
  br label %.preheader357

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

74:                                               ; preds = %.preheader357
  %75 = fadd double %43, 1.000000e-01
  call void @_ZN11alglib_impl9rmatrixmvEllPKNS_9ae_matrixElllPKNS_9ae_vectorElPS3_lPNS_8ae_stateE(i64 noundef %.0301369, i64 noundef %.0371, ptr noundef nonnull %9, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %12, i64 noundef 0, ptr noundef nonnull %7, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl9rmatrixmvEllPKNS_9ae_matrixElllPKNS_9ae_vectorElPS3_lPNS_8ae_stateE(i64 noundef %.0371, i64 noundef %.0301369, ptr noundef nonnull %9, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %7, i64 noundef 0, ptr noundef nonnull %8, i64 noundef 0, ptr noundef %1)
  %76 = load ptr, ptr %20, align 8, !tbaa !9
  %77 = load ptr, ptr %19, align 8, !tbaa !9
  %78 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %30)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %76, i64 noundef 1, ptr noundef %77, i64 noundef 1, i64 noundef %78, double noundef %75)
  %79 = load ptr, ptr %20, align 8, !tbaa !9
  %80 = load ptr, ptr %17, align 8, !tbaa !9
  %81 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %30)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %79, i64 noundef 1, ptr noundef %80, i64 noundef 1, i64 noundef %81)
  %82 = load ptr, ptr %20, align 8, !tbaa !9
  %83 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %30)
  %84 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %82, i64 noundef 1, ptr noundef %82, i64 noundef 1, i64 noundef %83)
  %85 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %84, ptr noundef %1)
  call void @_ZN11alglib_impl12fblssolvecgxEPKNS_9ae_matrixElldPKNS_9ae_vectorEPS3_S6_PNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.0301369, i64 noundef %.0371, double noundef %75, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %1)
  call void @_ZN11alglib_impl9rmatrixmvEllPKNS_9ae_matrixElllPKNS_9ae_vectorElPS3_lPNS_8ae_stateE(i64 noundef %.0301369, i64 noundef %.0371, ptr noundef nonnull %9, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %12, i64 noundef 0, ptr noundef nonnull %7, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl9rmatrixmvEllPKNS_9ae_matrixElllPKNS_9ae_vectorElPS3_lPNS_8ae_stateE(i64 noundef %.0371, i64 noundef %.0301369, ptr noundef nonnull %9, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %7, i64 noundef 0, ptr noundef nonnull %8, i64 noundef 0, ptr noundef %1)
  %86 = load ptr, ptr %20, align 8, !tbaa !9
  %87 = load ptr, ptr %19, align 8, !tbaa !9
  %88 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %30)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %86, i64 noundef 1, ptr noundef %87, i64 noundef 1, i64 noundef %88, double noundef %75)
  %89 = load ptr, ptr %20, align 8, !tbaa !9
  %90 = load ptr, ptr %17, align 8, !tbaa !9
  %91 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %30)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %89, i64 noundef 1, ptr noundef %90, i64 noundef 1, i64 noundef %91)
  %92 = load ptr, ptr %20, align 8, !tbaa !9
  %93 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %30)
  %94 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %92, i64 noundef 1, ptr noundef %92, i64 noundef 1, i64 noundef %93)
  %95 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %94, ptr noundef %1)
  br i1 %.1315368, label %99, label %96

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

99:                                               ; preds = %96, %74
  %100 = phi i1 [ true, %74 ], [ %98, %96 ]
  br label %101

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

112:                                              ; preds = %101
  call void @_ZN11alglib_impl9rmatrixmvEllPKNS_9ae_matrixElllPKNS_9ae_vectorElPS3_lPNS_8ae_stateE(i64 noundef %.0301369, i64 noundef %.0371, ptr noundef nonnull %9, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %12, i64 noundef 0, ptr noundef nonnull %7, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl9rmatrixmvEllPKNS_9ae_matrixElllPKNS_9ae_vectorElPS3_lPNS_8ae_stateE(i64 noundef %.0371, i64 noundef %.0301369, ptr noundef nonnull %9, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %7, i64 noundef 0, ptr noundef nonnull %8, i64 noundef 0, ptr noundef %1)
  %113 = load ptr, ptr %20, align 8, !tbaa !9
  %114 = load ptr, ptr %19, align 8, !tbaa !9
  %115 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %30)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %113, i64 noundef 1, ptr noundef %114, i64 noundef 1, i64 noundef %115, double noundef %75)
  %116 = load ptr, ptr %20, align 8, !tbaa !9
  %117 = load ptr, ptr %17, align 8, !tbaa !9
  %118 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %30)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %116, i64 noundef 1, ptr noundef %117, i64 noundef 1, i64 noundef %118)
  %119 = load ptr, ptr %20, align 8, !tbaa !9
  %120 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %30)
  %121 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %119, i64 noundef 1, ptr noundef %119, i64 noundef 1, i64 noundef %120)
  %122 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %121, ptr noundef %1)
  call void @_ZN11alglib_impl12fblscgcreateEPKNS_9ae_vectorES2_lPNS_14fblslincgstateEPNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef nonnull %11, i64 noundef %.0371, ptr noundef nonnull %15, ptr noundef %1)
  %123 = call noundef zeroext i1 @_ZN11alglib_impl15fblscgiterationEPNS_14fblslincgstateEPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef %1)
  br i1 %123, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %112, %.lr.ph
  call void @_ZN11alglib_impl9rmatrixmvEllPKNS_9ae_matrixElllPKNS_9ae_vectorElPS3_lPNS_8ae_stateE(i64 noundef %.0301369, i64 noundef %.0371, ptr noundef nonnull %9, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %21, i64 noundef 0, ptr noundef nonnull %7, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl9rmatrixmvEllPKNS_9ae_matrixElllPKNS_9ae_vectorElPS3_lPNS_8ae_stateE(i64 noundef %.0371, i64 noundef %.0301369, ptr noundef nonnull %9, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %7, i64 noundef 0, ptr noundef nonnull %22, i64 noundef 0, ptr noundef %1)
  %124 = load ptr, ptr %23, align 8, !tbaa !9
  %125 = load ptr, ptr %24, align 8, !tbaa !9
  %126 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %30)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %124, i64 noundef 1, ptr noundef %125, i64 noundef 1, i64 noundef %126, double noundef %75)
  %127 = load ptr, ptr %25, align 8, !tbaa !9
  %128 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %63)
  %129 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %127, i64 noundef 1, ptr noundef %127, i64 noundef 1, i64 noundef %128)
  %130 = load ptr, ptr %24, align 8, !tbaa !9
  %131 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %30)
  %132 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %130, i64 noundef 1, ptr noundef %130, i64 noundef 1, i64 noundef %131)
  %133 = call double @llvm.fmuladd.f64(double %75, double %132, double %129)
  store double %133, ptr %26, align 8, !tbaa !20
  %134 = call noundef zeroext i1 @_ZN11alglib_impl15fblscgiterationEPNS_14fblslincgstateEPNS_8ae_stateE(ptr noundef nonnull %15, ptr noundef %1)
  br i1 %134, label %.lr.ph, label %._crit_edge, !llvm.loop !27

._crit_edge:                                      ; preds = %.lr.ph, %112
  call void @_ZN11alglib_impl9rmatrixmvEllPKNS_9ae_matrixElllPKNS_9ae_vectorElPS3_lPNS_8ae_stateE(i64 noundef %.0301369, i64 noundef %.0371, ptr noundef nonnull %9, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %27, i64 noundef 0, ptr noundef nonnull %7, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl9rmatrixmvEllPKNS_9ae_matrixElllPKNS_9ae_vectorElPS3_lPNS_8ae_stateE(i64 noundef %.0371, i64 noundef %.0301369, ptr noundef nonnull %9, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %7, i64 noundef 0, ptr noundef nonnull %8, i64 noundef 0, ptr noundef %1)
  %135 = load ptr, ptr %20, align 8, !tbaa !9
  %136 = load ptr, ptr %28, align 8, !tbaa !9
  %137 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %30)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %135, i64 noundef 1, ptr noundef %136, i64 noundef 1, i64 noundef %137, double noundef %75)
  %138 = load ptr, ptr %20, align 8, !tbaa !9
  %139 = load ptr, ptr %17, align 8, !tbaa !9
  %140 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %30)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %138, i64 noundef 1, ptr noundef %139, i64 noundef 1, i64 noundef %140)
  %141 = load ptr, ptr %20, align 8, !tbaa !9
  %142 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %30)
  %143 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %141, i64 noundef 1, ptr noundef %141, i64 noundef 1, i64 noundef %142)
  %144 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %143, ptr noundef %1)
  br i1 %100, label %.critedge344, label %145

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

.critedge:                                        ; preds = %145
  %151 = load double, ptr %29, align 8, !tbaa !29
  %152 = fsub double %144, %151
  %153 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %152, ptr noundef %1)
  %154 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %153, double noundef %149)
  br i1 %154, label %.critedge344, label %155

155:                                              ; preds = %.critedge
  %156 = fmul double %122, 1.000000e-03
  %157 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %144, double noundef %156)
  br label %.critedge344

.critedge344:                                     ; preds = %145, %._crit_edge, %155, %.critedge
  %158 = phi i1 [ true, %.critedge ], [ %157, %155 ], [ true, %._crit_edge ], [ true, %145 ]
  %159 = add nuw nsw i64 %.0301369, 1
  %exitcond416.not = icmp eq i64 %159, 11
  br i1 %exitcond416.not, label %160, label %31, !llvm.loop !30

160:                                              ; preds = %.critedge344
  %161 = add nuw nsw i64 %.0371, 1
  %exitcond417.not = icmp eq i64 %161, 11
  br i1 %exitcond417.not, label %.lr.ph386, label %.preheader358, !llvm.loop !31

.lr.ph386:                                        ; preds = %160, %._crit_edge387
  %.1389 = phi i64 [ %227, %._crit_edge387 ], [ 1, %160 ]
  %.0316388 = phi i1 [ %223, %._crit_edge387 ], [ false, %160 ]
  %162 = shl nuw nsw i64 %.1389, 1
  %163 = add nsw i64 %.1389, -1
  br label %165

.preheader350:                                    ; preds = %._crit_edge387
  %164 = getelementptr inbounds i8, ptr %10, i64 72
  br label %228

165:                                              ; preds = %.lr.ph386, %225
  %indvars.iv = phi i64 [ 0, %.lr.ph386 ], [ %indvars.iv.next, %225 ]
  %.1302385 = phi i64 [ %.1389, %.lr.ph386 ], [ %226, %225 ]
  %.1317384 = phi i1 [ %.0316388, %.lr.ph386 ], [ %223, %225 ]
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.1302385, i64 noundef %.1389, ptr noundef %1)
  %166 = sub nuw nsw i64 %.1302385, %.1389
  %.not332.not373.not = icmp eq i64 %166, 0
  br i1 %.not332.not373.not, label %.preheader351.preheader, label %.preheader352

.preheader352:                                    ; preds = %165, %175
  %.4374 = phi i64 [ %176, %175 ], [ 0, %165 ]
  br label %167

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

175:                                              ; preds = %167
  %176 = add nuw nsw i64 %.4374, 1
  %exitcond419.not = icmp eq i64 %176, %indvars.iv
  br i1 %exitcond419.not, label %.preheader351.preheader, label %.preheader352, !llvm.loop !33

.preheader351.preheader:                          ; preds = %175, %165
  br label %.preheader351

.preheader351:                                    ; preds = %.preheader351.preheader, %186
  %.5377 = phi i64 [ %192, %186 ], [ %166, %.preheader351.preheader ]
  br label %177

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

186:                                              ; preds = %177
  %187 = load ptr, ptr %16, align 8, !tbaa !9
  %188 = getelementptr inbounds ptr, ptr %187, i64 %.5377
  %189 = load ptr, ptr %188, align 8, !tbaa !10
  %190 = sub nuw nsw i64 %.5377, %166
  %191 = getelementptr inbounds double, ptr %189, i64 %190
  store double 1.000000e+00, ptr %191, align 8, !tbaa !12
  %192 = add nuw nsw i64 %.5377, 1
  %exitcond421.not = icmp eq i64 %192, %.1302385
  br i1 %exitcond421.not, label %._crit_edge378, label %.preheader351, !llvm.loop !35

._crit_edge378:                                   ; preds = %186
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %.1389, ptr noundef %1)
  br label %193

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

199:                                              ; preds = %193
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.1302385, ptr noundef %1)
  br label %200

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

210:                                              ; preds = %200
  call void @_ZN11alglib_impl11fblssolvelsEPNS_9ae_matrixEPNS_9ae_vectorEllS3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %9, ptr noundef nonnull %11, i64 noundef %.1302385, i64 noundef %.1389, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef %1)
  br label %211

211:                                              ; preds = %210, %222
  %.8382 = phi i64 [ 0, %210 ], [ %224, %222 ]
  %.2318381 = phi i1 [ %.1317384, %210 ], [ %223, %222 ]
  br i1 %.2318381, label %222, label %212

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

222:                                              ; preds = %212, %211
  %223 = phi i1 [ true, %211 ], [ %221, %212 ]
  %224 = add nuw nsw i64 %.8382, 1
  %exitcond424.not = icmp eq i64 %224, %.1389
  br i1 %exitcond424.not, label %225, label %211, !llvm.loop !38

225:                                              ; preds = %222
  %226 = add nuw nsw i64 %.1302385, 1
  %.not331.not = icmp ult i64 %.1302385, %162
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  br i1 %.not331.not, label %165, label %._crit_edge387, !llvm.loop !39

._crit_edge387:                                   ; preds = %225
  %227 = add nuw nsw i64 %.1389, 1
  %exitcond425.not = icmp eq i64 %227, 6
  br i1 %exitcond425.not, label %.preheader350, label %.lr.ph386, !llvm.loop !40

228:                                              ; preds = %.preheader350, %344
  %.2407 = phi i64 [ 1, %.preheader350 ], [ %345, %344 ]
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.2407, i64 noundef %.2407, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %.2407, i64 noundef %.2407, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %.2407, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.2407, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %14, i64 noundef %.2407, ptr noundef %1)
  br label %.preheader349

.preheader349:                                    ; preds = %228, %238
  %.9391 = phi i64 [ 0, %228 ], [ %249, %238 ]
  br label %229

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

238:                                              ; preds = %229
  %239 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %240 = fadd double %239, 1.000000e+00
  %241 = load ptr, ptr %16, align 8, !tbaa !9
  %242 = getelementptr inbounds ptr, ptr %241, i64 %.9391
  %243 = load ptr, ptr %242, align 8, !tbaa !10
  %244 = getelementptr inbounds double, ptr %243, i64 %.9391
  store double %240, ptr %244, align 8, !tbaa !12
  %245 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %246 = fadd double %245, -5.000000e-01
  %247 = load ptr, ptr %18, align 8, !tbaa !9
  %248 = getelementptr inbounds double, ptr %247, i64 %.9391
  store double %246, ptr %248, align 8, !tbaa !12
  %249 = add nuw nsw i64 %.9391, 1
  %exitcond427.not = icmp eq i64 %249, %.2407
  br i1 %exitcond427.not, label %250, label %.preheader349, !llvm.loop !42

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

.preheader345.us:                                 ; preds = %250, %.loopexit.us
  %.10402.us = phi i64 [ %293, %.loopexit.us ], [ 0, %250 ]
  %.not328.not396.us.not = icmp eq i64 %.10402.us, 0
  br i1 %.not328.not396.us.not, label %.lr.ph401.us.preheader, label %.lr.ph398.us.preheader

.lr.ph398.us.preheader:                           ; preds = %.preheader345.us
  %xtraiter447 = and i64 %.10402.us, 3
  %257 = icmp ult i64 %.10402.us, 4
  br i1 %257, label %.lr.ph401.us.preheader.loopexit.unr-lcssa, label %.lr.ph398.us.preheader.new

.lr.ph398.us.preheader.new:                       ; preds = %.lr.ph398.us.preheader
  %unroll_iter449 = and i64 %.10402.us, 9223372036854775804
  br label %.lr.ph398.us

.lr.ph401.us.preheader.loopexit.unr-lcssa:        ; preds = %.lr.ph398.us, %.lr.ph398.us.preheader
  %.4310397.us.unr = phi i64 [ 0, %.lr.ph398.us.preheader ], [ %292, %.lr.ph398.us ]
  %lcmp.mod448.not = icmp eq i64 %xtraiter447, 0
  br i1 %lcmp.mod448.not, label %.lr.ph401.us.preheader, label %.lr.ph398.us.epil

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

.lr.ph401.us.preheader:                           ; preds = %.lr.ph401.us.preheader.loopexit.unr-lcssa, %.lr.ph398.us.epil, %.preheader345.us
  br label %.lr.ph401.us

.lr.ph401.us:                                     ; preds = %.lr.ph401.us.preheader, %.lr.ph401.us
  %.5311400.us = phi i64 [ %272, %.lr.ph401.us ], [ %.10402.us, %.lr.ph401.us.preheader ]
  %263 = load ptr, ptr %16, align 8, !tbaa !9
  %264 = getelementptr inbounds ptr, ptr %263, i64 %.10402.us
  %265 = load ptr, ptr %264, align 8, !tbaa !10
  %266 = getelementptr inbounds double, ptr %265, i64 %.5311400.us
  %267 = load double, ptr %266, align 8, !tbaa !12
  %268 = load ptr, ptr %164, align 8, !tbaa !9
  %269 = getelementptr inbounds ptr, ptr %268, i64 %.10402.us
  %270 = load ptr, ptr %269, align 8, !tbaa !10
  %271 = getelementptr inbounds double, ptr %270, i64 %.5311400.us
  store double %267, ptr %271, align 8, !tbaa !12
  %272 = add nuw nsw i64 %.5311400.us, 1
  %.not329.not.us = icmp ult i64 %272, %.2407
  br i1 %.not329.not.us, label %.lr.ph401.us, label %.loopexit.us, !llvm.loop !45

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

.loopexit.us:                                     ; preds = %.lr.ph401.us
  %293 = add nuw nsw i64 %.10402.us, 1
  %exitcond433.not = icmp eq i64 %293, %.2407
  br i1 %exitcond433.not, label %.split405.us, label %.preheader345.us, !llvm.loop !47

.preheader348:                                    ; preds = %250, %.loopexit347
  %indvars.iv428 = phi i64 [ %indvars.iv.next429, %.loopexit347 ], [ 1, %250 ]
  %.10402 = phi i64 [ %329, %.loopexit347 ], [ 0, %250 ]
  %xtraiter = and i64 %indvars.iv428, 1
  %294 = icmp eq i64 %.10402, 0
  br i1 %294, label %.preheader346.unr-lcssa, label %.preheader348.new

.preheader348.new:                                ; preds = %.preheader348
  %unroll_iter = and i64 %indvars.iv428, 9223372036854775806
  br label %304

.preheader346.unr-lcssa:                          ; preds = %304, %.preheader348
  %.6312392.unr = phi i64 [ 0, %.preheader348 ], [ %324, %304 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader346, label %.preheader346.epilog-lcssa

.preheader346.epilog-lcssa:                       ; preds = %.preheader346.unr-lcssa
  %295 = load ptr, ptr %16, align 8, !tbaa !9
  %296 = getelementptr inbounds ptr, ptr %295, i64 %.10402
  %297 = load ptr, ptr %296, align 8, !tbaa !10
  %298 = getelementptr inbounds double, ptr %297, i64 %.6312392.unr
  %299 = load double, ptr %298, align 8, !tbaa !12
  %300 = load ptr, ptr %164, align 8, !tbaa !9
  %301 = getelementptr inbounds ptr, ptr %300, i64 %.10402
  %302 = load ptr, ptr %301, align 8, !tbaa !10
  %303 = getelementptr inbounds double, ptr %302, i64 %.6312392.unr
  store double %299, ptr %303, align 8, !tbaa !12
  br label %.preheader346

.preheader346:                                    ; preds = %.preheader346.unr-lcssa, %.preheader346.epilog-lcssa
  %.not327.not393 = icmp ult i64 %.10402, %251
  br i1 %.not327.not393, label %.lr.ph395, label %.loopexit347

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

.lr.ph395:                                        ; preds = %.preheader346, %.lr.ph395
  %.7313.in394 = phi i64 [ %.7313, %.lr.ph395 ], [ %.10402, %.preheader346 ]
  %.7313 = add nuw nsw i64 %.7313.in394, 1
  %325 = load ptr, ptr %164, align 8, !tbaa !9
  %326 = getelementptr inbounds ptr, ptr %325, i64 %.10402
  %327 = load ptr, ptr %326, align 8, !tbaa !10
  %328 = getelementptr inbounds double, ptr %327, i64 %.7313
  store double 0.000000e+00, ptr %328, align 8, !tbaa !12
  %.not327.not = icmp ult i64 %.7313, %251
  br i1 %.not327.not, label %.lr.ph395, label %.loopexit347, !llvm.loop !49

.loopexit347:                                     ; preds = %.lr.ph395, %.preheader346
  %329 = add nuw nsw i64 %.10402, 1
  %indvars.iv.next429 = add nuw nsw i64 %indvars.iv428, 1
  %exitcond431.not = icmp eq i64 %329, %.2407
  br i1 %exitcond431.not, label %.split405.us, label %.preheader348, !llvm.loop !47

.split405.us:                                     ; preds = %.loopexit347, %.loopexit.us
  %not. = xor i1 %256, true
  %. = zext i1 %not. to i64
  %.442 = zext i1 %256 to i64
  call void @_ZN11alglib_impl11rmatrixgemvElldPKNS_9ae_matrixElllPKNS_9ae_vectorEldPS3_lPNS_8ae_stateE(i64 noundef %.2407, i64 noundef %.2407, double noundef 1.000000e+00, ptr noundef nonnull %10, i64 noundef 0, i64 noundef 0, i64 noundef %., ptr noundef nonnull %13, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %14, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl11rmatrixgemvElldPKNS_9ae_matrixElllPKNS_9ae_vectorEldPS3_lPNS_8ae_stateE(i64 noundef %.2407, i64 noundef %.2407, double noundef 1.000000e+00, ptr noundef nonnull %10, i64 noundef 0, i64 noundef 0, i64 noundef %.442, ptr noundef nonnull %14, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %11, i64 noundef 0, ptr noundef %1)
  %330 = load ptr, ptr %17, align 8, !tbaa !9
  %331 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %251)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %330, i64 noundef 1, i64 noundef %331, double noundef %254)
  %332 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %254, ptr noundef %1)
  call void @_ZN11alglib_impl17fblscholeskysolveEPKNS_9ae_matrixEdlbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef nonnull %9, double noundef %332, i64 noundef %.2407, i1 noundef zeroext %256, ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef %1)
  br label %333

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

344:                                              ; preds = %333
  %345 = add nuw nsw i64 %.2407, 1
  %exitcond435.not = icmp eq i64 %345, 31
  br i1 %exitcond435.not, label %346, label %228, !llvm.loop !51

346:                                              ; preds = %344
  %brmerge = or i1 %158, %223
  br i1 %brmerge, label %353, label %347

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

350:                                              ; preds = %347
  %351 = load i8, ptr %5, align 1, !tbaa !5, !range !52, !noundef !53
  %352 = trunc nuw i8 %351 to i1
  br label %353

353:                                              ; preds = %346, %350, %347
  %354 = phi i1 [ true, %347 ], [ true, %346 ], [ %352, %350 ]
  br i1 %0, label %371, label %355

355:                                              ; preds = %353
  %356 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.488)
  %357 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.489)
  %.str.2..str.3 = select i1 %158, ptr @.str.2, ptr @.str.3
  %358 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2..str.3)
  %359 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.490)
  %.str.3.sink439 = select i1 %223, ptr @.str.2, ptr @.str.3
  %360 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink439)
  %361 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.491)
  %362 = load i8, ptr %4, align 1, !tbaa !5, !range !52, !noundef !53
  %363 = trunc nuw i8 %362 to i1
  %.str.3.sink440 = select i1 %363, ptr @.str.2, ptr @.str.3
  %364 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink440)
  %365 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.492)
  %366 = load i8, ptr %5, align 1, !tbaa !5, !range !52, !noundef !53
  %367 = trunc nuw i8 %366 to i1
  %.str.3.sink441 = select i1 %367, ptr @.str.2, ptr @.str.3
  %368 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink441)
  %.str.16.sink = select i1 %354, ptr @.str.15, ptr @.str.16
  %369 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.16.sink)
  %370 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17)
  br label %371

371:                                              ; preds = %355, %353
  %372 = xor i1 %354, true
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 936, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 64, 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 80, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 64, 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 1, 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 %372
}

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

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

declare void @_ZN11alglib_impl9rmatrixmvEllPKNS_9ae_matrixElllPKNS_9ae_vectorElPS3_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 #3

declare void @_ZN11alglib_impl12fblssolvecgxEPKNS_9ae_matrixElldPKNS_9ae_vectorEPS3_S6_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN11alglib_impl12fblscgcreateEPKNS_9ae_vectorES2_lPNS_14fblslincgstateEPNS_8ae_stateE(ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

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 #3

declare noundef double @_ZN11alglib_impl6ae_powEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) local_unnamed_addr #3

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

declare void @_ZN11alglib_impl17fblscholeskysolveEPKNS_9ae_matrixEdlbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef, double noundef, i64 noundef, i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { "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 nounwind willreturn memory(argmem: write) }
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