; LLVM IR from Dimandragon/non-parametric-dsp :: alglib-cpp/tests/test_c.ll (Z9testtrfacbPN11alglib_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_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::ae_complex" = type { double, double }
%"struct.alglib_impl::ae_state" = type { i64, double, double, double, ptr, %"struct.alglib_impl::ae_dyn_block", ptr, i32, ptr, i64, ptr, ptr, ptr }

@.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.67 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.332 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.333 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.334 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.335 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.336 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.337 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.338 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.339 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.340 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.341 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.342 = external hidden unnamed_addr constant [32 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_fabsEdPNS_8ae_stateE(double noundef, ptr noundef) #1

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

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

declare 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 noundef i64 @_ZN11alglib_impl15matrixtilesizeaEPNS_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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4

declare { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef) #1

declare { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef) #1

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

declare { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double, double, double, double) #1

declare { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef) #1

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z9testtrfacbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) #5 {
  %3 = alloca i8, align 1
  %4 = alloca ptr, align 8
  %5 = alloca %"struct.alglib_impl::ae_frame", align 8
  %6 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %7 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %8 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %9 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %10 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %11 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %12 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %13 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %14 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %15 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca %"struct.alglib_impl::ae_complex", align 8
  %24 = alloca double, align 8
  %25 = alloca i8, align 1
  %26 = alloca i8, align 1
  %27 = alloca i8, align 1
  %28 = alloca i8, align 1
  %29 = alloca i8, align 1
  %30 = alloca i8, align 1
  %31 = alloca i8, align 1
  %32 = alloca i8, align 1
  %33 = alloca i8, align 1
  %34 = alloca double, align 8
  %35 = alloca i64, align 8
  %36 = alloca i8, align 1
  %37 = alloca %"struct.alglib_impl::ae_complex", align 8
  %38 = alloca %"struct.alglib_impl::ae_complex", align 8
  %39 = alloca %"struct.alglib_impl::ae_complex", align 8
  %40 = alloca %"struct.alglib_impl::ae_complex", align 8
  %41 = alloca %"struct.alglib_impl::ae_complex", align 8
  %42 = alloca %"struct.alglib_impl::ae_complex", align 8
  %43 = alloca %"struct.alglib_impl::ae_complex", align 8
  %44 = alloca %"struct.alglib_impl::ae_complex", align 8
  %45 = alloca %"struct.alglib_impl::ae_complex", align 8
  %46 = alloca %"struct.alglib_impl::ae_complex", align 8
  %47 = alloca %"struct.alglib_impl::ae_complex", align 8
  %48 = alloca %"struct.alglib_impl::ae_complex", align 8
  %49 = alloca %"struct.alglib_impl::ae_complex", align 8
  %50 = alloca %"struct.alglib_impl::ae_complex", align 8
  %51 = alloca %"struct.alglib_impl::ae_complex", align 8
  %52 = alloca %"struct.alglib_impl::ae_complex", align 8
  %53 = alloca %"struct.alglib_impl::ae_complex", align 8
  %54 = alloca %"struct.alglib_impl::ae_complex", align 8
  %55 = alloca %"struct.alglib_impl::ae_complex", align 8
  %56 = alloca %"struct.alglib_impl::ae_complex", align 8
  %57 = alloca %"struct.alglib_impl::ae_complex", align 8
  %58 = alloca %"struct.alglib_impl::ae_complex", align 8
  %59 = zext i1 %0 to i8
  store i8 %59, 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) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %6) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %7) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %8) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %10) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %12) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %14) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %15) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #6
  %60 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %60, ptr noundef %5)
  call void @llvm.memset.p0.i64(ptr align 8 %6, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %7, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %8, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %9, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %10, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %11, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %12, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %13, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %15, i8 0, i64 80, i1 false)
  %61 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %6, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %61, i1 noundef zeroext true)
  %62 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %7, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %62, i1 noundef zeroext true)
  %63 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %8, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %63, i1 noundef zeroext true)
  %64 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %9, i64 noundef 0, i64 noundef 0, i64 noundef 4, ptr noundef %64, i1 noundef zeroext true)
  %65 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %10, i64 noundef 0, i64 noundef 0, i64 noundef 4, ptr noundef %65, i1 noundef zeroext true)
  %66 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %11, i64 noundef 0, i64 noundef 0, i64 noundef 4, ptr noundef %66, i1 noundef zeroext true)
  %67 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %12, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %67, i1 noundef zeroext true)
  %68 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %13, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %68, i1 noundef zeroext true)
  %69 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %14, i64 noundef 0, i64 noundef 0, i64 noundef 4, ptr noundef %69, i1 noundef zeroext true)
  %70 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %15, i64 noundef 0, i64 noundef 0, i64 noundef 4, ptr noundef %70, i1 noundef zeroext true)
  store i8 0, ptr %30, align 1, !tbaa !5
  store i8 0, ptr %26, align 1, !tbaa !5
  store i8 0, ptr %27, align 1, !tbaa !5
  store i8 0, ptr %31, align 1, !tbaa !5
  store i8 0, ptr %29, align 1, !tbaa !5
  store i8 0, ptr %32, align 1, !tbaa !5
  store i8 0, ptr %33, align 1, !tbaa !5
  store i8 0, ptr %28, align 1, !tbaa !5
  store i8 0, ptr %25, align 1, !tbaa !5
  %71 = load ptr, ptr %4, align 8, !tbaa !9
  %72 = call noundef i64 @_ZN11alglib_impl15matrixtilesizeaEPNS_8ae_stateE(ptr noundef %71)
  %73 = mul nsw i64 4, %72
  %74 = add nsw i64 %73, 1
  store i64 %74, ptr %19, align 8, !tbaa !11
  store i64 256, ptr %20, align 8, !tbaa !11
  %75 = load i64, ptr %19, align 8, !tbaa !11
  %76 = sitofp i64 %75 to double
  %77 = fmul double 5.000000e-13, %76
  store double %77, ptr %34, align 8, !tbaa !13
  %78 = load ptr, ptr %4, align 8, !tbaa !9
  %79 = call noundef zeroext i1 @_Z22sparserealcholeskytestPN11alglib_impl8ae_stateE(ptr noundef %78)
  %80 = zext i1 %79 to i8
  store i8 %80, ptr %27, align 1, !tbaa !5
  %81 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_Z16sparsereallutestPbPN11alglib_impl8ae_stateE(ptr noundef %28, ptr noundef %81)
  %82 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL38testtrfacunit_testdensecholeskyupdatesPbPN11alglib_impl8ae_stateE(ptr noundef %33, ptr noundef %82)
  store i64 1, ptr %18, align 8, !tbaa !11
  br label %83

83:                                               ; preds = %260, %2
  %84 = load i64, ptr %18, align 8, !tbaa !11
  %85 = load i64, ptr %19, align 8, !tbaa !11
  %86 = icmp sle i64 %84, %85
  br i1 %86, label %87, label %263

87:                                               ; preds = %83
  %88 = load i64, ptr %18, align 8, !tbaa !11
  %89 = load ptr, ptr %4, align 8, !tbaa !9
  %90 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef %88, ptr noundef %89)
  %91 = add nsw i64 1, %90
  store i64 %91, ptr %17, align 8, !tbaa !11
  %92 = load i64, ptr %18, align 8, !tbaa !11
  %93 = load ptr, ptr %4, align 8, !tbaa !9
  %94 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef %92, ptr noundef %93)
  %95 = add nsw i64 1, %94
  store i64 %95, ptr %16, align 8, !tbaa !11
  %96 = load ptr, ptr %4, align 8, !tbaa !9
  %97 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %96)
  %98 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %97, double noundef 5.000000e-01)
  br i1 %98, label %99, label %101

99:                                               ; preds = %87
  %100 = load i64, ptr %18, align 8, !tbaa !11
  store i64 %100, ptr %17, align 8, !tbaa !11
  br label %103

101:                                              ; preds = %87
  %102 = load i64, ptr %18, align 8, !tbaa !11
  store i64 %102, ptr %16, align 8, !tbaa !11
  br label %103

103:                                              ; preds = %101, %99
  %104 = load i64, ptr %16, align 8, !tbaa !11
  %105 = load i64, ptr %17, align 8, !tbaa !11
  %106 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %6, i64 noundef %104, i64 noundef %105, ptr noundef %106)
  %107 = load i64, ptr %16, align 8, !tbaa !11
  %108 = load i64, ptr %17, align 8, !tbaa !11
  %109 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %9, i64 noundef %107, i64 noundef %108, ptr noundef %109)
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %110

110:                                              ; preds = %145, %103
  %111 = load i64, ptr %21, align 8, !tbaa !11
  %112 = load i64, ptr %16, align 8, !tbaa !11
  %113 = sub nsw i64 %112, 1
  %114 = icmp sle i64 %111, %113
  br i1 %114, label %115, label %148

115:                                              ; preds = %110
  store i64 0, ptr %22, align 8, !tbaa !11
  br label %116

116:                                              ; preds = %141, %115
  %117 = load i64, ptr %22, align 8, !tbaa !11
  %118 = load i64, ptr %17, align 8, !tbaa !11
  %119 = sub nsw i64 %118, 1
  %120 = icmp sle i64 %117, %119
  br i1 %120, label %121, label %144

121:                                              ; preds = %116
  %122 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %123 = load ptr, ptr %122, align 8, !tbaa !15
  %124 = load i64, ptr %21, align 8, !tbaa !11
  %125 = getelementptr inbounds ptr, ptr %123, i64 %124
  %126 = load ptr, ptr %125, align 8, !tbaa !9
  %127 = load i64, ptr %22, align 8, !tbaa !11
  %128 = getelementptr inbounds double, ptr %126, i64 %127
  store double 0.000000e+00, ptr %128, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #6
  %129 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 0)
  %130 = getelementptr inbounds { double, double }, ptr %37, i32 0, i32 0
  %131 = extractvalue { double, double } %129, 0
  store double %131, ptr %130, align 8
  %132 = getelementptr inbounds { double, double }, ptr %37, i32 0, i32 1
  %133 = extractvalue { double, double } %129, 1
  store double %133, ptr %132, align 8
  %134 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %9, i32 0, i32 6
  %135 = load ptr, ptr %134, align 8, !tbaa !15
  %136 = load i64, ptr %21, align 8, !tbaa !11
  %137 = getelementptr inbounds ptr, ptr %135, i64 %136
  %138 = load ptr, ptr %137, align 8, !tbaa !9
  %139 = load i64, ptr %22, align 8, !tbaa !11
  %140 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %138, i64 %139
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %140, ptr align 8 %37, i64 16, i1 false), !tbaa.struct !16
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #6
  br label %141

141:                                              ; preds = %121
  %142 = load i64, ptr %22, align 8, !tbaa !11
  %143 = add nsw i64 %142, 1
  store i64 %143, ptr %22, align 8, !tbaa !11
  br label %116, !llvm.loop !17

144:                                              ; preds = %116
  br label %145

145:                                              ; preds = %144
  %146 = load i64, ptr %21, align 8, !tbaa !11
  %147 = add nsw i64 %146, 1
  store i64 %147, ptr %21, align 8, !tbaa !11
  br label %110, !llvm.loop !19

148:                                              ; preds = %110
  %149 = load i64, ptr %16, align 8, !tbaa !11
  %150 = load i64, ptr %17, align 8, !tbaa !11
  %151 = load double, ptr %34, align 8, !tbaa !13
  %152 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL28testtrfacunit_testcluproblemPKN11alglib_impl9ae_matrixElldPbS3_PNS_8ae_stateE(ptr noundef %9, i64 noundef %149, i64 noundef %150, double noundef %151, ptr noundef %31, ptr noundef %32, ptr noundef %152)
  %153 = load i64, ptr %16, align 8, !tbaa !11
  %154 = load i64, ptr %17, align 8, !tbaa !11
  %155 = load double, ptr %34, align 8, !tbaa !13
  %156 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL28testtrfacunit_testrluproblemPKN11alglib_impl9ae_matrixElldPbS3_PNS_8ae_stateE(ptr noundef %6, i64 noundef %153, i64 noundef %154, double noundef %155, ptr noundef %30, ptr noundef %32, ptr noundef %156)
  %157 = load i64, ptr %16, align 8, !tbaa !11
  %158 = load i64, ptr %17, align 8, !tbaa !11
  %159 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %6, i64 noundef %157, i64 noundef %158, ptr noundef %159)
  %160 = load i64, ptr %16, align 8, !tbaa !11
  %161 = load i64, ptr %17, align 8, !tbaa !11
  %162 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %9, i64 noundef %160, i64 noundef %161, ptr noundef %162)
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %163

163:                                              ; preds = %198, %148
  %164 = load i64, ptr %21, align 8, !tbaa !11
  %165 = load i64, ptr %16, align 8, !tbaa !11
  %166 = sub nsw i64 %165, 1
  %167 = icmp sle i64 %164, %166
  br i1 %167, label %168, label %201

168:                                              ; preds = %163
  store i64 0, ptr %22, align 8, !tbaa !11
  br label %169

169:                                              ; preds = %194, %168
  %170 = load i64, ptr %22, align 8, !tbaa !11
  %171 = load i64, ptr %17, align 8, !tbaa !11
  %172 = sub nsw i64 %171, 1
  %173 = icmp sle i64 %170, %172
  br i1 %173, label %174, label %197

174:                                              ; preds = %169
  %175 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %176 = load ptr, ptr %175, align 8, !tbaa !15
  %177 = load i64, ptr %21, align 8, !tbaa !11
  %178 = getelementptr inbounds ptr, ptr %176, i64 %177
  %179 = load ptr, ptr %178, align 8, !tbaa !9
  %180 = load i64, ptr %22, align 8, !tbaa !11
  %181 = getelementptr inbounds double, ptr %179, i64 %180
  store double 0.000000e+00, ptr %181, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #6
  %182 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 0)
  %183 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 0
  %184 = extractvalue { double, double } %182, 0
  store double %184, ptr %183, align 8
  %185 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 1
  %186 = extractvalue { double, double } %182, 1
  store double %186, ptr %185, align 8
  %187 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %9, i32 0, i32 6
  %188 = load ptr, ptr %187, align 8, !tbaa !15
  %189 = load i64, ptr %21, align 8, !tbaa !11
  %190 = getelementptr inbounds ptr, ptr %188, i64 %189
  %191 = load ptr, ptr %190, align 8, !tbaa !9
  %192 = load i64, ptr %22, align 8, !tbaa !11
  %193 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %191, i64 %192
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %193, ptr align 8 %38, i64 16, i1 false), !tbaa.struct !16
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #6
  br label %194

194:                                              ; preds = %174
  %195 = load i64, ptr %22, align 8, !tbaa !11
  %196 = add nsw i64 %195, 1
  store i64 %196, ptr %22, align 8, !tbaa !11
  br label %169, !llvm.loop !20

197:                                              ; preds = %169
  br label %198

198:                                              ; preds = %197
  %199 = load i64, ptr %21, align 8, !tbaa !11
  %200 = add nsw i64 %199, 1
  store i64 %200, ptr %21, align 8, !tbaa !11
  br label %163, !llvm.loop !21

201:                                              ; preds = %163
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %202

202:                                              ; preds = %236, %201
  %203 = load i64, ptr %21, align 8, !tbaa !11
  %204 = load i64, ptr %16, align 8, !tbaa !11
  %205 = load i64, ptr %17, align 8, !tbaa !11
  %206 = load ptr, ptr %4, align 8, !tbaa !9
  %207 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %204, i64 noundef %205, ptr noundef %206)
  %208 = sub nsw i64 %207, 1
  %209 = icmp sle i64 %203, %208
  br i1 %209, label %210, label %239

210:                                              ; preds = %202
  %211 = load ptr, ptr %4, align 8, !tbaa !9
  %212 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %211)
  %213 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %212, double 1.000000e+00)
  %214 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %215 = load ptr, ptr %214, align 8, !tbaa !15
  %216 = load i64, ptr %21, align 8, !tbaa !11
  %217 = getelementptr inbounds ptr, ptr %215, i64 %216
  %218 = load ptr, ptr %217, align 8, !tbaa !9
  %219 = load i64, ptr %21, align 8, !tbaa !11
  %220 = getelementptr inbounds double, ptr %218, i64 %219
  store double %213, ptr %220, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #6
  %221 = load ptr, ptr %4, align 8, !tbaa !9
  %222 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %221)
  %223 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %222, double 1.000000e+00)
  %224 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef %223)
  %225 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 0
  %226 = extractvalue { double, double } %224, 0
  store double %226, ptr %225, align 8
  %227 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 1
  %228 = extractvalue { double, double } %224, 1
  store double %228, ptr %227, align 8
  %229 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %9, i32 0, i32 6
  %230 = load ptr, ptr %229, align 8, !tbaa !15
  %231 = load i64, ptr %21, align 8, !tbaa !11
  %232 = getelementptr inbounds ptr, ptr %230, i64 %231
  %233 = load ptr, ptr %232, align 8, !tbaa !9
  %234 = load i64, ptr %21, align 8, !tbaa !11
  %235 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %233, i64 %234
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %235, ptr align 8 %39, i64 16, i1 false), !tbaa.struct !16
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #6
  br label %236

236:                                              ; preds = %210
  %237 = load i64, ptr %21, align 8, !tbaa !11
  %238 = add nsw i64 %237, 1
  store i64 %238, ptr %21, align 8, !tbaa !11
  br label %202, !llvm.loop !22

239:                                              ; preds = %202
  %240 = load i64, ptr %16, align 8, !tbaa !11
  %241 = load i64, ptr %17, align 8, !tbaa !11
  %242 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl31cmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %9, i64 noundef %240, i64 noundef %241, ptr noundef %242)
  %243 = load i64, ptr %16, align 8, !tbaa !11
  %244 = load i64, ptr %17, align 8, !tbaa !11
  %245 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl32cmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %9, i64 noundef %243, i64 noundef %244, ptr noundef %245)
  %246 = load i64, ptr %16, align 8, !tbaa !11
  %247 = load i64, ptr %17, align 8, !tbaa !11
  %248 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl31rmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %6, i64 noundef %246, i64 noundef %247, ptr noundef %248)
  %249 = load i64, ptr %16, align 8, !tbaa !11
  %250 = load i64, ptr %17, align 8, !tbaa !11
  %251 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl32rmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %6, i64 noundef %249, i64 noundef %250, ptr noundef %251)
  %252 = load i64, ptr %16, align 8, !tbaa !11
  %253 = load i64, ptr %17, align 8, !tbaa !11
  %254 = load double, ptr %34, align 8, !tbaa !13
  %255 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL28testtrfacunit_testcluproblemPKN11alglib_impl9ae_matrixElldPbS3_PNS_8ae_stateE(ptr noundef %9, i64 noundef %252, i64 noundef %253, double noundef %254, ptr noundef %31, ptr noundef %32, ptr noundef %255)
  %256 = load i64, ptr %16, align 8, !tbaa !11
  %257 = load i64, ptr %17, align 8, !tbaa !11
  %258 = load double, ptr %34, align 8, !tbaa !13
  %259 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL28testtrfacunit_testrluproblemPKN11alglib_impl9ae_matrixElldPbS3_PNS_8ae_stateE(ptr noundef %6, i64 noundef %256, i64 noundef %257, double noundef %258, ptr noundef %30, ptr noundef %32, ptr noundef %259)
  br label %260

260:                                              ; preds = %239
  %261 = load i64, ptr %18, align 8, !tbaa !11
  %262 = add nsw i64 %261, 1
  store i64 %262, ptr %18, align 8, !tbaa !11
  br label %83, !llvm.loop !23

263:                                              ; preds = %83
  store i64 1, ptr %35, align 8, !tbaa !11
  br label %264

264:                                              ; preds = %381, %263
  %265 = load i64, ptr %35, align 8, !tbaa !11
  %266 = icmp sle i64 %265, 2
  br i1 %266, label %267, label %384

267:                                              ; preds = %264
  %268 = load i64, ptr %20, align 8, !tbaa !11
  %269 = load ptr, ptr %4, align 8, !tbaa !9
  %270 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3, ptr noundef %269)
  %271 = sub nsw i64 %270, 1
  %272 = add nsw i64 %268, %271
  store i64 %272, ptr %16, align 8, !tbaa !11
  %273 = load i64, ptr %20, align 8, !tbaa !11
  %274 = load ptr, ptr %4, align 8, !tbaa !9
  %275 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3, ptr noundef %274)
  %276 = sub nsw i64 %275, 1
  %277 = add nsw i64 %273, %276
  store i64 %277, ptr %17, align 8, !tbaa !11
  %278 = load i64, ptr %16, align 8, !tbaa !11
  %279 = load i64, ptr %17, align 8, !tbaa !11
  %280 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %6, i64 noundef %278, i64 noundef %279, ptr noundef %280)
  %281 = load i64, ptr %16, align 8, !tbaa !11
  %282 = load i64, ptr %17, align 8, !tbaa !11
  %283 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %9, i64 noundef %281, i64 noundef %282, ptr noundef %283)
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %284

284:                                              ; preds = %319, %267
  %285 = load i64, ptr %21, align 8, !tbaa !11
  %286 = load i64, ptr %16, align 8, !tbaa !11
  %287 = sub nsw i64 %286, 1
  %288 = icmp sle i64 %285, %287
  br i1 %288, label %289, label %322

289:                                              ; preds = %284
  store i64 0, ptr %22, align 8, !tbaa !11
  br label %290

290:                                              ; preds = %315, %289
  %291 = load i64, ptr %22, align 8, !tbaa !11
  %292 = load i64, ptr %17, align 8, !tbaa !11
  %293 = sub nsw i64 %292, 1
  %294 = icmp sle i64 %291, %293
  br i1 %294, label %295, label %318

295:                                              ; preds = %290
  %296 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %297 = load ptr, ptr %296, align 8, !tbaa !15
  %298 = load i64, ptr %21, align 8, !tbaa !11
  %299 = getelementptr inbounds ptr, ptr %297, i64 %298
  %300 = load ptr, ptr %299, align 8, !tbaa !9
  %301 = load i64, ptr %22, align 8, !tbaa !11
  %302 = getelementptr inbounds double, ptr %300, i64 %301
  store double 0.000000e+00, ptr %302, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #6
  %303 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 0)
  %304 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 0
  %305 = extractvalue { double, double } %303, 0
  store double %305, ptr %304, align 8
  %306 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 1
  %307 = extractvalue { double, double } %303, 1
  store double %307, ptr %306, align 8
  %308 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %9, i32 0, i32 6
  %309 = load ptr, ptr %308, align 8, !tbaa !15
  %310 = load i64, ptr %21, align 8, !tbaa !11
  %311 = getelementptr inbounds ptr, ptr %309, i64 %310
  %312 = load ptr, ptr %311, align 8, !tbaa !9
  %313 = load i64, ptr %22, align 8, !tbaa !11
  %314 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %312, i64 %313
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %314, ptr align 8 %40, i64 16, i1 false), !tbaa.struct !16
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #6
  br label %315

315:                                              ; preds = %295
  %316 = load i64, ptr %22, align 8, !tbaa !11
  %317 = add nsw i64 %316, 1
  store i64 %317, ptr %22, align 8, !tbaa !11
  br label %290, !llvm.loop !24

318:                                              ; preds = %290
  br label %319

319:                                              ; preds = %318
  %320 = load i64, ptr %21, align 8, !tbaa !11
  %321 = add nsw i64 %320, 1
  store i64 %321, ptr %21, align 8, !tbaa !11
  br label %284, !llvm.loop !25

322:                                              ; preds = %284
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %323

323:                                              ; preds = %357, %322
  %324 = load i64, ptr %21, align 8, !tbaa !11
  %325 = load i64, ptr %16, align 8, !tbaa !11
  %326 = load i64, ptr %17, align 8, !tbaa !11
  %327 = load ptr, ptr %4, align 8, !tbaa !9
  %328 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %325, i64 noundef %326, ptr noundef %327)
  %329 = sub nsw i64 %328, 1
  %330 = icmp sle i64 %324, %329
  br i1 %330, label %331, label %360

331:                                              ; preds = %323
  %332 = load ptr, ptr %4, align 8, !tbaa !9
  %333 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %332)
  %334 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %333, double 1.000000e+00)
  %335 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %336 = load ptr, ptr %335, align 8, !tbaa !15
  %337 = load i64, ptr %21, align 8, !tbaa !11
  %338 = getelementptr inbounds ptr, ptr %336, i64 %337
  %339 = load ptr, ptr %338, align 8, !tbaa !9
  %340 = load i64, ptr %21, align 8, !tbaa !11
  %341 = getelementptr inbounds double, ptr %339, i64 %340
  store double %334, ptr %341, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #6
  %342 = load ptr, ptr %4, align 8, !tbaa !9
  %343 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %342)
  %344 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %343, double 1.000000e+00)
  %345 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef %344)
  %346 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 0
  %347 = extractvalue { double, double } %345, 0
  store double %347, ptr %346, align 8
  %348 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 1
  %349 = extractvalue { double, double } %345, 1
  store double %349, ptr %348, align 8
  %350 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %9, i32 0, i32 6
  %351 = load ptr, ptr %350, align 8, !tbaa !15
  %352 = load i64, ptr %21, align 8, !tbaa !11
  %353 = getelementptr inbounds ptr, ptr %351, i64 %352
  %354 = load ptr, ptr %353, align 8, !tbaa !9
  %355 = load i64, ptr %21, align 8, !tbaa !11
  %356 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %354, i64 %355
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %356, ptr align 8 %41, i64 16, i1 false), !tbaa.struct !16
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #6
  br label %357

357:                                              ; preds = %331
  %358 = load i64, ptr %21, align 8, !tbaa !11
  %359 = add nsw i64 %358, 1
  store i64 %359, ptr %21, align 8, !tbaa !11
  br label %323, !llvm.loop !26

360:                                              ; preds = %323
  %361 = load i64, ptr %16, align 8, !tbaa !11
  %362 = load i64, ptr %17, align 8, !tbaa !11
  %363 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl31cmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %9, i64 noundef %361, i64 noundef %362, ptr noundef %363)
  %364 = load i64, ptr %16, align 8, !tbaa !11
  %365 = load i64, ptr %17, align 8, !tbaa !11
  %366 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl32cmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %9, i64 noundef %364, i64 noundef %365, ptr noundef %366)
  %367 = load i64, ptr %16, align 8, !tbaa !11
  %368 = load i64, ptr %17, align 8, !tbaa !11
  %369 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl31rmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %6, i64 noundef %367, i64 noundef %368, ptr noundef %369)
  %370 = load i64, ptr %16, align 8, !tbaa !11
  %371 = load i64, ptr %17, align 8, !tbaa !11
  %372 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl32rmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %6, i64 noundef %370, i64 noundef %371, ptr noundef %372)
  %373 = load i64, ptr %16, align 8, !tbaa !11
  %374 = load i64, ptr %17, align 8, !tbaa !11
  %375 = load double, ptr %34, align 8, !tbaa !13
  %376 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL28testtrfacunit_testcluproblemPKN11alglib_impl9ae_matrixElldPbS3_PNS_8ae_stateE(ptr noundef %9, i64 noundef %373, i64 noundef %374, double noundef %375, ptr noundef %31, ptr noundef %32, ptr noundef %376)
  %377 = load i64, ptr %16, align 8, !tbaa !11
  %378 = load i64, ptr %17, align 8, !tbaa !11
  %379 = load double, ptr %34, align 8, !tbaa !13
  %380 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL28testtrfacunit_testrluproblemPKN11alglib_impl9ae_matrixElldPbS3_PNS_8ae_stateE(ptr noundef %6, i64 noundef %377, i64 noundef %378, double noundef %379, ptr noundef %30, ptr noundef %32, ptr noundef %380)
  br label %381

381:                                              ; preds = %360
  %382 = load i64, ptr %35, align 8, !tbaa !11
  %383 = add nsw i64 %382, 1
  store i64 %383, ptr %35, align 8, !tbaa !11
  br label %264, !llvm.loop !27

384:                                              ; preds = %264
  store i64 1, ptr %17, align 8, !tbaa !11
  br label %385

385:                                              ; preds = %1199, %384
  %386 = load i64, ptr %17, align 8, !tbaa !11
  %387 = load i64, ptr %19, align 8, !tbaa !11
  %388 = icmp sle i64 %386, %387
  br i1 %388, label %389, label %1202

389:                                              ; preds = %385
  %390 = load i64, ptr %17, align 8, !tbaa !11
  %391 = load ptr, ptr %4, align 8, !tbaa !9
  %392 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %391)
  %393 = call double @llvm.fmuladd.f64(double 5.000000e+01, double %392, double 1.000000e+00)
  %394 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl16hpdmatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %390, double noundef %393, ptr noundef %9, ptr noundef %394)
  %395 = load i64, ptr %17, align 8, !tbaa !11
  %396 = load i64, ptr %17, align 8, !tbaa !11
  %397 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %10, i64 noundef %395, i64 noundef %396, ptr noundef %397)
  %398 = load i64, ptr %17, align 8, !tbaa !11
  %399 = load i64, ptr %17, align 8, !tbaa !11
  %400 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %11, i64 noundef %398, i64 noundef %399, ptr noundef %400)
  %401 = load i64, ptr %17, align 8, !tbaa !11
  %402 = load i64, ptr %17, align 8, !tbaa !11
  %403 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %14, i64 noundef %401, i64 noundef %402, ptr noundef %403)
  %404 = load i64, ptr %17, align 8, !tbaa !11
  %405 = load i64, ptr %17, align 8, !tbaa !11
  %406 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %15, i64 noundef %404, i64 noundef %405, ptr noundef %406)
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %407

407:                                              ; preds = %495, %389
  %408 = load i64, ptr %21, align 8, !tbaa !11
  %409 = load i64, ptr %17, align 8, !tbaa !11
  %410 = sub nsw i64 %409, 1
  %411 = icmp sle i64 %408, %410
  br i1 %411, label %412, label %498

412:                                              ; preds = %407
  store i64 0, ptr %22, align 8, !tbaa !11
  br label %413

413:                                              ; preds = %491, %412
  %414 = load i64, ptr %22, align 8, !tbaa !11
  %415 = load i64, ptr %17, align 8, !tbaa !11
  %416 = sub nsw i64 %415, 1
  %417 = icmp sle i64 %414, %416
  br i1 %417, label %418, label %494

418:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #6
  %419 = load ptr, ptr %4, align 8, !tbaa !9
  %420 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %419)
  %421 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %420, double noundef 5.000000e-01)
  %422 = load i64, ptr %21, align 8, !tbaa !11
  %423 = sitofp i64 %422 to double
  %424 = load ptr, ptr %4, align 8, !tbaa !9
  %425 = getelementptr inbounds %"struct.alglib_impl::ae_state", ptr %424, i32 0, i32 3
  %426 = load double, ptr %425, align 8, !tbaa !28
  %427 = load ptr, ptr %4, align 8, !tbaa !9
  %428 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext %421, double noundef %423, double noundef %426, ptr noundef %427)
  %429 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef %428)
  %430 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 0
  %431 = extractvalue { double, double } %429, 0
  store double %431, ptr %430, align 8
  %432 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 1
  %433 = extractvalue { double, double } %429, 1
  store double %433, ptr %432, align 8
  %434 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %435 = load ptr, ptr %434, align 8, !tbaa !15
  %436 = load i64, ptr %21, align 8, !tbaa !11
  %437 = getelementptr inbounds ptr, ptr %435, i64 %436
  %438 = load ptr, ptr %437, align 8, !tbaa !9
  %439 = load i64, ptr %22, align 8, !tbaa !11
  %440 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %438, i64 %439
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %440, ptr align 8 %42, i64 16, i1 false), !tbaa.struct !16
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #6
  %441 = load ptr, ptr %4, align 8, !tbaa !9
  %442 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %441)
  %443 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %442, double noundef 5.000000e-01)
  %444 = load i64, ptr %22, align 8, !tbaa !11
  %445 = sitofp i64 %444 to double
  %446 = load ptr, ptr %4, align 8, !tbaa !9
  %447 = getelementptr inbounds %"struct.alglib_impl::ae_state", ptr %446, i32 0, i32 2
  %448 = load double, ptr %447, align 8, !tbaa !33
  %449 = load ptr, ptr %4, align 8, !tbaa !9
  %450 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext %443, double noundef %445, double noundef %448, ptr noundef %449)
  %451 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef %450)
  %452 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 0
  %453 = extractvalue { double, double } %451, 0
  store double %453, ptr %452, align 8
  %454 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 1
  %455 = extractvalue { double, double } %451, 1
  store double %455, ptr %454, align 8
  %456 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %457 = load ptr, ptr %456, align 8, !tbaa !15
  %458 = load i64, ptr %21, align 8, !tbaa !11
  %459 = getelementptr inbounds ptr, ptr %457, i64 %458
  %460 = load ptr, ptr %459, align 8, !tbaa !9
  %461 = load i64, ptr %22, align 8, !tbaa !11
  %462 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %460, i64 %461
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %462, ptr align 8 %43, i64 16, i1 false), !tbaa.struct !16
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #6
  %463 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %464 = load ptr, ptr %463, align 8, !tbaa !15
  %465 = load i64, ptr %21, align 8, !tbaa !11
  %466 = getelementptr inbounds ptr, ptr %464, i64 %465
  %467 = load ptr, ptr %466, align 8, !tbaa !9
  %468 = load i64, ptr %22, align 8, !tbaa !11
  %469 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %467, i64 %468
  %470 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %14, i32 0, i32 6
  %471 = load ptr, ptr %470, align 8, !tbaa !15
  %472 = load i64, ptr %21, align 8, !tbaa !11
  %473 = getelementptr inbounds ptr, ptr %471, i64 %472
  %474 = load ptr, ptr %473, align 8, !tbaa !9
  %475 = load i64, ptr %22, align 8, !tbaa !11
  %476 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %474, i64 %475
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %476, ptr align 8 %469, i64 16, i1 false), !tbaa.struct !16
  %477 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %478 = load ptr, ptr %477, align 8, !tbaa !15
  %479 = load i64, ptr %21, align 8, !tbaa !11
  %480 = getelementptr inbounds ptr, ptr %478, i64 %479
  %481 = load ptr, ptr %480, align 8, !tbaa !9
  %482 = load i64, ptr %22, align 8, !tbaa !11
  %483 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %481, i64 %482
  %484 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %15, i32 0, i32 6
  %485 = load ptr, ptr %484, align 8, !tbaa !15
  %486 = load i64, ptr %21, align 8, !tbaa !11
  %487 = getelementptr inbounds ptr, ptr %485, i64 %486
  %488 = load ptr, ptr %487, align 8, !tbaa !9
  %489 = load i64, ptr %22, align 8, !tbaa !11
  %490 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %488, i64 %489
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %490, ptr align 8 %483, i64 16, i1 false), !tbaa.struct !16
  br label %491

491:                                              ; preds = %418
  %492 = load i64, ptr %22, align 8, !tbaa !11
  %493 = add nsw i64 %492, 1
  store i64 %493, ptr %22, align 8, !tbaa !11
  br label %413, !llvm.loop !34

494:                                              ; preds = %413
  br label %495

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

498:                                              ; preds = %407
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %499

499:                                              ; preds = %537, %498
  %500 = load i64, ptr %21, align 8, !tbaa !11
  %501 = load i64, ptr %17, align 8, !tbaa !11
  %502 = sub nsw i64 %501, 1
  %503 = icmp sle i64 %500, %502
  br i1 %503, label %504, label %540

504:                                              ; preds = %499
  %505 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %506 = load ptr, ptr %505, align 8, !tbaa !15
  %507 = load i64, ptr %21, align 8, !tbaa !11
  %508 = getelementptr inbounds ptr, ptr %506, i64 %507
  %509 = load ptr, ptr %508, align 8, !tbaa !9
  %510 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %509, i64 0
  %511 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %9, i32 0, i32 6
  %512 = load ptr, ptr %511, align 8, !tbaa !15
  %513 = load i64, ptr %21, align 8, !tbaa !11
  %514 = getelementptr inbounds ptr, ptr %512, i64 %513
  %515 = load ptr, ptr %514, align 8, !tbaa !9
  %516 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %515, i64 0
  %517 = load i64, ptr %21, align 8, !tbaa !11
  %518 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %517)
  call void @_ZN11alglib_impl10ae_v_cmoveEPNS_10ae_complexElPKS0_lPKcl(ptr noundef %510, i64 noundef 1, ptr noundef %516, i64 noundef 1, ptr noundef @.str.67, i64 noundef %518)
  %519 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %520 = load ptr, ptr %519, align 8, !tbaa !15
  %521 = load i64, ptr %21, align 8, !tbaa !11
  %522 = getelementptr inbounds ptr, ptr %520, i64 %521
  %523 = load ptr, ptr %522, align 8, !tbaa !9
  %524 = load i64, ptr %21, align 8, !tbaa !11
  %525 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %523, i64 %524
  %526 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %9, i32 0, i32 6
  %527 = load ptr, ptr %526, align 8, !tbaa !15
  %528 = load i64, ptr %21, align 8, !tbaa !11
  %529 = getelementptr inbounds ptr, ptr %527, i64 %528
  %530 = load ptr, ptr %529, align 8, !tbaa !9
  %531 = load i64, ptr %21, align 8, !tbaa !11
  %532 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %530, i64 %531
  %533 = load i64, ptr %21, align 8, !tbaa !11
  %534 = load i64, ptr %17, align 8, !tbaa !11
  %535 = sub nsw i64 %534, 1
  %536 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %533, i64 noundef %535)
  call void @_ZN11alglib_impl10ae_v_cmoveEPNS_10ae_complexElPKS0_lPKcl(ptr noundef %525, i64 noundef 1, ptr noundef %532, i64 noundef 1, ptr noundef @.str.67, i64 noundef %536)
  br label %537

537:                                              ; preds = %504
  %538 = load i64, ptr %21, align 8, !tbaa !11
  %539 = add nsw i64 %538, 1
  store i64 %539, ptr %21, align 8, !tbaa !11
  br label %499, !llvm.loop !36

540:                                              ; preds = %499
  %541 = load i64, ptr %17, align 8, !tbaa !11
  %542 = load ptr, ptr %4, align 8, !tbaa !9
  %543 = call noundef zeroext i1 @_ZN11alglib_impl17hpdmatrixcholeskyEPNS_9ae_matrixElbPNS_8ae_stateE(ptr noundef %10, i64 noundef %541, i1 noundef zeroext false, ptr noundef %542)
  br i1 %543, label %544, label %653

544:                                              ; preds = %540
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %545

545:                                              ; preds = %649, %544
  %546 = load i64, ptr %21, align 8, !tbaa !11
  %547 = load i64, ptr %17, align 8, !tbaa !11
  %548 = sub nsw i64 %547, 1
  %549 = icmp sle i64 %546, %548
  br i1 %549, label %550, label %652

550:                                              ; preds = %545
  store i64 0, ptr %22, align 8, !tbaa !11
  br label %551

551:                                              ; preds = %645, %550
  %552 = load i64, ptr %22, align 8, !tbaa !11
  %553 = load i64, ptr %17, align 8, !tbaa !11
  %554 = sub nsw i64 %553, 1
  %555 = icmp sle i64 %552, %554
  br i1 %555, label %556, label %648

556:                                              ; preds = %551
  %557 = load i64, ptr %22, align 8, !tbaa !11
  %558 = load i64, ptr %21, align 8, !tbaa !11
  %559 = icmp sgt i64 %557, %558
  br i1 %559, label %560, label %590

560:                                              ; preds = %556
  %561 = load i8, ptr %29, align 1, !tbaa !5, !range !37, !noundef !38
  %562 = trunc i8 %561 to i1
  br i1 %562, label %587, label %563

563:                                              ; preds = %560
  %564 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %565 = load ptr, ptr %564, align 8, !tbaa !15
  %566 = load i64, ptr %21, align 8, !tbaa !11
  %567 = getelementptr inbounds ptr, ptr %565, i64 %566
  %568 = load ptr, ptr %567, align 8, !tbaa !9
  %569 = load i64, ptr %22, align 8, !tbaa !11
  %570 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %568, i64 %569
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %44, ptr align 8 %570, i64 16, i1 false), !tbaa.struct !16
  %571 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %14, i32 0, i32 6
  %572 = load ptr, ptr %571, align 8, !tbaa !15
  %573 = load i64, ptr %21, align 8, !tbaa !11
  %574 = getelementptr inbounds ptr, ptr %572, i64 %573
  %575 = load ptr, ptr %574, align 8, !tbaa !9
  %576 = load i64, ptr %22, align 8, !tbaa !11
  %577 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %575, i64 %576
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %45, ptr align 8 %577, i64 16, i1 false), !tbaa.struct !16
  %578 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 0
  %579 = load double, ptr %578, align 8
  %580 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 1
  %581 = load double, ptr %580, align 8
  %582 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 0
  %583 = load double, ptr %582, align 8
  %584 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 1
  %585 = load double, ptr %584, align 8
  %586 = call noundef zeroext i1 @_ZN11alglib_impl8ae_c_neqENS_10ae_complexES0_(double %579, double %581, double %583, double %585)
  br label %587

587:                                              ; preds = %563, %560
  %588 = phi i1 [ true, %560 ], [ %586, %563 ]
  %589 = zext i1 %588 to i8
  store i8 %589, ptr %29, align 1, !tbaa !5
  br label %644

590:                                              ; preds = %556
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #6
  %591 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %592 = load ptr, ptr %591, align 8, !tbaa !15
  %593 = load i64, ptr %21, align 8, !tbaa !11
  %594 = getelementptr inbounds ptr, ptr %592, i64 %593
  %595 = load ptr, ptr %594, align 8, !tbaa !9
  %596 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %595, i64 0
  %597 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %598 = load ptr, ptr %597, align 8, !tbaa !15
  %599 = load i64, ptr %22, align 8, !tbaa !11
  %600 = getelementptr inbounds ptr, ptr %598, i64 %599
  %601 = load ptr, ptr %600, align 8, !tbaa !9
  %602 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %601, i64 0
  %603 = load i64, ptr %22, align 8, !tbaa !11
  %604 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %603)
  %605 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %596, i64 noundef 1, ptr noundef @.str.67, ptr noundef %602, i64 noundef 1, ptr noundef @.str.68, i64 noundef %604)
  %606 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 0
  %607 = extractvalue { double, double } %605, 0
  store double %607, ptr %606, align 8
  %608 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 1
  %609 = extractvalue { double, double } %605, 1
  store double %609, ptr %608, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %23, ptr align 8 %46, i64 16, i1 false), !tbaa.struct !16
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #6
  %610 = load i8, ptr %29, align 1, !tbaa !5, !range !37, !noundef !38
  %611 = trunc i8 %610 to i1
  br i1 %611, label %641, label %612

612:                                              ; preds = %590
  %613 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %9, i32 0, i32 6
  %614 = load ptr, ptr %613, align 8, !tbaa !15
  %615 = load i64, ptr %21, align 8, !tbaa !11
  %616 = getelementptr inbounds ptr, ptr %614, i64 %615
  %617 = load ptr, ptr %616, align 8, !tbaa !9
  %618 = load i64, ptr %22, align 8, !tbaa !11
  %619 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %617, i64 %618
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %48, ptr align 8 %619, i64 16, i1 false), !tbaa.struct !16
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %49, ptr align 8 %23, i64 16, i1 false), !tbaa.struct !16
  %620 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 0
  %621 = load double, ptr %620, align 8
  %622 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 1
  %623 = load double, ptr %622, align 8
  %624 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 0
  %625 = load double, ptr %624, align 8
  %626 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 1
  %627 = load double, ptr %626, align 8
  %628 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %621, double %623, double %625, double %627)
  %629 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 0
  %630 = extractvalue { double, double } %628, 0
  store double %630, ptr %629, align 8
  %631 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 1
  %632 = extractvalue { double, double } %628, 1
  store double %632, ptr %631, align 8
  %633 = load ptr, ptr %4, align 8, !tbaa !9
  %634 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 0
  %635 = load double, ptr %634, align 8
  %636 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 1
  %637 = load double, ptr %636, align 8
  %638 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %635, double %637, ptr noundef %633)
  %639 = load double, ptr %34, align 8, !tbaa !13
  %640 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %638, double noundef %639)
  br label %641

641:                                              ; preds = %612, %590
  %642 = phi i1 [ true, %590 ], [ %640, %612 ]
  %643 = zext i1 %642 to i8
  store i8 %643, ptr %29, align 1, !tbaa !5
  br label %644

644:                                              ; preds = %641, %587
  br label %645

645:                                              ; preds = %644
  %646 = load i64, ptr %22, align 8, !tbaa !11
  %647 = add nsw i64 %646, 1
  store i64 %647, ptr %22, align 8, !tbaa !11
  br label %551, !llvm.loop !39

648:                                              ; preds = %551
  br label %649

649:                                              ; preds = %648
  %650 = load i64, ptr %21, align 8, !tbaa !11
  %651 = add nsw i64 %650, 1
  store i64 %651, ptr %21, align 8, !tbaa !11
  br label %545, !llvm.loop !40

652:                                              ; preds = %545
  br label %654

653:                                              ; preds = %540
  store i8 1, ptr %29, align 1, !tbaa !5
  br label %654

654:                                              ; preds = %653, %652
  %655 = load i64, ptr %17, align 8, !tbaa !11
  %656 = load ptr, ptr %4, align 8, !tbaa !9
  %657 = call noundef zeroext i1 @_ZN11alglib_impl17hpdmatrixcholeskyEPNS_9ae_matrixElbPNS_8ae_stateE(ptr noundef %11, i64 noundef %655, i1 noundef zeroext true, ptr noundef %656)
  br i1 %657, label %658, label %771

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

659:                                              ; preds = %767, %658
  %660 = load i64, ptr %21, align 8, !tbaa !11
  %661 = load i64, ptr %17, align 8, !tbaa !11
  %662 = sub nsw i64 %661, 1
  %663 = icmp sle i64 %660, %662
  br i1 %663, label %664, label %770

664:                                              ; preds = %659
  store i64 0, ptr %22, align 8, !tbaa !11
  br label %665

665:                                              ; preds = %763, %664
  %666 = load i64, ptr %22, align 8, !tbaa !11
  %667 = load i64, ptr %17, align 8, !tbaa !11
  %668 = sub nsw i64 %667, 1
  %669 = icmp sle i64 %666, %668
  br i1 %669, label %670, label %766

670:                                              ; preds = %665
  %671 = load i64, ptr %22, align 8, !tbaa !11
  %672 = load i64, ptr %21, align 8, !tbaa !11
  %673 = icmp slt i64 %671, %672
  br i1 %673, label %674, label %704

674:                                              ; preds = %670
  %675 = load i8, ptr %29, align 1, !tbaa !5, !range !37, !noundef !38
  %676 = trunc i8 %675 to i1
  br i1 %676, label %701, label %677

677:                                              ; preds = %674
  %678 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %679 = load ptr, ptr %678, align 8, !tbaa !15
  %680 = load i64, ptr %21, align 8, !tbaa !11
  %681 = getelementptr inbounds ptr, ptr %679, i64 %680
  %682 = load ptr, ptr %681, align 8, !tbaa !9
  %683 = load i64, ptr %22, align 8, !tbaa !11
  %684 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %682, i64 %683
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %50, ptr align 8 %684, i64 16, i1 false), !tbaa.struct !16
  %685 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %15, i32 0, i32 6
  %686 = load ptr, ptr %685, align 8, !tbaa !15
  %687 = load i64, ptr %21, align 8, !tbaa !11
  %688 = getelementptr inbounds ptr, ptr %686, i64 %687
  %689 = load ptr, ptr %688, align 8, !tbaa !9
  %690 = load i64, ptr %22, align 8, !tbaa !11
  %691 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %689, i64 %690
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %51, ptr align 8 %691, i64 16, i1 false), !tbaa.struct !16
  %692 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 0
  %693 = load double, ptr %692, align 8
  %694 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 1
  %695 = load double, ptr %694, align 8
  %696 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 0
  %697 = load double, ptr %696, align 8
  %698 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 1
  %699 = load double, ptr %698, align 8
  %700 = call noundef zeroext i1 @_ZN11alglib_impl8ae_c_neqENS_10ae_complexES0_(double %693, double %695, double %697, double %699)
  br label %701

701:                                              ; preds = %677, %674
  %702 = phi i1 [ true, %674 ], [ %700, %677 ]
  %703 = zext i1 %702 to i8
  store i8 %703, ptr %29, align 1, !tbaa !5
  br label %762

704:                                              ; preds = %670
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #6
  %705 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %706 = load ptr, ptr %705, align 8, !tbaa !15
  %707 = getelementptr inbounds ptr, ptr %706, i64 0
  %708 = load ptr, ptr %707, align 8, !tbaa !9
  %709 = load i64, ptr %21, align 8, !tbaa !11
  %710 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %708, i64 %709
  %711 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 2
  %712 = load i64, ptr %711, align 8, !tbaa !41
  %713 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %714 = load ptr, ptr %713, align 8, !tbaa !15
  %715 = getelementptr inbounds ptr, ptr %714, i64 0
  %716 = load ptr, ptr %715, align 8, !tbaa !9
  %717 = load i64, ptr %22, align 8, !tbaa !11
  %718 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %716, i64 %717
  %719 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 2
  %720 = load i64, ptr %719, align 8, !tbaa !41
  %721 = load i64, ptr %21, align 8, !tbaa !11
  %722 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %721)
  %723 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %710, i64 noundef %712, ptr noundef @.str.68, ptr noundef %718, i64 noundef %720, ptr noundef @.str.67, i64 noundef %722)
  %724 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 0
  %725 = extractvalue { double, double } %723, 0
  store double %725, ptr %724, align 8
  %726 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 1
  %727 = extractvalue { double, double } %723, 1
  store double %727, ptr %726, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %23, ptr align 8 %52, i64 16, i1 false), !tbaa.struct !16
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #6
  %728 = load i8, ptr %29, align 1, !tbaa !5, !range !37, !noundef !38
  %729 = trunc i8 %728 to i1
  br i1 %729, label %759, label %730

730:                                              ; preds = %704
  %731 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %9, i32 0, i32 6
  %732 = load ptr, ptr %731, align 8, !tbaa !15
  %733 = load i64, ptr %21, align 8, !tbaa !11
  %734 = getelementptr inbounds ptr, ptr %732, i64 %733
  %735 = load ptr, ptr %734, align 8, !tbaa !9
  %736 = load i64, ptr %22, align 8, !tbaa !11
  %737 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %735, i64 %736
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %54, ptr align 8 %737, i64 16, i1 false), !tbaa.struct !16
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %55, ptr align 8 %23, i64 16, i1 false), !tbaa.struct !16
  %738 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 0
  %739 = load double, ptr %738, align 8
  %740 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 1
  %741 = load double, ptr %740, align 8
  %742 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 0
  %743 = load double, ptr %742, align 8
  %744 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 1
  %745 = load double, ptr %744, align 8
  %746 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %739, double %741, double %743, double %745)
  %747 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 0
  %748 = extractvalue { double, double } %746, 0
  store double %748, ptr %747, align 8
  %749 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 1
  %750 = extractvalue { double, double } %746, 1
  store double %750, ptr %749, align 8
  %751 = load ptr, ptr %4, align 8, !tbaa !9
  %752 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 0
  %753 = load double, ptr %752, align 8
  %754 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 1
  %755 = load double, ptr %754, align 8
  %756 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %753, double %755, ptr noundef %751)
  %757 = load double, ptr %34, align 8, !tbaa !13
  %758 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %756, double noundef %757)
  br label %759

759:                                              ; preds = %730, %704
  %760 = phi i1 [ true, %704 ], [ %758, %730 ]
  %761 = zext i1 %760 to i8
  store i8 %761, ptr %29, align 1, !tbaa !5
  br label %762

762:                                              ; preds = %759, %701
  br label %763

763:                                              ; preds = %762
  %764 = load i64, ptr %22, align 8, !tbaa !11
  %765 = add nsw i64 %764, 1
  store i64 %765, ptr %22, align 8, !tbaa !11
  br label %665, !llvm.loop !43

766:                                              ; preds = %665
  br label %767

767:                                              ; preds = %766
  %768 = load i64, ptr %21, align 8, !tbaa !11
  %769 = add nsw i64 %768, 1
  store i64 %769, ptr %21, align 8, !tbaa !11
  br label %659, !llvm.loop !44

770:                                              ; preds = %659
  br label %772

771:                                              ; preds = %654
  store i8 1, ptr %29, align 1, !tbaa !5
  br label %772

772:                                              ; preds = %771, %770
  %773 = load i64, ptr %17, align 8, !tbaa !11
  %774 = load ptr, ptr %4, align 8, !tbaa !9
  %775 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %774)
  %776 = call double @llvm.fmuladd.f64(double 5.000000e+01, double %775, double 1.000000e+00)
  %777 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl16spdmatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %773, double noundef %776, ptr noundef %6, ptr noundef %777)
  %778 = load i64, ptr %17, align 8, !tbaa !11
  %779 = load i64, ptr %17, align 8, !tbaa !11
  %780 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %7, i64 noundef %778, i64 noundef %779, ptr noundef %780)
  %781 = load i64, ptr %17, align 8, !tbaa !11
  %782 = load i64, ptr %17, align 8, !tbaa !11
  %783 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %8, i64 noundef %781, i64 noundef %782, ptr noundef %783)
  %784 = load i64, ptr %17, align 8, !tbaa !11
  %785 = load i64, ptr %17, align 8, !tbaa !11
  %786 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %12, i64 noundef %784, i64 noundef %785, ptr noundef %786)
  %787 = load i64, ptr %17, align 8, !tbaa !11
  %788 = load i64, ptr %17, align 8, !tbaa !11
  %789 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %13, i64 noundef %787, i64 noundef %788, ptr noundef %789)
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %790

790:                                              ; preds = %870, %772
  %791 = load i64, ptr %21, align 8, !tbaa !11
  %792 = load i64, ptr %17, align 8, !tbaa !11
  %793 = sub nsw i64 %792, 1
  %794 = icmp sle i64 %791, %793
  br i1 %794, label %795, label %873

795:                                              ; preds = %790
  store i64 0, ptr %22, align 8, !tbaa !11
  br label %796

796:                                              ; preds = %866, %795
  %797 = load i64, ptr %22, align 8, !tbaa !11
  %798 = load i64, ptr %17, align 8, !tbaa !11
  %799 = sub nsw i64 %798, 1
  %800 = icmp sle i64 %797, %799
  br i1 %800, label %801, label %869

801:                                              ; preds = %796
  %802 = load ptr, ptr %4, align 8, !tbaa !9
  %803 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %802)
  %804 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %803, double noundef 5.000000e-01)
  %805 = load i64, ptr %21, align 8, !tbaa !11
  %806 = sitofp i64 %805 to double
  %807 = load ptr, ptr %4, align 8, !tbaa !9
  %808 = getelementptr inbounds %"struct.alglib_impl::ae_state", ptr %807, i32 0, i32 3
  %809 = load double, ptr %808, align 8, !tbaa !28
  %810 = load ptr, ptr %4, align 8, !tbaa !9
  %811 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext %804, double noundef %806, double noundef %809, ptr noundef %810)
  %812 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %813 = load ptr, ptr %812, align 8, !tbaa !15
  %814 = load i64, ptr %21, align 8, !tbaa !11
  %815 = getelementptr inbounds ptr, ptr %813, i64 %814
  %816 = load ptr, ptr %815, align 8, !tbaa !9
  %817 = load i64, ptr %22, align 8, !tbaa !11
  %818 = getelementptr inbounds double, ptr %816, i64 %817
  store double %811, ptr %818, align 8, !tbaa !13
  %819 = load ptr, ptr %4, align 8, !tbaa !9
  %820 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %819)
  %821 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %820, double noundef 5.000000e-01)
  %822 = load i64, ptr %22, align 8, !tbaa !11
  %823 = sitofp i64 %822 to double
  %824 = load ptr, ptr %4, align 8, !tbaa !9
  %825 = getelementptr inbounds %"struct.alglib_impl::ae_state", ptr %824, i32 0, i32 2
  %826 = load double, ptr %825, align 8, !tbaa !33
  %827 = load ptr, ptr %4, align 8, !tbaa !9
  %828 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext %821, double noundef %823, double noundef %826, ptr noundef %827)
  %829 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %8, i32 0, i32 6
  %830 = load ptr, ptr %829, align 8, !tbaa !15
  %831 = load i64, ptr %21, align 8, !tbaa !11
  %832 = getelementptr inbounds ptr, ptr %830, i64 %831
  %833 = load ptr, ptr %832, align 8, !tbaa !9
  %834 = load i64, ptr %22, align 8, !tbaa !11
  %835 = getelementptr inbounds double, ptr %833, i64 %834
  store double %828, ptr %835, align 8, !tbaa !13
  %836 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %837 = load ptr, ptr %836, align 8, !tbaa !15
  %838 = load i64, ptr %21, align 8, !tbaa !11
  %839 = getelementptr inbounds ptr, ptr %837, i64 %838
  %840 = load ptr, ptr %839, align 8, !tbaa !9
  %841 = load i64, ptr %22, align 8, !tbaa !11
  %842 = getelementptr inbounds double, ptr %840, i64 %841
  %843 = load double, ptr %842, align 8, !tbaa !13
  %844 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %12, i32 0, i32 6
  %845 = load ptr, ptr %844, align 8, !tbaa !15
  %846 = load i64, ptr %21, align 8, !tbaa !11
  %847 = getelementptr inbounds ptr, ptr %845, i64 %846
  %848 = load ptr, ptr %847, align 8, !tbaa !9
  %849 = load i64, ptr %22, align 8, !tbaa !11
  %850 = getelementptr inbounds double, ptr %848, i64 %849
  store double %843, ptr %850, align 8, !tbaa !13
  %851 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %8, i32 0, i32 6
  %852 = load ptr, ptr %851, align 8, !tbaa !15
  %853 = load i64, ptr %21, align 8, !tbaa !11
  %854 = getelementptr inbounds ptr, ptr %852, i64 %853
  %855 = load ptr, ptr %854, align 8, !tbaa !9
  %856 = load i64, ptr %22, align 8, !tbaa !11
  %857 = getelementptr inbounds double, ptr %855, i64 %856
  %858 = load double, ptr %857, align 8, !tbaa !13
  %859 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %13, i32 0, i32 6
  %860 = load ptr, ptr %859, align 8, !tbaa !15
  %861 = load i64, ptr %21, align 8, !tbaa !11
  %862 = getelementptr inbounds ptr, ptr %860, i64 %861
  %863 = load ptr, ptr %862, align 8, !tbaa !9
  %864 = load i64, ptr %22, align 8, !tbaa !11
  %865 = getelementptr inbounds double, ptr %863, i64 %864
  store double %858, ptr %865, align 8, !tbaa !13
  br label %866

866:                                              ; preds = %801
  %867 = load i64, ptr %22, align 8, !tbaa !11
  %868 = add nsw i64 %867, 1
  store i64 %868, ptr %22, align 8, !tbaa !11
  br label %796, !llvm.loop !45

869:                                              ; preds = %796
  br label %870

870:                                              ; preds = %869
  %871 = load i64, ptr %21, align 8, !tbaa !11
  %872 = add nsw i64 %871, 1
  store i64 %872, ptr %21, align 8, !tbaa !11
  br label %790, !llvm.loop !46

873:                                              ; preds = %790
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %874

874:                                              ; preds = %912, %873
  %875 = load i64, ptr %21, align 8, !tbaa !11
  %876 = load i64, ptr %17, align 8, !tbaa !11
  %877 = sub nsw i64 %876, 1
  %878 = icmp sle i64 %875, %877
  br i1 %878, label %879, label %915

879:                                              ; preds = %874
  %880 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %881 = load ptr, ptr %880, align 8, !tbaa !15
  %882 = load i64, ptr %21, align 8, !tbaa !11
  %883 = getelementptr inbounds ptr, ptr %881, i64 %882
  %884 = load ptr, ptr %883, align 8, !tbaa !9
  %885 = getelementptr inbounds double, ptr %884, i64 0
  %886 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %887 = load ptr, ptr %886, align 8, !tbaa !15
  %888 = load i64, ptr %21, align 8, !tbaa !11
  %889 = getelementptr inbounds ptr, ptr %887, i64 %888
  %890 = load ptr, ptr %889, align 8, !tbaa !9
  %891 = getelementptr inbounds double, ptr %890, i64 0
  %892 = load i64, ptr %21, align 8, !tbaa !11
  %893 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %892)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %885, i64 noundef 1, ptr noundef %891, i64 noundef 1, i64 noundef %893)
  %894 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %8, i32 0, i32 6
  %895 = load ptr, ptr %894, align 8, !tbaa !15
  %896 = load i64, ptr %21, align 8, !tbaa !11
  %897 = getelementptr inbounds ptr, ptr %895, i64 %896
  %898 = load ptr, ptr %897, align 8, !tbaa !9
  %899 = load i64, ptr %21, align 8, !tbaa !11
  %900 = getelementptr inbounds double, ptr %898, i64 %899
  %901 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %902 = load ptr, ptr %901, align 8, !tbaa !15
  %903 = load i64, ptr %21, align 8, !tbaa !11
  %904 = getelementptr inbounds ptr, ptr %902, i64 %903
  %905 = load ptr, ptr %904, align 8, !tbaa !9
  %906 = load i64, ptr %21, align 8, !tbaa !11
  %907 = getelementptr inbounds double, ptr %905, i64 %906
  %908 = load i64, ptr %21, align 8, !tbaa !11
  %909 = load i64, ptr %17, align 8, !tbaa !11
  %910 = sub nsw i64 %909, 1
  %911 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %908, i64 noundef %910)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %900, i64 noundef 1, ptr noundef %907, i64 noundef 1, i64 noundef %911)
  br label %912

912:                                              ; preds = %879
  %913 = load i64, ptr %21, align 8, !tbaa !11
  %914 = add nsw i64 %913, 1
  store i64 %914, ptr %21, align 8, !tbaa !11
  br label %874, !llvm.loop !47

915:                                              ; preds = %874
  %916 = load i64, ptr %17, align 8, !tbaa !11
  %917 = load ptr, ptr %4, align 8, !tbaa !9
  %918 = call noundef zeroext i1 @_ZN11alglib_impl17spdmatrixcholeskyEPNS_9ae_matrixElbPNS_8ae_stateE(ptr noundef %7, i64 noundef %916, i1 noundef zeroext false, ptr noundef %917)
  br i1 %918, label %919, label %1004

919:                                              ; preds = %915
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %920

920:                                              ; preds = %1000, %919
  %921 = load i64, ptr %21, align 8, !tbaa !11
  %922 = load i64, ptr %17, align 8, !tbaa !11
  %923 = sub nsw i64 %922, 1
  %924 = icmp sle i64 %921, %923
  br i1 %924, label %925, label %1003

925:                                              ; preds = %920
  store i64 0, ptr %22, align 8, !tbaa !11
  br label %926

926:                                              ; preds = %996, %925
  %927 = load i64, ptr %22, align 8, !tbaa !11
  %928 = load i64, ptr %17, align 8, !tbaa !11
  %929 = sub nsw i64 %928, 1
  %930 = icmp sle i64 %927, %929
  br i1 %930, label %931, label %999

931:                                              ; preds = %926
  %932 = load i64, ptr %22, align 8, !tbaa !11
  %933 = load i64, ptr %21, align 8, !tbaa !11
  %934 = icmp sgt i64 %932, %933
  br i1 %934, label %935, label %959

935:                                              ; preds = %931
  %936 = load i8, ptr %26, align 1, !tbaa !5, !range !37, !noundef !38
  %937 = trunc i8 %936 to i1
  br i1 %937, label %956, label %938

938:                                              ; preds = %935
  %939 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %940 = load ptr, ptr %939, align 8, !tbaa !15
  %941 = load i64, ptr %21, align 8, !tbaa !11
  %942 = getelementptr inbounds ptr, ptr %940, i64 %941
  %943 = load ptr, ptr %942, align 8, !tbaa !9
  %944 = load i64, ptr %22, align 8, !tbaa !11
  %945 = getelementptr inbounds double, ptr %943, i64 %944
  %946 = load double, ptr %945, align 8, !tbaa !13
  %947 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %12, i32 0, i32 6
  %948 = load ptr, ptr %947, align 8, !tbaa !15
  %949 = load i64, ptr %21, align 8, !tbaa !11
  %950 = getelementptr inbounds ptr, ptr %948, i64 %949
  %951 = load ptr, ptr %950, align 8, !tbaa !9
  %952 = load i64, ptr %22, align 8, !tbaa !11
  %953 = getelementptr inbounds double, ptr %951, i64 %952
  %954 = load double, ptr %953, align 8, !tbaa !13
  %955 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %946, double noundef %954)
  br label %956

956:                                              ; preds = %938, %935
  %957 = phi i1 [ true, %935 ], [ %955, %938 ]
  %958 = zext i1 %957 to i8
  store i8 %958, ptr %26, align 1, !tbaa !5
  br label %995

959:                                              ; preds = %931
  %960 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %961 = load ptr, ptr %960, align 8, !tbaa !15
  %962 = load i64, ptr %21, align 8, !tbaa !11
  %963 = getelementptr inbounds ptr, ptr %961, i64 %962
  %964 = load ptr, ptr %963, align 8, !tbaa !9
  %965 = getelementptr inbounds double, ptr %964, i64 0
  %966 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %967 = load ptr, ptr %966, align 8, !tbaa !15
  %968 = load i64, ptr %22, align 8, !tbaa !11
  %969 = getelementptr inbounds ptr, ptr %967, i64 %968
  %970 = load ptr, ptr %969, align 8, !tbaa !9
  %971 = getelementptr inbounds double, ptr %970, i64 0
  %972 = load i64, ptr %22, align 8, !tbaa !11
  %973 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %972)
  %974 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %965, i64 noundef 1, ptr noundef %971, i64 noundef 1, i64 noundef %973)
  store double %974, ptr %24, align 8, !tbaa !13
  %975 = load i8, ptr %26, align 1, !tbaa !5, !range !37, !noundef !38
  %976 = trunc i8 %975 to i1
  br i1 %976, label %992, label %977

977:                                              ; preds = %959
  %978 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %979 = load ptr, ptr %978, align 8, !tbaa !15
  %980 = load i64, ptr %21, align 8, !tbaa !11
  %981 = getelementptr inbounds ptr, ptr %979, i64 %980
  %982 = load ptr, ptr %981, align 8, !tbaa !9
  %983 = load i64, ptr %22, align 8, !tbaa !11
  %984 = getelementptr inbounds double, ptr %982, i64 %983
  %985 = load double, ptr %984, align 8, !tbaa !13
  %986 = load double, ptr %24, align 8, !tbaa !13
  %987 = fsub double %985, %986
  %988 = load ptr, ptr %4, align 8, !tbaa !9
  %989 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %987, ptr noundef %988)
  %990 = load double, ptr %34, align 8, !tbaa !13
  %991 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %989, double noundef %990)
  br label %992

992:                                              ; preds = %977, %959
  %993 = phi i1 [ true, %959 ], [ %991, %977 ]
  %994 = zext i1 %993 to i8
  store i8 %994, ptr %26, align 1, !tbaa !5
  br label %995

995:                                              ; preds = %992, %956
  br label %996

996:                                              ; preds = %995
  %997 = load i64, ptr %22, align 8, !tbaa !11
  %998 = add nsw i64 %997, 1
  store i64 %998, ptr %22, align 8, !tbaa !11
  br label %926, !llvm.loop !48

999:                                              ; preds = %926
  br label %1000

1000:                                             ; preds = %999
  %1001 = load i64, ptr %21, align 8, !tbaa !11
  %1002 = add nsw i64 %1001, 1
  store i64 %1002, ptr %21, align 8, !tbaa !11
  br label %920, !llvm.loop !49

1003:                                             ; preds = %920
  br label %1005

1004:                                             ; preds = %915
  store i8 1, ptr %26, align 1, !tbaa !5
  br label %1005

1005:                                             ; preds = %1004, %1003
  %1006 = load i64, ptr %17, align 8, !tbaa !11
  %1007 = load ptr, ptr %4, align 8, !tbaa !9
  %1008 = call noundef zeroext i1 @_ZN11alglib_impl17spdmatrixcholeskyEPNS_9ae_matrixElbPNS_8ae_stateE(ptr noundef %8, i64 noundef %1006, i1 noundef zeroext true, ptr noundef %1007)
  br i1 %1008, label %1009, label %1098

1009:                                             ; preds = %1005
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %1010

1010:                                             ; preds = %1094, %1009
  %1011 = load i64, ptr %21, align 8, !tbaa !11
  %1012 = load i64, ptr %17, align 8, !tbaa !11
  %1013 = sub nsw i64 %1012, 1
  %1014 = icmp sle i64 %1011, %1013
  br i1 %1014, label %1015, label %1097

1015:                                             ; preds = %1010
  store i64 0, ptr %22, align 8, !tbaa !11
  br label %1016

1016:                                             ; preds = %1090, %1015
  %1017 = load i64, ptr %22, align 8, !tbaa !11
  %1018 = load i64, ptr %17, align 8, !tbaa !11
  %1019 = sub nsw i64 %1018, 1
  %1020 = icmp sle i64 %1017, %1019
  br i1 %1020, label %1021, label %1093

1021:                                             ; preds = %1016
  %1022 = load i64, ptr %22, align 8, !tbaa !11
  %1023 = load i64, ptr %21, align 8, !tbaa !11
  %1024 = icmp slt i64 %1022, %1023
  br i1 %1024, label %1025, label %1049

1025:                                             ; preds = %1021
  %1026 = load i8, ptr %26, align 1, !tbaa !5, !range !37, !noundef !38
  %1027 = trunc i8 %1026 to i1
  br i1 %1027, label %1046, label %1028

1028:                                             ; preds = %1025
  %1029 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %8, i32 0, i32 6
  %1030 = load ptr, ptr %1029, align 8, !tbaa !15
  %1031 = load i64, ptr %21, align 8, !tbaa !11
  %1032 = getelementptr inbounds ptr, ptr %1030, i64 %1031
  %1033 = load ptr, ptr %1032, align 8, !tbaa !9
  %1034 = load i64, ptr %22, align 8, !tbaa !11
  %1035 = getelementptr inbounds double, ptr %1033, i64 %1034
  %1036 = load double, ptr %1035, align 8, !tbaa !13
  %1037 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %13, i32 0, i32 6
  %1038 = load ptr, ptr %1037, align 8, !tbaa !15
  %1039 = load i64, ptr %21, align 8, !tbaa !11
  %1040 = getelementptr inbounds ptr, ptr %1038, i64 %1039
  %1041 = load ptr, ptr %1040, align 8, !tbaa !9
  %1042 = load i64, ptr %22, align 8, !tbaa !11
  %1043 = getelementptr inbounds double, ptr %1041, i64 %1042
  %1044 = load double, ptr %1043, align 8, !tbaa !13
  %1045 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %1036, double noundef %1044)
  br label %1046

1046:                                             ; preds = %1028, %1025
  %1047 = phi i1 [ true, %1025 ], [ %1045, %1028 ]
  %1048 = zext i1 %1047 to i8
  store i8 %1048, ptr %26, align 1, !tbaa !5
  br label %1089

1049:                                             ; preds = %1021
  %1050 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %8, i32 0, i32 6
  %1051 = load ptr, ptr %1050, align 8, !tbaa !15
  %1052 = getelementptr inbounds ptr, ptr %1051, i64 0
  %1053 = load ptr, ptr %1052, align 8, !tbaa !9
  %1054 = load i64, ptr %21, align 8, !tbaa !11
  %1055 = getelementptr inbounds double, ptr %1053, i64 %1054
  %1056 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %8, i32 0, i32 2
  %1057 = load i64, ptr %1056, align 8, !tbaa !41
  %1058 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %8, i32 0, i32 6
  %1059 = load ptr, ptr %1058, align 8, !tbaa !15
  %1060 = getelementptr inbounds ptr, ptr %1059, i64 0
  %1061 = load ptr, ptr %1060, align 8, !tbaa !9
  %1062 = load i64, ptr %22, align 8, !tbaa !11
  %1063 = getelementptr inbounds double, ptr %1061, i64 %1062
  %1064 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %8, i32 0, i32 2
  %1065 = load i64, ptr %1064, align 8, !tbaa !41
  %1066 = load i64, ptr %21, align 8, !tbaa !11
  %1067 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1066)
  %1068 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1055, i64 noundef %1057, ptr noundef %1063, i64 noundef %1065, i64 noundef %1067)
  store double %1068, ptr %24, align 8, !tbaa !13
  %1069 = load i8, ptr %26, align 1, !tbaa !5, !range !37, !noundef !38
  %1070 = trunc i8 %1069 to i1
  br i1 %1070, label %1086, label %1071

1071:                                             ; preds = %1049
  %1072 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %1073 = load ptr, ptr %1072, align 8, !tbaa !15
  %1074 = load i64, ptr %21, align 8, !tbaa !11
  %1075 = getelementptr inbounds ptr, ptr %1073, i64 %1074
  %1076 = load ptr, ptr %1075, align 8, !tbaa !9
  %1077 = load i64, ptr %22, align 8, !tbaa !11
  %1078 = getelementptr inbounds double, ptr %1076, i64 %1077
  %1079 = load double, ptr %1078, align 8, !tbaa !13
  %1080 = load double, ptr %24, align 8, !tbaa !13
  %1081 = fsub double %1079, %1080
  %1082 = load ptr, ptr %4, align 8, !tbaa !9
  %1083 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1081, ptr noundef %1082)
  %1084 = load double, ptr %34, align 8, !tbaa !13
  %1085 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1083, double noundef %1084)
  br label %1086

1086:                                             ; preds = %1071, %1049
  %1087 = phi i1 [ true, %1049 ], [ %1085, %1071 ]
  %1088 = zext i1 %1087 to i8
  store i8 %1088, ptr %26, align 1, !tbaa !5
  br label %1089

1089:                                             ; preds = %1086, %1046
  br label %1090

1090:                                             ; preds = %1089
  %1091 = load i64, ptr %22, align 8, !tbaa !11
  %1092 = add nsw i64 %1091, 1
  store i64 %1092, ptr %22, align 8, !tbaa !11
  br label %1016, !llvm.loop !50

1093:                                             ; preds = %1016
  br label %1094

1094:                                             ; preds = %1093
  %1095 = load i64, ptr %21, align 8, !tbaa !11
  %1096 = add nsw i64 %1095, 1
  store i64 %1096, ptr %21, align 8, !tbaa !11
  br label %1010, !llvm.loop !51

1097:                                             ; preds = %1010
  br label %1099

1098:                                             ; preds = %1005
  store i8 1, ptr %26, align 1, !tbaa !5
  br label %1099

1099:                                             ; preds = %1098, %1097
  %1100 = load i64, ptr %17, align 8, !tbaa !11
  %1101 = load i64, ptr %17, align 8, !tbaa !11
  %1102 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %6, i64 noundef %1100, i64 noundef %1101, ptr noundef %1102)
  %1103 = load i64, ptr %17, align 8, !tbaa !11
  %1104 = load i64, ptr %17, align 8, !tbaa !11
  %1105 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %9, i64 noundef %1103, i64 noundef %1104, ptr noundef %1105)
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %1106

1106:                                             ; preds = %1160, %1099
  %1107 = load i64, ptr %21, align 8, !tbaa !11
  %1108 = load i64, ptr %17, align 8, !tbaa !11
  %1109 = sub nsw i64 %1108, 1
  %1110 = icmp sle i64 %1107, %1109
  br i1 %1110, label %1111, label %1163

1111:                                             ; preds = %1106
  store i64 0, ptr %22, align 8, !tbaa !11
  br label %1112

1112:                                             ; preds = %1137, %1111
  %1113 = load i64, ptr %22, align 8, !tbaa !11
  %1114 = load i64, ptr %17, align 8, !tbaa !11
  %1115 = sub nsw i64 %1114, 1
  %1116 = icmp sle i64 %1113, %1115
  br i1 %1116, label %1117, label %1140

1117:                                             ; preds = %1112
  %1118 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %1119 = load ptr, ptr %1118, align 8, !tbaa !15
  %1120 = load i64, ptr %21, align 8, !tbaa !11
  %1121 = getelementptr inbounds ptr, ptr %1119, i64 %1120
  %1122 = load ptr, ptr %1121, align 8, !tbaa !9
  %1123 = load i64, ptr %22, align 8, !tbaa !11
  %1124 = getelementptr inbounds double, ptr %1122, i64 %1123
  store double 0.000000e+00, ptr %1124, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %56) #6
  %1125 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef 0.000000e+00)
  %1126 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 0
  %1127 = extractvalue { double, double } %1125, 0
  store double %1127, ptr %1126, align 8
  %1128 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 1
  %1129 = extractvalue { double, double } %1125, 1
  store double %1129, ptr %1128, align 8
  %1130 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %9, i32 0, i32 6
  %1131 = load ptr, ptr %1130, align 8, !tbaa !15
  %1132 = load i64, ptr %21, align 8, !tbaa !11
  %1133 = getelementptr inbounds ptr, ptr %1131, i64 %1132
  %1134 = load ptr, ptr %1133, align 8, !tbaa !9
  %1135 = load i64, ptr %22, align 8, !tbaa !11
  %1136 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1134, i64 %1135
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1136, ptr align 8 %56, i64 16, i1 false), !tbaa.struct !16
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #6
  br label %1137

1137:                                             ; preds = %1117
  %1138 = load i64, ptr %22, align 8, !tbaa !11
  %1139 = add nsw i64 %1138, 1
  store i64 %1139, ptr %22, align 8, !tbaa !11
  br label %1112, !llvm.loop !52

1140:                                             ; preds = %1112
  %1141 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %1142 = load ptr, ptr %1141, align 8, !tbaa !15
  %1143 = load i64, ptr %21, align 8, !tbaa !11
  %1144 = getelementptr inbounds ptr, ptr %1142, i64 %1143
  %1145 = load ptr, ptr %1144, align 8, !tbaa !9
  %1146 = load i64, ptr %21, align 8, !tbaa !11
  %1147 = getelementptr inbounds double, ptr %1145, i64 %1146
  store double 1.000000e+00, ptr %1147, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #6
  %1148 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef 1.000000e+00)
  %1149 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 0
  %1150 = extractvalue { double, double } %1148, 0
  store double %1150, ptr %1149, align 8
  %1151 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 1
  %1152 = extractvalue { double, double } %1148, 1
  store double %1152, ptr %1151, align 8
  %1153 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %9, i32 0, i32 6
  %1154 = load ptr, ptr %1153, align 8, !tbaa !15
  %1155 = load i64, ptr %21, align 8, !tbaa !11
  %1156 = getelementptr inbounds ptr, ptr %1154, i64 %1155
  %1157 = load ptr, ptr %1156, align 8, !tbaa !9
  %1158 = load i64, ptr %21, align 8, !tbaa !11
  %1159 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1157, i64 %1158
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1159, ptr align 8 %57, i64 16, i1 false), !tbaa.struct !16
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #6
  br label %1160

1160:                                             ; preds = %1140
  %1161 = load i64, ptr %21, align 8, !tbaa !11
  %1162 = add nsw i64 %1161, 1
  store i64 %1162, ptr %21, align 8, !tbaa !11
  br label %1106, !llvm.loop !53

1163:                                             ; preds = %1106
  %1164 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %1165 = load ptr, ptr %1164, align 8, !tbaa !15
  %1166 = load i64, ptr %17, align 8, !tbaa !11
  %1167 = sdiv i64 %1166, 2
  %1168 = getelementptr inbounds ptr, ptr %1165, i64 %1167
  %1169 = load ptr, ptr %1168, align 8, !tbaa !9
  %1170 = load i64, ptr %17, align 8, !tbaa !11
  %1171 = sdiv i64 %1170, 2
  %1172 = getelementptr inbounds double, ptr %1169, i64 %1171
  store double -1.000000e+00, ptr %1172, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #6
  %1173 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef -1.000000e+00)
  %1174 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 0
  %1175 = extractvalue { double, double } %1173, 0
  store double %1175, ptr %1174, align 8
  %1176 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 1
  %1177 = extractvalue { double, double } %1173, 1
  store double %1177, ptr %1176, align 8
  %1178 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %9, i32 0, i32 6
  %1179 = load ptr, ptr %1178, align 8, !tbaa !15
  %1180 = load i64, ptr %17, align 8, !tbaa !11
  %1181 = sdiv i64 %1180, 2
  %1182 = getelementptr inbounds ptr, ptr %1179, i64 %1181
  %1183 = load ptr, ptr %1182, align 8, !tbaa !9
  %1184 = load i64, ptr %17, align 8, !tbaa !11
  %1185 = sdiv i64 %1184, 2
  %1186 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1183, i64 %1185
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1186, ptr align 8 %58, i64 16, i1 false), !tbaa.struct !16
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #6
  %1187 = load i64, ptr %17, align 8, !tbaa !11
  %1188 = load ptr, ptr %4, align 8, !tbaa !9
  %1189 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1188)
  %1190 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1189, double noundef 5.000000e-01)
  %1191 = load ptr, ptr %4, align 8, !tbaa !9
  %1192 = call noundef zeroext i1 @_ZN11alglib_impl17spdmatrixcholeskyEPNS_9ae_matrixElbPNS_8ae_stateE(ptr noundef %6, i64 noundef %1187, i1 noundef zeroext %1190, ptr noundef %1191)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %26, i1 noundef zeroext %1192, ptr noundef @.str.19, i32 noundef 24035, ptr noundef @.str.332)
  %1193 = load i64, ptr %17, align 8, !tbaa !11
  %1194 = load ptr, ptr %4, align 8, !tbaa !9
  %1195 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1194)
  %1196 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1195, double noundef 5.000000e-01)
  %1197 = load ptr, ptr %4, align 8, !tbaa !9
  %1198 = call noundef zeroext i1 @_ZN11alglib_impl17hpdmatrixcholeskyEPNS_9ae_matrixElbPNS_8ae_stateE(ptr noundef %9, i64 noundef %1193, i1 noundef zeroext %1196, ptr noundef %1197)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %29, i1 noundef zeroext %1198, ptr noundef @.str.19, i32 noundef 24036, ptr noundef @.str.333)
  br label %1199

1199:                                             ; preds = %1163
  %1200 = load i64, ptr %17, align 8, !tbaa !11
  %1201 = add nsw i64 %1200, 1
  store i64 %1201, ptr %17, align 8, !tbaa !11
  br label %385, !llvm.loop !54

1202:                                             ; preds = %385
  %1203 = load i8, ptr %30, align 1, !tbaa !5, !range !37, !noundef !38
  %1204 = trunc i8 %1203 to i1
  br i1 %1204, label %1226, label %1205

1205:                                             ; preds = %1202
  %1206 = load i8, ptr %28, align 1, !tbaa !5, !range !37, !noundef !38
  %1207 = trunc i8 %1206 to i1
  br i1 %1207, label %1226, label %1208

1208:                                             ; preds = %1205
  %1209 = load i8, ptr %26, align 1, !tbaa !5, !range !37, !noundef !38
  %1210 = trunc i8 %1209 to i1
  br i1 %1210, label %1226, label %1211

1211:                                             ; preds = %1208
  %1212 = load i8, ptr %27, align 1, !tbaa !5, !range !37, !noundef !38
  %1213 = trunc i8 %1212 to i1
  br i1 %1213, label %1226, label %1214

1214:                                             ; preds = %1211
  %1215 = load i8, ptr %31, align 1, !tbaa !5, !range !37, !noundef !38
  %1216 = trunc i8 %1215 to i1
  br i1 %1216, label %1226, label %1217

1217:                                             ; preds = %1214
  %1218 = load i8, ptr %29, align 1, !tbaa !5, !range !37, !noundef !38
  %1219 = trunc i8 %1218 to i1
  br i1 %1219, label %1226, label %1220

1220:                                             ; preds = %1217
  %1221 = load i8, ptr %32, align 1, !tbaa !5, !range !37, !noundef !38
  %1222 = trunc i8 %1221 to i1
  br i1 %1222, label %1226, label %1223

1223:                                             ; preds = %1220
  %1224 = load i8, ptr %33, align 1, !tbaa !5, !range !37, !noundef !38
  %1225 = trunc i8 %1224 to i1
  br label %1226

1226:                                             ; preds = %1223, %1220, %1217, %1214, %1211, %1208, %1205, %1202
  %1227 = phi i1 [ true, %1220 ], [ true, %1217 ], [ true, %1214 ], [ true, %1211 ], [ true, %1208 ], [ true, %1205 ], [ true, %1202 ], [ %1225, %1223 ]
  %1228 = zext i1 %1227 to i8
  store i8 %1228, ptr %25, align 1, !tbaa !5
  %1229 = load i8, ptr %3, align 1, !tbaa !5, !range !37, !noundef !38
  %1230 = trunc i8 %1229 to i1
  br i1 %1230, label %1306, label %1231

1231:                                             ; preds = %1226
  %1232 = call i32 (ptr, ...) @printf(ptr noundef @.str.334)
  %1233 = call i32 (ptr, ...) @printf(ptr noundef @.str.335)
  %1234 = load i8, ptr %30, align 1, !tbaa !5, !range !37, !noundef !38
  %1235 = trunc i8 %1234 to i1
  br i1 %1235, label %1236, label %1238

1236:                                             ; preds = %1231
  %1237 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1240

1238:                                             ; preds = %1231
  %1239 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1240

1240:                                             ; preds = %1238, %1236
  %1241 = call i32 (ptr, ...) @printf(ptr noundef @.str.336)
  %1242 = load i8, ptr %28, align 1, !tbaa !5, !range !37, !noundef !38
  %1243 = trunc i8 %1242 to i1
  br i1 %1243, label %1244, label %1246

1244:                                             ; preds = %1240
  %1245 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1248

1246:                                             ; preds = %1240
  %1247 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1248

1248:                                             ; preds = %1246, %1244
  %1249 = call i32 (ptr, ...) @printf(ptr noundef @.str.337)
  %1250 = load i8, ptr %26, align 1, !tbaa !5, !range !37, !noundef !38
  %1251 = trunc i8 %1250 to i1
  br i1 %1251, label %1252, label %1254

1252:                                             ; preds = %1248
  %1253 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1256

1254:                                             ; preds = %1248
  %1255 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1256

1256:                                             ; preds = %1254, %1252
  %1257 = call i32 (ptr, ...) @printf(ptr noundef @.str.338)
  %1258 = load i8, ptr %27, align 1, !tbaa !5, !range !37, !noundef !38
  %1259 = trunc i8 %1258 to i1
  br i1 %1259, label %1260, label %1262

1260:                                             ; preds = %1256
  %1261 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1264

1262:                                             ; preds = %1256
  %1263 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1264

1264:                                             ; preds = %1262, %1260
  %1265 = call i32 (ptr, ...) @printf(ptr noundef @.str.339)
  %1266 = load i8, ptr %31, align 1, !tbaa !5, !range !37, !noundef !38
  %1267 = trunc i8 %1266 to i1
  br i1 %1267, label %1268, label %1270

1268:                                             ; preds = %1264
  %1269 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1272

1270:                                             ; preds = %1264
  %1271 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1272

1272:                                             ; preds = %1270, %1268
  %1273 = call i32 (ptr, ...) @printf(ptr noundef @.str.340)
  %1274 = load i8, ptr %29, align 1, !tbaa !5, !range !37, !noundef !38
  %1275 = trunc i8 %1274 to i1
  br i1 %1275, label %1276, label %1278

1276:                                             ; preds = %1272
  %1277 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1280

1278:                                             ; preds = %1272
  %1279 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1280

1280:                                             ; preds = %1278, %1276
  %1281 = call i32 (ptr, ...) @printf(ptr noundef @.str.341)
  %1282 = load i8, ptr %32, align 1, !tbaa !5, !range !37, !noundef !38
  %1283 = trunc i8 %1282 to i1
  br i1 %1283, label %1284, label %1286

1284:                                             ; preds = %1280
  %1285 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1288

1286:                                             ; preds = %1280
  %1287 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1288

1288:                                             ; preds = %1286, %1284
  %1289 = call i32 (ptr, ...) @printf(ptr noundef @.str.342)
  %1290 = call i32 (ptr, ...) @printf(ptr noundef @.str.337)
  %1291 = load i8, ptr %33, align 1, !tbaa !5, !range !37, !noundef !38
  %1292 = trunc i8 %1291 to i1
  br i1 %1292, label %1293, label %1295

1293:                                             ; preds = %1288
  %1294 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1297

1295:                                             ; preds = %1288
  %1296 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1297

1297:                                             ; preds = %1295, %1293
  %1298 = load i8, ptr %25, align 1, !tbaa !5, !range !37, !noundef !38
  %1299 = trunc i8 %1298 to i1
  br i1 %1299, label %1300, label %1302

1300:                                             ; preds = %1297
  %1301 = call i32 (ptr, ...) @printf(ptr noundef @.str.15)
  br label %1304

1302:                                             ; preds = %1297
  %1303 = call i32 (ptr, ...) @printf(ptr noundef @.str.16)
  br label %1304

1304:                                             ; preds = %1302, %1300
  %1305 = call i32 (ptr, ...) @printf(ptr noundef @.str.17)
  br label %1306

1306:                                             ; preds = %1304, %1226
  %1307 = load i8, ptr %25, align 1, !tbaa !5, !range !37, !noundef !38
  %1308 = trunc i8 %1307 to i1
  %1309 = xor i1 %1308, true
  %1310 = zext i1 %1309 to i8
  store i8 %1310, ptr %36, align 1, !tbaa !5
  %1311 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1311)
  %1312 = load i8, ptr %36, align 1, !tbaa !5, !range !37, !noundef !38
  %1313 = trunc i8 %1312 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #6
  ret i1 %1313
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z22sparserealcholeskytestPN11alglib_impl8ae_stateE(ptr noundef) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z16sparsereallutestPbPN11alglib_impl8ae_stateE(ptr noundef, ptr noundef) #5

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN11alglib_impl17spdmatrixcholeskyEPNS_9ae_matrixElbPNS_8ae_stateE(ptr noundef, i64 noundef, i1 noundef zeroext, 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!7, !7, i64 0}
!16 = !{i64 0, i64 8, !13, i64 8, i64 8, !13}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = distinct !{!19, !18}
!20 = distinct !{!20, !18}
!21 = distinct !{!21, !18}
!22 = distinct !{!22, !18}
!23 = distinct !{!23, !18}
!24 = distinct !{!24, !18}
!25 = distinct !{!25, !18}
!26 = distinct !{!26, !18}
!27 = distinct !{!27, !18}
!28 = !{!29, !14, i64 24}
!29 = !{!"_ZTSN11alglib_impl8ae_stateE", !12, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !10, i64 32, !30, i64 40, !10, i64 72, !31, i64 80, !10, i64 88, !32, i64 96, !10, i64 104, !10, i64 112, !10, i64 120}
!30 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!31 = !{!"_ZTSN11alglib_impl13ae_error_typeE", !7, i64 0}
!32 = !{!"long long", !7, i64 0}
!33 = !{!29, !14, i64 16}
!34 = distinct !{!34, !18}
!35 = distinct !{!35, !18}
!36 = distinct !{!36, !18}
!37 = !{i8 0, i8 2}
!38 = !{}
!39 = distinct !{!39, !18}
!40 = distinct !{!40, !18}
!41 = !{!42, !12, i64 16}
!42 = !{!"_ZTSN11alglib_impl9ae_matrixE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !6, i64 32, !30, i64 40, !7, i64 72}
!43 = distinct !{!43, !18}
!44 = distinct !{!44, !18}
!45 = distinct !{!45, !18}
!46 = distinct !{!46, !18}
!47 = distinct !{!47, !18}
!48 = distinct !{!48, !18}
!49 = distinct !{!49, !18}
!50 = distinct !{!50, !18}
!51 = distinct !{!51, !18}
!52 = distinct !{!52, !18}
!53 = distinct !{!53, !18}
!54 = distinct !{!54, !18}


; 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_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::ae_complex" = type { double, double }

@.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.67 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.332 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.333 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.334 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.335 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.336 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.337 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.338 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.339 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.340 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.341 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.342 = external hidden unnamed_addr constant [32 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_fabsEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #3

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

declare noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(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 noundef i64 @_ZN11alglib_impl15matrixtilesizeaEPNS_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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #5

declare { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef) local_unnamed_addr #3

declare { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef) local_unnamed_addr #3

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

declare { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double, double, double, double) local_unnamed_addr #3

declare { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef) local_unnamed_addr #3

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z9testtrfacbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) local_unnamed_addr #6 {
  %3 = alloca %"struct.alglib_impl::ae_frame", align 8
  %4 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %5 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %6 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %7 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %8 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %9 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %10 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %11 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %12 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %13 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca i8, align 1
  %17 = alloca i8, align 1
  %18 = alloca i8, align 1
  %19 = alloca i8, align 1
  %20 = alloca i8, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #8
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %4) #8
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %5) #8
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %6) #8
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %7) #8
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %8) #8
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %10) #8
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %12) #8
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %13) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #8
  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(80) %4, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %5, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %6, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %7, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %8, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %9, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %10, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %11, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %12, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %13, i8 0, i64 80, i1 false)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %4, 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 %5, 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 %6, 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 %7, i64 noundef 0, i64 noundef 0, i64 noundef 4, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %8, i64 noundef 0, i64 noundef 0, i64 noundef 4, 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 4, 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_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %11, 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 %12, i64 noundef 0, i64 noundef 0, i64 noundef 4, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %13, i64 noundef 0, i64 noundef 0, i64 noundef 4, ptr noundef %1, i1 noundef zeroext true)
  store i8 0, ptr %17, align 1, !tbaa !5
  store i8 0, ptr %14, align 1, !tbaa !5
  store i8 0, ptr %18, align 1, !tbaa !5
  store i8 0, ptr %16, align 1, !tbaa !5
  store i8 0, ptr %19, align 1, !tbaa !5
  store i8 0, ptr %20, align 1, !tbaa !5
  store i8 0, ptr %15, align 1, !tbaa !5
  %21 = call noundef i64 @_ZN11alglib_impl15matrixtilesizeaEPNS_8ae_stateE(ptr noundef %1)
  %22 = shl i64 %21, 2
  %23 = or disjoint i64 %22, 1
  %24 = sitofp i64 %23 to double
  %25 = fmul double %24, 5.000000e-13
  %26 = call noundef zeroext i1 @_Z22sparserealcholeskytestPN11alglib_impl8ae_stateE(ptr noundef %1)
  call void @_Z16sparsereallutestPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %15, ptr noundef %1)
  call void @_ZL38testtrfacunit_testdensecholeskyupdatesPbPN11alglib_impl8ae_stateE(ptr noundef nonnull %20, ptr noundef %1)
  %.not505 = icmp slt i64 %21, 0
  br i1 %.not505, label %.preheader489, label %.lr.ph508

.lr.ph508:                                        ; preds = %2
  %27 = getelementptr inbounds i8, ptr %4, i64 72
  %28 = getelementptr inbounds i8, ptr %7, i64 72
  %29 = or disjoint i64 %22, 1
  %smax = call i64 @llvm.smax.i64(i64 %29, i64 1)
  br label %36

.preheader489:                                    ; preds = %._crit_edge, %2
  %30 = getelementptr inbounds i8, ptr %4, i64 72
  %31 = getelementptr inbounds i8, ptr %7, i64 72
  %32 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3, ptr noundef %1)
  %33 = add nsw i64 %32, 255
  %34 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3, ptr noundef %1)
  %35 = add nsw i64 %34, 255
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %33, i64 noundef %35, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %33, i64 noundef %35, ptr noundef %1)
  %.not462513 = icmp slt i64 %32, -254
  %.not464509 = icmp slt i64 %34, -254
  %or.cond572 = or i1 %.not462513, %.not464509
  br i1 %or.cond572, label %.preheader488, label %.preheader487.preheader

36:                                               ; preds = %.lr.ph508, %._crit_edge
  %.0424506 = phi i64 [ 1, %.lr.ph508 ], [ %89, %._crit_edge ]
  %37 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef %.0424506, ptr noundef %1)
  %38 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef %.0424506, ptr noundef %1)
  %39 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %40 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %39, double noundef 5.000000e-01)
  %41 = add nsw i64 %38, 1
  %42 = add nsw i64 %37, 1
  %.0423 = select i1 %40, i64 %.0424506, i64 %42
  %.0 = select i1 %40, i64 %41, i64 %.0424506
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.0, i64 noundef %.0423, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.0, i64 noundef %.0423, ptr noundef %1)
  %.not465.not495 = icmp sgt i64 %.0, 0
  %.not469.not493 = icmp sgt i64 %.0423, 0
  %or.cond570 = and i1 %.not465.not495, %.not469.not493
  br i1 %or.cond570, label %.preheader491.us, label %._crit_edge497

.preheader491.us:                                 ; preds = %36, %._crit_edge.us
  %.0425496.us = phi i64 [ %56, %._crit_edge.us ], [ 0, %36 ]
  br label %43

43:                                               ; preds = %.preheader491.us, %43
  %.0427494.us = phi i64 [ 0, %.preheader491.us ], [ %55, %43 ]
  %44 = load ptr, ptr %27, align 8, !tbaa !9
  %45 = getelementptr inbounds ptr, ptr %44, i64 %.0425496.us
  %46 = load ptr, ptr %45, align 8, !tbaa !10
  %47 = getelementptr inbounds double, ptr %46, i64 %.0427494.us
  store double 0.000000e+00, ptr %47, align 8, !tbaa !12
  %48 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 0)
  %49 = extractvalue { double, double } %48, 0
  %50 = extractvalue { double, double } %48, 1
  %51 = load ptr, ptr %28, align 8, !tbaa !9
  %52 = getelementptr inbounds ptr, ptr %51, i64 %.0425496.us
  %53 = load ptr, ptr %52, align 8, !tbaa !10
  %54 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %53, i64 %.0427494.us
  store double %49, ptr %54, align 8, !tbaa !12
  %.sroa.441.0..sroa_idx.us = getelementptr inbounds i8, ptr %54, i64 8
  store double %50, ptr %.sroa.441.0..sroa_idx.us, align 8, !tbaa !12
  %55 = add nuw nsw i64 %.0427494.us, 1
  %exitcond.not = icmp eq i64 %55, %.0423
  br i1 %exitcond.not, label %._crit_edge.us, label %43, !llvm.loop !14

._crit_edge.us:                                   ; preds = %43
  %56 = add nuw nsw i64 %.0425496.us, 1
  %exitcond543.not = icmp eq i64 %56, %.0
  br i1 %exitcond543.not, label %._crit_edge497, label %.preheader491.us, !llvm.loop !16

._crit_edge497:                                   ; preds = %._crit_edge.us, %36
  call void @_ZL28testtrfacunit_testcluproblemPKN11alglib_impl9ae_matrixElldPbS3_PNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.0, i64 noundef %.0423, double noundef %25, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %1)
  call void @_ZL28testtrfacunit_testrluproblemPKN11alglib_impl9ae_matrixElldPbS3_PNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.0, i64 noundef %.0423, double noundef %25, ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.0, i64 noundef %.0423, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.0, i64 noundef %.0423, ptr noundef %1)
  %.not468.not498 = icmp sgt i64 %.0423, 0
  %or.cond571 = and i1 %.not465.not495, %.not468.not498
  br i1 %or.cond571, label %.preheader490.us, label %.preheader492

.preheader490.us:                                 ; preds = %._crit_edge497, %._crit_edge.us502
  %.1426501.us = phi i64 [ %70, %._crit_edge.us502 ], [ 0, %._crit_edge497 ]
  br label %57

57:                                               ; preds = %.preheader490.us, %57
  %.1428499.us = phi i64 [ 0, %.preheader490.us ], [ %69, %57 ]
  %58 = load ptr, ptr %27, align 8, !tbaa !9
  %59 = getelementptr inbounds ptr, ptr %58, i64 %.1426501.us
  %60 = load ptr, ptr %59, align 8, !tbaa !10
  %61 = getelementptr inbounds double, ptr %60, i64 %.1428499.us
  store double 0.000000e+00, ptr %61, align 8, !tbaa !12
  %62 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 0)
  %63 = extractvalue { double, double } %62, 0
  %64 = extractvalue { double, double } %62, 1
  %65 = load ptr, ptr %28, align 8, !tbaa !9
  %66 = getelementptr inbounds ptr, ptr %65, i64 %.1426501.us
  %67 = load ptr, ptr %66, align 8, !tbaa !10
  %68 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %67, i64 %.1428499.us
  store double %63, ptr %68, align 8, !tbaa !12
  %.sroa.439.0..sroa_idx.us = getelementptr inbounds i8, ptr %68, i64 8
  store double %64, ptr %.sroa.439.0..sroa_idx.us, align 8, !tbaa !12
  %69 = add nuw nsw i64 %.1428499.us, 1
  %exitcond544.not = icmp eq i64 %69, %.0423
  br i1 %exitcond544.not, label %._crit_edge.us502, label %57, !llvm.loop !17

._crit_edge.us502:                                ; preds = %57
  %70 = add nuw nsw i64 %.1426501.us, 1
  %exitcond545.not = icmp eq i64 %70, %.0
  br i1 %exitcond545.not, label %.preheader492, label %.preheader490.us, !llvm.loop !18

.preheader492:                                    ; preds = %._crit_edge.us502, %._crit_edge497
  %71 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %.0, i64 noundef %.0423, ptr noundef %1)
  %.not467.not503 = icmp sgt i64 %71, 0
  br i1 %.not467.not503, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader492, %.lr.ph
  %.2504 = phi i64 [ %87, %.lr.ph ], [ 0, %.preheader492 ]
  %72 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %73 = call double @llvm.fmuladd.f64(double %72, double 1.000000e+01, double 1.000000e+00)
  %74 = load ptr, ptr %27, align 8, !tbaa !9
  %75 = getelementptr inbounds ptr, ptr %74, i64 %.2504
  %76 = load ptr, ptr %75, align 8, !tbaa !10
  %77 = getelementptr inbounds double, ptr %76, i64 %.2504
  store double %73, ptr %77, align 8, !tbaa !12
  %78 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %79 = call double @llvm.fmuladd.f64(double %78, double 1.000000e+01, double 1.000000e+00)
  %80 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef %79)
  %81 = extractvalue { double, double } %80, 0
  %82 = extractvalue { double, double } %80, 1
  %83 = load ptr, ptr %28, align 8, !tbaa !9
  %84 = getelementptr inbounds ptr, ptr %83, i64 %.2504
  %85 = load ptr, ptr %84, align 8, !tbaa !10
  %86 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %85, i64 %.2504
  store double %81, ptr %86, align 8, !tbaa !12
  %.sroa.437.0..sroa_idx = getelementptr inbounds i8, ptr %86, i64 8
  store double %82, ptr %.sroa.437.0..sroa_idx, align 8, !tbaa !12
  %87 = add nuw nsw i64 %.2504, 1
  %88 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %.0, i64 noundef %.0423, ptr noundef %1)
  %.not467.not = icmp slt i64 %87, %88
  br i1 %.not467.not, label %.lr.ph, label %._crit_edge, !llvm.loop !19

._crit_edge:                                      ; preds = %.lr.ph, %.preheader492
  call void @_ZN11alglib_impl31cmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.0, i64 noundef %.0423, ptr noundef %1)
  call void @_ZN11alglib_impl32cmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.0, i64 noundef %.0423, ptr noundef %1)
  call void @_ZN11alglib_impl31rmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.0, i64 noundef %.0423, ptr noundef %1)
  call void @_ZN11alglib_impl32rmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.0, i64 noundef %.0423, ptr noundef %1)
  call void @_ZL28testtrfacunit_testcluproblemPKN11alglib_impl9ae_matrixElldPbS3_PNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.0, i64 noundef %.0423, double noundef %25, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %1)
  call void @_ZL28testtrfacunit_testrluproblemPKN11alglib_impl9ae_matrixElldPbS3_PNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.0, i64 noundef %.0423, double noundef %25, ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef %1)
  %89 = add nuw nsw i64 %.0424506, 1
  %exitcond546 = icmp eq i64 %.0424506, %smax
  br i1 %exitcond546, label %.preheader489, label %36, !llvm.loop !20

.lr.ph538:                                        ; preds = %._crit_edge518.1
  %90 = getelementptr inbounds i8, ptr %1, i64 24
  %91 = getelementptr inbounds i8, ptr %8, i64 72
  %92 = getelementptr inbounds i8, ptr %1, i64 16
  %93 = getelementptr inbounds i8, ptr %9, i64 72
  %94 = getelementptr inbounds i8, ptr %12, i64 72
  %95 = getelementptr inbounds i8, ptr %13, i64 72
  %96 = getelementptr inbounds i8, ptr %9, i64 16
  %97 = getelementptr inbounds i8, ptr %5, i64 72
  %98 = getelementptr inbounds i8, ptr %6, i64 72
  %99 = getelementptr inbounds i8, ptr %10, i64 72
  %100 = getelementptr inbounds i8, ptr %11, i64 72
  %101 = getelementptr inbounds i8, ptr %6, i64 16
  %102 = or disjoint i64 %22, 1
  %smax568 = call i64 @llvm.smax.i64(i64 %102, i64 1)
  br label %175

.preheader487.preheader:                          ; preds = %.preheader489
  %103 = add i64 %32, 254
  %104 = add i64 %34, 254
  %smax547 = call i64 @llvm.smax.i64(i64 %104, i64 0)
  %smax549 = call i64 @llvm.smax.i64(i64 %103, i64 0)
  br label %.preheader487

.preheader488:                                    ; preds = %._crit_edge512, %.preheader489
  %105 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %33, i64 noundef %35, ptr noundef %1)
  %.not463.not515 = icmp sgt i64 %105, 0
  br i1 %.not463.not515, label %.lr.ph517, label %._crit_edge518

.preheader487:                                    ; preds = %.preheader487.preheader, %._crit_edge512
  %.3514 = phi i64 [ %119, %._crit_edge512 ], [ 0, %.preheader487.preheader ]
  br label %106

106:                                              ; preds = %.preheader487, %106
  %.2429510 = phi i64 [ 0, %.preheader487 ], [ %118, %106 ]
  %107 = load ptr, ptr %30, align 8, !tbaa !9
  %108 = getelementptr inbounds ptr, ptr %107, i64 %.3514
  %109 = load ptr, ptr %108, align 8, !tbaa !10
  %110 = getelementptr inbounds double, ptr %109, i64 %.2429510
  store double 0.000000e+00, ptr %110, align 8, !tbaa !12
  %111 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 0)
  %112 = extractvalue { double, double } %111, 0
  %113 = extractvalue { double, double } %111, 1
  %114 = load ptr, ptr %31, align 8, !tbaa !9
  %115 = getelementptr inbounds ptr, ptr %114, i64 %.3514
  %116 = load ptr, ptr %115, align 8, !tbaa !10
  %117 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %116, i64 %.2429510
  store double %112, ptr %117, align 8, !tbaa !12
  %.sroa.435.0..sroa_idx = getelementptr inbounds i8, ptr %117, i64 8
  store double %113, ptr %.sroa.435.0..sroa_idx, align 8, !tbaa !12
  %118 = add nuw i64 %.2429510, 1
  %exitcond548.not = icmp eq i64 %.2429510, %smax547
  br i1 %exitcond548.not, label %._crit_edge512, label %106, !llvm.loop !21

._crit_edge512:                                   ; preds = %106
  %119 = add nuw i64 %.3514, 1
  %exitcond550.not = icmp eq i64 %.3514, %smax549
  br i1 %exitcond550.not, label %.preheader488, label %.preheader487, !llvm.loop !22

.lr.ph517:                                        ; preds = %.preheader488, %.lr.ph517
  %.4516 = phi i64 [ %135, %.lr.ph517 ], [ 0, %.preheader488 ]
  %120 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %121 = call double @llvm.fmuladd.f64(double %120, double 1.000000e+01, double 1.000000e+00)
  %122 = load ptr, ptr %30, align 8, !tbaa !9
  %123 = getelementptr inbounds ptr, ptr %122, i64 %.4516
  %124 = load ptr, ptr %123, align 8, !tbaa !10
  %125 = getelementptr inbounds double, ptr %124, i64 %.4516
  store double %121, ptr %125, align 8, !tbaa !12
  %126 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %127 = call double @llvm.fmuladd.f64(double %126, double 1.000000e+01, double 1.000000e+00)
  %128 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef %127)
  %129 = extractvalue { double, double } %128, 0
  %130 = extractvalue { double, double } %128, 1
  %131 = load ptr, ptr %31, align 8, !tbaa !9
  %132 = getelementptr inbounds ptr, ptr %131, i64 %.4516
  %133 = load ptr, ptr %132, align 8, !tbaa !10
  %134 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %133, i64 %.4516
  store double %129, ptr %134, align 8, !tbaa !12
  %.sroa.433.0..sroa_idx = getelementptr inbounds i8, ptr %134, i64 8
  store double %130, ptr %.sroa.433.0..sroa_idx, align 8, !tbaa !12
  %135 = add nuw nsw i64 %.4516, 1
  %136 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %33, i64 noundef %35, ptr noundef %1)
  %.not463.not = icmp slt i64 %135, %136
  br i1 %.not463.not, label %.lr.ph517, label %._crit_edge518, !llvm.loop !23

._crit_edge518:                                   ; preds = %.lr.ph517, %.preheader488
  call void @_ZN11alglib_impl31cmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %33, i64 noundef %35, ptr noundef %1)
  call void @_ZN11alglib_impl32cmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %33, i64 noundef %35, ptr noundef %1)
  call void @_ZN11alglib_impl31rmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %33, i64 noundef %35, ptr noundef %1)
  call void @_ZN11alglib_impl32rmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %33, i64 noundef %35, ptr noundef %1)
  call void @_ZL28testtrfacunit_testcluproblemPKN11alglib_impl9ae_matrixElldPbS3_PNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %33, i64 noundef %35, double noundef %25, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %1)
  call void @_ZL28testtrfacunit_testrluproblemPKN11alglib_impl9ae_matrixElldPbS3_PNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %33, i64 noundef %35, double noundef %25, ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef %1)
  %137 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3, ptr noundef %1)
  %138 = add nsw i64 %137, 255
  %139 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 3, ptr noundef %1)
  %140 = add nsw i64 %139, 255
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %138, i64 noundef %140, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %138, i64 noundef %140, ptr noundef %1)
  %.not462513.1 = icmp slt i64 %137, -254
  %.not464509.1 = icmp slt i64 %139, -254
  %or.cond573 = or i1 %.not462513.1, %.not464509.1
  br i1 %or.cond573, label %.preheader488.1, label %.preheader487.preheader.1

.preheader487.preheader.1:                        ; preds = %._crit_edge518
  %141 = add i64 %137, 254
  %142 = add i64 %139, 254
  %smax547.1 = call i64 @llvm.smax.i64(i64 %142, i64 0)
  %smax549.1 = call i64 @llvm.smax.i64(i64 %141, i64 0)
  br label %.preheader487.1

.preheader487.1:                                  ; preds = %._crit_edge512.1, %.preheader487.preheader.1
  %.3514.1 = phi i64 [ %156, %._crit_edge512.1 ], [ 0, %.preheader487.preheader.1 ]
  br label %143

143:                                              ; preds = %143, %.preheader487.1
  %.2429510.1 = phi i64 [ 0, %.preheader487.1 ], [ %155, %143 ]
  %144 = load ptr, ptr %30, align 8, !tbaa !9
  %145 = getelementptr inbounds ptr, ptr %144, i64 %.3514.1
  %146 = load ptr, ptr %145, align 8, !tbaa !10
  %147 = getelementptr inbounds double, ptr %146, i64 %.2429510.1
  store double 0.000000e+00, ptr %147, align 8, !tbaa !12
  %148 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 0)
  %149 = extractvalue { double, double } %148, 0
  %150 = extractvalue { double, double } %148, 1
  %151 = load ptr, ptr %31, align 8, !tbaa !9
  %152 = getelementptr inbounds ptr, ptr %151, i64 %.3514.1
  %153 = load ptr, ptr %152, align 8, !tbaa !10
  %154 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %153, i64 %.2429510.1
  store double %149, ptr %154, align 8, !tbaa !12
  %.sroa.435.0..sroa_idx.1 = getelementptr inbounds i8, ptr %154, i64 8
  store double %150, ptr %.sroa.435.0..sroa_idx.1, align 8, !tbaa !12
  %155 = add nuw i64 %.2429510.1, 1
  %exitcond548.1.not = icmp eq i64 %.2429510.1, %smax547.1
  br i1 %exitcond548.1.not, label %._crit_edge512.1, label %143, !llvm.loop !21

._crit_edge512.1:                                 ; preds = %143
  %156 = add nuw i64 %.3514.1, 1
  %exitcond550.1.not = icmp eq i64 %.3514.1, %smax549.1
  br i1 %exitcond550.1.not, label %.preheader488.1, label %.preheader487.1, !llvm.loop !22

.preheader488.1:                                  ; preds = %._crit_edge512.1, %._crit_edge518
  %157 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %138, i64 noundef %140, ptr noundef %1)
  %.not463.not515.1 = icmp sgt i64 %157, 0
  br i1 %.not463.not515.1, label %.lr.ph517.1, label %._crit_edge518.1

.lr.ph517.1:                                      ; preds = %.preheader488.1, %.lr.ph517.1
  %.4516.1 = phi i64 [ %173, %.lr.ph517.1 ], [ 0, %.preheader488.1 ]
  %158 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %159 = call double @llvm.fmuladd.f64(double %158, double 1.000000e+01, double 1.000000e+00)
  %160 = load ptr, ptr %30, align 8, !tbaa !9
  %161 = getelementptr inbounds ptr, ptr %160, i64 %.4516.1
  %162 = load ptr, ptr %161, align 8, !tbaa !10
  %163 = getelementptr inbounds double, ptr %162, i64 %.4516.1
  store double %159, ptr %163, align 8, !tbaa !12
  %164 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %165 = call double @llvm.fmuladd.f64(double %164, double 1.000000e+01, double 1.000000e+00)
  %166 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef %165)
  %167 = extractvalue { double, double } %166, 0
  %168 = extractvalue { double, double } %166, 1
  %169 = load ptr, ptr %31, align 8, !tbaa !9
  %170 = getelementptr inbounds ptr, ptr %169, i64 %.4516.1
  %171 = load ptr, ptr %170, align 8, !tbaa !10
  %172 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %171, i64 %.4516.1
  store double %167, ptr %172, align 8, !tbaa !12
  %.sroa.433.0..sroa_idx.1 = getelementptr inbounds i8, ptr %172, i64 8
  store double %168, ptr %.sroa.433.0..sroa_idx.1, align 8, !tbaa !12
  %173 = add nuw nsw i64 %.4516.1, 1
  %174 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %138, i64 noundef %140, ptr noundef %1)
  %.not463.not.1 = icmp slt i64 %173, %174
  br i1 %.not463.not.1, label %.lr.ph517.1, label %._crit_edge518.1, !llvm.loop !23

._crit_edge518.1:                                 ; preds = %.lr.ph517.1, %.preheader488.1
  call void @_ZN11alglib_impl31cmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %138, i64 noundef %140, ptr noundef %1)
  call void @_ZN11alglib_impl32cmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %138, i64 noundef %140, ptr noundef %1)
  call void @_ZN11alglib_impl31rmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %138, i64 noundef %140, ptr noundef %1)
  call void @_ZN11alglib_impl32rmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %138, i64 noundef %140, ptr noundef %1)
  call void @_ZL28testtrfacunit_testcluproblemPKN11alglib_impl9ae_matrixElldPbS3_PNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %138, i64 noundef %140, double noundef %25, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %1)
  call void @_ZL28testtrfacunit_testrluproblemPKN11alglib_impl9ae_matrixElldPbS3_PNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %138, i64 noundef %140, double noundef %25, ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef %1)
  br i1 %.not505, label %._crit_edge539, label %.lr.ph538

175:                                              ; preds = %.lr.ph538, %498
  %.1537 = phi i64 [ 1, %.lr.ph538 ], [ %517, %498 ]
  %176 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %177 = call double @llvm.fmuladd.f64(double %176, double 5.000000e+01, double 1.000000e+00)
  call void @_ZN11alglib_impl16hpdmatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %.1537, double noundef %177, ptr noundef nonnull %7, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.1537, i64 noundef %.1537, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.1537, i64 noundef %.1537, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %.1537, i64 noundef %.1537, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %.1537, i64 noundef %.1537, ptr noundef %1)
  br label %.preheader476

.preheader485:                                    ; preds = %221
  %178 = add nsw i64 %.1537, -1
  br label %223

.preheader476:                                    ; preds = %175, %221
  %.5521 = phi i64 [ 0, %175 ], [ %222, %221 ]
  %179 = uitofp nneg i64 %.5521 to double
  br label %180

180:                                              ; preds = %.preheader476, %180
  %.3430520 = phi i64 [ 0, %.preheader476 ], [ %220, %180 ]
  %181 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %182 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %181, double noundef 5.000000e-01)
  %183 = load double, ptr %90, align 8, !tbaa !24
  %184 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext %182, double noundef %179, double noundef %183, ptr noundef %1)
  %185 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef %184)
  %186 = extractvalue { double, double } %185, 0
  %187 = extractvalue { double, double } %185, 1
  %188 = load ptr, ptr %91, align 8, !tbaa !9
  %189 = getelementptr inbounds ptr, ptr %188, i64 %.5521
  %190 = load ptr, ptr %189, align 8, !tbaa !10
  %191 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %190, i64 %.3430520
  store double %186, ptr %191, align 8, !tbaa !12
  %.sroa.431.0..sroa_idx = getelementptr inbounds i8, ptr %191, i64 8
  store double %187, ptr %.sroa.431.0..sroa_idx, align 8, !tbaa !12
  %192 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %193 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %192, double noundef 5.000000e-01)
  %194 = uitofp nneg i64 %.3430520 to double
  %195 = load double, ptr %92, align 8, !tbaa !30
  %196 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext %193, double noundef %194, double noundef %195, ptr noundef %1)
  %197 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef %196)
  %198 = extractvalue { double, double } %197, 0
  %199 = extractvalue { double, double } %197, 1
  %200 = load ptr, ptr %93, align 8, !tbaa !9
  %201 = getelementptr inbounds ptr, ptr %200, i64 %.5521
  %202 = load ptr, ptr %201, align 8, !tbaa !10
  %203 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %202, i64 %.3430520
  store double %198, ptr %203, align 8, !tbaa !12
  %.sroa.429.0..sroa_idx = getelementptr inbounds i8, ptr %203, i64 8
  store double %199, ptr %.sroa.429.0..sroa_idx, align 8, !tbaa !12
  %204 = load ptr, ptr %91, align 8, !tbaa !9
  %205 = getelementptr inbounds ptr, ptr %204, i64 %.5521
  %206 = load ptr, ptr %205, align 8, !tbaa !10
  %207 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %206, i64 %.3430520
  %208 = load ptr, ptr %94, align 8, !tbaa !9
  %209 = getelementptr inbounds ptr, ptr %208, i64 %.5521
  %210 = load ptr, ptr %209, align 8, !tbaa !10
  %211 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %210, i64 %.3430520
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %211, ptr noundef nonnull align 8 dereferenceable(16) %207, i64 16, i1 false), !tbaa.struct !31
  %212 = load ptr, ptr %93, align 8, !tbaa !9
  %213 = getelementptr inbounds ptr, ptr %212, i64 %.5521
  %214 = load ptr, ptr %213, align 8, !tbaa !10
  %215 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %214, i64 %.3430520
  %216 = load ptr, ptr %95, align 8, !tbaa !9
  %217 = getelementptr inbounds ptr, ptr %216, i64 %.5521
  %218 = load ptr, ptr %217, align 8, !tbaa !10
  %219 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %218, i64 %.3430520
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %219, ptr noundef nonnull align 8 dereferenceable(16) %215, i64 16, i1 false), !tbaa.struct !31
  %220 = add nuw nsw i64 %.3430520, 1
  %exitcond552.not = icmp eq i64 %220, %.1537
  br i1 %exitcond552.not, label %221, label %180, !llvm.loop !32

221:                                              ; preds = %180
  %222 = add nuw nsw i64 %.5521, 1
  %exitcond553.not = icmp eq i64 %222, %.1537
  br i1 %exitcond553.not, label %.preheader485, label %.preheader476, !llvm.loop !33

223:                                              ; preds = %.preheader485, %223
  %.6522 = phi i64 [ 0, %.preheader485 ], [ %240, %223 ]
  %224 = load ptr, ptr %91, align 8, !tbaa !9
  %225 = getelementptr inbounds ptr, ptr %224, i64 %.6522
  %226 = load ptr, ptr %225, align 8, !tbaa !10
  %227 = load ptr, ptr %31, align 8, !tbaa !9
  %228 = getelementptr inbounds ptr, ptr %227, i64 %.6522
  %229 = load ptr, ptr %228, align 8, !tbaa !10
  %230 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %.6522)
  call void @_ZN11alglib_impl10ae_v_cmoveEPNS_10ae_complexElPKS0_lPKcl(ptr noundef %226, i64 noundef 1, ptr noundef %229, i64 noundef 1, ptr noundef nonnull @.str.67, i64 noundef %230)
  %231 = load ptr, ptr %93, align 8, !tbaa !9
  %232 = getelementptr inbounds ptr, ptr %231, i64 %.6522
  %233 = load ptr, ptr %232, align 8, !tbaa !10
  %234 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %233, i64 %.6522
  %235 = load ptr, ptr %31, align 8, !tbaa !9
  %236 = getelementptr inbounds ptr, ptr %235, i64 %.6522
  %237 = load ptr, ptr %236, align 8, !tbaa !10
  %238 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %237, i64 %.6522
  %239 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %.6522, i64 noundef %178)
  call void @_ZN11alglib_impl10ae_v_cmoveEPNS_10ae_complexElPKS0_lPKcl(ptr noundef %234, i64 noundef 1, ptr noundef %238, i64 noundef 1, ptr noundef nonnull @.str.67, i64 noundef %239)
  %240 = add nuw nsw i64 %.6522, 1
  %exitcond554.not = icmp eq i64 %240, %.1537
  br i1 %exitcond554.not, label %241, label %223, !llvm.loop !34

241:                                              ; preds = %223
  %242 = call noundef zeroext i1 @_ZN11alglib_impl17hpdmatrixcholeskyEPNS_9ae_matrixElbPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.1537, i1 noundef zeroext false, ptr noundef %1)
  br i1 %242, label %.preheader475, label %284

.preheader475:                                    ; preds = %241, %282
  %.7524 = phi i64 [ %283, %282 ], [ 0, %241 ]
  br label %243

243:                                              ; preds = %.preheader475, %280
  %.4431523 = phi i64 [ 0, %.preheader475 ], [ %281, %280 ]
  %244 = icmp ugt i64 %.4431523, %.7524
  br i1 %244, label %245, label %258

245:                                              ; preds = %243
  %246 = load i8, ptr %16, align 1, !tbaa !5, !range !35, !noundef !36
  %247 = trunc nuw i8 %246 to i1
  br i1 %247, label %280, label %248

248:                                              ; preds = %245
  %249 = load ptr, ptr %91, align 8, !tbaa !9
  %250 = getelementptr inbounds ptr, ptr %249, i64 %.7524
  %251 = load ptr, ptr %250, align 8, !tbaa !10
  %252 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %251, i64 %.4431523
  %.sroa.026.0.copyload = load double, ptr %252, align 8, !tbaa !12
  %.sroa.227.0..sroa_idx = getelementptr inbounds i8, ptr %252, i64 8
  %.sroa.227.0.copyload = load double, ptr %.sroa.227.0..sroa_idx, align 8, !tbaa !12
  %253 = load ptr, ptr %94, align 8, !tbaa !9
  %254 = getelementptr inbounds ptr, ptr %253, i64 %.7524
  %255 = load ptr, ptr %254, align 8, !tbaa !10
  %256 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %255, i64 %.4431523
  %.sroa.024.0.copyload = load double, ptr %256, align 8, !tbaa !12
  %.sroa.225.0..sroa_idx = getelementptr inbounds i8, ptr %256, i64 8
  %.sroa.225.0.copyload = load double, ptr %.sroa.225.0..sroa_idx, align 8, !tbaa !12
  %257 = call noundef zeroext i1 @_ZN11alglib_impl8ae_c_neqENS_10ae_complexES0_(double %.sroa.026.0.copyload, double %.sroa.227.0.copyload, double %.sroa.024.0.copyload, double %.sroa.225.0.copyload)
  br label %280

258:                                              ; preds = %243
  %259 = load ptr, ptr %91, align 8, !tbaa !9
  %260 = getelementptr inbounds ptr, ptr %259, i64 %.7524
  %261 = load ptr, ptr %260, align 8, !tbaa !10
  %262 = getelementptr inbounds ptr, ptr %259, i64 %.4431523
  %263 = load ptr, ptr %262, align 8, !tbaa !10
  %264 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %.4431523)
  %265 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %261, i64 noundef 1, ptr noundef nonnull @.str.67, ptr noundef %263, i64 noundef 1, ptr noundef nonnull @.str.68, i64 noundef %264)
  %266 = load i8, ptr %16, align 1, !tbaa !5, !range !35, !noundef !36
  %267 = trunc nuw i8 %266 to i1
  br i1 %267, label %280, label %268

268:                                              ; preds = %258
  %269 = extractvalue { double, double } %265, 1
  %270 = extractvalue { double, double } %265, 0
  %271 = load ptr, ptr %31, align 8, !tbaa !9
  %272 = getelementptr inbounds ptr, ptr %271, i64 %.7524
  %273 = load ptr, ptr %272, align 8, !tbaa !10
  %274 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %273, i64 %.4431523
  %.sroa.018.0.copyload = load double, ptr %274, align 8, !tbaa !12
  %.sroa.219.0..sroa_idx = getelementptr inbounds i8, ptr %274, i64 8
  %.sroa.219.0.copyload = load double, ptr %.sroa.219.0..sroa_idx, align 8, !tbaa !12
  %275 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %.sroa.018.0.copyload, double %.sroa.219.0.copyload, double %270, double %269)
  %276 = extractvalue { double, double } %275, 0
  %277 = extractvalue { double, double } %275, 1
  %278 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %276, double %277, ptr noundef %1)
  %279 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %278, double noundef %25)
  br label %280

280:                                              ; preds = %258, %268, %245, %248
  %storemerge460.in = phi i1 [ true, %245 ], [ %257, %248 ], [ true, %258 ], [ %279, %268 ]
  %storemerge460 = zext i1 %storemerge460.in to i8
  store i8 %storemerge460, ptr %16, align 1, !tbaa !5
  %281 = add nuw nsw i64 %.4431523, 1
  %exitcond555.not = icmp eq i64 %281, %.1537
  br i1 %exitcond555.not, label %282, label %243, !llvm.loop !37

282:                                              ; preds = %280
  %283 = add nuw nsw i64 %.7524, 1
  %exitcond556.not = icmp eq i64 %283, %.1537
  br i1 %exitcond556.not, label %.loopexit484, label %.preheader475, !llvm.loop !38

284:                                              ; preds = %241
  store i8 1, ptr %16, align 1, !tbaa !5
  br label %.loopexit484

.loopexit484:                                     ; preds = %282, %284
  %285 = call noundef zeroext i1 @_ZN11alglib_impl17hpdmatrixcholeskyEPNS_9ae_matrixElbPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.1537, i1 noundef zeroext true, ptr noundef %1)
  br i1 %285, label %.preheader474, label %327

.preheader474:                                    ; preds = %.loopexit484, %325
  %.8526 = phi i64 [ %326, %325 ], [ 0, %.loopexit484 ]
  br label %286

286:                                              ; preds = %.preheader474, %323
  %.5432525 = phi i64 [ 0, %.preheader474 ], [ %324, %323 ]
  %287 = icmp ult i64 %.5432525, %.8526
  br i1 %287, label %288, label %301

288:                                              ; preds = %286
  %289 = load i8, ptr %16, align 1, !tbaa !5, !range !35, !noundef !36
  %290 = trunc nuw i8 %289 to i1
  br i1 %290, label %323, label %291

291:                                              ; preds = %288
  %292 = load ptr, ptr %93, align 8, !tbaa !9
  %293 = getelementptr inbounds ptr, ptr %292, i64 %.8526
  %294 = load ptr, ptr %293, align 8, !tbaa !10
  %295 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %294, i64 %.5432525
  %.sroa.014.0.copyload = load double, ptr %295, align 8, !tbaa !12
  %.sroa.215.0..sroa_idx = getelementptr inbounds i8, ptr %295, i64 8
  %.sroa.215.0.copyload = load double, ptr %.sroa.215.0..sroa_idx, align 8, !tbaa !12
  %296 = load ptr, ptr %95, align 8, !tbaa !9
  %297 = getelementptr inbounds ptr, ptr %296, i64 %.8526
  %298 = load ptr, ptr %297, align 8, !tbaa !10
  %299 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %298, i64 %.5432525
  %.sroa.012.0.copyload = load double, ptr %299, align 8, !tbaa !12
  %.sroa.213.0..sroa_idx = getelementptr inbounds i8, ptr %299, i64 8
  %.sroa.213.0.copyload = load double, ptr %.sroa.213.0..sroa_idx, align 8, !tbaa !12
  %300 = call noundef zeroext i1 @_ZN11alglib_impl8ae_c_neqENS_10ae_complexES0_(double %.sroa.014.0.copyload, double %.sroa.215.0.copyload, double %.sroa.012.0.copyload, double %.sroa.213.0.copyload)
  br label %323

301:                                              ; preds = %286
  %302 = load ptr, ptr %93, align 8, !tbaa !9
  %303 = load ptr, ptr %302, align 8, !tbaa !10
  %304 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %303, i64 %.8526
  %305 = load i64, ptr %96, align 8, !tbaa !39
  %306 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %303, i64 %.5432525
  %307 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %.8526)
  %308 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %304, i64 noundef %305, ptr noundef nonnull @.str.68, ptr noundef %306, i64 noundef %305, ptr noundef nonnull @.str.67, i64 noundef %307)
  %309 = load i8, ptr %16, align 1, !tbaa !5, !range !35, !noundef !36
  %310 = trunc nuw i8 %309 to i1
  br i1 %310, label %323, label %311

311:                                              ; preds = %301
  %312 = extractvalue { double, double } %308, 1
  %313 = extractvalue { double, double } %308, 0
  %314 = load ptr, ptr %31, align 8, !tbaa !9
  %315 = getelementptr inbounds ptr, ptr %314, i64 %.8526
  %316 = load ptr, ptr %315, align 8, !tbaa !10
  %317 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %316, i64 %.5432525
  %.sroa.06.0.copyload = load double, ptr %317, align 8, !tbaa !12
  %.sroa.27.0..sroa_idx = getelementptr inbounds i8, ptr %317, i64 8
  %.sroa.27.0.copyload = load double, ptr %.sroa.27.0..sroa_idx, align 8, !tbaa !12
  %318 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %.sroa.06.0.copyload, double %.sroa.27.0.copyload, double %313, double %312)
  %319 = extractvalue { double, double } %318, 0
  %320 = extractvalue { double, double } %318, 1
  %321 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %319, double %320, ptr noundef %1)
  %322 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %321, double noundef %25)
  br label %323

323:                                              ; preds = %301, %311, %288, %291
  %storemerge458.in = phi i1 [ true, %288 ], [ %300, %291 ], [ true, %301 ], [ %322, %311 ]
  %storemerge458 = zext i1 %storemerge458.in to i8
  store i8 %storemerge458, ptr %16, align 1, !tbaa !5
  %324 = add nuw nsw i64 %.5432525, 1
  %exitcond557.not = icmp eq i64 %324, %.1537
  br i1 %exitcond557.not, label %325, label %286, !llvm.loop !41

325:                                              ; preds = %323
  %326 = add nuw nsw i64 %.8526, 1
  %exitcond558.not = icmp eq i64 %326, %.1537
  br i1 %exitcond558.not, label %.loopexit482, label %.preheader474, !llvm.loop !42

327:                                              ; preds = %.loopexit484
  store i8 1, ptr %16, align 1, !tbaa !5
  br label %.loopexit482

.loopexit482:                                     ; preds = %325, %327
  %328 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %329 = call double @llvm.fmuladd.f64(double %328, double 5.000000e+01, double 1.000000e+00)
  call void @_ZN11alglib_impl16spdmatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %.1537, double noundef %329, ptr noundef nonnull %4, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef %.1537, i64 noundef %.1537, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %.1537, i64 noundef %.1537, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %.1537, i64 noundef %.1537, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.1537, i64 noundef %.1537, ptr noundef %1)
  br label %.preheader473

.preheader473:                                    ; preds = %.loopexit482, %368
  %.9528 = phi i64 [ 0, %.loopexit482 ], [ %369, %368 ]
  %330 = uitofp nneg i64 %.9528 to double
  br label %331

331:                                              ; preds = %.preheader473, %331
  %.6433527 = phi i64 [ 0, %.preheader473 ], [ %367, %331 ]
  %332 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %333 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %332, double noundef 5.000000e-01)
  %334 = load double, ptr %90, align 8, !tbaa !24
  %335 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext %333, double noundef %330, double noundef %334, ptr noundef %1)
  %336 = load ptr, ptr %97, align 8, !tbaa !9
  %337 = getelementptr inbounds ptr, ptr %336, i64 %.9528
  %338 = load ptr, ptr %337, align 8, !tbaa !10
  %339 = getelementptr inbounds double, ptr %338, i64 %.6433527
  store double %335, ptr %339, align 8, !tbaa !12
  %340 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %341 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %340, double noundef 5.000000e-01)
  %342 = uitofp nneg i64 %.6433527 to double
  %343 = load double, ptr %92, align 8, !tbaa !30
  %344 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext %341, double noundef %342, double noundef %343, ptr noundef %1)
  %345 = load ptr, ptr %98, align 8, !tbaa !9
  %346 = getelementptr inbounds ptr, ptr %345, i64 %.9528
  %347 = load ptr, ptr %346, align 8, !tbaa !10
  %348 = getelementptr inbounds double, ptr %347, i64 %.6433527
  store double %344, ptr %348, align 8, !tbaa !12
  %349 = load ptr, ptr %97, align 8, !tbaa !9
  %350 = getelementptr inbounds ptr, ptr %349, i64 %.9528
  %351 = load ptr, ptr %350, align 8, !tbaa !10
  %352 = getelementptr inbounds double, ptr %351, i64 %.6433527
  %353 = load double, ptr %352, align 8, !tbaa !12
  %354 = load ptr, ptr %99, align 8, !tbaa !9
  %355 = getelementptr inbounds ptr, ptr %354, i64 %.9528
  %356 = load ptr, ptr %355, align 8, !tbaa !10
  %357 = getelementptr inbounds double, ptr %356, i64 %.6433527
  store double %353, ptr %357, align 8, !tbaa !12
  %358 = load ptr, ptr %98, align 8, !tbaa !9
  %359 = getelementptr inbounds ptr, ptr %358, i64 %.9528
  %360 = load ptr, ptr %359, align 8, !tbaa !10
  %361 = getelementptr inbounds double, ptr %360, i64 %.6433527
  %362 = load double, ptr %361, align 8, !tbaa !12
  %363 = load ptr, ptr %100, align 8, !tbaa !9
  %364 = getelementptr inbounds ptr, ptr %363, i64 %.9528
  %365 = load ptr, ptr %364, align 8, !tbaa !10
  %366 = getelementptr inbounds double, ptr %365, i64 %.6433527
  store double %362, ptr %366, align 8, !tbaa !12
  %367 = add nuw nsw i64 %.6433527, 1
  %exitcond559.not = icmp eq i64 %367, %.1537
  br i1 %exitcond559.not, label %368, label %331, !llvm.loop !43

368:                                              ; preds = %331
  %369 = add nuw nsw i64 %.9528, 1
  %exitcond560.not = icmp eq i64 %369, %.1537
  br i1 %exitcond560.not, label %.preheader480, label %.preheader473, !llvm.loop !44

.preheader480:                                    ; preds = %368, %.preheader480
  %.10529 = phi i64 [ %386, %.preheader480 ], [ 0, %368 ]
  %370 = load ptr, ptr %97, align 8, !tbaa !9
  %371 = getelementptr inbounds ptr, ptr %370, i64 %.10529
  %372 = load ptr, ptr %371, align 8, !tbaa !10
  %373 = load ptr, ptr %30, align 8, !tbaa !9
  %374 = getelementptr inbounds ptr, ptr %373, i64 %.10529
  %375 = load ptr, ptr %374, align 8, !tbaa !10
  %376 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %.10529)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %372, i64 noundef 1, ptr noundef %375, i64 noundef 1, i64 noundef %376)
  %377 = load ptr, ptr %98, align 8, !tbaa !9
  %378 = getelementptr inbounds ptr, ptr %377, i64 %.10529
  %379 = load ptr, ptr %378, align 8, !tbaa !10
  %380 = getelementptr inbounds double, ptr %379, i64 %.10529
  %381 = load ptr, ptr %30, align 8, !tbaa !9
  %382 = getelementptr inbounds ptr, ptr %381, i64 %.10529
  %383 = load ptr, ptr %382, align 8, !tbaa !10
  %384 = getelementptr inbounds double, ptr %383, i64 %.10529
  %385 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef %.10529, i64 noundef %178)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %380, i64 noundef 1, ptr noundef %384, i64 noundef 1, i64 noundef %385)
  %386 = add nuw nsw i64 %.10529, 1
  %exitcond561.not = icmp eq i64 %386, %.1537
  br i1 %exitcond561.not, label %387, label %.preheader480, !llvm.loop !45

387:                                              ; preds = %.preheader480
  %388 = call noundef zeroext i1 @_ZN11alglib_impl17spdmatrixcholeskyEPNS_9ae_matrixElbPNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef %.1537, i1 noundef zeroext false, ptr noundef %1)
  br i1 %388, label %.preheader472, label %429

.preheader472:                                    ; preds = %387, %427
  %.11531 = phi i64 [ %428, %427 ], [ 0, %387 ]
  br label %389

389:                                              ; preds = %.preheader472, %425
  %.7434530 = phi i64 [ 0, %.preheader472 ], [ %426, %425 ]
  %390 = icmp ugt i64 %.7434530, %.11531
  br i1 %390, label %391, label %406

391:                                              ; preds = %389
  %392 = load i8, ptr %14, align 1, !tbaa !5, !range !35, !noundef !36
  %393 = trunc nuw i8 %392 to i1
  br i1 %393, label %425, label %394

394:                                              ; preds = %391
  %395 = load ptr, ptr %97, align 8, !tbaa !9
  %396 = getelementptr inbounds ptr, ptr %395, i64 %.11531
  %397 = load ptr, ptr %396, align 8, !tbaa !10
  %398 = getelementptr inbounds double, ptr %397, i64 %.7434530
  %399 = load double, ptr %398, align 8, !tbaa !12
  %400 = load ptr, ptr %99, align 8, !tbaa !9
  %401 = getelementptr inbounds ptr, ptr %400, i64 %.11531
  %402 = load ptr, ptr %401, align 8, !tbaa !10
  %403 = getelementptr inbounds double, ptr %402, i64 %.7434530
  %404 = load double, ptr %403, align 8, !tbaa !12
  %405 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %399, double noundef %404)
  br label %425

406:                                              ; preds = %389
  %407 = load ptr, ptr %97, align 8, !tbaa !9
  %408 = getelementptr inbounds ptr, ptr %407, i64 %.11531
  %409 = load ptr, ptr %408, align 8, !tbaa !10
  %410 = getelementptr inbounds ptr, ptr %407, i64 %.7434530
  %411 = load ptr, ptr %410, align 8, !tbaa !10
  %412 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %.7434530)
  %413 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %409, i64 noundef 1, ptr noundef %411, i64 noundef 1, i64 noundef %412)
  %414 = load i8, ptr %14, align 1, !tbaa !5, !range !35, !noundef !36
  %415 = trunc nuw i8 %414 to i1
  br i1 %415, label %425, label %416

416:                                              ; preds = %406
  %417 = load ptr, ptr %30, align 8, !tbaa !9
  %418 = getelementptr inbounds ptr, ptr %417, i64 %.11531
  %419 = load ptr, ptr %418, align 8, !tbaa !10
  %420 = getelementptr inbounds double, ptr %419, i64 %.7434530
  %421 = load double, ptr %420, align 8, !tbaa !12
  %422 = fsub double %421, %413
  %423 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %422, ptr noundef %1)
  %424 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %423, double noundef %25)
  br label %425

425:                                              ; preds = %406, %416, %391, %394
  %storemerge455.in = phi i1 [ true, %391 ], [ %405, %394 ], [ true, %406 ], [ %424, %416 ]
  %storemerge455 = zext i1 %storemerge455.in to i8
  store i8 %storemerge455, ptr %14, align 1, !tbaa !5
  %426 = add nuw nsw i64 %.7434530, 1
  %exitcond562.not = icmp eq i64 %426, %.1537
  br i1 %exitcond562.not, label %427, label %389, !llvm.loop !46

427:                                              ; preds = %425
  %428 = add nuw nsw i64 %.11531, 1
  %exitcond563.not = icmp eq i64 %428, %.1537
  br i1 %exitcond563.not, label %.loopexit479, label %.preheader472, !llvm.loop !47

429:                                              ; preds = %387
  store i8 1, ptr %14, align 1, !tbaa !5
  br label %.loopexit479

.loopexit479:                                     ; preds = %427, %429
  %430 = call noundef zeroext i1 @_ZN11alglib_impl17spdmatrixcholeskyEPNS_9ae_matrixElbPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %.1537, i1 noundef zeroext true, ptr noundef %1)
  br i1 %430, label %.preheader471, label %471

.preheader471:                                    ; preds = %.loopexit479, %469
  %.12533 = phi i64 [ %470, %469 ], [ 0, %.loopexit479 ]
  br label %431

431:                                              ; preds = %.preheader471, %467
  %.8435532 = phi i64 [ 0, %.preheader471 ], [ %468, %467 ]
  %432 = icmp ult i64 %.8435532, %.12533
  br i1 %432, label %433, label %448

433:                                              ; preds = %431
  %434 = load i8, ptr %14, align 1, !tbaa !5, !range !35, !noundef !36
  %435 = trunc nuw i8 %434 to i1
  br i1 %435, label %467, label %436

436:                                              ; preds = %433
  %437 = load ptr, ptr %98, align 8, !tbaa !9
  %438 = getelementptr inbounds ptr, ptr %437, i64 %.12533
  %439 = load ptr, ptr %438, align 8, !tbaa !10
  %440 = getelementptr inbounds double, ptr %439, i64 %.8435532
  %441 = load double, ptr %440, align 8, !tbaa !12
  %442 = load ptr, ptr %100, align 8, !tbaa !9
  %443 = getelementptr inbounds ptr, ptr %442, i64 %.12533
  %444 = load ptr, ptr %443, align 8, !tbaa !10
  %445 = getelementptr inbounds double, ptr %444, i64 %.8435532
  %446 = load double, ptr %445, align 8, !tbaa !12
  %447 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %441, double noundef %446)
  br label %467

448:                                              ; preds = %431
  %449 = load ptr, ptr %98, align 8, !tbaa !9
  %450 = load ptr, ptr %449, align 8, !tbaa !10
  %451 = getelementptr inbounds double, ptr %450, i64 %.12533
  %452 = load i64, ptr %101, align 8, !tbaa !39
  %453 = getelementptr inbounds double, ptr %450, i64 %.8435532
  %454 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %.12533)
  %455 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %451, i64 noundef %452, ptr noundef %453, i64 noundef %452, i64 noundef %454)
  %456 = load i8, ptr %14, align 1, !tbaa !5, !range !35, !noundef !36
  %457 = trunc nuw i8 %456 to i1
  br i1 %457, label %467, label %458

458:                                              ; preds = %448
  %459 = load ptr, ptr %30, align 8, !tbaa !9
  %460 = getelementptr inbounds ptr, ptr %459, i64 %.12533
  %461 = load ptr, ptr %460, align 8, !tbaa !10
  %462 = getelementptr inbounds double, ptr %461, i64 %.8435532
  %463 = load double, ptr %462, align 8, !tbaa !12
  %464 = fsub double %463, %455
  %465 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %464, ptr noundef %1)
  %466 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %465, double noundef %25)
  br label %467

467:                                              ; preds = %448, %458, %433, %436
  %storemerge.in = phi i1 [ true, %433 ], [ %447, %436 ], [ true, %448 ], [ %466, %458 ]
  %storemerge = zext i1 %storemerge.in to i8
  store i8 %storemerge, ptr %14, align 1, !tbaa !5
  %468 = add nuw nsw i64 %.8435532, 1
  %exitcond564.not = icmp eq i64 %468, %.1537
  br i1 %exitcond564.not, label %469, label %431, !llvm.loop !48

469:                                              ; preds = %467
  %470 = add nuw nsw i64 %.12533, 1
  %exitcond565.not = icmp eq i64 %470, %.1537
  br i1 %exitcond565.not, label %.loopexit, label %.preheader471, !llvm.loop !49

471:                                              ; preds = %.loopexit479
  store i8 1, ptr %14, align 1, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %469, %471
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.1537, i64 noundef %.1537, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.1537, i64 noundef %.1537, ptr noundef %1)
  br label %.preheader

.preheader:                                       ; preds = %.loopexit, %485
  %.13535 = phi i64 [ 0, %.loopexit ], [ %497, %485 ]
  br label %472

472:                                              ; preds = %.preheader, %472
  %.9436534 = phi i64 [ 0, %.preheader ], [ %484, %472 ]
  %473 = load ptr, ptr %30, align 8, !tbaa !9
  %474 = getelementptr inbounds ptr, ptr %473, i64 %.13535
  %475 = load ptr, ptr %474, align 8, !tbaa !10
  %476 = getelementptr inbounds double, ptr %475, i64 %.9436534
  store double 0.000000e+00, ptr %476, align 8, !tbaa !12
  %477 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef 0.000000e+00)
  %478 = extractvalue { double, double } %477, 0
  %479 = extractvalue { double, double } %477, 1
  %480 = load ptr, ptr %31, align 8, !tbaa !9
  %481 = getelementptr inbounds ptr, ptr %480, i64 %.13535
  %482 = load ptr, ptr %481, align 8, !tbaa !10
  %483 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %482, i64 %.9436534
  store double %478, ptr %483, align 8, !tbaa !12
  %.sroa.44.0..sroa_idx = getelementptr inbounds i8, ptr %483, i64 8
  store double %479, ptr %.sroa.44.0..sroa_idx, align 8, !tbaa !12
  %484 = add nuw nsw i64 %.9436534, 1
  %exitcond566.not = icmp eq i64 %484, %.1537
  br i1 %exitcond566.not, label %485, label %472, !llvm.loop !50

485:                                              ; preds = %472
  %486 = load ptr, ptr %30, align 8, !tbaa !9
  %487 = getelementptr inbounds ptr, ptr %486, i64 %.13535
  %488 = load ptr, ptr %487, align 8, !tbaa !10
  %489 = getelementptr inbounds double, ptr %488, i64 %.13535
  store double 1.000000e+00, ptr %489, align 8, !tbaa !12
  %490 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef 1.000000e+00)
  %491 = extractvalue { double, double } %490, 0
  %492 = extractvalue { double, double } %490, 1
  %493 = load ptr, ptr %31, align 8, !tbaa !9
  %494 = getelementptr inbounds ptr, ptr %493, i64 %.13535
  %495 = load ptr, ptr %494, align 8, !tbaa !10
  %496 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %495, i64 %.13535
  store double %491, ptr %496, align 8, !tbaa !12
  %.sroa.42.0..sroa_idx = getelementptr inbounds i8, ptr %496, i64 8
  store double %492, ptr %.sroa.42.0..sroa_idx, align 8, !tbaa !12
  %497 = add nuw nsw i64 %.13535, 1
  %exitcond567.not = icmp eq i64 %497, %.1537
  br i1 %exitcond567.not, label %498, label %.preheader, !llvm.loop !51

498:                                              ; preds = %485
  %499 = load ptr, ptr %30, align 8, !tbaa !9
  %500 = lshr i64 %.1537, 1
  %501 = getelementptr inbounds ptr, ptr %499, i64 %500
  %502 = load ptr, ptr %501, align 8, !tbaa !10
  %503 = getelementptr inbounds double, ptr %502, i64 %500
  store double -1.000000e+00, ptr %503, align 8, !tbaa !12
  %504 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef -1.000000e+00)
  %505 = extractvalue { double, double } %504, 0
  %506 = extractvalue { double, double } %504, 1
  %507 = load ptr, ptr %31, align 8, !tbaa !9
  %508 = getelementptr inbounds ptr, ptr %507, i64 %500
  %509 = load ptr, ptr %508, align 8, !tbaa !10
  %510 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %509, i64 %500
  store double %505, ptr %510, align 8, !tbaa !12
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %510, i64 8
  store double %506, ptr %.sroa.4.0..sroa_idx, align 8, !tbaa !12
  %511 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %512 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %511, double noundef 5.000000e-01)
  %513 = call noundef zeroext i1 @_ZN11alglib_impl17spdmatrixcholeskyEPNS_9ae_matrixElbPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.1537, i1 noundef zeroext %512, ptr noundef %1)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %14, i1 noundef zeroext %513, ptr noundef nonnull @.str.19, i32 noundef 24035, ptr noundef nonnull @.str.332)
  %514 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %515 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %514, double noundef 5.000000e-01)
  %516 = call noundef zeroext i1 @_ZN11alglib_impl17hpdmatrixcholeskyEPNS_9ae_matrixElbPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.1537, i1 noundef zeroext %515, ptr noundef %1)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %16, i1 noundef zeroext %516, ptr noundef nonnull @.str.19, i32 noundef 24036, ptr noundef nonnull @.str.333)
  %517 = add nuw nsw i64 %.1537, 1
  %exitcond569 = icmp eq i64 %.1537, %smax568
  br i1 %exitcond569, label %._crit_edge539, label %175, !llvm.loop !52

._crit_edge539:                                   ; preds = %498, %._crit_edge518.1
  %518 = load i8, ptr %17, align 1, !tbaa !5, !range !35, !noundef !36
  %519 = trunc nuw i8 %518 to i1
  br i1 %519, label %537, label %520

520:                                              ; preds = %._crit_edge539
  %521 = load i8, ptr %15, align 1, !tbaa !5, !range !35, !noundef !36
  %522 = trunc nuw i8 %521 to i1
  %523 = load i8, ptr %14, align 1, !range !35
  %524 = trunc nuw i8 %523 to i1
  %brmerge = or i1 %26, %524
  %or.cond = select i1 %522, i1 true, i1 %brmerge
  br i1 %or.cond, label %537, label %525

525:                                              ; preds = %520
  %526 = load i8, ptr %18, align 1, !tbaa !5, !range !35, !noundef !36
  %527 = trunc nuw i8 %526 to i1
  br i1 %527, label %537, label %528

528:                                              ; preds = %525
  %529 = load i8, ptr %16, align 1, !tbaa !5, !range !35, !noundef !36
  %530 = trunc nuw i8 %529 to i1
  br i1 %530, label %537, label %531

531:                                              ; preds = %528
  %532 = load i8, ptr %19, align 1, !tbaa !5, !range !35, !noundef !36
  %533 = trunc nuw i8 %532 to i1
  br i1 %533, label %537, label %534

534:                                              ; preds = %531
  %535 = load i8, ptr %20, align 1, !tbaa !5, !range !35, !noundef !36
  %536 = trunc nuw i8 %535 to i1
  br label %537

537:                                              ; preds = %534, %531, %528, %525, %520, %._crit_edge539
  %538 = phi i1 [ true, %531 ], [ true, %528 ], [ true, %525 ], [ true, %520 ], [ true, %._crit_edge539 ], [ %536, %534 ]
  br i1 %0, label %574, label %539

539:                                              ; preds = %537
  %540 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.334)
  %541 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.335)
  %542 = load i8, ptr %17, align 1, !tbaa !5, !range !35, !noundef !36
  %543 = trunc nuw i8 %542 to i1
  %.str.2..str.3 = select i1 %543, ptr @.str.2, ptr @.str.3
  %544 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2..str.3)
  %545 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.336)
  %546 = load i8, ptr %15, align 1, !tbaa !5, !range !35, !noundef !36
  %547 = trunc nuw i8 %546 to i1
  %.str.3.sink574 = select i1 %547, ptr @.str.2, ptr @.str.3
  %548 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink574)
  %549 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.337)
  %550 = load i8, ptr %14, align 1, !tbaa !5, !range !35, !noundef !36
  %551 = trunc nuw i8 %550 to i1
  %.str.3.sink575 = select i1 %551, ptr @.str.2, ptr @.str.3
  %552 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink575)
  %553 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.338)
  %.str.3.sink576 = select i1 %26, ptr @.str.2, ptr @.str.3
  %554 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink576)
  %555 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.339)
  %556 = load i8, ptr %18, align 1, !tbaa !5, !range !35, !noundef !36
  %557 = trunc nuw i8 %556 to i1
  %.str.3.sink577 = select i1 %557, ptr @.str.2, ptr @.str.3
  %558 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink577)
  %559 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.340)
  %560 = load i8, ptr %16, align 1, !tbaa !5, !range !35, !noundef !36
  %561 = trunc nuw i8 %560 to i1
  %.str.3.sink578 = select i1 %561, ptr @.str.2, ptr @.str.3
  %562 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink578)
  %563 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.341)
  %564 = load i8, ptr %19, align 1, !tbaa !5, !range !35, !noundef !36
  %565 = trunc nuw i8 %564 to i1
  %.str.3.sink579 = select i1 %565, ptr @.str.2, ptr @.str.3
  %566 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink579)
  %567 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.342)
  %568 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.337)
  %569 = load i8, ptr %20, align 1, !tbaa !5, !range !35, !noundef !36
  %570 = trunc nuw i8 %569 to i1
  %.str.3.sink580 = select i1 %570, ptr @.str.2, ptr @.str.3
  %571 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.3.sink580)
  %.str.16.sink = select i1 %538, ptr @.str.15, ptr @.str.16
  %572 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.16.sink)
  %573 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17)
  br label %574

574:                                              ; preds = %539, %537
  %575 = xor i1 %538, true
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #8
  ret i1 %575
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z22sparserealcholeskytestPN11alglib_impl8ae_stateE(ptr noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z16sparsereallutestPbPN11alglib_impl8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #6

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #7

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 nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { 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 #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { 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 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = !{!25, !13, i64 24}
!25 = !{!"_ZTSN11alglib_impl8ae_stateE", !26, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !11, i64 32, !27, i64 40, !11, i64 72, !28, i64 80, !11, i64 88, !29, i64 96, !11, i64 104, !11, i64 112, !11, i64 120}
!26 = !{!"long", !7, i64 0}
!27 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24}
!28 = !{!"_ZTSN11alglib_impl13ae_error_typeE", !7, i64 0}
!29 = !{!"long long", !7, i64 0}
!30 = !{!25, !13, i64 16}
!31 = !{i64 0, i64 8, !12, i64 8, i64 8, !12}
!32 = distinct !{!32, !15}
!33 = distinct !{!33, !15}
!34 = distinct !{!34, !15}
!35 = !{i8 0, i8 2}
!36 = !{}
!37 = distinct !{!37, !15}
!38 = distinct !{!38, !15}
!39 = !{!40, !26, i64 16}
!40 = !{!"_ZTSN11alglib_impl9ae_matrixE", !26, i64 0, !26, i64 8, !26, i64 16, !26, i64 24, !6, i64 32, !27, i64 40, !7, i64 72}
!41 = distinct !{!41, !15}
!42 = distinct !{!42, !15}
!43 = distinct !{!43, !15}
!44 = distinct !{!44, !15}
!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 = distinct !{!52, !15}


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