; LLVM IR from Dimandragon/non-parametric-dsp :: alglib-cpp/tests/test_c.ll (Z7testpcabPN11alglib_impl8ae_stateE)

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

%"struct.alglib_impl::ae_frame" = type { %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon }
%union.anon = type { ptr }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::sparsematrix" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64, i64 }
%"struct.alglib_impl::hqrndstate" = type { i64, i64, i64 }

@.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.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.991 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.992 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.993 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.994 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.995 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.996 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.997 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.998 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.999 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1000 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1001 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1002 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1003 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1004 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1005 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1006 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1007 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1008 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1009 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1010 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1011 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1012 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1013 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1014 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1015 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1016 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1017 = external hidden unnamed_addr constant [42 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef) #1

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #1

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

declare void @_ZN11alglib_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_impl18_sparsematrix_initEPvPNS_8ae_stateEb(ptr noundef, ptr noundef, i1 noundef zeroext) #1

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z7testpcabPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) #4 {
  %3 = alloca i8, align 1
  %4 = alloca ptr, align 8
  %5 = alloca %"struct.alglib_impl::ae_frame", align 8
  %6 = alloca i64, align 8
  %7 = alloca i64, align 8
  %8 = alloca double, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca %"struct.alglib_impl::ae_vector", align 8
  %15 = alloca %"struct.alglib_impl::ae_vector", align 8
  %16 = alloca %"struct.alglib_impl::ae_vector", align 8
  %17 = alloca %"struct.alglib_impl::ae_vector", align 8
  %18 = alloca %"struct.alglib_impl::ae_vector", align 8
  %19 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %20 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %21 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca %"struct.alglib_impl::sparsematrix", align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca %"struct.alglib_impl::hqrndstate", align 8
  %34 = alloca i64, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca i64, align 8
  %39 = alloca i8, align 1
  %40 = alloca i8, align 1
  %41 = alloca i8, align 1
  %42 = alloca i8, align 1
  %43 = alloca i8, align 1
  %44 = alloca i8, align 1
  %45 = alloca i8, align 1
  %46 = alloca i8, align 1
  %47 = zext i1 %0 to i8
  store i8 %47, ptr %3, align 1, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 368, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #5
  %48 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %48, ptr noundef %5)
  call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %15, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %16, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %17, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %18, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %19, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %21, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %24, i8 0, i64 368, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %33, i8 0, i64 24, i1 false)
  %49 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %14, i64 noundef 0, i64 noundef 3, ptr noundef %49, i1 noundef zeroext true)
  %50 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %15, i64 noundef 0, i64 noundef 3, ptr noundef %50, i1 noundef zeroext true)
  %51 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %16, i64 noundef 0, i64 noundef 3, ptr noundef %51, i1 noundef zeroext true)
  %52 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %17, i64 noundef 0, i64 noundef 3, ptr noundef %52, i1 noundef zeroext true)
  %53 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %18, i64 noundef 0, i64 noundef 3, ptr noundef %53, i1 noundef zeroext true)
  %54 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %19, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %54, i1 noundef zeroext true)
  %55 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %20, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %55, i1 noundef zeroext true)
  %56 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %21, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %56, i1 noundef zeroext true)
  %57 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl18_sparsematrix_initEPvPNS_8ae_stateEb(ptr noundef %24, ptr noundef %57, i1 noundef zeroext true)
  %58 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl16_hqrndstate_initEPvPNS_8ae_stateEb(ptr noundef %33, ptr noundef %58, i1 noundef zeroext true)
  %59 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %33, ptr noundef %59)
  store i64 10, ptr %7, align 8, !tbaa !11
  store i64 100, ptr %6, align 8, !tbaa !11
  store double 5.000000e-11, ptr %8, align 8, !tbaa !13
  store i8 0, ptr %45, align 1, !tbaa !5
  store i8 0, ptr %39, align 1, !tbaa !5
  store i8 0, ptr %40, align 1, !tbaa !5
  store i8 0, ptr %41, align 1, !tbaa !5
  store i8 0, ptr %42, align 1, !tbaa !5
  store i8 0, ptr %43, align 1, !tbaa !5
  store i8 0, ptr %44, align 1, !tbaa !5
  store i64 1, ptr %9, align 8, !tbaa !11
  br label %60

60:                                               ; preds = %458, %2
  %61 = load i64, ptr %9, align 8, !tbaa !11
  %62 = load i64, ptr %7, align 8, !tbaa !11
  %63 = icmp sle i64 %61, %62
  br i1 %63, label %64, label %461

64:                                               ; preds = %60
  store i64 1, ptr %10, align 8, !tbaa !11
  br label %65

65:                                               ; preds = %454, %64
  %66 = load i64, ptr %10, align 8, !tbaa !11
  %67 = load i64, ptr %6, align 8, !tbaa !11
  %68 = icmp sle i64 %66, %67
  br i1 %68, label %69, label %457

69:                                               ; preds = %65
  %70 = load i64, ptr %10, align 8, !tbaa !11
  %71 = sub nsw i64 %70, 1
  %72 = add nsw i64 %71, 1
  %73 = load i64, ptr %9, align 8, !tbaa !11
  %74 = sub nsw i64 %73, 1
  %75 = add nsw i64 %74, 1
  %76 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %21, i64 noundef %72, i64 noundef %75, ptr noundef %76)
  %77 = load i64, ptr %9, align 8, !tbaa !11
  %78 = sub nsw i64 %77, 1
  %79 = add nsw i64 %78, 1
  %80 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %14, i64 noundef %79, ptr noundef %80)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %81

81:                                               ; preds = %94, %69
  %82 = load i64, ptr %12, align 8, !tbaa !11
  %83 = load i64, ptr %9, align 8, !tbaa !11
  %84 = sub nsw i64 %83, 1
  %85 = icmp sle i64 %82, %84
  br i1 %85, label %86, label %97

86:                                               ; preds = %81
  %87 = load ptr, ptr %4, align 8, !tbaa !9
  %88 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %87)
  %89 = call double @llvm.fmuladd.f64(double 1.500000e+00, double %88, double -7.500000e-01)
  %90 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %91 = load ptr, ptr %90, align 8, !tbaa !15
  %92 = load i64, ptr %12, align 8, !tbaa !11
  %93 = getelementptr inbounds double, ptr %91, i64 %92
  store double %89, ptr %93, align 8, !tbaa !13
  br label %94

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

97:                                               ; preds = %81
  store i64 0, ptr %11, align 8, !tbaa !11
  br label %98

98:                                               ; preds = %130, %97
  %99 = load i64, ptr %11, align 8, !tbaa !11
  %100 = load i64, ptr %10, align 8, !tbaa !11
  %101 = sub nsw i64 %100, 1
  %102 = icmp sle i64 %99, %101
  br i1 %102, label %103, label %133

103:                                              ; preds = %98
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %104

104:                                              ; preds = %126, %103
  %105 = load i64, ptr %12, align 8, !tbaa !11
  %106 = load i64, ptr %9, align 8, !tbaa !11
  %107 = sub nsw i64 %106, 1
  %108 = icmp sle i64 %105, %107
  br i1 %108, label %109, label %129

109:                                              ; preds = %104
  %110 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %111 = load ptr, ptr %110, align 8, !tbaa !15
  %112 = load i64, ptr %12, align 8, !tbaa !11
  %113 = getelementptr inbounds double, ptr %111, i64 %112
  %114 = load double, ptr %113, align 8, !tbaa !13
  %115 = load ptr, ptr %4, align 8, !tbaa !9
  %116 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %115)
  %117 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %116, double -1.000000e+00)
  %118 = fadd double %114, %117
  %119 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %21, i32 0, i32 6
  %120 = load ptr, ptr %119, align 8, !tbaa !15
  %121 = load i64, ptr %11, align 8, !tbaa !11
  %122 = getelementptr inbounds ptr, ptr %120, i64 %121
  %123 = load ptr, ptr %122, align 8, !tbaa !9
  %124 = load i64, ptr %12, align 8, !tbaa !11
  %125 = getelementptr inbounds double, ptr %123, i64 %124
  store double %118, ptr %125, align 8, !tbaa !13
  br label %126

126:                                              ; preds = %109
  %127 = load i64, ptr %12, align 8, !tbaa !11
  %128 = add nsw i64 %127, 1
  store i64 %128, ptr %12, align 8, !tbaa !11
  br label %104, !llvm.loop !18

129:                                              ; preds = %104
  br label %130

130:                                              ; preds = %129
  %131 = load i64, ptr %11, align 8, !tbaa !11
  %132 = add nsw i64 %131, 1
  store i64 %132, ptr %11, align 8, !tbaa !11
  br label %98, !llvm.loop !19

133:                                              ; preds = %98
  %134 = load i64, ptr %10, align 8, !tbaa !11
  %135 = load i64, ptr %9, align 8, !tbaa !11
  %136 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13pcabuildbasisEPKNS_9ae_matrixEllPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef %21, i64 noundef %134, i64 noundef %135, ptr noundef %15, ptr noundef %19, ptr noundef %136)
  store i64 0, ptr %11, align 8, !tbaa !11
  br label %137

137:                                              ; preds = %191, %133
  %138 = load i64, ptr %11, align 8, !tbaa !11
  %139 = load i64, ptr %9, align 8, !tbaa !11
  %140 = sub nsw i64 %139, 1
  %141 = icmp sle i64 %138, %140
  br i1 %141, label %142, label %194

142:                                              ; preds = %137
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %143

143:                                              ; preds = %187, %142
  %144 = load i64, ptr %12, align 8, !tbaa !11
  %145 = load i64, ptr %9, align 8, !tbaa !11
  %146 = sub nsw i64 %145, 1
  %147 = icmp sle i64 %144, %146
  br i1 %147, label %148, label %190

148:                                              ; preds = %143
  %149 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %150 = load ptr, ptr %149, align 8, !tbaa !15
  %151 = getelementptr inbounds ptr, ptr %150, i64 0
  %152 = load ptr, ptr %151, align 8, !tbaa !9
  %153 = load i64, ptr %11, align 8, !tbaa !11
  %154 = getelementptr inbounds double, ptr %152, i64 %153
  %155 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 2
  %156 = load i64, ptr %155, align 8, !tbaa !20
  %157 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %158 = load ptr, ptr %157, align 8, !tbaa !15
  %159 = getelementptr inbounds ptr, ptr %158, i64 0
  %160 = load ptr, ptr %159, align 8, !tbaa !9
  %161 = load i64, ptr %12, align 8, !tbaa !11
  %162 = getelementptr inbounds double, ptr %160, i64 %161
  %163 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 2
  %164 = load i64, ptr %163, align 8, !tbaa !20
  %165 = load i64, ptr %9, align 8, !tbaa !11
  %166 = sub nsw i64 %165, 1
  %167 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %166)
  %168 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %154, i64 noundef %156, ptr noundef %162, i64 noundef %164, i64 noundef %167)
  store double %168, ptr %22, align 8, !tbaa !13
  %169 = load i64, ptr %11, align 8, !tbaa !11
  %170 = load i64, ptr %12, align 8, !tbaa !11
  %171 = icmp eq i64 %169, %170
  br i1 %171, label %172, label %175

172:                                              ; preds = %148
  %173 = load double, ptr %22, align 8, !tbaa !13
  %174 = fsub double %173, 1.000000e+00
  store double %174, ptr %22, align 8, !tbaa !13
  br label %175

175:                                              ; preds = %172, %148
  %176 = load i8, ptr %40, align 1, !tbaa !5, !range !23, !noundef !24
  %177 = trunc i8 %176 to i1
  br i1 %177, label %184, label %178

178:                                              ; preds = %175
  %179 = load double, ptr %22, align 8, !tbaa !13
  %180 = load ptr, ptr %4, align 8, !tbaa !9
  %181 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %179, ptr noundef %180)
  %182 = load double, ptr %8, align 8, !tbaa !13
  %183 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %181, double noundef %182)
  br label %184

184:                                              ; preds = %178, %175
  %185 = phi i1 [ true, %175 ], [ %183, %178 ]
  %186 = zext i1 %185 to i8
  store i8 %186, ptr %40, align 1, !tbaa !5
  br label %187

187:                                              ; preds = %184
  %188 = load i64, ptr %12, align 8, !tbaa !11
  %189 = add nsw i64 %188, 1
  store i64 %189, ptr %12, align 8, !tbaa !11
  br label %143, !llvm.loop !25

190:                                              ; preds = %143
  br label %191

191:                                              ; preds = %190
  %192 = load i64, ptr %11, align 8, !tbaa !11
  %193 = add nsw i64 %192, 1
  store i64 %193, ptr %11, align 8, !tbaa !11
  br label %137, !llvm.loop !26

194:                                              ; preds = %137
  %195 = load i64, ptr %10, align 8, !tbaa !11
  %196 = sub nsw i64 %195, 1
  %197 = add nsw i64 %196, 1
  %198 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %17, i64 noundef %197, ptr noundef %198)
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %199

199:                                              ; preds = %272, %194
  %200 = load i64, ptr %13, align 8, !tbaa !11
  %201 = load i64, ptr %9, align 8, !tbaa !11
  %202 = sub nsw i64 %201, 1
  %203 = icmp sle i64 %200, %202
  br i1 %203, label %204, label %275

204:                                              ; preds = %199
  store i64 0, ptr %11, align 8, !tbaa !11
  br label %205

205:                                              ; preds = %234, %204
  %206 = load i64, ptr %11, align 8, !tbaa !11
  %207 = load i64, ptr %10, align 8, !tbaa !11
  %208 = sub nsw i64 %207, 1
  %209 = icmp sle i64 %206, %208
  br i1 %209, label %210, label %237

210:                                              ; preds = %205
  %211 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %21, i32 0, i32 6
  %212 = load ptr, ptr %211, align 8, !tbaa !15
  %213 = load i64, ptr %11, align 8, !tbaa !11
  %214 = getelementptr inbounds ptr, ptr %212, i64 %213
  %215 = load ptr, ptr %214, align 8, !tbaa !9
  %216 = getelementptr inbounds double, ptr %215, i64 0
  %217 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %218 = load ptr, ptr %217, align 8, !tbaa !15
  %219 = getelementptr inbounds ptr, ptr %218, i64 0
  %220 = load ptr, ptr %219, align 8, !tbaa !9
  %221 = load i64, ptr %13, align 8, !tbaa !11
  %222 = getelementptr inbounds double, ptr %220, i64 %221
  %223 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 2
  %224 = load i64, ptr %223, align 8, !tbaa !20
  %225 = load i64, ptr %9, align 8, !tbaa !11
  %226 = sub nsw i64 %225, 1
  %227 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %226)
  %228 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %216, i64 noundef 1, ptr noundef %222, i64 noundef %224, i64 noundef %227)
  store double %228, ptr %22, align 8, !tbaa !13
  %229 = load double, ptr %22, align 8, !tbaa !13
  %230 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %231 = load ptr, ptr %230, align 8, !tbaa !15
  %232 = load i64, ptr %11, align 8, !tbaa !11
  %233 = getelementptr inbounds double, ptr %231, i64 %232
  store double %229, ptr %233, align 8, !tbaa !13
  br label %234

234:                                              ; preds = %210
  %235 = load i64, ptr %11, align 8, !tbaa !11
  %236 = add nsw i64 %235, 1
  store i64 %236, ptr %11, align 8, !tbaa !11
  br label %205, !llvm.loop !27

237:                                              ; preds = %205
  %238 = load i64, ptr %10, align 8, !tbaa !11
  %239 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testpcaunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef %17, i64 noundef %238, ptr noundef %25, ptr noundef %26, ptr noundef %27, ptr noundef %28, ptr noundef %239)
  %240 = load i64, ptr %10, align 8, !tbaa !11
  %241 = icmp ne i64 %240, 1
  br i1 %241, label %242, label %253

242:                                              ; preds = %237
  %243 = load double, ptr %27, align 8, !tbaa !13
  %244 = load ptr, ptr %4, align 8, !tbaa !9
  %245 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %243, ptr noundef %244)
  %246 = load i64, ptr %10, align 8, !tbaa !11
  %247 = sitofp i64 %246 to double
  %248 = fmul double %245, %247
  %249 = load i64, ptr %10, align 8, !tbaa !11
  %250 = sub nsw i64 %249, 1
  %251 = sitofp i64 %250 to double
  %252 = fdiv double %248, %251
  store double %252, ptr %22, align 8, !tbaa !13
  br label %254

253:                                              ; preds = %237
  store double 0.000000e+00, ptr %22, align 8, !tbaa !13
  br label %254

254:                                              ; preds = %253, %242
  %255 = load i8, ptr %41, align 1, !tbaa !5, !range !23, !noundef !24
  %256 = trunc i8 %255 to i1
  br i1 %256, label %269, label %257

257:                                              ; preds = %254
  %258 = load double, ptr %22, align 8, !tbaa !13
  %259 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %260 = load ptr, ptr %259, align 8, !tbaa !15
  %261 = load i64, ptr %13, align 8, !tbaa !11
  %262 = getelementptr inbounds double, ptr %260, i64 %261
  %263 = load double, ptr %262, align 8, !tbaa !13
  %264 = fsub double %258, %263
  %265 = load ptr, ptr %4, align 8, !tbaa !9
  %266 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %264, ptr noundef %265)
  %267 = load double, ptr %8, align 8, !tbaa !13
  %268 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %266, double noundef %267)
  br label %269

269:                                              ; preds = %257, %254
  %270 = phi i1 [ true, %254 ], [ %268, %257 ]
  %271 = zext i1 %270 to i8
  store i8 %271, ptr %41, align 1, !tbaa !5
  br label %272

272:                                              ; preds = %269
  %273 = load i64, ptr %13, align 8, !tbaa !11
  %274 = add nsw i64 %273, 1
  store i64 %274, ptr %13, align 8, !tbaa !11
  br label %199, !llvm.loop !28

275:                                              ; preds = %199
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %276

276:                                              ; preds = %300, %275
  %277 = load i64, ptr %13, align 8, !tbaa !11
  %278 = load i64, ptr %9, align 8, !tbaa !11
  %279 = sub nsw i64 %278, 2
  %280 = icmp sle i64 %277, %279
  br i1 %280, label %281, label %303

281:                                              ; preds = %276
  %282 = load i8, ptr %41, align 1, !tbaa !5, !range !23, !noundef !24
  %283 = trunc i8 %282 to i1
  br i1 %283, label %297, label %284

284:                                              ; preds = %281
  %285 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %286 = load ptr, ptr %285, align 8, !tbaa !15
  %287 = load i64, ptr %13, align 8, !tbaa !11
  %288 = getelementptr inbounds double, ptr %286, i64 %287
  %289 = load double, ptr %288, align 8, !tbaa !13
  %290 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %291 = load ptr, ptr %290, align 8, !tbaa !15
  %292 = load i64, ptr %13, align 8, !tbaa !11
  %293 = add nsw i64 %292, 1
  %294 = getelementptr inbounds double, ptr %291, i64 %293
  %295 = load double, ptr %294, align 8, !tbaa !13
  %296 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %289, double noundef %295)
  br label %297

297:                                              ; preds = %284, %281
  %298 = phi i1 [ true, %281 ], [ %296, %284 ]
  %299 = zext i1 %298 to i8
  store i8 %299, ptr %41, align 1, !tbaa !5
  br label %300

300:                                              ; preds = %297
  %301 = load i64, ptr %13, align 8, !tbaa !11
  %302 = add nsw i64 %301, 1
  store i64 %302, ptr %13, align 8, !tbaa !11
  br label %276, !llvm.loop !29

303:                                              ; preds = %276
  %304 = load i64, ptr %10, align 8, !tbaa !11
  %305 = sub nsw i64 %304, 1
  %306 = add nsw i64 %305, 1
  %307 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %17, i64 noundef %306, ptr noundef %307)
  %308 = load i64, ptr %10, align 8, !tbaa !11
  %309 = sub nsw i64 %308, 1
  %310 = add nsw i64 %309, 1
  %311 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef %310, ptr noundef %311)
  store i64 0, ptr %11, align 8, !tbaa !11
  br label %312

312:                                              ; preds = %340, %303
  %313 = load i64, ptr %11, align 8, !tbaa !11
  %314 = load i64, ptr %10, align 8, !tbaa !11
  %315 = sub nsw i64 %314, 1
  %316 = icmp sle i64 %313, %315
  br i1 %316, label %317, label %343

317:                                              ; preds = %312
  %318 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %21, i32 0, i32 6
  %319 = load ptr, ptr %318, align 8, !tbaa !15
  %320 = load i64, ptr %11, align 8, !tbaa !11
  %321 = getelementptr inbounds ptr, ptr %319, i64 %320
  %322 = load ptr, ptr %321, align 8, !tbaa !9
  %323 = getelementptr inbounds double, ptr %322, i64 0
  %324 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %325 = load ptr, ptr %324, align 8, !tbaa !15
  %326 = getelementptr inbounds ptr, ptr %325, i64 0
  %327 = load ptr, ptr %326, align 8, !tbaa !9
  %328 = getelementptr inbounds double, ptr %327, i64 0
  %329 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 2
  %330 = load i64, ptr %329, align 8, !tbaa !20
  %331 = load i64, ptr %9, align 8, !tbaa !11
  %332 = sub nsw i64 %331, 1
  %333 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %332)
  %334 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %323, i64 noundef 1, ptr noundef %328, i64 noundef %330, i64 noundef %333)
  store double %334, ptr %22, align 8, !tbaa !13
  %335 = load double, ptr %22, align 8, !tbaa !13
  %336 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %337 = load ptr, ptr %336, align 8, !tbaa !15
  %338 = load i64, ptr %11, align 8, !tbaa !11
  %339 = getelementptr inbounds double, ptr %337, i64 %338
  store double %335, ptr %339, align 8, !tbaa !13
  br label %340

340:                                              ; preds = %317
  %341 = load i64, ptr %11, align 8, !tbaa !11
  %342 = add nsw i64 %341, 1
  store i64 %342, ptr %11, align 8, !tbaa !11
  br label %312, !llvm.loop !30

343:                                              ; preds = %312
  %344 = load i64, ptr %10, align 8, !tbaa !11
  %345 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testpcaunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef %17, i64 noundef %344, ptr noundef %25, ptr noundef %26, ptr noundef %27, ptr noundef %28, ptr noundef %345)
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %346

346:                                              ; preds = %450, %343
  %347 = load i64, ptr %13, align 8, !tbaa !11
  %348 = load i64, ptr %9, align 8, !tbaa !11
  %349 = mul nsw i64 2, %348
  %350 = sub nsw i64 %349, 1
  %351 = icmp sle i64 %347, %350
  br i1 %351, label %352, label %453

352:                                              ; preds = %346
  store double 1.000000e-03, ptr %23, align 8, !tbaa !13
  %353 = load i64, ptr %13, align 8, !tbaa !11
  %354 = srem i64 %353, 2
  %355 = icmp ne i64 %354, 0
  br i1 %355, label %356, label %359

356:                                              ; preds = %352
  %357 = load double, ptr %23, align 8, !tbaa !13
  %358 = fneg double %357
  store double %358, ptr %23, align 8, !tbaa !13
  br label %359

359:                                              ; preds = %356, %352
  %360 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %361 = load ptr, ptr %360, align 8, !tbaa !15
  %362 = getelementptr inbounds double, ptr %361, i64 0
  %363 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %364 = load ptr, ptr %363, align 8, !tbaa !15
  %365 = getelementptr inbounds double, ptr %364, i64 0
  %366 = load i64, ptr %10, align 8, !tbaa !11
  %367 = sub nsw i64 %366, 1
  %368 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %367)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %362, i64 noundef 1, ptr noundef %365, i64 noundef 1, i64 noundef %368)
  %369 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %370 = load ptr, ptr %369, align 8, !tbaa !15
  %371 = getelementptr inbounds double, ptr %370, i64 0
  %372 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %21, i32 0, i32 6
  %373 = load ptr, ptr %372, align 8, !tbaa !15
  %374 = getelementptr inbounds ptr, ptr %373, i64 0
  %375 = load ptr, ptr %374, align 8, !tbaa !9
  %376 = load i64, ptr %13, align 8, !tbaa !11
  %377 = sdiv i64 %376, 2
  %378 = getelementptr inbounds double, ptr %375, i64 %377
  %379 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %21, i32 0, i32 2
  %380 = load i64, ptr %379, align 8, !tbaa !20
  %381 = load i64, ptr %10, align 8, !tbaa !11
  %382 = sub nsw i64 %381, 1
  %383 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %382)
  %384 = load double, ptr %23, align 8, !tbaa !13
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %371, i64 noundef 1, ptr noundef %378, i64 noundef %380, i64 noundef %383, double noundef %384)
  store double 0.000000e+00, ptr %22, align 8, !tbaa !13
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %385

385:                                              ; preds = %422, %359
  %386 = load i64, ptr %12, align 8, !tbaa !11
  %387 = load i64, ptr %9, align 8, !tbaa !11
  %388 = sub nsw i64 %387, 1
  %389 = icmp sle i64 %386, %388
  br i1 %389, label %390, label %425

390:                                              ; preds = %385
  %391 = load i64, ptr %12, align 8, !tbaa !11
  %392 = load i64, ptr %13, align 8, !tbaa !11
  %393 = sdiv i64 %392, 2
  %394 = icmp ne i64 %391, %393
  br i1 %394, label %395, label %407

395:                                              ; preds = %390
  %396 = load double, ptr %22, align 8, !tbaa !13
  %397 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %398 = load ptr, ptr %397, align 8, !tbaa !15
  %399 = load i64, ptr %12, align 8, !tbaa !11
  %400 = getelementptr inbounds ptr, ptr %398, i64 %399
  %401 = load ptr, ptr %400, align 8, !tbaa !9
  %402 = getelementptr inbounds double, ptr %401, i64 0
  %403 = load double, ptr %402, align 8, !tbaa !13
  %404 = load ptr, ptr %4, align 8, !tbaa !9
  %405 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %403, ptr noundef %404)
  %406 = fadd double %396, %405
  store double %406, ptr %22, align 8, !tbaa !13
  br label %421

407:                                              ; preds = %390
  %408 = load double, ptr %22, align 8, !tbaa !13
  %409 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %410 = load ptr, ptr %409, align 8, !tbaa !15
  %411 = load i64, ptr %12, align 8, !tbaa !11
  %412 = getelementptr inbounds ptr, ptr %410, i64 %411
  %413 = load ptr, ptr %412, align 8, !tbaa !9
  %414 = getelementptr inbounds double, ptr %413, i64 0
  %415 = load double, ptr %414, align 8, !tbaa !13
  %416 = load double, ptr %23, align 8, !tbaa !13
  %417 = fadd double %415, %416
  %418 = load ptr, ptr %4, align 8, !tbaa !9
  %419 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %417, ptr noundef %418)
  %420 = fadd double %408, %419
  store double %420, ptr %22, align 8, !tbaa !13
  br label %421

421:                                              ; preds = %407, %395
  br label %422

422:                                              ; preds = %421
  %423 = load i64, ptr %12, align 8, !tbaa !11
  %424 = add nsw i64 %423, 1
  store i64 %424, ptr %12, align 8, !tbaa !11
  br label %385, !llvm.loop !31

425:                                              ; preds = %385
  %426 = load double, ptr %22, align 8, !tbaa !13
  %427 = load ptr, ptr %4, align 8, !tbaa !9
  %428 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %426, ptr noundef %427)
  %429 = fdiv double 1.000000e+00, %428
  store double %429, ptr %22, align 8, !tbaa !13
  %430 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %431 = load ptr, ptr %430, align 8, !tbaa !15
  %432 = getelementptr inbounds double, ptr %431, i64 0
  %433 = load i64, ptr %10, align 8, !tbaa !11
  %434 = sub nsw i64 %433, 1
  %435 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %434)
  %436 = load double, ptr %22, align 8, !tbaa !13
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %432, i64 noundef 1, i64 noundef %435, double noundef %436)
  %437 = load i64, ptr %10, align 8, !tbaa !11
  %438 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testpcaunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef %18, i64 noundef %437, ptr noundef %29, ptr noundef %30, ptr noundef %31, ptr noundef %32, ptr noundef %438)
  %439 = load i8, ptr %42, align 1, !tbaa !5, !range !23, !noundef !24
  %440 = trunc i8 %439 to i1
  br i1 %440, label %447, label %441

441:                                              ; preds = %425
  %442 = load double, ptr %31, align 8, !tbaa !13
  %443 = load double, ptr %27, align 8, !tbaa !13
  %444 = load double, ptr %8, align 8, !tbaa !13
  %445 = fadd double %443, %444
  %446 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %442, double noundef %445)
  br label %447

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

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

453:                                              ; preds = %346
  br label %454

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

457:                                              ; preds = %65
  br label %458

458:                                              ; preds = %457
  %459 = load i64, ptr %9, align 8, !tbaa !11
  %460 = add nsw i64 %459, 1
  store i64 %460, ptr %9, align 8, !tbaa !11
  br label %60, !llvm.loop !34

461:                                              ; preds = %60
  store i64 1, ptr %9, align 8, !tbaa !11
  br label %462

462:                                              ; preds = %527, %461
  %463 = load i64, ptr %9, align 8, !tbaa !11
  %464 = load i64, ptr %7, align 8, !tbaa !11
  %465 = icmp sle i64 %463, %464
  br i1 %465, label %466, label %530

466:                                              ; preds = %462
  %467 = load i64, ptr %9, align 8, !tbaa !11
  %468 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13pcabuildbasisEPKNS_9ae_matrixEllPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef %21, i64 noundef 0, i64 noundef %467, ptr noundef %15, ptr noundef %19, ptr noundef %468)
  store i64 0, ptr %11, align 8, !tbaa !11
  br label %469

469:                                              ; preds = %523, %466
  %470 = load i64, ptr %11, align 8, !tbaa !11
  %471 = load i64, ptr %9, align 8, !tbaa !11
  %472 = sub nsw i64 %471, 1
  %473 = icmp sle i64 %470, %472
  br i1 %473, label %474, label %526

474:                                              ; preds = %469
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %475

475:                                              ; preds = %519, %474
  %476 = load i64, ptr %12, align 8, !tbaa !11
  %477 = load i64, ptr %9, align 8, !tbaa !11
  %478 = sub nsw i64 %477, 1
  %479 = icmp sle i64 %476, %478
  br i1 %479, label %480, label %522

480:                                              ; preds = %475
  %481 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %482 = load ptr, ptr %481, align 8, !tbaa !15
  %483 = getelementptr inbounds ptr, ptr %482, i64 0
  %484 = load ptr, ptr %483, align 8, !tbaa !9
  %485 = load i64, ptr %11, align 8, !tbaa !11
  %486 = getelementptr inbounds double, ptr %484, i64 %485
  %487 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 2
  %488 = load i64, ptr %487, align 8, !tbaa !20
  %489 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %490 = load ptr, ptr %489, align 8, !tbaa !15
  %491 = getelementptr inbounds ptr, ptr %490, i64 0
  %492 = load ptr, ptr %491, align 8, !tbaa !9
  %493 = load i64, ptr %12, align 8, !tbaa !11
  %494 = getelementptr inbounds double, ptr %492, i64 %493
  %495 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 2
  %496 = load i64, ptr %495, align 8, !tbaa !20
  %497 = load i64, ptr %9, align 8, !tbaa !11
  %498 = sub nsw i64 %497, 1
  %499 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %498)
  %500 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %486, i64 noundef %488, ptr noundef %494, i64 noundef %496, i64 noundef %499)
  store double %500, ptr %22, align 8, !tbaa !13
  %501 = load i64, ptr %11, align 8, !tbaa !11
  %502 = load i64, ptr %12, align 8, !tbaa !11
  %503 = icmp eq i64 %501, %502
  br i1 %503, label %504, label %507

504:                                              ; preds = %480
  %505 = load double, ptr %22, align 8, !tbaa !13
  %506 = fsub double %505, 1.000000e+00
  store double %506, ptr %22, align 8, !tbaa !13
  br label %507

507:                                              ; preds = %504, %480
  %508 = load i8, ptr %40, align 1, !tbaa !5, !range !23, !noundef !24
  %509 = trunc i8 %508 to i1
  br i1 %509, label %516, label %510

510:                                              ; preds = %507
  %511 = load double, ptr %22, align 8, !tbaa !13
  %512 = load ptr, ptr %4, align 8, !tbaa !9
  %513 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %511, ptr noundef %512)
  %514 = load double, ptr %8, align 8, !tbaa !13
  %515 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %513, double noundef %514)
  br label %516

516:                                              ; preds = %510, %507
  %517 = phi i1 [ true, %507 ], [ %515, %510 ]
  %518 = zext i1 %517 to i8
  store i8 %518, ptr %40, align 1, !tbaa !5
  br label %519

519:                                              ; preds = %516
  %520 = load i64, ptr %12, align 8, !tbaa !11
  %521 = add nsw i64 %520, 1
  store i64 %521, ptr %12, align 8, !tbaa !11
  br label %475, !llvm.loop !35

522:                                              ; preds = %475
  br label %523

523:                                              ; preds = %522
  %524 = load i64, ptr %11, align 8, !tbaa !11
  %525 = add nsw i64 %524, 1
  store i64 %525, ptr %11, align 8, !tbaa !11
  br label %469, !llvm.loop !36

526:                                              ; preds = %469
  br label %527

527:                                              ; preds = %526
  %528 = load i64, ptr %9, align 8, !tbaa !11
  %529 = add nsw i64 %528, 1
  store i64 %529, ptr %9, align 8, !tbaa !11
  br label %462, !llvm.loop !37

530:                                              ; preds = %462
  store double 1.000000e-03, ptr %35, align 8, !tbaa !13
  store i64 1, ptr %9, align 8, !tbaa !11
  br label %531

531:                                              ; preds = %836, %530
  %532 = load i64, ptr %9, align 8, !tbaa !11
  %533 = load i64, ptr %7, align 8, !tbaa !11
  %534 = icmp sle i64 %532, %533
  br i1 %534, label %535, label %839

535:                                              ; preds = %531
  store i64 1, ptr %10, align 8, !tbaa !11
  br label %536

536:                                              ; preds = %832, %535
  %537 = load i64, ptr %10, align 8, !tbaa !11
  %538 = load i64, ptr %6, align 8, !tbaa !11
  %539 = icmp sle i64 %537, %538
  br i1 %539, label %540, label %835

540:                                              ; preds = %536
  %541 = load i64, ptr %9, align 8, !tbaa !11
  %542 = load ptr, ptr %4, align 8, !tbaa !9
  %543 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %33, i64 noundef %541, ptr noundef %542)
  %544 = add nsw i64 1, %543
  store i64 %544, ptr %34, align 8, !tbaa !11
  %545 = load i64, ptr %9, align 8, !tbaa !11
  %546 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %14, i64 noundef %545, ptr noundef %546)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %547

547:                                              ; preds = %560, %540
  %548 = load i64, ptr %12, align 8, !tbaa !11
  %549 = load i64, ptr %9, align 8, !tbaa !11
  %550 = sub nsw i64 %549, 1
  %551 = icmp sle i64 %548, %550
  br i1 %551, label %552, label %563

552:                                              ; preds = %547
  %553 = load ptr, ptr %4, align 8, !tbaa !9
  %554 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %33, ptr noundef %553)
  %555 = fmul double 1.000000e+02, %554
  %556 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %557 = load ptr, ptr %556, align 8, !tbaa !15
  %558 = load i64, ptr %12, align 8, !tbaa !11
  %559 = getelementptr inbounds double, ptr %557, i64 %558
  store double %555, ptr %559, align 8, !tbaa !13
  br label %560

560:                                              ; preds = %552
  %561 = load i64, ptr %12, align 8, !tbaa !11
  %562 = add nsw i64 %561, 1
  store i64 %562, ptr %12, align 8, !tbaa !11
  br label %547, !llvm.loop !38

563:                                              ; preds = %547
  %564 = load i64, ptr %10, align 8, !tbaa !11
  %565 = load i64, ptr %9, align 8, !tbaa !11
  %566 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %21, i64 noundef %564, i64 noundef %565, ptr noundef %566)
  store i64 0, ptr %11, align 8, !tbaa !11
  br label %567

567:                                              ; preds = %598, %563
  %568 = load i64, ptr %11, align 8, !tbaa !11
  %569 = load i64, ptr %10, align 8, !tbaa !11
  %570 = sub nsw i64 %569, 1
  %571 = icmp sle i64 %568, %570
  br i1 %571, label %572, label %601

572:                                              ; preds = %567
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %573

573:                                              ; preds = %594, %572
  %574 = load i64, ptr %12, align 8, !tbaa !11
  %575 = load i64, ptr %9, align 8, !tbaa !11
  %576 = sub nsw i64 %575, 1
  %577 = icmp sle i64 %574, %576
  br i1 %577, label %578, label %597

578:                                              ; preds = %573
  %579 = load ptr, ptr %4, align 8, !tbaa !9
  %580 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %33, ptr noundef %579)
  %581 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %582 = load ptr, ptr %581, align 8, !tbaa !15
  %583 = load i64, ptr %12, align 8, !tbaa !11
  %584 = getelementptr inbounds double, ptr %582, i64 %583
  %585 = load double, ptr %584, align 8, !tbaa !13
  %586 = fadd double %580, %585
  %587 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %21, i32 0, i32 6
  %588 = load ptr, ptr %587, align 8, !tbaa !15
  %589 = load i64, ptr %11, align 8, !tbaa !11
  %590 = getelementptr inbounds ptr, ptr %588, i64 %589
  %591 = load ptr, ptr %590, align 8, !tbaa !9
  %592 = load i64, ptr %12, align 8, !tbaa !11
  %593 = getelementptr inbounds double, ptr %591, i64 %592
  store double %586, ptr %593, align 8, !tbaa !13
  br label %594

594:                                              ; preds = %578
  %595 = load i64, ptr %12, align 8, !tbaa !11
  %596 = add nsw i64 %595, 1
  store i64 %596, ptr %12, align 8, !tbaa !11
  br label %573, !llvm.loop !39

597:                                              ; preds = %573
  br label %598

598:                                              ; preds = %597
  %599 = load i64, ptr %11, align 8, !tbaa !11
  %600 = add nsw i64 %599, 1
  store i64 %600, ptr %11, align 8, !tbaa !11
  br label %567, !llvm.loop !40

601:                                              ; preds = %567
  %602 = load i64, ptr %10, align 8, !tbaa !11
  %603 = load i64, ptr %9, align 8, !tbaa !11
  %604 = load i64, ptr %34, align 8, !tbaa !11
  %605 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20pcatruncatedsubspaceEPKNS_9ae_matrixEllldlPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef %21, i64 noundef %602, i64 noundef %603, i64 noundef %604, double noundef 1.000000e-09, i64 noundef 0, ptr noundef %15, ptr noundef %19, ptr noundef %605)
  store i64 0, ptr %11, align 8, !tbaa !11
  br label %606

606:                                              ; preds = %654, %601
  %607 = load i64, ptr %11, align 8, !tbaa !11
  %608 = load i64, ptr %34, align 8, !tbaa !11
  %609 = sub nsw i64 %608, 1
  %610 = icmp sle i64 %607, %609
  br i1 %610, label %611, label %657

611:                                              ; preds = %606
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %612

612:                                              ; preds = %650, %611
  %613 = load i64, ptr %12, align 8, !tbaa !11
  %614 = load i64, ptr %34, align 8, !tbaa !11
  %615 = sub nsw i64 %614, 1
  %616 = icmp sle i64 %613, %615
  br i1 %616, label %617, label %653

617:                                              ; preds = %612
  %618 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %619 = load ptr, ptr %618, align 8, !tbaa !15
  %620 = getelementptr inbounds ptr, ptr %619, i64 0
  %621 = load ptr, ptr %620, align 8, !tbaa !9
  %622 = load i64, ptr %11, align 8, !tbaa !11
  %623 = getelementptr inbounds double, ptr %621, i64 %622
  %624 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 2
  %625 = load i64, ptr %624, align 8, !tbaa !20
  %626 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %627 = load ptr, ptr %626, align 8, !tbaa !15
  %628 = getelementptr inbounds ptr, ptr %627, i64 0
  %629 = load ptr, ptr %628, align 8, !tbaa !9
  %630 = load i64, ptr %12, align 8, !tbaa !11
  %631 = getelementptr inbounds double, ptr %629, i64 %630
  %632 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 2
  %633 = load i64, ptr %632, align 8, !tbaa !20
  %634 = load i64, ptr %9, align 8, !tbaa !11
  %635 = sub nsw i64 %634, 1
  %636 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %635)
  %637 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %623, i64 noundef %625, ptr noundef %631, i64 noundef %633, i64 noundef %636)
  store double %637, ptr %22, align 8, !tbaa !13
  %638 = load i64, ptr %11, align 8, !tbaa !11
  %639 = load i64, ptr %12, align 8, !tbaa !11
  %640 = icmp eq i64 %638, %639
  br i1 %640, label %641, label %644

641:                                              ; preds = %617
  %642 = load double, ptr %22, align 8, !tbaa !13
  %643 = fsub double %642, 1.000000e+00
  store double %643, ptr %22, align 8, !tbaa !13
  br label %644

644:                                              ; preds = %641, %617
  %645 = load double, ptr %22, align 8, !tbaa !13
  %646 = load ptr, ptr %4, align 8, !tbaa !9
  %647 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %645, ptr noundef %646)
  %648 = load double, ptr %8, align 8, !tbaa !13
  %649 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %647, double noundef %648)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %43, i1 noundef zeroext %649, ptr noundef @.str.19, i32 noundef 127075, ptr noundef @.str.991)
  br label %650

650:                                              ; preds = %644
  %651 = load i64, ptr %12, align 8, !tbaa !11
  %652 = add nsw i64 %651, 1
  store i64 %652, ptr %12, align 8, !tbaa !11
  br label %612, !llvm.loop !41

653:                                              ; preds = %612
  br label %654

654:                                              ; preds = %653
  %655 = load i64, ptr %11, align 8, !tbaa !11
  %656 = add nsw i64 %655, 1
  store i64 %656, ptr %11, align 8, !tbaa !11
  br label %606, !llvm.loop !42

657:                                              ; preds = %606
  %658 = load i64, ptr %10, align 8, !tbaa !11
  %659 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %17, i64 noundef %658, ptr noundef %659)
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %660

660:                                              ; preds = %727, %657
  %661 = load i64, ptr %13, align 8, !tbaa !11
  %662 = load i64, ptr %34, align 8, !tbaa !11
  %663 = sub nsw i64 %662, 1
  %664 = icmp sle i64 %661, %663
  br i1 %664, label %665, label %730

665:                                              ; preds = %660
  store i64 0, ptr %11, align 8, !tbaa !11
  br label %666

666:                                              ; preds = %695, %665
  %667 = load i64, ptr %11, align 8, !tbaa !11
  %668 = load i64, ptr %10, align 8, !tbaa !11
  %669 = sub nsw i64 %668, 1
  %670 = icmp sle i64 %667, %669
  br i1 %670, label %671, label %698

671:                                              ; preds = %666
  %672 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %21, i32 0, i32 6
  %673 = load ptr, ptr %672, align 8, !tbaa !15
  %674 = load i64, ptr %11, align 8, !tbaa !11
  %675 = getelementptr inbounds ptr, ptr %673, i64 %674
  %676 = load ptr, ptr %675, align 8, !tbaa !9
  %677 = getelementptr inbounds double, ptr %676, i64 0
  %678 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %679 = load ptr, ptr %678, align 8, !tbaa !15
  %680 = getelementptr inbounds ptr, ptr %679, i64 0
  %681 = load ptr, ptr %680, align 8, !tbaa !9
  %682 = load i64, ptr %13, align 8, !tbaa !11
  %683 = getelementptr inbounds double, ptr %681, i64 %682
  %684 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 2
  %685 = load i64, ptr %684, align 8, !tbaa !20
  %686 = load i64, ptr %9, align 8, !tbaa !11
  %687 = sub nsw i64 %686, 1
  %688 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %687)
  %689 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %677, i64 noundef 1, ptr noundef %683, i64 noundef %685, i64 noundef %688)
  store double %689, ptr %22, align 8, !tbaa !13
  %690 = load double, ptr %22, align 8, !tbaa !13
  %691 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %692 = load ptr, ptr %691, align 8, !tbaa !15
  %693 = load i64, ptr %11, align 8, !tbaa !11
  %694 = getelementptr inbounds double, ptr %692, i64 %693
  store double %690, ptr %694, align 8, !tbaa !13
  br label %695

695:                                              ; preds = %671
  %696 = load i64, ptr %11, align 8, !tbaa !11
  %697 = add nsw i64 %696, 1
  store i64 %697, ptr %11, align 8, !tbaa !11
  br label %666, !llvm.loop !43

698:                                              ; preds = %666
  %699 = load i64, ptr %10, align 8, !tbaa !11
  %700 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testpcaunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef %17, i64 noundef %699, ptr noundef %25, ptr noundef %26, ptr noundef %27, ptr noundef %28, ptr noundef %700)
  %701 = load i64, ptr %10, align 8, !tbaa !11
  %702 = icmp ne i64 %701, 1
  br i1 %702, label %703, label %714

703:                                              ; preds = %698
  %704 = load double, ptr %27, align 8, !tbaa !13
  %705 = load ptr, ptr %4, align 8, !tbaa !9
  %706 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %704, ptr noundef %705)
  %707 = load i64, ptr %10, align 8, !tbaa !11
  %708 = sitofp i64 %707 to double
  %709 = fmul double %706, %708
  %710 = load i64, ptr %10, align 8, !tbaa !11
  %711 = sub nsw i64 %710, 1
  %712 = sitofp i64 %711 to double
  %713 = fdiv double %709, %712
  store double %713, ptr %22, align 8, !tbaa !13
  br label %715

714:                                              ; preds = %698
  store double 0.000000e+00, ptr %22, align 8, !tbaa !13
  br label %715

715:                                              ; preds = %714, %703
  %716 = load double, ptr %22, align 8, !tbaa !13
  %717 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %718 = load ptr, ptr %717, align 8, !tbaa !15
  %719 = load i64, ptr %13, align 8, !tbaa !11
  %720 = getelementptr inbounds double, ptr %718, i64 %719
  %721 = load double, ptr %720, align 8, !tbaa !13
  %722 = fsub double %716, %721
  %723 = load ptr, ptr %4, align 8, !tbaa !9
  %724 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %722, ptr noundef %723)
  %725 = load double, ptr %8, align 8, !tbaa !13
  %726 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %724, double noundef %725)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %43, i1 noundef zeroext %726, ptr noundef @.str.19, i32 noundef 127099, ptr noundef @.str.992)
  br label %727

727:                                              ; preds = %715
  %728 = load i64, ptr %13, align 8, !tbaa !11
  %729 = add nsw i64 %728, 1
  store i64 %729, ptr %13, align 8, !tbaa !11
  br label %660, !llvm.loop !44

730:                                              ; preds = %660
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %731

731:                                              ; preds = %753, %730
  %732 = load i64, ptr %13, align 8, !tbaa !11
  %733 = load i64, ptr %34, align 8, !tbaa !11
  %734 = sub nsw i64 %733, 2
  %735 = icmp sle i64 %732, %734
  br i1 %735, label %736, label %756

736:                                              ; preds = %731
  %737 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %738 = load ptr, ptr %737, align 8, !tbaa !15
  %739 = load i64, ptr %13, align 8, !tbaa !11
  %740 = getelementptr inbounds double, ptr %738, i64 %739
  %741 = load double, ptr %740, align 8, !tbaa !13
  %742 = load ptr, ptr %4, align 8, !tbaa !9
  %743 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %741, ptr noundef %742)
  %744 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %745 = load ptr, ptr %744, align 8, !tbaa !15
  %746 = load i64, ptr %13, align 8, !tbaa !11
  %747 = add nsw i64 %746, 1
  %748 = getelementptr inbounds double, ptr %745, i64 %747
  %749 = load double, ptr %748, align 8, !tbaa !13
  %750 = load ptr, ptr %4, align 8, !tbaa !9
  %751 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %749, ptr noundef %750)
  %752 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %743, double noundef %751)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %43, i1 noundef zeroext %752, ptr noundef @.str.19, i32 noundef 127103, ptr noundef @.str.993)
  br label %753

753:                                              ; preds = %736
  %754 = load i64, ptr %13, align 8, !tbaa !11
  %755 = add nsw i64 %754, 1
  store i64 %755, ptr %13, align 8, !tbaa !11
  br label %731, !llvm.loop !45

756:                                              ; preds = %731
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %757

757:                                              ; preds = %787, %756
  %758 = load i64, ptr %13, align 8, !tbaa !11
  %759 = load i64, ptr %34, align 8, !tbaa !11
  %760 = sub nsw i64 %759, 1
  %761 = icmp sle i64 %758, %760
  br i1 %761, label %762, label %790

762:                                              ; preds = %757
  %763 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %764 = load ptr, ptr %763, align 8, !tbaa !15
  %765 = load i64, ptr %13, align 8, !tbaa !11
  %766 = getelementptr inbounds double, ptr %764, i64 %765
  %767 = load double, ptr %766, align 8, !tbaa !13
  %768 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %767, double noundef 0.000000e+00)
  br i1 %768, label %769, label %785

769:                                              ; preds = %762
  %770 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %771 = load ptr, ptr %770, align 8, !tbaa !15
  %772 = load i64, ptr %13, align 8, !tbaa !11
  %773 = getelementptr inbounds double, ptr %771, i64 %772
  %774 = load double, ptr %773, align 8, !tbaa !13
  %775 = load ptr, ptr %4, align 8, !tbaa !9
  %776 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %774, ptr noundef %775)
  %777 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %778 = load ptr, ptr %777, align 8, !tbaa !15
  %779 = getelementptr inbounds double, ptr %778, i64 0
  %780 = load double, ptr %779, align 8, !tbaa !13
  %781 = load ptr, ptr %4, align 8, !tbaa !9
  %782 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %780, ptr noundef %781)
  %783 = fmul double 5.000000e-13, %782
  %784 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %776, double noundef %783)
  br label %785

785:                                              ; preds = %769, %762
  %786 = phi i1 [ false, %762 ], [ %784, %769 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %43, i1 noundef zeroext %786, ptr noundef @.str.19, i32 noundef 127107, ptr noundef @.str.994)
  br label %787

787:                                              ; preds = %785
  %788 = load i64, ptr %13, align 8, !tbaa !11
  %789 = add nsw i64 %788, 1
  store i64 %789, ptr %13, align 8, !tbaa !11
  br label %757, !llvm.loop !46

790:                                              ; preds = %757
  %791 = load i64, ptr %10, align 8, !tbaa !11
  %792 = load i64, ptr %9, align 8, !tbaa !11
  %793 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13pcabuildbasisEPKNS_9ae_matrixEllPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef %21, i64 noundef %791, i64 noundef %792, ptr noundef %16, ptr noundef %20, ptr noundef %793)
  store double 0.000000e+00, ptr %36, align 8, !tbaa !13
  store double 0.000000e+00, ptr %37, align 8, !tbaa !13
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %794

794:                                              ; preds = %814, %790
  %795 = load i64, ptr %13, align 8, !tbaa !11
  %796 = load i64, ptr %34, align 8, !tbaa !11
  %797 = sub nsw i64 %796, 1
  %798 = icmp sle i64 %795, %797
  br i1 %798, label %799, label %817

799:                                              ; preds = %794
  %800 = load double, ptr %37, align 8, !tbaa !13
  %801 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %802 = load ptr, ptr %801, align 8, !tbaa !15
  %803 = load i64, ptr %13, align 8, !tbaa !11
  %804 = getelementptr inbounds double, ptr %802, i64 %803
  %805 = load double, ptr %804, align 8, !tbaa !13
  %806 = fadd double %800, %805
  store double %806, ptr %37, align 8, !tbaa !13
  %807 = load double, ptr %36, align 8, !tbaa !13
  %808 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %809 = load ptr, ptr %808, align 8, !tbaa !15
  %810 = load i64, ptr %13, align 8, !tbaa !11
  %811 = getelementptr inbounds double, ptr %809, i64 %810
  %812 = load double, ptr %811, align 8, !tbaa !13
  %813 = fadd double %807, %812
  store double %813, ptr %36, align 8, !tbaa !13
  br label %814

814:                                              ; preds = %799
  %815 = load i64, ptr %13, align 8, !tbaa !11
  %816 = add nsw i64 %815, 1
  store i64 %816, ptr %13, align 8, !tbaa !11
  br label %794, !llvm.loop !47

817:                                              ; preds = %794
  %818 = load double, ptr %37, align 8, !tbaa !13
  %819 = load double, ptr %36, align 8, !tbaa !13
  %820 = fsub double %818, %819
  %821 = load double, ptr %36, align 8, !tbaa !13
  %822 = fdiv double %820, %821
  %823 = load double, ptr %35, align 8, !tbaa !13
  %824 = fneg double %823
  %825 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %822, double noundef %824)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %43, i1 noundef zeroext %825, ptr noundef @.str.19, i32 noundef 127122, ptr noundef @.str.995)
  %826 = load double, ptr %37, align 8, !tbaa !13
  %827 = load double, ptr %36, align 8, !tbaa !13
  %828 = fsub double %826, %827
  %829 = load double, ptr %36, align 8, !tbaa !13
  %830 = fdiv double %828, %829
  %831 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %830, double noundef 5.000000e-11)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %43, i1 noundef zeroext %831, ptr noundef @.str.19, i32 noundef 127123, ptr noundef @.str.996)
  br label %832

832:                                              ; preds = %817
  %833 = load i64, ptr %10, align 8, !tbaa !11
  %834 = add nsw i64 %833, 1
  store i64 %834, ptr %10, align 8, !tbaa !11
  br label %536, !llvm.loop !48

835:                                              ; preds = %536
  br label %836

836:                                              ; preds = %835
  %837 = load i64, ptr %9, align 8, !tbaa !11
  %838 = add nsw i64 %837, 1
  store i64 %838, ptr %9, align 8, !tbaa !11
  br label %531, !llvm.loop !49

839:                                              ; preds = %531
  store i64 0, ptr %38, align 8, !tbaa !11
  br label %840

840:                                              ; preds = %1165, %839
  %841 = load i64, ptr %38, align 8, !tbaa !11
  %842 = icmp sle i64 %841, 3
  br i1 %842, label %843, label %1168

843:                                              ; preds = %840
  store i64 -1, ptr %9, align 8, !tbaa !11
  store i64 -1, ptr %34, align 8, !tbaa !11
  %844 = load i64, ptr %38, align 8, !tbaa !11
  %845 = icmp eq i64 %844, 0
  br i1 %845, label %846, label %853

846:                                              ; preds = %843
  %847 = load ptr, ptr %4, align 8, !tbaa !9
  %848 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %33, i64 noundef 50, ptr noundef %847)
  %849 = add nsw i64 50, %848
  store i64 %849, ptr %9, align 8, !tbaa !11
  %850 = load ptr, ptr %4, align 8, !tbaa !9
  %851 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %33, i64 noundef 10, ptr noundef %850)
  %852 = add nsw i64 1, %851
  store i64 %852, ptr %34, align 8, !tbaa !11
  br label %853

853:                                              ; preds = %846, %843
  %854 = load i64, ptr %38, align 8, !tbaa !11
  %855 = icmp eq i64 %854, 1
  br i1 %855, label %856, label %863

856:                                              ; preds = %853
  %857 = load ptr, ptr %4, align 8, !tbaa !9
  %858 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %33, i64 noundef 50, ptr noundef %857)
  %859 = add nsw i64 100, %858
  store i64 %859, ptr %9, align 8, !tbaa !11
  %860 = load ptr, ptr %4, align 8, !tbaa !9
  %861 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %33, i64 noundef 10, ptr noundef %860)
  %862 = add nsw i64 1, %861
  store i64 %862, ptr %34, align 8, !tbaa !11
  br label %863

863:                                              ; preds = %856, %853
  %864 = load i64, ptr %38, align 8, !tbaa !11
  %865 = icmp eq i64 %864, 2
  br i1 %865, label %866, label %873

866:                                              ; preds = %863
  %867 = load ptr, ptr %4, align 8, !tbaa !9
  %868 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %33, i64 noundef 50, ptr noundef %867)
  %869 = add nsw i64 100, %868
  store i64 %869, ptr %9, align 8, !tbaa !11
  %870 = load ptr, ptr %4, align 8, !tbaa !9
  %871 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %33, i64 noundef 10, ptr noundef %870)
  %872 = add nsw i64 25, %871
  store i64 %872, ptr %34, align 8, !tbaa !11
  br label %873

873:                                              ; preds = %866, %863
  %874 = load i64, ptr %38, align 8, !tbaa !11
  %875 = icmp eq i64 %874, 3
  br i1 %875, label %876, label %883

876:                                              ; preds = %873
  %877 = load ptr, ptr %4, align 8, !tbaa !9
  %878 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %33, i64 noundef 200, ptr noundef %877)
  %879 = add nsw i64 200, %878
  store i64 %879, ptr %9, align 8, !tbaa !11
  %880 = load ptr, ptr %4, align 8, !tbaa !9
  %881 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %33, i64 noundef 10, ptr noundef %880)
  %882 = add nsw i64 1, %881
  store i64 %882, ptr %34, align 8, !tbaa !11
  br label %883

883:                                              ; preds = %876, %873
  %884 = load i64, ptr %9, align 8, !tbaa !11
  %885 = icmp sgt i64 %884, 0
  br i1 %885, label %886, label %889

886:                                              ; preds = %883
  %887 = load i64, ptr %34, align 8, !tbaa !11
  %888 = icmp sgt i64 %887, 0
  br label %889

889:                                              ; preds = %886, %883
  %890 = phi i1 [ false, %883 ], [ %888, %886 ]
  %891 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %890, ptr noundef @.str.997, ptr noundef %891)
  %892 = load i64, ptr %9, align 8, !tbaa !11
  %893 = mul nsw i64 2, %892
  store i64 %893, ptr %10, align 8, !tbaa !11
  store double 1.000000e-03, ptr %35, align 8, !tbaa !13
  %894 = load i64, ptr %10, align 8, !tbaa !11
  %895 = load i64, ptr %9, align 8, !tbaa !11
  %896 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %21, i64 noundef %894, i64 noundef %895, ptr noundef %896)
  store i64 0, ptr %11, align 8, !tbaa !11
  br label %897

897:                                              ; preds = %920, %889
  %898 = load i64, ptr %11, align 8, !tbaa !11
  %899 = load i64, ptr %10, align 8, !tbaa !11
  %900 = sub nsw i64 %899, 1
  %901 = icmp sle i64 %898, %900
  br i1 %901, label %902, label %923

902:                                              ; preds = %897
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %903

903:                                              ; preds = %916, %902
  %904 = load i64, ptr %12, align 8, !tbaa !11
  %905 = load i64, ptr %9, align 8, !tbaa !11
  %906 = sub nsw i64 %905, 1
  %907 = icmp sle i64 %904, %906
  br i1 %907, label %908, label %919

908:                                              ; preds = %903
  %909 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %21, i32 0, i32 6
  %910 = load ptr, ptr %909, align 8, !tbaa !15
  %911 = load i64, ptr %11, align 8, !tbaa !11
  %912 = getelementptr inbounds ptr, ptr %910, i64 %911
  %913 = load ptr, ptr %912, align 8, !tbaa !9
  %914 = load i64, ptr %12, align 8, !tbaa !11
  %915 = getelementptr inbounds double, ptr %913, i64 %914
  store double 0.000000e+00, ptr %915, align 8, !tbaa !13
  br label %916

916:                                              ; preds = %908
  %917 = load i64, ptr %12, align 8, !tbaa !11
  %918 = add nsw i64 %917, 1
  store i64 %918, ptr %12, align 8, !tbaa !11
  br label %903, !llvm.loop !50

919:                                              ; preds = %903
  br label %920

920:                                              ; preds = %919
  %921 = load i64, ptr %11, align 8, !tbaa !11
  %922 = add nsw i64 %921, 1
  store i64 %922, ptr %11, align 8, !tbaa !11
  br label %897, !llvm.loop !51

923:                                              ; preds = %897
  %924 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %21, i32 0, i32 6
  %925 = load ptr, ptr %924, align 8, !tbaa !15
  %926 = getelementptr inbounds ptr, ptr %925, i64 0
  %927 = load ptr, ptr %926, align 8, !tbaa !9
  %928 = getelementptr inbounds double, ptr %927, i64 0
  store double 1.000000e+00, ptr %928, align 8, !tbaa !13
  store i64 1, ptr %11, align 8, !tbaa !11
  br label %929

929:                                              ; preds = %953, %923
  %930 = load i64, ptr %11, align 8, !tbaa !11
  %931 = load i64, ptr %9, align 8, !tbaa !11
  %932 = sub nsw i64 %931, 1
  %933 = icmp sle i64 %930, %932
  br i1 %933, label %934, label %956

934:                                              ; preds = %929
  %935 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %21, i32 0, i32 6
  %936 = load ptr, ptr %935, align 8, !tbaa !15
  %937 = load i64, ptr %11, align 8, !tbaa !11
  %938 = sub nsw i64 %937, 1
  %939 = getelementptr inbounds ptr, ptr %936, i64 %938
  %940 = load ptr, ptr %939, align 8, !tbaa !9
  %941 = load i64, ptr %11, align 8, !tbaa !11
  %942 = sub nsw i64 %941, 1
  %943 = getelementptr inbounds double, ptr %940, i64 %942
  %944 = load double, ptr %943, align 8, !tbaa !13
  %945 = fmul double %944, 0x3FEE79E79E79E79E
  %946 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %21, i32 0, i32 6
  %947 = load ptr, ptr %946, align 8, !tbaa !15
  %948 = load i64, ptr %11, align 8, !tbaa !11
  %949 = getelementptr inbounds ptr, ptr %947, i64 %948
  %950 = load ptr, ptr %949, align 8, !tbaa !9
  %951 = load i64, ptr %11, align 8, !tbaa !11
  %952 = getelementptr inbounds double, ptr %950, i64 %951
  store double %945, ptr %952, align 8, !tbaa !13
  br label %953

953:                                              ; preds = %934
  %954 = load i64, ptr %11, align 8, !tbaa !11
  %955 = add nsw i64 %954, 1
  store i64 %955, ptr %11, align 8, !tbaa !11
  br label %929, !llvm.loop !52

956:                                              ; preds = %929
  %957 = load i64, ptr %10, align 8, !tbaa !11
  %958 = load i64, ptr %9, align 8, !tbaa !11
  %959 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl31rmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %21, i64 noundef %957, i64 noundef %958, ptr noundef %959)
  %960 = load i64, ptr %10, align 8, !tbaa !11
  %961 = load i64, ptr %9, align 8, !tbaa !11
  %962 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl32rmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %21, i64 noundef %960, i64 noundef %961, ptr noundef %962)
  %963 = load ptr, ptr %4, align 8, !tbaa !9
  %964 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %33, ptr noundef %963)
  %965 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %964, double noundef 5.000000e-01)
  br i1 %965, label %966, label %971

966:                                              ; preds = %956
  %967 = load i64, ptr %10, align 8, !tbaa !11
  %968 = load i64, ptr %9, align 8, !tbaa !11
  %969 = load i64, ptr %34, align 8, !tbaa !11
  %970 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20pcatruncatedsubspaceEPKNS_9ae_matrixEllldlPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef %21, i64 noundef %967, i64 noundef %968, i64 noundef %969, double noundef 0.000000e+00, i64 noundef 20, ptr noundef %15, ptr noundef %19, ptr noundef %970)
  br label %976

971:                                              ; preds = %956
  %972 = load i64, ptr %10, align 8, !tbaa !11
  %973 = load i64, ptr %9, align 8, !tbaa !11
  %974 = load i64, ptr %34, align 8, !tbaa !11
  %975 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20pcatruncatedsubspaceEPKNS_9ae_matrixEllldlPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef %21, i64 noundef %972, i64 noundef %973, i64 noundef %974, double noundef 0.000000e+00, i64 noundef 0, ptr noundef %15, ptr noundef %19, ptr noundef %975)
  br label %976

976:                                              ; preds = %971, %966
  store i64 0, ptr %11, align 8, !tbaa !11
  br label %977

977:                                              ; preds = %1025, %976
  %978 = load i64, ptr %11, align 8, !tbaa !11
  %979 = load i64, ptr %34, align 8, !tbaa !11
  %980 = sub nsw i64 %979, 1
  %981 = icmp sle i64 %978, %980
  br i1 %981, label %982, label %1028

982:                                              ; preds = %977
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %983

983:                                              ; preds = %1021, %982
  %984 = load i64, ptr %12, align 8, !tbaa !11
  %985 = load i64, ptr %34, align 8, !tbaa !11
  %986 = sub nsw i64 %985, 1
  %987 = icmp sle i64 %984, %986
  br i1 %987, label %988, label %1024

988:                                              ; preds = %983
  %989 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %990 = load ptr, ptr %989, align 8, !tbaa !15
  %991 = getelementptr inbounds ptr, ptr %990, i64 0
  %992 = load ptr, ptr %991, align 8, !tbaa !9
  %993 = load i64, ptr %11, align 8, !tbaa !11
  %994 = getelementptr inbounds double, ptr %992, i64 %993
  %995 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 2
  %996 = load i64, ptr %995, align 8, !tbaa !20
  %997 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %998 = load ptr, ptr %997, align 8, !tbaa !15
  %999 = getelementptr inbounds ptr, ptr %998, i64 0
  %1000 = load ptr, ptr %999, align 8, !tbaa !9
  %1001 = load i64, ptr %12, align 8, !tbaa !11
  %1002 = getelementptr inbounds double, ptr %1000, i64 %1001
  %1003 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 2
  %1004 = load i64, ptr %1003, align 8, !tbaa !20
  %1005 = load i64, ptr %9, align 8, !tbaa !11
  %1006 = sub nsw i64 %1005, 1
  %1007 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1006)
  %1008 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %994, i64 noundef %996, ptr noundef %1002, i64 noundef %1004, i64 noundef %1007)
  store double %1008, ptr %22, align 8, !tbaa !13
  %1009 = load i64, ptr %11, align 8, !tbaa !11
  %1010 = load i64, ptr %12, align 8, !tbaa !11
  %1011 = icmp eq i64 %1009, %1010
  br i1 %1011, label %1012, label %1015

1012:                                             ; preds = %988
  %1013 = load double, ptr %22, align 8, !tbaa !13
  %1014 = fsub double %1013, 1.000000e+00
  store double %1014, ptr %22, align 8, !tbaa !13
  br label %1015

1015:                                             ; preds = %1012, %988
  %1016 = load double, ptr %22, align 8, !tbaa !13
  %1017 = load ptr, ptr %4, align 8, !tbaa !9
  %1018 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1016, ptr noundef %1017)
  %1019 = load double, ptr %8, align 8, !tbaa !13
  %1020 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1018, double noundef %1019)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %43, i1 noundef zeroext %1020, ptr noundef @.str.19, i32 noundef 127203, ptr noundef @.str.998)
  br label %1021

1021:                                             ; preds = %1015
  %1022 = load i64, ptr %12, align 8, !tbaa !11
  %1023 = add nsw i64 %1022, 1
  store i64 %1023, ptr %12, align 8, !tbaa !11
  br label %983, !llvm.loop !53

1024:                                             ; preds = %983
  br label %1025

1025:                                             ; preds = %1024
  %1026 = load i64, ptr %11, align 8, !tbaa !11
  %1027 = add nsw i64 %1026, 1
  store i64 %1027, ptr %11, align 8, !tbaa !11
  br label %977, !llvm.loop !54

1028:                                             ; preds = %977
  %1029 = load i64, ptr %10, align 8, !tbaa !11
  %1030 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %17, i64 noundef %1029, ptr noundef %1030)
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %1031

1031:                                             ; preds = %1098, %1028
  %1032 = load i64, ptr %13, align 8, !tbaa !11
  %1033 = load i64, ptr %34, align 8, !tbaa !11
  %1034 = sub nsw i64 %1033, 1
  %1035 = icmp sle i64 %1032, %1034
  br i1 %1035, label %1036, label %1101

1036:                                             ; preds = %1031
  store i64 0, ptr %11, align 8, !tbaa !11
  br label %1037

1037:                                             ; preds = %1066, %1036
  %1038 = load i64, ptr %11, align 8, !tbaa !11
  %1039 = load i64, ptr %10, align 8, !tbaa !11
  %1040 = sub nsw i64 %1039, 1
  %1041 = icmp sle i64 %1038, %1040
  br i1 %1041, label %1042, label %1069

1042:                                             ; preds = %1037
  %1043 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %21, i32 0, i32 6
  %1044 = load ptr, ptr %1043, align 8, !tbaa !15
  %1045 = load i64, ptr %11, align 8, !tbaa !11
  %1046 = getelementptr inbounds ptr, ptr %1044, i64 %1045
  %1047 = load ptr, ptr %1046, align 8, !tbaa !9
  %1048 = getelementptr inbounds double, ptr %1047, i64 0
  %1049 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %1050 = load ptr, ptr %1049, align 8, !tbaa !15
  %1051 = getelementptr inbounds ptr, ptr %1050, i64 0
  %1052 = load ptr, ptr %1051, align 8, !tbaa !9
  %1053 = load i64, ptr %13, align 8, !tbaa !11
  %1054 = getelementptr inbounds double, ptr %1052, i64 %1053
  %1055 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 2
  %1056 = load i64, ptr %1055, align 8, !tbaa !20
  %1057 = load i64, ptr %9, align 8, !tbaa !11
  %1058 = sub nsw i64 %1057, 1
  %1059 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1058)
  %1060 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1048, i64 noundef 1, ptr noundef %1054, i64 noundef %1056, i64 noundef %1059)
  store double %1060, ptr %22, align 8, !tbaa !13
  %1061 = load double, ptr %22, align 8, !tbaa !13
  %1062 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %1063 = load ptr, ptr %1062, align 8, !tbaa !15
  %1064 = load i64, ptr %11, align 8, !tbaa !11
  %1065 = getelementptr inbounds double, ptr %1063, i64 %1064
  store double %1061, ptr %1065, align 8, !tbaa !13
  br label %1066

1066:                                             ; preds = %1042
  %1067 = load i64, ptr %11, align 8, !tbaa !11
  %1068 = add nsw i64 %1067, 1
  store i64 %1068, ptr %11, align 8, !tbaa !11
  br label %1037, !llvm.loop !55

1069:                                             ; preds = %1037
  %1070 = load i64, ptr %10, align 8, !tbaa !11
  %1071 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testpcaunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef %17, i64 noundef %1070, ptr noundef %25, ptr noundef %26, ptr noundef %27, ptr noundef %28, ptr noundef %1071)
  %1072 = load i64, ptr %10, align 8, !tbaa !11
  %1073 = icmp ne i64 %1072, 1
  br i1 %1073, label %1074, label %1085

1074:                                             ; preds = %1069
  %1075 = load double, ptr %27, align 8, !tbaa !13
  %1076 = load ptr, ptr %4, align 8, !tbaa !9
  %1077 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1075, ptr noundef %1076)
  %1078 = load i64, ptr %10, align 8, !tbaa !11
  %1079 = sitofp i64 %1078 to double
  %1080 = fmul double %1077, %1079
  %1081 = load i64, ptr %10, align 8, !tbaa !11
  %1082 = sub nsw i64 %1081, 1
  %1083 = sitofp i64 %1082 to double
  %1084 = fdiv double %1080, %1083
  store double %1084, ptr %22, align 8, !tbaa !13
  br label %1086

1085:                                             ; preds = %1069
  store double 0.000000e+00, ptr %22, align 8, !tbaa !13
  br label %1086

1086:                                             ; preds = %1085, %1074
  %1087 = load double, ptr %22, align 8, !tbaa !13
  %1088 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1089 = load ptr, ptr %1088, align 8, !tbaa !15
  %1090 = load i64, ptr %13, align 8, !tbaa !11
  %1091 = getelementptr inbounds double, ptr %1089, i64 %1090
  %1092 = load double, ptr %1091, align 8, !tbaa !13
  %1093 = fsub double %1087, %1092
  %1094 = load ptr, ptr %4, align 8, !tbaa !9
  %1095 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1093, ptr noundef %1094)
  %1096 = load double, ptr %8, align 8, !tbaa !13
  %1097 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1095, double noundef %1096)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %43, i1 noundef zeroext %1097, ptr noundef @.str.19, i32 noundef 127227, ptr noundef @.str.999)
  br label %1098

1098:                                             ; preds = %1086
  %1099 = load i64, ptr %13, align 8, !tbaa !11
  %1100 = add nsw i64 %1099, 1
  store i64 %1100, ptr %13, align 8, !tbaa !11
  br label %1031, !llvm.loop !56

1101:                                             ; preds = %1031
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %1102

1102:                                             ; preds = %1120, %1101
  %1103 = load i64, ptr %13, align 8, !tbaa !11
  %1104 = load i64, ptr %34, align 8, !tbaa !11
  %1105 = sub nsw i64 %1104, 2
  %1106 = icmp sle i64 %1103, %1105
  br i1 %1106, label %1107, label %1123

1107:                                             ; preds = %1102
  %1108 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1109 = load ptr, ptr %1108, align 8, !tbaa !15
  %1110 = load i64, ptr %13, align 8, !tbaa !11
  %1111 = getelementptr inbounds double, ptr %1109, i64 %1110
  %1112 = load double, ptr %1111, align 8, !tbaa !13
  %1113 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1114 = load ptr, ptr %1113, align 8, !tbaa !15
  %1115 = load i64, ptr %13, align 8, !tbaa !11
  %1116 = add nsw i64 %1115, 1
  %1117 = getelementptr inbounds double, ptr %1114, i64 %1116
  %1118 = load double, ptr %1117, align 8, !tbaa !13
  %1119 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1112, double noundef %1118)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %43, i1 noundef zeroext %1119, ptr noundef @.str.19, i32 noundef 127231, ptr noundef @.str.1000)
  br label %1120

1120:                                             ; preds = %1107
  %1121 = load i64, ptr %13, align 8, !tbaa !11
  %1122 = add nsw i64 %1121, 1
  store i64 %1122, ptr %13, align 8, !tbaa !11
  br label %1102, !llvm.loop !57

1123:                                             ; preds = %1102
  %1124 = load i64, ptr %10, align 8, !tbaa !11
  %1125 = load i64, ptr %9, align 8, !tbaa !11
  %1126 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13pcabuildbasisEPKNS_9ae_matrixEllPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef %21, i64 noundef %1124, i64 noundef %1125, ptr noundef %16, ptr noundef %20, ptr noundef %1126)
  store double 0.000000e+00, ptr %36, align 8, !tbaa !13
  store double 0.000000e+00, ptr %37, align 8, !tbaa !13
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %1127

1127:                                             ; preds = %1147, %1123
  %1128 = load i64, ptr %13, align 8, !tbaa !11
  %1129 = load i64, ptr %34, align 8, !tbaa !11
  %1130 = sub nsw i64 %1129, 1
  %1131 = icmp sle i64 %1128, %1130
  br i1 %1131, label %1132, label %1150

1132:                                             ; preds = %1127
  %1133 = load double, ptr %37, align 8, !tbaa !13
  %1134 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1135 = load ptr, ptr %1134, align 8, !tbaa !15
  %1136 = load i64, ptr %13, align 8, !tbaa !11
  %1137 = getelementptr inbounds double, ptr %1135, i64 %1136
  %1138 = load double, ptr %1137, align 8, !tbaa !13
  %1139 = fadd double %1133, %1138
  store double %1139, ptr %37, align 8, !tbaa !13
  %1140 = load double, ptr %36, align 8, !tbaa !13
  %1141 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %1142 = load ptr, ptr %1141, align 8, !tbaa !15
  %1143 = load i64, ptr %13, align 8, !tbaa !11
  %1144 = getelementptr inbounds double, ptr %1142, i64 %1143
  %1145 = load double, ptr %1144, align 8, !tbaa !13
  %1146 = fadd double %1140, %1145
  store double %1146, ptr %36, align 8, !tbaa !13
  br label %1147

1147:                                             ; preds = %1132
  %1148 = load i64, ptr %13, align 8, !tbaa !11
  %1149 = add nsw i64 %1148, 1
  store i64 %1149, ptr %13, align 8, !tbaa !11
  br label %1127, !llvm.loop !58

1150:                                             ; preds = %1127
  %1151 = load double, ptr %37, align 8, !tbaa !13
  %1152 = load double, ptr %36, align 8, !tbaa !13
  %1153 = fsub double %1151, %1152
  %1154 = load double, ptr %36, align 8, !tbaa !13
  %1155 = fdiv double %1153, %1154
  %1156 = load double, ptr %35, align 8, !tbaa !13
  %1157 = fneg double %1156
  %1158 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1155, double noundef %1157)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %43, i1 noundef zeroext %1158, ptr noundef @.str.19, i32 noundef 127246, ptr noundef @.str.1001)
  %1159 = load double, ptr %37, align 8, !tbaa !13
  %1160 = load double, ptr %36, align 8, !tbaa !13
  %1161 = fsub double %1159, %1160
  %1162 = load double, ptr %36, align 8, !tbaa !13
  %1163 = fdiv double %1161, %1162
  %1164 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1163, double noundef 5.000000e-11)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %43, i1 noundef zeroext %1164, ptr noundef @.str.19, i32 noundef 127247, ptr noundef @.str.1002)
  br label %1165

1165:                                             ; preds = %1150
  %1166 = load i64, ptr %38, align 8, !tbaa !11
  %1167 = add nsw i64 %1166, 1
  store i64 %1167, ptr %38, align 8, !tbaa !11
  br label %840, !llvm.loop !59

1168:                                             ; preds = %840
  store double 1.000000e-03, ptr %35, align 8, !tbaa !13
  store i64 1, ptr %9, align 8, !tbaa !11
  br label %1169

1169:                                             ; preds = %1532, %1168
  %1170 = load i64, ptr %9, align 8, !tbaa !11
  %1171 = load i64, ptr %7, align 8, !tbaa !11
  %1172 = icmp sle i64 %1170, %1171
  br i1 %1172, label %1173, label %1535

1173:                                             ; preds = %1169
  store i64 1, ptr %10, align 8, !tbaa !11
  br label %1174

1174:                                             ; preds = %1528, %1173
  %1175 = load i64, ptr %10, align 8, !tbaa !11
  %1176 = load i64, ptr %6, align 8, !tbaa !11
  %1177 = icmp sle i64 %1175, %1176
  br i1 %1177, label %1178, label %1531

1178:                                             ; preds = %1174
  %1179 = load i64, ptr %9, align 8, !tbaa !11
  %1180 = load ptr, ptr %4, align 8, !tbaa !9
  %1181 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %33, i64 noundef %1179, ptr noundef %1180)
  %1182 = add nsw i64 1, %1181
  store i64 %1182, ptr %34, align 8, !tbaa !11
  %1183 = load i64, ptr %9, align 8, !tbaa !11
  %1184 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %14, i64 noundef %1183, ptr noundef %1184)
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1185

1185:                                             ; preds = %1198, %1178
  %1186 = load i64, ptr %12, align 8, !tbaa !11
  %1187 = load i64, ptr %9, align 8, !tbaa !11
  %1188 = sub nsw i64 %1187, 1
  %1189 = icmp sle i64 %1186, %1188
  br i1 %1189, label %1190, label %1201

1190:                                             ; preds = %1185
  %1191 = load ptr, ptr %4, align 8, !tbaa !9
  %1192 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %33, ptr noundef %1191)
  %1193 = fmul double 1.000000e+02, %1192
  %1194 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %1195 = load ptr, ptr %1194, align 8, !tbaa !15
  %1196 = load i64, ptr %12, align 8, !tbaa !11
  %1197 = getelementptr inbounds double, ptr %1195, i64 %1196
  store double %1193, ptr %1197, align 8, !tbaa !13
  br label %1198

1198:                                             ; preds = %1190
  %1199 = load i64, ptr %12, align 8, !tbaa !11
  %1200 = add nsw i64 %1199, 1
  store i64 %1200, ptr %12, align 8, !tbaa !11
  br label %1185, !llvm.loop !60

1201:                                             ; preds = %1185
  %1202 = load i64, ptr %10, align 8, !tbaa !11
  %1203 = load i64, ptr %9, align 8, !tbaa !11
  %1204 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl12sparsecreateElllPNS_12sparsematrixEPNS_8ae_stateE(i64 noundef %1202, i64 noundef %1203, i64 noundef 0, ptr noundef %24, ptr noundef %1204)
  store i64 0, ptr %11, align 8, !tbaa !11
  br label %1205

1205:                                             ; preds = %1239, %1201
  %1206 = load i64, ptr %11, align 8, !tbaa !11
  %1207 = load i64, ptr %10, align 8, !tbaa !11
  %1208 = sub nsw i64 %1207, 1
  %1209 = icmp sle i64 %1206, %1208
  br i1 %1209, label %1210, label %1242

1210:                                             ; preds = %1205
  %1211 = load i64, ptr %9, align 8, !tbaa !11
  %1212 = load ptr, ptr %4, align 8, !tbaa !9
  %1213 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %33, i64 noundef %1211, ptr noundef %1212)
  store i64 %1213, ptr %12, align 8, !tbaa !11
  %1214 = load i64, ptr %11, align 8, !tbaa !11
  %1215 = load i64, ptr %12, align 8, !tbaa !11
  %1216 = load ptr, ptr %4, align 8, !tbaa !9
  %1217 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %33, ptr noundef %1216)
  %1218 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %1219 = load ptr, ptr %1218, align 8, !tbaa !15
  %1220 = load i64, ptr %12, align 8, !tbaa !11
  %1221 = getelementptr inbounds double, ptr %1219, i64 %1220
  %1222 = load double, ptr %1221, align 8, !tbaa !13
  %1223 = fadd double %1217, %1222
  %1224 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9sparsesetEPNS_12sparsematrixElldPNS_8ae_stateE(ptr noundef %24, i64 noundef %1214, i64 noundef %1215, double noundef %1223, ptr noundef %1224)
  %1225 = load i64, ptr %9, align 8, !tbaa !11
  %1226 = load ptr, ptr %4, align 8, !tbaa !9
  %1227 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef %33, i64 noundef %1225, ptr noundef %1226)
  store i64 %1227, ptr %12, align 8, !tbaa !11
  %1228 = load i64, ptr %11, align 8, !tbaa !11
  %1229 = load i64, ptr %12, align 8, !tbaa !11
  %1230 = load ptr, ptr %4, align 8, !tbaa !9
  %1231 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %33, ptr noundef %1230)
  %1232 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %14, i32 0, i32 4
  %1233 = load ptr, ptr %1232, align 8, !tbaa !15
  %1234 = load i64, ptr %12, align 8, !tbaa !11
  %1235 = getelementptr inbounds double, ptr %1233, i64 %1234
  %1236 = load double, ptr %1235, align 8, !tbaa !13
  %1237 = fadd double %1231, %1236
  %1238 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl9sparsesetEPNS_12sparsematrixElldPNS_8ae_stateE(ptr noundef %24, i64 noundef %1228, i64 noundef %1229, double noundef %1237, ptr noundef %1238)
  br label %1239

1239:                                             ; preds = %1210
  %1240 = load i64, ptr %11, align 8, !tbaa !11
  %1241 = add nsw i64 %1240, 1
  store i64 %1241, ptr %11, align 8, !tbaa !11
  br label %1205, !llvm.loop !61

1242:                                             ; preds = %1205
  %1243 = load ptr, ptr %4, align 8, !tbaa !9
  %1244 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %33, ptr noundef %1243)
  %1245 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1244, double noundef 0.000000e+00)
  br i1 %1245, label %1246, label %1248

1246:                                             ; preds = %1242
  %1247 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl18sparseconverttocrsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %24, ptr noundef %1247)
  br label %1248

1248:                                             ; preds = %1246, %1242
  %1249 = load i64, ptr %10, align 8, !tbaa !11
  %1250 = load i64, ptr %9, align 8, !tbaa !11
  %1251 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %21, i64 noundef %1249, i64 noundef %1250, ptr noundef %1251)
  store i64 0, ptr %11, align 8, !tbaa !11
  br label %1252

1252:                                             ; preds = %1279, %1248
  %1253 = load i64, ptr %11, align 8, !tbaa !11
  %1254 = load i64, ptr %10, align 8, !tbaa !11
  %1255 = sub nsw i64 %1254, 1
  %1256 = icmp sle i64 %1253, %1255
  br i1 %1256, label %1257, label %1282

1257:                                             ; preds = %1252
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1258

1258:                                             ; preds = %1275, %1257
  %1259 = load i64, ptr %12, align 8, !tbaa !11
  %1260 = load i64, ptr %9, align 8, !tbaa !11
  %1261 = sub nsw i64 %1260, 1
  %1262 = icmp sle i64 %1259, %1261
  br i1 %1262, label %1263, label %1278

1263:                                             ; preds = %1258
  %1264 = load i64, ptr %11, align 8, !tbaa !11
  %1265 = load i64, ptr %12, align 8, !tbaa !11
  %1266 = load ptr, ptr %4, align 8, !tbaa !9
  %1267 = call noundef double @_ZN11alglib_impl9sparsegetEPKNS_12sparsematrixEllPNS_8ae_stateE(ptr noundef %24, i64 noundef %1264, i64 noundef %1265, ptr noundef %1266)
  %1268 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %21, i32 0, i32 6
  %1269 = load ptr, ptr %1268, align 8, !tbaa !15
  %1270 = load i64, ptr %11, align 8, !tbaa !11
  %1271 = getelementptr inbounds ptr, ptr %1269, i64 %1270
  %1272 = load ptr, ptr %1271, align 8, !tbaa !9
  %1273 = load i64, ptr %12, align 8, !tbaa !11
  %1274 = getelementptr inbounds double, ptr %1272, i64 %1273
  store double %1267, ptr %1274, align 8, !tbaa !13
  br label %1275

1275:                                             ; preds = %1263
  %1276 = load i64, ptr %12, align 8, !tbaa !11
  %1277 = add nsw i64 %1276, 1
  store i64 %1277, ptr %12, align 8, !tbaa !11
  br label %1258, !llvm.loop !62

1278:                                             ; preds = %1258
  br label %1279

1279:                                             ; preds = %1278
  %1280 = load i64, ptr %11, align 8, !tbaa !11
  %1281 = add nsw i64 %1280, 1
  store i64 %1281, ptr %11, align 8, !tbaa !11
  br label %1252, !llvm.loop !63

1282:                                             ; preds = %1252
  %1283 = load i64, ptr %10, align 8, !tbaa !11
  %1284 = load i64, ptr %9, align 8, !tbaa !11
  %1285 = load i64, ptr %34, align 8, !tbaa !11
  %1286 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl26pcatruncatedsubspacesparseEPKNS_12sparsematrixEllldlPNS_9ae_vectorEPNS_9ae_matrixEPNS_8ae_stateE(ptr noundef %24, i64 noundef %1283, i64 noundef %1284, i64 noundef %1285, double noundef 1.000000e-09, i64 noundef 0, ptr noundef %15, ptr noundef %19, ptr noundef %1286)
  store i64 0, ptr %11, align 8, !tbaa !11
  br label %1287

1287:                                             ; preds = %1335, %1282
  %1288 = load i64, ptr %11, align 8, !tbaa !11
  %1289 = load i64, ptr %34, align 8, !tbaa !11
  %1290 = sub nsw i64 %1289, 1
  %1291 = icmp sle i64 %1288, %1290
  br i1 %1291, label %1292, label %1338

1292:                                             ; preds = %1287
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %1293

1293:                                             ; preds = %1331, %1292
  %1294 = load i64, ptr %12, align 8, !tbaa !11
  %1295 = load i64, ptr %34, align 8, !tbaa !11
  %1296 = sub nsw i64 %1295, 1
  %1297 = icmp sle i64 %1294, %1296
  br i1 %1297, label %1298, label %1334

1298:                                             ; preds = %1293
  %1299 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %1300 = load ptr, ptr %1299, align 8, !tbaa !15
  %1301 = getelementptr inbounds ptr, ptr %1300, i64 0
  %1302 = load ptr, ptr %1301, align 8, !tbaa !9
  %1303 = load i64, ptr %11, align 8, !tbaa !11
  %1304 = getelementptr inbounds double, ptr %1302, i64 %1303
  %1305 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 2
  %1306 = load i64, ptr %1305, align 8, !tbaa !20
  %1307 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %1308 = load ptr, ptr %1307, align 8, !tbaa !15
  %1309 = getelementptr inbounds ptr, ptr %1308, i64 0
  %1310 = load ptr, ptr %1309, align 8, !tbaa !9
  %1311 = load i64, ptr %12, align 8, !tbaa !11
  %1312 = getelementptr inbounds double, ptr %1310, i64 %1311
  %1313 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 2
  %1314 = load i64, ptr %1313, align 8, !tbaa !20
  %1315 = load i64, ptr %9, align 8, !tbaa !11
  %1316 = sub nsw i64 %1315, 1
  %1317 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1316)
  %1318 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1304, i64 noundef %1306, ptr noundef %1312, i64 noundef %1314, i64 noundef %1317)
  store double %1318, ptr %22, align 8, !tbaa !13
  %1319 = load i64, ptr %11, align 8, !tbaa !11
  %1320 = load i64, ptr %12, align 8, !tbaa !11
  %1321 = icmp eq i64 %1319, %1320
  br i1 %1321, label %1322, label %1325

1322:                                             ; preds = %1298
  %1323 = load double, ptr %22, align 8, !tbaa !13
  %1324 = fsub double %1323, 1.000000e+00
  store double %1324, ptr %22, align 8, !tbaa !13
  br label %1325

1325:                                             ; preds = %1322, %1298
  %1326 = load double, ptr %22, align 8, !tbaa !13
  %1327 = load ptr, ptr %4, align 8, !tbaa !9
  %1328 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1326, ptr noundef %1327)
  %1329 = load double, ptr %8, align 8, !tbaa !13
  %1330 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1328, double noundef %1329)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %44, i1 noundef zeroext %1330, ptr noundef @.str.19, i32 noundef 127315, ptr noundef @.str.1003)
  br label %1331

1331:                                             ; preds = %1325
  %1332 = load i64, ptr %12, align 8, !tbaa !11
  %1333 = add nsw i64 %1332, 1
  store i64 %1333, ptr %12, align 8, !tbaa !11
  br label %1293, !llvm.loop !64

1334:                                             ; preds = %1293
  br label %1335

1335:                                             ; preds = %1334
  %1336 = load i64, ptr %11, align 8, !tbaa !11
  %1337 = add nsw i64 %1336, 1
  store i64 %1337, ptr %11, align 8, !tbaa !11
  br label %1287, !llvm.loop !65

1338:                                             ; preds = %1287
  %1339 = load i64, ptr %10, align 8, !tbaa !11
  %1340 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %17, i64 noundef %1339, ptr noundef %1340)
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %1341

1341:                                             ; preds = %1417, %1338
  %1342 = load i64, ptr %13, align 8, !tbaa !11
  %1343 = load i64, ptr %34, align 8, !tbaa !11
  %1344 = sub nsw i64 %1343, 1
  %1345 = icmp sle i64 %1342, %1344
  br i1 %1345, label %1346, label %1420

1346:                                             ; preds = %1341
  store i64 0, ptr %11, align 8, !tbaa !11
  br label %1347

1347:                                             ; preds = %1376, %1346
  %1348 = load i64, ptr %11, align 8, !tbaa !11
  %1349 = load i64, ptr %10, align 8, !tbaa !11
  %1350 = sub nsw i64 %1349, 1
  %1351 = icmp sle i64 %1348, %1350
  br i1 %1351, label %1352, label %1379

1352:                                             ; preds = %1347
  %1353 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %21, i32 0, i32 6
  %1354 = load ptr, ptr %1353, align 8, !tbaa !15
  %1355 = load i64, ptr %11, align 8, !tbaa !11
  %1356 = getelementptr inbounds ptr, ptr %1354, i64 %1355
  %1357 = load ptr, ptr %1356, align 8, !tbaa !9
  %1358 = getelementptr inbounds double, ptr %1357, i64 0
  %1359 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 6
  %1360 = load ptr, ptr %1359, align 8, !tbaa !15
  %1361 = getelementptr inbounds ptr, ptr %1360, i64 0
  %1362 = load ptr, ptr %1361, align 8, !tbaa !9
  %1363 = load i64, ptr %13, align 8, !tbaa !11
  %1364 = getelementptr inbounds double, ptr %1362, i64 %1363
  %1365 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %19, i32 0, i32 2
  %1366 = load i64, ptr %1365, align 8, !tbaa !20
  %1367 = load i64, ptr %9, align 8, !tbaa !11
  %1368 = sub nsw i64 %1367, 1
  %1369 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1368)
  %1370 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %1358, i64 noundef 1, ptr noundef %1364, i64 noundef %1366, i64 noundef %1369)
  store double %1370, ptr %22, align 8, !tbaa !13
  %1371 = load double, ptr %22, align 8, !tbaa !13
  %1372 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %1373 = load ptr, ptr %1372, align 8, !tbaa !15
  %1374 = load i64, ptr %11, align 8, !tbaa !11
  %1375 = getelementptr inbounds double, ptr %1373, i64 %1374
  store double %1371, ptr %1375, align 8, !tbaa !13
  br label %1376

1376:                                             ; preds = %1352
  %1377 = load i64, ptr %11, align 8, !tbaa !11
  %1378 = add nsw i64 %1377, 1
  store i64 %1378, ptr %11, align 8, !tbaa !11
  br label %1347, !llvm.loop !66

1379:                                             ; preds = %1347
  %1380 = load i64, ptr %10, align 8, !tbaa !11
  %1381 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testpcaunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef %17, i64 noundef %1380, ptr noundef %25, ptr noundef %26, ptr noundef %27, ptr noundef %28, ptr noundef %1381)
  %1382 = load i64, ptr %10, align 8, !tbaa !11
  %1383 = icmp ne i64 %1382, 1
  br i1 %1383, label %1384, label %1395

1384:                                             ; preds = %1379
  %1385 = load double, ptr %27, align 8, !tbaa !13
  %1386 = load ptr, ptr %4, align 8, !tbaa !9
  %1387 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %1385, ptr noundef %1386)
  %1388 = load i64, ptr %10, align 8, !tbaa !11
  %1389 = sitofp i64 %1388 to double
  %1390 = fmul double %1387, %1389
  %1391 = load i64, ptr %10, align 8, !tbaa !11
  %1392 = sub nsw i64 %1391, 1
  %1393 = sitofp i64 %1392 to double
  %1394 = fdiv double %1390, %1393
  store double %1394, ptr %22, align 8, !tbaa !13
  br label %1396

1395:                                             ; preds = %1379
  store double 0.000000e+00, ptr %22, align 8, !tbaa !13
  br label %1396

1396:                                             ; preds = %1395, %1384
  %1397 = load double, ptr %22, align 8, !tbaa !13
  %1398 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1399 = load ptr, ptr %1398, align 8, !tbaa !15
  %1400 = load i64, ptr %13, align 8, !tbaa !11
  %1401 = getelementptr inbounds double, ptr %1399, i64 %1400
  %1402 = load double, ptr %1401, align 8, !tbaa !13
  %1403 = fsub double %1397, %1402
  %1404 = load ptr, ptr %4, align 8, !tbaa !9
  %1405 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1403, ptr noundef %1404)
  %1406 = load double, ptr %8, align 8, !tbaa !13
  %1407 = load double, ptr %22, align 8, !tbaa !13
  %1408 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1409 = load ptr, ptr %1408, align 8, !tbaa !15
  %1410 = load i64, ptr %13, align 8, !tbaa !11
  %1411 = getelementptr inbounds double, ptr %1409, i64 %1410
  %1412 = load double, ptr %1411, align 8, !tbaa !13
  %1413 = load ptr, ptr %4, align 8, !tbaa !9
  %1414 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %1407, double noundef %1412, double noundef 1.000000e+00, ptr noundef %1413)
  %1415 = fmul double %1406, %1414
  %1416 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1405, double noundef %1415)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %44, i1 noundef zeroext %1416, ptr noundef @.str.19, i32 noundef 127339, ptr noundef @.str.1004)
  br label %1417

1417:                                             ; preds = %1396
  %1418 = load i64, ptr %13, align 8, !tbaa !11
  %1419 = add nsw i64 %1418, 1
  store i64 %1419, ptr %13, align 8, !tbaa !11
  br label %1341, !llvm.loop !67

1420:                                             ; preds = %1341
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %1421

1421:                                             ; preds = %1443, %1420
  %1422 = load i64, ptr %13, align 8, !tbaa !11
  %1423 = load i64, ptr %34, align 8, !tbaa !11
  %1424 = sub nsw i64 %1423, 2
  %1425 = icmp sle i64 %1422, %1424
  br i1 %1425, label %1426, label %1446

1426:                                             ; preds = %1421
  %1427 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1428 = load ptr, ptr %1427, align 8, !tbaa !15
  %1429 = load i64, ptr %13, align 8, !tbaa !11
  %1430 = getelementptr inbounds double, ptr %1428, i64 %1429
  %1431 = load double, ptr %1430, align 8, !tbaa !13
  %1432 = load ptr, ptr %4, align 8, !tbaa !9
  %1433 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1431, ptr noundef %1432)
  %1434 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1435 = load ptr, ptr %1434, align 8, !tbaa !15
  %1436 = load i64, ptr %13, align 8, !tbaa !11
  %1437 = add nsw i64 %1436, 1
  %1438 = getelementptr inbounds double, ptr %1435, i64 %1437
  %1439 = load double, ptr %1438, align 8, !tbaa !13
  %1440 = load ptr, ptr %4, align 8, !tbaa !9
  %1441 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1439, ptr noundef %1440)
  %1442 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1433, double noundef %1441)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %44, i1 noundef zeroext %1442, ptr noundef @.str.19, i32 noundef 127343, ptr noundef @.str.1005)
  br label %1443

1443:                                             ; preds = %1426
  %1444 = load i64, ptr %13, align 8, !tbaa !11
  %1445 = add nsw i64 %1444, 1
  store i64 %1445, ptr %13, align 8, !tbaa !11
  br label %1421, !llvm.loop !68

1446:                                             ; preds = %1421
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %1447

1447:                                             ; preds = %1479, %1446
  %1448 = load i64, ptr %13, align 8, !tbaa !11
  %1449 = load i64, ptr %34, align 8, !tbaa !11
  %1450 = sub nsw i64 %1449, 1
  %1451 = icmp sle i64 %1448, %1450
  br i1 %1451, label %1452, label %1482

1452:                                             ; preds = %1447
  %1453 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1454 = load ptr, ptr %1453, align 8, !tbaa !15
  %1455 = load i64, ptr %13, align 8, !tbaa !11
  %1456 = getelementptr inbounds double, ptr %1454, i64 %1455
  %1457 = load double, ptr %1456, align 8, !tbaa !13
  %1458 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %1457, double noundef 0.000000e+00)
  br i1 %1458, label %1459, label %1477

1459:                                             ; preds = %1452
  %1460 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1461 = load ptr, ptr %1460, align 8, !tbaa !15
  %1462 = load i64, ptr %13, align 8, !tbaa !11
  %1463 = getelementptr inbounds double, ptr %1461, i64 %1462
  %1464 = load double, ptr %1463, align 8, !tbaa !13
  %1465 = load ptr, ptr %4, align 8, !tbaa !9
  %1466 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1464, ptr noundef %1465)
  %1467 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1468 = load ptr, ptr %1467, align 8, !tbaa !15
  %1469 = getelementptr inbounds double, ptr %1468, i64 0
  %1470 = load double, ptr %1469, align 8, !tbaa !13
  %1471 = load ptr, ptr %4, align 8, !tbaa !9
  %1472 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1470, ptr noundef %1471)
  %1473 = load ptr, ptr %4, align 8, !tbaa !9
  %1474 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1472, double noundef 1.000000e+00, ptr noundef %1473)
  %1475 = fmul double 5.000000e-13, %1474
  %1476 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1466, double noundef %1475)
  br label %1477

1477:                                             ; preds = %1459, %1452
  %1478 = phi i1 [ false, %1452 ], [ %1476, %1459 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %44, i1 noundef zeroext %1478, ptr noundef @.str.19, i32 noundef 127347, ptr noundef @.str.1006)
  br label %1479

1479:                                             ; preds = %1477
  %1480 = load i64, ptr %13, align 8, !tbaa !11
  %1481 = add nsw i64 %1480, 1
  store i64 %1481, ptr %13, align 8, !tbaa !11
  br label %1447, !llvm.loop !69

1482:                                             ; preds = %1447
  %1483 = load i64, ptr %10, align 8, !tbaa !11
  %1484 = load i64, ptr %9, align 8, !tbaa !11
  %1485 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13pcabuildbasisEPKNS_9ae_matrixEllPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef %21, i64 noundef %1483, i64 noundef %1484, ptr noundef %16, ptr noundef %20, ptr noundef %1485)
  store double 0.000000e+00, ptr %36, align 8, !tbaa !13
  store double 0.000000e+00, ptr %37, align 8, !tbaa !13
  store i64 0, ptr %13, align 8, !tbaa !11
  br label %1486

1486:                                             ; preds = %1506, %1482
  %1487 = load i64, ptr %13, align 8, !tbaa !11
  %1488 = load i64, ptr %34, align 8, !tbaa !11
  %1489 = sub nsw i64 %1488, 1
  %1490 = icmp sle i64 %1487, %1489
  br i1 %1490, label %1491, label %1509

1491:                                             ; preds = %1486
  %1492 = load double, ptr %37, align 8, !tbaa !13
  %1493 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %15, i32 0, i32 4
  %1494 = load ptr, ptr %1493, align 8, !tbaa !15
  %1495 = load i64, ptr %13, align 8, !tbaa !11
  %1496 = getelementptr inbounds double, ptr %1494, i64 %1495
  %1497 = load double, ptr %1496, align 8, !tbaa !13
  %1498 = fadd double %1492, %1497
  store double %1498, ptr %37, align 8, !tbaa !13
  %1499 = load double, ptr %36, align 8, !tbaa !13
  %1500 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %1501 = load ptr, ptr %1500, align 8, !tbaa !15
  %1502 = load i64, ptr %13, align 8, !tbaa !11
  %1503 = getelementptr inbounds double, ptr %1501, i64 %1502
  %1504 = load double, ptr %1503, align 8, !tbaa !13
  %1505 = fadd double %1499, %1504
  store double %1505, ptr %36, align 8, !tbaa !13
  br label %1506

1506:                                             ; preds = %1491
  %1507 = load i64, ptr %13, align 8, !tbaa !11
  %1508 = add nsw i64 %1507, 1
  store i64 %1508, ptr %13, align 8, !tbaa !11
  br label %1486, !llvm.loop !70

1509:                                             ; preds = %1486
  %1510 = load double, ptr %37, align 8, !tbaa !13
  %1511 = load double, ptr %36, align 8, !tbaa !13
  %1512 = fsub double %1510, %1511
  %1513 = load double, ptr %36, align 8, !tbaa !13
  %1514 = load ptr, ptr %4, align 8, !tbaa !9
  %1515 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1513, double noundef 1.000000e+00, ptr noundef %1514)
  %1516 = fdiv double %1512, %1515
  %1517 = load double, ptr %35, align 8, !tbaa !13
  %1518 = fneg double %1517
  %1519 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1516, double noundef %1518)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %44, i1 noundef zeroext %1519, ptr noundef @.str.19, i32 noundef 127362, ptr noundef @.str.1007)
  %1520 = load double, ptr %37, align 8, !tbaa !13
  %1521 = load double, ptr %36, align 8, !tbaa !13
  %1522 = fsub double %1520, %1521
  %1523 = load double, ptr %36, align 8, !tbaa !13
  %1524 = load ptr, ptr %4, align 8, !tbaa !9
  %1525 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %1523, double noundef 1.000000e+00, ptr noundef %1524)
  %1526 = fdiv double %1522, %1525
  %1527 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1526, double noundef 5.000000e-11)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %44, i1 noundef zeroext %1527, ptr noundef @.str.19, i32 noundef 127363, ptr noundef @.str.1008)
  br label %1528

1528:                                             ; preds = %1509
  %1529 = load i64, ptr %10, align 8, !tbaa !11
  %1530 = add nsw i64 %1529, 1
  store i64 %1530, ptr %10, align 8, !tbaa !11
  br label %1174, !llvm.loop !71

1531:                                             ; preds = %1174
  br label %1532

1532:                                             ; preds = %1531
  %1533 = load i64, ptr %9, align 8, !tbaa !11
  %1534 = add nsw i64 %1533, 1
  store i64 %1534, ptr %9, align 8, !tbaa !11
  br label %1169, !llvm.loop !72

1535:                                             ; preds = %1169
  %1536 = load i8, ptr %39, align 1, !tbaa !5, !range !23, !noundef !24
  %1537 = trunc i8 %1536 to i1
  br i1 %1537, label %1553, label %1538

1538:                                             ; preds = %1535
  %1539 = load i8, ptr %40, align 1, !tbaa !5, !range !23, !noundef !24
  %1540 = trunc i8 %1539 to i1
  br i1 %1540, label %1553, label %1541

1541:                                             ; preds = %1538
  %1542 = load i8, ptr %41, align 1, !tbaa !5, !range !23, !noundef !24
  %1543 = trunc i8 %1542 to i1
  br i1 %1543, label %1553, label %1544

1544:                                             ; preds = %1541
  %1545 = load i8, ptr %42, align 1, !tbaa !5, !range !23, !noundef !24
  %1546 = trunc i8 %1545 to i1
  br i1 %1546, label %1553, label %1547

1547:                                             ; preds = %1544
  %1548 = load i8, ptr %43, align 1, !tbaa !5, !range !23, !noundef !24
  %1549 = trunc i8 %1548 to i1
  br i1 %1549, label %1553, label %1550

1550:                                             ; preds = %1547
  %1551 = load i8, ptr %44, align 1, !tbaa !5, !range !23, !noundef !24
  %1552 = trunc i8 %1551 to i1
  br label %1553

1553:                                             ; preds = %1550, %1547, %1544, %1541, %1538, %1535
  %1554 = phi i1 [ true, %1547 ], [ true, %1544 ], [ true, %1541 ], [ true, %1538 ], [ true, %1535 ], [ %1552, %1550 ]
  %1555 = zext i1 %1554 to i8
  store i8 %1555, ptr %45, align 1, !tbaa !5
  %1556 = load i8, ptr %3, align 1, !tbaa !5, !range !23, !noundef !24
  %1557 = trunc i8 %1556 to i1
  br i1 %1557, label %1618, label %1558

1558:                                             ; preds = %1553
  %1559 = call i32 (ptr, ...) @printf(ptr noundef @.str.1009)
  %1560 = call i32 (ptr, ...) @printf(ptr noundef @.str.1010)
  %1561 = call i32 (ptr, ...) @printf(ptr noundef @.str.1011)
  %1562 = load i8, ptr %39, align 1, !tbaa !5, !range !23, !noundef !24
  %1563 = trunc i8 %1562 to i1
  br i1 %1563, label %1566, label %1564

1564:                                             ; preds = %1558
  %1565 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1568

1566:                                             ; preds = %1558
  %1567 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1568

1568:                                             ; preds = %1566, %1564
  %1569 = call i32 (ptr, ...) @printf(ptr noundef @.str.1012)
  %1570 = load i8, ptr %40, align 1, !tbaa !5, !range !23, !noundef !24
  %1571 = trunc i8 %1570 to i1
  br i1 %1571, label %1574, label %1572

1572:                                             ; preds = %1568
  %1573 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1576

1574:                                             ; preds = %1568
  %1575 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1576

1576:                                             ; preds = %1574, %1572
  %1577 = call i32 (ptr, ...) @printf(ptr noundef @.str.1013)
  %1578 = load i8, ptr %41, align 1, !tbaa !5, !range !23, !noundef !24
  %1579 = trunc i8 %1578 to i1
  br i1 %1579, label %1582, label %1580

1580:                                             ; preds = %1576
  %1581 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1584

1582:                                             ; preds = %1576
  %1583 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1584

1584:                                             ; preds = %1582, %1580
  %1585 = call i32 (ptr, ...) @printf(ptr noundef @.str.1014)
  %1586 = load i8, ptr %42, align 1, !tbaa !5, !range !23, !noundef !24
  %1587 = trunc i8 %1586 to i1
  br i1 %1587, label %1590, label %1588

1588:                                             ; preds = %1584
  %1589 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1592

1590:                                             ; preds = %1584
  %1591 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1592

1592:                                             ; preds = %1590, %1588
  %1593 = call i32 (ptr, ...) @printf(ptr noundef @.str.1015)
  %1594 = call i32 (ptr, ...) @printf(ptr noundef @.str.1016)
  %1595 = load i8, ptr %43, align 1, !tbaa !5, !range !23, !noundef !24
  %1596 = trunc i8 %1595 to i1
  br i1 %1596, label %1599, label %1597

1597:                                             ; preds = %1592
  %1598 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1601

1599:                                             ; preds = %1592
  %1600 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1601

1601:                                             ; preds = %1599, %1597
  %1602 = call i32 (ptr, ...) @printf(ptr noundef @.str.1017)
  %1603 = load i8, ptr %44, align 1, !tbaa !5, !range !23, !noundef !24
  %1604 = trunc i8 %1603 to i1
  br i1 %1604, label %1607, label %1605

1605:                                             ; preds = %1601
  %1606 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1609

1607:                                             ; preds = %1601
  %1608 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1609

1609:                                             ; preds = %1607, %1605
  %1610 = load i8, ptr %45, align 1, !tbaa !5, !range !23, !noundef !24
  %1611 = trunc i8 %1610 to i1
  br i1 %1611, label %1612, label %1614

1612:                                             ; preds = %1609
  %1613 = call i32 (ptr, ...) @printf(ptr noundef @.str.46)
  br label %1616

1614:                                             ; preds = %1609
  %1615 = call i32 (ptr, ...) @printf(ptr noundef @.str.47)
  br label %1616

1616:                                             ; preds = %1614, %1612
  %1617 = call i32 (ptr, ...) @printf(ptr noundef @.str.17)
  br label %1618

1618:                                             ; preds = %1616, %1553
  %1619 = load i8, ptr %45, align 1, !tbaa !5, !range !23, !noundef !24
  %1620 = trunc i8 %1619 to i1
  %1621 = xor i1 %1620, true
  %1622 = zext i1 %1621 to i8
  store i8 %1622, ptr %46, align 1, !tbaa !5
  %1623 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1623)
  %1624 = load i8, ptr %46, align 1, !tbaa !5, !range !23, !noundef !24
  %1625 = trunc i8 %1624 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 368, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #5
  ret i1 %1625
}

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!7, !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = distinct !{!19, !17}
!20 = !{!21, !12, i64 16}
!21 = !{!"_ZTSN11alglib_impl9ae_matrixE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !6, i64 32, !22, i64 40, !7, i64 72}
!22 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!23 = !{i8 0, i8 2}
!24 = !{}
!25 = distinct !{!25, !17}
!26 = distinct !{!26, !17}
!27 = distinct !{!27, !17}
!28 = distinct !{!28, !17}
!29 = distinct !{!29, !17}
!30 = distinct !{!30, !17}
!31 = distinct !{!31, !17}
!32 = distinct !{!32, !17}
!33 = distinct !{!33, !17}
!34 = distinct !{!34, !17}
!35 = distinct !{!35, !17}
!36 = distinct !{!36, !17}
!37 = distinct !{!37, !17}
!38 = distinct !{!38, !17}
!39 = distinct !{!39, !17}
!40 = distinct !{!40, !17}
!41 = distinct !{!41, !17}
!42 = distinct !{!42, !17}
!43 = distinct !{!43, !17}
!44 = distinct !{!44, !17}
!45 = distinct !{!45, !17}
!46 = distinct !{!46, !17}
!47 = distinct !{!47, !17}
!48 = distinct !{!48, !17}
!49 = distinct !{!49, !17}
!50 = distinct !{!50, !17}
!51 = distinct !{!51, !17}
!52 = distinct !{!52, !17}
!53 = distinct !{!53, !17}
!54 = distinct !{!54, !17}
!55 = distinct !{!55, !17}
!56 = distinct !{!56, !17}
!57 = distinct !{!57, !17}
!58 = distinct !{!58, !17}
!59 = distinct !{!59, !17}
!60 = distinct !{!60, !17}
!61 = distinct !{!61, !17}
!62 = distinct !{!62, !17}
!63 = distinct !{!63, !17}
!64 = distinct !{!64, !17}
!65 = distinct !{!65, !17}
!66 = distinct !{!66, !17}
!67 = distinct !{!67, !17}
!68 = distinct !{!68, !17}
!69 = distinct !{!69, !17}
!70 = distinct !{!70, !17}
!71 = distinct !{!71, !17}
!72 = distinct !{!72, !17}


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

%"struct.alglib_impl::ae_frame" = type { %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon }
%union.anon = type { ptr }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::sparsematrix" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64, i64 }
%"struct.alglib_impl::hqrndstate" = type { i64, i64, i64 }

@.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.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.991 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.992 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.993 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.994 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.995 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.996 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.997 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.998 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.999 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1000 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1001 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1002 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1003 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1004 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1005 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1006 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1007 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1008 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1009 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.1010 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1011 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1012 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1013 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1014 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1015 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1016 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.1017 = external hidden unnamed_addr constant [42 x i8], align 1
@switch.table._Z7testpcabPN11alglib_impl8ae_stateE = private unnamed_addr constant [3 x i64] [i64 50, i64 100, i64 100], align 8
@switch.table._Z7testpcabPN11alglib_impl8ae_stateE.1 = private unnamed_addr constant [3 x i64] [i64 1, i64 1, i64 25], align 8

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef, double 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 noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #3

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #3

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

declare void @_ZN11alglib_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_impl18_sparsematrix_initEPvPNS_8ae_stateEb(ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #3

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

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

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

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

declare void @_ZN11alglib_impl12sparsecreateElllPNS_12sparsematrixEPNS_8ae_stateE(i64 noundef, i64 noundef, i64 noundef, ptr 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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z7testpcabPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) local_unnamed_addr #5 {
  %3 = alloca %"struct.alglib_impl::ae_frame", align 8
  %4 = alloca %"struct.alglib_impl::ae_vector", align 8
  %5 = alloca %"struct.alglib_impl::ae_vector", align 8
  %6 = alloca %"struct.alglib_impl::ae_vector", align 8
  %7 = alloca %"struct.alglib_impl::ae_vector", align 8
  %8 = alloca %"struct.alglib_impl::ae_vector", align 8
  %9 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %10 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %11 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %12 = alloca %"struct.alglib_impl::sparsematrix", align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca %"struct.alglib_impl::hqrndstate", align 8
  %22 = alloca i8, align 1
  %23 = alloca i8, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 368, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #7
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %1, ptr noundef nonnull %3)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %4, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %5, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %6, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %7, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %8, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %9, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %10, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %11, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(368) %12, i8 0, i64 368, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %21, i8 0, i64 24, i1 false)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %4, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %5, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %6, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %7, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %8, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %9, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %10, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_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_impl18_sparsematrix_initEPvPNS_8ae_stateEb(ptr noundef nonnull %12, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl16_hqrndstate_initEPvPNS_8ae_stateEb(ptr noundef nonnull %21, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %21, ptr noundef %1)
  store i8 0, ptr %22, align 1, !tbaa !5
  store i8 0, ptr %23, align 1, !tbaa !5
  %24 = getelementptr inbounds i8, ptr %4, i64 56
  %25 = getelementptr inbounds i8, ptr %11, i64 72
  %26 = getelementptr inbounds i8, ptr %9, i64 72
  %27 = getelementptr inbounds i8, ptr %9, i64 16
  %28 = getelementptr inbounds i8, ptr %7, i64 56
  %29 = getelementptr inbounds i8, ptr %5, i64 56
  %30 = getelementptr inbounds i8, ptr %8, i64 56
  %31 = getelementptr inbounds i8, ptr %11, i64 16
  br label %.preheader674

.preheader674:                                    ; preds = %2, %174
  %indvars.iv838 = phi i64 [ 2, %2 ], [ %indvars.iv.next839, %174 ]
  %indvars.iv = phi i64 [ 0, %2 ], [ %indvars.iv.next, %174 ]
  %.0705 = phi i64 [ 1, %2 ], [ %175, %174 ]
  %.0504704 = phi i1 [ false, %2 ], [ %170, %174 ]
  %.0507703 = phi i8 [ 0, %2 ], [ %.3510.lcssa, %174 ]
  %.0511702 = phi i1 [ false, %2 ], [ %69, %174 ]
  %32 = add nsw i64 %.0705, -1
  %.not630690 = icmp ult i64 %.0705, 2
  br label %33

33:                                               ; preds = %.preheader674, %172
  %.1505701 = phi i1 [ %.0504704, %.preheader674 ], [ %170, %172 ]
  %.1508700 = phi i8 [ %.0507703, %.preheader674 ], [ %.3510.lcssa, %172 ]
  %.1512699 = phi i1 [ %.0511702, %.preheader674 ], [ %69, %172 ]
  %.0518698 = phi i64 [ 1, %.preheader674 ], [ %173, %172 ]
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.0518698, i64 noundef %.0705, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.0705, ptr noundef %1)
  br label %34

34:                                               ; preds = %33, %34
  %.0552680 = phi i64 [ 0, %33 ], [ %39, %34 ]
  %35 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %36 = call double @llvm.fmuladd.f64(double %35, double 1.500000e+00, double -7.500000e-01)
  %37 = load ptr, ptr %24, align 8, !tbaa !9
  %38 = getelementptr inbounds double, ptr %37, i64 %.0552680
  store double %36, ptr %38, align 8, !tbaa !10
  %39 = add nuw nsw i64 %.0552680, 1
  %exitcond.not = icmp eq i64 %39, %.0705
  br i1 %exitcond.not, label %.preheader671, label %34, !llvm.loop !12

.preheader671:                                    ; preds = %34, %52
  %.0565682 = phi i64 [ %53, %52 ], [ 0, %34 ]
  br label %40

40:                                               ; preds = %.preheader671, %40
  %.1553681 = phi i64 [ 0, %.preheader671 ], [ %51, %40 ]
  %41 = load ptr, ptr %24, align 8, !tbaa !9
  %42 = getelementptr inbounds double, ptr %41, i64 %.1553681
  %43 = load double, ptr %42, align 8, !tbaa !10
  %44 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %45 = call double @llvm.fmuladd.f64(double %44, double 2.000000e+00, double -1.000000e+00)
  %46 = fadd double %43, %45
  %47 = load ptr, ptr %25, align 8, !tbaa !9
  %48 = getelementptr inbounds ptr, ptr %47, i64 %.0565682
  %49 = load ptr, ptr %48, align 8, !tbaa !14
  %50 = getelementptr inbounds double, ptr %49, i64 %.1553681
  store double %46, ptr %50, align 8, !tbaa !10
  %51 = add nuw nsw i64 %.1553681, 1
  %exitcond829.not = icmp eq i64 %51, %.0705
  br i1 %exitcond829.not, label %52, label %40, !llvm.loop !16

52:                                               ; preds = %40
  %53 = add nuw nsw i64 %.0565682, 1
  %exitcond830.not = icmp eq i64 %53, %.0518698
  br i1 %exitcond830.not, label %54, label %.preheader671, !llvm.loop !17

54:                                               ; preds = %52
  call void @_ZN11alglib_impl13pcabuildbasisEPKNS_9ae_matrixEllPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.0518698, i64 noundef %.0705, ptr noundef nonnull %5, ptr noundef nonnull %9, ptr noundef %1)
  br label %.preheader670

.preheader670:                                    ; preds = %54, %71
  %.2513686 = phi i1 [ %.1512699, %54 ], [ %69, %71 ]
  %.1566685 = phi i64 [ 0, %54 ], [ %72, %71 ]
  br label %55

55:                                               ; preds = %.preheader670, %68
  %.3514684 = phi i1 [ %.2513686, %.preheader670 ], [ %69, %68 ]
  %.2554683 = phi i64 [ 0, %.preheader670 ], [ %70, %68 ]
  %56 = load ptr, ptr %26, align 8, !tbaa !9
  %57 = load ptr, ptr %56, align 8, !tbaa !14
  %58 = getelementptr inbounds double, ptr %57, i64 %.1566685
  %59 = load i64, ptr %27, align 8, !tbaa !18
  %60 = getelementptr inbounds double, ptr %57, i64 %.2554683
  %61 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %32)
  %62 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %58, i64 noundef %59, ptr noundef %60, i64 noundef %59, i64 noundef %61)
  br i1 %.3514684, label %68, label %63

63:                                               ; preds = %55
  %64 = icmp eq i64 %.1566685, %.2554683
  %65 = fadd double %62, -1.000000e+00
  %.0533 = select i1 %64, double %65, double %62
  %66 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %.0533, ptr noundef %1)
  %67 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %66, double noundef 5.000000e-11)
  br label %68

68:                                               ; preds = %63, %55
  %69 = phi i1 [ true, %55 ], [ %67, %63 ]
  %70 = add nuw nsw i64 %.2554683, 1
  %exitcond831.not = icmp eq i64 %70, %.0705
  br i1 %exitcond831.not, label %71, label %55, !llvm.loop !22

71:                                               ; preds = %68
  %72 = add nuw nsw i64 %.1566685, 1
  %exitcond832.not = icmp eq i64 %72, %.0705
  br i1 %exitcond832.not, label %73, label %.preheader670, !llvm.loop !23

73:                                               ; preds = %71
  %74 = add nsw i64 %.0518698, -1
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.0518698, ptr noundef %1)
  %.not637 = icmp eq i64 %.0518698, 1
  %75 = uitofp nneg i64 %.0518698 to double
  %76 = sitofp i64 %74 to double
  br label %.preheader669

.preheader672:                                    ; preds = %105
  br i1 %.not630690, label %._crit_edge, label %.lr.ph

.preheader669:                                    ; preds = %73, %105
  %.2509689 = phi i8 [ %.1508700, %73 ], [ %107, %105 ]
  %.0541688 = phi i64 [ 0, %73 ], [ %108, %105 ]
  br label %77

77:                                               ; preds = %.preheader669, %77
  %.2567687 = phi i64 [ 0, %.preheader669 ], [ %89, %77 ]
  %78 = load ptr, ptr %25, align 8, !tbaa !9
  %79 = getelementptr inbounds ptr, ptr %78, i64 %.2567687
  %80 = load ptr, ptr %79, align 8, !tbaa !14
  %81 = load ptr, ptr %26, align 8, !tbaa !9
  %82 = load ptr, ptr %81, align 8, !tbaa !14
  %83 = getelementptr inbounds double, ptr %82, i64 %.0541688
  %84 = load i64, ptr %27, align 8, !tbaa !18
  %85 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %32)
  %86 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %80, i64 noundef 1, ptr noundef %83, i64 noundef %84, i64 noundef %85)
  %87 = load ptr, ptr %28, align 8, !tbaa !9
  %88 = getelementptr inbounds double, ptr %87, i64 %.2567687
  store double %86, ptr %88, align 8, !tbaa !10
  %89 = add nuw nsw i64 %.2567687, 1
  %exitcond833.not = icmp eq i64 %89, %.0518698
  br i1 %exitcond833.not, label %90, label %77, !llvm.loop !24

90:                                               ; preds = %77
  call void @_ZL23testpcaunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.0518698, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef %1)
  br i1 %.not637, label %96, label %91

91:                                               ; preds = %90
  %92 = load double, ptr %15, align 8, !tbaa !10
  %93 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %92, ptr noundef %1)
  %94 = fmul double %93, %75
  %95 = fdiv double %94, %76
  br label %96

96:                                               ; preds = %90, %91
  %.1534 = phi double [ %95, %91 ], [ 0.000000e+00, %90 ]
  %97 = trunc nuw i8 %.2509689 to i1
  br i1 %97, label %105, label %98

98:                                               ; preds = %96
  %99 = load ptr, ptr %29, align 8, !tbaa !9
  %100 = getelementptr inbounds double, ptr %99, i64 %.0541688
  %101 = load double, ptr %100, align 8, !tbaa !10
  %102 = fsub double %.1534, %101
  %103 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %102, ptr noundef %1)
  %104 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %103, double noundef 5.000000e-11)
  br label %105

105:                                              ; preds = %98, %96
  %106 = phi i1 [ true, %96 ], [ %104, %98 ]
  %107 = zext i1 %106 to i8
  %108 = add nuw nsw i64 %.0541688, 1
  %exitcond834.not = icmp eq i64 %108, %.0705
  br i1 %exitcond834.not, label %.preheader672, label %.preheader669, !llvm.loop !25

.lr.ph:                                           ; preds = %.preheader672, %116
  %.3510692 = phi i1 [ %117, %116 ], [ %106, %.preheader672 ]
  %.1542691 = phi i64 [ %118, %116 ], [ 0, %.preheader672 ]
  br i1 %.3510692, label %116, label %109

109:                                              ; preds = %.lr.ph
  %110 = load ptr, ptr %29, align 8, !tbaa !9
  %111 = getelementptr inbounds double, ptr %110, i64 %.1542691
  %112 = load double, ptr %111, align 8, !tbaa !10
  %113 = getelementptr inbounds i8, ptr %111, i64 8
  %114 = load double, ptr %113, align 8, !tbaa !10
  %115 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %112, double noundef %114)
  br label %116

116:                                              ; preds = %109, %.lr.ph
  %117 = phi i1 [ true, %.lr.ph ], [ %115, %109 ]
  %118 = add nuw nsw i64 %.1542691, 1
  %exitcond835.not = icmp eq i64 %118, %indvars.iv
  br i1 %exitcond835.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !26

._crit_edge.loopexit:                             ; preds = %116
  %119 = zext i1 %117 to i8
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader672
  %.3510.lcssa = phi i8 [ %107, %.preheader672 ], [ %119, %._crit_edge.loopexit ]
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.0518698, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0518698, ptr noundef %1)
  br label %120

120:                                              ; preds = %._crit_edge, %120
  %.3568693 = phi i64 [ 0, %._crit_edge ], [ %131, %120 ]
  %121 = load ptr, ptr %25, align 8, !tbaa !9
  %122 = getelementptr inbounds ptr, ptr %121, i64 %.3568693
  %123 = load ptr, ptr %122, align 8, !tbaa !14
  %124 = load ptr, ptr %26, align 8, !tbaa !9
  %125 = load ptr, ptr %124, align 8, !tbaa !14
  %126 = load i64, ptr %27, align 8, !tbaa !18
  %127 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %32)
  %128 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %123, i64 noundef 1, ptr noundef %125, i64 noundef %126, i64 noundef %127)
  %129 = load ptr, ptr %28, align 8, !tbaa !9
  %130 = getelementptr inbounds double, ptr %129, i64 %.3568693
  store double %128, ptr %130, align 8, !tbaa !10
  %131 = add nuw nsw i64 %.3568693, 1
  %exitcond836.not = icmp eq i64 %131, %.0518698
  br i1 %exitcond836.not, label %132, label %120, !llvm.loop !27

132:                                              ; preds = %120
  call void @_ZL23testpcaunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.0518698, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef %1)
  br label %133

133:                                              ; preds = %132, %169
  %.2506697 = phi i1 [ %.1505701, %132 ], [ %170, %169 ]
  %.2543696 = phi i64 [ 0, %132 ], [ %171, %169 ]
  %134 = and i64 %.2543696, 1
  %.not633 = icmp eq i64 %134, 0
  %.0532 = select i1 %.not633, double 1.000000e-03, double -1.000000e-03
  %135 = load ptr, ptr %30, align 8, !tbaa !9
  %136 = load ptr, ptr %28, align 8, !tbaa !9
  %137 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %135, i64 noundef 1, ptr noundef %136, i64 noundef 1, i64 noundef %137)
  %138 = load ptr, ptr %30, align 8, !tbaa !9
  %139 = load ptr, ptr %25, align 8, !tbaa !9
  %140 = load ptr, ptr %139, align 8, !tbaa !14
  %141 = lshr i64 %.2543696, 1
  %142 = getelementptr inbounds double, ptr %140, i64 %141
  %143 = load i64, ptr %31, align 8, !tbaa !18
  %144 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %138, i64 noundef 1, ptr noundef %142, i64 noundef %143, i64 noundef %144, double noundef %.0532)
  br label %145

145:                                              ; preds = %133, %156
  %.2535695 = phi double [ 0.000000e+00, %133 ], [ %.3536, %156 ]
  %.3555694 = phi i64 [ 0, %133 ], [ %158, %156 ]
  %.not635 = icmp eq i64 %.3555694, %141
  %146 = load ptr, ptr %26, align 8, !tbaa !9
  br i1 %.not635, label %151, label %147

147:                                              ; preds = %145
  %148 = getelementptr inbounds ptr, ptr %146, i64 %.3555694
  %149 = load ptr, ptr %148, align 8, !tbaa !14
  %150 = load double, ptr %149, align 8, !tbaa !10
  br label %156

151:                                              ; preds = %145
  %152 = getelementptr inbounds ptr, ptr %146, i64 %141
  %153 = load ptr, ptr %152, align 8, !tbaa !14
  %154 = load double, ptr %153, align 8, !tbaa !10
  %155 = fadd double %.0532, %154
  br label %156

156:                                              ; preds = %147, %151
  %.sink = phi double [ %150, %147 ], [ %155, %151 ]
  %157 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %.sink, ptr noundef %1)
  %.3536 = fadd double %.2535695, %157
  %158 = add nuw nsw i64 %.3555694, 1
  %exitcond837.not = icmp eq i64 %158, %.0705
  br i1 %exitcond837.not, label %159, label %145, !llvm.loop !28

159:                                              ; preds = %156
  %160 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %.3536, ptr noundef %1)
  %161 = fdiv double 1.000000e+00, %160
  %162 = load ptr, ptr %30, align 8, !tbaa !9
  %163 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %74)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %162, i64 noundef 1, i64 noundef %163, double noundef %161)
  call void @_ZL23testpcaunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.0518698, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef %1)
  br i1 %.2506697, label %169, label %164

164:                                              ; preds = %159
  %165 = load double, ptr %19, align 8, !tbaa !10
  %166 = load double, ptr %15, align 8, !tbaa !10
  %167 = fadd double %166, 5.000000e-11
  %168 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %165, double noundef %167)
  br label %169

169:                                              ; preds = %164, %159
  %170 = phi i1 [ true, %159 ], [ %168, %164 ]
  %171 = add nuw nsw i64 %.2543696, 1
  %exitcond840.not = icmp eq i64 %171, %indvars.iv838
  br i1 %exitcond840.not, label %172, label %133, !llvm.loop !29

172:                                              ; preds = %169
  %173 = add nuw nsw i64 %.0518698, 1
  %exitcond841.not = icmp eq i64 %173, 101
  br i1 %exitcond841.not, label %174, label %33, !llvm.loop !30

174:                                              ; preds = %172
  %175 = add nuw nsw i64 %.0705, 1
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %indvars.iv.next839 = add nuw nsw i64 %indvars.iv838, 2
  %exitcond842.not = icmp eq i64 %indvars.iv.next, 10
  br i1 %exitcond842.not, label %.preheader668, label %.preheader674, !llvm.loop !31

.preheader666:                                    ; preds = %196
  %176 = getelementptr inbounds i8, ptr %6, i64 56
  br label %.preheader665

.preheader668:                                    ; preds = %174, %196
  %.1711 = phi i64 [ %197, %196 ], [ 1, %174 ]
  %.4515710 = phi i1 [ %192, %196 ], [ %69, %174 ]
  call void @_ZN11alglib_impl13pcabuildbasisEPKNS_9ae_matrixEllPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef 0, i64 noundef %.1711, ptr noundef nonnull %5, ptr noundef nonnull %9, ptr noundef %1)
  %177 = add nsw i64 %.1711, -1
  br label %.preheader667

.preheader667:                                    ; preds = %.preheader668, %194
  %.5516709 = phi i1 [ %.4515710, %.preheader668 ], [ %192, %194 ]
  %.4569708 = phi i64 [ 0, %.preheader668 ], [ %195, %194 ]
  br label %178

178:                                              ; preds = %.preheader667, %191
  %.6517707 = phi i1 [ %.5516709, %.preheader667 ], [ %192, %191 ]
  %.4556706 = phi i64 [ 0, %.preheader667 ], [ %193, %191 ]
  %179 = load ptr, ptr %26, align 8, !tbaa !9
  %180 = load ptr, ptr %179, align 8, !tbaa !14
  %181 = getelementptr inbounds double, ptr %180, i64 %.4569708
  %182 = load i64, ptr %27, align 8, !tbaa !18
  %183 = getelementptr inbounds double, ptr %180, i64 %.4556706
  %184 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %177)
  %185 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %181, i64 noundef %182, ptr noundef %183, i64 noundef %182, i64 noundef %184)
  br i1 %.6517707, label %191, label %186

186:                                              ; preds = %178
  %187 = icmp eq i64 %.4569708, %.4556706
  %188 = fadd double %185, -1.000000e+00
  %.4537 = select i1 %187, double %188, double %185
  %189 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %.4537, ptr noundef %1)
  %190 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %189, double noundef 5.000000e-11)
  br label %191

191:                                              ; preds = %186, %178
  %192 = phi i1 [ true, %178 ], [ %190, %186 ]
  %193 = add nuw nsw i64 %.4556706, 1
  %exitcond843.not = icmp eq i64 %193, %.1711
  br i1 %exitcond843.not, label %194, label %178, !llvm.loop !32

194:                                              ; preds = %191
  %195 = add nuw nsw i64 %.4569708, 1
  %exitcond844.not = icmp eq i64 %195, %.1711
  br i1 %exitcond844.not, label %196, label %.preheader667, !llvm.loop !33

196:                                              ; preds = %194
  %197 = add nuw nsw i64 %.1711, 1
  %exitcond845.not = icmp eq i64 %197, 11
  br i1 %exitcond845.not, label %.preheader666, label %.preheader668, !llvm.loop !34

.preheader665:                                    ; preds = %.preheader666, %339
  %.2742 = phi i64 [ 1, %.preheader666 ], [ %340, %339 ]
  %198 = add nsw i64 %.2742, -1
  br label %199

199:                                              ; preds = %.preheader665, %._crit_edge738
  %.1519741 = phi i64 [ 1, %.preheader665 ], [ %338, %._crit_edge738 ]
  %200 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %21, i64 noundef %.2742, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.2742, ptr noundef %1)
  br label %201

201:                                              ; preds = %199, %201
  %.5557712 = phi i64 [ 0, %199 ], [ %206, %201 ]
  %202 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %21, ptr noundef %1)
  %203 = fmul double %202, 1.000000e+02
  %204 = load ptr, ptr %24, align 8, !tbaa !9
  %205 = getelementptr inbounds double, ptr %204, i64 %.5557712
  store double %203, ptr %205, align 8, !tbaa !10
  %206 = add nuw nsw i64 %.5557712, 1
  %exitcond846.not = icmp eq i64 %206, %.2742
  br i1 %exitcond846.not, label %207, label %201, !llvm.loop !35

207:                                              ; preds = %201
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.1519741, i64 noundef %.2742, ptr noundef %1)
  br label %.preheader662

.preheader662:                                    ; preds = %207, %219
  %.5570714 = phi i64 [ 0, %207 ], [ %220, %219 ]
  br label %208

208:                                              ; preds = %.preheader662, %208
  %.6558713 = phi i64 [ 0, %.preheader662 ], [ %218, %208 ]
  %209 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %21, ptr noundef %1)
  %210 = load ptr, ptr %24, align 8, !tbaa !9
  %211 = getelementptr inbounds double, ptr %210, i64 %.6558713
  %212 = load double, ptr %211, align 8, !tbaa !10
  %213 = fadd double %209, %212
  %214 = load ptr, ptr %25, align 8, !tbaa !9
  %215 = getelementptr inbounds ptr, ptr %214, i64 %.5570714
  %216 = load ptr, ptr %215, align 8, !tbaa !14
  %217 = getelementptr inbounds double, ptr %216, i64 %.6558713
  store double %213, ptr %217, align 8, !tbaa !10
  %218 = add nuw nsw i64 %.6558713, 1
  %exitcond847.not = icmp eq i64 %218, %.2742
  br i1 %exitcond847.not, label %219, label %208, !llvm.loop !36

219:                                              ; preds = %208
  %220 = add nuw nsw i64 %.5570714, 1
  %exitcond848.not = icmp eq i64 %220, %.1519741
  br i1 %exitcond848.not, label %221, label %.preheader662, !llvm.loop !37

221:                                              ; preds = %219
  %222 = add i64 %200, 1
  %223 = add nsw i64 %.1519741, -1
  call void @_ZN11alglib_impl20pcatruncatedsubspaceEPKNS_9ae_matrixEllldlPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.1519741, i64 noundef %.2742, i64 noundef %222, double noundef 1.000000e-09, i64 noundef 0, ptr noundef nonnull %5, ptr noundef nonnull %9, ptr noundef %1)
  %.not615719 = icmp slt i64 %200, 0
  br i1 %.not615719, label %._crit_edge721.split.thread, label %.preheader661

._crit_edge721.split.thread:                      ; preds = %221
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.1519741, ptr noundef %1)
  br label %._crit_edge731.thread

.preheader661:                                    ; preds = %221, %._crit_edge718
  %.6571720 = phi i64 [ %237, %._crit_edge718 ], [ 0, %221 ]
  br label %224

224:                                              ; preds = %.preheader661, %224
  %.7559716 = phi i64 [ 0, %.preheader661 ], [ %236, %224 ]
  %225 = load ptr, ptr %26, align 8, !tbaa !9
  %226 = load ptr, ptr %225, align 8, !tbaa !14
  %227 = getelementptr inbounds double, ptr %226, i64 %.6571720
  %228 = load i64, ptr %27, align 8, !tbaa !18
  %229 = getelementptr inbounds double, ptr %226, i64 %.7559716
  %230 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %198)
  %231 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %227, i64 noundef %228, ptr noundef %229, i64 noundef %228, i64 noundef %230)
  %232 = icmp eq i64 %.6571720, %.7559716
  %233 = fadd double %231, -1.000000e+00
  %.5538 = select i1 %232, double %233, double %231
  %234 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %.5538, ptr noundef %1)
  %235 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %234, double noundef 5.000000e-11)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %22, i1 noundef zeroext %235, ptr noundef nonnull @.str.19, i32 noundef 127075, ptr noundef nonnull @.str.991)
  %236 = add nuw i64 %.7559716, 1
  %exitcond849.not = icmp eq i64 %.7559716, %200
  br i1 %exitcond849.not, label %._crit_edge718, label %224, !llvm.loop !38

._crit_edge718:                                   ; preds = %224
  %237 = add nuw i64 %.6571720, 1
  %exitcond850.not = icmp eq i64 %.6571720, %200
  br i1 %exitcond850.not, label %._crit_edge721.split, label %.preheader661, !llvm.loop !39

._crit_edge721.split:                             ; preds = %._crit_edge718
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.1519741, ptr noundef %1)
  br i1 %.not615719, label %._crit_edge731.thread, label %.preheader660.lr.ph

.preheader660.lr.ph:                              ; preds = %._crit_edge721.split
  %.not621 = icmp eq i64 %.1519741, 1
  %238 = uitofp nneg i64 %.1519741 to double
  %239 = sitofp i64 %223 to double
  br label %.preheader660

.preheader664:                                    ; preds = %259
  %.not617.not725.not = icmp eq i64 %200, 0
  br i1 %.not617.not725.not, label %.preheader663, label %.lr.ph727

.preheader660:                                    ; preds = %.preheader660.lr.ph, %259
  %.3544724 = phi i64 [ 0, %.preheader660.lr.ph ], [ %266, %259 ]
  br label %240

240:                                              ; preds = %.preheader660, %240
  %.7572722 = phi i64 [ 0, %.preheader660 ], [ %252, %240 ]
  %241 = load ptr, ptr %25, align 8, !tbaa !9
  %242 = getelementptr inbounds ptr, ptr %241, i64 %.7572722
  %243 = load ptr, ptr %242, align 8, !tbaa !14
  %244 = load ptr, ptr %26, align 8, !tbaa !9
  %245 = load ptr, ptr %244, align 8, !tbaa !14
  %246 = getelementptr inbounds double, ptr %245, i64 %.3544724
  %247 = load i64, ptr %27, align 8, !tbaa !18
  %248 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %198)
  %249 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %243, i64 noundef 1, ptr noundef %246, i64 noundef %247, i64 noundef %248)
  %250 = load ptr, ptr %28, align 8, !tbaa !9
  %251 = getelementptr inbounds double, ptr %250, i64 %.7572722
  store double %249, ptr %251, align 8, !tbaa !10
  %252 = add nuw nsw i64 %.7572722, 1
  %exitcond851.not = icmp eq i64 %252, %.1519741
  br i1 %exitcond851.not, label %253, label %240, !llvm.loop !40

253:                                              ; preds = %240
  call void @_ZL23testpcaunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.1519741, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef %1)
  br i1 %.not621, label %259, label %254

254:                                              ; preds = %253
  %255 = load double, ptr %15, align 8, !tbaa !10
  %256 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %255, ptr noundef %1)
  %257 = fmul double %256, %238
  %258 = fdiv double %257, %239
  br label %259

259:                                              ; preds = %253, %254
  %.6539 = phi double [ %258, %254 ], [ 0.000000e+00, %253 ]
  %260 = load ptr, ptr %29, align 8, !tbaa !9
  %261 = getelementptr inbounds double, ptr %260, i64 %.3544724
  %262 = load double, ptr %261, align 8, !tbaa !10
  %263 = fsub double %.6539, %262
  %264 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %263, ptr noundef %1)
  %265 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %264, double noundef 5.000000e-11)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %22, i1 noundef zeroext %265, ptr noundef nonnull @.str.19, i32 noundef 127099, ptr noundef nonnull @.str.992)
  %266 = add nuw i64 %.3544724, 1
  %exitcond852.not = icmp eq i64 %.3544724, %200
  br i1 %exitcond852.not, label %.preheader664, label %.preheader660, !llvm.loop !41

.preheader663:                                    ; preds = %.lr.ph727, %.preheader664
  br i1 %.not615719, label %._crit_edge731.thread, label %.lr.ph730

.lr.ph727:                                        ; preds = %.preheader664, %.lr.ph727
  %.4545726 = phi i64 [ %272, %.lr.ph727 ], [ 0, %.preheader664 ]
  %267 = load ptr, ptr %29, align 8, !tbaa !9
  %268 = getelementptr inbounds double, ptr %267, i64 %.4545726
  %269 = load double, ptr %268, align 8, !tbaa !10
  %270 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %269, ptr noundef %1)
  %271 = load ptr, ptr %29, align 8, !tbaa !9
  %272 = add nuw nsw i64 %.4545726, 1
  %273 = getelementptr inbounds double, ptr %271, i64 %272
  %274 = load double, ptr %273, align 8, !tbaa !10
  %275 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %274, ptr noundef %1)
  %276 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %270, double noundef %275)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %22, i1 noundef zeroext %276, ptr noundef nonnull @.str.19, i32 noundef 127103, ptr noundef nonnull @.str.993)
  %exitcond853.not = icmp eq i64 %272, %200
  br i1 %exitcond853.not, label %.preheader663, label %.lr.ph727, !llvm.loop !42

.lr.ph730:                                        ; preds = %.preheader663, %291
  %.5546729 = phi i64 [ %293, %291 ], [ 0, %.preheader663 ]
  %277 = load ptr, ptr %29, align 8, !tbaa !9
  %278 = getelementptr inbounds double, ptr %277, i64 %.5546729
  %279 = load double, ptr %278, align 8, !tbaa !10
  %280 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %279, double noundef 0.000000e+00)
  br i1 %280, label %281, label %291

281:                                              ; preds = %.lr.ph730
  %282 = load ptr, ptr %29, align 8, !tbaa !9
  %283 = getelementptr inbounds double, ptr %282, i64 %.5546729
  %284 = load double, ptr %283, align 8, !tbaa !10
  %285 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %284, ptr noundef %1)
  %286 = load ptr, ptr %29, align 8, !tbaa !9
  %287 = load double, ptr %286, align 8, !tbaa !10
  %288 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %287, ptr noundef %1)
  %289 = fmul double %288, 5.000000e-13
  %290 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %285, double noundef %289)
  br label %291

291:                                              ; preds = %281, %.lr.ph730
  %292 = phi i1 [ false, %.lr.ph730 ], [ %290, %281 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %22, i1 noundef zeroext %292, ptr noundef nonnull @.str.19, i32 noundef 127107, ptr noundef nonnull @.str.994)
  %293 = add nuw i64 %.5546729, 1
  %exitcond854.not = icmp eq i64 %.5546729, %200
  br i1 %exitcond854.not, label %._crit_edge731, label %.lr.ph730, !llvm.loop !43

._crit_edge731.thread:                            ; preds = %.preheader663, %._crit_edge721.split, %._crit_edge721.split.thread
  call void @_ZN11alglib_impl13pcabuildbasisEPKNS_9ae_matrixEllPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.1519741, i64 noundef %.2742, ptr noundef nonnull %6, ptr noundef nonnull %10, ptr noundef %1)
  br label %._crit_edge738

._crit_edge731:                                   ; preds = %291
  call void @_ZN11alglib_impl13pcabuildbasisEPKNS_9ae_matrixEllPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.1519741, i64 noundef %.2742, ptr noundef nonnull %6, ptr noundef nonnull %10, ptr noundef %1)
  br i1 %.not615719, label %._crit_edge738, label %.lr.ph737

.lr.ph737:                                        ; preds = %._crit_edge731
  %294 = load ptr, ptr %29, align 8, !tbaa !9
  %295 = load ptr, ptr %176, align 8, !tbaa !9
  %296 = add nuw i64 %200, 1
  %xtraiter = and i64 %296, 3
  %297 = icmp ult i64 %200, 3
  br i1 %297, label %._crit_edge738.loopexit.unr-lcssa, label %.lr.ph737.new

.lr.ph737.new:                                    ; preds = %.lr.ph737
  %unroll_iter = and i64 %296, -4
  br label %298

298:                                              ; preds = %298, %.lr.ph737.new
  %.0522735 = phi double [ 0.000000e+00, %.lr.ph737.new ], [ %322, %298 ]
  %.0525734 = phi double [ 0.000000e+00, %.lr.ph737.new ], [ %325, %298 ]
  %.6547733 = phi i64 [ 0, %.lr.ph737.new ], [ %326, %298 ]
  %niter = phi i64 [ 0, %.lr.ph737.new ], [ %niter.next.3, %298 ]
  %299 = getelementptr inbounds double, ptr %294, i64 %.6547733
  %300 = load double, ptr %299, align 8, !tbaa !10
  %301 = fadd double %.0522735, %300
  %302 = getelementptr inbounds double, ptr %295, i64 %.6547733
  %303 = load double, ptr %302, align 8, !tbaa !10
  %304 = fadd double %.0525734, %303
  %305 = or disjoint i64 %.6547733, 1
  %306 = getelementptr inbounds double, ptr %294, i64 %305
  %307 = load double, ptr %306, align 8, !tbaa !10
  %308 = fadd double %301, %307
  %309 = getelementptr inbounds double, ptr %295, i64 %305
  %310 = load double, ptr %309, align 8, !tbaa !10
  %311 = fadd double %304, %310
  %312 = or disjoint i64 %.6547733, 2
  %313 = getelementptr inbounds double, ptr %294, i64 %312
  %314 = load double, ptr %313, align 8, !tbaa !10
  %315 = fadd double %308, %314
  %316 = getelementptr inbounds double, ptr %295, i64 %312
  %317 = load double, ptr %316, align 8, !tbaa !10
  %318 = fadd double %311, %317
  %319 = or disjoint i64 %.6547733, 3
  %320 = getelementptr inbounds double, ptr %294, i64 %319
  %321 = load double, ptr %320, align 8, !tbaa !10
  %322 = fadd double %315, %321
  %323 = getelementptr inbounds double, ptr %295, i64 %319
  %324 = load double, ptr %323, align 8, !tbaa !10
  %325 = fadd double %318, %324
  %326 = add nuw i64 %.6547733, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge738.loopexit.unr-lcssa, label %298, !llvm.loop !44

._crit_edge738.loopexit.unr-lcssa:                ; preds = %298, %.lr.ph737
  %.lcssa924.ph = phi double [ poison, %.lr.ph737 ], [ %322, %298 ]
  %.lcssa923.ph = phi double [ poison, %.lr.ph737 ], [ %325, %298 ]
  %.0522735.unr = phi double [ 0.000000e+00, %.lr.ph737 ], [ %322, %298 ]
  %.0525734.unr = phi double [ 0.000000e+00, %.lr.ph737 ], [ %325, %298 ]
  %.6547733.unr = phi i64 [ 0, %.lr.ph737 ], [ %326, %298 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge738, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge738.loopexit.unr-lcssa, %.epil.preheader
  %.0522735.epil = phi double [ %329, %.epil.preheader ], [ %.0522735.unr, %._crit_edge738.loopexit.unr-lcssa ]
  %.0525734.epil = phi double [ %332, %.epil.preheader ], [ %.0525734.unr, %._crit_edge738.loopexit.unr-lcssa ]
  %.6547733.epil = phi i64 [ %333, %.epil.preheader ], [ %.6547733.unr, %._crit_edge738.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %._crit_edge738.loopexit.unr-lcssa ]
  %327 = getelementptr inbounds double, ptr %294, i64 %.6547733.epil
  %328 = load double, ptr %327, align 8, !tbaa !10
  %329 = fadd double %.0522735.epil, %328
  %330 = getelementptr inbounds double, ptr %295, i64 %.6547733.epil
  %331 = load double, ptr %330, align 8, !tbaa !10
  %332 = fadd double %.0525734.epil, %331
  %333 = add nuw i64 %.6547733.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge738, label %.epil.preheader, !llvm.loop !45

._crit_edge738:                                   ; preds = %._crit_edge738.loopexit.unr-lcssa, %.epil.preheader, %._crit_edge731.thread, %._crit_edge731
  %.0525.lcssa = phi double [ 0.000000e+00, %._crit_edge731 ], [ 0.000000e+00, %._crit_edge731.thread ], [ %.lcssa923.ph, %._crit_edge738.loopexit.unr-lcssa ], [ %332, %.epil.preheader ]
  %.0522.lcssa = phi double [ 0.000000e+00, %._crit_edge731 ], [ 0.000000e+00, %._crit_edge731.thread ], [ %.lcssa924.ph, %._crit_edge738.loopexit.unr-lcssa ], [ %329, %.epil.preheader ]
  %334 = fsub double %.0522.lcssa, %.0525.lcssa
  %335 = fdiv double %334, %.0525.lcssa
  %336 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %335, double noundef -1.000000e-03)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %22, i1 noundef zeroext %336, ptr noundef nonnull @.str.19, i32 noundef 127122, ptr noundef nonnull @.str.995)
  %337 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %335, double noundef 5.000000e-11)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %22, i1 noundef zeroext %337, ptr noundef nonnull @.str.19, i32 noundef 127123, ptr noundef nonnull @.str.996)
  %338 = add nuw nsw i64 %.1519741, 1
  %exitcond856.not = icmp eq i64 %338, 101
  br i1 %exitcond856.not, label %339, label %199, !llvm.loop !47

339:                                              ; preds = %._crit_edge738
  %340 = add nuw nsw i64 %.2742, 1
  %exitcond857.not = icmp eq i64 %340, 11
  br i1 %exitcond857.not, label %.preheader659, label %.preheader665, !llvm.loop !48

.preheader659:                                    ; preds = %339, %._crit_edge778
  %.0521781 = phi i64 [ %513, %._crit_edge778 ], [ 0, %339 ]
  %341 = icmp ult i64 %.0521781, 3
  br i1 %341, label %switch.lookup, label %.thread646

switch.lookup:                                    ; preds = %.preheader659
  %switch.gep = getelementptr inbounds [3 x i64], ptr @switch.table._Z7testpcabPN11alglib_impl8ae_stateE, i64 0, i64 %.0521781
  %switch.load = load i64, ptr %switch.gep, align 8
  %switch.gep918 = getelementptr inbounds [3 x i64], ptr @switch.table._Z7testpcabPN11alglib_impl8ae_stateE.1, i64 0, i64 %.0521781
  %switch.load919 = load i64, ptr %switch.gep918, align 8
  br label %.thread646

.thread646:                                       ; preds = %.preheader659, %switch.lookup
  %.sink901 = phi i64 [ 50, %switch.lookup ], [ 200, %.preheader659 ]
  %.sink900 = phi i64 [ %switch.load, %switch.lookup ], [ 200, %.preheader659 ]
  %.sink898 = phi i64 [ %switch.load919, %switch.lookup ], [ 1, %.preheader659 ]
  %342 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %21, i64 noundef %.sink901, ptr noundef %1)
  %343 = add i64 %342, %.sink900
  %344 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %21, i64 noundef 10, ptr noundef %1)
  %345 = add i64 %344, %.sink898
  %346 = icmp sgt i64 %343, 0
  %347 = icmp sgt i64 %345, 0
  %348 = select i1 %346, i1 %347, i1 false
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %348, ptr noundef nonnull @.str.997, ptr noundef %1)
  %349 = shl nsw i64 %343, 1
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %349, i64 noundef %343, ptr noundef %1)
  br i1 %346, label %.preheader657.us.preheader, label %._crit_edge749.thread

._crit_edge749.thread:                            ; preds = %.thread646
  %350 = load ptr, ptr %25, align 8, !tbaa !9
  %351 = load ptr, ptr %350, align 8, !tbaa !14
  store double 1.000000e+00, ptr %351, align 8, !tbaa !10
  br label %._crit_edge754

.preheader657.us.preheader:                       ; preds = %.thread646
  %smax = call i64 @llvm.smax.i64(i64 %349, i64 1)
  %352 = add i64 %342, -1
  %353 = add i64 %352, %.sink900
  %xtraiter934 = and i64 %343, 3
  %354 = icmp ult i64 %353, 3
  %unroll_iter937 = and i64 %343, 9223372036854775804
  %lcmp.mod936.not = icmp eq i64 %xtraiter934, 0
  br label %.preheader657.us

.preheader657.us:                                 ; preds = %.preheader657.us.preheader, %._crit_edge746.us
  %.8573748.us = phi i64 [ %380, %._crit_edge746.us ], [ 0, %.preheader657.us.preheader ]
  br i1 %354, label %._crit_edge746.us.unr-lcssa, label %.preheader657.us.new

.preheader657.us.new:                             ; preds = %.preheader657.us, %.preheader657.us.new
  %.8560744.us = phi i64 [ %374, %.preheader657.us.new ], [ 0, %.preheader657.us ]
  %niter938 = phi i64 [ %niter938.next.3, %.preheader657.us.new ], [ 0, %.preheader657.us ]
  %355 = load ptr, ptr %25, align 8, !tbaa !9
  %356 = getelementptr inbounds ptr, ptr %355, i64 %.8573748.us
  %357 = load ptr, ptr %356, align 8, !tbaa !14
  %358 = getelementptr inbounds double, ptr %357, i64 %.8560744.us
  store double 0.000000e+00, ptr %358, align 8, !tbaa !10
  %359 = or disjoint i64 %.8560744.us, 1
  %360 = load ptr, ptr %25, align 8, !tbaa !9
  %361 = getelementptr inbounds ptr, ptr %360, i64 %.8573748.us
  %362 = load ptr, ptr %361, align 8, !tbaa !14
  %363 = getelementptr inbounds double, ptr %362, i64 %359
  store double 0.000000e+00, ptr %363, align 8, !tbaa !10
  %364 = or disjoint i64 %.8560744.us, 2
  %365 = load ptr, ptr %25, align 8, !tbaa !9
  %366 = getelementptr inbounds ptr, ptr %365, i64 %.8573748.us
  %367 = load ptr, ptr %366, align 8, !tbaa !14
  %368 = getelementptr inbounds double, ptr %367, i64 %364
  store double 0.000000e+00, ptr %368, align 8, !tbaa !10
  %369 = or disjoint i64 %.8560744.us, 3
  %370 = load ptr, ptr %25, align 8, !tbaa !9
  %371 = getelementptr inbounds ptr, ptr %370, i64 %.8573748.us
  %372 = load ptr, ptr %371, align 8, !tbaa !14
  %373 = getelementptr inbounds double, ptr %372, i64 %369
  store double 0.000000e+00, ptr %373, align 8, !tbaa !10
  %374 = add nuw nsw i64 %.8560744.us, 4
  %niter938.next.3 = add i64 %niter938, 4
  %niter938.ncmp.3 = icmp eq i64 %niter938.next.3, %unroll_iter937
  br i1 %niter938.ncmp.3, label %._crit_edge746.us.unr-lcssa, label %.preheader657.us.new, !llvm.loop !49

._crit_edge746.us.unr-lcssa:                      ; preds = %.preheader657.us.new, %.preheader657.us
  %.8560744.us.unr = phi i64 [ 0, %.preheader657.us ], [ %374, %.preheader657.us.new ]
  br i1 %lcmp.mod936.not, label %._crit_edge746.us, label %.epil.preheader933

.epil.preheader933:                               ; preds = %._crit_edge746.us.unr-lcssa, %.epil.preheader933
  %.8560744.us.epil = phi i64 [ %379, %.epil.preheader933 ], [ %.8560744.us.unr, %._crit_edge746.us.unr-lcssa ]
  %epil.iter935 = phi i64 [ %epil.iter935.next, %.epil.preheader933 ], [ 0, %._crit_edge746.us.unr-lcssa ]
  %375 = load ptr, ptr %25, align 8, !tbaa !9
  %376 = getelementptr inbounds ptr, ptr %375, i64 %.8573748.us
  %377 = load ptr, ptr %376, align 8, !tbaa !14
  %378 = getelementptr inbounds double, ptr %377, i64 %.8560744.us.epil
  store double 0.000000e+00, ptr %378, align 8, !tbaa !10
  %379 = add nuw nsw i64 %.8560744.us.epil, 1
  %epil.iter935.next = add i64 %epil.iter935, 1
  %epil.iter935.cmp.not = icmp eq i64 %epil.iter935.next, %xtraiter934
  br i1 %epil.iter935.cmp.not, label %._crit_edge746.us, label %.epil.preheader933, !llvm.loop !50

._crit_edge746.us:                                ; preds = %.epil.preheader933, %._crit_edge746.us.unr-lcssa
  %380 = add nuw nsw i64 %.8573748.us, 1
  %exitcond859.not = icmp eq i64 %380, %smax
  br i1 %exitcond859.not, label %._crit_edge749, label %.preheader657.us, !llvm.loop !51

._crit_edge749:                                   ; preds = %._crit_edge746.us
  %381 = load ptr, ptr %25, align 8, !tbaa !9
  %382 = load ptr, ptr %381, align 8, !tbaa !14
  store double 1.000000e+00, ptr %382, align 8, !tbaa !10
  %.not605.not750.not = icmp eq i64 %343, 1
  br i1 %.not605.not750.not, label %._crit_edge754, label %.lr.ph753.preheader

.lr.ph753.preheader:                              ; preds = %._crit_edge749
  %383 = add i64 %342, -2
  %xtraiter939 = and i64 %353, 1
  %384 = sub i64 0, %.sink900
  %385 = icmp eq i64 %383, %384
  br i1 %385, label %._crit_edge754.loopexit.unr-lcssa, label %.lr.ph753.preheader.new

.lr.ph753.preheader.new:                          ; preds = %.lr.ph753.preheader
  %unroll_iter942 = and i64 %353, -2
  br label %.lr.ph753

.lr.ph753:                                        ; preds = %.lr.ph753, %.lr.ph753.preheader.new
  %.9574751 = phi i64 [ 1, %.lr.ph753.preheader.new ], [ %406, %.lr.ph753 ]
  %niter943 = phi i64 [ 0, %.lr.ph753.preheader.new ], [ %niter943.next.1, %.lr.ph753 ]
  %386 = load ptr, ptr %25, align 8, !tbaa !9
  %387 = add nsw i64 %.9574751, -1
  %388 = getelementptr inbounds ptr, ptr %386, i64 %387
  %389 = load ptr, ptr %388, align 8, !tbaa !14
  %390 = getelementptr inbounds double, ptr %389, i64 %387
  %391 = load double, ptr %390, align 8, !tbaa !10
  %392 = fmul double %391, 0x3FEE79E79E79E79E
  %393 = getelementptr inbounds ptr, ptr %386, i64 %.9574751
  %394 = load ptr, ptr %393, align 8, !tbaa !14
  %395 = getelementptr inbounds double, ptr %394, i64 %.9574751
  store double %392, ptr %395, align 8, !tbaa !10
  %396 = add nuw nsw i64 %.9574751, 1
  %397 = load ptr, ptr %25, align 8, !tbaa !9
  %398 = getelementptr inbounds ptr, ptr %397, i64 %.9574751
  %399 = load ptr, ptr %398, align 8, !tbaa !14
  %400 = getelementptr inbounds double, ptr %399, i64 %.9574751
  %401 = load double, ptr %400, align 8, !tbaa !10
  %402 = fmul double %401, 0x3FEE79E79E79E79E
  %403 = getelementptr inbounds ptr, ptr %397, i64 %396
  %404 = load ptr, ptr %403, align 8, !tbaa !14
  %405 = getelementptr inbounds double, ptr %404, i64 %396
  store double %402, ptr %405, align 8, !tbaa !10
  %406 = add nuw nsw i64 %.9574751, 2
  %niter943.next.1 = add nuw i64 %niter943, 2
  %niter943.ncmp.1 = icmp eq i64 %niter943.next.1, %unroll_iter942
  br i1 %niter943.ncmp.1, label %._crit_edge754.loopexit.unr-lcssa, label %.lr.ph753, !llvm.loop !52

._crit_edge754.loopexit.unr-lcssa:                ; preds = %.lr.ph753, %.lr.ph753.preheader
  %.9574751.unr = phi i64 [ 1, %.lr.ph753.preheader ], [ %406, %.lr.ph753 ]
  %lcmp.mod941.not = icmp eq i64 %xtraiter939, 0
  br i1 %lcmp.mod941.not, label %._crit_edge754, label %.lr.ph753.epil

.lr.ph753.epil:                                   ; preds = %._crit_edge754.loopexit.unr-lcssa
  %407 = load ptr, ptr %25, align 8, !tbaa !9
  %408 = add nsw i64 %.9574751.unr, -1
  %409 = getelementptr inbounds ptr, ptr %407, i64 %408
  %410 = load ptr, ptr %409, align 8, !tbaa !14
  %411 = getelementptr inbounds double, ptr %410, i64 %408
  %412 = load double, ptr %411, align 8, !tbaa !10
  %413 = fmul double %412, 0x3FEE79E79E79E79E
  %414 = getelementptr inbounds ptr, ptr %407, i64 %.9574751.unr
  %415 = load ptr, ptr %414, align 8, !tbaa !14
  %416 = getelementptr inbounds double, ptr %415, i64 %.9574751.unr
  store double %413, ptr %416, align 8, !tbaa !10
  br label %._crit_edge754

._crit_edge754:                                   ; preds = %.lr.ph753.epil, %._crit_edge754.loopexit.unr-lcssa, %._crit_edge749.thread, %._crit_edge749
  %417 = add nsw i64 %349, -1
  %418 = add nsw i64 %343, -1
  call void @_ZN11alglib_impl31rmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %349, i64 noundef %343, ptr noundef %1)
  call void @_ZN11alglib_impl32rmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %349, i64 noundef %343, ptr noundef %1)
  %419 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %21, ptr noundef %1)
  %420 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %419, double noundef 5.000000e-01)
  %. = select i1 %420, i64 20, i64 0
  call void @_ZN11alglib_impl20pcatruncatedsubspaceEPKNS_9ae_matrixEllldlPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %349, i64 noundef %343, i64 noundef %345, double noundef 0.000000e+00, i64 noundef %., ptr noundef nonnull %5, ptr noundef nonnull %9, ptr noundef %1)
  br i1 %347, label %.preheader656.us, label %._crit_edge761.split.us.thread

._crit_edge761.split.us.thread:                   ; preds = %._crit_edge754
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %349, ptr noundef %1)
  br label %._crit_edge771.thread

.preheader656.us:                                 ; preds = %._crit_edge754, %._crit_edge758.us
  %.10575760.us = phi i64 [ %434, %._crit_edge758.us ], [ 0, %._crit_edge754 ]
  br label %421

421:                                              ; preds = %.preheader656.us, %421
  %.9561756.us = phi i64 [ 0, %.preheader656.us ], [ %433, %421 ]
  %422 = load ptr, ptr %26, align 8, !tbaa !9
  %423 = load ptr, ptr %422, align 8, !tbaa !14
  %424 = getelementptr inbounds double, ptr %423, i64 %.10575760.us
  %425 = load i64, ptr %27, align 8, !tbaa !18
  %426 = getelementptr inbounds double, ptr %423, i64 %.9561756.us
  %427 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %418)
  %428 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %424, i64 noundef %425, ptr noundef %426, i64 noundef %425, i64 noundef %427)
  %429 = icmp eq i64 %.10575760.us, %.9561756.us
  %430 = fadd double %428, -1.000000e+00
  %.7540.us = select i1 %429, double %430, double %428
  %431 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %.7540.us, ptr noundef %1)
  %432 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %431, double noundef 5.000000e-11)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %22, i1 noundef zeroext %432, ptr noundef nonnull @.str.19, i32 noundef 127203, ptr noundef nonnull @.str.998)
  %433 = add nuw nsw i64 %.9561756.us, 1
  %exitcond861.not = icmp eq i64 %433, %345
  br i1 %exitcond861.not, label %._crit_edge758.us, label %421, !llvm.loop !53

._crit_edge758.us:                                ; preds = %421
  %434 = add nuw nsw i64 %.10575760.us, 1
  %exitcond862.not = icmp eq i64 %434, %345
  br i1 %exitcond862.not, label %._crit_edge761.split.us, label %.preheader656.us, !llvm.loop !54

._crit_edge761.split.us:                          ; preds = %._crit_edge758.us
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %349, ptr noundef %1)
  br i1 %347, label %.preheader655.lr.ph, label %._crit_edge771.thread

.preheader655.lr.ph:                              ; preds = %._crit_edge761.split.us
  %435 = sitofp i64 %349 to double
  %436 = sitofp i64 %417 to double
  %smax863 = call i64 @llvm.smax.i64(i64 %349, i64 1)
  br label %.preheader655

._crit_edge771.thread:                            ; preds = %._crit_edge761.split.us, %._crit_edge761.split.us.thread
  call void @_ZN11alglib_impl13pcabuildbasisEPKNS_9ae_matrixEllPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %349, i64 noundef %343, ptr noundef nonnull %6, ptr noundef nonnull %10, ptr noundef %1)
  br label %._crit_edge778

.preheader658:                                    ; preds = %._crit_edge765
  %.not608768 = icmp eq i64 %345, 1
  br i1 %.not608768, label %._crit_edge771, label %.lr.ph770.preheader

.lr.ph770.preheader:                              ; preds = %.preheader658
  %437 = add nsw i64 %345, -2
  br label %.lr.ph770

.preheader655:                                    ; preds = %.preheader655.lr.ph, %._crit_edge765
  %.7548767 = phi i64 [ 0, %.preheader655.lr.ph ], [ %460, %._crit_edge765 ]
  br i1 %346, label %.lr.ph764, label %._crit_edge765

.lr.ph764:                                        ; preds = %.preheader655, %.lr.ph764
  %.11576763 = phi i64 [ %449, %.lr.ph764 ], [ 0, %.preheader655 ]
  %438 = load ptr, ptr %25, align 8, !tbaa !9
  %439 = getelementptr inbounds ptr, ptr %438, i64 %.11576763
  %440 = load ptr, ptr %439, align 8, !tbaa !14
  %441 = load ptr, ptr %26, align 8, !tbaa !9
  %442 = load ptr, ptr %441, align 8, !tbaa !14
  %443 = getelementptr inbounds double, ptr %442, i64 %.7548767
  %444 = load i64, ptr %27, align 8, !tbaa !18
  %445 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %418)
  %446 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %440, i64 noundef 1, ptr noundef %443, i64 noundef %444, i64 noundef %445)
  %447 = load ptr, ptr %28, align 8, !tbaa !9
  %448 = getelementptr inbounds double, ptr %447, i64 %.11576763
  store double %446, ptr %448, align 8, !tbaa !10
  %449 = add nuw nsw i64 %.11576763, 1
  %exitcond864.not = icmp eq i64 %449, %smax863
  br i1 %exitcond864.not, label %._crit_edge765, label %.lr.ph764, !llvm.loop !55

._crit_edge765:                                   ; preds = %.lr.ph764, %.preheader655
  call void @_ZL23testpcaunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %349, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef %1)
  %450 = load double, ptr %15, align 8, !tbaa !10
  %451 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %450, ptr noundef %1)
  %452 = fmul double %451, %435
  %453 = fdiv double %452, %436
  %454 = load ptr, ptr %29, align 8, !tbaa !9
  %455 = getelementptr inbounds double, ptr %454, i64 %.7548767
  %456 = load double, ptr %455, align 8, !tbaa !10
  %457 = fsub double %453, %456
  %458 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %457, ptr noundef %1)
  %459 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %458, double noundef 5.000000e-11)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %22, i1 noundef zeroext %459, ptr noundef nonnull @.str.19, i32 noundef 127227, ptr noundef nonnull @.str.999)
  %460 = add nuw nsw i64 %.7548767, 1
  %exitcond865.not = icmp eq i64 %460, %345
  br i1 %exitcond865.not, label %.preheader658, label %.preheader655, !llvm.loop !56

.lr.ph770:                                        ; preds = %.lr.ph770.preheader, %.lr.ph770
  %.8549769 = phi i64 [ %464, %.lr.ph770 ], [ 0, %.lr.ph770.preheader ]
  %461 = load ptr, ptr %29, align 8, !tbaa !9
  %462 = getelementptr inbounds double, ptr %461, i64 %.8549769
  %463 = load double, ptr %462, align 8, !tbaa !10
  %464 = add nuw nsw i64 %.8549769, 1
  %465 = getelementptr inbounds double, ptr %461, i64 %464
  %466 = load double, ptr %465, align 8, !tbaa !10
  %467 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %463, double noundef %466)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %22, i1 noundef zeroext %467, ptr noundef nonnull @.str.19, i32 noundef 127231, ptr noundef nonnull @.str.1000)
  %exitcond866.not = icmp eq i64 %.8549769, %437
  br i1 %exitcond866.not, label %._crit_edge771, label %.lr.ph770, !llvm.loop !57

._crit_edge771:                                   ; preds = %.lr.ph770, %.preheader658
  call void @_ZN11alglib_impl13pcabuildbasisEPKNS_9ae_matrixEllPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %349, i64 noundef %343, ptr noundef nonnull %6, ptr noundef nonnull %10, ptr noundef %1)
  br i1 %347, label %.lr.ph777, label %._crit_edge778

.lr.ph777:                                        ; preds = %._crit_edge771
  %468 = load ptr, ptr %29, align 8, !tbaa !9
  %469 = load ptr, ptr %176, align 8, !tbaa !9
  %470 = add i64 %344, -1
  %471 = add i64 %470, %.sink898
  %xtraiter945 = and i64 %345, 3
  %472 = icmp ult i64 %471, 3
  br i1 %472, label %._crit_edge778.loopexit.unr-lcssa, label %.lr.ph777.new

.lr.ph777.new:                                    ; preds = %.lr.ph777
  %unroll_iter950 = and i64 %345, 9223372036854775804
  br label %473

473:                                              ; preds = %473, %.lr.ph777.new
  %.1523775 = phi double [ 0.000000e+00, %.lr.ph777.new ], [ %497, %473 ]
  %.1526774 = phi double [ 0.000000e+00, %.lr.ph777.new ], [ %500, %473 ]
  %.9550773 = phi i64 [ 0, %.lr.ph777.new ], [ %501, %473 ]
  %niter951 = phi i64 [ 0, %.lr.ph777.new ], [ %niter951.next.3, %473 ]
  %474 = getelementptr inbounds double, ptr %468, i64 %.9550773
  %475 = load double, ptr %474, align 8, !tbaa !10
  %476 = fadd double %.1523775, %475
  %477 = getelementptr inbounds double, ptr %469, i64 %.9550773
  %478 = load double, ptr %477, align 8, !tbaa !10
  %479 = fadd double %.1526774, %478
  %480 = or disjoint i64 %.9550773, 1
  %481 = getelementptr inbounds double, ptr %468, i64 %480
  %482 = load double, ptr %481, align 8, !tbaa !10
  %483 = fadd double %476, %482
  %484 = getelementptr inbounds double, ptr %469, i64 %480
  %485 = load double, ptr %484, align 8, !tbaa !10
  %486 = fadd double %479, %485
  %487 = or disjoint i64 %.9550773, 2
  %488 = getelementptr inbounds double, ptr %468, i64 %487
  %489 = load double, ptr %488, align 8, !tbaa !10
  %490 = fadd double %483, %489
  %491 = getelementptr inbounds double, ptr %469, i64 %487
  %492 = load double, ptr %491, align 8, !tbaa !10
  %493 = fadd double %486, %492
  %494 = or disjoint i64 %.9550773, 3
  %495 = getelementptr inbounds double, ptr %468, i64 %494
  %496 = load double, ptr %495, align 8, !tbaa !10
  %497 = fadd double %490, %496
  %498 = getelementptr inbounds double, ptr %469, i64 %494
  %499 = load double, ptr %498, align 8, !tbaa !10
  %500 = fadd double %493, %499
  %501 = add nuw nsw i64 %.9550773, 4
  %niter951.next.3 = add i64 %niter951, 4
  %niter951.ncmp.3 = icmp eq i64 %niter951.next.3, %unroll_iter950
  br i1 %niter951.ncmp.3, label %._crit_edge778.loopexit.unr-lcssa, label %473, !llvm.loop !58

._crit_edge778.loopexit.unr-lcssa:                ; preds = %473, %.lr.ph777
  %.lcssa922.ph = phi double [ poison, %.lr.ph777 ], [ %497, %473 ]
  %.lcssa921.ph = phi double [ poison, %.lr.ph777 ], [ %500, %473 ]
  %.1523775.unr = phi double [ 0.000000e+00, %.lr.ph777 ], [ %497, %473 ]
  %.1526774.unr = phi double [ 0.000000e+00, %.lr.ph777 ], [ %500, %473 ]
  %.9550773.unr = phi i64 [ 0, %.lr.ph777 ], [ %501, %473 ]
  %lcmp.mod947.not = icmp eq i64 %xtraiter945, 0
  br i1 %lcmp.mod947.not, label %._crit_edge778, label %.epil.preheader944

.epil.preheader944:                               ; preds = %._crit_edge778.loopexit.unr-lcssa, %.epil.preheader944
  %.1523775.epil = phi double [ %504, %.epil.preheader944 ], [ %.1523775.unr, %._crit_edge778.loopexit.unr-lcssa ]
  %.1526774.epil = phi double [ %507, %.epil.preheader944 ], [ %.1526774.unr, %._crit_edge778.loopexit.unr-lcssa ]
  %.9550773.epil = phi i64 [ %508, %.epil.preheader944 ], [ %.9550773.unr, %._crit_edge778.loopexit.unr-lcssa ]
  %epil.iter946 = phi i64 [ %epil.iter946.next, %.epil.preheader944 ], [ 0, %._crit_edge778.loopexit.unr-lcssa ]
  %502 = getelementptr inbounds double, ptr %468, i64 %.9550773.epil
  %503 = load double, ptr %502, align 8, !tbaa !10
  %504 = fadd double %.1523775.epil, %503
  %505 = getelementptr inbounds double, ptr %469, i64 %.9550773.epil
  %506 = load double, ptr %505, align 8, !tbaa !10
  %507 = fadd double %.1526774.epil, %506
  %508 = add nuw nsw i64 %.9550773.epil, 1
  %epil.iter946.next = add i64 %epil.iter946, 1
  %epil.iter946.cmp.not = icmp eq i64 %epil.iter946.next, %xtraiter945
  br i1 %epil.iter946.cmp.not, label %._crit_edge778, label %.epil.preheader944, !llvm.loop !59

._crit_edge778:                                   ; preds = %._crit_edge778.loopexit.unr-lcssa, %.epil.preheader944, %._crit_edge771.thread, %._crit_edge771
  %.1526.lcssa = phi double [ 0.000000e+00, %._crit_edge771 ], [ 0.000000e+00, %._crit_edge771.thread ], [ %.lcssa921.ph, %._crit_edge778.loopexit.unr-lcssa ], [ %507, %.epil.preheader944 ]
  %.1523.lcssa = phi double [ 0.000000e+00, %._crit_edge771 ], [ 0.000000e+00, %._crit_edge771.thread ], [ %.lcssa922.ph, %._crit_edge778.loopexit.unr-lcssa ], [ %504, %.epil.preheader944 ]
  %509 = fsub double %.1523.lcssa, %.1526.lcssa
  %510 = fdiv double %509, %.1526.lcssa
  %511 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %510, double noundef -1.000000e-03)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %22, i1 noundef zeroext %511, ptr noundef nonnull @.str.19, i32 noundef 127246, ptr noundef nonnull @.str.1001)
  %512 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %510, double noundef 5.000000e-11)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %22, i1 noundef zeroext %512, ptr noundef nonnull @.str.19, i32 noundef 127247, ptr noundef nonnull @.str.1002)
  %513 = add nuw nsw i64 %.0521781, 1
  %exitcond868.not = icmp eq i64 %513, 4
  br i1 %exitcond868.not, label %.preheader653, label %.preheader659, !llvm.loop !60

.preheader653:                                    ; preds = %._crit_edge778, %679
  %.7813 = phi i64 [ %680, %679 ], [ 1, %._crit_edge778 ]
  %514 = add nsw i64 %.7813, -1
  br label %515

515:                                              ; preds = %.preheader653, %._crit_edge809
  %.2520812 = phi i64 [ 1, %.preheader653 ], [ %678, %._crit_edge809 ]
  %516 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %21, i64 noundef %.7813, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.7813, ptr noundef %1)
  br label %517

517:                                              ; preds = %515, %517
  %.10562782 = phi i64 [ 0, %515 ], [ %522, %517 ]
  %518 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %21, ptr noundef %1)
  %519 = fmul double %518, 1.000000e+02
  %520 = load ptr, ptr %24, align 8, !tbaa !9
  %521 = getelementptr inbounds double, ptr %520, i64 %.10562782
  store double %519, ptr %521, align 8, !tbaa !10
  %522 = add nuw nsw i64 %.10562782, 1
  %exitcond869.not = icmp eq i64 %522, %.7813
  br i1 %exitcond869.not, label %523, label %517, !llvm.loop !61

523:                                              ; preds = %517
  call void @_ZN11alglib_impl12sparsecreateElllPNS_12sparsematrixEPNS_8ae_stateE(i64 noundef %.2520812, i64 noundef %.7813, i64 noundef 0, ptr noundef nonnull %12, ptr noundef %1)
  br label %524

524:                                              ; preds = %523, %524
  %.12577783 = phi i64 [ 0, %523 ], [ %537, %524 ]
  %525 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %21, i64 noundef %.7813, ptr noundef %1)
  %526 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %21, ptr noundef %1)
  %527 = load ptr, ptr %24, align 8, !tbaa !9
  %528 = getelementptr inbounds double, ptr %527, i64 %525
  %529 = load double, ptr %528, align 8, !tbaa !10
  %530 = fadd double %526, %529
  call void @_ZN11alglib_impl9sparsesetEPNS_12sparsematrixElldPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %.12577783, i64 noundef %525, double noundef %530, ptr noundef %1)
  %531 = call noundef i64 @_ZN11alglib_impl13hqrnduniformiEPNS_10hqrndstateElPNS_8ae_stateE(ptr noundef nonnull %21, i64 noundef %.7813, ptr noundef %1)
  %532 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %21, ptr noundef %1)
  %533 = load ptr, ptr %24, align 8, !tbaa !9
  %534 = getelementptr inbounds double, ptr %533, i64 %531
  %535 = load double, ptr %534, align 8, !tbaa !10
  %536 = fadd double %532, %535
  call void @_ZN11alglib_impl9sparsesetEPNS_12sparsematrixElldPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %.12577783, i64 noundef %531, double noundef %536, ptr noundef %1)
  %537 = add nuw nsw i64 %.12577783, 1
  %exitcond870.not = icmp eq i64 %537, %.2520812
  br i1 %exitcond870.not, label %538, label %524, !llvm.loop !62

538:                                              ; preds = %524
  %539 = add i64 %516, 1
  %540 = add nsw i64 %.2520812, -1
  %541 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %21, ptr noundef %1)
  %542 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %541, double noundef 0.000000e+00)
  br i1 %542, label %543, label %544

543:                                              ; preds = %538
  call void @_ZN11alglib_impl18sparseconverttocrsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef %1)
  br label %544

544:                                              ; preds = %543, %538
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.2520812, i64 noundef %.7813, ptr noundef %1)
  br label %.preheader650

.preheader650:                                    ; preds = %544, %552
  %.13578785 = phi i64 [ 0, %544 ], [ %553, %552 ]
  br label %545

545:                                              ; preds = %.preheader650, %545
  %.11563784 = phi i64 [ 0, %.preheader650 ], [ %551, %545 ]
  %546 = call noundef double @_ZN11alglib_impl9sparsegetEPKNS_12sparsematrixEllPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %.13578785, i64 noundef %.11563784, ptr noundef %1)
  %547 = load ptr, ptr %25, align 8, !tbaa !9
  %548 = getelementptr inbounds ptr, ptr %547, i64 %.13578785
  %549 = load ptr, ptr %548, align 8, !tbaa !14
  %550 = getelementptr inbounds double, ptr %549, i64 %.11563784
  store double %546, ptr %550, align 8, !tbaa !10
  %551 = add nuw nsw i64 %.11563784, 1
  %exitcond871.not = icmp eq i64 %551, %.7813
  br i1 %exitcond871.not, label %552, label %545, !llvm.loop !63

552:                                              ; preds = %545
  %553 = add nuw nsw i64 %.13578785, 1
  %exitcond872.not = icmp eq i64 %553, %.2520812
  br i1 %exitcond872.not, label %554, label %.preheader650, !llvm.loop !64

554:                                              ; preds = %552
  call void @_ZN11alglib_impl26pcatruncatedsubspacesparseEPKNS_12sparsematrixEllldlPNS_9ae_vectorEPNS_9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %.2520812, i64 noundef %.7813, i64 noundef %539, double noundef 1.000000e-09, i64 noundef 0, ptr noundef nonnull %5, ptr noundef nonnull %9, ptr noundef %1)
  %.not790 = icmp slt i64 %516, 0
  br i1 %.not790, label %._crit_edge792.split.thread, label %.preheader649

._crit_edge792.split.thread:                      ; preds = %554
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.2520812, ptr noundef %1)
  br label %._crit_edge802.thread

.preheader649:                                    ; preds = %554, %._crit_edge789
  %.14791 = phi i64 [ %568, %._crit_edge789 ], [ 0, %554 ]
  br label %555

555:                                              ; preds = %.preheader649, %555
  %.12564787 = phi i64 [ 0, %.preheader649 ], [ %567, %555 ]
  %556 = load ptr, ptr %26, align 8, !tbaa !9
  %557 = load ptr, ptr %556, align 8, !tbaa !14
  %558 = getelementptr inbounds double, ptr %557, i64 %.14791
  %559 = load i64, ptr %27, align 8, !tbaa !18
  %560 = getelementptr inbounds double, ptr %557, i64 %.12564787
  %561 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %514)
  %562 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %558, i64 noundef %559, ptr noundef %560, i64 noundef %559, i64 noundef %561)
  %563 = icmp eq i64 %.14791, %.12564787
  %564 = fadd double %562, -1.000000e+00
  %.9 = select i1 %563, double %564, double %562
  %565 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %.9, ptr noundef %1)
  %566 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %565, double noundef 5.000000e-11)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %23, i1 noundef zeroext %566, ptr noundef nonnull @.str.19, i32 noundef 127315, ptr noundef nonnull @.str.1003)
  %567 = add nuw i64 %.12564787, 1
  %exitcond873.not = icmp eq i64 %.12564787, %516
  br i1 %exitcond873.not, label %._crit_edge789, label %555, !llvm.loop !65

._crit_edge789:                                   ; preds = %555
  %568 = add nuw i64 %.14791, 1
  %exitcond874.not = icmp eq i64 %.14791, %516
  br i1 %exitcond874.not, label %._crit_edge792.split, label %.preheader649, !llvm.loop !66

._crit_edge792.split:                             ; preds = %._crit_edge789
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.2520812, ptr noundef %1)
  br i1 %.not790, label %._crit_edge802.thread, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %._crit_edge792.split
  %.not601 = icmp eq i64 %.2520812, 1
  %569 = uitofp nneg i64 %.2520812 to double
  %570 = sitofp i64 %540 to double
  br label %.preheader

.preheader652:                                    ; preds = %590
  %.not597.not796.not = icmp eq i64 %516, 0
  br i1 %.not597.not796.not, label %.preheader651, label %.lr.ph798

.preheader:                                       ; preds = %.preheader.lr.ph, %590
  %.10551795 = phi i64 [ 0, %.preheader.lr.ph ], [ %602, %590 ]
  br label %571

571:                                              ; preds = %.preheader, %571
  %.15793 = phi i64 [ 0, %.preheader ], [ %583, %571 ]
  %572 = load ptr, ptr %25, align 8, !tbaa !9
  %573 = getelementptr inbounds ptr, ptr %572, i64 %.15793
  %574 = load ptr, ptr %573, align 8, !tbaa !14
  %575 = load ptr, ptr %26, align 8, !tbaa !9
  %576 = load ptr, ptr %575, align 8, !tbaa !14
  %577 = getelementptr inbounds double, ptr %576, i64 %.10551795
  %578 = load i64, ptr %27, align 8, !tbaa !18
  %579 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %514)
  %580 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %574, i64 noundef 1, ptr noundef %577, i64 noundef %578, i64 noundef %579)
  %581 = load ptr, ptr %28, align 8, !tbaa !9
  %582 = getelementptr inbounds double, ptr %581, i64 %.15793
  store double %580, ptr %582, align 8, !tbaa !10
  %583 = add nuw nsw i64 %.15793, 1
  %exitcond875.not = icmp eq i64 %583, %.2520812
  br i1 %exitcond875.not, label %584, label %571, !llvm.loop !67

584:                                              ; preds = %571
  call void @_ZL23testpcaunit_calculatemvPKN11alglib_impl9ae_vectorElPdS3_S3_S3_PNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.2520812, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef %1)
  br i1 %.not601, label %590, label %585

585:                                              ; preds = %584
  %586 = load double, ptr %15, align 8, !tbaa !10
  %587 = call noundef double @_ZN11alglib_impl6ae_sqrEdPNS_8ae_stateE(double noundef %586, ptr noundef %1)
  %588 = fmul double %587, %569
  %589 = fdiv double %588, %570
  br label %590

590:                                              ; preds = %584, %585
  %.10 = phi double [ %589, %585 ], [ 0.000000e+00, %584 ]
  %591 = load ptr, ptr %29, align 8, !tbaa !9
  %592 = getelementptr inbounds double, ptr %591, i64 %.10551795
  %593 = load double, ptr %592, align 8, !tbaa !10
  %594 = fsub double %.10, %593
  %595 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %594, ptr noundef %1)
  %596 = load ptr, ptr %29, align 8, !tbaa !9
  %597 = getelementptr inbounds double, ptr %596, i64 %.10551795
  %598 = load double, ptr %597, align 8, !tbaa !10
  %599 = call noundef double @_ZN11alglib_impl8rmaxabs3EdddPNS_8ae_stateE(double noundef %.10, double noundef %598, double noundef 1.000000e+00, ptr noundef %1)
  %600 = fmul double %599, 5.000000e-11
  %601 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %595, double noundef %600)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %23, i1 noundef zeroext %601, ptr noundef nonnull @.str.19, i32 noundef 127339, ptr noundef nonnull @.str.1004)
  %602 = add nuw i64 %.10551795, 1
  %exitcond876.not = icmp eq i64 %.10551795, %516
  br i1 %exitcond876.not, label %.preheader652, label %.preheader, !llvm.loop !68

.preheader651:                                    ; preds = %.lr.ph798, %.preheader652
  br i1 %.not790, label %._crit_edge802.thread, label %.lr.ph801

.lr.ph798:                                        ; preds = %.preheader652, %.lr.ph798
  %.11797 = phi i64 [ %608, %.lr.ph798 ], [ 0, %.preheader652 ]
  %603 = load ptr, ptr %29, align 8, !tbaa !9
  %604 = getelementptr inbounds double, ptr %603, i64 %.11797
  %605 = load double, ptr %604, align 8, !tbaa !10
  %606 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %605, ptr noundef %1)
  %607 = load ptr, ptr %29, align 8, !tbaa !9
  %608 = add nuw nsw i64 %.11797, 1
  %609 = getelementptr inbounds double, ptr %607, i64 %608
  %610 = load double, ptr %609, align 8, !tbaa !10
  %611 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %610, ptr noundef %1)
  %612 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %606, double noundef %611)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %23, i1 noundef zeroext %612, ptr noundef nonnull @.str.19, i32 noundef 127343, ptr noundef nonnull @.str.1005)
  %exitcond877.not = icmp eq i64 %608, %516
  br i1 %exitcond877.not, label %.preheader651, label %.lr.ph798, !llvm.loop !69

.lr.ph801:                                        ; preds = %.preheader651, %628
  %.12800 = phi i64 [ %630, %628 ], [ 0, %.preheader651 ]
  %613 = load ptr, ptr %29, align 8, !tbaa !9
  %614 = getelementptr inbounds double, ptr %613, i64 %.12800
  %615 = load double, ptr %614, align 8, !tbaa !10
  %616 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %615, double noundef 0.000000e+00)
  br i1 %616, label %617, label %628

617:                                              ; preds = %.lr.ph801
  %618 = load ptr, ptr %29, align 8, !tbaa !9
  %619 = getelementptr inbounds double, ptr %618, i64 %.12800
  %620 = load double, ptr %619, align 8, !tbaa !10
  %621 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %620, ptr noundef %1)
  %622 = load ptr, ptr %29, align 8, !tbaa !9
  %623 = load double, ptr %622, align 8, !tbaa !10
  %624 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %623, ptr noundef %1)
  %625 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %624, double noundef 1.000000e+00, ptr noundef %1)
  %626 = fmul double %625, 5.000000e-13
  %627 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %621, double noundef %626)
  br label %628

628:                                              ; preds = %617, %.lr.ph801
  %629 = phi i1 [ false, %.lr.ph801 ], [ %627, %617 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %23, i1 noundef zeroext %629, ptr noundef nonnull @.str.19, i32 noundef 127347, ptr noundef nonnull @.str.1006)
  %630 = add nuw i64 %.12800, 1
  %exitcond878.not = icmp eq i64 %.12800, %516
  br i1 %exitcond878.not, label %._crit_edge802, label %.lr.ph801, !llvm.loop !70

._crit_edge802.thread:                            ; preds = %.preheader651, %._crit_edge792.split, %._crit_edge792.split.thread
  call void @_ZN11alglib_impl13pcabuildbasisEPKNS_9ae_matrixEllPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.2520812, i64 noundef %.7813, ptr noundef nonnull %6, ptr noundef nonnull %10, ptr noundef %1)
  br label %._crit_edge809

._crit_edge802:                                   ; preds = %628
  call void @_ZN11alglib_impl13pcabuildbasisEPKNS_9ae_matrixEllPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.2520812, i64 noundef %.7813, ptr noundef nonnull %6, ptr noundef nonnull %10, ptr noundef %1)
  br i1 %.not790, label %._crit_edge809, label %.lr.ph808

.lr.ph808:                                        ; preds = %._crit_edge802
  %631 = load ptr, ptr %29, align 8, !tbaa !9
  %632 = load ptr, ptr %176, align 8, !tbaa !9
  %633 = add nuw i64 %516, 1
  %xtraiter953 = and i64 %633, 3
  %634 = icmp ult i64 %516, 3
  br i1 %634, label %._crit_edge809.loopexit.unr-lcssa, label %.lr.ph808.new

.lr.ph808.new:                                    ; preds = %.lr.ph808
  %unroll_iter958 = and i64 %633, -4
  br label %635

635:                                              ; preds = %635, %.lr.ph808.new
  %.2524806 = phi double [ 0.000000e+00, %.lr.ph808.new ], [ %659, %635 ]
  %.2527805 = phi double [ 0.000000e+00, %.lr.ph808.new ], [ %662, %635 ]
  %.13804 = phi i64 [ 0, %.lr.ph808.new ], [ %663, %635 ]
  %niter959 = phi i64 [ 0, %.lr.ph808.new ], [ %niter959.next.3, %635 ]
  %636 = getelementptr inbounds double, ptr %631, i64 %.13804
  %637 = load double, ptr %636, align 8, !tbaa !10
  %638 = fadd double %.2524806, %637
  %639 = getelementptr inbounds double, ptr %632, i64 %.13804
  %640 = load double, ptr %639, align 8, !tbaa !10
  %641 = fadd double %.2527805, %640
  %642 = or disjoint i64 %.13804, 1
  %643 = getelementptr inbounds double, ptr %631, i64 %642
  %644 = load double, ptr %643, align 8, !tbaa !10
  %645 = fadd double %638, %644
  %646 = getelementptr inbounds double, ptr %632, i64 %642
  %647 = load double, ptr %646, align 8, !tbaa !10
  %648 = fadd double %641, %647
  %649 = or disjoint i64 %.13804, 2
  %650 = getelementptr inbounds double, ptr %631, i64 %649
  %651 = load double, ptr %650, align 8, !tbaa !10
  %652 = fadd double %645, %651
  %653 = getelementptr inbounds double, ptr %632, i64 %649
  %654 = load double, ptr %653, align 8, !tbaa !10
  %655 = fadd double %648, %654
  %656 = or disjoint i64 %.13804, 3
  %657 = getelementptr inbounds double, ptr %631, i64 %656
  %658 = load double, ptr %657, align 8, !tbaa !10
  %659 = fadd double %652, %658
  %660 = getelementptr inbounds double, ptr %632, i64 %656
  %661 = load double, ptr %660, align 8, !tbaa !10
  %662 = fadd double %655, %661
  %663 = add nuw i64 %.13804, 4
  %niter959.next.3 = add i64 %niter959, 4
  %niter959.ncmp.3 = icmp eq i64 %niter959.next.3, %unroll_iter958
  br i1 %niter959.ncmp.3, label %._crit_edge809.loopexit.unr-lcssa, label %635, !llvm.loop !71

._crit_edge809.loopexit.unr-lcssa:                ; preds = %635, %.lr.ph808
  %.lcssa920.ph = phi double [ poison, %.lr.ph808 ], [ %659, %635 ]
  %.lcssa.ph = phi double [ poison, %.lr.ph808 ], [ %662, %635 ]
  %.2524806.unr = phi double [ 0.000000e+00, %.lr.ph808 ], [ %659, %635 ]
  %.2527805.unr = phi double [ 0.000000e+00, %.lr.ph808 ], [ %662, %635 ]
  %.13804.unr = phi i64 [ 0, %.lr.ph808 ], [ %663, %635 ]
  %lcmp.mod955.not = icmp eq i64 %xtraiter953, 0
  br i1 %lcmp.mod955.not, label %._crit_edge809, label %.epil.preheader952

.epil.preheader952:                               ; preds = %._crit_edge809.loopexit.unr-lcssa, %.epil.preheader952
  %.2524806.epil = phi double [ %666, %.epil.preheader952 ], [ %.2524806.unr, %._crit_edge809.loopexit.unr-lcssa ]
  %.2527805.epil = phi double [ %669, %.epil.preheader952 ], [ %.2527805.unr, %._crit_edge809.loopexit.unr-lcssa ]
  %.13804.epil = phi i64 [ %670, %.epil.preheader952 ], [ %.13804.unr, %._crit_edge809.loopexit.unr-lcssa ]
  %epil.iter954 = phi i64 [ %epil.iter954.next, %.epil.preheader952 ], [ 0, %._crit_edge809.loopexit.unr-lcssa ]
  %664 = getelementptr inbounds double, ptr %631, i64 %.13804.epil
  %665 = load double, ptr %664, align 8, !tbaa !10
  %666 = fadd double %.2524806.epil, %665
  %667 = getelementptr inbounds double, ptr %632, i64 %.13804.epil
  %668 = load double, ptr %667, align 8, !tbaa !10
  %669 = fadd double %.2527805.epil, %668
  %670 = add nuw i64 %.13804.epil, 1
  %epil.iter954.next = add i64 %epil.iter954, 1
  %epil.iter954.cmp.not = icmp eq i64 %epil.iter954.next, %xtraiter953
  br i1 %epil.iter954.cmp.not, label %._crit_edge809, label %.epil.preheader952, !llvm.loop !72

._crit_edge809:                                   ; preds = %._crit_edge809.loopexit.unr-lcssa, %.epil.preheader952, %._crit_edge802.thread, %._crit_edge802
  %.2527.lcssa = phi double [ 0.000000e+00, %._crit_edge802 ], [ 0.000000e+00, %._crit_edge802.thread ], [ %.lcssa.ph, %._crit_edge809.loopexit.unr-lcssa ], [ %669, %.epil.preheader952 ]
  %.2524.lcssa = phi double [ 0.000000e+00, %._crit_edge802 ], [ 0.000000e+00, %._crit_edge802.thread ], [ %.lcssa920.ph, %._crit_edge809.loopexit.unr-lcssa ], [ %666, %.epil.preheader952 ]
  %671 = fsub double %.2524.lcssa, %.2527.lcssa
  %672 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.2527.lcssa, double noundef 1.000000e+00, ptr noundef %1)
  %673 = fdiv double %671, %672
  %674 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %673, double noundef -1.000000e-03)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %23, i1 noundef zeroext %674, ptr noundef nonnull @.str.19, i32 noundef 127362, ptr noundef nonnull @.str.1007)
  %675 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.2527.lcssa, double noundef 1.000000e+00, ptr noundef %1)
  %676 = fdiv double %671, %675
  %677 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %676, double noundef 5.000000e-11)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %23, i1 noundef zeroext %677, ptr noundef nonnull @.str.19, i32 noundef 127363, ptr noundef nonnull @.str.1008)
  %678 = add nuw nsw i64 %.2520812, 1
  %exitcond880.not = icmp eq i64 %678, 101
  br i1 %exitcond880.not, label %679, label %515, !llvm.loop !73

679:                                              ; preds = %._crit_edge809
  %680 = add nuw nsw i64 %.7813, 1
  %exitcond881.not = icmp eq i64 %680, 11
  br i1 %exitcond881.not, label %681, label %.preheader653, !llvm.loop !74

681:                                              ; preds = %679
  %682 = trunc nuw i8 %.3510.lcssa to i1
  %brmerge = or i1 %170, %682
  %or.cond = select i1 %192, i1 true, i1 %brmerge
  br i1 %or.cond, label %689, label %683

683:                                              ; preds = %681
  %684 = load i8, ptr %22, align 1, !tbaa !5, !range !75, !noundef !76
  %685 = trunc nuw i8 %684 to i1
  br i1 %685, label %689, label %686

686:                                              ; preds = %683
  %687 = load i8, ptr %23, align 1, !tbaa !5, !range !75, !noundef !76
  %688 = trunc nuw i8 %687 to i1
  br label %689

689:                                              ; preds = %686, %683, %681
  %690 = phi i1 [ true, %683 ], [ true, %681 ], [ %688, %686 ]
  br i1 %0, label %714, label %691

691:                                              ; preds = %689
  %692 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1009)
  %693 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1010)
  %694 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1011)
  %695 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  %696 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1012)
  %.str.2..str.3 = select i1 %192, ptr @.str.2, ptr @.str.3
  %697 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2..str.3)
  %698 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1013)
  %699 = trunc nuw i8 %.3510.lcssa to i1
  %.str.2.sink903 = select i1 %699, ptr @.str.2, ptr @.str.3
  %700 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink903)
  %701 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1014)
  %.str.2.sink904 = select i1 %170, ptr @.str.2, ptr @.str.3
  %702 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink904)
  %703 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1015)
  %704 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1016)
  %705 = load i8, ptr %22, align 1, !tbaa !5, !range !75, !noundef !76
  %706 = trunc nuw i8 %705 to i1
  %.str.2.sink905 = select i1 %706, ptr @.str.2, ptr @.str.3
  %707 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink905)
  %708 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1017)
  %709 = load i8, ptr %23, align 1, !tbaa !5, !range !75, !noundef !76
  %710 = trunc nuw i8 %709 to i1
  %.str.2.sink906 = select i1 %710, ptr @.str.2, ptr @.str.3
  %711 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink906)
  %.str.47.sink = select i1 %690, ptr @.str.46, ptr @.str.47
  %712 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.47.sink)
  %713 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17)
  br label %714

714:                                              ; preds = %691, %689
  %715 = xor i1 %690, true
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  ret i1 %715
}

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

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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 = !{!"double", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!15, !15, i64 0}
!15 = !{!"any pointer", !7, i64 0}
!16 = distinct !{!16, !13}
!17 = distinct !{!17, !13}
!18 = !{!19, !20, i64 16}
!19 = !{!"_ZTSN11alglib_impl9ae_matrixE", !20, i64 0, !20, i64 8, !20, i64 16, !20, i64 24, !6, i64 32, !21, i64 40, !7, i64 72}
!20 = !{!"long", !7, i64 0}
!21 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !13}
!24 = distinct !{!24, !13}
!25 = distinct !{!25, !13}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !13}
!31 = distinct !{!31, !13}
!32 = distinct !{!32, !13}
!33 = distinct !{!33, !13}
!34 = distinct !{!34, !13}
!35 = distinct !{!35, !13}
!36 = distinct !{!36, !13}
!37 = distinct !{!37, !13}
!38 = distinct !{!38, !13}
!39 = distinct !{!39, !13}
!40 = distinct !{!40, !13}
!41 = distinct !{!41, !13}
!42 = distinct !{!42, !13}
!43 = distinct !{!43, !13}
!44 = distinct !{!44, !13}
!45 = distinct !{!45, !46}
!46 = !{!"llvm.loop.unroll.disable"}
!47 = distinct !{!47, !13}
!48 = distinct !{!48, !13}
!49 = distinct !{!49, !13}
!50 = distinct !{!50, !46}
!51 = distinct !{!51, !13}
!52 = distinct !{!52, !13}
!53 = distinct !{!53, !13}
!54 = distinct !{!54, !13}
!55 = distinct !{!55, !13}
!56 = distinct !{!56, !13}
!57 = distinct !{!57, !13}
!58 = distinct !{!58, !13}
!59 = distinct !{!59, !46}
!60 = distinct !{!60, !13}
!61 = distinct !{!61, !13}
!62 = distinct !{!62, !13}
!63 = distinct !{!63, !13}
!64 = distinct !{!64, !13}
!65 = distinct !{!65, !13}
!66 = distinct !{!66, !13}
!67 = distinct !{!67, !13}
!68 = distinct !{!68, !13}
!69 = distinct !{!69, !13}
!70 = distinct !{!70, !13}
!71 = distinct !{!71, !13}
!72 = distinct !{!72, !46}
!73 = distinct !{!73, !13}
!74 = distinct !{!74, !13}
!75 = !{i8 0, i8 2}
!76 = !{}


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