; LLVM IR from Dimandragon/non-parametric-dsp :: 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::eigsubspacestate" = type { i64, i64, i64, i64, double, i64, i64, i8, i8, %"struct.alglib_impl::hqrndstate", i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::apbuffers", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix", i64, i64, i64, %"struct.alglib_impl::rcommstate" }
%"struct.alglib_impl::hqrndstate" = type { i64, i64, i64 }
%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.1 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%union.anon.1 = type { ptr }
%"struct.alglib_impl::apbuffers" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }
%"struct.alglib_impl::rcommstate" = type { i32, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }

@.str.73 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.317 = external hidden unnamed_addr constant [44 x i8], align 1
@_ZN11alglib_implL18evd_stepswithintolE = external hidden global i64, align 8
@.str.318 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.319 = external hidden unnamed_addr constant [51 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 nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_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) #1

; 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) #1

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN11alglib_implL16evd_clearrfieldsEPNS_16eigsubspacestateEPNS_8ae_stateE(ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl20eigsubspaceiterationEPNS_16eigsubspacestateEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) #1 {
  %3 = alloca i1, align 1
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i64, align 8
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i8, align 1
  %18 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #4
  %19 = load ptr, ptr %4, align 8, !tbaa !5
  %20 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %19, i32 0, i32 33
  %21 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %20, i32 0, i32 0
  %22 = load i32, ptr %21, align 8, !tbaa !9
  %23 = icmp sge i32 %22, 0
  br i1 %23, label %24, label %102

24:                                               ; preds = %2
  %25 = load ptr, ptr %4, align 8, !tbaa !5
  %26 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %25, i32 0, i32 33
  %27 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %26, i32 0, i32 1
  %28 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %29 = load ptr, ptr %28, align 8, !tbaa !21
  %30 = getelementptr inbounds i64, ptr %29, i64 0
  %31 = load i64, ptr %30, align 8, !tbaa !22
  store i64 %31, ptr %6, align 8, !tbaa !22
  %32 = load ptr, ptr %4, align 8, !tbaa !5
  %33 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %32, i32 0, i32 33
  %34 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %33, i32 0, i32 1
  %35 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %34, i32 0, i32 4
  %36 = load ptr, ptr %35, align 8, !tbaa !21
  %37 = getelementptr inbounds i64, ptr %36, i64 1
  %38 = load i64, ptr %37, align 8, !tbaa !22
  store i64 %38, ptr %7, align 8, !tbaa !22
  %39 = load ptr, ptr %4, align 8, !tbaa !5
  %40 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %39, i32 0, i32 33
  %41 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %40, i32 0, i32 1
  %42 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %41, i32 0, i32 4
  %43 = load ptr, ptr %42, align 8, !tbaa !21
  %44 = getelementptr inbounds i64, ptr %43, i64 2
  %45 = load i64, ptr %44, align 8, !tbaa !22
  store i64 %45, ptr %8, align 8, !tbaa !22
  %46 = load ptr, ptr %4, align 8, !tbaa !5
  %47 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %46, i32 0, i32 33
  %48 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %47, i32 0, i32 1
  %49 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %48, i32 0, i32 4
  %50 = load ptr, ptr %49, align 8, !tbaa !21
  %51 = getelementptr inbounds i64, ptr %50, i64 3
  %52 = load i64, ptr %51, align 8, !tbaa !22
  store i64 %52, ptr %9, align 8, !tbaa !22
  %53 = load ptr, ptr %4, align 8, !tbaa !5
  %54 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %53, i32 0, i32 33
  %55 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %54, i32 0, i32 1
  %56 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %55, i32 0, i32 4
  %57 = load ptr, ptr %56, align 8, !tbaa !21
  %58 = getelementptr inbounds i64, ptr %57, i64 4
  %59 = load i64, ptr %58, align 8, !tbaa !22
  store i64 %59, ptr %10, align 8, !tbaa !22
  %60 = load ptr, ptr %4, align 8, !tbaa !5
  %61 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %60, i32 0, i32 33
  %62 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %61, i32 0, i32 1
  %63 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %62, i32 0, i32 4
  %64 = load ptr, ptr %63, align 8, !tbaa !21
  %65 = getelementptr inbounds i64, ptr %64, i64 5
  %66 = load i64, ptr %65, align 8, !tbaa !22
  store i64 %66, ptr %11, align 8, !tbaa !22
  %67 = load ptr, ptr %4, align 8, !tbaa !5
  %68 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %67, i32 0, i32 33
  %69 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %68, i32 0, i32 1
  %70 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %69, i32 0, i32 4
  %71 = load ptr, ptr %70, align 8, !tbaa !21
  %72 = getelementptr inbounds i64, ptr %71, i64 6
  %73 = load i64, ptr %72, align 8, !tbaa !22
  store i64 %73, ptr %12, align 8, !tbaa !22
  %74 = load ptr, ptr %4, align 8, !tbaa !5
  %75 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %74, i32 0, i32 33
  %76 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %75, i32 0, i32 1
  %77 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %76, i32 0, i32 4
  %78 = load ptr, ptr %77, align 8, !tbaa !21
  %79 = getelementptr inbounds i64, ptr %78, i64 7
  %80 = load i64, ptr %79, align 8, !tbaa !22
  store i64 %80, ptr %15, align 8, !tbaa !22
  %81 = load ptr, ptr %4, align 8, !tbaa !5
  %82 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %81, i32 0, i32 33
  %83 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %82, i32 0, i32 1
  %84 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %83, i32 0, i32 4
  %85 = load ptr, ptr %84, align 8, !tbaa !21
  %86 = getelementptr inbounds i64, ptr %85, i64 8
  %87 = load i64, ptr %86, align 8, !tbaa !22
  store i64 %87, ptr %16, align 8, !tbaa !22
  %88 = load ptr, ptr %4, align 8, !tbaa !5
  %89 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %88, i32 0, i32 33
  %90 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %89, i32 0, i32 3
  %91 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %90, i32 0, i32 4
  %92 = load ptr, ptr %91, align 8, !tbaa !21
  %93 = getelementptr inbounds double, ptr %92, i64 0
  %94 = load double, ptr %93, align 8, !tbaa !23
  store double %94, ptr %13, align 8, !tbaa !23
  %95 = load ptr, ptr %4, align 8, !tbaa !5
  %96 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %95, i32 0, i32 33
  %97 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %96, i32 0, i32 3
  %98 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %97, i32 0, i32 4
  %99 = load ptr, ptr %98, align 8, !tbaa !21
  %100 = getelementptr inbounds double, ptr %99, i64 1
  %101 = load double, ptr %100, align 8, !tbaa !23
  store double %101, ptr %14, align 8, !tbaa !23
  br label %103

102:                                              ; preds = %2
  store i64 359, ptr %6, align 8, !tbaa !22
  store i64 -58, ptr %7, align 8, !tbaa !22
  store i64 -919, ptr %8, align 8, !tbaa !22
  store i64 -909, ptr %9, align 8, !tbaa !22
  store i64 81, ptr %10, align 8, !tbaa !22
  store i64 255, ptr %11, align 8, !tbaa !22
  store i64 74, ptr %12, align 8, !tbaa !22
  store i64 -788, ptr %15, align 8, !tbaa !22
  store i64 809, ptr %16, align 8, !tbaa !22
  store double 2.050000e+02, ptr %13, align 8, !tbaa !23
  store double -8.380000e+02, ptr %14, align 8, !tbaa !23
  br label %103

103:                                              ; preds = %102, %24
  %104 = load ptr, ptr %4, align 8, !tbaa !5
  %105 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %104, i32 0, i32 33
  %106 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %105, i32 0, i32 0
  %107 = load i32, ptr %106, align 8, !tbaa !9
  %108 = icmp eq i32 %107, 0
  br i1 %108, label %109, label %110

109:                                              ; preds = %103
  br label %355

110:                                              ; preds = %103
  %111 = load ptr, ptr %4, align 8, !tbaa !5
  %112 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %111, i32 0, i32 33
  %113 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %112, i32 0, i32 0
  %114 = load i32, ptr %113, align 8, !tbaa !9
  %115 = icmp eq i32 %114, 1
  br i1 %115, label %116, label %117

116:                                              ; preds = %110
  br label %587

117:                                              ; preds = %110
  %118 = load ptr, ptr %4, align 8, !tbaa !5
  %119 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %118, i32 0, i32 33
  %120 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %119, i32 0, i32 0
  %121 = load i32, ptr %120, align 8, !tbaa !9
  %122 = icmp eq i32 %121, 2
  br i1 %122, label %123, label %124

123:                                              ; preds = %117
  br label %739

124:                                              ; preds = %117
  %125 = load ptr, ptr %4, align 8, !tbaa !5
  %126 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %125, i32 0, i32 0
  %127 = load i64, ptr %126, align 8, !tbaa !24
  store i64 %127, ptr %6, align 8, !tbaa !22
  %128 = load ptr, ptr %4, align 8, !tbaa !5
  %129 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %128, i32 0, i32 1
  %130 = load i64, ptr %129, align 8, !tbaa !25
  store i64 %130, ptr %8, align 8, !tbaa !22
  %131 = load ptr, ptr %4, align 8, !tbaa !5
  %132 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %131, i32 0, i32 2
  %133 = load i64, ptr %132, align 8, !tbaa !26
  store i64 %133, ptr %7, align 8, !tbaa !22
  %134 = load ptr, ptr %4, align 8, !tbaa !5
  %135 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %134, i32 0, i32 9
  %136 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9hqrndseedEllPNS_10hqrndstateEPNS_8ae_stateE(i64 noundef 453, i64 noundef 463664, ptr noundef %135, ptr noundef %136)
  %137 = load ptr, ptr %4, align 8, !tbaa !5
  %138 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %137, i32 0, i32 6
  %139 = load i64, ptr %138, align 8, !tbaa !27
  %140 = icmp eq i64 %139, 0
  br i1 %140, label %146, label %141

141:                                              ; preds = %124
  %142 = load ptr, ptr %4, align 8, !tbaa !5
  %143 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %142, i32 0, i32 6
  %144 = load i64, ptr %143, align 8, !tbaa !27
  %145 = icmp eq i64 %144, 1
  br label %146

146:                                              ; preds = %141, %124
  %147 = phi i1 [ true, %124 ], [ %145, %141 ]
  %148 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %147, ptr noundef @.str.317, ptr noundef %148)
  store i64 0, ptr %16, align 8, !tbaa !22
  %149 = load ptr, ptr %4, align 8, !tbaa !5
  %150 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %149, i32 0, i32 6
  %151 = load i64, ptr %150, align 8, !tbaa !27
  %152 = icmp eq i64 %151, 1
  br i1 %152, label %153, label %154

153:                                              ; preds = %146
  store i64 1, ptr %16, align 8, !tbaa !22
  br label %154

154:                                              ; preds = %153, %146
  %155 = load ptr, ptr %4, align 8, !tbaa !5
  %156 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %155, i32 0, i32 32
  store i64 0, ptr %156, align 8, !tbaa !28
  %157 = load ptr, ptr %4, align 8, !tbaa !5
  %158 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %157, i32 0, i32 13
  %159 = load i64, ptr %7, align 8, !tbaa !22
  %160 = load i64, ptr %6, align 8, !tbaa !22
  %161 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %158, i64 noundef %159, i64 noundef %160, ptr noundef %161)
  %162 = load ptr, ptr %4, align 8, !tbaa !5
  %163 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %162, i32 0, i32 14
  %164 = load i64, ptr %7, align 8, !tbaa !22
  %165 = load i64, ptr %6, align 8, !tbaa !22
  %166 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %163, i64 noundef %164, i64 noundef %165, ptr noundef %166)
  %167 = load ptr, ptr %4, align 8, !tbaa !5
  %168 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %167, i32 0, i32 15
  %169 = load i64, ptr %7, align 8, !tbaa !22
  %170 = load i64, ptr %6, align 8, !tbaa !22
  %171 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %168, i64 noundef %169, i64 noundef %170, ptr noundef %171)
  %172 = load ptr, ptr %4, align 8, !tbaa !5
  %173 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %172, i32 0, i32 24
  %174 = load i64, ptr %7, align 8, !tbaa !22
  %175 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %173, i64 noundef %174, ptr noundef %175)
  %176 = load ptr, ptr %4, align 8, !tbaa !5
  %177 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %176, i32 0, i32 25
  %178 = load i64, ptr %7, align 8, !tbaa !22
  %179 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %177, i64 noundef %178, ptr noundef %179)
  %180 = load ptr, ptr %4, align 8, !tbaa !5
  %181 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %180, i32 0, i32 26
  %182 = load i64, ptr %7, align 8, !tbaa !22
  %183 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %181, i64 noundef %182, ptr noundef %183)
  %184 = load ptr, ptr %4, align 8, !tbaa !5
  %185 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %184, i32 0, i32 28
  %186 = load i64, ptr %6, align 8, !tbaa !22
  %187 = load i64, ptr %7, align 8, !tbaa !22
  %188 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %185, i64 noundef %186, i64 noundef %187, ptr noundef %188)
  %189 = load ptr, ptr %4, align 8, !tbaa !5
  %190 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %189, i32 0, i32 29
  %191 = load i64, ptr %6, align 8, !tbaa !22
  %192 = load i64, ptr %7, align 8, !tbaa !22
  %193 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %190, i64 noundef %191, i64 noundef %192, ptr noundef %193)
  %194 = load ptr, ptr %4, align 8, !tbaa !5
  %195 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %194, i32 0, i32 19
  %196 = load i64, ptr %6, align 8, !tbaa !22
  %197 = load i64, ptr %8, align 8, !tbaa !22
  %198 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %195, i64 noundef %196, i64 noundef %197, ptr noundef %198)
  %199 = load ptr, ptr %4, align 8, !tbaa !5
  %200 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %199, i32 0, i32 21
  %201 = load i64, ptr %8, align 8, !tbaa !22
  %202 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %200, i64 noundef %201, ptr noundef %202)
  %203 = load ptr, ptr %4, align 8, !tbaa !5
  %204 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %203, i32 0, i32 17
  %205 = load i64, ptr %7, align 8, !tbaa !22
  %206 = load i64, ptr %8, align 8, !tbaa !22
  %207 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %204, i64 noundef %205, i64 noundef %206, ptr noundef %207)
  %208 = load ptr, ptr %4, align 8, !tbaa !5
  %209 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %208, i32 0, i32 16
  %210 = load i64, ptr %7, align 8, !tbaa !22
  %211 = load i64, ptr %7, align 8, !tbaa !22
  %212 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %209, i64 noundef %210, i64 noundef %211, ptr noundef %212)
  store i64 0, ptr %10, align 8, !tbaa !22
  br label %213

213:                                              ; preds = %225, %154
  %214 = load i64, ptr %10, align 8, !tbaa !22
  %215 = load i64, ptr %7, align 8, !tbaa !22
  %216 = sub nsw i64 %215, 1
  %217 = icmp sle i64 %214, %216
  br i1 %217, label %218, label %228

218:                                              ; preds = %213
  %219 = load ptr, ptr %4, align 8, !tbaa !5
  %220 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %219, i32 0, i32 25
  %221 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %220, i32 0, i32 4
  %222 = load ptr, ptr %221, align 8, !tbaa !21
  %223 = load i64, ptr %10, align 8, !tbaa !22
  %224 = getelementptr inbounds double, ptr %222, i64 %223
  store double -1.000000e+00, ptr %224, align 8, !tbaa !23
  br label %225

225:                                              ; preds = %218
  %226 = load i64, ptr %10, align 8, !tbaa !22
  %227 = add nsw i64 %226, 1
  store i64 %227, ptr %10, align 8, !tbaa !22
  br label %213, !llvm.loop !29

228:                                              ; preds = %213
  %229 = load ptr, ptr %4, align 8, !tbaa !5
  %230 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %229, i32 0, i32 7
  %231 = load i8, ptr %230, align 8, !tbaa !31, !range !32, !noundef !33
  %232 = trunc i8 %231 to i1
  br i1 %232, label %233, label %238

233:                                              ; preds = %228
  %234 = load ptr, ptr %4, align 8, !tbaa !5
  %235 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %234, i32 0, i32 8
  %236 = load i8, ptr %235, align 1, !tbaa !34, !range !32, !noundef !33
  %237 = trunc i8 %236 to i1
  br i1 %237, label %238, label %305

238:                                              ; preds = %233, %228
  %239 = load ptr, ptr %4, align 8, !tbaa !5
  %240 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %239, i32 0, i32 8
  %241 = load i8, ptr %240, align 1, !tbaa !34, !range !32, !noundef !33
  %242 = trunc i8 %241 to i1
  br i1 %242, label %243, label %297

243:                                              ; preds = %238
  store i64 0, ptr %10, align 8, !tbaa !22
  br label %244

244:                                              ; preds = %274, %243
  %245 = load i64, ptr %10, align 8, !tbaa !22
  %246 = load i64, ptr %7, align 8, !tbaa !22
  %247 = sub nsw i64 %246, 1
  %248 = icmp sle i64 %245, %247
  br i1 %248, label %249, label %277

249:                                              ; preds = %244
  store i64 0, ptr %12, align 8, !tbaa !22
  br label %250

250:                                              ; preds = %270, %249
  %251 = load i64, ptr %12, align 8, !tbaa !22
  %252 = load i64, ptr %6, align 8, !tbaa !22
  %253 = sub nsw i64 %252, 1
  %254 = icmp sle i64 %251, %253
  br i1 %254, label %255, label %273

255:                                              ; preds = %250
  %256 = load ptr, ptr %4, align 8, !tbaa !5
  %257 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %256, i32 0, i32 9
  %258 = load ptr, ptr %5, align 8, !tbaa !5
  %259 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %257, ptr noundef %258)
  %260 = fsub double %259, 5.000000e-01
  %261 = load ptr, ptr %4, align 8, !tbaa !5
  %262 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %261, i32 0, i32 15
  %263 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %262, i32 0, i32 6
  %264 = load ptr, ptr %263, align 8, !tbaa !21
  %265 = load i64, ptr %10, align 8, !tbaa !22
  %266 = getelementptr inbounds ptr, ptr %264, i64 %265
  %267 = load ptr, ptr %266, align 8, !tbaa !5
  %268 = load i64, ptr %12, align 8, !tbaa !22
  %269 = getelementptr inbounds double, ptr %267, i64 %268
  store double %260, ptr %269, align 8, !tbaa !23
  br label %270

270:                                              ; preds = %255
  %271 = load i64, ptr %12, align 8, !tbaa !22
  %272 = add nsw i64 %271, 1
  store i64 %272, ptr %12, align 8, !tbaa !22
  br label %250, !llvm.loop !35

273:                                              ; preds = %250
  br label %274

274:                                              ; preds = %273
  %275 = load i64, ptr %10, align 8, !tbaa !22
  %276 = add nsw i64 %275, 1
  store i64 %276, ptr %10, align 8, !tbaa !22
  br label %244, !llvm.loop !36

277:                                              ; preds = %244
  %278 = load ptr, ptr %4, align 8, !tbaa !5
  %279 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %278, i32 0, i32 15
  %280 = load i64, ptr %7, align 8, !tbaa !22
  %281 = load i64, ptr %6, align 8, !tbaa !22
  %282 = load ptr, ptr %4, align 8, !tbaa !5
  %283 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %282, i32 0, i32 11
  %284 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9rmatrixlqEPNS_9ae_matrixEllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %279, i64 noundef %280, i64 noundef %281, ptr noundef %283, ptr noundef %284)
  %285 = load ptr, ptr %4, align 8, !tbaa !5
  %286 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %285, i32 0, i32 15
  %287 = load i64, ptr %7, align 8, !tbaa !22
  %288 = load i64, ptr %6, align 8, !tbaa !22
  %289 = load ptr, ptr %4, align 8, !tbaa !5
  %290 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %289, i32 0, i32 11
  %291 = load i64, ptr %7, align 8, !tbaa !22
  %292 = load ptr, ptr %4, align 8, !tbaa !5
  %293 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %292, i32 0, i32 12
  %294 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl16rmatrixlqunpackqEPKNS_9ae_matrixEllPKNS_9ae_vectorElPS0_PNS_8ae_stateE(ptr noundef %286, i64 noundef %287, i64 noundef %288, ptr noundef %290, i64 noundef %291, ptr noundef %293, ptr noundef %294)
  %295 = load ptr, ptr %4, align 8, !tbaa !5
  %296 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %295, i32 0, i32 8
  store i8 0, ptr %296, align 1, !tbaa !34
  br label %297

297:                                              ; preds = %277, %238
  %298 = load i64, ptr %7, align 8, !tbaa !22
  %299 = load i64, ptr %6, align 8, !tbaa !22
  %300 = load ptr, ptr %4, align 8, !tbaa !5
  %301 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %300, i32 0, i32 12
  %302 = load ptr, ptr %4, align 8, !tbaa !5
  %303 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %302, i32 0, i32 14
  %304 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixcopyEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %298, i64 noundef %299, ptr noundef %301, i64 noundef 0, i64 noundef 0, ptr noundef %303, i64 noundef 0, i64 noundef 0, ptr noundef %304)
  br label %305

305:                                              ; preds = %297, %233
  %306 = load ptr, ptr %4, align 8, !tbaa !5
  %307 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %306, i32 0, i32 32
  store i64 0, ptr %307, align 8, !tbaa !28
  %308 = load i64, ptr %16, align 8, !tbaa !22
  %309 = icmp ne i64 %308, 0
  br i1 %309, label %310, label %311

310:                                              ; preds = %305
  br label %550

311:                                              ; preds = %305
  store i64 0, ptr %15, align 8, !tbaa !22
  br label %312

312:                                              ; preds = %518, %311
  %313 = load ptr, ptr %4, align 8, !tbaa !5
  %314 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %313, i32 0, i32 3
  %315 = load i64, ptr %314, align 8, !tbaa !37
  %316 = icmp eq i64 %315, 0
  br i1 %316, label %325, label %317

317:                                              ; preds = %312
  %318 = load ptr, ptr %4, align 8, !tbaa !5
  %319 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %318, i32 0, i32 32
  %320 = load i64, ptr %319, align 8, !tbaa !28
  %321 = load ptr, ptr %4, align 8, !tbaa !5
  %322 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %321, i32 0, i32 3
  %323 = load i64, ptr %322, align 8, !tbaa !37
  %324 = icmp slt i64 %320, %323
  br i1 %324, label %325, label %329

325:                                              ; preds = %317, %312
  %326 = load i64, ptr %15, align 8, !tbaa !22
  %327 = load i64, ptr @_ZN11alglib_implL18evd_stepswithintolE, align 8, !tbaa !22
  %328 = icmp slt i64 %326, %327
  br i1 %328, label %330, label %329

329:                                              ; preds = %325, %317
  br label %549

330:                                              ; preds = %325
  %331 = load i64, ptr %7, align 8, !tbaa !22
  %332 = load i64, ptr %6, align 8, !tbaa !22
  %333 = load ptr, ptr %4, align 8, !tbaa !5
  %334 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %333, i32 0, i32 14
  %335 = load ptr, ptr %4, align 8, !tbaa !5
  %336 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %335, i32 0, i32 13
  %337 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixcopyEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %331, i64 noundef %332, ptr noundef %334, i64 noundef 0, i64 noundef 0, ptr noundef %336, i64 noundef 0, i64 noundef 0, ptr noundef %337)
  %338 = load i64, ptr %7, align 8, !tbaa !22
  %339 = load i64, ptr %6, align 8, !tbaa !22
  %340 = load ptr, ptr %4, align 8, !tbaa !5
  %341 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %340, i32 0, i32 13
  %342 = load ptr, ptr %4, align 8, !tbaa !5
  %343 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %342, i32 0, i32 28
  %344 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl16rmatrixtransposeEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %338, i64 noundef %339, ptr noundef %341, i64 noundef 0, i64 noundef 0, ptr noundef %343, i64 noundef 0, i64 noundef 0, ptr noundef %344)
  %345 = load ptr, ptr %4, align 8, !tbaa !5
  %346 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL16evd_clearrfieldsEPNS_16eigsubspacestateEPNS_8ae_stateE(ptr noundef %345, ptr noundef %346)
  %347 = load ptr, ptr %4, align 8, !tbaa !5
  %348 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %347, i32 0, i32 30
  store i64 0, ptr %348, align 8, !tbaa !38
  %349 = load i64, ptr %7, align 8, !tbaa !22
  %350 = load ptr, ptr %4, align 8, !tbaa !5
  %351 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %350, i32 0, i32 31
  store i64 %349, ptr %351, align 8, !tbaa !39
  %352 = load ptr, ptr %4, align 8, !tbaa !5
  %353 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %352, i32 0, i32 33
  %354 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %353, i32 0, i32 0
  store i32 0, ptr %354, align 8, !tbaa !9
  br label %904

355:                                              ; preds = %109
  %356 = load ptr, ptr %4, align 8, !tbaa !5
  %357 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %356, i32 0, i32 4
  %358 = load double, ptr %357, align 8, !tbaa !40
  %359 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %358, double noundef 0.000000e+00)
  br i1 %359, label %360, label %518

360:                                              ; preds = %355
  %361 = load ptr, ptr %4, align 8, !tbaa !5
  %362 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %361, i32 0, i32 6
  %363 = load i64, ptr %362, align 8, !tbaa !27
  %364 = icmp eq i64 %363, 0
  %365 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %364, ptr noundef @.str.318, ptr noundef %365)
  %366 = load ptr, ptr %4, align 8, !tbaa !5
  %367 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %366, i32 0, i32 16
  %368 = load i64, ptr %7, align 8, !tbaa !22
  %369 = load i64, ptr %7, align 8, !tbaa !22
  %370 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %367, i64 noundef %368, i64 noundef %369, ptr noundef %370)
  %371 = load i64, ptr %7, align 8, !tbaa !22
  %372 = load i64, ptr %7, align 8, !tbaa !22
  %373 = load i64, ptr %6, align 8, !tbaa !22
  %374 = load ptr, ptr %4, align 8, !tbaa !5
  %375 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %374, i32 0, i32 13
  %376 = load ptr, ptr %4, align 8, !tbaa !5
  %377 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %376, i32 0, i32 29
  %378 = load ptr, ptr %4, align 8, !tbaa !5
  %379 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %378, i32 0, i32 16
  %380 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %371, i64 noundef %372, i64 noundef %373, double noundef 1.000000e+00, ptr noundef %375, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %377, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %379, i64 noundef 0, i64 noundef 0, ptr noundef %380)
  %381 = load ptr, ptr %4, align 8, !tbaa !5
  %382 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %381, i32 0, i32 16
  %383 = load i64, ptr %7, align 8, !tbaa !22
  %384 = load ptr, ptr %4, align 8, !tbaa !5
  %385 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %384, i32 0, i32 24
  %386 = load ptr, ptr %4, align 8, !tbaa !5
  %387 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %386, i32 0, i32 20
  %388 = load ptr, ptr %5, align 8, !tbaa !5
  %389 = call noundef zeroext i1 @_ZN11alglib_impl10smatrixevdEPKNS_9ae_matrixEllbPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef %382, i64 noundef %383, i64 noundef 0, i1 noundef zeroext true, ptr noundef %385, ptr noundef %387, ptr noundef %388)
  br i1 %389, label %392, label %390

390:                                              ; preds = %360
  %391 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef @.str.319, ptr noundef %391)
  br label %392

392:                                              ; preds = %390, %360
  store i64 0, ptr %12, align 8, !tbaa !22
  br label %393

393:                                              ; preds = %414, %392
  %394 = load i64, ptr %12, align 8, !tbaa !22
  %395 = load i64, ptr %7, align 8, !tbaa !22
  %396 = sub nsw i64 %395, 1
  %397 = icmp sle i64 %394, %396
  br i1 %397, label %398, label %417

398:                                              ; preds = %393
  %399 = load ptr, ptr %4, align 8, !tbaa !5
  %400 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %399, i32 0, i32 24
  %401 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %400, i32 0, i32 4
  %402 = load ptr, ptr %401, align 8, !tbaa !21
  %403 = load i64, ptr %12, align 8, !tbaa !22
  %404 = getelementptr inbounds double, ptr %402, i64 %403
  %405 = load double, ptr %404, align 8, !tbaa !23
  %406 = load ptr, ptr %5, align 8, !tbaa !5
  %407 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %405, ptr noundef %406)
  %408 = load ptr, ptr %4, align 8, !tbaa !5
  %409 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %408, i32 0, i32 26
  %410 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %409, i32 0, i32 4
  %411 = load ptr, ptr %410, align 8, !tbaa !21
  %412 = load i64, ptr %12, align 8, !tbaa !22
  %413 = getelementptr inbounds double, ptr %411, i64 %412
  store double %407, ptr %413, align 8, !tbaa !23
  br label %414

414:                                              ; preds = %398
  %415 = load i64, ptr %12, align 8, !tbaa !22
  %416 = add nsw i64 %415, 1
  store i64 %416, ptr %12, align 8, !tbaa !22
  br label %393, !llvm.loop !41

417:                                              ; preds = %393
  %418 = load ptr, ptr %4, align 8, !tbaa !5
  %419 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %418, i32 0, i32 26
  %420 = load i64, ptr %7, align 8, !tbaa !22
  %421 = load ptr, ptr %4, align 8, !tbaa !5
  %422 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %421, i32 0, i32 27
  %423 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rankxuntiedEPNS_9ae_vectorElPNS_9apbuffersEPNS_8ae_stateE(ptr noundef %419, i64 noundef %420, ptr noundef %422, ptr noundef %423)
  store double 0.000000e+00, ptr %14, align 8, !tbaa !23
  store double 0.000000e+00, ptr %13, align 8, !tbaa !23
  store i64 0, ptr %12, align 8, !tbaa !22
  br label %424

424:                                              ; preds = %476, %417
  %425 = load i64, ptr %12, align 8, !tbaa !22
  %426 = load i64, ptr %7, align 8, !tbaa !22
  %427 = sub nsw i64 %426, 1
  %428 = icmp sle i64 %425, %427
  br i1 %428, label %429, label %479

429:                                              ; preds = %424
  %430 = load ptr, ptr %4, align 8, !tbaa !5
  %431 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %430, i32 0, i32 26
  %432 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %431, i32 0, i32 4
  %433 = load ptr, ptr %432, align 8, !tbaa !21
  %434 = load i64, ptr %12, align 8, !tbaa !22
  %435 = getelementptr inbounds double, ptr %433, i64 %434
  %436 = load double, ptr %435, align 8, !tbaa !23
  %437 = load i64, ptr %7, align 8, !tbaa !22
  %438 = load i64, ptr %8, align 8, !tbaa !22
  %439 = sub nsw i64 %437, %438
  %440 = sitofp i64 %439 to double
  %441 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %436, double noundef %440)
  br i1 %441, label %442, label %475

442:                                              ; preds = %429
  %443 = load double, ptr %14, align 8, !tbaa !23
  %444 = load ptr, ptr %4, align 8, !tbaa !5
  %445 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %444, i32 0, i32 24
  %446 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %445, i32 0, i32 4
  %447 = load ptr, ptr %446, align 8, !tbaa !21
  %448 = load i64, ptr %12, align 8, !tbaa !22
  %449 = getelementptr inbounds double, ptr %447, i64 %448
  %450 = load double, ptr %449, align 8, !tbaa !23
  %451 = load ptr, ptr %4, align 8, !tbaa !5
  %452 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %451, i32 0, i32 25
  %453 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %452, i32 0, i32 4
  %454 = load ptr, ptr %453, align 8, !tbaa !21
  %455 = load i64, ptr %12, align 8, !tbaa !22
  %456 = getelementptr inbounds double, ptr %454, i64 %455
  %457 = load double, ptr %456, align 8, !tbaa !23
  %458 = fsub double %450, %457
  %459 = load ptr, ptr %5, align 8, !tbaa !5
  %460 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %458, ptr noundef %459)
  %461 = load ptr, ptr %5, align 8, !tbaa !5
  %462 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %443, double noundef %460, ptr noundef %461)
  store double %462, ptr %14, align 8, !tbaa !23
  %463 = load double, ptr %13, align 8, !tbaa !23
  %464 = load ptr, ptr %4, align 8, !tbaa !5
  %465 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %464, i32 0, i32 24
  %466 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %465, i32 0, i32 4
  %467 = load ptr, ptr %466, align 8, !tbaa !21
  %468 = load i64, ptr %12, align 8, !tbaa !22
  %469 = getelementptr inbounds double, ptr %467, i64 %468
  %470 = load double, ptr %469, align 8, !tbaa !23
  %471 = load ptr, ptr %5, align 8, !tbaa !5
  %472 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %470, ptr noundef %471)
  %473 = load ptr, ptr %5, align 8, !tbaa !5
  %474 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %463, double noundef %472, ptr noundef %473)
  store double %474, ptr %13, align 8, !tbaa !23
  br label %475

475:                                              ; preds = %442, %429
  br label %476

476:                                              ; preds = %475
  %477 = load i64, ptr %12, align 8, !tbaa !22
  %478 = add nsw i64 %477, 1
  store i64 %478, ptr %12, align 8, !tbaa !22
  br label %424, !llvm.loop !42

479:                                              ; preds = %424
  %480 = load double, ptr %13, align 8, !tbaa !23
  %481 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %480, double noundef 0.000000e+00)
  br i1 %481, label %482, label %483

482:                                              ; preds = %479
  store double 1.000000e+00, ptr %13, align 8, !tbaa !23
  br label %483

483:                                              ; preds = %482, %479
  %484 = load double, ptr %14, align 8, !tbaa !23
  %485 = load ptr, ptr %4, align 8, !tbaa !5
  %486 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %485, i32 0, i32 4
  %487 = load double, ptr %486, align 8, !tbaa !40
  %488 = load double, ptr %13, align 8, !tbaa !23
  %489 = fmul double %487, %488
  %490 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %484, double noundef %489)
  br i1 %490, label %491, label %493

491:                                              ; preds = %483
  %492 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %15, ptr noundef %492)
  br label %494

493:                                              ; preds = %483
  store i64 0, ptr %15, align 8, !tbaa !22
  br label %494

494:                                              ; preds = %493, %491
  store i64 0, ptr %12, align 8, !tbaa !22
  br label %495

495:                                              ; preds = %514, %494
  %496 = load i64, ptr %12, align 8, !tbaa !22
  %497 = load i64, ptr %7, align 8, !tbaa !22
  %498 = sub nsw i64 %497, 1
  %499 = icmp sle i64 %496, %498
  br i1 %499, label %500, label %517

500:                                              ; preds = %495
  %501 = load ptr, ptr %4, align 8, !tbaa !5
  %502 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %501, i32 0, i32 24
  %503 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %502, i32 0, i32 4
  %504 = load ptr, ptr %503, align 8, !tbaa !21
  %505 = load i64, ptr %12, align 8, !tbaa !22
  %506 = getelementptr inbounds double, ptr %504, i64 %505
  %507 = load double, ptr %506, align 8, !tbaa !23
  %508 = load ptr, ptr %4, align 8, !tbaa !5
  %509 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %508, i32 0, i32 25
  %510 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %509, i32 0, i32 4
  %511 = load ptr, ptr %510, align 8, !tbaa !21
  %512 = load i64, ptr %12, align 8, !tbaa !22
  %513 = getelementptr inbounds double, ptr %511, i64 %512
  store double %507, ptr %513, align 8, !tbaa !23
  br label %514

514:                                              ; preds = %500
  %515 = load i64, ptr %12, align 8, !tbaa !22
  %516 = add nsw i64 %515, 1
  store i64 %516, ptr %12, align 8, !tbaa !22
  br label %495, !llvm.loop !43

517:                                              ; preds = %495
  br label %518

518:                                              ; preds = %517, %355
  %519 = load i64, ptr %6, align 8, !tbaa !22
  %520 = load i64, ptr %7, align 8, !tbaa !22
  %521 = load ptr, ptr %4, align 8, !tbaa !5
  %522 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %521, i32 0, i32 29
  %523 = load ptr, ptr %4, align 8, !tbaa !5
  %524 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %523, i32 0, i32 15
  %525 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl16rmatrixtransposeEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %519, i64 noundef %520, ptr noundef %522, i64 noundef 0, i64 noundef 0, ptr noundef %524, i64 noundef 0, i64 noundef 0, ptr noundef %525)
  %526 = load ptr, ptr %4, align 8, !tbaa !5
  %527 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %526, i32 0, i32 15
  %528 = load i64, ptr %7, align 8, !tbaa !22
  %529 = load i64, ptr %6, align 8, !tbaa !22
  %530 = load ptr, ptr %4, align 8, !tbaa !5
  %531 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %530, i32 0, i32 11
  %532 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9rmatrixlqEPNS_9ae_matrixEllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %527, i64 noundef %528, i64 noundef %529, ptr noundef %531, ptr noundef %532)
  %533 = load ptr, ptr %4, align 8, !tbaa !5
  %534 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %533, i32 0, i32 15
  %535 = load i64, ptr %7, align 8, !tbaa !22
  %536 = load i64, ptr %6, align 8, !tbaa !22
  %537 = load ptr, ptr %4, align 8, !tbaa !5
  %538 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %537, i32 0, i32 11
  %539 = load i64, ptr %7, align 8, !tbaa !22
  %540 = load ptr, ptr %4, align 8, !tbaa !5
  %541 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %540, i32 0, i32 14
  %542 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl16rmatrixlqunpackqEPKNS_9ae_matrixEllPKNS_9ae_vectorElPS0_PNS_8ae_stateE(ptr noundef %534, i64 noundef %535, i64 noundef %536, ptr noundef %538, i64 noundef %539, ptr noundef %541, ptr noundef %542)
  %543 = load ptr, ptr %4, align 8, !tbaa !5
  %544 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %543, i32 0, i32 32
  %545 = load i64, ptr %544, align 8, !tbaa !28
  %546 = add nsw i64 %545, 1
  %547 = load ptr, ptr %4, align 8, !tbaa !5
  %548 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %547, i32 0, i32 32
  store i64 %546, ptr %548, align 8, !tbaa !28
  br label %312

549:                                              ; preds = %329
  br label %550

550:                                              ; preds = %549, %310
  %551 = load i64, ptr %16, align 8, !tbaa !22
  %552 = icmp ne i64 %551, 1
  br i1 %552, label %553, label %554

553:                                              ; preds = %550
  br label %746

554:                                              ; preds = %550
  br label %555

555:                                              ; preds = %587, %554
  %556 = load ptr, ptr %4, align 8, !tbaa !5
  %557 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %556, i32 0, i32 32
  %558 = load i64, ptr %557, align 8, !tbaa !28
  %559 = sitofp i64 %558 to double
  %560 = load ptr, ptr %4, align 8, !tbaa !5
  %561 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %560, i32 0, i32 3
  %562 = load i64, ptr %561, align 8, !tbaa !37
  %563 = sitofp i64 %562 to double
  %564 = load ptr, ptr %5, align 8, !tbaa !5
  %565 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %563, double noundef 5.000000e+00, ptr noundef %564)
  %566 = fsub double %565, 1.000000e+00
  %567 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %559, double noundef %566)
  br i1 %567, label %568, label %569

568:                                              ; preds = %555
  br label %601

569:                                              ; preds = %555
  %570 = load i64, ptr %7, align 8, !tbaa !22
  %571 = load i64, ptr %6, align 8, !tbaa !22
  %572 = load ptr, ptr %4, align 8, !tbaa !5
  %573 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %572, i32 0, i32 14
  %574 = load ptr, ptr %4, align 8, !tbaa !5
  %575 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %574, i32 0, i32 28
  %576 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl16rmatrixtransposeEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %570, i64 noundef %571, ptr noundef %573, i64 noundef 0, i64 noundef 0, ptr noundef %575, i64 noundef 0, i64 noundef 0, ptr noundef %576)
  %577 = load ptr, ptr %4, align 8, !tbaa !5
  %578 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL16evd_clearrfieldsEPNS_16eigsubspacestateEPNS_8ae_stateE(ptr noundef %577, ptr noundef %578)
  %579 = load ptr, ptr %4, align 8, !tbaa !5
  %580 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %579, i32 0, i32 30
  store i64 0, ptr %580, align 8, !tbaa !38
  %581 = load i64, ptr %7, align 8, !tbaa !22
  %582 = load ptr, ptr %4, align 8, !tbaa !5
  %583 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %582, i32 0, i32 31
  store i64 %581, ptr %583, align 8, !tbaa !39
  %584 = load ptr, ptr %4, align 8, !tbaa !5
  %585 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %584, i32 0, i32 33
  %586 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %585, i32 0, i32 0
  store i32 1, ptr %586, align 8, !tbaa !9
  br label %904

587:                                              ; preds = %116
  %588 = load i64, ptr %6, align 8, !tbaa !22
  %589 = load i64, ptr %7, align 8, !tbaa !22
  %590 = load ptr, ptr %4, align 8, !tbaa !5
  %591 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %590, i32 0, i32 29
  %592 = load ptr, ptr %4, align 8, !tbaa !5
  %593 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %592, i32 0, i32 14
  %594 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl16rmatrixtransposeEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %588, i64 noundef %589, ptr noundef %591, i64 noundef 0, i64 noundef 0, ptr noundef %593, i64 noundef 0, i64 noundef 0, ptr noundef %594)
  %595 = load ptr, ptr %4, align 8, !tbaa !5
  %596 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %595, i32 0, i32 32
  %597 = load i64, ptr %596, align 8, !tbaa !28
  %598 = add nsw i64 %597, 1
  %599 = load ptr, ptr %4, align 8, !tbaa !5
  %600 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %599, i32 0, i32 32
  store i64 %598, ptr %600, align 8, !tbaa !28
  br label %555

601:                                              ; preds = %568
  %602 = load i64, ptr %6, align 8, !tbaa !22
  %603 = load ptr, ptr %4, align 8, !tbaa !5
  %604 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %603, i32 0, i32 23
  %605 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %602, ptr noundef %604, ptr noundef %605)
  store i64 0, ptr %10, align 8, !tbaa !22
  br label %606

606:                                              ; preds = %711, %601
  %607 = load i64, ptr %10, align 8, !tbaa !22
  %608 = load i64, ptr %7, align 8, !tbaa !22
  %609 = sub nsw i64 %608, 1
  %610 = icmp sle i64 %607, %609
  br i1 %610, label %611, label %714

611:                                              ; preds = %606
  %612 = load i64, ptr %6, align 8, !tbaa !22
  %613 = load ptr, ptr %4, align 8, !tbaa !5
  %614 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %613, i32 0, i32 14
  %615 = load i64, ptr %10, align 8, !tbaa !22
  %616 = load ptr, ptr %4, align 8, !tbaa !5
  %617 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %616, i32 0, i32 23
  %618 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rcopyrvElPKNS_9ae_matrixElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %612, ptr noundef %614, i64 noundef %615, ptr noundef %617, ptr noundef %618)
  %619 = load i64, ptr %6, align 8, !tbaa !22
  %620 = load ptr, ptr %4, align 8, !tbaa !5
  %621 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %620, i32 0, i32 23
  %622 = load ptr, ptr %5, align 8, !tbaa !5
  %623 = call noundef double @_ZN11alglib_impl6rdotv2ElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %619, ptr noundef %621, ptr noundef %622)
  %624 = load ptr, ptr %5, align 8, !tbaa !5
  %625 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %623, ptr noundef %624)
  store double %625, ptr %14, align 8, !tbaa !23
  %626 = load ptr, ptr %4, align 8, !tbaa !5
  %627 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %626, i32 0, i32 14
  %628 = load i64, ptr %10, align 8, !tbaa !22
  %629 = load i64, ptr %6, align 8, !tbaa !22
  %630 = load ptr, ptr %4, align 8, !tbaa !5
  %631 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %630, i32 0, i32 23
  %632 = load ptr, ptr %4, align 8, !tbaa !5
  %633 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %632, i32 0, i32 23
  %634 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl18rowwisegramschmidtEPKNS_9ae_matrixEllPNS_9ae_vectorES4_bPNS_8ae_stateE(ptr noundef %627, i64 noundef %628, i64 noundef %629, ptr noundef %631, ptr noundef %633, i1 noundef zeroext false, ptr noundef %634)
  %635 = load i64, ptr %6, align 8, !tbaa !22
  %636 = load ptr, ptr %4, align 8, !tbaa !5
  %637 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %636, i32 0, i32 23
  %638 = load ptr, ptr %5, align 8, !tbaa !5
  %639 = call noundef double @_ZN11alglib_impl6rdotv2ElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %635, ptr noundef %637, ptr noundef %638)
  %640 = load ptr, ptr %5, align 8, !tbaa !5
  %641 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %639, ptr noundef %640)
  store double %641, ptr %13, align 8, !tbaa !23
  br label %642

642:                                              ; preds = %673, %611
  %643 = load double, ptr %14, align 8, !tbaa !23
  %644 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %643, double noundef 0.000000e+00)
  br i1 %644, label %650, label %645

645:                                              ; preds = %642
  %646 = load double, ptr %13, align 8, !tbaa !23
  %647 = load double, ptr %14, align 8, !tbaa !23
  %648 = fmul double 5.000000e-13, %647
  %649 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %646, double noundef %648)
  br label %650

650:                                              ; preds = %645, %642
  %651 = phi i1 [ true, %642 ], [ %649, %645 ]
  br i1 %651, label %652, label %697

652:                                              ; preds = %650
  store i64 0, ptr %12, align 8, !tbaa !22
  br label %653

653:                                              ; preds = %670, %652
  %654 = load i64, ptr %12, align 8, !tbaa !22
  %655 = load i64, ptr %6, align 8, !tbaa !22
  %656 = sub nsw i64 %655, 1
  %657 = icmp sle i64 %654, %656
  br i1 %657, label %658, label %673

658:                                              ; preds = %653
  %659 = load ptr, ptr %4, align 8, !tbaa !5
  %660 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %659, i32 0, i32 9
  %661 = load ptr, ptr %5, align 8, !tbaa !5
  %662 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %660, ptr noundef %661)
  %663 = fsub double %662, 5.000000e-01
  %664 = load ptr, ptr %4, align 8, !tbaa !5
  %665 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %664, i32 0, i32 23
  %666 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %665, i32 0, i32 4
  %667 = load ptr, ptr %666, align 8, !tbaa !21
  %668 = load i64, ptr %12, align 8, !tbaa !22
  %669 = getelementptr inbounds double, ptr %667, i64 %668
  store double %663, ptr %669, align 8, !tbaa !23
  br label %670

670:                                              ; preds = %658
  %671 = load i64, ptr %12, align 8, !tbaa !22
  %672 = add nsw i64 %671, 1
  store i64 %672, ptr %12, align 8, !tbaa !22
  br label %653, !llvm.loop !44

673:                                              ; preds = %653
  %674 = load i64, ptr %6, align 8, !tbaa !22
  %675 = load ptr, ptr %4, align 8, !tbaa !5
  %676 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %675, i32 0, i32 23
  %677 = load ptr, ptr %5, align 8, !tbaa !5
  %678 = call noundef double @_ZN11alglib_impl6rdotv2ElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %674, ptr noundef %676, ptr noundef %677)
  %679 = load ptr, ptr %5, align 8, !tbaa !5
  %680 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %678, ptr noundef %679)
  store double %680, ptr %14, align 8, !tbaa !23
  %681 = load ptr, ptr %4, align 8, !tbaa !5
  %682 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %681, i32 0, i32 14
  %683 = load i64, ptr %10, align 8, !tbaa !22
  %684 = load i64, ptr %6, align 8, !tbaa !22
  %685 = load ptr, ptr %4, align 8, !tbaa !5
  %686 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %685, i32 0, i32 23
  %687 = load ptr, ptr %4, align 8, !tbaa !5
  %688 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %687, i32 0, i32 23
  %689 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl18rowwisegramschmidtEPKNS_9ae_matrixEllPNS_9ae_vectorES4_bPNS_8ae_stateE(ptr noundef %682, i64 noundef %683, i64 noundef %684, ptr noundef %686, ptr noundef %688, i1 noundef zeroext false, ptr noundef %689)
  %690 = load i64, ptr %6, align 8, !tbaa !22
  %691 = load ptr, ptr %4, align 8, !tbaa !5
  %692 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %691, i32 0, i32 23
  %693 = load ptr, ptr %5, align 8, !tbaa !5
  %694 = call noundef double @_ZN11alglib_impl6rdotv2ElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %690, ptr noundef %692, ptr noundef %693)
  %695 = load ptr, ptr %5, align 8, !tbaa !5
  %696 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %694, ptr noundef %695)
  store double %696, ptr %13, align 8, !tbaa !23
  br label %642, !llvm.loop !45

697:                                              ; preds = %650
  %698 = load i64, ptr %6, align 8, !tbaa !22
  %699 = load double, ptr %13, align 8, !tbaa !23
  %700 = fdiv double 1.000000e+00, %699
  %701 = load ptr, ptr %4, align 8, !tbaa !5
  %702 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %701, i32 0, i32 23
  %703 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl5rmulvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %698, double noundef %700, ptr noundef %702, ptr noundef %703)
  %704 = load i64, ptr %6, align 8, !tbaa !22
  %705 = load ptr, ptr %4, align 8, !tbaa !5
  %706 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %705, i32 0, i32 23
  %707 = load ptr, ptr %4, align 8, !tbaa !5
  %708 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %707, i32 0, i32 14
  %709 = load i64, ptr %10, align 8, !tbaa !22
  %710 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl7rcopyvrElPKNS_9ae_vectorEPNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %704, ptr noundef %706, ptr noundef %708, i64 noundef %709, ptr noundef %710)
  br label %711

711:                                              ; preds = %697
  %712 = load i64, ptr %10, align 8, !tbaa !22
  %713 = add nsw i64 %712, 1
  store i64 %713, ptr %10, align 8, !tbaa !22
  br label %606, !llvm.loop !46

714:                                              ; preds = %606
  %715 = load i64, ptr %7, align 8, !tbaa !22
  %716 = load i64, ptr %6, align 8, !tbaa !22
  %717 = load ptr, ptr %4, align 8, !tbaa !5
  %718 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %717, i32 0, i32 14
  %719 = load ptr, ptr %4, align 8, !tbaa !5
  %720 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %719, i32 0, i32 13
  %721 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixcopyEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %715, i64 noundef %716, ptr noundef %718, i64 noundef 0, i64 noundef 0, ptr noundef %720, i64 noundef 0, i64 noundef 0, ptr noundef %721)
  %722 = load i64, ptr %7, align 8, !tbaa !22
  %723 = load i64, ptr %6, align 8, !tbaa !22
  %724 = load ptr, ptr %4, align 8, !tbaa !5
  %725 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %724, i32 0, i32 13
  %726 = load ptr, ptr %4, align 8, !tbaa !5
  %727 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %726, i32 0, i32 28
  %728 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl16rmatrixtransposeEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %722, i64 noundef %723, ptr noundef %725, i64 noundef 0, i64 noundef 0, ptr noundef %727, i64 noundef 0, i64 noundef 0, ptr noundef %728)
  %729 = load ptr, ptr %4, align 8, !tbaa !5
  %730 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL16evd_clearrfieldsEPNS_16eigsubspacestateEPNS_8ae_stateE(ptr noundef %729, ptr noundef %730)
  %731 = load ptr, ptr %4, align 8, !tbaa !5
  %732 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %731, i32 0, i32 30
  store i64 0, ptr %732, align 8, !tbaa !38
  %733 = load i64, ptr %7, align 8, !tbaa !22
  %734 = load ptr, ptr %4, align 8, !tbaa !5
  %735 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %734, i32 0, i32 31
  store i64 %733, ptr %735, align 8, !tbaa !39
  %736 = load ptr, ptr %4, align 8, !tbaa !5
  %737 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %736, i32 0, i32 33
  %738 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %737, i32 0, i32 0
  store i32 2, ptr %738, align 8, !tbaa !9
  br label %904

739:                                              ; preds = %123
  %740 = load ptr, ptr %4, align 8, !tbaa !5
  %741 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %740, i32 0, i32 32
  %742 = load i64, ptr %741, align 8, !tbaa !28
  %743 = add nsw i64 %742, 1
  %744 = load ptr, ptr %4, align 8, !tbaa !5
  %745 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %744, i32 0, i32 32
  store i64 %743, ptr %745, align 8, !tbaa !28
  br label %746

746:                                              ; preds = %739, %553
  %747 = load ptr, ptr %4, align 8, !tbaa !5
  %748 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %747, i32 0, i32 5
  %749 = load i64, ptr %748, align 8, !tbaa !47
  %750 = icmp eq i64 %749, 1
  %751 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %750, ptr noundef @.str.73, ptr noundef %751)
  %752 = load i64, ptr %7, align 8, !tbaa !22
  %753 = load i64, ptr %7, align 8, !tbaa !22
  %754 = load i64, ptr %6, align 8, !tbaa !22
  %755 = load ptr, ptr %4, align 8, !tbaa !5
  %756 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %755, i32 0, i32 13
  %757 = load ptr, ptr %4, align 8, !tbaa !5
  %758 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %757, i32 0, i32 29
  %759 = load ptr, ptr %4, align 8, !tbaa !5
  %760 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %759, i32 0, i32 16
  %761 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %752, i64 noundef %753, i64 noundef %754, double noundef 1.000000e+00, ptr noundef %756, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %758, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %760, i64 noundef 0, i64 noundef 0, ptr noundef %761)
  %762 = load ptr, ptr %4, align 8, !tbaa !5
  %763 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %762, i32 0, i32 16
  %764 = load i64, ptr %7, align 8, !tbaa !22
  %765 = load ptr, ptr %4, align 8, !tbaa !5
  %766 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %765, i32 0, i32 22
  %767 = load ptr, ptr %4, align 8, !tbaa !5
  %768 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %767, i32 0, i32 18
  %769 = load ptr, ptr %5, align 8, !tbaa !5
  %770 = call noundef zeroext i1 @_ZN11alglib_impl10smatrixevdEPKNS_9ae_matrixEllbPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef %763, i64 noundef %764, i64 noundef 1, i1 noundef zeroext true, ptr noundef %766, ptr noundef %768, ptr noundef %769)
  br i1 %770, label %773, label %771

771:                                              ; preds = %746
  %772 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef @.str.319, ptr noundef %772)
  br label %773

773:                                              ; preds = %771, %746
  store i64 0, ptr %12, align 8, !tbaa !22
  br label %774

774:                                              ; preds = %795, %773
  %775 = load i64, ptr %12, align 8, !tbaa !22
  %776 = load i64, ptr %7, align 8, !tbaa !22
  %777 = sub nsw i64 %776, 1
  %778 = icmp sle i64 %775, %777
  br i1 %778, label %779, label %798

779:                                              ; preds = %774
  %780 = load ptr, ptr %4, align 8, !tbaa !5
  %781 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %780, i32 0, i32 22
  %782 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %781, i32 0, i32 4
  %783 = load ptr, ptr %782, align 8, !tbaa !21
  %784 = load i64, ptr %12, align 8, !tbaa !22
  %785 = getelementptr inbounds double, ptr %783, i64 %784
  %786 = load double, ptr %785, align 8, !tbaa !23
  %787 = load ptr, ptr %5, align 8, !tbaa !5
  %788 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %786, ptr noundef %787)
  %789 = load ptr, ptr %4, align 8, !tbaa !5
  %790 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %789, i32 0, i32 26
  %791 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %790, i32 0, i32 4
  %792 = load ptr, ptr %791, align 8, !tbaa !21
  %793 = load i64, ptr %12, align 8, !tbaa !22
  %794 = getelementptr inbounds double, ptr %792, i64 %793
  store double %788, ptr %794, align 8, !tbaa !23
  br label %795

795:                                              ; preds = %779
  %796 = load i64, ptr %12, align 8, !tbaa !22
  %797 = add nsw i64 %796, 1
  store i64 %797, ptr %12, align 8, !tbaa !22
  br label %774, !llvm.loop !48

798:                                              ; preds = %774
  %799 = load ptr, ptr %4, align 8, !tbaa !5
  %800 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %799, i32 0, i32 26
  %801 = load i64, ptr %7, align 8, !tbaa !22
  %802 = load ptr, ptr %4, align 8, !tbaa !5
  %803 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %802, i32 0, i32 27
  %804 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rankxuntiedEPNS_9ae_vectorElPNS_9apbuffersEPNS_8ae_stateE(ptr noundef %800, i64 noundef %801, ptr noundef %803, ptr noundef %804)
  store i64 0, ptr %9, align 8, !tbaa !22
  %805 = load i64, ptr %7, align 8, !tbaa !22
  %806 = sub nsw i64 %805, 1
  store i64 %806, ptr %10, align 8, !tbaa !22
  br label %807

807:                                              ; preds = %884, %798
  %808 = load i64, ptr %10, align 8, !tbaa !22
  %809 = load i64, ptr %7, align 8, !tbaa !22
  %810 = load i64, ptr %8, align 8, !tbaa !22
  %811 = sub nsw i64 %809, %810
  %812 = icmp sge i64 %808, %811
  br i1 %812, label %813, label %887

813:                                              ; preds = %807
  store i64 0, ptr %11, align 8, !tbaa !22
  br label %814

814:                                              ; preds = %880, %813
  %815 = load i64, ptr %11, align 8, !tbaa !22
  %816 = load i64, ptr %7, align 8, !tbaa !22
  %817 = sub nsw i64 %816, 1
  %818 = icmp sle i64 %815, %817
  br i1 %818, label %819, label %883

819:                                              ; preds = %814
  %820 = load ptr, ptr %4, align 8, !tbaa !5
  %821 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %820, i32 0, i32 26
  %822 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %821, i32 0, i32 4
  %823 = load ptr, ptr %822, align 8, !tbaa !21
  %824 = load i64, ptr %11, align 8, !tbaa !22
  %825 = getelementptr inbounds double, ptr %823, i64 %824
  %826 = load double, ptr %825, align 8, !tbaa !23
  %827 = load i64, ptr %10, align 8, !tbaa !22
  %828 = sitofp i64 %827 to double
  %829 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %826, double noundef %828)
  br i1 %829, label %830, label %879

830:                                              ; preds = %819
  %831 = load i64, ptr %9, align 8, !tbaa !22
  %832 = load i64, ptr %8, align 8, !tbaa !22
  %833 = icmp slt i64 %831, %832
  %834 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %833, ptr noundef @.str.318, ptr noundef %834)
  %835 = load ptr, ptr %4, align 8, !tbaa !5
  %836 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %835, i32 0, i32 22
  %837 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %836, i32 0, i32 4
  %838 = load ptr, ptr %837, align 8, !tbaa !21
  %839 = load i64, ptr %11, align 8, !tbaa !22
  %840 = getelementptr inbounds double, ptr %838, i64 %839
  %841 = load double, ptr %840, align 8, !tbaa !23
  %842 = load ptr, ptr %4, align 8, !tbaa !5
  %843 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %842, i32 0, i32 21
  %844 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %843, i32 0, i32 4
  %845 = load ptr, ptr %844, align 8, !tbaa !21
  %846 = load i64, ptr %9, align 8, !tbaa !22
  %847 = getelementptr inbounds double, ptr %845, i64 %846
  store double %841, ptr %847, align 8, !tbaa !23
  store i64 0, ptr %12, align 8, !tbaa !22
  br label %848

848:                                              ; preds = %873, %830
  %849 = load i64, ptr %12, align 8, !tbaa !22
  %850 = load i64, ptr %7, align 8, !tbaa !22
  %851 = sub nsw i64 %850, 1
  %852 = icmp sle i64 %849, %851
  br i1 %852, label %853, label %876

853:                                              ; preds = %848
  %854 = load ptr, ptr %4, align 8, !tbaa !5
  %855 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %854, i32 0, i32 18
  %856 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %855, i32 0, i32 6
  %857 = load ptr, ptr %856, align 8, !tbaa !21
  %858 = load i64, ptr %12, align 8, !tbaa !22
  %859 = getelementptr inbounds ptr, ptr %857, i64 %858
  %860 = load ptr, ptr %859, align 8, !tbaa !5
  %861 = load i64, ptr %11, align 8, !tbaa !22
  %862 = getelementptr inbounds double, ptr %860, i64 %861
  %863 = load double, ptr %862, align 8, !tbaa !23
  %864 = load ptr, ptr %4, align 8, !tbaa !5
  %865 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %864, i32 0, i32 17
  %866 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %865, i32 0, i32 6
  %867 = load ptr, ptr %866, align 8, !tbaa !21
  %868 = load i64, ptr %12, align 8, !tbaa !22
  %869 = getelementptr inbounds ptr, ptr %867, i64 %868
  %870 = load ptr, ptr %869, align 8, !tbaa !5
  %871 = load i64, ptr %9, align 8, !tbaa !22
  %872 = getelementptr inbounds double, ptr %870, i64 %871
  store double %863, ptr %872, align 8, !tbaa !23
  br label %873

873:                                              ; preds = %853
  %874 = load i64, ptr %12, align 8, !tbaa !22
  %875 = add nsw i64 %874, 1
  store i64 %875, ptr %12, align 8, !tbaa !22
  br label %848, !llvm.loop !49

876:                                              ; preds = %848
  %877 = load i64, ptr %9, align 8, !tbaa !22
  %878 = add nsw i64 %877, 1
  store i64 %878, ptr %9, align 8, !tbaa !22
  br label %879

879:                                              ; preds = %876, %819
  br label %880

880:                                              ; preds = %879
  %881 = load i64, ptr %11, align 8, !tbaa !22
  %882 = add nsw i64 %881, 1
  store i64 %882, ptr %11, align 8, !tbaa !22
  br label %814, !llvm.loop !50

883:                                              ; preds = %814
  br label %884

884:                                              ; preds = %883
  %885 = load i64, ptr %10, align 8, !tbaa !22
  %886 = add nsw i64 %885, -1
  store i64 %886, ptr %10, align 8, !tbaa !22
  br label %807, !llvm.loop !51

887:                                              ; preds = %807
  %888 = load i64, ptr %9, align 8, !tbaa !22
  %889 = load i64, ptr %8, align 8, !tbaa !22
  %890 = icmp eq i64 %888, %889
  %891 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %890, ptr noundef @.str.318, ptr noundef %891)
  %892 = load i64, ptr %6, align 8, !tbaa !22
  %893 = load i64, ptr %8, align 8, !tbaa !22
  %894 = load i64, ptr %7, align 8, !tbaa !22
  %895 = load ptr, ptr %4, align 8, !tbaa !5
  %896 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %895, i32 0, i32 13
  %897 = load ptr, ptr %4, align 8, !tbaa !5
  %898 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %897, i32 0, i32 17
  %899 = load ptr, ptr %4, align 8, !tbaa !5
  %900 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %899, i32 0, i32 19
  %901 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %892, i64 noundef %893, i64 noundef %894, double noundef 1.000000e+00, ptr noundef %896, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef %898, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %900, i64 noundef 0, i64 noundef 0, ptr noundef %901)
  store i8 0, ptr %17, align 1, !tbaa !52
  %902 = load i8, ptr %17, align 1, !tbaa !52, !range !32, !noundef !33
  %903 = trunc i8 %902 to i1
  store i1 %903, ptr %3, align 1
  store i32 1, ptr %18, align 4
  br label %984

904:                                              ; preds = %714, %569, %330
  store i8 1, ptr %17, align 1, !tbaa !52
  %905 = load i64, ptr %6, align 8, !tbaa !22
  %906 = load ptr, ptr %4, align 8, !tbaa !5
  %907 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %906, i32 0, i32 33
  %908 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %907, i32 0, i32 1
  %909 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %908, i32 0, i32 4
  %910 = load ptr, ptr %909, align 8, !tbaa !21
  %911 = getelementptr inbounds i64, ptr %910, i64 0
  store i64 %905, ptr %911, align 8, !tbaa !22
  %912 = load i64, ptr %7, align 8, !tbaa !22
  %913 = load ptr, ptr %4, align 8, !tbaa !5
  %914 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %913, i32 0, i32 33
  %915 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %914, i32 0, i32 1
  %916 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %915, i32 0, i32 4
  %917 = load ptr, ptr %916, align 8, !tbaa !21
  %918 = getelementptr inbounds i64, ptr %917, i64 1
  store i64 %912, ptr %918, align 8, !tbaa !22
  %919 = load i64, ptr %8, align 8, !tbaa !22
  %920 = load ptr, ptr %4, align 8, !tbaa !5
  %921 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %920, i32 0, i32 33
  %922 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %921, i32 0, i32 1
  %923 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %922, i32 0, i32 4
  %924 = load ptr, ptr %923, align 8, !tbaa !21
  %925 = getelementptr inbounds i64, ptr %924, i64 2
  store i64 %919, ptr %925, align 8, !tbaa !22
  %926 = load i64, ptr %9, align 8, !tbaa !22
  %927 = load ptr, ptr %4, align 8, !tbaa !5
  %928 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %927, i32 0, i32 33
  %929 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %928, i32 0, i32 1
  %930 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %929, i32 0, i32 4
  %931 = load ptr, ptr %930, align 8, !tbaa !21
  %932 = getelementptr inbounds i64, ptr %931, i64 3
  store i64 %926, ptr %932, align 8, !tbaa !22
  %933 = load i64, ptr %10, align 8, !tbaa !22
  %934 = load ptr, ptr %4, align 8, !tbaa !5
  %935 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %934, i32 0, i32 33
  %936 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %935, i32 0, i32 1
  %937 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %936, i32 0, i32 4
  %938 = load ptr, ptr %937, align 8, !tbaa !21
  %939 = getelementptr inbounds i64, ptr %938, i64 4
  store i64 %933, ptr %939, align 8, !tbaa !22
  %940 = load i64, ptr %11, align 8, !tbaa !22
  %941 = load ptr, ptr %4, align 8, !tbaa !5
  %942 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %941, i32 0, i32 33
  %943 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %942, i32 0, i32 1
  %944 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %943, i32 0, i32 4
  %945 = load ptr, ptr %944, align 8, !tbaa !21
  %946 = getelementptr inbounds i64, ptr %945, i64 5
  store i64 %940, ptr %946, align 8, !tbaa !22
  %947 = load i64, ptr %12, align 8, !tbaa !22
  %948 = load ptr, ptr %4, align 8, !tbaa !5
  %949 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %948, i32 0, i32 33
  %950 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %949, i32 0, i32 1
  %951 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %950, i32 0, i32 4
  %952 = load ptr, ptr %951, align 8, !tbaa !21
  %953 = getelementptr inbounds i64, ptr %952, i64 6
  store i64 %947, ptr %953, align 8, !tbaa !22
  %954 = load i64, ptr %15, align 8, !tbaa !22
  %955 = load ptr, ptr %4, align 8, !tbaa !5
  %956 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %955, i32 0, i32 33
  %957 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %956, i32 0, i32 1
  %958 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %957, i32 0, i32 4
  %959 = load ptr, ptr %958, align 8, !tbaa !21
  %960 = getelementptr inbounds i64, ptr %959, i64 7
  store i64 %954, ptr %960, align 8, !tbaa !22
  %961 = load i64, ptr %16, align 8, !tbaa !22
  %962 = load ptr, ptr %4, align 8, !tbaa !5
  %963 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %962, i32 0, i32 33
  %964 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %963, i32 0, i32 1
  %965 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %964, i32 0, i32 4
  %966 = load ptr, ptr %965, align 8, !tbaa !21
  %967 = getelementptr inbounds i64, ptr %966, i64 8
  store i64 %961, ptr %967, align 8, !tbaa !22
  %968 = load double, ptr %13, align 8, !tbaa !23
  %969 = load ptr, ptr %4, align 8, !tbaa !5
  %970 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %969, i32 0, i32 33
  %971 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %970, i32 0, i32 3
  %972 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %971, i32 0, i32 4
  %973 = load ptr, ptr %972, align 8, !tbaa !21
  %974 = getelementptr inbounds double, ptr %973, i64 0
  store double %968, ptr %974, align 8, !tbaa !23
  %975 = load double, ptr %14, align 8, !tbaa !23
  %976 = load ptr, ptr %4, align 8, !tbaa !5
  %977 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %976, i32 0, i32 33
  %978 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %977, i32 0, i32 3
  %979 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %978, i32 0, i32 4
  %980 = load ptr, ptr %979, align 8, !tbaa !21
  %981 = getelementptr inbounds double, ptr %980, i64 1
  store double %975, ptr %981, align 8, !tbaa !23
  %982 = load i8, ptr %17, align 1, !tbaa !52, !range !32, !noundef !33
  %983 = trunc i8 %982 to i1
  store i1 %983, ptr %3, align 1
  store i32 1, ptr %18, align 4
  br label %984

984:                                              ; preds = %904, %887
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #4
  %985 = load i1, ptr %3, align 1
  ret i1 %985
}

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

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

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

declare noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) #2

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

declare noundef double @_ZN11alglib_impl6rdotv2ElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef) #2

declare void @_ZN11alglib_impl5rmulvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, double noundef, ptr noundef, ptr noundef) #2

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #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 nounwind 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, !20, i64 2184}
!10 = !{!"_ZTSN11alglib_impl16eigsubspacestateE", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !12, i64 32, !11, i64 40, !11, i64 48, !13, i64 56, !13, i64 57, !14, i64 64, !13, i64 88, !15, i64 96, !17, i64 160, !17, i64 240, !17, i64 320, !17, i64 400, !17, i64 480, !17, i64 560, !17, i64 640, !17, i64 720, !17, i64 800, !15, i64 880, !15, i64 944, !15, i64 1008, !15, i64 1072, !15, i64 1136, !15, i64 1200, !18, i64 1264, !17, i64 2000, !17, i64 2080, !11, i64 2160, !11, i64 2168, !11, i64 2176, !19, i64 2184}
!11 = !{!"long", !7, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTSN11alglib_impl10hqrndstateE", !11, i64 0, !11, i64 8, !11, i64 16}
!15 = !{!"_ZTSN11alglib_impl9ae_vectorE", !11, i64 0, !11, i64 8, !13, i64 16, !16, i64 24, !7, i64 56}
!16 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!17 = !{!"_ZTSN11alglib_impl9ae_matrixE", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !13, i64 32, !16, i64 40, !7, i64 72}
!18 = !{!"_ZTSN11alglib_impl9apbuffersE", !15, i64 0, !15, i64 64, !15, i64 128, !15, i64 192, !15, i64 256, !15, i64 320, !15, i64 384, !15, i64 448, !15, i64 512, !17, i64 576, !17, i64 656}
!19 = !{!"_ZTSN11alglib_impl10rcommstateE", !20, i64 0, !15, i64 8, !15, i64 72, !15, i64 136, !15, i64 200}
!20 = !{!"int", !7, i64 0}
!21 = !{!7, !7, i64 0}
!22 = !{!11, !11, i64 0}
!23 = !{!12, !12, i64 0}
!24 = !{!10, !11, i64 0}
!25 = !{!10, !11, i64 8}
!26 = !{!10, !11, i64 16}
!27 = !{!10, !11, i64 48}
!28 = !{!10, !11, i64 2176}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = !{!10, !13, i64 56}
!32 = !{i8 0, i8 2}
!33 = !{}
!34 = !{!10, !13, i64 57}
!35 = distinct !{!35, !30}
!36 = distinct !{!36, !30}
!37 = !{!10, !11, i64 24}
!38 = !{!10, !11, i64 2160}
!39 = !{!10, !11, i64 2168}
!40 = !{!10, !12, i64 32}
!41 = distinct !{!41, !30}
!42 = distinct !{!42, !30}
!43 = distinct !{!43, !30}
!44 = distinct !{!44, !30}
!45 = distinct !{!45, !30}
!46 = distinct !{!46, !30}
!47 = !{!10, !11, i64 40}
!48 = distinct !{!48, !30}
!49 = distinct !{!49, !30}
!50 = distinct !{!50, !30}
!51 = distinct !{!51, !30}
!52 = !{!13, !13, i64 0}


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

@.str.73 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.317 = external hidden unnamed_addr constant [44 x i8], align 1
@_ZN11alglib_implL18evd_stepswithintolE = external hidden local_unnamed_addr global i64, align 8
@.str.318 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.319 = external hidden unnamed_addr constant [51 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 nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_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 #1

; 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 #1

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN11alglib_implL16evd_clearrfieldsEPNS_16eigsubspacestateEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl20eigsubspaceiterationEPNS_16eigsubspacestateEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1) local_unnamed_addr #1 {
  %3 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #4
  %4 = getelementptr inbounds i8, ptr %0, i64 2184
  %5 = load i32, ptr %4, align 8, !tbaa !5
  %6 = icmp sgt i32 %5, -1
  br i1 %6, label %7, label %32

7:                                                ; preds = %2
  %8 = getelementptr inbounds i8, ptr %0, i64 2248
  %9 = load ptr, ptr %8, align 8, !tbaa !20
  %10 = load i64, ptr %9, align 8, !tbaa !21
  %11 = getelementptr inbounds i8, ptr %9, i64 8
  %12 = load i64, ptr %11, align 8, !tbaa !21
  %13 = getelementptr inbounds i8, ptr %9, i64 16
  %14 = load i64, ptr %13, align 8, !tbaa !21
  %15 = getelementptr inbounds i8, ptr %9, i64 24
  %16 = load i64, ptr %15, align 8, !tbaa !21
  %17 = getelementptr inbounds i8, ptr %9, i64 32
  %18 = load i64, ptr %17, align 8, !tbaa !21
  %19 = getelementptr inbounds i8, ptr %9, i64 40
  %20 = load i64, ptr %19, align 8, !tbaa !21
  %21 = getelementptr inbounds i8, ptr %9, i64 48
  %22 = load i64, ptr %21, align 8, !tbaa !21
  %23 = getelementptr inbounds i8, ptr %9, i64 56
  %24 = load i64, ptr %23, align 8, !tbaa !21
  %25 = getelementptr inbounds i8, ptr %9, i64 64
  %26 = load i64, ptr %25, align 8, !tbaa !21
  %27 = getelementptr inbounds i8, ptr %0, i64 2376
  %28 = load ptr, ptr %27, align 8, !tbaa !20
  %29 = load double, ptr %28, align 8, !tbaa !22
  %30 = getelementptr inbounds i8, ptr %28, i64 8
  %31 = load double, ptr %30, align 8, !tbaa !22
  br label %32

32:                                               ; preds = %2, %7
  %.sink = phi i64 [ %24, %7 ], [ -788, %2 ]
  %.0450 = phi i64 [ %10, %7 ], [ 359, %2 ]
  %.0444 = phi i64 [ %12, %7 ], [ -58, %2 ]
  %.0438 = phi i64 [ %14, %7 ], [ -919, %2 ]
  %.0434 = phi i64 [ %16, %7 ], [ -909, %2 ]
  %.0423 = phi i64 [ %18, %7 ], [ 81, %2 ]
  %.0421 = phi i64 [ %20, %7 ], [ 255, %2 ]
  %.0410 = phi i64 [ %22, %7 ], [ 74, %2 ]
  %.0400 = phi double [ %29, %7 ], [ 2.050000e+02, %2 ]
  %.0395 = phi double [ %31, %7 ], [ -8.380000e+02, %2 ]
  %.0 = phi i64 [ %26, %7 ], [ 809, %2 ]
  store i64 %.sink, ptr %3, align 8
  switch i32 %5, label %33 [
    i32 0, label %114
    i32 1, label %231
    i32 2, label %277
  ]

33:                                               ; preds = %32
  %34 = load i64, ptr %0, align 8, !tbaa !23
  %35 = getelementptr inbounds i8, ptr %0, i64 8
  %36 = load i64, ptr %35, align 8, !tbaa !24
  %37 = getelementptr inbounds i8, ptr %0, i64 16
  %38 = load i64, ptr %37, align 8, !tbaa !25
  %39 = getelementptr inbounds i8, ptr %0, i64 64
  tail call void @_ZN11alglib_impl9hqrndseedEllPNS_10hqrndstateEPNS_8ae_stateE(i64 noundef 453, i64 noundef 463664, ptr noundef nonnull %39, ptr noundef %1)
  %40 = getelementptr inbounds i8, ptr %0, i64 48
  %41 = load i64, ptr %40, align 8, !tbaa !26
  %spec.select = icmp ult i64 %41, 2
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %spec.select, ptr noundef nonnull @.str.317, ptr noundef %1)
  %42 = load i64, ptr %40, align 8, !tbaa !26
  %43 = icmp eq i64 %42, 1
  %44 = getelementptr inbounds i8, ptr %0, i64 2176
  store i64 0, ptr %44, align 8, !tbaa !27
  %45 = getelementptr inbounds i8, ptr %0, i64 240
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %45, i64 noundef %38, i64 noundef %34, ptr noundef %1)
  %46 = getelementptr inbounds i8, ptr %0, i64 320
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %46, i64 noundef %38, i64 noundef %34, ptr noundef %1)
  %47 = getelementptr inbounds i8, ptr %0, i64 400
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %47, i64 noundef %38, i64 noundef %34, ptr noundef %1)
  %48 = getelementptr inbounds i8, ptr %0, i64 1072
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %48, i64 noundef %38, ptr noundef %1)
  %49 = getelementptr inbounds i8, ptr %0, i64 1136
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %49, i64 noundef %38, ptr noundef %1)
  %50 = getelementptr inbounds i8, ptr %0, i64 1200
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %50, i64 noundef %38, ptr noundef %1)
  %51 = getelementptr inbounds i8, ptr %0, i64 2000
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %51, i64 noundef %34, i64 noundef %38, ptr noundef %1)
  %52 = getelementptr inbounds i8, ptr %0, i64 2080
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %52, i64 noundef %34, i64 noundef %38, ptr noundef %1)
  %53 = getelementptr inbounds i8, ptr %0, i64 720
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %53, i64 noundef %34, i64 noundef %36, ptr noundef %1)
  %54 = getelementptr inbounds i8, ptr %0, i64 880
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %54, i64 noundef %36, ptr noundef %1)
  %55 = getelementptr inbounds i8, ptr %0, i64 560
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %55, i64 noundef %38, i64 noundef %36, ptr noundef %1)
  %56 = getelementptr inbounds i8, ptr %0, i64 480
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %56, i64 noundef %38, i64 noundef %38, ptr noundef %1)
  %.not.not492 = icmp sgt i64 %38, 0
  br i1 %.not.not492, label %.lr.ph495, label %._crit_edge496

.lr.ph495:                                        ; preds = %33
  %57 = getelementptr inbounds i8, ptr %0, i64 1192
  %xtraiter595 = and i64 %38, 3
  %58 = icmp ult i64 %38, 4
  br i1 %58, label %._crit_edge496.loopexit.unr-lcssa, label %.lr.ph495.new

.lr.ph495.new:                                    ; preds = %.lr.ph495
  %unroll_iter598 = and i64 %38, 9223372036854775804
  br label %59

59:                                               ; preds = %59, %.lr.ph495.new
  %.1424493 = phi i64 [ 0, %.lr.ph495.new ], [ %71, %59 ]
  %niter599 = phi i64 [ 0, %.lr.ph495.new ], [ %niter599.next.3, %59 ]
  %60 = load ptr, ptr %57, align 8, !tbaa !20
  %61 = getelementptr inbounds double, ptr %60, i64 %.1424493
  store double -1.000000e+00, ptr %61, align 8, !tbaa !22
  %62 = or disjoint i64 %.1424493, 1
  %63 = load ptr, ptr %57, align 8, !tbaa !20
  %64 = getelementptr inbounds double, ptr %63, i64 %62
  store double -1.000000e+00, ptr %64, align 8, !tbaa !22
  %65 = or disjoint i64 %.1424493, 2
  %66 = load ptr, ptr %57, align 8, !tbaa !20
  %67 = getelementptr inbounds double, ptr %66, i64 %65
  store double -1.000000e+00, ptr %67, align 8, !tbaa !22
  %68 = or disjoint i64 %.1424493, 3
  %69 = load ptr, ptr %57, align 8, !tbaa !20
  %70 = getelementptr inbounds double, ptr %69, i64 %68
  store double -1.000000e+00, ptr %70, align 8, !tbaa !22
  %71 = add nuw nsw i64 %.1424493, 4
  %niter599.next.3 = add i64 %niter599, 4
  %niter599.ncmp.3 = icmp eq i64 %niter599.next.3, %unroll_iter598
  br i1 %niter599.ncmp.3, label %._crit_edge496.loopexit.unr-lcssa, label %59, !llvm.loop !28

._crit_edge496.loopexit.unr-lcssa:                ; preds = %59, %.lr.ph495
  %.1424493.unr = phi i64 [ 0, %.lr.ph495 ], [ %71, %59 ]
  %lcmp.mod597.not = icmp eq i64 %xtraiter595, 0
  br i1 %lcmp.mod597.not, label %._crit_edge496, label %.epil.preheader594

.epil.preheader594:                               ; preds = %._crit_edge496.loopexit.unr-lcssa, %.epil.preheader594
  %.1424493.epil = phi i64 [ %74, %.epil.preheader594 ], [ %.1424493.unr, %._crit_edge496.loopexit.unr-lcssa ]
  %epil.iter596 = phi i64 [ %epil.iter596.next, %.epil.preheader594 ], [ 0, %._crit_edge496.loopexit.unr-lcssa ]
  %72 = load ptr, ptr %57, align 8, !tbaa !20
  %73 = getelementptr inbounds double, ptr %72, i64 %.1424493.epil
  store double -1.000000e+00, ptr %73, align 8, !tbaa !22
  %74 = add nuw nsw i64 %.1424493.epil, 1
  %epil.iter596.next = add i64 %epil.iter596, 1
  %epil.iter596.cmp.not = icmp eq i64 %epil.iter596.next, %xtraiter595
  br i1 %epil.iter596.cmp.not, label %._crit_edge496, label %.epil.preheader594, !llvm.loop !30

._crit_edge496:                                   ; preds = %._crit_edge496.loopexit.unr-lcssa, %.epil.preheader594, %33
  %.1424.lcssa = phi i64 [ 0, %33 ], [ %38, %.epil.preheader594 ], [ %38, %._crit_edge496.loopexit.unr-lcssa ]
  %75 = getelementptr inbounds i8, ptr %0, i64 56
  %76 = load i8, ptr %75, align 8, !tbaa !32, !range !33, !noundef !34
  %77 = trunc nuw i8 %76 to i1
  %78 = getelementptr inbounds i8, ptr %0, i64 57
  %79 = load i8, ptr %78, align 1, !tbaa !35, !range !33
  br i1 %77, label %80, label %._crit_edge496._crit_edge

80:                                               ; preds = %._crit_edge496
  %81 = trunc nuw i8 %79 to i1
  br i1 %81, label %._crit_edge496._crit_edge, label %98

._crit_edge496._crit_edge:                        ; preds = %._crit_edge496, %80
  %82 = getelementptr inbounds i8, ptr %0, i64 57
  %83 = trunc nuw i8 %79 to i1
  br i1 %83, label %.preheader475, label %96

.preheader475:                                    ; preds = %._crit_edge496._crit_edge
  br i1 %.not.not492, label %.preheader474.lr.ph, label %._crit_edge505

.preheader474.lr.ph:                              ; preds = %.preheader475
  %.not.not464498 = icmp sgt i64 %34, 0
  %84 = getelementptr inbounds i8, ptr %0, i64 472
  br i1 %.not.not464498, label %.preheader474.us, label %._crit_edge505

.preheader474.us:                                 ; preds = %.preheader474.lr.ph, %._crit_edge501.us
  %.2425504.us = phi i64 [ %93, %._crit_edge501.us ], [ 0, %.preheader474.lr.ph ]
  br label %85

85:                                               ; preds = %.preheader474.us, %85
  %.2412499.us = phi i64 [ 0, %.preheader474.us ], [ %92, %85 ]
  %86 = tail call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %39, ptr noundef %1)
  %87 = fadd double %86, -5.000000e-01
  %88 = load ptr, ptr %84, align 8, !tbaa !20
  %89 = getelementptr inbounds ptr, ptr %88, i64 %.2425504.us
  %90 = load ptr, ptr %89, align 8, !tbaa !36
  %91 = getelementptr inbounds double, ptr %90, i64 %.2412499.us
  store double %87, ptr %91, align 8, !tbaa !22
  %92 = add nuw nsw i64 %.2412499.us, 1
  %exitcond565.not = icmp eq i64 %92, %34
  br i1 %exitcond565.not, label %._crit_edge501.us, label %85, !llvm.loop !37

._crit_edge501.us:                                ; preds = %85
  %93 = add nuw nsw i64 %.2425504.us, 1
  %exitcond566.not = icmp eq i64 %93, %38
  br i1 %exitcond566.not, label %._crit_edge505, label %.preheader474.us, !llvm.loop !38

._crit_edge505:                                   ; preds = %._crit_edge501.us, %.preheader474.lr.ph, %.preheader475
  %.2425.lcssa = phi i64 [ 0, %.preheader475 ], [ %38, %.preheader474.lr.ph ], [ %38, %._crit_edge501.us ]
  %.1411.lcssa = phi i64 [ %.0410, %.preheader475 ], [ 0, %.preheader474.lr.ph ], [ %34, %._crit_edge501.us ]
  %94 = getelementptr inbounds i8, ptr %0, i64 96
  tail call void @_ZN11alglib_impl9rmatrixlqEPNS_9ae_matrixEllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %47, i64 noundef %38, i64 noundef %34, ptr noundef nonnull %94, ptr noundef %1)
  %95 = getelementptr inbounds i8, ptr %0, i64 160
  tail call void @_ZN11alglib_impl16rmatrixlqunpackqEPKNS_9ae_matrixEllPKNS_9ae_vectorElPS0_PNS_8ae_stateE(ptr noundef nonnull %47, i64 noundef %38, i64 noundef %34, ptr noundef nonnull %94, i64 noundef %38, ptr noundef nonnull %95, ptr noundef %1)
  store i8 0, ptr %82, align 1, !tbaa !35
  br label %96

96:                                               ; preds = %._crit_edge505, %._crit_edge496._crit_edge
  %.3426 = phi i64 [ %.2425.lcssa, %._crit_edge505 ], [ %.1424.lcssa, %._crit_edge496._crit_edge ]
  %.3413 = phi i64 [ %.1411.lcssa, %._crit_edge505 ], [ %.0410, %._crit_edge496._crit_edge ]
  %97 = getelementptr inbounds i8, ptr %0, i64 160
  tail call void @_ZN11alglib_impl11rmatrixcopyEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %38, i64 noundef %34, ptr noundef nonnull %97, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %46, i64 noundef 0, i64 noundef 0, ptr noundef %1)
  br label %98

98:                                               ; preds = %96, %80
  %.4427 = phi i64 [ %.3426, %96 ], [ %.1424.lcssa, %80 ]
  %.4414 = phi i64 [ %.3413, %96 ], [ %.0410, %80 ]
  store i64 0, ptr %44, align 8, !tbaa !27
  br i1 %43, label %.thread, label %99

99:                                               ; preds = %98
  store i64 0, ptr %3, align 8, !tbaa !21
  br label %100

100:                                              ; preds = %.loopexit476, %99
  %101 = phi i64 [ %218, %.loopexit476 ], [ 0, %99 ]
  %.1451 = phi i64 [ %.0450, %.loopexit476 ], [ %34, %99 ]
  %.1445 = phi i64 [ %.0444, %.loopexit476 ], [ %38, %99 ]
  %.1439 = phi i64 [ %.0438, %.loopexit476 ], [ %36, %99 ]
  %.5428 = phi i64 [ %.0423, %.loopexit476 ], [ %.4427, %99 ]
  %.5415 = phi i64 [ %.9419, %.loopexit476 ], [ %.4414, %99 ]
  %.1401 = phi double [ %.5405, %.loopexit476 ], [ %.0400, %99 ]
  %.1396 = phi double [ %.4399, %.loopexit476 ], [ %.0395, %99 ]
  %.1 = phi i64 [ %.0, %.loopexit476 ], [ 0, %99 ]
  %102 = getelementptr inbounds i8, ptr %0, i64 24
  %103 = load i64, ptr %102, align 8, !tbaa !39
  %104 = icmp eq i64 %103, 0
  %105 = icmp slt i64 %101, %103
  %or.cond = select i1 %104, i1 true, i1 %105
  br i1 %or.cond, label %106, label %219

106:                                              ; preds = %100
  %107 = load i64, ptr %3, align 8, !tbaa !21
  %108 = load i64, ptr @_ZN11alglib_implL18evd_stepswithintolE, align 8, !tbaa !21
  %109 = icmp slt i64 %107, %108
  br i1 %109, label %110, label %219

110:                                              ; preds = %106
  %111 = getelementptr inbounds i8, ptr %0, i64 320
  %112 = getelementptr inbounds i8, ptr %0, i64 240
  call void @_ZN11alglib_impl11rmatrixcopyEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %.1445, i64 noundef %.1451, ptr noundef nonnull %111, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %112, i64 noundef 0, i64 noundef 0, ptr noundef %1)
  %113 = getelementptr inbounds i8, ptr %0, i64 2000
  call void @_ZN11alglib_impl16rmatrixtransposeEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %.1445, i64 noundef %.1451, ptr noundef nonnull %112, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %113, i64 noundef 0, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_implL16evd_clearrfieldsEPNS_16eigsubspacestateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  br label %361

114:                                              ; preds = %32
  %115 = getelementptr inbounds i8, ptr %0, i64 32
  %116 = load double, ptr %115, align 8, !tbaa !40
  %117 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %116, double noundef 0.000000e+00)
  br i1 %117, label %118, label %.loopexit476

118:                                              ; preds = %114
  %119 = getelementptr inbounds i8, ptr %0, i64 48
  %120 = load i64, ptr %119, align 8, !tbaa !26
  %121 = icmp eq i64 %120, 0
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %121, ptr noundef nonnull @.str.318, ptr noundef %1)
  %122 = getelementptr inbounds i8, ptr %0, i64 480
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %122, i64 noundef %.0444, i64 noundef %.0444, ptr noundef %1)
  %123 = getelementptr inbounds i8, ptr %0, i64 240
  %124 = getelementptr inbounds i8, ptr %0, i64 2080
  tail call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %.0444, i64 noundef %.0444, i64 noundef %.0450, double noundef 1.000000e+00, ptr noundef nonnull %123, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %124, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %122, i64 noundef 0, i64 noundef 0, ptr noundef %1)
  %125 = getelementptr inbounds i8, ptr %0, i64 1072
  %126 = getelementptr inbounds i8, ptr %0, i64 800
  %127 = tail call noundef zeroext i1 @_ZN11alglib_impl10smatrixevdEPKNS_9ae_matrixEllbPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef nonnull %122, i64 noundef %.0444, i64 noundef 0, i1 noundef zeroext true, ptr noundef nonnull %125, ptr noundef nonnull %126, ptr noundef %1)
  br i1 %127, label %129, label %128

128:                                              ; preds = %118
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef nonnull @.str.319, ptr noundef %1)
  br label %129

129:                                              ; preds = %128, %118
  %.not.not465477 = icmp sgt i64 %.0444, 0
  br i1 %.not.not465477, label %.lr.ph, label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %129
  %130 = getelementptr inbounds i8, ptr %0, i64 1200
  %131 = getelementptr inbounds i8, ptr %0, i64 1264
  tail call void @_ZN11alglib_impl11rankxuntiedEPNS_9ae_vectorElPNS_9apbuffersEPNS_8ae_stateE(ptr noundef nonnull %130, i64 noundef %.0444, ptr noundef nonnull %131, ptr noundef %1)
  br label %._crit_edge485

.lr.ph:                                           ; preds = %129
  %132 = getelementptr inbounds i8, ptr %0, i64 1128
  %133 = getelementptr inbounds i8, ptr %0, i64 1256
  br label %134

134:                                              ; preds = %.lr.ph, %134
  %.6416478 = phi i64 [ 0, %.lr.ph ], [ %141, %134 ]
  %135 = load ptr, ptr %132, align 8, !tbaa !20
  %136 = getelementptr inbounds double, ptr %135, i64 %.6416478
  %137 = load double, ptr %136, align 8, !tbaa !22
  %138 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %137, ptr noundef %1)
  %139 = load ptr, ptr %133, align 8, !tbaa !20
  %140 = getelementptr inbounds double, ptr %139, i64 %.6416478
  store double %138, ptr %140, align 8, !tbaa !22
  %141 = add nuw nsw i64 %.6416478, 1
  %exitcond.not = icmp eq i64 %141, %.0444
  br i1 %exitcond.not, label %._crit_edge, label %134, !llvm.loop !41

._crit_edge:                                      ; preds = %134
  %142 = getelementptr inbounds i8, ptr %0, i64 1200
  %143 = getelementptr inbounds i8, ptr %0, i64 1264
  tail call void @_ZN11alglib_impl11rankxuntiedEPNS_9ae_vectorElPNS_9apbuffersEPNS_8ae_stateE(ptr noundef nonnull %142, i64 noundef %.0444, ptr noundef nonnull %143, ptr noundef %1)
  br i1 %.not.not465477, label %.lr.ph484, label %._crit_edge485

.lr.ph484:                                        ; preds = %._crit_edge
  %144 = getelementptr inbounds i8, ptr %0, i64 1256
  %145 = sub nsw i64 %.0444, %.0438
  %146 = sitofp i64 %145 to double
  %147 = getelementptr inbounds i8, ptr %0, i64 1128
  %148 = getelementptr inbounds i8, ptr %0, i64 1192
  br label %149

149:                                              ; preds = %.lr.ph484, %169
  %.2397482 = phi double [ 0.000000e+00, %.lr.ph484 ], [ %.3398, %169 ]
  %.2402481 = phi double [ 0.000000e+00, %.lr.ph484 ], [ %.3403, %169 ]
  %.7417480 = phi i64 [ 0, %.lr.ph484 ], [ %170, %169 ]
  %150 = load ptr, ptr %144, align 8, !tbaa !20
  %151 = getelementptr inbounds double, ptr %150, i64 %.7417480
  %152 = load double, ptr %151, align 8, !tbaa !22
  %153 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %152, double noundef %146)
  br i1 %153, label %154, label %169

154:                                              ; preds = %149
  %155 = load ptr, ptr %147, align 8, !tbaa !20
  %156 = getelementptr inbounds double, ptr %155, i64 %.7417480
  %157 = load double, ptr %156, align 8, !tbaa !22
  %158 = load ptr, ptr %148, align 8, !tbaa !20
  %159 = getelementptr inbounds double, ptr %158, i64 %.7417480
  %160 = load double, ptr %159, align 8, !tbaa !22
  %161 = fsub double %157, %160
  %162 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %161, ptr noundef %1)
  %163 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.2397482, double noundef %162, ptr noundef %1)
  %164 = load ptr, ptr %147, align 8, !tbaa !20
  %165 = getelementptr inbounds double, ptr %164, i64 %.7417480
  %166 = load double, ptr %165, align 8, !tbaa !22
  %167 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %166, ptr noundef %1)
  %168 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.2402481, double noundef %167, ptr noundef %1)
  br label %169

169:                                              ; preds = %149, %154
  %.3403 = phi double [ %168, %154 ], [ %.2402481, %149 ]
  %.3398 = phi double [ %163, %154 ], [ %.2397482, %149 ]
  %170 = add nuw nsw i64 %.7417480, 1
  %exitcond562.not = icmp eq i64 %170, %.0444
  br i1 %exitcond562.not, label %._crit_edge485, label %149, !llvm.loop !42

._crit_edge485:                                   ; preds = %169, %._crit_edge.thread, %._crit_edge
  %.2402.lcssa = phi double [ 0.000000e+00, %._crit_edge ], [ 0.000000e+00, %._crit_edge.thread ], [ %.3403, %169 ]
  %.2397.lcssa = phi double [ 0.000000e+00, %._crit_edge ], [ 0.000000e+00, %._crit_edge.thread ], [ %.3398, %169 ]
  %171 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %.2402.lcssa, double noundef 0.000000e+00)
  %.4404 = select i1 %171, double 1.000000e+00, double %.2402.lcssa
  %172 = load double, ptr %115, align 8, !tbaa !40
  %173 = fmul double %172, %.4404
  %174 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %.2397.lcssa, double noundef %173)
  br i1 %174, label %175, label %176

175:                                              ; preds = %._crit_edge485
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %3, ptr noundef %1)
  br label %177

176:                                              ; preds = %._crit_edge485
  store i64 0, ptr %3, align 8, !tbaa !21
  br label %177

177:                                              ; preds = %176, %175
  br i1 %.not.not465477, label %.lr.ph490, label %.loopexit476

.lr.ph490:                                        ; preds = %177
  %178 = getelementptr inbounds i8, ptr %0, i64 1128
  %179 = getelementptr inbounds i8, ptr %0, i64 1192
  %xtraiter = and i64 %.0444, 3
  %180 = icmp ult i64 %.0444, 4
  br i1 %180, label %.loopexit476.loopexit.unr-lcssa, label %.lr.ph490.new

.lr.ph490.new:                                    ; preds = %.lr.ph490
  %unroll_iter = and i64 %.0444, 9223372036854775804
  br label %181

181:                                              ; preds = %181, %.lr.ph490.new
  %.8418488 = phi i64 [ 0, %.lr.ph490.new ], [ %205, %181 ]
  %niter = phi i64 [ 0, %.lr.ph490.new ], [ %niter.next.3, %181 ]
  %182 = load ptr, ptr %178, align 8, !tbaa !20
  %183 = getelementptr inbounds double, ptr %182, i64 %.8418488
  %184 = load double, ptr %183, align 8, !tbaa !22
  %185 = load ptr, ptr %179, align 8, !tbaa !20
  %186 = getelementptr inbounds double, ptr %185, i64 %.8418488
  store double %184, ptr %186, align 8, !tbaa !22
  %187 = or disjoint i64 %.8418488, 1
  %188 = load ptr, ptr %178, align 8, !tbaa !20
  %189 = getelementptr inbounds double, ptr %188, i64 %187
  %190 = load double, ptr %189, align 8, !tbaa !22
  %191 = load ptr, ptr %179, align 8, !tbaa !20
  %192 = getelementptr inbounds double, ptr %191, i64 %187
  store double %190, ptr %192, align 8, !tbaa !22
  %193 = or disjoint i64 %.8418488, 2
  %194 = load ptr, ptr %178, align 8, !tbaa !20
  %195 = getelementptr inbounds double, ptr %194, i64 %193
  %196 = load double, ptr %195, align 8, !tbaa !22
  %197 = load ptr, ptr %179, align 8, !tbaa !20
  %198 = getelementptr inbounds double, ptr %197, i64 %193
  store double %196, ptr %198, align 8, !tbaa !22
  %199 = or disjoint i64 %.8418488, 3
  %200 = load ptr, ptr %178, align 8, !tbaa !20
  %201 = getelementptr inbounds double, ptr %200, i64 %199
  %202 = load double, ptr %201, align 8, !tbaa !22
  %203 = load ptr, ptr %179, align 8, !tbaa !20
  %204 = getelementptr inbounds double, ptr %203, i64 %199
  store double %202, ptr %204, align 8, !tbaa !22
  %205 = add nuw nsw i64 %.8418488, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.loopexit476.loopexit.unr-lcssa, label %181, !llvm.loop !43

.loopexit476.loopexit.unr-lcssa:                  ; preds = %181, %.lr.ph490
  %.8418488.unr = phi i64 [ 0, %.lr.ph490 ], [ %205, %181 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit476, label %.epil.preheader

.epil.preheader:                                  ; preds = %.loopexit476.loopexit.unr-lcssa, %.epil.preheader
  %.8418488.epil = phi i64 [ %211, %.epil.preheader ], [ %.8418488.unr, %.loopexit476.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %.loopexit476.loopexit.unr-lcssa ]
  %206 = load ptr, ptr %178, align 8, !tbaa !20
  %207 = getelementptr inbounds double, ptr %206, i64 %.8418488.epil
  %208 = load double, ptr %207, align 8, !tbaa !22
  %209 = load ptr, ptr %179, align 8, !tbaa !20
  %210 = getelementptr inbounds double, ptr %209, i64 %.8418488.epil
  store double %208, ptr %210, align 8, !tbaa !22
  %211 = add nuw nsw i64 %.8418488.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.loopexit476, label %.epil.preheader, !llvm.loop !44

.loopexit476:                                     ; preds = %.loopexit476.loopexit.unr-lcssa, %.epil.preheader, %177, %114
  %.9419 = phi i64 [ %.0410, %114 ], [ 0, %177 ], [ %.0444, %.epil.preheader ], [ %.0444, %.loopexit476.loopexit.unr-lcssa ]
  %.5405 = phi double [ %.0400, %114 ], [ %.4404, %177 ], [ %.4404, %.epil.preheader ], [ %.4404, %.loopexit476.loopexit.unr-lcssa ]
  %.4399 = phi double [ %.0395, %114 ], [ %.2397.lcssa, %177 ], [ %.2397.lcssa, %.epil.preheader ], [ %.2397.lcssa, %.loopexit476.loopexit.unr-lcssa ]
  %212 = getelementptr inbounds i8, ptr %0, i64 2080
  %213 = getelementptr inbounds i8, ptr %0, i64 400
  call void @_ZN11alglib_impl16rmatrixtransposeEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %.0450, i64 noundef %.0444, ptr noundef nonnull %212, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %213, i64 noundef 0, i64 noundef 0, ptr noundef %1)
  %214 = getelementptr inbounds i8, ptr %0, i64 96
  call void @_ZN11alglib_impl9rmatrixlqEPNS_9ae_matrixEllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %213, i64 noundef %.0444, i64 noundef %.0450, ptr noundef nonnull %214, ptr noundef %1)
  %215 = getelementptr inbounds i8, ptr %0, i64 320
  call void @_ZN11alglib_impl16rmatrixlqunpackqEPKNS_9ae_matrixEllPKNS_9ae_vectorElPS0_PNS_8ae_stateE(ptr noundef nonnull %213, i64 noundef %.0444, i64 noundef %.0450, ptr noundef nonnull %214, i64 noundef %.0444, ptr noundef nonnull %215, ptr noundef %1)
  %216 = getelementptr inbounds i8, ptr %0, i64 2176
  %217 = load i64, ptr %216, align 8, !tbaa !27
  %218 = add nsw i64 %217, 1
  store i64 %218, ptr %216, align 8, !tbaa !27
  br label %100

219:                                              ; preds = %100, %106
  %.not = icmp eq i64 %.1, 1
  br i1 %.not, label %.thread, label %281

.thread:                                          ; preds = %98, %219, %231
  %220 = phi i64 [ %101, %219 ], [ %236, %231 ], [ 0, %98 ]
  %.3453 = phi i64 [ %.1451, %219 ], [ %.0450, %231 ], [ %34, %98 ]
  %.3447 = phi i64 [ %.1445, %219 ], [ %.0444, %231 ], [ %38, %98 ]
  %.3441 = phi i64 [ %.1439, %219 ], [ %.0438, %231 ], [ %36, %98 ]
  %.7430 = phi i64 [ %.5428, %219 ], [ %.0423, %231 ], [ %.4427, %98 ]
  %.11 = phi i64 [ %.5415, %219 ], [ %.0410, %231 ], [ %.4414, %98 ]
  %.7407 = phi double [ %.1401, %219 ], [ %.0400, %231 ], [ %.0400, %98 ]
  %.6 = phi double [ %.1396, %219 ], [ %.0395, %231 ], [ %.0395, %98 ]
  %.3 = phi i64 [ 1, %219 ], [ %.0, %231 ], [ 1, %98 ]
  %.3453.fr = freeze i64 %.3453
  %221 = sitofp i64 %220 to double
  %222 = getelementptr inbounds i8, ptr %0, i64 24
  %223 = load i64, ptr %222, align 8, !tbaa !39
  %224 = sitofp i64 %223 to double
  %225 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %224, double noundef 5.000000e+00, ptr noundef %1)
  %226 = fadd double %225, -1.000000e+00
  %227 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %221, double noundef %226)
  br i1 %227, label %237, label %228

228:                                              ; preds = %.thread
  %229 = getelementptr inbounds i8, ptr %0, i64 320
  %230 = getelementptr inbounds i8, ptr %0, i64 2000
  call void @_ZN11alglib_impl16rmatrixtransposeEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %.3447, i64 noundef %.3453.fr, ptr noundef nonnull %229, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %230, i64 noundef 0, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_implL16evd_clearrfieldsEPNS_16eigsubspacestateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  br label %361

231:                                              ; preds = %32
  %232 = getelementptr inbounds i8, ptr %0, i64 2080
  %233 = getelementptr inbounds i8, ptr %0, i64 320
  tail call void @_ZN11alglib_impl16rmatrixtransposeEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %.0450, i64 noundef %.0444, ptr noundef nonnull %232, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %233, i64 noundef 0, i64 noundef 0, ptr noundef %1)
  %234 = getelementptr inbounds i8, ptr %0, i64 2176
  %235 = load i64, ptr %234, align 8, !tbaa !27
  %236 = add nsw i64 %235, 1
  store i64 %236, ptr %234, align 8, !tbaa !27
  br label %.thread

237:                                              ; preds = %.thread
  %238 = getelementptr inbounds i8, ptr %0, i64 1008
  call void @_ZN11alglib_impl7rallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.3453.fr, ptr noundef nonnull %238, ptr noundef %1)
  %.not468.not543 = icmp sgt i64 %.3447, 0
  br i1 %.not468.not543, label %.lr.ph547, label %._crit_edge548

.lr.ph547:                                        ; preds = %237
  %239 = getelementptr inbounds i8, ptr %0, i64 320
  %.not469.not533 = icmp sgt i64 %.3453.fr, 0
  %240 = getelementptr inbounds i8, ptr %0, i64 64
  %241 = getelementptr inbounds i8, ptr %0, i64 1064
  br label %242

242:                                              ; preds = %.lr.ph547, %.split539.us
  %.12545 = phi i64 [ %.11, %.lr.ph547 ], [ %.us-phi540, %.split539.us ]
  %.8431544 = phi i64 [ 0, %.lr.ph547 ], [ %273, %.split539.us ]
  call void @_ZN11alglib_impl7rcopyrvElPKNS_9ae_matrixElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.3453.fr, ptr noundef nonnull %239, i64 noundef %.8431544, ptr noundef nonnull %238, ptr noundef %1)
  %243 = call noundef double @_ZN11alglib_impl6rdotv2ElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.3453.fr, ptr noundef nonnull %238, ptr noundef %1)
  %244 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %243, ptr noundef %1)
  call void @_ZN11alglib_impl18rowwisegramschmidtEPKNS_9ae_matrixEllPNS_9ae_vectorES4_bPNS_8ae_stateE(ptr noundef nonnull %239, i64 noundef %.8431544, i64 noundef %.3453.fr, ptr noundef nonnull %238, ptr noundef nonnull %238, i1 noundef zeroext false, ptr noundef %1)
  %245 = call noundef double @_ZN11alglib_impl6rdotv2ElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.3453.fr, ptr noundef nonnull %238, ptr noundef %1)
  %246 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %245, ptr noundef %1)
  br i1 %.not469.not533, label %.split.us, label %.split.preheader

.split.preheader:                                 ; preds = %242
  %247 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %244, double noundef 0.000000e+00)
  br i1 %247, label %.split.preheader591, label %248

.split.preheader591:                              ; preds = %248, %.split.preheader
  br label %.split

248:                                              ; preds = %.split.preheader
  %249 = fmul double %244, 5.000000e-13
  %250 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %246, double noundef %249)
  br i1 %250, label %.split.preheader591, label %.split539.us

.split.us:                                        ; preds = %242, %._crit_edge536.us
  %.13.us = phi i64 [ %.3453.fr, %._crit_edge536.us ], [ %.12545, %242 ]
  %.9409.us = phi double [ %263, %._crit_edge536.us ], [ %246, %242 ]
  %.8.us = phi double [ %261, %._crit_edge536.us ], [ %244, %242 ]
  %251 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %.8.us, double noundef 0.000000e+00)
  br i1 %251, label %.critedge.us.preheader, label %252

252:                                              ; preds = %.split.us
  %253 = fmul double %.8.us, 5.000000e-13
  %254 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %.9409.us, double noundef %253)
  br i1 %254, label %.critedge.us.preheader, label %.split539.us

.critedge.us.preheader:                           ; preds = %252, %.split.us
  br label %.critedge.us

.critedge.us:                                     ; preds = %.critedge.us.preheader, %.critedge.us
  %.14534.us = phi i64 [ %259, %.critedge.us ], [ 0, %.critedge.us.preheader ]
  %255 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %240, ptr noundef %1)
  %256 = fadd double %255, -5.000000e-01
  %257 = load ptr, ptr %241, align 8, !tbaa !20
  %258 = getelementptr inbounds double, ptr %257, i64 %.14534.us
  store double %256, ptr %258, align 8, !tbaa !22
  %259 = add nuw nsw i64 %.14534.us, 1
  %exitcond571.not = icmp eq i64 %259, %.3453.fr
  br i1 %exitcond571.not, label %._crit_edge536.us, label %.critedge.us, !llvm.loop !45

._crit_edge536.us:                                ; preds = %.critedge.us
  %260 = call noundef double @_ZN11alglib_impl6rdotv2ElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.3453.fr, ptr noundef nonnull %238, ptr noundef %1)
  %261 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %260, ptr noundef %1)
  call void @_ZN11alglib_impl18rowwisegramschmidtEPKNS_9ae_matrixEllPNS_9ae_vectorES4_bPNS_8ae_stateE(ptr noundef nonnull %239, i64 noundef %.8431544, i64 noundef %.3453.fr, ptr noundef nonnull %238, ptr noundef nonnull %238, i1 noundef zeroext false, ptr noundef %1)
  %262 = call noundef double @_ZN11alglib_impl6rdotv2ElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.3453.fr, ptr noundef nonnull %238, ptr noundef %1)
  %263 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %262, ptr noundef %1)
  br label %.split.us, !llvm.loop !46

.split:                                           ; preds = %.split.backedge, %.split.preheader591
  %264 = call noundef double @_ZN11alglib_impl6rdotv2ElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.3453.fr, ptr noundef nonnull %238, ptr noundef %1)
  %265 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %264, ptr noundef %1)
  call void @_ZN11alglib_impl18rowwisegramschmidtEPKNS_9ae_matrixEllPNS_9ae_vectorES4_bPNS_8ae_stateE(ptr noundef nonnull %239, i64 noundef %.8431544, i64 noundef %.3453.fr, ptr noundef nonnull %238, ptr noundef nonnull %238, i1 noundef zeroext false, ptr noundef %1)
  %266 = call noundef double @_ZN11alglib_impl6rdotv2ElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.3453.fr, ptr noundef nonnull %238, ptr noundef %1)
  %267 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %266, ptr noundef %1)
  %268 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %265, double noundef 0.000000e+00)
  br i1 %268, label %.split.backedge, label %269

.split.backedge:                                  ; preds = %.split, %269
  br label %.split, !llvm.loop !47

269:                                              ; preds = %.split
  %270 = fmul double %265, 5.000000e-13
  %271 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %267, double noundef %270)
  br i1 %271, label %.split.backedge, label %.split539.us

.split539.us:                                     ; preds = %269, %252, %248
  %.us-phi540 = phi i64 [ %.12545, %248 ], [ %.13.us, %252 ], [ 0, %269 ]
  %.us-phi541 = phi double [ %246, %248 ], [ %.9409.us, %252 ], [ %267, %269 ]
  %.us-phi542 = phi double [ %244, %248 ], [ %.8.us, %252 ], [ %265, %269 ]
  %272 = fdiv double 1.000000e+00, %.us-phi541
  call void @_ZN11alglib_impl5rmulvEldPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %.3453.fr, double noundef %272, ptr noundef nonnull %238, ptr noundef %1)
  call void @_ZN11alglib_impl7rcopyvrElPKNS_9ae_vectorEPNS_9ae_matrixElPNS_8ae_stateE(i64 noundef %.3453.fr, ptr noundef nonnull %238, ptr noundef nonnull %239, i64 noundef %.8431544, ptr noundef %1)
  %273 = add nuw nsw i64 %.8431544, 1
  %exitcond572.not = icmp eq i64 %273, %.3447
  br i1 %exitcond572.not, label %._crit_edge548, label %242, !llvm.loop !49

._crit_edge548:                                   ; preds = %.split539.us, %237
  %.8431.lcssa = phi i64 [ 0, %237 ], [ %.3447, %.split539.us ]
  %.12.lcssa = phi i64 [ %.11, %237 ], [ %.us-phi540, %.split539.us ]
  %.8408.lcssa = phi double [ %.7407, %237 ], [ %.us-phi541, %.split539.us ]
  %.7.lcssa = phi double [ %.6, %237 ], [ %.us-phi542, %.split539.us ]
  %274 = getelementptr inbounds i8, ptr %0, i64 320
  %275 = getelementptr inbounds i8, ptr %0, i64 240
  call void @_ZN11alglib_impl11rmatrixcopyEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %.3447, i64 noundef %.3453.fr, ptr noundef nonnull %274, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %275, i64 noundef 0, i64 noundef 0, ptr noundef %1)
  %276 = getelementptr inbounds i8, ptr %0, i64 2000
  call void @_ZN11alglib_impl16rmatrixtransposeEllPKNS_9ae_matrixEllPS0_llPNS_8ae_stateE(i64 noundef %.3447, i64 noundef %.3453.fr, ptr noundef nonnull %275, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %276, i64 noundef 0, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_implL16evd_clearrfieldsEPNS_16eigsubspacestateEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1)
  br label %361

277:                                              ; preds = %32
  %278 = getelementptr inbounds i8, ptr %0, i64 2176
  %279 = load i64, ptr %278, align 8, !tbaa !27
  %280 = add nsw i64 %279, 1
  store i64 %280, ptr %278, align 8, !tbaa !27
  br label %281

281:                                              ; preds = %219, %277
  %.4454 = phi i64 [ %.1451, %219 ], [ %.0450, %277 ]
  %.4448 = phi i64 [ %.1445, %219 ], [ %.0444, %277 ]
  %.4442 = phi i64 [ %.1439, %219 ], [ %.0438, %277 ]
  %282 = getelementptr inbounds i8, ptr %0, i64 40
  %283 = load i64, ptr %282, align 8, !tbaa !50
  %284 = icmp eq i64 %283, 1
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %284, ptr noundef nonnull @.str.73, ptr noundef %1)
  %285 = getelementptr inbounds i8, ptr %0, i64 240
  %286 = getelementptr inbounds i8, ptr %0, i64 2080
  %287 = getelementptr inbounds i8, ptr %0, i64 480
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %.4448, i64 noundef %.4448, i64 noundef %.4454, double noundef 1.000000e+00, ptr noundef nonnull %285, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %286, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %287, i64 noundef 0, i64 noundef 0, ptr noundef %1)
  %288 = getelementptr inbounds i8, ptr %0, i64 944
  %289 = getelementptr inbounds i8, ptr %0, i64 640
  %290 = call noundef zeroext i1 @_ZN11alglib_impl10smatrixevdEPKNS_9ae_matrixEllbPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef nonnull %287, i64 noundef %.4448, i64 noundef 1, i1 noundef zeroext true, ptr noundef nonnull %288, ptr noundef nonnull %289, ptr noundef %1)
  br i1 %290, label %292, label %291

291:                                              ; preds = %281
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef nonnull @.str.319, ptr noundef %1)
  br label %292

292:                                              ; preds = %291, %281
  %.not470.not509 = icmp sgt i64 %.4448, 0
  br i1 %.not470.not509, label %.lr.ph512, label %._crit_edge513.thread

.lr.ph512:                                        ; preds = %292
  %293 = getelementptr inbounds i8, ptr %0, i64 1000
  %294 = getelementptr inbounds i8, ptr %0, i64 1256
  br label %295

295:                                              ; preds = %.lr.ph512, %295
  %.15510 = phi i64 [ 0, %.lr.ph512 ], [ %302, %295 ]
  %296 = load ptr, ptr %293, align 8, !tbaa !20
  %297 = getelementptr inbounds double, ptr %296, i64 %.15510
  %298 = load double, ptr %297, align 8, !tbaa !22
  %299 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %298, ptr noundef %1)
  %300 = load ptr, ptr %294, align 8, !tbaa !20
  %301 = getelementptr inbounds double, ptr %300, i64 %.15510
  store double %299, ptr %301, align 8, !tbaa !22
  %302 = add nuw nsw i64 %.15510, 1
  %exitcond567.not = icmp eq i64 %302, %.4448
  br i1 %exitcond567.not, label %._crit_edge513, label %295, !llvm.loop !51

._crit_edge513:                                   ; preds = %295
  %303 = getelementptr inbounds i8, ptr %0, i64 1200
  %304 = getelementptr inbounds i8, ptr %0, i64 1264
  call void @_ZN11alglib_impl11rankxuntiedEPNS_9ae_vectorElPNS_9apbuffersEPNS_8ae_stateE(ptr noundef nonnull %303, i64 noundef %.4448, ptr noundef nonnull %304, ptr noundef %1)
  %305 = sub nsw i64 %.4448, %.4442
  %.not471.not527 = icmp sgt i64 %.4442, 0
  br i1 %.not471.not527, label %.preheader.lr.ph, label %._crit_edge530

._crit_edge513.thread:                            ; preds = %292
  %306 = getelementptr inbounds i8, ptr %0, i64 1200
  %307 = getelementptr inbounds i8, ptr %0, i64 1264
  call void @_ZN11alglib_impl11rankxuntiedEPNS_9ae_vectorElPNS_9apbuffersEPNS_8ae_stateE(ptr noundef nonnull %306, i64 noundef %.4448, ptr noundef nonnull %307, ptr noundef %1)
  br label %._crit_edge530

.preheader.lr.ph:                                 ; preds = %._crit_edge513
  %308 = getelementptr inbounds i8, ptr %0, i64 1256
  %309 = getelementptr inbounds i8, ptr %0, i64 1000
  %310 = getelementptr inbounds i8, ptr %0, i64 936
  %311 = getelementptr inbounds i8, ptr %0, i64 712
  %312 = getelementptr inbounds i8, ptr %0, i64 632
  br i1 %.not470.not509, label %.preheader.us.preheader, label %._crit_edge530

.preheader.us.preheader:                          ; preds = %.preheader.lr.ph
  %xtraiter601 = and i64 %.4448, 1
  %313 = icmp eq i64 %.4448, 1
  %unroll_iter604 = and i64 %.4448, 9223372036854775806
  %lcmp.mod603.not = icmp eq i64 %xtraiter601, 0
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us.preheader, %..loopexit_crit_edge.split.us.us
  %.9432529.us.in = phi i64 [ %.9432529.us, %..loopexit_crit_edge.split.us.us ], [ %.4448, %.preheader.us.preheader ]
  %.1435528.us = phi i64 [ %.3437.us.us, %..loopexit_crit_edge.split.us.us ], [ 0, %.preheader.us.preheader ]
  %.9432529.us = add nsw i64 %.9432529.us.in, -1
  %314 = sitofp i64 %.9432529.us to double
  br label %315

315:                                              ; preds = %326, %.preheader.us
  %.1422521.us.us = phi i64 [ 0, %.preheader.us ], [ %327, %326 ]
  %.2436520.us.us = phi i64 [ %.1435528.us, %.preheader.us ], [ %.3437.us.us, %326 ]
  %316 = load ptr, ptr %308, align 8, !tbaa !20
  %317 = getelementptr inbounds double, ptr %316, i64 %.1422521.us.us
  %318 = load double, ptr %317, align 8, !tbaa !22
  %319 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %318, double noundef %314)
  br i1 %319, label %.lr.ph517.us.us, label %326

.lr.ph517.us.us:                                  ; preds = %315
  %320 = icmp slt i64 %.2436520.us.us, %.4442
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %320, ptr noundef nonnull @.str.318, ptr noundef %1)
  %321 = load ptr, ptr %309, align 8, !tbaa !20
  %322 = getelementptr inbounds double, ptr %321, i64 %.1422521.us.us
  %323 = load double, ptr %322, align 8, !tbaa !22
  %324 = load ptr, ptr %310, align 8, !tbaa !20
  %325 = getelementptr inbounds double, ptr %324, i64 %.2436520.us.us
  store double %323, ptr %325, align 8, !tbaa !22
  br i1 %313, label %._crit_edge518.us.us.unr-lcssa, label %.lr.ph517.us.us.new

326:                                              ; preds = %._crit_edge518.us.us, %315
  %.3437.us.us = phi i64 [ %357, %._crit_edge518.us.us ], [ %.2436520.us.us, %315 ]
  %327 = add nuw nsw i64 %.1422521.us.us, 1
  %exitcond569.not = icmp eq i64 %327, %.4448
  br i1 %exitcond569.not, label %..loopexit_crit_edge.split.us.us, label %315, !llvm.loop !52

.lr.ph517.us.us.new:                              ; preds = %.lr.ph517.us.us, %.lr.ph517.us.us.new
  %.16515.us.us = phi i64 [ %347, %.lr.ph517.us.us.new ], [ 0, %.lr.ph517.us.us ]
  %niter605 = phi i64 [ %niter605.next.1, %.lr.ph517.us.us.new ], [ 0, %.lr.ph517.us.us ]
  %328 = load ptr, ptr %311, align 8, !tbaa !20
  %329 = getelementptr inbounds ptr, ptr %328, i64 %.16515.us.us
  %330 = load ptr, ptr %329, align 8, !tbaa !36
  %331 = getelementptr inbounds double, ptr %330, i64 %.1422521.us.us
  %332 = load double, ptr %331, align 8, !tbaa !22
  %333 = load ptr, ptr %312, align 8, !tbaa !20
  %334 = getelementptr inbounds ptr, ptr %333, i64 %.16515.us.us
  %335 = load ptr, ptr %334, align 8, !tbaa !36
  %336 = getelementptr inbounds double, ptr %335, i64 %.2436520.us.us
  store double %332, ptr %336, align 8, !tbaa !22
  %337 = or disjoint i64 %.16515.us.us, 1
  %338 = load ptr, ptr %311, align 8, !tbaa !20
  %339 = getelementptr inbounds ptr, ptr %338, i64 %337
  %340 = load ptr, ptr %339, align 8, !tbaa !36
  %341 = getelementptr inbounds double, ptr %340, i64 %.1422521.us.us
  %342 = load double, ptr %341, align 8, !tbaa !22
  %343 = load ptr, ptr %312, align 8, !tbaa !20
  %344 = getelementptr inbounds ptr, ptr %343, i64 %337
  %345 = load ptr, ptr %344, align 8, !tbaa !36
  %346 = getelementptr inbounds double, ptr %345, i64 %.2436520.us.us
  store double %342, ptr %346, align 8, !tbaa !22
  %347 = add nuw nsw i64 %.16515.us.us, 2
  %niter605.next.1 = add i64 %niter605, 2
  %niter605.ncmp.1 = icmp eq i64 %niter605.next.1, %unroll_iter604
  br i1 %niter605.ncmp.1, label %._crit_edge518.us.us.unr-lcssa, label %.lr.ph517.us.us.new, !llvm.loop !53

._crit_edge518.us.us.unr-lcssa:                   ; preds = %.lr.ph517.us.us.new, %.lr.ph517.us.us
  %.16515.us.us.unr = phi i64 [ 0, %.lr.ph517.us.us ], [ %347, %.lr.ph517.us.us.new ]
  br i1 %lcmp.mod603.not, label %._crit_edge518.us.us, label %._crit_edge518.us.us.epilog-lcssa

._crit_edge518.us.us.epilog-lcssa:                ; preds = %._crit_edge518.us.us.unr-lcssa
  %348 = load ptr, ptr %311, align 8, !tbaa !20
  %349 = getelementptr inbounds ptr, ptr %348, i64 %.16515.us.us.unr
  %350 = load ptr, ptr %349, align 8, !tbaa !36
  %351 = getelementptr inbounds double, ptr %350, i64 %.1422521.us.us
  %352 = load double, ptr %351, align 8, !tbaa !22
  %353 = load ptr, ptr %312, align 8, !tbaa !20
  %354 = getelementptr inbounds ptr, ptr %353, i64 %.16515.us.us.unr
  %355 = load ptr, ptr %354, align 8, !tbaa !36
  %356 = getelementptr inbounds double, ptr %355, i64 %.2436520.us.us
  store double %352, ptr %356, align 8, !tbaa !22
  br label %._crit_edge518.us.us

._crit_edge518.us.us:                             ; preds = %._crit_edge518.us.us.unr-lcssa, %._crit_edge518.us.us.epilog-lcssa
  %357 = add nsw i64 %.2436520.us.us, 1
  br label %326

..loopexit_crit_edge.split.us.us:                 ; preds = %326
  %.not471.not.us = icmp sgt i64 %.9432529.us, %305
  br i1 %.not471.not.us, label %.preheader.us, label %._crit_edge530, !llvm.loop !54

._crit_edge530:                                   ; preds = %..loopexit_crit_edge.split.us.us, %._crit_edge513.thread, %.preheader.lr.ph, %._crit_edge513
  %.1435.lcssa = phi i64 [ 0, %._crit_edge513 ], [ 0, %.preheader.lr.ph ], [ 0, %._crit_edge513.thread ], [ %.3437.us.us, %..loopexit_crit_edge.split.us.us ]
  %358 = icmp eq i64 %.1435.lcssa, %.4442
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %358, ptr noundef nonnull @.str.318, ptr noundef %1)
  %359 = getelementptr inbounds i8, ptr %0, i64 560
  %360 = getelementptr inbounds i8, ptr %0, i64 720
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %.4454, i64 noundef %.4442, i64 noundef %.4448, double noundef 1.000000e+00, ptr noundef nonnull %285, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %359, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %360, i64 noundef 0, i64 noundef 0, ptr noundef %1)
  br label %387

361:                                              ; preds = %._crit_edge548, %228, %110
  %.3447.sink = phi i64 [ %.3447, %._crit_edge548 ], [ %.3447, %228 ], [ %.1445, %110 ]
  %.sink586 = phi i32 [ 2, %._crit_edge548 ], [ 1, %228 ], [ 0, %110 ]
  %.5455 = phi i64 [ %.3453.fr, %._crit_edge548 ], [ %.3453.fr, %228 ], [ %.1451, %110 ]
  %.5443 = phi i64 [ %.3441, %._crit_edge548 ], [ %.3441, %228 ], [ %.1439, %110 ]
  %.10433 = phi i64 [ %.8431.lcssa, %._crit_edge548 ], [ %.7430, %228 ], [ %.5428, %110 ]
  %.17 = phi i64 [ %.12.lcssa, %._crit_edge548 ], [ %.11, %228 ], [ %.5415, %110 ]
  %.10 = phi double [ %.8408.lcssa, %._crit_edge548 ], [ %.7407, %228 ], [ %.1401, %110 ]
  %.9 = phi double [ %.7.lcssa, %._crit_edge548 ], [ %.6, %228 ], [ %.1396, %110 ]
  %.4 = phi i64 [ %.3, %._crit_edge548 ], [ %.3, %228 ], [ %.1, %110 ]
  %362 = getelementptr inbounds i8, ptr %0, i64 2160
  store i64 0, ptr %362, align 8, !tbaa !55
  %363 = getelementptr inbounds i8, ptr %0, i64 2168
  store i64 %.3447.sink, ptr %363, align 8, !tbaa !56
  store i32 %.sink586, ptr %4, align 8, !tbaa !5
  %364 = getelementptr inbounds i8, ptr %0, i64 2248
  %365 = load ptr, ptr %364, align 8, !tbaa !20
  store i64 %.5455, ptr %365, align 8, !tbaa !21
  %366 = load ptr, ptr %364, align 8, !tbaa !20
  %367 = getelementptr inbounds i8, ptr %366, i64 8
  store i64 %.3447.sink, ptr %367, align 8, !tbaa !21
  %368 = load ptr, ptr %364, align 8, !tbaa !20
  %369 = getelementptr inbounds i8, ptr %368, i64 16
  store i64 %.5443, ptr %369, align 8, !tbaa !21
  %370 = load ptr, ptr %364, align 8, !tbaa !20
  %371 = getelementptr inbounds i8, ptr %370, i64 24
  store i64 %.0434, ptr %371, align 8, !tbaa !21
  %372 = load ptr, ptr %364, align 8, !tbaa !20
  %373 = getelementptr inbounds i8, ptr %372, i64 32
  store i64 %.10433, ptr %373, align 8, !tbaa !21
  %374 = load ptr, ptr %364, align 8, !tbaa !20
  %375 = getelementptr inbounds i8, ptr %374, i64 40
  store i64 %.0421, ptr %375, align 8, !tbaa !21
  %376 = load ptr, ptr %364, align 8, !tbaa !20
  %377 = getelementptr inbounds i8, ptr %376, i64 48
  store i64 %.17, ptr %377, align 8, !tbaa !21
  %378 = load i64, ptr %3, align 8, !tbaa !21
  %379 = load ptr, ptr %364, align 8, !tbaa !20
  %380 = getelementptr inbounds i8, ptr %379, i64 56
  store i64 %378, ptr %380, align 8, !tbaa !21
  %381 = load ptr, ptr %364, align 8, !tbaa !20
  %382 = getelementptr inbounds i8, ptr %381, i64 64
  store i64 %.4, ptr %382, align 8, !tbaa !21
  %383 = getelementptr inbounds i8, ptr %0, i64 2376
  %384 = load ptr, ptr %383, align 8, !tbaa !20
  store double %.10, ptr %384, align 8, !tbaa !22
  %385 = load ptr, ptr %383, align 8, !tbaa !20
  %386 = getelementptr inbounds i8, ptr %385, i64 8
  store double %.9, ptr %386, align 8, !tbaa !22
  br label %387

387:                                              ; preds = %361, %._crit_edge530
  %.0456 = phi i1 [ true, %361 ], [ false, %._crit_edge530 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #4
  ret i1 %.0456
}

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

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

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

declare noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef, double noundef, ptr noundef) local_unnamed_addr #2

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

declare noundef double @_ZN11alglib_impl6rdotv2ElPKNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #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 nounwind 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, !19, i64 2184}
!6 = !{!"_ZTSN11alglib_impl16eigsubspacestateE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !10, i64 32, !7, i64 40, !7, i64 48, !11, i64 56, !11, i64 57, !12, i64 64, !11, i64 88, !13, i64 96, !16, i64 160, !16, i64 240, !16, i64 320, !16, i64 400, !16, i64 480, !16, i64 560, !16, i64 640, !16, i64 720, !16, i64 800, !13, i64 880, !13, i64 944, !13, i64 1008, !13, i64 1072, !13, i64 1136, !13, i64 1200, !17, i64 1264, !16, i64 2000, !16, i64 2080, !7, i64 2160, !7, i64 2168, !7, i64 2176, !18, i64 2184}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"double", !8, i64 0}
!11 = !{!"bool", !8, i64 0}
!12 = !{!"_ZTSN11alglib_impl10hqrndstateE", !7, i64 0, !7, i64 8, !7, i64 16}
!13 = !{!"_ZTSN11alglib_impl9ae_vectorE", !7, i64 0, !7, i64 8, !11, i64 16, !14, i64 24, !8, i64 56}
!14 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24}
!15 = !{!"any pointer", !8, i64 0}
!16 = !{!"_ZTSN11alglib_impl9ae_matrixE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !11, i64 32, !14, i64 40, !8, i64 72}
!17 = !{!"_ZTSN11alglib_impl9apbuffersE", !13, i64 0, !13, i64 64, !13, i64 128, !13, i64 192, !13, i64 256, !13, i64 320, !13, i64 384, !13, i64 448, !13, i64 512, !16, i64 576, !16, i64 656}
!18 = !{!"_ZTSN11alglib_impl10rcommstateE", !19, i64 0, !13, i64 8, !13, i64 72, !13, i64 136, !13, i64 200}
!19 = !{!"int", !8, i64 0}
!20 = !{!8, !8, i64 0}
!21 = !{!7, !7, i64 0}
!22 = !{!10, !10, i64 0}
!23 = !{!6, !7, i64 0}
!24 = !{!6, !7, i64 8}
!25 = !{!6, !7, i64 16}
!26 = !{!6, !7, i64 48}
!27 = !{!6, !7, i64 2176}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.unroll.disable"}
!32 = !{!6, !11, i64 56}
!33 = !{i8 0, i8 2}
!34 = !{}
!35 = !{!6, !11, i64 57}
!36 = !{!15, !15, i64 0}
!37 = distinct !{!37, !29}
!38 = distinct !{!38, !29}
!39 = !{!6, !7, i64 24}
!40 = !{!6, !10, i64 32}
!41 = distinct !{!41, !29}
!42 = distinct !{!42, !29}
!43 = distinct !{!43, !29}
!44 = distinct !{!44, !31}
!45 = distinct !{!45, !29}
!46 = distinct !{!46, !29}
!47 = distinct !{!47, !29, !48}
!48 = !{!"llvm.loop.peeled.count", i32 1}
!49 = distinct !{!49, !29}
!50 = !{!6, !7, i64 40}
!51 = distinct !{!51, !29}
!52 = distinct !{!52, !29}
!53 = distinct !{!53, !29}
!54 = distinct !{!54, !29}
!55 = !{!6, !7, i64 2160}
!56 = !{!6, !7, i64 2168}


; Effective O3 passes: ADCEPass,BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopFullUnrollPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,MergedLoadStoreMotionPass,SROAPass,SimplifyCFGPass,TailCallElimPass