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

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

%"struct.alglib_impl::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::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.0 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%union.anon.0 = 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.1 }
%union.anon.1 = 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.332 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZN11alglib_implL18evd_stepswithintolE = external hidden global i64, align 8
@.str.362 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.363 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.364 = external hidden unnamed_addr constant [36 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; 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) #2 {
  %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 i8, align 1
  %17 = 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 1, ptr %16) #4
  %18 = load ptr, ptr %4, align 8, !tbaa !5
  %19 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %18, i32 0, i32 32
  %20 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %19, i32 0, i32 0
  %21 = load i32, ptr %20, align 8, !tbaa !9
  %22 = icmp sge i32 %21, 0
  br i1 %22, label %23, label %94

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

94:                                               ; 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 double 8.090000e+02, ptr %13, align 8, !tbaa !23
  store double 2.050000e+02, ptr %14, align 8, !tbaa !23
  br label %95

95:                                               ; preds = %94, %23
  %96 = load ptr, ptr %4, align 8, !tbaa !5
  %97 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %96, i32 0, i32 32
  %98 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %97, i32 0, i32 0
  %99 = load i32, ptr %98, align 8, !tbaa !9
  %100 = icmp eq i32 %99, 0
  br i1 %100, label %101, label %102

101:                                              ; preds = %95
  br label %311

102:                                              ; preds = %95
  %103 = load ptr, ptr %4, align 8, !tbaa !5
  %104 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %103, i32 0, i32 0
  %105 = load i64, ptr %104, align 8, !tbaa !24
  store i64 %105, ptr %6, align 8, !tbaa !22
  %106 = load ptr, ptr %4, align 8, !tbaa !5
  %107 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %106, i32 0, i32 1
  %108 = load i64, ptr %107, align 8, !tbaa !25
  store i64 %108, ptr %8, align 8, !tbaa !22
  %109 = load ptr, ptr %4, align 8, !tbaa !5
  %110 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %109, i32 0, i32 2
  %111 = load i64, ptr %110, align 8, !tbaa !26
  store i64 %111, ptr %7, align 8, !tbaa !22
  %112 = load ptr, ptr %4, align 8, !tbaa !5
  %113 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %112, i32 0, i32 9
  %114 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9hqrndseedEllPNS_10hqrndstateEPNS_8ae_stateE(i64 noundef 453, i64 noundef 463664, ptr noundef %113, ptr noundef %114)
  %115 = load ptr, ptr %4, align 8, !tbaa !5
  %116 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %115, i32 0, i32 31
  store i64 0, ptr %116, align 8, !tbaa !27
  %117 = load ptr, ptr %4, align 8, !tbaa !5
  %118 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %117, i32 0, i32 13
  %119 = load i64, ptr %7, align 8, !tbaa !22
  %120 = load i64, ptr %6, align 8, !tbaa !22
  %121 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %118, i64 noundef %119, i64 noundef %120, ptr noundef %121)
  %122 = load ptr, ptr %4, align 8, !tbaa !5
  %123 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %122, i32 0, i32 14
  %124 = load i64, ptr %7, align 8, !tbaa !22
  %125 = load i64, ptr %6, align 8, !tbaa !22
  %126 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %123, i64 noundef %124, i64 noundef %125, ptr noundef %126)
  %127 = load ptr, ptr %4, align 8, !tbaa !5
  %128 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %127, i32 0, i32 15
  %129 = load i64, ptr %7, align 8, !tbaa !22
  %130 = load i64, ptr %6, align 8, !tbaa !22
  %131 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %128, i64 noundef %129, i64 noundef %130, ptr noundef %131)
  %132 = load ptr, ptr %4, align 8, !tbaa !5
  %133 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %132, i32 0, i32 23
  %134 = load i64, ptr %7, align 8, !tbaa !22
  %135 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %133, i64 noundef %134, ptr noundef %135)
  %136 = load ptr, ptr %4, align 8, !tbaa !5
  %137 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %136, i32 0, i32 24
  %138 = load i64, ptr %7, align 8, !tbaa !22
  %139 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %137, i64 noundef %138, ptr noundef %139)
  %140 = load ptr, ptr %4, align 8, !tbaa !5
  %141 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %140, i32 0, i32 25
  %142 = load i64, ptr %7, align 8, !tbaa !22
  %143 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %141, i64 noundef %142, ptr noundef %143)
  %144 = load ptr, ptr %4, align 8, !tbaa !5
  %145 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %144, i32 0, i32 27
  %146 = load i64, ptr %6, align 8, !tbaa !22
  %147 = load i64, ptr %7, align 8, !tbaa !22
  %148 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %145, i64 noundef %146, i64 noundef %147, ptr noundef %148)
  %149 = load ptr, ptr %4, align 8, !tbaa !5
  %150 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %149, i32 0, i32 28
  %151 = load i64, ptr %6, align 8, !tbaa !22
  %152 = load i64, ptr %7, align 8, !tbaa !22
  %153 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %150, i64 noundef %151, i64 noundef %152, ptr noundef %153)
  %154 = load ptr, ptr %4, align 8, !tbaa !5
  %155 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %154, i32 0, i32 19
  %156 = load i64, ptr %6, align 8, !tbaa !22
  %157 = load i64, ptr %8, align 8, !tbaa !22
  %158 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %155, i64 noundef %156, i64 noundef %157, ptr noundef %158)
  %159 = load ptr, ptr %4, align 8, !tbaa !5
  %160 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %159, i32 0, i32 21
  %161 = load i64, ptr %8, align 8, !tbaa !22
  %162 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %160, i64 noundef %161, ptr noundef %162)
  %163 = load ptr, ptr %4, align 8, !tbaa !5
  %164 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %163, i32 0, i32 17
  %165 = load i64, ptr %7, align 8, !tbaa !22
  %166 = load i64, ptr %8, align 8, !tbaa !22
  %167 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %164, i64 noundef %165, i64 noundef %166, ptr noundef %167)
  %168 = load ptr, ptr %4, align 8, !tbaa !5
  %169 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %168, i32 0, i32 16
  %170 = load i64, ptr %7, align 8, !tbaa !22
  %171 = load i64, ptr %7, align 8, !tbaa !22
  %172 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %169, i64 noundef %170, i64 noundef %171, ptr noundef %172)
  store i64 0, ptr %10, align 8, !tbaa !22
  br label %173

173:                                              ; preds = %185, %102
  %174 = load i64, ptr %10, align 8, !tbaa !22
  %175 = load i64, ptr %7, align 8, !tbaa !22
  %176 = sub nsw i64 %175, 1
  %177 = icmp sle i64 %174, %176
  br i1 %177, label %178, label %188

178:                                              ; preds = %173
  %179 = load ptr, ptr %4, align 8, !tbaa !5
  %180 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %179, i32 0, i32 24
  %181 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %180, i32 0, i32 4
  %182 = load ptr, ptr %181, align 8, !tbaa !21
  %183 = load i64, ptr %10, align 8, !tbaa !22
  %184 = getelementptr inbounds double, ptr %182, i64 %183
  store double -1.000000e+00, ptr %184, align 8, !tbaa !23
  br label %185

185:                                              ; preds = %178
  %186 = load i64, ptr %10, align 8, !tbaa !22
  %187 = add nsw i64 %186, 1
  store i64 %187, ptr %10, align 8, !tbaa !22
  br label %173, !llvm.loop !28

188:                                              ; preds = %173
  %189 = load ptr, ptr %4, align 8, !tbaa !5
  %190 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %189, i32 0, i32 7
  %191 = load i8, ptr %190, align 8, !tbaa !30, !range !31, !noundef !32
  %192 = trunc i8 %191 to i1
  br i1 %192, label %193, label %198

193:                                              ; preds = %188
  %194 = load ptr, ptr %4, align 8, !tbaa !5
  %195 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %194, i32 0, i32 8
  %196 = load i8, ptr %195, align 1, !tbaa !33, !range !31, !noundef !32
  %197 = trunc i8 %196 to i1
  br i1 %197, label %198, label %265

198:                                              ; preds = %193, %188
  %199 = load ptr, ptr %4, align 8, !tbaa !5
  %200 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %199, i32 0, i32 8
  %201 = load i8, ptr %200, align 1, !tbaa !33, !range !31, !noundef !32
  %202 = trunc i8 %201 to i1
  br i1 %202, label %203, label %257

203:                                              ; preds = %198
  store i64 0, ptr %10, align 8, !tbaa !22
  br label %204

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

209:                                              ; preds = %204
  store i64 0, ptr %12, align 8, !tbaa !22
  br label %210

210:                                              ; preds = %230, %209
  %211 = load i64, ptr %12, align 8, !tbaa !22
  %212 = load i64, ptr %6, align 8, !tbaa !22
  %213 = sub nsw i64 %212, 1
  %214 = icmp sle i64 %211, %213
  br i1 %214, label %215, label %233

215:                                              ; preds = %210
  %216 = load ptr, ptr %4, align 8, !tbaa !5
  %217 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %216, i32 0, i32 9
  %218 = load ptr, ptr %5, align 8, !tbaa !5
  %219 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %217, ptr noundef %218)
  %220 = fsub double %219, 5.000000e-01
  %221 = load ptr, ptr %4, align 8, !tbaa !5
  %222 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %221, i32 0, i32 15
  %223 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %222, i32 0, i32 6
  %224 = load ptr, ptr %223, align 8, !tbaa !21
  %225 = load i64, ptr %10, align 8, !tbaa !22
  %226 = getelementptr inbounds ptr, ptr %224, i64 %225
  %227 = load ptr, ptr %226, align 8, !tbaa !5
  %228 = load i64, ptr %12, align 8, !tbaa !22
  %229 = getelementptr inbounds double, ptr %227, i64 %228
  store double %220, ptr %229, align 8, !tbaa !23
  br label %230

230:                                              ; preds = %215
  %231 = load i64, ptr %12, align 8, !tbaa !22
  %232 = add nsw i64 %231, 1
  store i64 %232, ptr %12, align 8, !tbaa !22
  br label %210, !llvm.loop !34

233:                                              ; preds = %210
  br label %234

234:                                              ; preds = %233
  %235 = load i64, ptr %10, align 8, !tbaa !22
  %236 = add nsw i64 %235, 1
  store i64 %236, ptr %10, align 8, !tbaa !22
  br label %204, !llvm.loop !35

237:                                              ; preds = %204
  %238 = load ptr, ptr %4, align 8, !tbaa !5
  %239 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %238, i32 0, i32 15
  %240 = load i64, ptr %7, align 8, !tbaa !22
  %241 = load i64, ptr %6, align 8, !tbaa !22
  %242 = load ptr, ptr %4, align 8, !tbaa !5
  %243 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %242, i32 0, i32 11
  %244 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9rmatrixlqEPNS_9ae_matrixEllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %239, i64 noundef %240, i64 noundef %241, ptr noundef %243, ptr noundef %244)
  %245 = load ptr, ptr %4, align 8, !tbaa !5
  %246 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %245, i32 0, i32 15
  %247 = load i64, ptr %7, align 8, !tbaa !22
  %248 = load i64, ptr %6, align 8, !tbaa !22
  %249 = load ptr, ptr %4, align 8, !tbaa !5
  %250 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %249, i32 0, i32 11
  %251 = load i64, ptr %7, align 8, !tbaa !22
  %252 = load ptr, ptr %4, align 8, !tbaa !5
  %253 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %252, i32 0, i32 12
  %254 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl16rmatrixlqunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef %246, i64 noundef %247, i64 noundef %248, ptr noundef %250, i64 noundef %251, ptr noundef %253, ptr noundef %254)
  %255 = load ptr, ptr %4, align 8, !tbaa !5
  %256 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %255, i32 0, i32 8
  store i8 0, ptr %256, align 1, !tbaa !33
  br label %257

257:                                              ; preds = %237, %198
  %258 = load i64, ptr %7, align 8, !tbaa !22
  %259 = load i64, ptr %6, align 8, !tbaa !22
  %260 = load ptr, ptr %4, align 8, !tbaa !5
  %261 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %260, i32 0, i32 12
  %262 = load ptr, ptr %4, align 8, !tbaa !5
  %263 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %262, i32 0, i32 14
  %264 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixcopyEllPNS_9ae_matrixEllS1_llPNS_8ae_stateE(i64 noundef %258, i64 noundef %259, ptr noundef %261, i64 noundef 0, i64 noundef 0, ptr noundef %263, i64 noundef 0, i64 noundef 0, ptr noundef %264)
  br label %265

265:                                              ; preds = %257, %193
  %266 = load ptr, ptr %4, align 8, !tbaa !5
  %267 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %266, i32 0, i32 31
  store i64 0, ptr %267, align 8, !tbaa !27
  store i64 0, ptr %15, align 8, !tbaa !22
  br label %268

268:                                              ; preds = %474, %265
  %269 = load ptr, ptr %4, align 8, !tbaa !5
  %270 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %269, i32 0, i32 3
  %271 = load i64, ptr %270, align 8, !tbaa !36
  %272 = icmp eq i64 %271, 0
  br i1 %272, label %281, label %273

273:                                              ; preds = %268
  %274 = load ptr, ptr %4, align 8, !tbaa !5
  %275 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %274, i32 0, i32 31
  %276 = load i64, ptr %275, align 8, !tbaa !27
  %277 = load ptr, ptr %4, align 8, !tbaa !5
  %278 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %277, i32 0, i32 3
  %279 = load i64, ptr %278, align 8, !tbaa !36
  %280 = icmp slt i64 %276, %279
  br i1 %280, label %281, label %285

281:                                              ; preds = %273, %268
  %282 = load i64, ptr %15, align 8, !tbaa !22
  %283 = load i64, ptr @_ZN11alglib_implL18evd_stepswithintolE, align 8, !tbaa !22
  %284 = icmp slt i64 %282, %283
  br i1 %284, label %286, label %285

285:                                              ; preds = %281, %273
  br label %505

286:                                              ; preds = %281
  %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 14
  %291 = load ptr, ptr %4, align 8, !tbaa !5
  %292 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %291, i32 0, i32 13
  %293 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixcopyEllPNS_9ae_matrixEllS1_llPNS_8ae_stateE(i64 noundef %287, i64 noundef %288, ptr noundef %290, i64 noundef 0, i64 noundef 0, ptr noundef %292, i64 noundef 0, i64 noundef 0, ptr noundef %293)
  %294 = load i64, ptr %7, align 8, !tbaa !22
  %295 = load i64, ptr %6, align 8, !tbaa !22
  %296 = load ptr, ptr %4, align 8, !tbaa !5
  %297 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %296, i32 0, i32 13
  %298 = load ptr, ptr %4, align 8, !tbaa !5
  %299 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %298, i32 0, i32 27
  %300 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl16rmatrixtransposeEllPNS_9ae_matrixEllS1_llPNS_8ae_stateE(i64 noundef %294, i64 noundef %295, ptr noundef %297, i64 noundef 0, i64 noundef 0, ptr noundef %299, i64 noundef 0, i64 noundef 0, ptr noundef %300)
  %301 = load ptr, ptr %4, align 8, !tbaa !5
  %302 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_implL16evd_clearrfieldsEPNS_16eigsubspacestateEPNS_8ae_stateE(ptr noundef %301, ptr noundef %302)
  %303 = load ptr, ptr %4, align 8, !tbaa !5
  %304 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %303, i32 0, i32 29
  store i64 0, ptr %304, align 8, !tbaa !37
  %305 = load i64, ptr %7, align 8, !tbaa !22
  %306 = load ptr, ptr %4, align 8, !tbaa !5
  %307 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %306, i32 0, i32 30
  store i64 %305, ptr %307, align 8, !tbaa !38
  %308 = load ptr, ptr %4, align 8, !tbaa !5
  %309 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %308, i32 0, i32 32
  %310 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %309, i32 0, i32 0
  store i32 0, ptr %310, align 8, !tbaa !9
  br label %668

311:                                              ; preds = %101
  %312 = load ptr, ptr %4, align 8, !tbaa !5
  %313 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %312, i32 0, i32 4
  %314 = load double, ptr %313, align 8, !tbaa !39
  %315 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %314, double noundef 0.000000e+00)
  br i1 %315, label %316, label %474

316:                                              ; preds = %311
  %317 = load ptr, ptr %4, align 8, !tbaa !5
  %318 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %317, i32 0, i32 6
  %319 = load i64, ptr %318, align 8, !tbaa !40
  %320 = icmp eq i64 %319, 0
  %321 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %320, ptr noundef @.str.362, ptr noundef %321)
  %322 = load ptr, ptr %4, align 8, !tbaa !5
  %323 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %322, i32 0, i32 16
  %324 = load i64, ptr %7, align 8, !tbaa !22
  %325 = load i64, ptr %7, align 8, !tbaa !22
  %326 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %323, i64 noundef %324, i64 noundef %325, ptr noundef %326)
  %327 = load i64, ptr %7, align 8, !tbaa !22
  %328 = load i64, ptr %7, align 8, !tbaa !22
  %329 = load i64, ptr %6, align 8, !tbaa !22
  %330 = load ptr, ptr %4, align 8, !tbaa !5
  %331 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %330, i32 0, i32 13
  %332 = load ptr, ptr %4, align 8, !tbaa !5
  %333 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %332, i32 0, i32 28
  %334 = load ptr, ptr %4, align 8, !tbaa !5
  %335 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %334, i32 0, i32 16
  %336 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %327, i64 noundef %328, i64 noundef %329, double noundef 1.000000e+00, ptr noundef %331, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %333, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %335, i64 noundef 0, i64 noundef 0, ptr noundef %336)
  %337 = load ptr, ptr %4, align 8, !tbaa !5
  %338 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %337, i32 0, i32 16
  %339 = load i64, ptr %7, 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 23
  %342 = load ptr, ptr %4, align 8, !tbaa !5
  %343 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %342, i32 0, i32 20
  %344 = load ptr, ptr %5, align 8, !tbaa !5
  %345 = call noundef zeroext i1 @_ZN11alglib_impl10smatrixevdEPNS_9ae_matrixEllbPNS_9ae_vectorES1_PNS_8ae_stateE(ptr noundef %338, i64 noundef %339, i64 noundef 0, i1 noundef zeroext true, ptr noundef %341, ptr noundef %343, ptr noundef %344)
  br i1 %345, label %348, label %346

346:                                              ; preds = %316
  %347 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef @.str.363, ptr noundef %347)
  br label %348

348:                                              ; preds = %346, %316
  store i64 0, ptr %12, align 8, !tbaa !22
  br label %349

349:                                              ; preds = %370, %348
  %350 = load i64, ptr %12, align 8, !tbaa !22
  %351 = load i64, ptr %7, align 8, !tbaa !22
  %352 = sub nsw i64 %351, 1
  %353 = icmp sle i64 %350, %352
  br i1 %353, label %354, label %373

354:                                              ; preds = %349
  %355 = load ptr, ptr %4, align 8, !tbaa !5
  %356 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %355, i32 0, i32 23
  %357 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %356, i32 0, i32 4
  %358 = load ptr, ptr %357, align 8, !tbaa !21
  %359 = load i64, ptr %12, align 8, !tbaa !22
  %360 = getelementptr inbounds double, ptr %358, i64 %359
  %361 = load double, ptr %360, align 8, !tbaa !23
  %362 = load ptr, ptr %5, align 8, !tbaa !5
  %363 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %361, ptr noundef %362)
  %364 = load ptr, ptr %4, align 8, !tbaa !5
  %365 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %364, i32 0, i32 25
  %366 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %365, i32 0, i32 4
  %367 = load ptr, ptr %366, align 8, !tbaa !21
  %368 = load i64, ptr %12, align 8, !tbaa !22
  %369 = getelementptr inbounds double, ptr %367, i64 %368
  store double %363, ptr %369, align 8, !tbaa !23
  br label %370

370:                                              ; preds = %354
  %371 = load i64, ptr %12, align 8, !tbaa !22
  %372 = add nsw i64 %371, 1
  store i64 %372, ptr %12, align 8, !tbaa !22
  br label %349, !llvm.loop !41

373:                                              ; preds = %349
  %374 = load ptr, ptr %4, align 8, !tbaa !5
  %375 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %374, i32 0, i32 25
  %376 = load i64, ptr %7, align 8, !tbaa !22
  %377 = load ptr, ptr %4, align 8, !tbaa !5
  %378 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %377, i32 0, i32 26
  %379 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rankxuntiedEPNS_9ae_vectorElPNS_9apbuffersEPNS_8ae_stateE(ptr noundef %375, i64 noundef %376, ptr noundef %378, ptr noundef %379)
  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 %380

380:                                              ; preds = %432, %373
  %381 = load i64, ptr %12, align 8, !tbaa !22
  %382 = load i64, ptr %7, align 8, !tbaa !22
  %383 = sub nsw i64 %382, 1
  %384 = icmp sle i64 %381, %383
  br i1 %384, label %385, label %435

385:                                              ; preds = %380
  %386 = load ptr, ptr %4, align 8, !tbaa !5
  %387 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %386, i32 0, i32 25
  %388 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %387, i32 0, i32 4
  %389 = load ptr, ptr %388, align 8, !tbaa !21
  %390 = load i64, ptr %12, align 8, !tbaa !22
  %391 = getelementptr inbounds double, ptr %389, i64 %390
  %392 = load double, ptr %391, align 8, !tbaa !23
  %393 = load i64, ptr %7, align 8, !tbaa !22
  %394 = load i64, ptr %8, align 8, !tbaa !22
  %395 = sub nsw i64 %393, %394
  %396 = sitofp i64 %395 to double
  %397 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %392, double noundef %396)
  br i1 %397, label %398, label %431

398:                                              ; preds = %385
  %399 = load double, ptr %14, align 8, !tbaa !23
  %400 = load ptr, ptr %4, align 8, !tbaa !5
  %401 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %400, i32 0, i32 23
  %402 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %401, i32 0, i32 4
  %403 = load ptr, ptr %402, align 8, !tbaa !21
  %404 = load i64, ptr %12, align 8, !tbaa !22
  %405 = getelementptr inbounds double, ptr %403, i64 %404
  %406 = load double, ptr %405, align 8, !tbaa !23
  %407 = load ptr, ptr %4, align 8, !tbaa !5
  %408 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %407, i32 0, i32 24
  %409 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %408, i32 0, i32 4
  %410 = load ptr, ptr %409, align 8, !tbaa !21
  %411 = load i64, ptr %12, align 8, !tbaa !22
  %412 = getelementptr inbounds double, ptr %410, i64 %411
  %413 = load double, ptr %412, align 8, !tbaa !23
  %414 = fsub double %406, %413
  %415 = load ptr, ptr %5, align 8, !tbaa !5
  %416 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %414, ptr noundef %415)
  %417 = load ptr, ptr %5, align 8, !tbaa !5
  %418 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %399, double noundef %416, ptr noundef %417)
  store double %418, ptr %14, align 8, !tbaa !23
  %419 = load double, ptr %13, align 8, !tbaa !23
  %420 = load ptr, ptr %4, align 8, !tbaa !5
  %421 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %420, i32 0, i32 23
  %422 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %421, i32 0, i32 4
  %423 = load ptr, ptr %422, align 8, !tbaa !21
  %424 = load i64, ptr %12, align 8, !tbaa !22
  %425 = getelementptr inbounds double, ptr %423, i64 %424
  %426 = load double, ptr %425, align 8, !tbaa !23
  %427 = load ptr, ptr %5, align 8, !tbaa !5
  %428 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %426, ptr noundef %427)
  %429 = load ptr, ptr %5, align 8, !tbaa !5
  %430 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %419, double noundef %428, ptr noundef %429)
  store double %430, ptr %13, align 8, !tbaa !23
  br label %431

431:                                              ; preds = %398, %385
  br label %432

432:                                              ; preds = %431
  %433 = load i64, ptr %12, align 8, !tbaa !22
  %434 = add nsw i64 %433, 1
  store i64 %434, ptr %12, align 8, !tbaa !22
  br label %380, !llvm.loop !42

435:                                              ; preds = %380
  %436 = load double, ptr %13, align 8, !tbaa !23
  %437 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %436, double noundef 0.000000e+00)
  br i1 %437, label %438, label %439

438:                                              ; preds = %435
  store double 1.000000e+00, ptr %13, align 8, !tbaa !23
  br label %439

439:                                              ; preds = %438, %435
  %440 = load double, ptr %14, align 8, !tbaa !23
  %441 = load ptr, ptr %4, align 8, !tbaa !5
  %442 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %441, i32 0, i32 4
  %443 = load double, ptr %442, align 8, !tbaa !39
  %444 = load double, ptr %13, align 8, !tbaa !23
  %445 = fmul double %443, %444
  %446 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %440, double noundef %445)
  br i1 %446, label %447, label %449

447:                                              ; preds = %439
  %448 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %15, ptr noundef %448)
  br label %450

449:                                              ; preds = %439
  store i64 0, ptr %15, align 8, !tbaa !22
  br label %450

450:                                              ; preds = %449, %447
  store i64 0, ptr %12, align 8, !tbaa !22
  br label %451

451:                                              ; preds = %470, %450
  %452 = load i64, ptr %12, align 8, !tbaa !22
  %453 = load i64, ptr %7, align 8, !tbaa !22
  %454 = sub nsw i64 %453, 1
  %455 = icmp sle i64 %452, %454
  br i1 %455, label %456, label %473

456:                                              ; preds = %451
  %457 = load ptr, ptr %4, align 8, !tbaa !5
  %458 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %457, i32 0, i32 23
  %459 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %458, i32 0, i32 4
  %460 = load ptr, ptr %459, align 8, !tbaa !21
  %461 = load i64, ptr %12, align 8, !tbaa !22
  %462 = getelementptr inbounds double, ptr %460, i64 %461
  %463 = load double, ptr %462, 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
  store double %463, ptr %469, align 8, !tbaa !23
  br label %470

470:                                              ; preds = %456
  %471 = load i64, ptr %12, align 8, !tbaa !22
  %472 = add nsw i64 %471, 1
  store i64 %472, ptr %12, align 8, !tbaa !22
  br label %451, !llvm.loop !43

473:                                              ; preds = %451
  br label %474

474:                                              ; preds = %473, %311
  %475 = load i64, ptr %6, align 8, !tbaa !22
  %476 = load i64, ptr %7, align 8, !tbaa !22
  %477 = load ptr, ptr %4, align 8, !tbaa !5
  %478 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %477, i32 0, i32 28
  %479 = load ptr, ptr %4, align 8, !tbaa !5
  %480 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %479, i32 0, i32 15
  %481 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl16rmatrixtransposeEllPNS_9ae_matrixEllS1_llPNS_8ae_stateE(i64 noundef %475, i64 noundef %476, ptr noundef %478, i64 noundef 0, i64 noundef 0, ptr noundef %480, i64 noundef 0, i64 noundef 0, ptr noundef %481)
  %482 = load ptr, ptr %4, align 8, !tbaa !5
  %483 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %482, i32 0, i32 15
  %484 = load i64, ptr %7, align 8, !tbaa !22
  %485 = load i64, ptr %6, align 8, !tbaa !22
  %486 = load ptr, ptr %4, align 8, !tbaa !5
  %487 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %486, i32 0, i32 11
  %488 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9rmatrixlqEPNS_9ae_matrixEllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef %483, i64 noundef %484, i64 noundef %485, ptr noundef %487, ptr noundef %488)
  %489 = load ptr, ptr %4, align 8, !tbaa !5
  %490 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %489, i32 0, i32 15
  %491 = load i64, ptr %7, align 8, !tbaa !22
  %492 = load i64, ptr %6, align 8, !tbaa !22
  %493 = load ptr, ptr %4, align 8, !tbaa !5
  %494 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %493, i32 0, i32 11
  %495 = load i64, ptr %7, align 8, !tbaa !22
  %496 = load ptr, ptr %4, align 8, !tbaa !5
  %497 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %496, i32 0, i32 14
  %498 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl16rmatrixlqunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef %490, i64 noundef %491, i64 noundef %492, ptr noundef %494, i64 noundef %495, ptr noundef %497, ptr noundef %498)
  %499 = load ptr, ptr %4, align 8, !tbaa !5
  %500 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %499, i32 0, i32 31
  %501 = load i64, ptr %500, align 8, !tbaa !27
  %502 = add nsw i64 %501, 1
  %503 = load ptr, ptr %4, align 8, !tbaa !5
  %504 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %503, i32 0, i32 31
  store i64 %502, ptr %504, align 8, !tbaa !27
  br label %268

505:                                              ; preds = %285
  %506 = load ptr, ptr %4, align 8, !tbaa !5
  %507 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %506, i32 0, i32 6
  %508 = load i64, ptr %507, align 8, !tbaa !40
  %509 = icmp eq i64 %508, 0
  %510 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %509, ptr noundef @.str.362, ptr noundef %510)
  %511 = load ptr, ptr %4, align 8, !tbaa !5
  %512 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %511, i32 0, i32 5
  %513 = load i64, ptr %512, align 8, !tbaa !44
  %514 = icmp eq i64 %513, 1
  %515 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %514, ptr noundef @.str.332, ptr noundef %515)
  %516 = load i64, ptr %7, align 8, !tbaa !22
  %517 = load i64, ptr %7, align 8, !tbaa !22
  %518 = load i64, ptr %6, align 8, !tbaa !22
  %519 = load ptr, ptr %4, align 8, !tbaa !5
  %520 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %519, i32 0, i32 13
  %521 = load ptr, ptr %4, align 8, !tbaa !5
  %522 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %521, i32 0, i32 28
  %523 = load ptr, ptr %4, align 8, !tbaa !5
  %524 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %523, i32 0, i32 16
  %525 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %516, i64 noundef %517, i64 noundef %518, double noundef 1.000000e+00, ptr noundef %520, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %522, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, 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 16
  %528 = load i64, ptr %7, align 8, !tbaa !22
  %529 = load ptr, ptr %4, align 8, !tbaa !5
  %530 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %529, i32 0, i32 22
  %531 = load ptr, ptr %4, align 8, !tbaa !5
  %532 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %531, i32 0, i32 18
  %533 = load ptr, ptr %5, align 8, !tbaa !5
  %534 = call noundef zeroext i1 @_ZN11alglib_impl10smatrixevdEPNS_9ae_matrixEllbPNS_9ae_vectorES1_PNS_8ae_stateE(ptr noundef %527, i64 noundef %528, i64 noundef 1, i1 noundef zeroext true, ptr noundef %530, ptr noundef %532, ptr noundef %533)
  br i1 %534, label %537, label %535

535:                                              ; preds = %505
  %536 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef @.str.363, ptr noundef %536)
  br label %537

537:                                              ; preds = %535, %505
  store i64 0, ptr %12, align 8, !tbaa !22
  br label %538

538:                                              ; preds = %559, %537
  %539 = load i64, ptr %12, align 8, !tbaa !22
  %540 = load i64, ptr %7, align 8, !tbaa !22
  %541 = sub nsw i64 %540, 1
  %542 = icmp sle i64 %539, %541
  br i1 %542, label %543, label %562

543:                                              ; preds = %538
  %544 = load ptr, ptr %4, align 8, !tbaa !5
  %545 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %544, i32 0, i32 22
  %546 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %545, i32 0, i32 4
  %547 = load ptr, ptr %546, align 8, !tbaa !21
  %548 = load i64, ptr %12, align 8, !tbaa !22
  %549 = getelementptr inbounds double, ptr %547, i64 %548
  %550 = load double, ptr %549, align 8, !tbaa !23
  %551 = load ptr, ptr %5, align 8, !tbaa !5
  %552 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %550, ptr noundef %551)
  %553 = load ptr, ptr %4, align 8, !tbaa !5
  %554 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %553, i32 0, i32 25
  %555 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %554, i32 0, i32 4
  %556 = load ptr, ptr %555, align 8, !tbaa !21
  %557 = load i64, ptr %12, align 8, !tbaa !22
  %558 = getelementptr inbounds double, ptr %556, i64 %557
  store double %552, ptr %558, align 8, !tbaa !23
  br label %559

559:                                              ; preds = %543
  %560 = load i64, ptr %12, align 8, !tbaa !22
  %561 = add nsw i64 %560, 1
  store i64 %561, ptr %12, align 8, !tbaa !22
  br label %538, !llvm.loop !45

562:                                              ; preds = %538
  %563 = load ptr, ptr %4, align 8, !tbaa !5
  %564 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %563, i32 0, i32 25
  %565 = load i64, ptr %7, align 8, !tbaa !22
  %566 = load ptr, ptr %4, align 8, !tbaa !5
  %567 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %566, i32 0, i32 26
  %568 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rankxuntiedEPNS_9ae_vectorElPNS_9apbuffersEPNS_8ae_stateE(ptr noundef %564, i64 noundef %565, ptr noundef %567, ptr noundef %568)
  store i64 0, ptr %9, align 8, !tbaa !22
  %569 = load i64, ptr %7, align 8, !tbaa !22
  %570 = sub nsw i64 %569, 1
  store i64 %570, ptr %10, align 8, !tbaa !22
  br label %571

571:                                              ; preds = %648, %562
  %572 = load i64, ptr %10, align 8, !tbaa !22
  %573 = load i64, ptr %7, align 8, !tbaa !22
  %574 = load i64, ptr %8, align 8, !tbaa !22
  %575 = sub nsw i64 %573, %574
  %576 = icmp sge i64 %572, %575
  br i1 %576, label %577, label %651

577:                                              ; preds = %571
  store i64 0, ptr %11, align 8, !tbaa !22
  br label %578

578:                                              ; preds = %644, %577
  %579 = load i64, ptr %11, align 8, !tbaa !22
  %580 = load i64, ptr %7, align 8, !tbaa !22
  %581 = sub nsw i64 %580, 1
  %582 = icmp sle i64 %579, %581
  br i1 %582, label %583, label %647

583:                                              ; preds = %578
  %584 = load ptr, ptr %4, align 8, !tbaa !5
  %585 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %584, i32 0, i32 25
  %586 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %585, i32 0, i32 4
  %587 = load ptr, ptr %586, align 8, !tbaa !21
  %588 = load i64, ptr %11, align 8, !tbaa !22
  %589 = getelementptr inbounds double, ptr %587, i64 %588
  %590 = load double, ptr %589, align 8, !tbaa !23
  %591 = load i64, ptr %10, align 8, !tbaa !22
  %592 = sitofp i64 %591 to double
  %593 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %590, double noundef %592)
  br i1 %593, label %594, label %643

594:                                              ; preds = %583
  %595 = load i64, ptr %9, align 8, !tbaa !22
  %596 = load i64, ptr %8, align 8, !tbaa !22
  %597 = icmp slt i64 %595, %596
  %598 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %597, ptr noundef @.str.364, ptr noundef %598)
  %599 = load ptr, ptr %4, align 8, !tbaa !5
  %600 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %599, i32 0, i32 22
  %601 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %600, i32 0, i32 4
  %602 = load ptr, ptr %601, align 8, !tbaa !21
  %603 = load i64, ptr %11, align 8, !tbaa !22
  %604 = getelementptr inbounds double, ptr %602, i64 %603
  %605 = load double, ptr %604, align 8, !tbaa !23
  %606 = load ptr, ptr %4, align 8, !tbaa !5
  %607 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %606, i32 0, i32 21
  %608 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %607, i32 0, i32 4
  %609 = load ptr, ptr %608, align 8, !tbaa !21
  %610 = load i64, ptr %9, align 8, !tbaa !22
  %611 = getelementptr inbounds double, ptr %609, i64 %610
  store double %605, ptr %611, align 8, !tbaa !23
  store i64 0, ptr %12, align 8, !tbaa !22
  br label %612

612:                                              ; preds = %637, %594
  %613 = load i64, ptr %12, align 8, !tbaa !22
  %614 = load i64, ptr %7, align 8, !tbaa !22
  %615 = sub nsw i64 %614, 1
  %616 = icmp sle i64 %613, %615
  br i1 %616, label %617, label %640

617:                                              ; preds = %612
  %618 = load ptr, ptr %4, align 8, !tbaa !5
  %619 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %618, i32 0, i32 18
  %620 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %619, i32 0, i32 6
  %621 = load ptr, ptr %620, align 8, !tbaa !21
  %622 = load i64, ptr %12, align 8, !tbaa !22
  %623 = getelementptr inbounds ptr, ptr %621, i64 %622
  %624 = load ptr, ptr %623, align 8, !tbaa !5
  %625 = load i64, ptr %11, align 8, !tbaa !22
  %626 = getelementptr inbounds double, ptr %624, i64 %625
  %627 = load double, ptr %626, align 8, !tbaa !23
  %628 = load ptr, ptr %4, align 8, !tbaa !5
  %629 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %628, i32 0, i32 17
  %630 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %629, i32 0, i32 6
  %631 = load ptr, ptr %630, align 8, !tbaa !21
  %632 = load i64, ptr %12, align 8, !tbaa !22
  %633 = getelementptr inbounds ptr, ptr %631, i64 %632
  %634 = load ptr, ptr %633, align 8, !tbaa !5
  %635 = load i64, ptr %9, align 8, !tbaa !22
  %636 = getelementptr inbounds double, ptr %634, i64 %635
  store double %627, ptr %636, align 8, !tbaa !23
  br label %637

637:                                              ; preds = %617
  %638 = load i64, ptr %12, align 8, !tbaa !22
  %639 = add nsw i64 %638, 1
  store i64 %639, ptr %12, align 8, !tbaa !22
  br label %612, !llvm.loop !46

640:                                              ; preds = %612
  %641 = load i64, ptr %9, align 8, !tbaa !22
  %642 = add nsw i64 %641, 1
  store i64 %642, ptr %9, align 8, !tbaa !22
  br label %643

643:                                              ; preds = %640, %583
  br label %644

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

647:                                              ; preds = %578
  br label %648

648:                                              ; preds = %647
  %649 = load i64, ptr %10, align 8, !tbaa !22
  %650 = add nsw i64 %649, -1
  store i64 %650, ptr %10, align 8, !tbaa !22
  br label %571, !llvm.loop !48

651:                                              ; preds = %571
  %652 = load i64, ptr %9, align 8, !tbaa !22
  %653 = load i64, ptr %8, align 8, !tbaa !22
  %654 = icmp eq i64 %652, %653
  %655 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %654, ptr noundef @.str.364, ptr noundef %655)
  %656 = load i64, ptr %6, align 8, !tbaa !22
  %657 = load i64, ptr %8, align 8, !tbaa !22
  %658 = load i64, ptr %7, align 8, !tbaa !22
  %659 = load ptr, ptr %4, align 8, !tbaa !5
  %660 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %659, i32 0, i32 13
  %661 = load ptr, ptr %4, align 8, !tbaa !5
  %662 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %661, i32 0, i32 17
  %663 = load ptr, ptr %4, align 8, !tbaa !5
  %664 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %663, i32 0, i32 19
  %665 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %656, i64 noundef %657, i64 noundef %658, double noundef 1.000000e+00, ptr noundef %660, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef %662, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %664, i64 noundef 0, i64 noundef 0, ptr noundef %665)
  store i8 0, ptr %16, align 1, !tbaa !49
  %666 = load i8, ptr %16, align 1, !tbaa !49, !range !31, !noundef !32
  %667 = trunc i8 %666 to i1
  store i1 %667, ptr %3, align 1
  store i32 1, ptr %17, align 4
  br label %741

668:                                              ; preds = %286
  store i8 1, ptr %16, align 1, !tbaa !49
  %669 = load i64, ptr %6, align 8, !tbaa !22
  %670 = load ptr, ptr %4, align 8, !tbaa !5
  %671 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %670, i32 0, i32 32
  %672 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %671, i32 0, i32 1
  %673 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %672, i32 0, i32 4
  %674 = load ptr, ptr %673, align 8, !tbaa !21
  %675 = getelementptr inbounds i64, ptr %674, i64 0
  store i64 %669, ptr %675, align 8, !tbaa !22
  %676 = load i64, ptr %7, align 8, !tbaa !22
  %677 = load ptr, ptr %4, align 8, !tbaa !5
  %678 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %677, i32 0, i32 32
  %679 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %678, i32 0, i32 1
  %680 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %679, i32 0, i32 4
  %681 = load ptr, ptr %680, align 8, !tbaa !21
  %682 = getelementptr inbounds i64, ptr %681, i64 1
  store i64 %676, ptr %682, align 8, !tbaa !22
  %683 = load i64, ptr %8, align 8, !tbaa !22
  %684 = load ptr, ptr %4, align 8, !tbaa !5
  %685 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %684, i32 0, i32 32
  %686 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %685, i32 0, i32 1
  %687 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %686, i32 0, i32 4
  %688 = load ptr, ptr %687, align 8, !tbaa !21
  %689 = getelementptr inbounds i64, ptr %688, i64 2
  store i64 %683, ptr %689, align 8, !tbaa !22
  %690 = load i64, ptr %9, 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 32
  %693 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %692, i32 0, i32 1
  %694 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %693, i32 0, i32 4
  %695 = load ptr, ptr %694, align 8, !tbaa !21
  %696 = getelementptr inbounds i64, ptr %695, i64 3
  store i64 %690, ptr %696, align 8, !tbaa !22
  %697 = load i64, ptr %10, align 8, !tbaa !22
  %698 = load ptr, ptr %4, align 8, !tbaa !5
  %699 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %698, i32 0, i32 32
  %700 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %699, i32 0, i32 1
  %701 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %700, i32 0, i32 4
  %702 = load ptr, ptr %701, align 8, !tbaa !21
  %703 = getelementptr inbounds i64, ptr %702, i64 4
  store i64 %697, ptr %703, align 8, !tbaa !22
  %704 = load i64, ptr %11, 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 32
  %707 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %706, i32 0, i32 1
  %708 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %707, i32 0, i32 4
  %709 = load ptr, ptr %708, align 8, !tbaa !21
  %710 = getelementptr inbounds i64, ptr %709, i64 5
  store i64 %704, ptr %710, align 8, !tbaa !22
  %711 = load i64, ptr %12, align 8, !tbaa !22
  %712 = load ptr, ptr %4, align 8, !tbaa !5
  %713 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %712, i32 0, i32 32
  %714 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %713, i32 0, i32 1
  %715 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %714, i32 0, i32 4
  %716 = load ptr, ptr %715, align 8, !tbaa !21
  %717 = getelementptr inbounds i64, ptr %716, i64 6
  store i64 %711, ptr %717, align 8, !tbaa !22
  %718 = load i64, ptr %15, align 8, !tbaa !22
  %719 = load ptr, ptr %4, align 8, !tbaa !5
  %720 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %719, i32 0, i32 32
  %721 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %720, i32 0, i32 1
  %722 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %721, i32 0, i32 4
  %723 = load ptr, ptr %722, align 8, !tbaa !21
  %724 = getelementptr inbounds i64, ptr %723, i64 7
  store i64 %718, ptr %724, align 8, !tbaa !22
  %725 = load double, ptr %13, align 8, !tbaa !23
  %726 = load ptr, ptr %4, align 8, !tbaa !5
  %727 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %726, i32 0, i32 32
  %728 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %727, i32 0, i32 3
  %729 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %728, i32 0, i32 4
  %730 = load ptr, ptr %729, align 8, !tbaa !21
  %731 = getelementptr inbounds double, ptr %730, i64 0
  store double %725, ptr %731, align 8, !tbaa !23
  %732 = load double, ptr %14, align 8, !tbaa !23
  %733 = load ptr, ptr %4, align 8, !tbaa !5
  %734 = getelementptr inbounds %"struct.alglib_impl::eigsubspacestate", ptr %733, i32 0, i32 32
  %735 = getelementptr inbounds %"struct.alglib_impl::rcommstate", ptr %734, i32 0, i32 3
  %736 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %735, i32 0, i32 4
  %737 = load ptr, ptr %736, align 8, !tbaa !21
  %738 = getelementptr inbounds double, ptr %737, i64 1
  store double %732, ptr %738, align 8, !tbaa !23
  %739 = load i8, ptr %16, align 1, !tbaa !49, !range !31, !noundef !32
  %740 = trunc i8 %739 to i1
  store i1 %740, ptr %3, align 1
  store i32 1, ptr %17, align 4
  br label %741

741:                                              ; preds = %668, %651
  call void @llvm.lifetime.end.p0(i64 1, 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
  %742 = load i1, ptr %3, align 1
  ret i1 %742
}

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #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 2120}
!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, !18, i64 1200, !17, i64 1936, !17, i64 2016, !11, i64 2096, !11, i64 2104, !11, i64 2112, !19, i64 2120}
!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 2112}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = !{!10, !13, i64 56}
!31 = !{i8 0, i8 2}
!32 = !{}
!33 = !{!10, !13, i64 57}
!34 = distinct !{!34, !29}
!35 = distinct !{!35, !29}
!36 = !{!10, !11, i64 24}
!37 = !{!10, !11, i64 2096}
!38 = !{!10, !11, i64 2104}
!39 = !{!10, !12, i64 32}
!40 = !{!10, !11, i64 48}
!41 = distinct !{!41, !29}
!42 = distinct !{!42, !29}
!43 = distinct !{!43, !29}
!44 = !{!10, !11, i64 40}
!45 = distinct !{!45, !29}
!46 = distinct !{!46, !29}
!47 = distinct !{!47, !29}
!48 = distinct !{!48, !29}
!49 = !{!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.332 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZN11alglib_implL18evd_stepswithintolE = external hidden local_unnamed_addr global i64, align 8
@.str.362 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.363 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.364 = external hidden unnamed_addr constant [36 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

; 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 #2 {
  %3 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #4
  %4 = getelementptr inbounds i8, ptr %0, i64 2120
  %5 = load i32, ptr %4, align 8, !tbaa !5
  %6 = icmp sgt i32 %5, -1
  br i1 %6, label %7, label %.thread

.thread:                                          ; preds = %2
  store i64 -788, ptr %3, align 8, !tbaa !20
  br label %31

7:                                                ; preds = %2
  %8 = getelementptr inbounds i8, ptr %0, i64 2184
  %9 = load ptr, ptr %8, align 8, !tbaa !21
  %10 = load i64, ptr %9, align 8, !tbaa !20
  %11 = getelementptr inbounds i8, ptr %9, i64 8
  %12 = load i64, ptr %11, align 8, !tbaa !20
  %13 = getelementptr inbounds i8, ptr %9, i64 16
  %14 = load i64, ptr %13, align 8, !tbaa !20
  %15 = getelementptr inbounds i8, ptr %9, i64 24
  %16 = load i64, ptr %15, align 8, !tbaa !20
  %17 = getelementptr inbounds i8, ptr %9, i64 32
  %18 = load i64, ptr %17, align 8, !tbaa !20
  %19 = getelementptr inbounds i8, ptr %9, i64 40
  %20 = load i64, ptr %19, align 8, !tbaa !20
  %21 = getelementptr inbounds i8, ptr %9, i64 48
  %22 = load i64, ptr %21, align 8, !tbaa !20
  %23 = getelementptr inbounds i8, ptr %9, i64 56
  %24 = load i64, ptr %23, align 8, !tbaa !20
  store i64 %24, ptr %3, align 8, !tbaa !20
  %25 = getelementptr inbounds i8, ptr %0, i64 2312
  %26 = load ptr, ptr %25, align 8, !tbaa !21
  %27 = load double, ptr %26, align 8, !tbaa !22
  %28 = getelementptr inbounds i8, ptr %26, i64 8
  %29 = load double, ptr %28, align 8, !tbaa !22
  %30 = icmp eq i32 %5, 0
  br i1 %30, label %130, label %31

31:                                               ; preds = %.thread, %7
  %.0348 = phi double [ 2.050000e+02, %.thread ], [ %29, %7 ]
  %.0289347 = phi double [ 8.090000e+02, %.thread ], [ %27, %7 ]
  %.0294346 = phi i64 [ 74, %.thread ], [ %22, %7 ]
  %.0300345 = phi i64 [ 255, %.thread ], [ %20, %7 ]
  %.0309343 = phi i64 [ -909, %.thread ], [ %16, %7 ]
  %32 = load i64, ptr %0, align 8, !tbaa !23
  %33 = getelementptr inbounds i8, ptr %0, i64 8
  %34 = load i64, ptr %33, align 8, !tbaa !24
  %35 = getelementptr inbounds i8, ptr %0, i64 16
  %36 = load i64, ptr %35, align 8, !tbaa !25
  %37 = getelementptr inbounds i8, ptr %0, i64 64
  tail call void @_ZN11alglib_impl9hqrndseedEllPNS_10hqrndstateEPNS_8ae_stateE(i64 noundef 453, i64 noundef 463664, ptr noundef nonnull %37, ptr noundef %1)
  %38 = getelementptr inbounds i8, ptr %0, i64 2112
  store i64 0, ptr %38, align 8, !tbaa !26
  %39 = getelementptr inbounds i8, ptr %0, i64 240
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %39, i64 noundef %36, i64 noundef %32, ptr noundef %1)
  %40 = getelementptr inbounds i8, ptr %0, i64 320
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %40, i64 noundef %36, i64 noundef %32, ptr noundef %1)
  %41 = getelementptr inbounds i8, ptr %0, i64 400
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %41, i64 noundef %36, i64 noundef %32, ptr noundef %1)
  %42 = getelementptr inbounds i8, ptr %0, i64 1008
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %42, i64 noundef %36, ptr noundef %1)
  %43 = getelementptr inbounds i8, ptr %0, i64 1072
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %43, i64 noundef %36, ptr noundef %1)
  %44 = getelementptr inbounds i8, ptr %0, i64 1136
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %44, i64 noundef %36, ptr noundef %1)
  %45 = getelementptr inbounds i8, ptr %0, i64 1936
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %45, i64 noundef %32, i64 noundef %36, ptr noundef %1)
  %46 = getelementptr inbounds i8, ptr %0, i64 2016
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %46, i64 noundef %32, i64 noundef %36, ptr noundef %1)
  %47 = getelementptr inbounds i8, ptr %0, i64 720
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %47, i64 noundef %32, i64 noundef %34, ptr noundef %1)
  %48 = getelementptr inbounds i8, ptr %0, i64 880
  tail call void @_ZN11alglib_impl23rvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %48, i64 noundef %34, ptr noundef %1)
  %49 = getelementptr inbounds i8, ptr %0, i64 560
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %49, i64 noundef %36, i64 noundef %34, ptr noundef %1)
  %50 = getelementptr inbounds i8, ptr %0, i64 480
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %50, i64 noundef %36, i64 noundef %36, ptr noundef %1)
  %.not.not352 = icmp sgt i64 %36, 0
  br i1 %.not.not352, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %31
  %51 = getelementptr inbounds i8, ptr %0, i64 1128
  %xtraiter = and i64 %36, 3
  %52 = icmp ult i64 %36, 4
  br i1 %52, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.new

.lr.ph.new:                                       ; preds = %.lr.ph
  %unroll_iter = and i64 %36, 9223372036854775804
  br label %53

53:                                               ; preds = %53, %.lr.ph.new
  %.1303353 = phi i64 [ 0, %.lr.ph.new ], [ %65, %53 ]
  %niter = phi i64 [ 0, %.lr.ph.new ], [ %niter.next.3, %53 ]
  %54 = load ptr, ptr %51, align 8, !tbaa !21
  %55 = getelementptr inbounds double, ptr %54, i64 %.1303353
  store double -1.000000e+00, ptr %55, align 8, !tbaa !22
  %56 = or disjoint i64 %.1303353, 1
  %57 = load ptr, ptr %51, align 8, !tbaa !21
  %58 = getelementptr inbounds double, ptr %57, i64 %56
  store double -1.000000e+00, ptr %58, align 8, !tbaa !22
  %59 = or disjoint i64 %.1303353, 2
  %60 = load ptr, ptr %51, align 8, !tbaa !21
  %61 = getelementptr inbounds double, ptr %60, i64 %59
  store double -1.000000e+00, ptr %61, align 8, !tbaa !22
  %62 = or disjoint i64 %.1303353, 3
  %63 = load ptr, ptr %51, align 8, !tbaa !21
  %64 = getelementptr inbounds double, ptr %63, i64 %62
  store double -1.000000e+00, ptr %64, align 8, !tbaa !22
  %65 = add nuw nsw i64 %.1303353, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge.loopexit.unr-lcssa, label %53, !llvm.loop !27

._crit_edge.loopexit.unr-lcssa:                   ; preds = %53, %.lr.ph
  %.1303353.unr = phi i64 [ 0, %.lr.ph ], [ %65, %53 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge.loopexit.unr-lcssa, %.epil.preheader
  %.1303353.epil = phi i64 [ %68, %.epil.preheader ], [ %.1303353.unr, %._crit_edge.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %._crit_edge.loopexit.unr-lcssa ]
  %66 = load ptr, ptr %51, align 8, !tbaa !21
  %67 = getelementptr inbounds double, ptr %66, i64 %.1303353.epil
  store double -1.000000e+00, ptr %67, align 8, !tbaa !22
  %68 = add nuw nsw i64 %.1303353.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge, label %.epil.preheader, !llvm.loop !29

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.epil.preheader, %31
  %.1303.lcssa = phi i64 [ 0, %31 ], [ %36, %.epil.preheader ], [ %36, %._crit_edge.loopexit.unr-lcssa ]
  %69 = getelementptr inbounds i8, ptr %0, i64 56
  %70 = load i8, ptr %69, align 8, !tbaa !31, !range !32, !noundef !33
  %71 = trunc nuw i8 %70 to i1
  %72 = getelementptr inbounds i8, ptr %0, i64 57
  %73 = load i8, ptr %72, align 1, !tbaa !34, !range !32
  br i1 %71, label %74, label %._crit_edge._crit_edge

74:                                               ; preds = %._crit_edge
  %75 = trunc nuw i8 %73 to i1
  br i1 %75, label %._crit_edge._crit_edge, label %92

._crit_edge._crit_edge:                           ; preds = %._crit_edge, %74
  %76 = getelementptr inbounds i8, ptr %0, i64 57
  %77 = trunc nuw i8 %73 to i1
  br i1 %77, label %.preheader351, label %90

.preheader351:                                    ; preds = %._crit_edge._crit_edge
  br i1 %.not.not352, label %.preheader350.lr.ph, label %._crit_edge361

.preheader350.lr.ph:                              ; preds = %.preheader351
  %.not.not325354 = icmp sgt i64 %32, 0
  %78 = getelementptr inbounds i8, ptr %0, i64 472
  br i1 %.not.not325354, label %.preheader350.us, label %._crit_edge361

.preheader350.us:                                 ; preds = %.preheader350.lr.ph, %._crit_edge357.us
  %.2304360.us = phi i64 [ %87, %._crit_edge357.us ], [ 0, %.preheader350.lr.ph ]
  br label %79

79:                                               ; preds = %.preheader350.us, %79
  %.2296355.us = phi i64 [ 0, %.preheader350.us ], [ %86, %79 ]
  %80 = tail call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %37, ptr noundef %1)
  %81 = fadd double %80, -5.000000e-01
  %82 = load ptr, ptr %78, align 8, !tbaa !21
  %83 = getelementptr inbounds ptr, ptr %82, i64 %.2304360.us
  %84 = load ptr, ptr %83, align 8, !tbaa !35
  %85 = getelementptr inbounds double, ptr %84, i64 %.2296355.us
  store double %81, ptr %85, align 8, !tbaa !22
  %86 = add nuw nsw i64 %.2296355.us, 1
  %exitcond414.not = icmp eq i64 %86, %32
  br i1 %exitcond414.not, label %._crit_edge357.us, label %79, !llvm.loop !36

._crit_edge357.us:                                ; preds = %79
  %87 = add nuw nsw i64 %.2304360.us, 1
  %exitcond415.not = icmp eq i64 %87, %36
  br i1 %exitcond415.not, label %._crit_edge361, label %.preheader350.us, !llvm.loop !37

._crit_edge361:                                   ; preds = %._crit_edge357.us, %.preheader350.lr.ph, %.preheader351
  %.2304.lcssa = phi i64 [ 0, %.preheader351 ], [ %36, %.preheader350.lr.ph ], [ %36, %._crit_edge357.us ]
  %.1295.lcssa = phi i64 [ %.0294346, %.preheader351 ], [ 0, %.preheader350.lr.ph ], [ %32, %._crit_edge357.us ]
  %88 = getelementptr inbounds i8, ptr %0, i64 96
  tail call void @_ZN11alglib_impl9rmatrixlqEPNS_9ae_matrixEllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %41, i64 noundef %36, i64 noundef %32, ptr noundef nonnull %88, ptr noundef %1)
  %89 = getelementptr inbounds i8, ptr %0, i64 160
  tail call void @_ZN11alglib_impl16rmatrixlqunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef nonnull %41, i64 noundef %36, i64 noundef %32, ptr noundef nonnull %88, i64 noundef %36, ptr noundef nonnull %89, ptr noundef %1)
  store i8 0, ptr %76, align 1, !tbaa !34
  br label %90

90:                                               ; preds = %._crit_edge361, %._crit_edge._crit_edge
  %.3305 = phi i64 [ %.2304.lcssa, %._crit_edge361 ], [ %.1303.lcssa, %._crit_edge._crit_edge ]
  %.3297 = phi i64 [ %.1295.lcssa, %._crit_edge361 ], [ %.0294346, %._crit_edge._crit_edge ]
  %91 = getelementptr inbounds i8, ptr %0, i64 160
  tail call void @_ZN11alglib_impl11rmatrixcopyEllPNS_9ae_matrixEllS1_llPNS_8ae_stateE(i64 noundef %36, i64 noundef %32, ptr noundef nonnull %91, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %40, i64 noundef 0, i64 noundef 0, ptr noundef %1)
  br label %92

92:                                               ; preds = %90, %74
  %.4306 = phi i64 [ %.3305, %90 ], [ %.1303.lcssa, %74 ]
  %.4298 = phi i64 [ %.3297, %90 ], [ %.0294346, %74 ]
  store i64 0, ptr %38, align 8, !tbaa !26
  store i64 0, ptr %3, align 8, !tbaa !20
  br label %93

93:                                               ; preds = %.loopexit349, %92
  %94 = phi i64 [ %234, %.loopexit349 ], [ 0, %92 ]
  %.0300344 = phi i64 [ %20, %.loopexit349 ], [ %.0300345, %92 ]
  %.0309342 = phi i64 [ %16, %.loopexit349 ], [ %.0309343, %92 ]
  %.1318 = phi i64 [ %10, %.loopexit349 ], [ %32, %92 ]
  %.1316 = phi i64 [ %12, %.loopexit349 ], [ %36, %92 ]
  %.1314 = phi i64 [ %14, %.loopexit349 ], [ %34, %92 ]
  %.5307 = phi i64 [ %18, %.loopexit349 ], [ %.4306, %92 ]
  %.5299 = phi i64 [ %.9, %.loopexit349 ], [ %.4298, %92 ]
  %.1290 = phi double [ %.5, %.loopexit349 ], [ %.0289347, %92 ]
  %.1 = phi double [ %.4, %.loopexit349 ], [ %.0348, %92 ]
  %95 = getelementptr inbounds i8, ptr %0, i64 24
  %96 = load i64, ptr %95, align 8, !tbaa !38
  %97 = icmp eq i64 %96, 0
  %98 = icmp slt i64 %94, %96
  %or.cond = select i1 %97, i1 true, i1 %98
  br i1 %or.cond, label %99, label %235

99:                                               ; preds = %93
  %100 = load i64, ptr %3, align 8, !tbaa !20
  %101 = load i64, ptr @_ZN11alglib_implL18evd_stepswithintolE, align 8, !tbaa !20
  %102 = icmp slt i64 %100, %101
  br i1 %102, label %103, label %235

103:                                              ; preds = %99
  %104 = getelementptr inbounds i8, ptr %0, i64 320
  %105 = getelementptr inbounds i8, ptr %0, i64 240
  call void @_ZN11alglib_impl11rmatrixcopyEllPNS_9ae_matrixEllS1_llPNS_8ae_stateE(i64 noundef %.1316, i64 noundef %.1318, ptr noundef nonnull %104, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %105, i64 noundef 0, i64 noundef 0, ptr noundef %1)
  %106 = getelementptr inbounds i8, ptr %0, i64 1936
  call void @_ZN11alglib_impl16rmatrixtransposeEllPNS_9ae_matrixEllS1_llPNS_8ae_stateE(i64 noundef %.1316, i64 noundef %.1318, ptr noundef nonnull %105, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %106, i64 noundef 0, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_implL16evd_clearrfieldsEPNS_16eigsubspacestateEPNS_8ae_stateE(ptr noundef nonnull %0, ptr noundef %1)
  %107 = getelementptr inbounds i8, ptr %0, i64 2096
  store i64 0, ptr %107, align 8, !tbaa !39
  %108 = getelementptr inbounds i8, ptr %0, i64 2104
  store i64 %.1316, ptr %108, align 8, !tbaa !40
  store i32 0, ptr %4, align 8, !tbaa !5
  %109 = getelementptr inbounds i8, ptr %0, i64 2184
  %110 = load ptr, ptr %109, align 8, !tbaa !21
  store i64 %.1318, ptr %110, align 8, !tbaa !20
  %111 = load ptr, ptr %109, align 8, !tbaa !21
  %112 = getelementptr inbounds i8, ptr %111, i64 8
  store i64 %.1316, ptr %112, align 8, !tbaa !20
  %113 = load ptr, ptr %109, align 8, !tbaa !21
  %114 = getelementptr inbounds i8, ptr %113, i64 16
  store i64 %.1314, ptr %114, align 8, !tbaa !20
  %115 = load ptr, ptr %109, align 8, !tbaa !21
  %116 = getelementptr inbounds i8, ptr %115, i64 24
  store i64 %.0309342, ptr %116, align 8, !tbaa !20
  %117 = load ptr, ptr %109, align 8, !tbaa !21
  %118 = getelementptr inbounds i8, ptr %117, i64 32
  store i64 %.5307, ptr %118, align 8, !tbaa !20
  %119 = load ptr, ptr %109, align 8, !tbaa !21
  %120 = getelementptr inbounds i8, ptr %119, i64 40
  store i64 %.0300344, ptr %120, align 8, !tbaa !20
  %121 = load ptr, ptr %109, align 8, !tbaa !21
  %122 = getelementptr inbounds i8, ptr %121, i64 48
  store i64 %.5299, ptr %122, align 8, !tbaa !20
  %123 = load i64, ptr %3, align 8, !tbaa !20
  %124 = load ptr, ptr %109, align 8, !tbaa !21
  %125 = getelementptr inbounds i8, ptr %124, i64 56
  store i64 %123, ptr %125, align 8, !tbaa !20
  %126 = getelementptr inbounds i8, ptr %0, i64 2312
  %127 = load ptr, ptr %126, align 8, !tbaa !21
  store double %.1290, ptr %127, align 8, !tbaa !22
  %128 = load ptr, ptr %126, align 8, !tbaa !21
  %129 = getelementptr inbounds i8, ptr %128, i64 8
  store double %.1, ptr %129, align 8, !tbaa !22
  br label %318

130:                                              ; preds = %7
  %131 = getelementptr inbounds i8, ptr %0, i64 32
  %132 = load double, ptr %131, align 8, !tbaa !41
  %133 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %132, double noundef 0.000000e+00)
  br i1 %133, label %134, label %.loopexit349

134:                                              ; preds = %130
  %135 = getelementptr inbounds i8, ptr %0, i64 48
  %136 = load i64, ptr %135, align 8, !tbaa !42
  %137 = icmp eq i64 %136, 0
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %137, ptr noundef nonnull @.str.362, ptr noundef %1)
  %138 = getelementptr inbounds i8, ptr %0, i64 480
  tail call void @_ZN11alglib_impl23rmatrixsetlengthatleastEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %138, i64 noundef %12, i64 noundef %12, ptr noundef %1)
  %139 = getelementptr inbounds i8, ptr %0, i64 240
  %140 = getelementptr inbounds i8, ptr %0, i64 2016
  tail call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %12, i64 noundef %12, i64 noundef %10, double noundef 1.000000e+00, ptr noundef nonnull %139, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %140, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %138, i64 noundef 0, i64 noundef 0, ptr noundef %1)
  %141 = getelementptr inbounds i8, ptr %0, i64 1008
  %142 = getelementptr inbounds i8, ptr %0, i64 800
  %143 = tail call noundef zeroext i1 @_ZN11alglib_impl10smatrixevdEPNS_9ae_matrixEllbPNS_9ae_vectorES1_PNS_8ae_stateE(ptr noundef nonnull %138, i64 noundef %12, i64 noundef 0, i1 noundef zeroext true, ptr noundef nonnull %141, ptr noundef nonnull %142, ptr noundef %1)
  br i1 %143, label %145, label %144

144:                                              ; preds = %134
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef nonnull @.str.363, ptr noundef %1)
  br label %145

145:                                              ; preds = %144, %134
  %.not.not326365 = icmp sgt i64 %12, 0
  br i1 %.not.not326365, label %.lr.ph368, label %._crit_edge369.thread

._crit_edge369.thread:                            ; preds = %145
  %146 = getelementptr inbounds i8, ptr %0, i64 1136
  %147 = getelementptr inbounds i8, ptr %0, i64 1200
  tail call void @_ZN11alglib_impl11rankxuntiedEPNS_9ae_vectorElPNS_9apbuffersEPNS_8ae_stateE(ptr noundef nonnull %146, i64 noundef %12, ptr noundef nonnull %147, ptr noundef %1)
  br label %._crit_edge376

.lr.ph368:                                        ; preds = %145
  %148 = getelementptr inbounds i8, ptr %0, i64 1064
  %149 = getelementptr inbounds i8, ptr %0, i64 1192
  br label %150

150:                                              ; preds = %.lr.ph368, %150
  %.6366 = phi i64 [ 0, %.lr.ph368 ], [ %157, %150 ]
  %151 = load ptr, ptr %148, align 8, !tbaa !21
  %152 = getelementptr inbounds double, ptr %151, i64 %.6366
  %153 = load double, ptr %152, align 8, !tbaa !22
  %154 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %153, ptr noundef %1)
  %155 = load ptr, ptr %149, align 8, !tbaa !21
  %156 = getelementptr inbounds double, ptr %155, i64 %.6366
  store double %154, ptr %156, align 8, !tbaa !22
  %157 = add nuw nsw i64 %.6366, 1
  %exitcond416.not = icmp eq i64 %157, %12
  br i1 %exitcond416.not, label %._crit_edge369, label %150, !llvm.loop !43

._crit_edge369:                                   ; preds = %150
  %158 = getelementptr inbounds i8, ptr %0, i64 1136
  %159 = getelementptr inbounds i8, ptr %0, i64 1200
  tail call void @_ZN11alglib_impl11rankxuntiedEPNS_9ae_vectorElPNS_9apbuffersEPNS_8ae_stateE(ptr noundef nonnull %158, i64 noundef %12, ptr noundef nonnull %159, ptr noundef %1)
  br i1 %.not.not326365, label %.lr.ph375, label %._crit_edge376

.lr.ph375:                                        ; preds = %._crit_edge369
  %160 = getelementptr inbounds i8, ptr %0, i64 1192
  %161 = sub nsw i64 %12, %14
  %162 = sitofp i64 %161 to double
  %163 = getelementptr inbounds i8, ptr %0, i64 1064
  %164 = getelementptr inbounds i8, ptr %0, i64 1128
  br label %165

165:                                              ; preds = %.lr.ph375, %185
  %.2373 = phi double [ 0.000000e+00, %.lr.ph375 ], [ %.3, %185 ]
  %.2291372 = phi double [ 0.000000e+00, %.lr.ph375 ], [ %.3292, %185 ]
  %.7371 = phi i64 [ 0, %.lr.ph375 ], [ %186, %185 ]
  %166 = load ptr, ptr %160, align 8, !tbaa !21
  %167 = getelementptr inbounds double, ptr %166, i64 %.7371
  %168 = load double, ptr %167, align 8, !tbaa !22
  %169 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %168, double noundef %162)
  br i1 %169, label %170, label %185

170:                                              ; preds = %165
  %171 = load ptr, ptr %163, align 8, !tbaa !21
  %172 = getelementptr inbounds double, ptr %171, i64 %.7371
  %173 = load double, ptr %172, align 8, !tbaa !22
  %174 = load ptr, ptr %164, align 8, !tbaa !21
  %175 = getelementptr inbounds double, ptr %174, i64 %.7371
  %176 = load double, ptr %175, align 8, !tbaa !22
  %177 = fsub double %173, %176
  %178 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %177, ptr noundef %1)
  %179 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.2373, double noundef %178, ptr noundef %1)
  %180 = load ptr, ptr %163, align 8, !tbaa !21
  %181 = getelementptr inbounds double, ptr %180, i64 %.7371
  %182 = load double, ptr %181, align 8, !tbaa !22
  %183 = tail call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %182, ptr noundef %1)
  %184 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %.2291372, double noundef %183, ptr noundef %1)
  br label %185

185:                                              ; preds = %165, %170
  %.3292 = phi double [ %184, %170 ], [ %.2291372, %165 ]
  %.3 = phi double [ %179, %170 ], [ %.2373, %165 ]
  %186 = add nuw nsw i64 %.7371, 1
  %exitcond417.not = icmp eq i64 %186, %12
  br i1 %exitcond417.not, label %._crit_edge376, label %165, !llvm.loop !44

._crit_edge376:                                   ; preds = %185, %._crit_edge369.thread, %._crit_edge369
  %.2291.lcssa = phi double [ 0.000000e+00, %._crit_edge369 ], [ 0.000000e+00, %._crit_edge369.thread ], [ %.3292, %185 ]
  %.2.lcssa = phi double [ 0.000000e+00, %._crit_edge369 ], [ 0.000000e+00, %._crit_edge369.thread ], [ %.3, %185 ]
  %187 = tail call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %.2291.lcssa, double noundef 0.000000e+00)
  %.4293 = select i1 %187, double 1.000000e+00, double %.2291.lcssa
  %188 = load double, ptr %131, align 8, !tbaa !41
  %189 = fmul double %188, %.4293
  %190 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %.2.lcssa, double noundef %189)
  br i1 %190, label %191, label %192

191:                                              ; preds = %._crit_edge376
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %3, ptr noundef %1)
  br label %193

192:                                              ; preds = %._crit_edge376
  store i64 0, ptr %3, align 8, !tbaa !20
  br label %193

193:                                              ; preds = %192, %191
  br i1 %.not.not326365, label %.lr.ph382, label %.loopexit349

.lr.ph382:                                        ; preds = %193
  %194 = getelementptr inbounds i8, ptr %0, i64 1064
  %195 = getelementptr inbounds i8, ptr %0, i64 1128
  %xtraiter424 = and i64 %12, 3
  %196 = icmp ult i64 %12, 4
  br i1 %196, label %.loopexit349.loopexit.unr-lcssa, label %.lr.ph382.new

.lr.ph382.new:                                    ; preds = %.lr.ph382
  %unroll_iter427 = and i64 %12, 9223372036854775804
  br label %197

197:                                              ; preds = %197, %.lr.ph382.new
  %.8380 = phi i64 [ 0, %.lr.ph382.new ], [ %221, %197 ]
  %niter428 = phi i64 [ 0, %.lr.ph382.new ], [ %niter428.next.3, %197 ]
  %198 = load ptr, ptr %194, align 8, !tbaa !21
  %199 = getelementptr inbounds double, ptr %198, i64 %.8380
  %200 = load double, ptr %199, align 8, !tbaa !22
  %201 = load ptr, ptr %195, align 8, !tbaa !21
  %202 = getelementptr inbounds double, ptr %201, i64 %.8380
  store double %200, ptr %202, align 8, !tbaa !22
  %203 = or disjoint i64 %.8380, 1
  %204 = load ptr, ptr %194, align 8, !tbaa !21
  %205 = getelementptr inbounds double, ptr %204, i64 %203
  %206 = load double, ptr %205, align 8, !tbaa !22
  %207 = load ptr, ptr %195, align 8, !tbaa !21
  %208 = getelementptr inbounds double, ptr %207, i64 %203
  store double %206, ptr %208, align 8, !tbaa !22
  %209 = or disjoint i64 %.8380, 2
  %210 = load ptr, ptr %194, align 8, !tbaa !21
  %211 = getelementptr inbounds double, ptr %210, i64 %209
  %212 = load double, ptr %211, align 8, !tbaa !22
  %213 = load ptr, ptr %195, align 8, !tbaa !21
  %214 = getelementptr inbounds double, ptr %213, i64 %209
  store double %212, ptr %214, align 8, !tbaa !22
  %215 = or disjoint i64 %.8380, 3
  %216 = load ptr, ptr %194, align 8, !tbaa !21
  %217 = getelementptr inbounds double, ptr %216, i64 %215
  %218 = load double, ptr %217, align 8, !tbaa !22
  %219 = load ptr, ptr %195, align 8, !tbaa !21
  %220 = getelementptr inbounds double, ptr %219, i64 %215
  store double %218, ptr %220, align 8, !tbaa !22
  %221 = add nuw nsw i64 %.8380, 4
  %niter428.next.3 = add i64 %niter428, 4
  %niter428.ncmp.3 = icmp eq i64 %niter428.next.3, %unroll_iter427
  br i1 %niter428.ncmp.3, label %.loopexit349.loopexit.unr-lcssa, label %197, !llvm.loop !45

.loopexit349.loopexit.unr-lcssa:                  ; preds = %197, %.lr.ph382
  %.8380.unr = phi i64 [ 0, %.lr.ph382 ], [ %221, %197 ]
  %lcmp.mod426.not = icmp eq i64 %xtraiter424, 0
  br i1 %lcmp.mod426.not, label %.loopexit349, label %.epil.preheader423

.epil.preheader423:                               ; preds = %.loopexit349.loopexit.unr-lcssa, %.epil.preheader423
  %.8380.epil = phi i64 [ %227, %.epil.preheader423 ], [ %.8380.unr, %.loopexit349.loopexit.unr-lcssa ]
  %epil.iter425 = phi i64 [ %epil.iter425.next, %.epil.preheader423 ], [ 0, %.loopexit349.loopexit.unr-lcssa ]
  %222 = load ptr, ptr %194, align 8, !tbaa !21
  %223 = getelementptr inbounds double, ptr %222, i64 %.8380.epil
  %224 = load double, ptr %223, align 8, !tbaa !22
  %225 = load ptr, ptr %195, align 8, !tbaa !21
  %226 = getelementptr inbounds double, ptr %225, i64 %.8380.epil
  store double %224, ptr %226, align 8, !tbaa !22
  %227 = add nuw nsw i64 %.8380.epil, 1
  %epil.iter425.next = add i64 %epil.iter425, 1
  %epil.iter425.cmp.not = icmp eq i64 %epil.iter425.next, %xtraiter424
  br i1 %epil.iter425.cmp.not, label %.loopexit349, label %.epil.preheader423, !llvm.loop !46

.loopexit349:                                     ; preds = %.loopexit349.loopexit.unr-lcssa, %.epil.preheader423, %193, %130
  %.9 = phi i64 [ %22, %130 ], [ 0, %193 ], [ %12, %.epil.preheader423 ], [ %12, %.loopexit349.loopexit.unr-lcssa ]
  %.5 = phi double [ %27, %130 ], [ %.4293, %193 ], [ %.4293, %.epil.preheader423 ], [ %.4293, %.loopexit349.loopexit.unr-lcssa ]
  %.4 = phi double [ %29, %130 ], [ %.2.lcssa, %193 ], [ %.2.lcssa, %.epil.preheader423 ], [ %.2.lcssa, %.loopexit349.loopexit.unr-lcssa ]
  %228 = getelementptr inbounds i8, ptr %0, i64 2016
  %229 = getelementptr inbounds i8, ptr %0, i64 400
  call void @_ZN11alglib_impl16rmatrixtransposeEllPNS_9ae_matrixEllS1_llPNS_8ae_stateE(i64 noundef %10, i64 noundef %12, ptr noundef nonnull %228, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %229, i64 noundef 0, i64 noundef 0, ptr noundef %1)
  %230 = getelementptr inbounds i8, ptr %0, i64 96
  call void @_ZN11alglib_impl9rmatrixlqEPNS_9ae_matrixEllPNS_9ae_vectorEPNS_8ae_stateE(ptr noundef nonnull %229, i64 noundef %12, i64 noundef %10, ptr noundef nonnull %230, ptr noundef %1)
  %231 = getelementptr inbounds i8, ptr %0, i64 320
  call void @_ZN11alglib_impl16rmatrixlqunpackqEPNS_9ae_matrixEllPNS_9ae_vectorElS1_PNS_8ae_stateE(ptr noundef nonnull %229, i64 noundef %12, i64 noundef %10, ptr noundef nonnull %230, i64 noundef %12, ptr noundef nonnull %231, ptr noundef %1)
  %232 = getelementptr inbounds i8, ptr %0, i64 2112
  %233 = load i64, ptr %232, align 8, !tbaa !26
  %234 = add nsw i64 %233, 1
  store i64 %234, ptr %232, align 8, !tbaa !26
  br label %93

235:                                              ; preds = %93, %99
  %236 = getelementptr inbounds i8, ptr %0, i64 48
  %237 = load i64, ptr %236, align 8, !tbaa !42
  %238 = icmp eq i64 %237, 0
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %238, ptr noundef nonnull @.str.362, ptr noundef %1)
  %239 = getelementptr inbounds i8, ptr %0, i64 40
  %240 = load i64, ptr %239, align 8, !tbaa !47
  %241 = icmp eq i64 %240, 1
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %241, ptr noundef nonnull @.str.332, ptr noundef %1)
  %242 = getelementptr inbounds i8, ptr %0, i64 240
  %243 = getelementptr inbounds i8, ptr %0, i64 2016
  %244 = getelementptr inbounds i8, ptr %0, i64 480
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %.1316, i64 noundef %.1316, i64 noundef %.1318, double noundef 1.000000e+00, ptr noundef nonnull %242, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %243, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %244, i64 noundef 0, i64 noundef 0, ptr noundef %1)
  %245 = getelementptr inbounds i8, ptr %0, i64 944
  %246 = getelementptr inbounds i8, ptr %0, i64 640
  %247 = call noundef zeroext i1 @_ZN11alglib_impl10smatrixevdEPNS_9ae_matrixEllbPNS_9ae_vectorES1_PNS_8ae_stateE(ptr noundef nonnull %244, i64 noundef %.1316, i64 noundef 1, i1 noundef zeroext true, ptr noundef nonnull %245, ptr noundef nonnull %246, ptr noundef %1)
  br i1 %247, label %249, label %248

248:                                              ; preds = %235
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef nonnull @.str.363, ptr noundef %1)
  br label %249

249:                                              ; preds = %248, %235
  %.not.not329384 = icmp sgt i64 %.1316, 0
  br i1 %.not.not329384, label %.lr.ph387, label %._crit_edge388.thread

.lr.ph387:                                        ; preds = %249
  %250 = getelementptr inbounds i8, ptr %0, i64 1000
  %251 = getelementptr inbounds i8, ptr %0, i64 1192
  br label %252

252:                                              ; preds = %.lr.ph387, %252
  %.10385 = phi i64 [ 0, %.lr.ph387 ], [ %259, %252 ]
  %253 = load ptr, ptr %250, align 8, !tbaa !21
  %254 = getelementptr inbounds double, ptr %253, i64 %.10385
  %255 = load double, ptr %254, align 8, !tbaa !22
  %256 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %255, ptr noundef %1)
  %257 = load ptr, ptr %251, align 8, !tbaa !21
  %258 = getelementptr inbounds double, ptr %257, i64 %.10385
  store double %256, ptr %258, align 8, !tbaa !22
  %259 = add nuw nsw i64 %.10385, 1
  %exitcond419.not = icmp eq i64 %259, %.1316
  br i1 %exitcond419.not, label %._crit_edge388, label %252, !llvm.loop !48

._crit_edge388:                                   ; preds = %252
  %260 = getelementptr inbounds i8, ptr %0, i64 1136
  %261 = getelementptr inbounds i8, ptr %0, i64 1200
  call void @_ZN11alglib_impl11rankxuntiedEPNS_9ae_vectorElPNS_9apbuffersEPNS_8ae_stateE(ptr noundef nonnull %260, i64 noundef %.1316, ptr noundef nonnull %261, ptr noundef %1)
  %262 = sub nsw i64 %.1316, %.1314
  %.not.not332402 = icmp sgt i64 %.1314, 0
  br i1 %.not.not332402, label %.preheader.lr.ph, label %._crit_edge405

._crit_edge388.thread:                            ; preds = %249
  %263 = getelementptr inbounds i8, ptr %0, i64 1136
  %264 = getelementptr inbounds i8, ptr %0, i64 1200
  call void @_ZN11alglib_impl11rankxuntiedEPNS_9ae_vectorElPNS_9apbuffersEPNS_8ae_stateE(ptr noundef nonnull %263, i64 noundef %.1316, ptr noundef nonnull %264, ptr noundef %1)
  br label %._crit_edge405

.preheader.lr.ph:                                 ; preds = %._crit_edge388
  %265 = getelementptr inbounds i8, ptr %0, i64 1192
  %266 = getelementptr inbounds i8, ptr %0, i64 1000
  %267 = getelementptr inbounds i8, ptr %0, i64 936
  %268 = getelementptr inbounds i8, ptr %0, i64 712
  %269 = getelementptr inbounds i8, ptr %0, i64 632
  br i1 %.not.not329384, label %.preheader.us.preheader, label %._crit_edge405

.preheader.us.preheader:                          ; preds = %.preheader.lr.ph
  %xtraiter430 = and i64 %.1316, 1
  %270 = icmp eq i64 %.1316, 1
  %unroll_iter433 = and i64 %.1316, 9223372036854775806
  %lcmp.mod432.not = icmp eq i64 %xtraiter430, 0
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us.preheader, %..loopexit_crit_edge.split.us.us
  %.6308404.us.in = phi i64 [ %.6308404.us, %..loopexit_crit_edge.split.us.us ], [ %.1316, %.preheader.us.preheader ]
  %.1310403.us = phi i64 [ %.3312.us.us, %..loopexit_crit_edge.split.us.us ], [ 0, %.preheader.us.preheader ]
  %.6308404.us = add nsw i64 %.6308404.us.in, -1
  %271 = sitofp i64 %.6308404.us to double
  br label %272

272:                                              ; preds = %283, %.preheader.us
  %.1301396.us.us = phi i64 [ 0, %.preheader.us ], [ %284, %283 ]
  %.2311395.us.us = phi i64 [ %.1310403.us, %.preheader.us ], [ %.3312.us.us, %283 ]
  %273 = load ptr, ptr %265, align 8, !tbaa !21
  %274 = getelementptr inbounds double, ptr %273, i64 %.1301396.us.us
  %275 = load double, ptr %274, align 8, !tbaa !22
  %276 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %275, double noundef %271)
  br i1 %276, label %.lr.ph392.us.us, label %283

.lr.ph392.us.us:                                  ; preds = %272
  %277 = icmp slt i64 %.2311395.us.us, %.1314
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %277, ptr noundef nonnull @.str.364, ptr noundef %1)
  %278 = load ptr, ptr %266, align 8, !tbaa !21
  %279 = getelementptr inbounds double, ptr %278, i64 %.1301396.us.us
  %280 = load double, ptr %279, align 8, !tbaa !22
  %281 = load ptr, ptr %267, align 8, !tbaa !21
  %282 = getelementptr inbounds double, ptr %281, i64 %.2311395.us.us
  store double %280, ptr %282, align 8, !tbaa !22
  br i1 %270, label %._crit_edge393.us.us.unr-lcssa, label %.lr.ph392.us.us.new

283:                                              ; preds = %._crit_edge393.us.us, %272
  %.3312.us.us = phi i64 [ %314, %._crit_edge393.us.us ], [ %.2311395.us.us, %272 ]
  %284 = add nuw nsw i64 %.1301396.us.us, 1
  %exitcond421.not = icmp eq i64 %284, %.1316
  br i1 %exitcond421.not, label %..loopexit_crit_edge.split.us.us, label %272, !llvm.loop !49

.lr.ph392.us.us.new:                              ; preds = %.lr.ph392.us.us, %.lr.ph392.us.us.new
  %.11390.us.us = phi i64 [ %304, %.lr.ph392.us.us.new ], [ 0, %.lr.ph392.us.us ]
  %niter434 = phi i64 [ %niter434.next.1, %.lr.ph392.us.us.new ], [ 0, %.lr.ph392.us.us ]
  %285 = load ptr, ptr %268, align 8, !tbaa !21
  %286 = getelementptr inbounds ptr, ptr %285, i64 %.11390.us.us
  %287 = load ptr, ptr %286, align 8, !tbaa !35
  %288 = getelementptr inbounds double, ptr %287, i64 %.1301396.us.us
  %289 = load double, ptr %288, align 8, !tbaa !22
  %290 = load ptr, ptr %269, align 8, !tbaa !21
  %291 = getelementptr inbounds ptr, ptr %290, i64 %.11390.us.us
  %292 = load ptr, ptr %291, align 8, !tbaa !35
  %293 = getelementptr inbounds double, ptr %292, i64 %.2311395.us.us
  store double %289, ptr %293, align 8, !tbaa !22
  %294 = or disjoint i64 %.11390.us.us, 1
  %295 = load ptr, ptr %268, align 8, !tbaa !21
  %296 = getelementptr inbounds ptr, ptr %295, i64 %294
  %297 = load ptr, ptr %296, align 8, !tbaa !35
  %298 = getelementptr inbounds double, ptr %297, i64 %.1301396.us.us
  %299 = load double, ptr %298, align 8, !tbaa !22
  %300 = load ptr, ptr %269, align 8, !tbaa !21
  %301 = getelementptr inbounds ptr, ptr %300, i64 %294
  %302 = load ptr, ptr %301, align 8, !tbaa !35
  %303 = getelementptr inbounds double, ptr %302, i64 %.2311395.us.us
  store double %299, ptr %303, align 8, !tbaa !22
  %304 = add nuw nsw i64 %.11390.us.us, 2
  %niter434.next.1 = add i64 %niter434, 2
  %niter434.ncmp.1 = icmp eq i64 %niter434.next.1, %unroll_iter433
  br i1 %niter434.ncmp.1, label %._crit_edge393.us.us.unr-lcssa, label %.lr.ph392.us.us.new, !llvm.loop !50

._crit_edge393.us.us.unr-lcssa:                   ; preds = %.lr.ph392.us.us.new, %.lr.ph392.us.us
  %.11390.us.us.unr = phi i64 [ 0, %.lr.ph392.us.us ], [ %304, %.lr.ph392.us.us.new ]
  br i1 %lcmp.mod432.not, label %._crit_edge393.us.us, label %._crit_edge393.us.us.epilog-lcssa

._crit_edge393.us.us.epilog-lcssa:                ; preds = %._crit_edge393.us.us.unr-lcssa
  %305 = load ptr, ptr %268, align 8, !tbaa !21
  %306 = getelementptr inbounds ptr, ptr %305, i64 %.11390.us.us.unr
  %307 = load ptr, ptr %306, align 8, !tbaa !35
  %308 = getelementptr inbounds double, ptr %307, i64 %.1301396.us.us
  %309 = load double, ptr %308, align 8, !tbaa !22
  %310 = load ptr, ptr %269, align 8, !tbaa !21
  %311 = getelementptr inbounds ptr, ptr %310, i64 %.11390.us.us.unr
  %312 = load ptr, ptr %311, align 8, !tbaa !35
  %313 = getelementptr inbounds double, ptr %312, i64 %.2311395.us.us
  store double %309, ptr %313, align 8, !tbaa !22
  br label %._crit_edge393.us.us

._crit_edge393.us.us:                             ; preds = %._crit_edge393.us.us.unr-lcssa, %._crit_edge393.us.us.epilog-lcssa
  %314 = add nsw i64 %.2311395.us.us, 1
  br label %283

..loopexit_crit_edge.split.us.us:                 ; preds = %283
  %.not.not332.us = icmp sgt i64 %.6308404.us, %262
  br i1 %.not.not332.us, label %.preheader.us, label %._crit_edge405, !llvm.loop !51

._crit_edge405:                                   ; preds = %..loopexit_crit_edge.split.us.us, %._crit_edge388.thread, %.preheader.lr.ph, %._crit_edge388
  %.1310.lcssa = phi i64 [ 0, %._crit_edge388 ], [ 0, %.preheader.lr.ph ], [ 0, %._crit_edge388.thread ], [ %.3312.us.us, %..loopexit_crit_edge.split.us.us ]
  %315 = icmp eq i64 %.1310.lcssa, %.1314
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %315, ptr noundef nonnull @.str.364, ptr noundef %1)
  %316 = getelementptr inbounds i8, ptr %0, i64 560
  %317 = getelementptr inbounds i8, ptr %0, i64 720
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %.1318, i64 noundef %.1314, i64 noundef %.1316, double noundef 1.000000e+00, ptr noundef nonnull %242, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %316, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %317, i64 noundef 0, i64 noundef 0, ptr noundef %1)
  br label %318

318:                                              ; preds = %103, %._crit_edge405
  %.0319 = phi i1 [ true, %103 ], [ false, %._crit_edge405 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #4
  ret i1 %.0319
}

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #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 2120}
!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, !17, i64 1200, !16, i64 1936, !16, i64 2016, !7, i64 2096, !7, i64 2104, !7, i64 2112, !18, i64 2120}
!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 = !{!7, !7, i64 0}
!21 = !{!8, !8, 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 2112}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.unroll.disable"}
!31 = !{!6, !11, i64 56}
!32 = !{i8 0, i8 2}
!33 = !{}
!34 = !{!6, !11, i64 57}
!35 = !{!15, !15, i64 0}
!36 = distinct !{!36, !28}
!37 = distinct !{!37, !28}
!38 = !{!6, !7, i64 24}
!39 = !{!6, !7, i64 2096}
!40 = !{!6, !7, i64 2104}
!41 = !{!6, !10, i64 32}
!42 = !{!6, !7, i64 48}
!43 = distinct !{!43, !28}
!44 = distinct !{!44, !28}
!45 = distinct !{!45, !28}
!46 = distinct !{!46, !30}
!47 = !{!6, !7, i64 40}
!48 = distinct !{!48, !28}
!49 = distinct !{!49, !28}
!50 = distinct !{!50, !28}
!51 = distinct !{!51, !28}


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