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

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

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

@.str.338 = external hidden unnamed_addr constant [36 x i8], align 1

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef, i64 noundef, i64 noundef, double noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, double noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl9rmatrixqrEPNS_9ae_matrixEllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl9rmatrixlqEPNS_9ae_matrixEllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl16rmatrixqrunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl16rmatrixlqunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl9rmatrixbdEPNS_9ae_matrixEllPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl16rmatrixbdunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl20rmatrixbdmultiplybyqEPNS_9ae_matrixEllPNS_9ae_vectorES1_llbbPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, i64 noundef, i1 noundef zeroext, i1 noundef zeroext, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl17rmatrixbdunpackptEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl20rmatrixbdmultiplybypEPNS_9ae_matrixEllPNS_9ae_vectorES1_llbbPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, i64 noundef, i1 noundef zeroext, i1 noundef zeroext, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl24rmatrixbdunpackdiagonalsEPNS_9ae_matrixEllPbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef, ptr noundef, i64 noundef, i1 noundef zeroext, i1 noundef zeroext, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef) #3

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

54:                                               ; preds = %10
  %55 = load i64, ptr %14, align 8, !tbaa !9
  %56 = icmp eq i64 %55, 0
  br i1 %56, label %57, label %61

57:                                               ; preds = %54, %10
  %58 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %58)
  %59 = load i8, ptr %38, align 1, !tbaa !11, !range !13, !noundef !14
  %60 = trunc i8 %59 to i1
  store i1 %60, ptr %11, align 1
  store i32 1, ptr %39, align 4
  br label %708

61:                                               ; preds = %54
  %62 = load i64, ptr %15, align 8, !tbaa !9
  %63 = icmp sge i64 %62, 0
  br i1 %63, label %64, label %67

64:                                               ; preds = %61
  %65 = load i64, ptr %15, align 8, !tbaa !9
  %66 = icmp sle i64 %65, 2
  br label %67

67:                                               ; preds = %64, %61
  %68 = phi i1 [ false, %61 ], [ %66, %64 ]
  %69 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %68, ptr noundef @.str.338, ptr noundef %69)
  %70 = load i64, ptr %16, align 8, !tbaa !9
  %71 = icmp sge i64 %70, 0
  br i1 %71, label %72, label %75

72:                                               ; preds = %67
  %73 = load i64, ptr %16, align 8, !tbaa !9
  %74 = icmp sle i64 %73, 2
  br label %75

75:                                               ; preds = %72, %67
  %76 = phi i1 [ false, %67 ], [ %74, %72 ]
  %77 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %76, ptr noundef @.str.338, ptr noundef %77)
  %78 = load i64, ptr %17, align 8, !tbaa !9
  %79 = icmp sge i64 %78, 0
  br i1 %79, label %80, label %83

80:                                               ; preds = %75
  %81 = load i64, ptr %17, align 8, !tbaa !9
  %82 = icmp sle i64 %81, 2
  br label %83

83:                                               ; preds = %80, %75
  %84 = phi i1 [ false, %75 ], [ %82, %80 ]
  %85 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %84, ptr noundef @.str.338, ptr noundef %85)
  %86 = load i64, ptr %13, align 8, !tbaa !9
  %87 = load i64, ptr %14, align 8, !tbaa !9
  %88 = load ptr, ptr %21, align 8, !tbaa !5
  %89 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %86, i64 noundef %87, ptr noundef %88)
  store i64 %89, ptr %31, align 8, !tbaa !9
  %90 = load ptr, ptr %18, align 8, !tbaa !5
  %91 = load i64, ptr %31, align 8, !tbaa !9
  %92 = add nsw i64 %91, 1
  %93 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %90, i64 noundef %92, ptr noundef %93)
  store i64 0, ptr %32, align 8, !tbaa !9
  store i64 0, ptr %34, align 8, !tbaa !9
  %94 = load i64, ptr %15, align 8, !tbaa !9
  %95 = icmp eq i64 %94, 1
  br i1 %95, label %96, label %107

96:                                               ; preds = %83
  %97 = load i64, ptr %13, align 8, !tbaa !9
  store i64 %97, ptr %34, align 8, !tbaa !9
  %98 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %98, ptr %32, align 8, !tbaa !9
  %99 = load ptr, ptr %19, align 8, !tbaa !5
  %100 = load i64, ptr %34, align 8, !tbaa !9
  %101 = sub nsw i64 %100, 1
  %102 = add nsw i64 %101, 1
  %103 = load i64, ptr %32, align 8, !tbaa !9
  %104 = sub nsw i64 %103, 1
  %105 = add nsw i64 %104, 1
  %106 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %99, i64 noundef %102, i64 noundef %105, ptr noundef %106)
  br label %107

107:                                              ; preds = %96, %83
  %108 = load i64, ptr %15, align 8, !tbaa !9
  %109 = icmp eq i64 %108, 2
  br i1 %109, label %110, label %121

110:                                              ; preds = %107
  %111 = load i64, ptr %13, align 8, !tbaa !9
  store i64 %111, ptr %34, align 8, !tbaa !9
  %112 = load i64, ptr %13, align 8, !tbaa !9
  store i64 %112, ptr %32, align 8, !tbaa !9
  %113 = load ptr, ptr %19, align 8, !tbaa !5
  %114 = load i64, ptr %34, align 8, !tbaa !9
  %115 = sub nsw i64 %114, 1
  %116 = add nsw i64 %115, 1
  %117 = load i64, ptr %32, align 8, !tbaa !9
  %118 = sub nsw i64 %117, 1
  %119 = add nsw i64 %118, 1
  %120 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %113, i64 noundef %116, i64 noundef %119, ptr noundef %120)
  br label %121

121:                                              ; preds = %110, %107
  store i64 0, ptr %33, align 8, !tbaa !9
  store i64 0, ptr %35, align 8, !tbaa !9
  %122 = load i64, ptr %16, align 8, !tbaa !9
  %123 = icmp eq i64 %122, 1
  br i1 %123, label %124, label %135

124:                                              ; preds = %121
  %125 = load i64, ptr %31, align 8, !tbaa !9
  store i64 %125, ptr %33, align 8, !tbaa !9
  %126 = load i64, ptr %14, align 8, !tbaa !9
  store i64 %126, ptr %35, align 8, !tbaa !9
  %127 = load ptr, ptr %20, align 8, !tbaa !5
  %128 = load i64, ptr %33, align 8, !tbaa !9
  %129 = sub nsw i64 %128, 1
  %130 = add nsw i64 %129, 1
  %131 = load i64, ptr %35, align 8, !tbaa !9
  %132 = sub nsw i64 %131, 1
  %133 = add nsw i64 %132, 1
  %134 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %127, i64 noundef %130, i64 noundef %133, ptr noundef %134)
  br label %135

135:                                              ; preds = %124, %121
  %136 = load i64, ptr %16, align 8, !tbaa !9
  %137 = icmp eq i64 %136, 2
  br i1 %137, label %138, label %149

138:                                              ; preds = %135
  %139 = load i64, ptr %14, align 8, !tbaa !9
  store i64 %139, ptr %33, align 8, !tbaa !9
  %140 = load i64, ptr %14, align 8, !tbaa !9
  store i64 %140, ptr %35, align 8, !tbaa !9
  %141 = load ptr, ptr %20, align 8, !tbaa !5
  %142 = load i64, ptr %33, align 8, !tbaa !9
  %143 = sub nsw i64 %142, 1
  %144 = add nsw i64 %143, 1
  %145 = load i64, ptr %35, align 8, !tbaa !9
  %146 = sub nsw i64 %145, 1
  %147 = add nsw i64 %146, 1
  %148 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %141, i64 noundef %144, i64 noundef %147, ptr noundef %148)
  br label %149

149:                                              ; preds = %138, %135
  %150 = load i64, ptr %13, align 8, !tbaa !9
  %151 = sitofp i64 %150 to double
  %152 = load i64, ptr %14, align 8, !tbaa !9
  %153 = sitofp i64 %152 to double
  %154 = fmul double 1.600000e+00, %153
  %155 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %151, double noundef %154)
  br i1 %155, label %156, label %346

156:                                              ; preds = %149
  %157 = load i64, ptr %15, align 8, !tbaa !9
  %158 = icmp eq i64 %157, 0
  br i1 %158, label %159, label %221

159:                                              ; preds = %156
  %160 = load ptr, ptr %12, align 8, !tbaa !5
  %161 = load i64, ptr %13, align 8, !tbaa !9
  %162 = load i64, ptr %14, align 8, !tbaa !9
  %163 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl9rmatrixqrEPNS_9ae_matrixEllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %160, i64 noundef %161, i64 noundef %162, ptr noundef %26, ptr noundef %163)
  store i64 0, ptr %36, align 8, !tbaa !9
  br label %164

164:                                              ; preds = %188, %159
  %165 = load i64, ptr %36, align 8, !tbaa !9
  %166 = load i64, ptr %14, align 8, !tbaa !9
  %167 = sub nsw i64 %166, 1
  %168 = icmp sle i64 %165, %167
  br i1 %168, label %169, label %191

169:                                              ; preds = %164
  store i64 0, ptr %37, align 8, !tbaa !9
  br label %170

170:                                              ; preds = %184, %169
  %171 = load i64, ptr %37, align 8, !tbaa !9
  %172 = load i64, ptr %36, align 8, !tbaa !9
  %173 = sub nsw i64 %172, 1
  %174 = icmp sle i64 %171, %173
  br i1 %174, label %175, label %187

175:                                              ; preds = %170
  %176 = load ptr, ptr %12, align 8, !tbaa !5
  %177 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %176, i32 0, i32 6
  %178 = load ptr, ptr %177, align 8, !tbaa !15
  %179 = load i64, ptr %36, align 8, !tbaa !9
  %180 = getelementptr inbounds ptr, ptr %178, i64 %179
  %181 = load ptr, ptr %180, align 8, !tbaa !5
  %182 = load i64, ptr %37, align 8, !tbaa !9
  %183 = getelementptr inbounds double, ptr %181, i64 %182
  store double 0.000000e+00, ptr %183, align 8, !tbaa !16
  br label %184

184:                                              ; preds = %175
  %185 = load i64, ptr %37, align 8, !tbaa !9
  %186 = add nsw i64 %185, 1
  store i64 %186, ptr %37, align 8, !tbaa !9
  br label %170, !llvm.loop !18

187:                                              ; preds = %170
  br label %188

188:                                              ; preds = %187
  %189 = load i64, ptr %36, align 8, !tbaa !9
  %190 = add nsw i64 %189, 1
  store i64 %190, ptr %36, align 8, !tbaa !9
  br label %164, !llvm.loop !20

191:                                              ; preds = %164
  %192 = load ptr, ptr %12, align 8, !tbaa !5
  %193 = load i64, ptr %14, align 8, !tbaa !9
  %194 = load i64, ptr %14, align 8, !tbaa !9
  %195 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl9rmatrixbdEPNS_9ae_matrixEllPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %192, i64 noundef %193, i64 noundef %194, ptr noundef %24, ptr noundef %25, ptr noundef %195)
  %196 = load ptr, ptr %12, align 8, !tbaa !5
  %197 = load i64, ptr %14, align 8, !tbaa !9
  %198 = load i64, ptr %14, align 8, !tbaa !9
  %199 = load i64, ptr %33, align 8, !tbaa !9
  %200 = load ptr, ptr %20, align 8, !tbaa !5
  %201 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl17rmatrixbdunpackptEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef %196, i64 noundef %197, i64 noundef %198, ptr noundef %25, i64 noundef %199, ptr noundef %200, ptr noundef %201)
  %202 = load ptr, ptr %12, align 8, !tbaa !5
  %203 = load i64, ptr %14, align 8, !tbaa !9
  %204 = load i64, ptr %14, align 8, !tbaa !9
  %205 = load ptr, ptr %18, align 8, !tbaa !5
  %206 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl24rmatrixbdunpackdiagonalsEPNS_9ae_matrixEllPbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef %202, i64 noundef %203, i64 noundef %204, ptr noundef %30, ptr noundef %205, ptr noundef %27, ptr noundef %206)
  %207 = load ptr, ptr %18, align 8, !tbaa !5
  %208 = load i64, ptr %14, align 8, !tbaa !9
  %209 = load i8, ptr %30, align 1, !tbaa !11, !range !13, !noundef !14
  %210 = trunc i8 %209 to i1
  %211 = load ptr, ptr %19, align 8, !tbaa !5
  %212 = load ptr, ptr %12, align 8, !tbaa !5
  %213 = load ptr, ptr %20, align 8, !tbaa !5
  %214 = load i64, ptr %35, align 8, !tbaa !9
  %215 = load ptr, ptr %21, align 8, !tbaa !5
  %216 = call noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef %207, ptr noundef %27, i64 noundef %208, i1 noundef zeroext %210, i1 noundef zeroext false, ptr noundef %211, i64 noundef 0, ptr noundef %212, i64 noundef 0, ptr noundef %213, i64 noundef %214, ptr noundef %215)
  %217 = zext i1 %216 to i8
  store i8 %217, ptr %38, align 1, !tbaa !11
  %218 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %218)
  %219 = load i8, ptr %38, align 1, !tbaa !11, !range !13, !noundef !14
  %220 = trunc i8 %219 to i1
  store i1 %220, ptr %11, align 1
  store i32 1, ptr %39, align 4
  br label %708

221:                                              ; preds = %156
  %222 = load ptr, ptr %12, align 8, !tbaa !5
  %223 = load i64, ptr %13, align 8, !tbaa !9
  %224 = load i64, ptr %14, align 8, !tbaa !9
  %225 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl9rmatrixqrEPNS_9ae_matrixEllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %222, i64 noundef %223, i64 noundef %224, ptr noundef %26, ptr noundef %225)
  %226 = load ptr, ptr %12, align 8, !tbaa !5
  %227 = load i64, ptr %13, align 8, !tbaa !9
  %228 = load i64, ptr %14, align 8, !tbaa !9
  %229 = load i64, ptr %32, align 8, !tbaa !9
  %230 = load ptr, ptr %19, align 8, !tbaa !5
  %231 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl16rmatrixqrunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef %226, i64 noundef %227, i64 noundef %228, ptr noundef %26, i64 noundef %229, ptr noundef %230, ptr noundef %231)
  store i64 0, ptr %36, align 8, !tbaa !9
  br label %232

232:                                              ; preds = %256, %221
  %233 = load i64, ptr %36, align 8, !tbaa !9
  %234 = load i64, ptr %14, align 8, !tbaa !9
  %235 = sub nsw i64 %234, 1
  %236 = icmp sle i64 %233, %235
  br i1 %236, label %237, label %259

237:                                              ; preds = %232
  store i64 0, ptr %37, align 8, !tbaa !9
  br label %238

238:                                              ; preds = %252, %237
  %239 = load i64, ptr %37, align 8, !tbaa !9
  %240 = load i64, ptr %36, align 8, !tbaa !9
  %241 = sub nsw i64 %240, 1
  %242 = icmp sle i64 %239, %241
  br i1 %242, label %243, label %255

243:                                              ; preds = %238
  %244 = load ptr, ptr %12, align 8, !tbaa !5
  %245 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %244, i32 0, i32 6
  %246 = load ptr, ptr %245, align 8, !tbaa !15
  %247 = load i64, ptr %36, align 8, !tbaa !9
  %248 = getelementptr inbounds ptr, ptr %246, i64 %247
  %249 = load ptr, ptr %248, align 8, !tbaa !5
  %250 = load i64, ptr %37, align 8, !tbaa !9
  %251 = getelementptr inbounds double, ptr %249, i64 %250
  store double 0.000000e+00, ptr %251, align 8, !tbaa !16
  br label %252

252:                                              ; preds = %243
  %253 = load i64, ptr %37, align 8, !tbaa !9
  %254 = add nsw i64 %253, 1
  store i64 %254, ptr %37, align 8, !tbaa !9
  br label %238, !llvm.loop !21

255:                                              ; preds = %238
  br label %256

256:                                              ; preds = %255
  %257 = load i64, ptr %36, align 8, !tbaa !9
  %258 = add nsw i64 %257, 1
  store i64 %258, ptr %36, align 8, !tbaa !9
  br label %232, !llvm.loop !22

259:                                              ; preds = %232
  %260 = load ptr, ptr %12, align 8, !tbaa !5
  %261 = load i64, ptr %14, align 8, !tbaa !9
  %262 = load i64, ptr %14, align 8, !tbaa !9
  %263 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl9rmatrixbdEPNS_9ae_matrixEllPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %260, i64 noundef %261, i64 noundef %262, ptr noundef %24, ptr noundef %25, ptr noundef %263)
  %264 = load ptr, ptr %12, align 8, !tbaa !5
  %265 = load i64, ptr %14, align 8, !tbaa !9
  %266 = load i64, ptr %14, align 8, !tbaa !9
  %267 = load i64, ptr %33, align 8, !tbaa !9
  %268 = load ptr, ptr %20, align 8, !tbaa !5
  %269 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl17rmatrixbdunpackptEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef %264, i64 noundef %265, i64 noundef %266, ptr noundef %25, i64 noundef %267, ptr noundef %268, ptr noundef %269)
  %270 = load ptr, ptr %12, align 8, !tbaa !5
  %271 = load i64, ptr %14, align 8, !tbaa !9
  %272 = load i64, ptr %14, align 8, !tbaa !9
  %273 = load ptr, ptr %18, align 8, !tbaa !5
  %274 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl24rmatrixbdunpackdiagonalsEPNS_9ae_matrixEllPbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef %270, i64 noundef %271, i64 noundef %272, ptr noundef %30, ptr noundef %273, ptr noundef %27, ptr noundef %274)
  %275 = load i64, ptr %17, align 8, !tbaa !9
  %276 = icmp slt i64 %275, 1
  br i1 %276, label %277, label %297

277:                                              ; preds = %259
  %278 = load ptr, ptr %12, align 8, !tbaa !5
  %279 = load i64, ptr %14, align 8, !tbaa !9
  %280 = load i64, ptr %14, align 8, !tbaa !9
  %281 = load ptr, ptr %19, align 8, !tbaa !5
  %282 = load i64, ptr %13, align 8, !tbaa !9
  %283 = load i64, ptr %14, align 8, !tbaa !9
  %284 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl20rmatrixbdmultiplybyqEPNS_9ae_matrixEllPNS_9ae_vectorES1_llbbPNS_8ae_stateE(ptr noundef %278, i64 noundef %279, i64 noundef %280, ptr noundef %24, ptr noundef %281, i64 noundef %282, i64 noundef %283, i1 noundef zeroext true, i1 noundef zeroext false, ptr noundef %284)
  %285 = load ptr, ptr %18, align 8, !tbaa !5
  %286 = load i64, ptr %14, align 8, !tbaa !9
  %287 = load i8, ptr %30, align 1, !tbaa !11, !range !13, !noundef !14
  %288 = trunc i8 %287 to i1
  %289 = load ptr, ptr %19, align 8, !tbaa !5
  %290 = load i64, ptr %13, align 8, !tbaa !9
  %291 = load ptr, ptr %12, align 8, !tbaa !5
  %292 = load ptr, ptr %20, align 8, !tbaa !5
  %293 = load i64, ptr %35, align 8, !tbaa !9
  %294 = load ptr, ptr %21, align 8, !tbaa !5
  %295 = call noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef %285, ptr noundef %27, i64 noundef %286, i1 noundef zeroext %288, i1 noundef zeroext false, ptr noundef %289, i64 noundef %290, ptr noundef %291, i64 noundef 0, ptr noundef %292, i64 noundef %293, ptr noundef %294)
  %296 = zext i1 %295 to i8
  store i8 %296, ptr %38, align 1, !tbaa !11
  br label %342

297:                                              ; preds = %259
  %298 = load i64, ptr %13, align 8, !tbaa !9
  %299 = load i64, ptr %14, align 8, !tbaa !9
  %300 = load ptr, ptr %21, align 8, !tbaa !5
  %301 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %298, i64 noundef %299, ptr noundef %300)
  %302 = add nsw i64 %301, 1
  %303 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %28, i64 noundef %302, ptr noundef %303)
  %304 = load ptr, ptr %12, align 8, !tbaa !5
  %305 = load i64, ptr %14, align 8, !tbaa !9
  %306 = load i64, ptr %14, align 8, !tbaa !9
  %307 = load i64, ptr %14, align 8, !tbaa !9
  %308 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl16rmatrixbdunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef %304, i64 noundef %305, i64 noundef %306, ptr noundef %24, i64 noundef %307, ptr noundef %29, ptr noundef %308)
  %309 = load ptr, ptr %19, align 8, !tbaa !5
  %310 = load i64, ptr %13, align 8, !tbaa !9
  %311 = sub nsw i64 %310, 1
  %312 = load i64, ptr %14, align 8, !tbaa !9
  %313 = sub nsw i64 %312, 1
  %314 = load ptr, ptr %12, align 8, !tbaa !5
  %315 = load i64, ptr %13, align 8, !tbaa !9
  %316 = sub nsw i64 %315, 1
  %317 = load i64, ptr %14, align 8, !tbaa !9
  %318 = sub nsw i64 %317, 1
  %319 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl10copymatrixEPNS_9ae_matrixEllllS1_llllPNS_8ae_stateE(ptr noundef %309, i64 noundef 0, i64 noundef %311, i64 noundef 0, i64 noundef %313, ptr noundef %314, i64 noundef 0, i64 noundef %316, i64 noundef 0, i64 noundef %318, ptr noundef %319)
  %320 = load i64, ptr %14, align 8, !tbaa !9
  %321 = sub nsw i64 %320, 1
  %322 = load i64, ptr %14, align 8, !tbaa !9
  %323 = sub nsw i64 %322, 1
  %324 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl16inplacetransposeEPNS_9ae_matrixEllllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %29, i64 noundef 0, i64 noundef %321, i64 noundef 0, i64 noundef %323, ptr noundef %28, ptr noundef %324)
  %325 = load ptr, ptr %18, align 8, !tbaa !5
  %326 = load i64, ptr %14, align 8, !tbaa !9
  %327 = load i8, ptr %30, align 1, !tbaa !11, !range !13, !noundef !14
  %328 = trunc i8 %327 to i1
  %329 = load ptr, ptr %19, align 8, !tbaa !5
  %330 = load i64, ptr %14, align 8, !tbaa !9
  %331 = load ptr, ptr %20, align 8, !tbaa !5
  %332 = load i64, ptr %35, align 8, !tbaa !9
  %333 = load ptr, ptr %21, align 8, !tbaa !5
  %334 = call noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef %325, ptr noundef %27, i64 noundef %326, i1 noundef zeroext %328, i1 noundef zeroext false, ptr noundef %329, i64 noundef 0, ptr noundef %29, i64 noundef %330, ptr noundef %331, i64 noundef %332, ptr noundef %333)
  %335 = zext i1 %334 to i8
  store i8 %335, ptr %38, align 1, !tbaa !11
  %336 = load i64, ptr %13, align 8, !tbaa !9
  %337 = load i64, ptr %14, align 8, !tbaa !9
  %338 = load i64, ptr %14, align 8, !tbaa !9
  %339 = load ptr, ptr %12, align 8, !tbaa !5
  %340 = load ptr, ptr %19, align 8, !tbaa !5
  %341 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %336, i64 noundef %337, i64 noundef %338, double noundef 1.000000e+00, ptr noundef %339, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %29, i64 noundef 0, i64 noundef 0, i64 noundef 1, double noundef 0.000000e+00, ptr noundef %340, i64 noundef 0, i64 noundef 0, ptr noundef %341)
  br label %342

342:                                              ; preds = %297, %277
  %343 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %343)
  %344 = load i8, ptr %38, align 1, !tbaa !11, !range !13, !noundef !14
  %345 = trunc i8 %344 to i1
  store i1 %345, ptr %11, align 1
  store i32 1, ptr %39, align 4
  br label %708

346:                                              ; preds = %149
  %347 = load i64, ptr %14, align 8, !tbaa !9
  %348 = sitofp i64 %347 to double
  %349 = load i64, ptr %13, align 8, !tbaa !9
  %350 = sitofp i64 %349 to double
  %351 = fmul double 1.600000e+00, %350
  %352 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %348, double noundef %351)
  br i1 %352, label %353, label %569

353:                                              ; preds = %346
  %354 = load i64, ptr %16, align 8, !tbaa !9
  %355 = icmp eq i64 %354, 0
  br i1 %355, label %356, label %435

356:                                              ; preds = %353
  %357 = load ptr, ptr %12, align 8, !tbaa !5
  %358 = load i64, ptr %13, align 8, !tbaa !9
  %359 = load i64, ptr %14, align 8, !tbaa !9
  %360 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl9rmatrixlqEPNS_9ae_matrixEllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %357, i64 noundef %358, i64 noundef %359, ptr noundef %26, ptr noundef %360)
  store i64 0, ptr %36, align 8, !tbaa !9
  br label %361

361:                                              ; preds = %387, %356
  %362 = load i64, ptr %36, align 8, !tbaa !9
  %363 = load i64, ptr %13, align 8, !tbaa !9
  %364 = sub nsw i64 %363, 1
  %365 = icmp sle i64 %362, %364
  br i1 %365, label %366, label %390

366:                                              ; preds = %361
  %367 = load i64, ptr %36, align 8, !tbaa !9
  %368 = add nsw i64 %367, 1
  store i64 %368, ptr %37, align 8, !tbaa !9
  br label %369

369:                                              ; preds = %383, %366
  %370 = load i64, ptr %37, align 8, !tbaa !9
  %371 = load i64, ptr %13, align 8, !tbaa !9
  %372 = sub nsw i64 %371, 1
  %373 = icmp sle i64 %370, %372
  br i1 %373, label %374, label %386

374:                                              ; preds = %369
  %375 = load ptr, ptr %12, align 8, !tbaa !5
  %376 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %375, i32 0, i32 6
  %377 = load ptr, ptr %376, align 8, !tbaa !15
  %378 = load i64, ptr %36, align 8, !tbaa !9
  %379 = getelementptr inbounds ptr, ptr %377, i64 %378
  %380 = load ptr, ptr %379, align 8, !tbaa !5
  %381 = load i64, ptr %37, align 8, !tbaa !9
  %382 = getelementptr inbounds double, ptr %380, i64 %381
  store double 0.000000e+00, ptr %382, align 8, !tbaa !16
  br label %383

383:                                              ; preds = %374
  %384 = load i64, ptr %37, align 8, !tbaa !9
  %385 = add nsw i64 %384, 1
  store i64 %385, ptr %37, align 8, !tbaa !9
  br label %369, !llvm.loop !23

386:                                              ; preds = %369
  br label %387

387:                                              ; preds = %386
  %388 = load i64, ptr %36, align 8, !tbaa !9
  %389 = add nsw i64 %388, 1
  store i64 %389, ptr %36, align 8, !tbaa !9
  br label %361, !llvm.loop !24

390:                                              ; preds = %361
  %391 = load ptr, ptr %12, align 8, !tbaa !5
  %392 = load i64, ptr %13, align 8, !tbaa !9
  %393 = load i64, ptr %13, align 8, !tbaa !9
  %394 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl9rmatrixbdEPNS_9ae_matrixEllPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %391, i64 noundef %392, i64 noundef %393, ptr noundef %24, ptr noundef %25, ptr noundef %394)
  %395 = load ptr, ptr %12, align 8, !tbaa !5
  %396 = load i64, ptr %13, align 8, !tbaa !9
  %397 = load i64, ptr %13, align 8, !tbaa !9
  %398 = load i64, ptr %32, align 8, !tbaa !9
  %399 = load ptr, ptr %19, align 8, !tbaa !5
  %400 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl16rmatrixbdunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef %395, i64 noundef %396, i64 noundef %397, ptr noundef %24, i64 noundef %398, ptr noundef %399, ptr noundef %400)
  %401 = load ptr, ptr %12, align 8, !tbaa !5
  %402 = load i64, ptr %13, align 8, !tbaa !9
  %403 = load i64, ptr %13, align 8, !tbaa !9
  %404 = load ptr, ptr %18, align 8, !tbaa !5
  %405 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl24rmatrixbdunpackdiagonalsEPNS_9ae_matrixEllPbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef %401, i64 noundef %402, i64 noundef %403, ptr noundef %30, ptr noundef %404, ptr noundef %27, ptr noundef %405)
  %406 = load i64, ptr %13, align 8, !tbaa !9
  %407 = add nsw i64 %406, 1
  %408 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %28, i64 noundef %407, ptr noundef %408)
  %409 = load ptr, ptr %19, align 8, !tbaa !5
  %410 = load i64, ptr %34, align 8, !tbaa !9
  %411 = sub nsw i64 %410, 1
  %412 = load i64, ptr %32, align 8, !tbaa !9
  %413 = sub nsw i64 %412, 1
  %414 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl16inplacetransposeEPNS_9ae_matrixEllllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %409, i64 noundef 0, i64 noundef %411, i64 noundef 0, i64 noundef %413, ptr noundef %28, ptr noundef %414)
  %415 = load ptr, ptr %18, align 8, !tbaa !5
  %416 = load i64, ptr %13, align 8, !tbaa !9
  %417 = load i8, ptr %30, align 1, !tbaa !11, !range !13, !noundef !14
  %418 = trunc i8 %417 to i1
  %419 = load ptr, ptr %12, align 8, !tbaa !5
  %420 = load ptr, ptr %19, align 8, !tbaa !5
  %421 = load i64, ptr %34, align 8, !tbaa !9
  %422 = load ptr, ptr %20, align 8, !tbaa !5
  %423 = load ptr, ptr %21, align 8, !tbaa !5
  %424 = call noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef %415, ptr noundef %27, i64 noundef %416, i1 noundef zeroext %418, i1 noundef zeroext false, ptr noundef %419, i64 noundef 0, ptr noundef %420, i64 noundef %421, ptr noundef %422, i64 noundef 0, ptr noundef %423)
  %425 = zext i1 %424 to i8
  store i8 %425, ptr %38, align 1, !tbaa !11
  %426 = load ptr, ptr %19, align 8, !tbaa !5
  %427 = load i64, ptr %34, align 8, !tbaa !9
  %428 = sub nsw i64 %427, 1
  %429 = load i64, ptr %32, align 8, !tbaa !9
  %430 = sub nsw i64 %429, 1
  %431 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl16inplacetransposeEPNS_9ae_matrixEllllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %426, i64 noundef 0, i64 noundef %428, i64 noundef 0, i64 noundef %430, ptr noundef %28, ptr noundef %431)
  %432 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %432)
  %433 = load i8, ptr %38, align 1, !tbaa !11, !range !13, !noundef !14
  %434 = trunc i8 %433 to i1
  store i1 %434, ptr %11, align 1
  store i32 1, ptr %39, align 4
  br label %708

435:                                              ; preds = %353
  %436 = load ptr, ptr %12, align 8, !tbaa !5
  %437 = load i64, ptr %13, align 8, !tbaa !9
  %438 = load i64, ptr %14, align 8, !tbaa !9
  %439 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl9rmatrixlqEPNS_9ae_matrixEllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %436, i64 noundef %437, i64 noundef %438, ptr noundef %26, ptr noundef %439)
  %440 = load ptr, ptr %12, align 8, !tbaa !5
  %441 = load i64, ptr %13, align 8, !tbaa !9
  %442 = load i64, ptr %14, align 8, !tbaa !9
  %443 = load i64, ptr %33, align 8, !tbaa !9
  %444 = load ptr, ptr %20, align 8, !tbaa !5
  %445 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl16rmatrixlqunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef %440, i64 noundef %441, i64 noundef %442, ptr noundef %26, i64 noundef %443, ptr noundef %444, ptr noundef %445)
  store i64 0, ptr %36, align 8, !tbaa !9
  br label %446

446:                                              ; preds = %472, %435
  %447 = load i64, ptr %36, align 8, !tbaa !9
  %448 = load i64, ptr %13, align 8, !tbaa !9
  %449 = sub nsw i64 %448, 1
  %450 = icmp sle i64 %447, %449
  br i1 %450, label %451, label %475

451:                                              ; preds = %446
  %452 = load i64, ptr %36, align 8, !tbaa !9
  %453 = add nsw i64 %452, 1
  store i64 %453, ptr %37, align 8, !tbaa !9
  br label %454

454:                                              ; preds = %468, %451
  %455 = load i64, ptr %37, align 8, !tbaa !9
  %456 = load i64, ptr %13, align 8, !tbaa !9
  %457 = sub nsw i64 %456, 1
  %458 = icmp sle i64 %455, %457
  br i1 %458, label %459, label %471

459:                                              ; preds = %454
  %460 = load ptr, ptr %12, align 8, !tbaa !5
  %461 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %460, i32 0, i32 6
  %462 = load ptr, ptr %461, align 8, !tbaa !15
  %463 = load i64, ptr %36, align 8, !tbaa !9
  %464 = getelementptr inbounds ptr, ptr %462, i64 %463
  %465 = load ptr, ptr %464, align 8, !tbaa !5
  %466 = load i64, ptr %37, align 8, !tbaa !9
  %467 = getelementptr inbounds double, ptr %465, i64 %466
  store double 0.000000e+00, ptr %467, align 8, !tbaa !16
  br label %468

468:                                              ; preds = %459
  %469 = load i64, ptr %37, align 8, !tbaa !9
  %470 = add nsw i64 %469, 1
  store i64 %470, ptr %37, align 8, !tbaa !9
  br label %454, !llvm.loop !25

471:                                              ; preds = %454
  br label %472

472:                                              ; preds = %471
  %473 = load i64, ptr %36, align 8, !tbaa !9
  %474 = add nsw i64 %473, 1
  store i64 %474, ptr %36, align 8, !tbaa !9
  br label %446, !llvm.loop !26

475:                                              ; preds = %446
  %476 = load ptr, ptr %12, align 8, !tbaa !5
  %477 = load i64, ptr %13, align 8, !tbaa !9
  %478 = load i64, ptr %13, align 8, !tbaa !9
  %479 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl9rmatrixbdEPNS_9ae_matrixEllPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %476, i64 noundef %477, i64 noundef %478, ptr noundef %24, ptr noundef %25, ptr noundef %479)
  %480 = load ptr, ptr %12, align 8, !tbaa !5
  %481 = load i64, ptr %13, align 8, !tbaa !9
  %482 = load i64, ptr %13, align 8, !tbaa !9
  %483 = load i64, ptr %32, align 8, !tbaa !9
  %484 = load ptr, ptr %19, align 8, !tbaa !5
  %485 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl16rmatrixbdunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef %480, i64 noundef %481, i64 noundef %482, ptr noundef %24, i64 noundef %483, ptr noundef %484, ptr noundef %485)
  %486 = load ptr, ptr %12, align 8, !tbaa !5
  %487 = load i64, ptr %13, align 8, !tbaa !9
  %488 = load i64, ptr %13, align 8, !tbaa !9
  %489 = load ptr, ptr %18, align 8, !tbaa !5
  %490 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl24rmatrixbdunpackdiagonalsEPNS_9ae_matrixEllPbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef %486, i64 noundef %487, i64 noundef %488, ptr noundef %30, ptr noundef %489, ptr noundef %27, ptr noundef %490)
  %491 = load i64, ptr %13, align 8, !tbaa !9
  %492 = load i64, ptr %14, align 8, !tbaa !9
  %493 = load ptr, ptr %21, align 8, !tbaa !5
  %494 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %491, i64 noundef %492, ptr noundef %493)
  %495 = add nsw i64 %494, 1
  %496 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %28, i64 noundef %495, ptr noundef %496)
  %497 = load ptr, ptr %19, align 8, !tbaa !5
  %498 = load i64, ptr %34, align 8, !tbaa !9
  %499 = sub nsw i64 %498, 1
  %500 = load i64, ptr %32, align 8, !tbaa !9
  %501 = sub nsw i64 %500, 1
  %502 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl16inplacetransposeEPNS_9ae_matrixEllllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %497, i64 noundef 0, i64 noundef %499, i64 noundef 0, i64 noundef %501, ptr noundef %28, ptr noundef %502)
  %503 = load i64, ptr %17, align 8, !tbaa !9
  %504 = icmp slt i64 %503, 1
  br i1 %504, label %505, label %525

505:                                              ; preds = %475
  %506 = load ptr, ptr %12, align 8, !tbaa !5
  %507 = load i64, ptr %13, align 8, !tbaa !9
  %508 = load i64, ptr %13, align 8, !tbaa !9
  %509 = load ptr, ptr %20, align 8, !tbaa !5
  %510 = load i64, ptr %13, align 8, !tbaa !9
  %511 = load i64, ptr %14, align 8, !tbaa !9
  %512 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl20rmatrixbdmultiplybypEPNS_9ae_matrixEllPNS_9ae_vectorES1_llbbPNS_8ae_stateE(ptr noundef %506, i64 noundef %507, i64 noundef %508, ptr noundef %25, ptr noundef %509, i64 noundef %510, i64 noundef %511, i1 noundef zeroext false, i1 noundef zeroext true, ptr noundef %512)
  %513 = load ptr, ptr %18, align 8, !tbaa !5
  %514 = load i64, ptr %13, align 8, !tbaa !9
  %515 = load i8, ptr %30, align 1, !tbaa !11, !range !13, !noundef !14
  %516 = trunc i8 %515 to i1
  %517 = load ptr, ptr %12, align 8, !tbaa !5
  %518 = load ptr, ptr %19, align 8, !tbaa !5
  %519 = load i64, ptr %34, align 8, !tbaa !9
  %520 = load ptr, ptr %20, align 8, !tbaa !5
  %521 = load i64, ptr %14, align 8, !tbaa !9
  %522 = load ptr, ptr %21, align 8, !tbaa !5
  %523 = call noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef %513, ptr noundef %27, i64 noundef %514, i1 noundef zeroext %516, i1 noundef zeroext false, ptr noundef %517, i64 noundef 0, ptr noundef %518, i64 noundef %519, ptr noundef %520, i64 noundef %521, ptr noundef %522)
  %524 = zext i1 %523 to i8
  store i8 %524, ptr %38, align 1, !tbaa !11
  br label %559

525:                                              ; preds = %475
  %526 = load ptr, ptr %12, align 8, !tbaa !5
  %527 = load i64, ptr %13, align 8, !tbaa !9
  %528 = load i64, ptr %13, align 8, !tbaa !9
  %529 = load i64, ptr %13, align 8, !tbaa !9
  %530 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl17rmatrixbdunpackptEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef %526, i64 noundef %527, i64 noundef %528, ptr noundef %25, i64 noundef %529, ptr noundef %29, ptr noundef %530)
  %531 = load ptr, ptr %18, align 8, !tbaa !5
  %532 = load i64, ptr %13, align 8, !tbaa !9
  %533 = load i8, ptr %30, align 1, !tbaa !11, !range !13, !noundef !14
  %534 = trunc i8 %533 to i1
  %535 = load ptr, ptr %12, align 8, !tbaa !5
  %536 = load ptr, ptr %19, align 8, !tbaa !5
  %537 = load i64, ptr %34, align 8, !tbaa !9
  %538 = load i64, ptr %13, align 8, !tbaa !9
  %539 = load ptr, ptr %21, align 8, !tbaa !5
  %540 = call noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef %531, ptr noundef %27, i64 noundef %532, i1 noundef zeroext %534, i1 noundef zeroext false, ptr noundef %535, i64 noundef 0, ptr noundef %536, i64 noundef %537, ptr noundef %29, i64 noundef %538, ptr noundef %539)
  %541 = zext i1 %540 to i8
  store i8 %541, ptr %38, align 1, !tbaa !11
  %542 = load ptr, ptr %20, align 8, !tbaa !5
  %543 = load i64, ptr %13, align 8, !tbaa !9
  %544 = sub nsw i64 %543, 1
  %545 = load i64, ptr %14, align 8, !tbaa !9
  %546 = sub nsw i64 %545, 1
  %547 = load ptr, ptr %12, align 8, !tbaa !5
  %548 = load i64, ptr %13, align 8, !tbaa !9
  %549 = sub nsw i64 %548, 1
  %550 = load i64, ptr %14, align 8, !tbaa !9
  %551 = sub nsw i64 %550, 1
  %552 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl10copymatrixEPNS_9ae_matrixEllllS1_llllPNS_8ae_stateE(ptr noundef %542, i64 noundef 0, i64 noundef %544, i64 noundef 0, i64 noundef %546, ptr noundef %547, i64 noundef 0, i64 noundef %549, i64 noundef 0, i64 noundef %551, ptr noundef %552)
  %553 = load i64, ptr %13, align 8, !tbaa !9
  %554 = load i64, ptr %14, align 8, !tbaa !9
  %555 = load i64, ptr %13, align 8, !tbaa !9
  %556 = load ptr, ptr %12, align 8, !tbaa !5
  %557 = load ptr, ptr %20, align 8, !tbaa !5
  %558 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %553, i64 noundef %554, i64 noundef %555, double noundef 1.000000e+00, ptr noundef %29, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %556, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %557, i64 noundef 0, i64 noundef 0, ptr noundef %558)
  br label %559

559:                                              ; preds = %525, %505
  %560 = load ptr, ptr %19, align 8, !tbaa !5
  %561 = load i64, ptr %34, align 8, !tbaa !9
  %562 = sub nsw i64 %561, 1
  %563 = load i64, ptr %32, align 8, !tbaa !9
  %564 = sub nsw i64 %563, 1
  %565 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl16inplacetransposeEPNS_9ae_matrixEllllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %560, i64 noundef 0, i64 noundef %562, i64 noundef 0, i64 noundef %564, ptr noundef %28, ptr noundef %565)
  %566 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %566)
  %567 = load i8, ptr %38, align 1, !tbaa !11, !range !13, !noundef !14
  %568 = trunc i8 %567 to i1
  store i1 %568, ptr %11, align 1
  store i32 1, ptr %39, align 4
  br label %708

569:                                              ; preds = %346
  %570 = load i64, ptr %13, align 8, !tbaa !9
  %571 = load i64, ptr %14, align 8, !tbaa !9
  %572 = icmp sle i64 %570, %571
  br i1 %572, label %573, label %625

573:                                              ; preds = %569
  %574 = load ptr, ptr %12, align 8, !tbaa !5
  %575 = load i64, ptr %13, align 8, !tbaa !9
  %576 = load i64, ptr %14, align 8, !tbaa !9
  %577 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl9rmatrixbdEPNS_9ae_matrixEllPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %574, i64 noundef %575, i64 noundef %576, ptr noundef %24, ptr noundef %25, ptr noundef %577)
  %578 = load ptr, ptr %12, align 8, !tbaa !5
  %579 = load i64, ptr %13, align 8, !tbaa !9
  %580 = load i64, ptr %14, align 8, !tbaa !9
  %581 = load i64, ptr %32, align 8, !tbaa !9
  %582 = load ptr, ptr %19, align 8, !tbaa !5
  %583 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl16rmatrixbdunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef %578, i64 noundef %579, i64 noundef %580, ptr noundef %24, i64 noundef %581, ptr noundef %582, ptr noundef %583)
  %584 = load ptr, ptr %12, align 8, !tbaa !5
  %585 = load i64, ptr %13, align 8, !tbaa !9
  %586 = load i64, ptr %14, align 8, !tbaa !9
  %587 = load i64, ptr %33, align 8, !tbaa !9
  %588 = load ptr, ptr %20, align 8, !tbaa !5
  %589 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl17rmatrixbdunpackptEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef %584, i64 noundef %585, i64 noundef %586, ptr noundef %25, i64 noundef %587, ptr noundef %588, ptr noundef %589)
  %590 = load ptr, ptr %12, align 8, !tbaa !5
  %591 = load i64, ptr %13, align 8, !tbaa !9
  %592 = load i64, ptr %14, align 8, !tbaa !9
  %593 = load ptr, ptr %18, align 8, !tbaa !5
  %594 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl24rmatrixbdunpackdiagonalsEPNS_9ae_matrixEllPbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef %590, i64 noundef %591, i64 noundef %592, ptr noundef %30, ptr noundef %593, ptr noundef %27, ptr noundef %594)
  %595 = load i64, ptr %13, align 8, !tbaa !9
  %596 = add nsw i64 %595, 1
  %597 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %28, i64 noundef %596, ptr noundef %597)
  %598 = load ptr, ptr %19, align 8, !tbaa !5
  %599 = load i64, ptr %34, align 8, !tbaa !9
  %600 = sub nsw i64 %599, 1
  %601 = load i64, ptr %32, align 8, !tbaa !9
  %602 = sub nsw i64 %601, 1
  %603 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl16inplacetransposeEPNS_9ae_matrixEllllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %598, i64 noundef 0, i64 noundef %600, i64 noundef 0, i64 noundef %602, ptr noundef %28, ptr noundef %603)
  %604 = load ptr, ptr %18, align 8, !tbaa !5
  %605 = load i64, ptr %31, align 8, !tbaa !9
  %606 = load i8, ptr %30, align 1, !tbaa !11, !range !13, !noundef !14
  %607 = trunc i8 %606 to i1
  %608 = load ptr, ptr %12, align 8, !tbaa !5
  %609 = load ptr, ptr %19, align 8, !tbaa !5
  %610 = load i64, ptr %34, align 8, !tbaa !9
  %611 = load ptr, ptr %20, align 8, !tbaa !5
  %612 = load i64, ptr %35, align 8, !tbaa !9
  %613 = load ptr, ptr %21, align 8, !tbaa !5
  %614 = call noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef %604, ptr noundef %27, i64 noundef %605, i1 noundef zeroext %607, i1 noundef zeroext false, ptr noundef %608, i64 noundef 0, ptr noundef %609, i64 noundef %610, ptr noundef %611, i64 noundef %612, ptr noundef %613)
  %615 = zext i1 %614 to i8
  store i8 %615, ptr %38, align 1, !tbaa !11
  %616 = load ptr, ptr %19, align 8, !tbaa !5
  %617 = load i64, ptr %34, align 8, !tbaa !9
  %618 = sub nsw i64 %617, 1
  %619 = load i64, ptr %32, align 8, !tbaa !9
  %620 = sub nsw i64 %619, 1
  %621 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl16inplacetransposeEPNS_9ae_matrixEllllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %616, i64 noundef 0, i64 noundef %618, i64 noundef 0, i64 noundef %620, ptr noundef %28, ptr noundef %621)
  %622 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %622)
  %623 = load i8, ptr %38, align 1, !tbaa !11, !range !13, !noundef !14
  %624 = trunc i8 %623 to i1
  store i1 %624, ptr %11, align 1
  store i32 1, ptr %39, align 4
  br label %708

625:                                              ; preds = %569
  %626 = load ptr, ptr %12, align 8, !tbaa !5
  %627 = load i64, ptr %13, align 8, !tbaa !9
  %628 = load i64, ptr %14, align 8, !tbaa !9
  %629 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl9rmatrixbdEPNS_9ae_matrixEllPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %626, i64 noundef %627, i64 noundef %628, ptr noundef %24, ptr noundef %25, ptr noundef %629)
  %630 = load ptr, ptr %12, align 8, !tbaa !5
  %631 = load i64, ptr %13, align 8, !tbaa !9
  %632 = load i64, ptr %14, align 8, !tbaa !9
  %633 = load i64, ptr %32, align 8, !tbaa !9
  %634 = load ptr, ptr %19, align 8, !tbaa !5
  %635 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl16rmatrixbdunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef %630, i64 noundef %631, i64 noundef %632, ptr noundef %24, i64 noundef %633, ptr noundef %634, ptr noundef %635)
  %636 = load ptr, ptr %12, align 8, !tbaa !5
  %637 = load i64, ptr %13, align 8, !tbaa !9
  %638 = load i64, ptr %14, align 8, !tbaa !9
  %639 = load i64, ptr %33, align 8, !tbaa !9
  %640 = load ptr, ptr %20, align 8, !tbaa !5
  %641 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl17rmatrixbdunpackptEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef %636, i64 noundef %637, i64 noundef %638, ptr noundef %25, i64 noundef %639, ptr noundef %640, ptr noundef %641)
  %642 = load ptr, ptr %12, align 8, !tbaa !5
  %643 = load i64, ptr %13, align 8, !tbaa !9
  %644 = load i64, ptr %14, align 8, !tbaa !9
  %645 = load ptr, ptr %18, align 8, !tbaa !5
  %646 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl24rmatrixbdunpackdiagonalsEPNS_9ae_matrixEllPbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef %642, i64 noundef %643, i64 noundef %644, ptr noundef %30, ptr noundef %645, ptr noundef %27, ptr noundef %646)
  %647 = load i64, ptr %17, align 8, !tbaa !9
  %648 = icmp slt i64 %647, 2
  br i1 %648, label %652, label %649

649:                                              ; preds = %625
  %650 = load i64, ptr %15, align 8, !tbaa !9
  %651 = icmp eq i64 %650, 0
  br i1 %651, label %652, label %665

652:                                              ; preds = %649, %625
  %653 = load ptr, ptr %18, align 8, !tbaa !5
  %654 = load i64, ptr %31, align 8, !tbaa !9
  %655 = load i8, ptr %30, align 1, !tbaa !11, !range !13, !noundef !14
  %656 = trunc i8 %655 to i1
  %657 = load ptr, ptr %19, align 8, !tbaa !5
  %658 = load i64, ptr %34, align 8, !tbaa !9
  %659 = load ptr, ptr %12, align 8, !tbaa !5
  %660 = load ptr, ptr %20, align 8, !tbaa !5
  %661 = load i64, ptr %35, align 8, !tbaa !9
  %662 = load ptr, ptr %21, align 8, !tbaa !5
  %663 = call noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef %653, ptr noundef %27, i64 noundef %654, i1 noundef zeroext %656, i1 noundef zeroext false, ptr noundef %657, i64 noundef %658, ptr noundef %659, i64 noundef 0, ptr noundef %660, i64 noundef %661, ptr noundef %662)
  %664 = zext i1 %663 to i8
  store i8 %664, ptr %38, align 1, !tbaa !11
  br label %704

665:                                              ; preds = %649
  %666 = load i64, ptr %31, align 8, !tbaa !9
  %667 = sub nsw i64 %666, 1
  %668 = add nsw i64 %667, 1
  %669 = load i64, ptr %13, align 8, !tbaa !9
  %670 = sub nsw i64 %669, 1
  %671 = add nsw i64 %670, 1
  %672 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %29, i64 noundef %668, i64 noundef %671, ptr noundef %672)
  %673 = load ptr, ptr %19, align 8, !tbaa !5
  %674 = load i64, ptr %13, align 8, !tbaa !9
  %675 = sub nsw i64 %674, 1
  %676 = load i64, ptr %31, align 8, !tbaa !9
  %677 = sub nsw i64 %676, 1
  %678 = load i64, ptr %31, align 8, !tbaa !9
  %679 = sub nsw i64 %678, 1
  %680 = load i64, ptr %13, align 8, !tbaa !9
  %681 = sub nsw i64 %680, 1
  %682 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl16copyandtransposeEPNS_9ae_matrixEllllS1_llllPNS_8ae_stateE(ptr noundef %673, i64 noundef 0, i64 noundef %675, i64 noundef 0, i64 noundef %677, ptr noundef %29, i64 noundef 0, i64 noundef %679, i64 noundef 0, i64 noundef %681, ptr noundef %682)
  %683 = load ptr, ptr %18, align 8, !tbaa !5
  %684 = load i64, ptr %31, align 8, !tbaa !9
  %685 = load i8, ptr %30, align 1, !tbaa !11, !range !13, !noundef !14
  %686 = trunc i8 %685 to i1
  %687 = load ptr, ptr %19, align 8, !tbaa !5
  %688 = load i64, ptr %13, align 8, !tbaa !9
  %689 = load ptr, ptr %20, align 8, !tbaa !5
  %690 = load i64, ptr %35, align 8, !tbaa !9
  %691 = load ptr, ptr %21, align 8, !tbaa !5
  %692 = call noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef %683, ptr noundef %27, i64 noundef %684, i1 noundef zeroext %686, i1 noundef zeroext false, ptr noundef %687, i64 noundef 0, ptr noundef %29, i64 noundef %688, ptr noundef %689, i64 noundef %690, ptr noundef %691)
  %693 = zext i1 %692 to i8
  store i8 %693, ptr %38, align 1, !tbaa !11
  %694 = load i64, ptr %31, align 8, !tbaa !9
  %695 = sub nsw i64 %694, 1
  %696 = load i64, ptr %13, align 8, !tbaa !9
  %697 = sub nsw i64 %696, 1
  %698 = load ptr, ptr %19, align 8, !tbaa !5
  %699 = load i64, ptr %13, align 8, !tbaa !9
  %700 = sub nsw i64 %699, 1
  %701 = load i64, ptr %31, align 8, !tbaa !9
  %702 = sub nsw i64 %701, 1
  %703 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl16copyandtransposeEPNS_9ae_matrixEllllS1_llllPNS_8ae_stateE(ptr noundef %29, i64 noundef 0, i64 noundef %695, i64 noundef 0, i64 noundef %697, ptr noundef %698, i64 noundef 0, i64 noundef %700, i64 noundef 0, i64 noundef %702, ptr noundef %703)
  br label %704

704:                                              ; preds = %665, %652
  %705 = load ptr, ptr %21, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %705)
  %706 = load i8, ptr %38, align 1, !tbaa !11, !range !13, !noundef !14
  %707 = trunc i8 %706 to i1
  store i1 %707, ptr %11, align 1
  store i32 1, ptr %39, align 4
  br label %708

708:                                              ; preds = %704, %573, %559, %390, %342, %191, %57
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #4
  %709 = load i1, ptr %11, align 1
  ret i1 %709
}

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

declare noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef) #2

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

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #2

declare void @_ZN11alglib_impl15ae_vector_clearEPNS_9ae_vectorE(ptr noundef) #2

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

declare void @_ZN11alglib_impl19ae_matrix_init_copyEPNS_9ae_matrixES1_PNS_8ae_stateEb(ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext) #2

declare void @_ZN11alglib_impl15ae_matrix_clearEPNS_9ae_matrixE(ptr noundef) #2

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

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

declare void @_ZN11alglib_impl10copymatrixEPNS_9ae_matrixEllllS1_llllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef) #2

declare void @_ZN11alglib_impl16inplacetransposeEPNS_9ae_matrixEllllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef) #2

declare void @_ZN11alglib_impl16copyandtransposeEPNS_9ae_matrixEllllS1_llllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef) #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!7, !7, i64 0}
!16 = !{!17, !17, i64 0}
!17 = !{!"double", !7, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = distinct !{!20, !19}
!21 = distinct !{!21, !19}
!22 = distinct !{!22, !19}
!23 = distinct !{!23, !19}
!24 = distinct !{!24, !19}
!25 = distinct !{!25, !19}
!26 = distinct !{!26, !19}


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

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

@.str.338 = external hidden unnamed_addr constant [36 x i8], align 1

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef, i64 noundef, i64 noundef, double noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, double noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl9rmatrixqrEPNS_9ae_matrixEllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl9rmatrixlqEPNS_9ae_matrixEllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl16rmatrixqrunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl16rmatrixlqunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl9rmatrixbdEPNS_9ae_matrixEllPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl16rmatrixbdunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl20rmatrixbdmultiplybyqEPNS_9ae_matrixEllPNS_9ae_vectorES1_llbbPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, i64 noundef, i1 noundef zeroext, i1 noundef zeroext, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl17rmatrixbdunpackptEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl20rmatrixbdmultiplybypEPNS_9ae_matrixEllPNS_9ae_vectorES1_llbbPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, i64 noundef, i64 noundef, i1 noundef zeroext, i1 noundef zeroext, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl24rmatrixbdunpackdiagonalsEPNS_9ae_matrixEllPbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef, ptr noundef, i64 noundef, i1 noundef zeroext, i1 noundef zeroext, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl10rmatrixsvdEPNS_9ae_matrixElllllPNS_9ae_vectorES1_S1_PNS_8ae_stateE(ptr noundef %0, i64 noundef %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, i64 noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9) local_unnamed_addr #3 {
  %11 = alloca %"struct.alglib_impl::ae_frame", align 8
  %12 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %13 = alloca %"struct.alglib_impl::ae_vector", align 8
  %14 = alloca %"struct.alglib_impl::ae_vector", align 8
  %15 = alloca %"struct.alglib_impl::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_matrix", align 8
  %19 = alloca i8, align 1
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #4
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %12) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %13) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %14) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %15) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #4
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %9, ptr noundef nonnull %11)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %12, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %13, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %14, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %15, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %16, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %17, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %18, i8 0, i64 80, i1 false)
  call void @_ZN11alglib_impl19ae_matrix_init_copyEPNS_9ae_matrixES1_PNS_8ae_stateEb(ptr noundef nonnull %12, ptr noundef %0, ptr noundef %9, i1 noundef zeroext true)
  call void @_ZN11alglib_impl15ae_vector_clearEPNS_9ae_vectorE(ptr noundef %6)
  call void @_ZN11alglib_impl15ae_matrix_clearEPNS_9ae_matrixE(ptr noundef %7)
  call void @_ZN11alglib_impl15ae_matrix_clearEPNS_9ae_matrixE(ptr noundef %8)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %13, i64 noundef 0, i64 noundef 3, ptr noundef %9, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %14, i64 noundef 0, i64 noundef 3, ptr noundef %9, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %15, i64 noundef 0, i64 noundef 3, ptr noundef %9, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %16, i64 noundef 0, i64 noundef 3, ptr noundef %9, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %17, i64 noundef 0, i64 noundef 3, ptr noundef %9, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %18, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %9, i1 noundef zeroext true)
  %20 = icmp eq i64 %1, 0
  %21 = icmp eq i64 %2, 0
  %or.cond = or i1 %20, %21
  br i1 %or.cond, label %204, label %22

22:                                               ; preds = %10
  %23 = icmp ult i64 %3, 3
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %23, ptr noundef nonnull @.str.338, ptr noundef %9)
  %24 = icmp ult i64 %4, 3
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %24, ptr noundef nonnull @.str.338, ptr noundef %9)
  %25 = icmp ult i64 %5, 3
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %25, ptr noundef nonnull @.str.338, ptr noundef %9)
  %26 = call noundef i64 @_ZN11alglib_impl9ae_minintEllPNS_8ae_stateE(i64 noundef %1, i64 noundef %2, ptr noundef %9)
  %27 = add nsw i64 %26, 1
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %6, i64 noundef %27, ptr noundef %9)
  switch i64 %3, label %29 [
    i64 1, label %.sink.split
    i64 2, label %28
  ]

28:                                               ; preds = %22
  br label %.sink.split

.sink.split:                                      ; preds = %22, %28
  %.sink = phi i64 [ %1, %28 ], [ %26, %22 ]
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %7, i64 noundef %1, i64 noundef %.sink, ptr noundef %9)
  br label %29

29:                                               ; preds = %.sink.split, %22
  %.1439 = phi i64 [ 0, %22 ], [ %.sink, %.sink.split ]
  %.1435 = phi i64 [ 0, %22 ], [ %1, %.sink.split ]
  switch i64 %4, label %31 [
    i64 1, label %.sink.split496
    i64 2, label %30
  ]

30:                                               ; preds = %29
  br label %.sink.split496

.sink.split496:                                   ; preds = %29, %30
  %.sink497 = phi i64 [ %2, %30 ], [ %26, %29 ]
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %8, i64 noundef %.sink497, i64 noundef %2, ptr noundef %9)
  br label %31

31:                                               ; preds = %.sink.split496, %29
  %.1437 = phi i64 [ 0, %29 ], [ %.sink497, %.sink.split496 ]
  %.1433 = phi i64 [ 0, %29 ], [ %2, %.sink.split496 ]
  %32 = sitofp i64 %1 to double
  %33 = sitofp i64 %2 to double
  %34 = fmul double %33, 1.600000e+00
  %35 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %32, double noundef %34)
  br i1 %35, label %36, label %112

36:                                               ; preds = %31
  %37 = icmp eq i64 %3, 0
  call void @_ZN11alglib_impl9rmatrixqrEPNS_9ae_matrixEllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %1, i64 noundef %2, ptr noundef nonnull %15, ptr noundef %9)
  br i1 %37, label %38, label %70

38:                                               ; preds = %36
  %.not453.not488 = icmp sgt i64 %2, 0
  br i1 %.not453.not488, label %.preheader.lr.ph, label %._crit_edge490

.preheader.lr.ph:                                 ; preds = %38
  %39 = getelementptr inbounds i8, ptr %12, i64 72
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge487
  %.0428489 = phi i64 [ 0, %.preheader.lr.ph ], [ %66, %._crit_edge487 ]
  %.not454.not484.not = icmp eq i64 %.0428489, 0
  br i1 %.not454.not484.not, label %._crit_edge487, label %.lr.ph486.preheader

.lr.ph486.preheader:                              ; preds = %.preheader
  %xtraiter507 = and i64 %.0428489, 3
  %40 = icmp ult i64 %.0428489, 4
  br i1 %40, label %._crit_edge487.loopexit.unr-lcssa, label %.lr.ph486.preheader.new

.lr.ph486.preheader.new:                          ; preds = %.lr.ph486.preheader
  %unroll_iter510 = and i64 %.0428489, 9223372036854775804
  br label %.lr.ph486

.lr.ph486:                                        ; preds = %.lr.ph486, %.lr.ph486.preheader.new
  %.0425485 = phi i64 [ 0, %.lr.ph486.preheader.new ], [ %60, %.lr.ph486 ]
  %niter511 = phi i64 [ 0, %.lr.ph486.preheader.new ], [ %niter511.next.3, %.lr.ph486 ]
  %41 = load ptr, ptr %39, align 8, !tbaa !5
  %42 = getelementptr inbounds ptr, ptr %41, i64 %.0428489
  %43 = load ptr, ptr %42, align 8, !tbaa !8
  %44 = getelementptr inbounds double, ptr %43, i64 %.0425485
  store double 0.000000e+00, ptr %44, align 8, !tbaa !10
  %45 = or disjoint i64 %.0425485, 1
  %46 = load ptr, ptr %39, align 8, !tbaa !5
  %47 = getelementptr inbounds ptr, ptr %46, i64 %.0428489
  %48 = load ptr, ptr %47, align 8, !tbaa !8
  %49 = getelementptr inbounds double, ptr %48, i64 %45
  store double 0.000000e+00, ptr %49, align 8, !tbaa !10
  %50 = or disjoint i64 %.0425485, 2
  %51 = load ptr, ptr %39, align 8, !tbaa !5
  %52 = getelementptr inbounds ptr, ptr %51, i64 %.0428489
  %53 = load ptr, ptr %52, align 8, !tbaa !8
  %54 = getelementptr inbounds double, ptr %53, i64 %50
  store double 0.000000e+00, ptr %54, align 8, !tbaa !10
  %55 = or disjoint i64 %.0425485, 3
  %56 = load ptr, ptr %39, align 8, !tbaa !5
  %57 = getelementptr inbounds ptr, ptr %56, i64 %.0428489
  %58 = load ptr, ptr %57, align 8, !tbaa !8
  %59 = getelementptr inbounds double, ptr %58, i64 %55
  store double 0.000000e+00, ptr %59, align 8, !tbaa !10
  %60 = add nuw nsw i64 %.0425485, 4
  %niter511.next.3 = add i64 %niter511, 4
  %niter511.ncmp.3 = icmp eq i64 %niter511.next.3, %unroll_iter510
  br i1 %niter511.ncmp.3, label %._crit_edge487.loopexit.unr-lcssa, label %.lr.ph486, !llvm.loop !12

._crit_edge487.loopexit.unr-lcssa:                ; preds = %.lr.ph486, %.lr.ph486.preheader
  %.0425485.unr = phi i64 [ 0, %.lr.ph486.preheader ], [ %60, %.lr.ph486 ]
  %lcmp.mod509.not = icmp eq i64 %xtraiter507, 0
  br i1 %lcmp.mod509.not, label %._crit_edge487, label %.lr.ph486.epil

.lr.ph486.epil:                                   ; preds = %._crit_edge487.loopexit.unr-lcssa, %.lr.ph486.epil
  %.0425485.epil = phi i64 [ %65, %.lr.ph486.epil ], [ %.0425485.unr, %._crit_edge487.loopexit.unr-lcssa ]
  %epil.iter508 = phi i64 [ %epil.iter508.next, %.lr.ph486.epil ], [ 0, %._crit_edge487.loopexit.unr-lcssa ]
  %61 = load ptr, ptr %39, align 8, !tbaa !5
  %62 = getelementptr inbounds ptr, ptr %61, i64 %.0428489
  %63 = load ptr, ptr %62, align 8, !tbaa !8
  %64 = getelementptr inbounds double, ptr %63, i64 %.0425485.epil
  store double 0.000000e+00, ptr %64, align 8, !tbaa !10
  %65 = add nuw nsw i64 %.0425485.epil, 1
  %epil.iter508.next = add i64 %epil.iter508, 1
  %epil.iter508.cmp.not = icmp eq i64 %epil.iter508.next, %xtraiter507
  br i1 %epil.iter508.cmp.not, label %._crit_edge487, label %.lr.ph486.epil, !llvm.loop !14

._crit_edge487:                                   ; preds = %._crit_edge487.loopexit.unr-lcssa, %.lr.ph486.epil, %.preheader
  %66 = add nuw nsw i64 %.0428489, 1
  %exitcond495.not = icmp eq i64 %66, %2
  br i1 %exitcond495.not, label %._crit_edge490, label %.preheader, !llvm.loop !16

._crit_edge490:                                   ; preds = %._crit_edge487, %38
  call void @_ZN11alglib_impl9rmatrixbdEPNS_9ae_matrixEllPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %2, i64 noundef %2, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef %9)
  call void @_ZN11alglib_impl17rmatrixbdunpackptEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %2, i64 noundef %2, ptr noundef nonnull %14, i64 noundef %.1437, ptr noundef %8, ptr noundef %9)
  call void @_ZN11alglib_impl24rmatrixbdunpackdiagonalsEPNS_9ae_matrixEllPbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %2, i64 noundef %2, ptr noundef nonnull %19, ptr noundef %6, ptr noundef nonnull %16, ptr noundef %9)
  %67 = load i8, ptr %19, align 1, !tbaa !17, !range !19, !noundef !20
  %68 = trunc nuw i8 %67 to i1
  %69 = call noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef %6, ptr noundef nonnull %16, i64 noundef %2, i1 noundef zeroext %68, i1 noundef zeroext false, ptr noundef %7, i64 noundef 0, ptr noundef nonnull %12, i64 noundef 0, ptr noundef %8, i64 noundef %.1433, ptr noundef %9)
  br label %204

70:                                               ; preds = %36
  call void @_ZN11alglib_impl16rmatrixqrunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %1, i64 noundef %2, ptr noundef nonnull %15, i64 noundef %.1439, ptr noundef %7, ptr noundef %9)
  %.not451.not481 = icmp sgt i64 %2, 0
  br i1 %.not451.not481, label %.preheader460.lr.ph, label %._crit_edge483

.preheader460.lr.ph:                              ; preds = %70
  %71 = getelementptr inbounds i8, ptr %12, i64 72
  br label %.preheader460

.preheader460:                                    ; preds = %.preheader460.lr.ph, %._crit_edge480
  %.1429482 = phi i64 [ 0, %.preheader460.lr.ph ], [ %98, %._crit_edge480 ]
  %.not452.not477.not = icmp eq i64 %.1429482, 0
  br i1 %.not452.not477.not, label %._crit_edge480, label %.lr.ph479.preheader

.lr.ph479.preheader:                              ; preds = %.preheader460
  %xtraiter503 = and i64 %.1429482, 3
  %72 = icmp ult i64 %.1429482, 4
  br i1 %72, label %._crit_edge480.loopexit.unr-lcssa, label %.lr.ph479.preheader.new

.lr.ph479.preheader.new:                          ; preds = %.lr.ph479.preheader
  %unroll_iter505 = and i64 %.1429482, 9223372036854775804
  br label %.lr.ph479

.lr.ph479:                                        ; preds = %.lr.ph479, %.lr.ph479.preheader.new
  %.1426478 = phi i64 [ 0, %.lr.ph479.preheader.new ], [ %92, %.lr.ph479 ]
  %niter506 = phi i64 [ 0, %.lr.ph479.preheader.new ], [ %niter506.next.3, %.lr.ph479 ]
  %73 = load ptr, ptr %71, align 8, !tbaa !5
  %74 = getelementptr inbounds ptr, ptr %73, i64 %.1429482
  %75 = load ptr, ptr %74, align 8, !tbaa !8
  %76 = getelementptr inbounds double, ptr %75, i64 %.1426478
  store double 0.000000e+00, ptr %76, align 8, !tbaa !10
  %77 = or disjoint i64 %.1426478, 1
  %78 = load ptr, ptr %71, align 8, !tbaa !5
  %79 = getelementptr inbounds ptr, ptr %78, i64 %.1429482
  %80 = load ptr, ptr %79, align 8, !tbaa !8
  %81 = getelementptr inbounds double, ptr %80, i64 %77
  store double 0.000000e+00, ptr %81, align 8, !tbaa !10
  %82 = or disjoint i64 %.1426478, 2
  %83 = load ptr, ptr %71, align 8, !tbaa !5
  %84 = getelementptr inbounds ptr, ptr %83, i64 %.1429482
  %85 = load ptr, ptr %84, align 8, !tbaa !8
  %86 = getelementptr inbounds double, ptr %85, i64 %82
  store double 0.000000e+00, ptr %86, align 8, !tbaa !10
  %87 = or disjoint i64 %.1426478, 3
  %88 = load ptr, ptr %71, align 8, !tbaa !5
  %89 = getelementptr inbounds ptr, ptr %88, i64 %.1429482
  %90 = load ptr, ptr %89, align 8, !tbaa !8
  %91 = getelementptr inbounds double, ptr %90, i64 %87
  store double 0.000000e+00, ptr %91, align 8, !tbaa !10
  %92 = add nuw nsw i64 %.1426478, 4
  %niter506.next.3 = add i64 %niter506, 4
  %niter506.ncmp.3 = icmp eq i64 %niter506.next.3, %unroll_iter505
  br i1 %niter506.ncmp.3, label %._crit_edge480.loopexit.unr-lcssa, label %.lr.ph479, !llvm.loop !21

._crit_edge480.loopexit.unr-lcssa:                ; preds = %.lr.ph479, %.lr.ph479.preheader
  %.1426478.unr = phi i64 [ 0, %.lr.ph479.preheader ], [ %92, %.lr.ph479 ]
  %lcmp.mod504.not = icmp eq i64 %xtraiter503, 0
  br i1 %lcmp.mod504.not, label %._crit_edge480, label %.lr.ph479.epil

.lr.ph479.epil:                                   ; preds = %._crit_edge480.loopexit.unr-lcssa, %.lr.ph479.epil
  %.1426478.epil = phi i64 [ %97, %.lr.ph479.epil ], [ %.1426478.unr, %._crit_edge480.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph479.epil ], [ 0, %._crit_edge480.loopexit.unr-lcssa ]
  %93 = load ptr, ptr %71, align 8, !tbaa !5
  %94 = getelementptr inbounds ptr, ptr %93, i64 %.1429482
  %95 = load ptr, ptr %94, align 8, !tbaa !8
  %96 = getelementptr inbounds double, ptr %95, i64 %.1426478.epil
  store double 0.000000e+00, ptr %96, align 8, !tbaa !10
  %97 = add nuw nsw i64 %.1426478.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter503
  br i1 %epil.iter.cmp.not, label %._crit_edge480, label %.lr.ph479.epil, !llvm.loop !22

._crit_edge480:                                   ; preds = %._crit_edge480.loopexit.unr-lcssa, %.lr.ph479.epil, %.preheader460
  %98 = add nuw nsw i64 %.1429482, 1
  %exitcond493.not = icmp eq i64 %98, %2
  br i1 %exitcond493.not, label %._crit_edge483, label %.preheader460, !llvm.loop !23

._crit_edge483:                                   ; preds = %._crit_edge480, %70
  call void @_ZN11alglib_impl9rmatrixbdEPNS_9ae_matrixEllPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %2, i64 noundef %2, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef %9)
  call void @_ZN11alglib_impl17rmatrixbdunpackptEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %2, i64 noundef %2, ptr noundef nonnull %14, i64 noundef %.1437, ptr noundef %8, ptr noundef %9)
  call void @_ZN11alglib_impl24rmatrixbdunpackdiagonalsEPNS_9ae_matrixEllPbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %2, i64 noundef %2, ptr noundef nonnull %19, ptr noundef %6, ptr noundef nonnull %16, ptr noundef %9)
  %99 = icmp slt i64 %5, 1
  br i1 %99, label %100, label %104

100:                                              ; preds = %._crit_edge483
  call void @_ZN11alglib_impl20rmatrixbdmultiplybyqEPNS_9ae_matrixEllPNS_9ae_vectorES1_llbbPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %2, i64 noundef %2, ptr noundef nonnull %13, ptr noundef %7, i64 noundef %1, i64 noundef %2, i1 noundef zeroext true, i1 noundef zeroext false, ptr noundef %9)
  %101 = load i8, ptr %19, align 1, !tbaa !17, !range !19, !noundef !20
  %102 = trunc nuw i8 %101 to i1
  %103 = call noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef %6, ptr noundef nonnull %16, i64 noundef %2, i1 noundef zeroext %102, i1 noundef zeroext false, ptr noundef %7, i64 noundef %1, ptr noundef nonnull %12, i64 noundef 0, ptr noundef %8, i64 noundef %.1433, ptr noundef %9)
  br label %204

104:                                              ; preds = %._crit_edge483
  %105 = add nsw i64 %2, -1
  %106 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %1, i64 noundef %2, ptr noundef %9)
  %107 = add nsw i64 %106, 1
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %17, i64 noundef %107, ptr noundef %9)
  call void @_ZN11alglib_impl16rmatrixbdunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %2, i64 noundef %2, ptr noundef nonnull %13, i64 noundef %2, ptr noundef nonnull %18, ptr noundef %9)
  %108 = add nsw i64 %1, -1
  call void @_ZN11alglib_impl10copymatrixEPNS_9ae_matrixEllllS1_llllPNS_8ae_stateE(ptr noundef %7, i64 noundef 0, i64 noundef %108, i64 noundef 0, i64 noundef %105, ptr noundef nonnull %12, i64 noundef 0, i64 noundef %108, i64 noundef 0, i64 noundef %105, ptr noundef %9)
  call void @_ZN11alglib_impl16inplacetransposeEPNS_9ae_matrixEllllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %18, i64 noundef 0, i64 noundef %105, i64 noundef 0, i64 noundef %105, ptr noundef nonnull %17, ptr noundef %9)
  %109 = load i8, ptr %19, align 1, !tbaa !17, !range !19, !noundef !20
  %110 = trunc nuw i8 %109 to i1
  %111 = call noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef %6, ptr noundef nonnull %16, i64 noundef %2, i1 noundef zeroext %110, i1 noundef zeroext false, ptr noundef %7, i64 noundef 0, ptr noundef nonnull %18, i64 noundef %2, ptr noundef %8, i64 noundef %.1433, ptr noundef %9)
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %1, i64 noundef %2, i64 noundef %2, double noundef 1.000000e+00, ptr noundef nonnull %12, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %18, i64 noundef 0, i64 noundef 0, i64 noundef 1, double noundef 0.000000e+00, ptr noundef %7, i64 noundef 0, i64 noundef 0, ptr noundef %9)
  br label %204

112:                                              ; preds = %31
  %113 = fmul double %32, 1.600000e+00
  %114 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %33, double noundef %113)
  br i1 %114, label %115, label %183

115:                                              ; preds = %112
  %116 = icmp eq i64 %4, 0
  call void @_ZN11alglib_impl9rmatrixlqEPNS_9ae_matrixEllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %1, i64 noundef %2, ptr noundef nonnull %15, ptr noundef %9)
  br i1 %116, label %117, label %145

117:                                              ; preds = %115
  %.not449.not472 = icmp sgt i64 %1, 0
  br i1 %.not449.not472, label %.lr.ph475, label %._crit_edge476

.lr.ph475:                                        ; preds = %117
  %118 = getelementptr inbounds i8, ptr %12, i64 72
  %xtraiter499 = and i64 %1, 1
  %119 = icmp eq i64 %1, 1
  br i1 %119, label %._crit_edge476.loopexit.unr-lcssa, label %.lr.ph475.new

.lr.ph475.new:                                    ; preds = %.lr.ph475
  %unroll_iter501 = and i64 %1, 9223372036854775806
  br label %126

.loopexit:                                        ; preds = %.lr.ph471, %126
  %120 = add nuw nsw i64 %.2430473, 2
  %.not450.not468.1 = icmp slt i64 %120, %1
  br i1 %.not450.not468.1, label %.lr.ph471.1, label %.loopexit.1

.lr.ph471.1:                                      ; preds = %.loopexit, %.lr.ph471.1
  %.2427469.1 = phi i64 [ %125, %.lr.ph471.1 ], [ %120, %.loopexit ]
  %121 = load ptr, ptr %118, align 8, !tbaa !5
  %122 = getelementptr inbounds ptr, ptr %121, i64 %127
  %123 = load ptr, ptr %122, align 8, !tbaa !8
  %124 = getelementptr inbounds double, ptr %123, i64 %.2427469.1
  store double 0.000000e+00, ptr %124, align 8, !tbaa !10
  %125 = add nuw nsw i64 %.2427469.1, 1
  %.not450.not.1 = icmp slt i64 %125, %1
  br i1 %.not450.not.1, label %.lr.ph471.1, label %.loopexit.1, !llvm.loop !24

.loopexit.1:                                      ; preds = %.lr.ph471.1, %.loopexit
  %niter502.next.1 = add i64 %niter502, 2
  %niter502.ncmp.1 = icmp eq i64 %niter502.next.1, %unroll_iter501
  br i1 %niter502.ncmp.1, label %._crit_edge476.loopexit.unr-lcssa, label %126, !llvm.loop !25

126:                                              ; preds = %.loopexit.1, %.lr.ph475.new
  %.2430473 = phi i64 [ 0, %.lr.ph475.new ], [ %120, %.loopexit.1 ]
  %niter502 = phi i64 [ 0, %.lr.ph475.new ], [ %niter502.next.1, %.loopexit.1 ]
  %127 = or disjoint i64 %.2430473, 1
  %.not450.not468 = icmp slt i64 %127, %1
  br i1 %.not450.not468, label %.lr.ph471, label %.loopexit

.lr.ph471:                                        ; preds = %126, %.lr.ph471
  %.2427469 = phi i64 [ %132, %.lr.ph471 ], [ %127, %126 ]
  %128 = load ptr, ptr %118, align 8, !tbaa !5
  %129 = getelementptr inbounds ptr, ptr %128, i64 %.2430473
  %130 = load ptr, ptr %129, align 8, !tbaa !8
  %131 = getelementptr inbounds double, ptr %130, i64 %.2427469
  store double 0.000000e+00, ptr %131, align 8, !tbaa !10
  %132 = add nuw nsw i64 %.2427469, 1
  %.not450.not = icmp slt i64 %132, %1
  br i1 %.not450.not, label %.lr.ph471, label %.loopexit, !llvm.loop !24

._crit_edge476.loopexit.unr-lcssa:                ; preds = %.loopexit.1, %.lr.ph475
  %.2430473.unr = phi i64 [ 0, %.lr.ph475 ], [ %120, %.loopexit.1 ]
  %lcmp.mod500.not = icmp ne i64 %xtraiter499, 0
  %133 = add nuw nsw i64 %.2430473.unr, 1
  %.not450.not468.epil = icmp slt i64 %133, %1
  %or.cond515 = select i1 %lcmp.mod500.not, i1 %.not450.not468.epil, i1 false
  br i1 %or.cond515, label %.lr.ph471.epil, label %._crit_edge476

.lr.ph471.epil:                                   ; preds = %._crit_edge476.loopexit.unr-lcssa, %.lr.ph471.epil
  %.2427469.epil = phi i64 [ %138, %.lr.ph471.epil ], [ %133, %._crit_edge476.loopexit.unr-lcssa ]
  %134 = load ptr, ptr %118, align 8, !tbaa !5
  %135 = getelementptr inbounds ptr, ptr %134, i64 %.2430473.unr
  %136 = load ptr, ptr %135, align 8, !tbaa !8
  %137 = getelementptr inbounds double, ptr %136, i64 %.2427469.epil
  store double 0.000000e+00, ptr %137, align 8, !tbaa !10
  %138 = add nuw nsw i64 %.2427469.epil, 1
  %.not450.not.epil = icmp slt i64 %138, %1
  br i1 %.not450.not.epil, label %.lr.ph471.epil, label %._crit_edge476, !llvm.loop !24

._crit_edge476:                                   ; preds = %._crit_edge476.loopexit.unr-lcssa, %.lr.ph471.epil, %117
  call void @_ZN11alglib_impl9rmatrixbdEPNS_9ae_matrixEllPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %1, i64 noundef %1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef %9)
  call void @_ZN11alglib_impl16rmatrixbdunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %1, i64 noundef %1, ptr noundef nonnull %13, i64 noundef %.1439, ptr noundef %7, ptr noundef %9)
  call void @_ZN11alglib_impl24rmatrixbdunpackdiagonalsEPNS_9ae_matrixEllPbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %1, i64 noundef %1, ptr noundef nonnull %19, ptr noundef %6, ptr noundef nonnull %16, ptr noundef %9)
  %139 = add nsw i64 %1, 1
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %17, i64 noundef %139, ptr noundef %9)
  %140 = add nsw i64 %.1435, -1
  %141 = add nsw i64 %.1439, -1
  call void @_ZN11alglib_impl16inplacetransposeEPNS_9ae_matrixEllllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %7, i64 noundef 0, i64 noundef %140, i64 noundef 0, i64 noundef %141, ptr noundef nonnull %17, ptr noundef %9)
  %142 = load i8, ptr %19, align 1, !tbaa !17, !range !19, !noundef !20
  %143 = trunc nuw i8 %142 to i1
  %144 = call noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef %6, ptr noundef nonnull %16, i64 noundef %1, i1 noundef zeroext %143, i1 noundef zeroext false, ptr noundef nonnull %12, i64 noundef 0, ptr noundef %7, i64 noundef %.1435, ptr noundef %8, i64 noundef 0, ptr noundef %9)
  call void @_ZN11alglib_impl16inplacetransposeEPNS_9ae_matrixEllllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %7, i64 noundef 0, i64 noundef %140, i64 noundef 0, i64 noundef %141, ptr noundef nonnull %17, ptr noundef %9)
  br label %204

145:                                              ; preds = %115
  call void @_ZN11alglib_impl16rmatrixlqunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %1, i64 noundef %2, ptr noundef nonnull %15, i64 noundef %.1437, ptr noundef %8, ptr noundef %9)
  %.not447.not465 = icmp sgt i64 %1, 0
  br i1 %.not447.not465, label %.lr.ph467, label %._crit_edge

.lr.ph467:                                        ; preds = %145
  %146 = getelementptr inbounds i8, ptr %12, i64 72
  %xtraiter = and i64 %1, 1
  %147 = icmp eq i64 %1, 1
  br i1 %147, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph467.new

.lr.ph467.new:                                    ; preds = %.lr.ph467
  %unroll_iter = and i64 %1, 9223372036854775806
  br label %154

.loopexit461:                                     ; preds = %.lr.ph, %154
  %148 = add nuw nsw i64 %.3431466, 2
  %.not448.not463.1 = icmp slt i64 %148, %1
  br i1 %.not448.not463.1, label %.lr.ph.1, label %.loopexit461.1

.lr.ph.1:                                         ; preds = %.loopexit461, %.lr.ph.1
  %.3464.1 = phi i64 [ %153, %.lr.ph.1 ], [ %148, %.loopexit461 ]
  %149 = load ptr, ptr %146, align 8, !tbaa !5
  %150 = getelementptr inbounds ptr, ptr %149, i64 %155
  %151 = load ptr, ptr %150, align 8, !tbaa !8
  %152 = getelementptr inbounds double, ptr %151, i64 %.3464.1
  store double 0.000000e+00, ptr %152, align 8, !tbaa !10
  %153 = add nuw nsw i64 %.3464.1, 1
  %.not448.not.1 = icmp slt i64 %153, %1
  br i1 %.not448.not.1, label %.lr.ph.1, label %.loopexit461.1, !llvm.loop !26

.loopexit461.1:                                   ; preds = %.lr.ph.1, %.loopexit461
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %154, !llvm.loop !27

154:                                              ; preds = %.loopexit461.1, %.lr.ph467.new
  %.3431466 = phi i64 [ 0, %.lr.ph467.new ], [ %148, %.loopexit461.1 ]
  %niter = phi i64 [ 0, %.lr.ph467.new ], [ %niter.next.1, %.loopexit461.1 ]
  %155 = or disjoint i64 %.3431466, 1
  %.not448.not463 = icmp slt i64 %155, %1
  br i1 %.not448.not463, label %.lr.ph, label %.loopexit461

.lr.ph:                                           ; preds = %154, %.lr.ph
  %.3464 = phi i64 [ %160, %.lr.ph ], [ %155, %154 ]
  %156 = load ptr, ptr %146, align 8, !tbaa !5
  %157 = getelementptr inbounds ptr, ptr %156, i64 %.3431466
  %158 = load ptr, ptr %157, align 8, !tbaa !8
  %159 = getelementptr inbounds double, ptr %158, i64 %.3464
  store double 0.000000e+00, ptr %159, align 8, !tbaa !10
  %160 = add nuw nsw i64 %.3464, 1
  %.not448.not = icmp slt i64 %160, %1
  br i1 %.not448.not, label %.lr.ph, label %.loopexit461, !llvm.loop !26

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.loopexit461.1, %.lr.ph467
  %.3431466.unr = phi i64 [ 0, %.lr.ph467 ], [ %148, %.loopexit461.1 ]
  %lcmp.mod.not = icmp ne i64 %xtraiter, 0
  %161 = add nuw nsw i64 %.3431466.unr, 1
  %.not448.not463.epil = icmp slt i64 %161, %1
  %or.cond516 = select i1 %lcmp.mod.not, i1 %.not448.not463.epil, i1 false
  br i1 %or.cond516, label %.lr.ph.epil, label %._crit_edge

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph.epil
  %.3464.epil = phi i64 [ %166, %.lr.ph.epil ], [ %161, %._crit_edge.loopexit.unr-lcssa ]
  %162 = load ptr, ptr %146, align 8, !tbaa !5
  %163 = getelementptr inbounds ptr, ptr %162, i64 %.3431466.unr
  %164 = load ptr, ptr %163, align 8, !tbaa !8
  %165 = getelementptr inbounds double, ptr %164, i64 %.3464.epil
  store double 0.000000e+00, ptr %165, align 8, !tbaa !10
  %166 = add nuw nsw i64 %.3464.epil, 1
  %.not448.not.epil = icmp slt i64 %166, %1
  br i1 %.not448.not.epil, label %.lr.ph.epil, label %._crit_edge, !llvm.loop !26

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph.epil, %145
  call void @_ZN11alglib_impl9rmatrixbdEPNS_9ae_matrixEllPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %1, i64 noundef %1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef %9)
  call void @_ZN11alglib_impl16rmatrixbdunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %1, i64 noundef %1, ptr noundef nonnull %13, i64 noundef %.1439, ptr noundef %7, ptr noundef %9)
  call void @_ZN11alglib_impl24rmatrixbdunpackdiagonalsEPNS_9ae_matrixEllPbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %1, i64 noundef %1, ptr noundef nonnull %19, ptr noundef %6, ptr noundef nonnull %16, ptr noundef %9)
  %167 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %1, i64 noundef %2, ptr noundef %9)
  %168 = add nsw i64 %167, 1
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %17, i64 noundef %168, ptr noundef %9)
  %169 = add nsw i64 %.1435, -1
  %170 = add nsw i64 %.1439, -1
  call void @_ZN11alglib_impl16inplacetransposeEPNS_9ae_matrixEllllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %7, i64 noundef 0, i64 noundef %169, i64 noundef 0, i64 noundef %170, ptr noundef nonnull %17, ptr noundef %9)
  %171 = icmp slt i64 %5, 1
  br i1 %171, label %172, label %176

172:                                              ; preds = %._crit_edge
  call void @_ZN11alglib_impl20rmatrixbdmultiplybypEPNS_9ae_matrixEllPNS_9ae_vectorES1_llbbPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %1, i64 noundef %1, ptr noundef nonnull %14, ptr noundef %8, i64 noundef %1, i64 noundef %2, i1 noundef zeroext false, i1 noundef zeroext true, ptr noundef %9)
  %173 = load i8, ptr %19, align 1, !tbaa !17, !range !19, !noundef !20
  %174 = trunc nuw i8 %173 to i1
  %175 = call noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef %6, ptr noundef nonnull %16, i64 noundef %1, i1 noundef zeroext %174, i1 noundef zeroext false, ptr noundef nonnull %12, i64 noundef 0, ptr noundef %7, i64 noundef %.1435, ptr noundef %8, i64 noundef %2, ptr noundef %9)
  br label %182

176:                                              ; preds = %._crit_edge
  %177 = add nsw i64 %1, -1
  call void @_ZN11alglib_impl17rmatrixbdunpackptEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %1, i64 noundef %1, ptr noundef nonnull %14, i64 noundef %1, ptr noundef nonnull %18, ptr noundef %9)
  %178 = load i8, ptr %19, align 1, !tbaa !17, !range !19, !noundef !20
  %179 = trunc nuw i8 %178 to i1
  %180 = call noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef %6, ptr noundef nonnull %16, i64 noundef %1, i1 noundef zeroext %179, i1 noundef zeroext false, ptr noundef nonnull %12, i64 noundef 0, ptr noundef %7, i64 noundef %.1435, ptr noundef nonnull %18, i64 noundef %1, ptr noundef %9)
  %181 = add nsw i64 %2, -1
  call void @_ZN11alglib_impl10copymatrixEPNS_9ae_matrixEllllS1_llllPNS_8ae_stateE(ptr noundef %8, i64 noundef 0, i64 noundef %177, i64 noundef 0, i64 noundef %181, ptr noundef nonnull %12, i64 noundef 0, i64 noundef %177, i64 noundef 0, i64 noundef %181, ptr noundef %9)
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %1, i64 noundef %2, i64 noundef %1, double noundef 1.000000e+00, ptr noundef nonnull %18, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %12, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %8, i64 noundef 0, i64 noundef 0, ptr noundef %9)
  br label %182

182:                                              ; preds = %176, %172
  %.1.in = phi i1 [ %175, %172 ], [ %180, %176 ]
  call void @_ZN11alglib_impl16inplacetransposeEPNS_9ae_matrixEllllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %7, i64 noundef 0, i64 noundef %169, i64 noundef 0, i64 noundef %170, ptr noundef nonnull %17, ptr noundef %9)
  br label %204

183:                                              ; preds = %112
  %.not = icmp sgt i64 %1, %2
  call void @_ZN11alglib_impl9rmatrixbdEPNS_9ae_matrixEllPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %1, i64 noundef %2, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef %9)
  call void @_ZN11alglib_impl16rmatrixbdunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %1, i64 noundef %2, ptr noundef nonnull %13, i64 noundef %.1439, ptr noundef %7, ptr noundef %9)
  call void @_ZN11alglib_impl17rmatrixbdunpackptEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %1, i64 noundef %2, ptr noundef nonnull %14, i64 noundef %.1437, ptr noundef %8, ptr noundef %9)
  call void @_ZN11alglib_impl24rmatrixbdunpackdiagonalsEPNS_9ae_matrixEllPbPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %1, i64 noundef %2, ptr noundef nonnull %19, ptr noundef %6, ptr noundef nonnull %16, ptr noundef %9)
  br i1 %.not, label %191, label %184

184:                                              ; preds = %183
  %185 = add nsw i64 %1, 1
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %17, i64 noundef %185, ptr noundef %9)
  %186 = add nsw i64 %.1435, -1
  %187 = add nsw i64 %.1439, -1
  call void @_ZN11alglib_impl16inplacetransposeEPNS_9ae_matrixEllllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %7, i64 noundef 0, i64 noundef %186, i64 noundef 0, i64 noundef %187, ptr noundef nonnull %17, ptr noundef %9)
  %188 = load i8, ptr %19, align 1, !tbaa !17, !range !19, !noundef !20
  %189 = trunc nuw i8 %188 to i1
  %190 = call noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef %6, ptr noundef nonnull %16, i64 noundef %26, i1 noundef zeroext %189, i1 noundef zeroext false, ptr noundef nonnull %12, i64 noundef 0, ptr noundef %7, i64 noundef %.1435, ptr noundef %8, i64 noundef %.1433, ptr noundef %9)
  call void @_ZN11alglib_impl16inplacetransposeEPNS_9ae_matrixEllllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %7, i64 noundef 0, i64 noundef %186, i64 noundef 0, i64 noundef %187, ptr noundef nonnull %17, ptr noundef %9)
  br label %204

191:                                              ; preds = %183
  %192 = icmp slt i64 %5, 2
  %193 = icmp eq i64 %3, 0
  %or.cond3 = or i1 %193, %192
  br i1 %or.cond3, label %194, label %198

194:                                              ; preds = %191
  %195 = load i8, ptr %19, align 1, !tbaa !17, !range !19, !noundef !20
  %196 = trunc nuw i8 %195 to i1
  %197 = call noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef %6, ptr noundef nonnull %16, i64 noundef %26, i1 noundef zeroext %196, i1 noundef zeroext false, ptr noundef %7, i64 noundef %.1435, ptr noundef nonnull %12, i64 noundef 0, ptr noundef %8, i64 noundef %.1433, ptr noundef %9)
  br label %204

198:                                              ; preds = %191
  %199 = add nsw i64 %26, -1
  %200 = add nsw i64 %1, -1
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %18, i64 noundef %26, i64 noundef %1, ptr noundef %9)
  call void @_ZN11alglib_impl16copyandtransposeEPNS_9ae_matrixEllllS1_llllPNS_8ae_stateE(ptr noundef %7, i64 noundef 0, i64 noundef %200, i64 noundef 0, i64 noundef %199, ptr noundef nonnull %18, i64 noundef 0, i64 noundef %199, i64 noundef 0, i64 noundef %200, ptr noundef %9)
  %201 = load i8, ptr %19, align 1, !tbaa !17, !range !19, !noundef !20
  %202 = trunc nuw i8 %201 to i1
  %203 = call noundef zeroext i1 @_ZN11alglib_impl12rmatrixbdsvdEPNS_9ae_vectorES1_lbbPNS_9ae_matrixElS3_lS3_lPNS_8ae_stateE(ptr noundef %6, ptr noundef nonnull %16, i64 noundef %26, i1 noundef zeroext %202, i1 noundef zeroext false, ptr noundef %7, i64 noundef 0, ptr noundef nonnull %18, i64 noundef %1, ptr noundef %8, i64 noundef %.1433, ptr noundef %9)
  call void @_ZN11alglib_impl16copyandtransposeEPNS_9ae_matrixEllllS1_llllPNS_8ae_stateE(ptr noundef nonnull %18, i64 noundef 0, i64 noundef %199, i64 noundef 0, i64 noundef %200, ptr noundef %7, i64 noundef 0, i64 noundef %200, i64 noundef 0, i64 noundef %199, ptr noundef %9)
  br label %204

204:                                              ; preds = %194, %198, %100, %104, %10, %184, %182, %._crit_edge476, %._crit_edge490
  %.0440 = phi i1 [ %69, %._crit_edge490 ], [ %144, %._crit_edge476 ], [ %.1.in, %182 ], [ %190, %184 ], [ true, %10 ], [ %103, %100 ], [ %111, %104 ], [ %197, %194 ], [ %203, %198 ]
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %9)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %14) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %13) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %12) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #4
  ret i1 %.0440
}

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

declare noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

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

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl15ae_vector_clearEPNS_9ae_vectorE(ptr noundef) local_unnamed_addr #2

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

declare void @_ZN11alglib_impl19ae_matrix_init_copyEPNS_9ae_matrixES1_PNS_8ae_stateEb(ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #2

declare void @_ZN11alglib_impl15ae_matrix_clearEPNS_9ae_matrixE(ptr noundef) local_unnamed_addr #2

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

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

declare void @_ZN11alglib_impl10copymatrixEPNS_9ae_matrixEllllS1_llllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl16inplacetransposeEPNS_9ae_matrixEllllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl16copyandtransposeEPNS_9ae_matrixEllllS1_llllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"any pointer", !6, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"double", !6, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.unroll.disable"}
!16 = distinct !{!16, !13}
!17 = !{!18, !18, i64 0}
!18 = !{!"bool", !6, i64 0}
!19 = !{i8 0, i8 2}
!20 = !{}
!21 = distinct !{!21, !13}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !13}
!24 = distinct !{!24, !13}
!25 = distinct !{!25, !13}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}


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