; LLVM IR from venumb/ZSPACE :: cpp/depends/alglib/cpp/tests/test_c.ll (Z10testmatgenbPN11alglib_impl8ae_stateE)

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

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

@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.190 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.191 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.198 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.199 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.200 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.201 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.202 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.203 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.204 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.205 = external hidden unnamed_addr constant [42 x i8], align 1

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

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

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

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #1

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

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

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

declare noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef) #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z10testmatgenbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) #5 {
  %3 = alloca i8, align 1
  %4 = alloca ptr, align 8
  %5 = alloca %"struct.alglib_impl::ae_frame", align 8
  %6 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %7 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %8 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %9 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %10 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %11 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %12 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %13 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %14 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %15 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %16 = alloca %"struct.alglib_impl::ae_vector", align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i8, align 1
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca %"struct.alglib_impl::ae_complex", align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca i8, align 1
  %31 = alloca i8, align 1
  %32 = alloca i8, align 1
  %33 = alloca i8, align 1
  %34 = alloca i8, align 1
  %35 = alloca i8, align 1
  %36 = alloca i8, align 1
  %37 = alloca i8, align 1
  %38 = alloca %"struct.alglib_impl::ae_complex", align 8
  %39 = alloca %"struct.alglib_impl::ae_complex", align 8
  %40 = alloca %"struct.alglib_impl::ae_complex", align 8
  %41 = alloca %"struct.alglib_impl::ae_complex", align 8
  %42 = alloca %"struct.alglib_impl::ae_complex", align 8
  %43 = alloca %"struct.alglib_impl::ae_complex", align 8
  %44 = alloca %"struct.alglib_impl::ae_complex", align 8
  %45 = alloca %"struct.alglib_impl::ae_complex", align 8
  %46 = alloca %"struct.alglib_impl::ae_complex", align 8
  %47 = alloca %"struct.alglib_impl::ae_complex", align 8
  %48 = alloca %"struct.alglib_impl::ae_complex", align 8
  %49 = alloca %"struct.alglib_impl::ae_complex", align 8
  %50 = alloca %"struct.alglib_impl::ae_complex", align 8
  %51 = alloca %"struct.alglib_impl::ae_complex", align 8
  %52 = alloca %"struct.alglib_impl::ae_complex", align 8
  %53 = alloca %"struct.alglib_impl::ae_complex", align 8
  %54 = alloca %"struct.alglib_impl::ae_complex", align 8
  %55 = alloca %"struct.alglib_impl::ae_complex", align 8
  %56 = alloca %"struct.alglib_impl::ae_complex", align 8
  %57 = alloca %"struct.alglib_impl::ae_complex", align 8
  %58 = alloca %"struct.alglib_impl::ae_complex", align 8
  %59 = alloca %"struct.alglib_impl::ae_complex", align 8
  %60 = alloca %"struct.alglib_impl::ae_complex", align 8
  %61 = alloca %"struct.alglib_impl::ae_complex", align 8
  %62 = alloca %"struct.alglib_impl::ae_complex", align 8
  %63 = alloca %"struct.alglib_impl::ae_complex", align 8
  %64 = alloca %"struct.alglib_impl::ae_complex", align 8
  %65 = alloca %"struct.alglib_impl::ae_complex", align 8
  %66 = alloca %"struct.alglib_impl::ae_complex", align 8
  %67 = alloca %"struct.alglib_impl::ae_complex", align 8
  %68 = alloca %"struct.alglib_impl::ae_complex", align 8
  %69 = alloca %"struct.alglib_impl::ae_complex", align 8
  %70 = alloca %"struct.alglib_impl::ae_complex", align 8
  %71 = alloca %"struct.alglib_impl::ae_complex", align 8
  %72 = alloca %"struct.alglib_impl::ae_complex", align 8
  %73 = alloca %"struct.alglib_impl::ae_complex", align 8
  %74 = alloca %"struct.alglib_impl::ae_complex", align 8
  %75 = alloca %"struct.alglib_impl::ae_complex", align 8
  %76 = alloca %"struct.alglib_impl::ae_complex", align 8
  %77 = alloca %"struct.alglib_impl::ae_complex", align 8
  %78 = alloca %"struct.alglib_impl::ae_complex", align 8
  %79 = alloca %"struct.alglib_impl::ae_complex", align 8
  %80 = alloca %"struct.alglib_impl::ae_complex", align 8
  %81 = alloca %"struct.alglib_impl::ae_complex", align 8
  %82 = alloca %"struct.alglib_impl::ae_complex", align 8
  %83 = alloca %"struct.alglib_impl::ae_complex", align 8
  %84 = alloca %"struct.alglib_impl::ae_complex", align 8
  %85 = alloca %"struct.alglib_impl::ae_complex", align 8
  %86 = alloca %"struct.alglib_impl::ae_complex", align 8
  %87 = alloca %"struct.alglib_impl::ae_complex", align 8
  %88 = alloca %"struct.alglib_impl::ae_complex", align 8
  %89 = alloca %"struct.alglib_impl::ae_complex", align 8
  %90 = alloca %"struct.alglib_impl::ae_complex", align 8
  %91 = alloca %"struct.alglib_impl::ae_complex", align 8
  %92 = alloca %"struct.alglib_impl::ae_complex", align 8
  %93 = alloca %"struct.alglib_impl::ae_complex", align 8
  %94 = alloca %"struct.alglib_impl::ae_complex", align 8
  %95 = alloca %"struct.alglib_impl::ae_complex", align 8
  %96 = zext i1 %0 to i8
  store i8 %96, ptr %3, align 1, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %6) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %7) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %8) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %10) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %12) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %14) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr %15) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #6
  %97 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %97, ptr noundef %5)
  call void @llvm.memset.p0.i64(ptr align 8 %6, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %7, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %8, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %9, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %10, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %11, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %12, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %13, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %15, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %16, i8 0, i64 64, i1 false)
  %98 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %6, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %98, i1 noundef zeroext true)
  %99 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %7, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %99, i1 noundef zeroext true)
  %100 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %8, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %100, i1 noundef zeroext true)
  %101 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %9, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %101, i1 noundef zeroext true)
  %102 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %10, i64 noundef 0, i64 noundef 0, i64 noundef 4, ptr noundef %102, i1 noundef zeroext true)
  %103 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %11, i64 noundef 0, i64 noundef 0, i64 noundef 4, ptr noundef %103, i1 noundef zeroext true)
  %104 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %12, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %104, i1 noundef zeroext true)
  %105 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %13, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %105, i1 noundef zeroext true)
  %106 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %14, i64 noundef 0, i64 noundef 0, i64 noundef 4, ptr noundef %106, i1 noundef zeroext true)
  %107 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %15, i64 noundef 0, i64 noundef 0, i64 noundef 4, ptr noundef %107, i1 noundef zeroext true)
  %108 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %16, i64 noundef 0, i64 noundef 3, ptr noundef %108, i1 noundef zeroext true)
  store i8 0, ptr %34, align 1, !tbaa !5
  store i8 0, ptr %35, align 1, !tbaa !5
  store i8 0, ptr %30, align 1, !tbaa !5
  store i8 0, ptr %31, align 1, !tbaa !5
  store i8 0, ptr %32, align 1, !tbaa !5
  store i8 0, ptr %33, align 1, !tbaa !5
  store i8 0, ptr %36, align 1, !tbaa !5
  store i8 0, ptr %23, align 1, !tbaa !5
  store i64 20, ptr %18, align 8, !tbaa !11
  store i64 15, ptr %22, align 8, !tbaa !11
  store double 5.000000e-13, ptr %25, align 8, !tbaa !13
  store i64 1, ptr %17, align 8, !tbaa !11
  br label %109

109:                                              ; preds = %1863, %2
  %110 = load i64, ptr %17, align 8, !tbaa !11
  %111 = load i64, ptr %18, align 8, !tbaa !11
  %112 = icmp sle i64 %110, %111
  br i1 %112, label %113, label %1866

113:                                              ; preds = %109
  store i64 1, ptr %21, align 8, !tbaa !11
  br label %114

114:                                              ; preds = %1859, %113
  %115 = load i64, ptr %21, align 8, !tbaa !11
  %116 = load i64, ptr %22, align 8, !tbaa !11
  %117 = icmp sle i64 %115, %116
  br i1 %117, label %118, label %1862

118:                                              ; preds = %114
  %119 = load i64, ptr %17, align 8, !tbaa !11
  %120 = sub nsw i64 %119, 1
  %121 = add nsw i64 %120, 1
  %122 = load i64, ptr %17, align 8, !tbaa !11
  %123 = mul nsw i64 2, %122
  %124 = sub nsw i64 %123, 1
  %125 = add nsw i64 %124, 1
  %126 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %12, i64 noundef %121, i64 noundef %125, ptr noundef %126)
  %127 = load i64, ptr %17, align 8, !tbaa !11
  %128 = mul nsw i64 2, %127
  %129 = sub nsw i64 %128, 1
  %130 = add nsw i64 %129, 1
  %131 = load i64, ptr %17, align 8, !tbaa !11
  %132 = sub nsw i64 %131, 1
  %133 = add nsw i64 %132, 1
  %134 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %13, i64 noundef %130, i64 noundef %133, ptr noundef %134)
  %135 = load i64, ptr %17, align 8, !tbaa !11
  %136 = sub nsw i64 %135, 1
  %137 = add nsw i64 %136, 1
  %138 = load i64, ptr %17, align 8, !tbaa !11
  %139 = mul nsw i64 2, %138
  %140 = sub nsw i64 %139, 1
  %141 = add nsw i64 %140, 1
  %142 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %14, i64 noundef %137, i64 noundef %141, ptr noundef %142)
  %143 = load i64, ptr %17, align 8, !tbaa !11
  %144 = mul nsw i64 2, %143
  %145 = sub nsw i64 %144, 1
  %146 = add nsw i64 %145, 1
  %147 = load i64, ptr %17, align 8, !tbaa !11
  %148 = sub nsw i64 %147, 1
  %149 = add nsw i64 %148, 1
  %150 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %15, i64 noundef %146, i64 noundef %149, ptr noundef %150)
  %151 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %6, ptr noundef %151)
  %152 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %7, ptr noundef %152)
  %153 = load i64, ptr %17, align 8, !tbaa !11
  %154 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20rmatrixrndorthogonalElPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %153, ptr noundef %6, ptr noundef %154)
  %155 = load i64, ptr %17, align 8, !tbaa !11
  %156 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20rmatrixrndorthogonalElPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %155, ptr noundef %7, ptr noundef %156)
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %157

157:                                              ; preds = %290, %118
  %158 = load i64, ptr %19, align 8, !tbaa !11
  %159 = load i64, ptr %17, align 8, !tbaa !11
  %160 = sub nsw i64 %159, 1
  %161 = icmp sle i64 %158, %160
  br i1 %161, label %162, label %293

162:                                              ; preds = %157
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %163

163:                                              ; preds = %286, %162
  %164 = load i64, ptr %20, align 8, !tbaa !11
  %165 = load i64, ptr %17, align 8, !tbaa !11
  %166 = sub nsw i64 %165, 1
  %167 = icmp sle i64 %164, %166
  br i1 %167, label %168, label %289

168:                                              ; preds = %163
  %169 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %170 = load ptr, ptr %169, align 8, !tbaa !15
  %171 = load i64, ptr %19, align 8, !tbaa !11
  %172 = getelementptr inbounds ptr, ptr %170, i64 %171
  %173 = load ptr, ptr %172, align 8, !tbaa !9
  %174 = getelementptr inbounds double, ptr %173, i64 0
  %175 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %176 = load ptr, ptr %175, align 8, !tbaa !15
  %177 = load i64, ptr %20, align 8, !tbaa !11
  %178 = getelementptr inbounds ptr, ptr %176, i64 %177
  %179 = load ptr, ptr %178, align 8, !tbaa !9
  %180 = getelementptr inbounds double, ptr %179, i64 0
  %181 = load i64, ptr %17, align 8, !tbaa !11
  %182 = sub nsw i64 %181, 1
  %183 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %182)
  %184 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %174, i64 noundef 1, ptr noundef %180, i64 noundef 1, i64 noundef %183)
  store double %184, ptr %26, align 8, !tbaa !13
  %185 = load i64, ptr %19, align 8, !tbaa !11
  %186 = load i64, ptr %20, align 8, !tbaa !11
  %187 = icmp eq i64 %185, %186
  br i1 %187, label %188, label %201

188:                                              ; preds = %168
  %189 = load i8, ptr %34, align 1, !tbaa !5, !range !16, !noundef !17
  %190 = trunc i8 %189 to i1
  br i1 %190, label %198, label %191

191:                                              ; preds = %188
  %192 = load double, ptr %26, align 8, !tbaa !13
  %193 = fsub double %192, 1.000000e+00
  %194 = load ptr, ptr %4, align 8, !tbaa !9
  %195 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %193, ptr noundef %194)
  %196 = load double, ptr %25, align 8, !tbaa !13
  %197 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %195, double noundef %196)
  br label %198

198:                                              ; preds = %191, %188
  %199 = phi i1 [ true, %188 ], [ %197, %191 ]
  %200 = zext i1 %199 to i8
  store i8 %200, ptr %34, align 1, !tbaa !5
  br label %213

201:                                              ; preds = %168
  %202 = load i8, ptr %34, align 1, !tbaa !5, !range !16, !noundef !17
  %203 = trunc i8 %202 to i1
  br i1 %203, label %210, label %204

204:                                              ; preds = %201
  %205 = load double, ptr %26, align 8, !tbaa !13
  %206 = load ptr, ptr %4, align 8, !tbaa !9
  %207 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %205, ptr noundef %206)
  %208 = load double, ptr %25, align 8, !tbaa !13
  %209 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %207, double noundef %208)
  br label %210

210:                                              ; preds = %204, %201
  %211 = phi i1 [ true, %201 ], [ %209, %204 ]
  %212 = zext i1 %211 to i8
  store i8 %212, ptr %34, align 1, !tbaa !5
  br label %213

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

233:                                              ; preds = %213
  %234 = load i8, ptr %34, align 1, !tbaa !5, !range !16, !noundef !17
  %235 = trunc i8 %234 to i1
  br i1 %235, label %243, label %236

236:                                              ; preds = %233
  %237 = load double, ptr %26, align 8, !tbaa !13
  %238 = fsub double %237, 1.000000e+00
  %239 = load ptr, ptr %4, align 8, !tbaa !9
  %240 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %238, ptr noundef %239)
  %241 = load double, ptr %25, align 8, !tbaa !13
  %242 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %240, double noundef %241)
  br label %243

243:                                              ; preds = %236, %233
  %244 = phi i1 [ true, %233 ], [ %242, %236 ]
  %245 = zext i1 %244 to i8
  store i8 %245, ptr %34, align 1, !tbaa !5
  br label %258

246:                                              ; preds = %213
  %247 = load i8, ptr %34, align 1, !tbaa !5, !range !16, !noundef !17
  %248 = trunc i8 %247 to i1
  br i1 %248, label %255, label %249

249:                                              ; preds = %246
  %250 = load double, ptr %26, align 8, !tbaa !13
  %251 = load ptr, ptr %4, align 8, !tbaa !9
  %252 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %250, ptr noundef %251)
  %253 = load double, ptr %25, align 8, !tbaa !13
  %254 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %252, double noundef %253)
  br label %255

255:                                              ; preds = %249, %246
  %256 = phi i1 [ true, %246 ], [ %254, %249 ]
  %257 = zext i1 %256 to i8
  store i8 %257, ptr %34, align 1, !tbaa !5
  br label %258

258:                                              ; preds = %255, %243
  %259 = load i64, ptr %17, align 8, !tbaa !11
  %260 = icmp sge i64 %259, 2
  br i1 %260, label %261, label %285

261:                                              ; preds = %258
  %262 = load i8, ptr %34, align 1, !tbaa !5, !range !16, !noundef !17
  %263 = trunc i8 %262 to i1
  br i1 %263, label %282, label %264

264:                                              ; preds = %261
  %265 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %266 = load ptr, ptr %265, align 8, !tbaa !15
  %267 = load i64, ptr %19, align 8, !tbaa !11
  %268 = getelementptr inbounds ptr, ptr %266, i64 %267
  %269 = load ptr, ptr %268, align 8, !tbaa !9
  %270 = load i64, ptr %20, align 8, !tbaa !11
  %271 = getelementptr inbounds double, ptr %269, i64 %270
  %272 = load double, ptr %271, align 8, !tbaa !13
  %273 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %274 = load ptr, ptr %273, align 8, !tbaa !15
  %275 = load i64, ptr %19, align 8, !tbaa !11
  %276 = getelementptr inbounds ptr, ptr %274, i64 %275
  %277 = load ptr, ptr %276, align 8, !tbaa !9
  %278 = load i64, ptr %20, align 8, !tbaa !11
  %279 = getelementptr inbounds double, ptr %277, i64 %278
  %280 = load double, ptr %279, align 8, !tbaa !13
  %281 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %272, double noundef %280)
  br label %282

282:                                              ; preds = %264, %261
  %283 = phi i1 [ true, %261 ], [ %281, %264 ]
  %284 = zext i1 %283 to i8
  store i8 %284, ptr %34, align 1, !tbaa !5
  br label %285

285:                                              ; preds = %282, %258
  br label %286

286:                                              ; preds = %285
  %287 = load i64, ptr %20, align 8, !tbaa !11
  %288 = add nsw i64 %287, 1
  store i64 %288, ptr %20, align 8, !tbaa !11
  br label %163, !llvm.loop !18

289:                                              ; preds = %163
  br label %290

290:                                              ; preds = %289
  %291 = load i64, ptr %19, align 8, !tbaa !11
  %292 = add nsw i64 %291, 1
  store i64 %292, ptr %19, align 8, !tbaa !11
  br label %157, !llvm.loop !20

293:                                              ; preds = %157
  %294 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %10, ptr noundef %294)
  %295 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %11, ptr noundef %295)
  %296 = load i64, ptr %17, align 8, !tbaa !11
  %297 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20cmatrixrndorthogonalElPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %296, ptr noundef %10, ptr noundef %297)
  %298 = load i64, ptr %17, align 8, !tbaa !11
  %299 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20cmatrixrndorthogonalElPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %298, ptr noundef %11, ptr noundef %299)
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %300

300:                                              ; preds = %475, %293
  %301 = load i64, ptr %19, align 8, !tbaa !11
  %302 = load i64, ptr %17, align 8, !tbaa !11
  %303 = sub nsw i64 %302, 1
  %304 = icmp sle i64 %301, %303
  br i1 %304, label %305, label %478

305:                                              ; preds = %300
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %306

306:                                              ; preds = %471, %305
  %307 = load i64, ptr %20, align 8, !tbaa !11
  %308 = load i64, ptr %17, align 8, !tbaa !11
  %309 = sub nsw i64 %308, 1
  %310 = icmp sle i64 %307, %309
  br i1 %310, label %311, label %474

311:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #6
  %312 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %313 = load ptr, ptr %312, align 8, !tbaa !15
  %314 = load i64, ptr %19, align 8, !tbaa !11
  %315 = getelementptr inbounds ptr, ptr %313, i64 %314
  %316 = load ptr, ptr %315, align 8, !tbaa !9
  %317 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %316, i64 0
  %318 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %319 = load ptr, ptr %318, align 8, !tbaa !15
  %320 = load i64, ptr %20, align 8, !tbaa !11
  %321 = getelementptr inbounds ptr, ptr %319, i64 %320
  %322 = load ptr, ptr %321, align 8, !tbaa !9
  %323 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %322, i64 0
  %324 = load i64, ptr %17, align 8, !tbaa !11
  %325 = sub nsw i64 %324, 1
  %326 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %325)
  %327 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %317, i64 noundef 1, ptr noundef @.str.191, ptr noundef %323, i64 noundef 1, ptr noundef @.str.190, i64 noundef %326)
  %328 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 0
  %329 = extractvalue { double, double } %327, 0
  store double %329, ptr %328, align 8
  %330 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 1
  %331 = extractvalue { double, double } %327, 1
  store double %331, ptr %330, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %27, ptr align 8 %38, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #6
  %332 = load i64, ptr %19, align 8, !tbaa !11
  %333 = load i64, ptr %20, align 8, !tbaa !11
  %334 = icmp eq i64 %332, %333
  br i1 %334, label %335, label %359

335:                                              ; preds = %311
  %336 = load i8, ptr %35, align 1, !tbaa !5, !range !16, !noundef !17
  %337 = trunc i8 %336 to i1
  br i1 %337, label %356, label %338

338:                                              ; preds = %335
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %40, ptr align 8 %27, i64 16, i1 false), !tbaa.struct !21
  %339 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 0
  %340 = load double, ptr %339, align 8
  %341 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 1
  %342 = load double, ptr %341, align 8
  %343 = call { double, double } @_ZN11alglib_impl10ae_c_sub_dENS_10ae_complexEd(double %340, double %342, double noundef 1.000000e+00)
  %344 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 0
  %345 = extractvalue { double, double } %343, 0
  store double %345, ptr %344, align 8
  %346 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 1
  %347 = extractvalue { double, double } %343, 1
  store double %347, ptr %346, align 8
  %348 = load ptr, ptr %4, align 8, !tbaa !9
  %349 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 0
  %350 = load double, ptr %349, align 8
  %351 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 1
  %352 = load double, ptr %351, align 8
  %353 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %350, double %352, ptr noundef %348)
  %354 = load double, ptr %25, align 8, !tbaa !13
  %355 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %353, double noundef %354)
  br label %356

356:                                              ; preds = %338, %335
  %357 = phi i1 [ true, %335 ], [ %355, %338 ]
  %358 = zext i1 %357 to i8
  store i8 %358, ptr %35, align 1, !tbaa !5
  br label %374

359:                                              ; preds = %311
  %360 = load i8, ptr %35, align 1, !tbaa !5, !range !16, !noundef !17
  %361 = trunc i8 %360 to i1
  br i1 %361, label %371, label %362

362:                                              ; preds = %359
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %41, ptr align 8 %27, i64 16, i1 false), !tbaa.struct !21
  %363 = load ptr, ptr %4, align 8, !tbaa !9
  %364 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 0
  %365 = load double, ptr %364, align 8
  %366 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 1
  %367 = load double, ptr %366, align 8
  %368 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %365, double %367, ptr noundef %363)
  %369 = load double, ptr %25, align 8, !tbaa !13
  %370 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %368, double noundef %369)
  br label %371

371:                                              ; preds = %362, %359
  %372 = phi i1 [ true, %359 ], [ %370, %362 ]
  %373 = zext i1 %372 to i8
  store i8 %373, ptr %35, align 1, !tbaa !5
  br label %374

374:                                              ; preds = %371, %356
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #6
  %375 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %376 = load ptr, ptr %375, align 8, !tbaa !15
  %377 = load i64, ptr %19, align 8, !tbaa !11
  %378 = getelementptr inbounds ptr, ptr %376, i64 %377
  %379 = load ptr, ptr %378, align 8, !tbaa !9
  %380 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %379, i64 0
  %381 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %382 = load ptr, ptr %381, align 8, !tbaa !15
  %383 = load i64, ptr %20, align 8, !tbaa !11
  %384 = getelementptr inbounds ptr, ptr %382, i64 %383
  %385 = load ptr, ptr %384, align 8, !tbaa !9
  %386 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %385, i64 0
  %387 = load i64, ptr %17, align 8, !tbaa !11
  %388 = sub nsw i64 %387, 1
  %389 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %388)
  %390 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %380, i64 noundef 1, ptr noundef @.str.191, ptr noundef %386, i64 noundef 1, ptr noundef @.str.190, i64 noundef %389)
  %391 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 0
  %392 = extractvalue { double, double } %390, 0
  store double %392, ptr %391, align 8
  %393 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 1
  %394 = extractvalue { double, double } %390, 1
  store double %394, ptr %393, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %27, ptr align 8 %42, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #6
  %395 = load i64, ptr %19, align 8, !tbaa !11
  %396 = load i64, ptr %20, align 8, !tbaa !11
  %397 = icmp eq i64 %395, %396
  br i1 %397, label %398, label %422

398:                                              ; preds = %374
  %399 = load i8, ptr %35, align 1, !tbaa !5, !range !16, !noundef !17
  %400 = trunc i8 %399 to i1
  br i1 %400, label %419, label %401

401:                                              ; preds = %398
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %44, ptr align 8 %27, i64 16, i1 false), !tbaa.struct !21
  %402 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 0
  %403 = load double, ptr %402, align 8
  %404 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 1
  %405 = load double, ptr %404, align 8
  %406 = call { double, double } @_ZN11alglib_impl10ae_c_sub_dENS_10ae_complexEd(double %403, double %405, double noundef 1.000000e+00)
  %407 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 0
  %408 = extractvalue { double, double } %406, 0
  store double %408, ptr %407, align 8
  %409 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 1
  %410 = extractvalue { double, double } %406, 1
  store double %410, ptr %409, align 8
  %411 = load ptr, ptr %4, align 8, !tbaa !9
  %412 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 0
  %413 = load double, ptr %412, align 8
  %414 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 1
  %415 = load double, ptr %414, align 8
  %416 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %413, double %415, ptr noundef %411)
  %417 = load double, ptr %25, align 8, !tbaa !13
  %418 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %416, double noundef %417)
  br label %419

419:                                              ; preds = %401, %398
  %420 = phi i1 [ true, %398 ], [ %418, %401 ]
  %421 = zext i1 %420 to i8
  store i8 %421, ptr %35, align 1, !tbaa !5
  br label %437

422:                                              ; preds = %374
  %423 = load i8, ptr %35, align 1, !tbaa !5, !range !16, !noundef !17
  %424 = trunc i8 %423 to i1
  br i1 %424, label %434, label %425

425:                                              ; preds = %422
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %45, ptr align 8 %27, i64 16, i1 false), !tbaa.struct !21
  %426 = load ptr, ptr %4, align 8, !tbaa !9
  %427 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 0
  %428 = load double, ptr %427, align 8
  %429 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 1
  %430 = load double, ptr %429, align 8
  %431 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %428, double %430, ptr noundef %426)
  %432 = load double, ptr %25, align 8, !tbaa !13
  %433 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %431, double noundef %432)
  br label %434

434:                                              ; preds = %425, %422
  %435 = phi i1 [ true, %422 ], [ %433, %425 ]
  %436 = zext i1 %435 to i8
  store i8 %436, ptr %35, align 1, !tbaa !5
  br label %437

437:                                              ; preds = %434, %419
  %438 = load i64, ptr %17, align 8, !tbaa !11
  %439 = icmp sge i64 %438, 2
  br i1 %439, label %440, label %470

440:                                              ; preds = %437
  %441 = load i8, ptr %35, align 1, !tbaa !5, !range !16, !noundef !17
  %442 = trunc i8 %441 to i1
  br i1 %442, label %467, label %443

443:                                              ; preds = %440
  %444 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %445 = load ptr, ptr %444, align 8, !tbaa !15
  %446 = load i64, ptr %19, align 8, !tbaa !11
  %447 = getelementptr inbounds ptr, ptr %445, i64 %446
  %448 = load ptr, ptr %447, align 8, !tbaa !9
  %449 = load i64, ptr %20, align 8, !tbaa !11
  %450 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %448, i64 %449
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %46, ptr align 8 %450, i64 16, i1 false), !tbaa.struct !21
  %451 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %452 = load ptr, ptr %451, align 8, !tbaa !15
  %453 = load i64, ptr %19, align 8, !tbaa !11
  %454 = getelementptr inbounds ptr, ptr %452, i64 %453
  %455 = load ptr, ptr %454, align 8, !tbaa !9
  %456 = load i64, ptr %20, align 8, !tbaa !11
  %457 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %455, i64 %456
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %47, ptr align 8 %457, i64 16, i1 false), !tbaa.struct !21
  %458 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 0
  %459 = load double, ptr %458, align 8
  %460 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 1
  %461 = load double, ptr %460, align 8
  %462 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 0
  %463 = load double, ptr %462, align 8
  %464 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 1
  %465 = load double, ptr %464, align 8
  %466 = call noundef zeroext i1 @_ZN11alglib_impl7ae_c_eqENS_10ae_complexES0_(double %459, double %461, double %463, double %465)
  br label %467

467:                                              ; preds = %443, %440
  %468 = phi i1 [ true, %440 ], [ %466, %443 ]
  %469 = zext i1 %468 to i8
  store i8 %469, ptr %35, align 1, !tbaa !5
  br label %470

470:                                              ; preds = %467, %437
  br label %471

471:                                              ; preds = %470
  %472 = load i64, ptr %20, align 8, !tbaa !11
  %473 = add nsw i64 %472, 1
  store i64 %473, ptr %20, align 8, !tbaa !11
  br label %306, !llvm.loop !22

474:                                              ; preds = %306
  br label %475

475:                                              ; preds = %474
  %476 = load i64, ptr %19, align 8, !tbaa !11
  %477 = add nsw i64 %476, 1
  store i64 %477, ptr %19, align 8, !tbaa !11
  br label %300, !llvm.loop !23

478:                                              ; preds = %300
  %479 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %6, ptr noundef %479)
  %480 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %7, ptr noundef %480)
  %481 = load i64, ptr %17, align 8, !tbaa !11
  %482 = sub nsw i64 %481, 1
  %483 = add nsw i64 %482, 1
  %484 = load i64, ptr %17, align 8, !tbaa !11
  %485 = sub nsw i64 %484, 1
  %486 = add nsw i64 %485, 1
  %487 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %6, i64 noundef %483, i64 noundef %486, ptr noundef %487)
  %488 = load i64, ptr %17, align 8, !tbaa !11
  %489 = sub nsw i64 %488, 1
  %490 = add nsw i64 %489, 1
  %491 = load i64, ptr %17, align 8, !tbaa !11
  %492 = sub nsw i64 %491, 1
  %493 = add nsw i64 %492, 1
  %494 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %7, i64 noundef %490, i64 noundef %493, ptr noundef %494)
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %495

495:                                              ; preds = %539, %478
  %496 = load i64, ptr %19, align 8, !tbaa !11
  %497 = load i64, ptr %17, align 8, !tbaa !11
  %498 = sub nsw i64 %497, 1
  %499 = icmp sle i64 %496, %498
  br i1 %499, label %500, label %542

500:                                              ; preds = %495
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %501

501:                                              ; preds = %521, %500
  %502 = load i64, ptr %20, align 8, !tbaa !11
  %503 = load i64, ptr %17, align 8, !tbaa !11
  %504 = sub nsw i64 %503, 1
  %505 = icmp sle i64 %502, %504
  br i1 %505, label %506, label %524

506:                                              ; preds = %501
  %507 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %508 = load ptr, ptr %507, align 8, !tbaa !15
  %509 = load i64, ptr %19, align 8, !tbaa !11
  %510 = getelementptr inbounds ptr, ptr %508, i64 %509
  %511 = load ptr, ptr %510, align 8, !tbaa !9
  %512 = load i64, ptr %20, align 8, !tbaa !11
  %513 = getelementptr inbounds double, ptr %511, i64 %512
  store double 0.000000e+00, ptr %513, align 8, !tbaa !13
  %514 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %515 = load ptr, ptr %514, align 8, !tbaa !15
  %516 = load i64, ptr %19, align 8, !tbaa !11
  %517 = getelementptr inbounds ptr, ptr %515, i64 %516
  %518 = load ptr, ptr %517, align 8, !tbaa !9
  %519 = load i64, ptr %20, align 8, !tbaa !11
  %520 = getelementptr inbounds double, ptr %518, i64 %519
  store double 0.000000e+00, ptr %520, align 8, !tbaa !13
  br label %521

521:                                              ; preds = %506
  %522 = load i64, ptr %20, align 8, !tbaa !11
  %523 = add nsw i64 %522, 1
  store i64 %523, ptr %20, align 8, !tbaa !11
  br label %501, !llvm.loop !24

524:                                              ; preds = %501
  %525 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %526 = load ptr, ptr %525, align 8, !tbaa !15
  %527 = load i64, ptr %19, align 8, !tbaa !11
  %528 = getelementptr inbounds ptr, ptr %526, i64 %527
  %529 = load ptr, ptr %528, align 8, !tbaa !9
  %530 = load i64, ptr %19, align 8, !tbaa !11
  %531 = getelementptr inbounds double, ptr %529, i64 %530
  store double 1.000000e+00, ptr %531, align 8, !tbaa !13
  %532 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %533 = load ptr, ptr %532, align 8, !tbaa !15
  %534 = load i64, ptr %19, align 8, !tbaa !11
  %535 = getelementptr inbounds ptr, ptr %533, i64 %534
  %536 = load ptr, ptr %535, align 8, !tbaa !9
  %537 = load i64, ptr %19, align 8, !tbaa !11
  %538 = getelementptr inbounds double, ptr %536, i64 %537
  store double 1.000000e+00, ptr %538, align 8, !tbaa !13
  br label %539

539:                                              ; preds = %524
  %540 = load i64, ptr %19, align 8, !tbaa !11
  %541 = add nsw i64 %540, 1
  store i64 %541, ptr %19, align 8, !tbaa !11
  br label %495, !llvm.loop !25

542:                                              ; preds = %495
  %543 = load i64, ptr %17, align 8, !tbaa !11
  %544 = load i64, ptr %17, align 8, !tbaa !11
  %545 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl32rmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %6, i64 noundef %543, i64 noundef %544, ptr noundef %545)
  %546 = load i64, ptr %17, align 8, !tbaa !11
  %547 = load i64, ptr %17, align 8, !tbaa !11
  %548 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl32rmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %7, i64 noundef %546, i64 noundef %547, ptr noundef %548)
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %549

549:                                              ; preds = %682, %542
  %550 = load i64, ptr %19, align 8, !tbaa !11
  %551 = load i64, ptr %17, align 8, !tbaa !11
  %552 = sub nsw i64 %551, 1
  %553 = icmp sle i64 %550, %552
  br i1 %553, label %554, label %685

554:                                              ; preds = %549
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %555

555:                                              ; preds = %678, %554
  %556 = load i64, ptr %20, align 8, !tbaa !11
  %557 = load i64, ptr %17, align 8, !tbaa !11
  %558 = sub nsw i64 %557, 1
  %559 = icmp sle i64 %556, %558
  br i1 %559, label %560, label %681

560:                                              ; preds = %555
  %561 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %562 = load ptr, ptr %561, align 8, !tbaa !15
  %563 = load i64, ptr %19, align 8, !tbaa !11
  %564 = getelementptr inbounds ptr, ptr %562, i64 %563
  %565 = load ptr, ptr %564, align 8, !tbaa !9
  %566 = getelementptr inbounds double, ptr %565, i64 0
  %567 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %568 = load ptr, ptr %567, align 8, !tbaa !15
  %569 = load i64, ptr %20, align 8, !tbaa !11
  %570 = getelementptr inbounds ptr, ptr %568, i64 %569
  %571 = load ptr, ptr %570, align 8, !tbaa !9
  %572 = getelementptr inbounds double, ptr %571, i64 0
  %573 = load i64, ptr %17, align 8, !tbaa !11
  %574 = sub nsw i64 %573, 1
  %575 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %574)
  %576 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %566, i64 noundef 1, ptr noundef %572, i64 noundef 1, i64 noundef %575)
  store double %576, ptr %26, align 8, !tbaa !13
  %577 = load i64, ptr %19, align 8, !tbaa !11
  %578 = load i64, ptr %20, align 8, !tbaa !11
  %579 = icmp eq i64 %577, %578
  br i1 %579, label %580, label %593

580:                                              ; preds = %560
  %581 = load i8, ptr %34, align 1, !tbaa !5, !range !16, !noundef !17
  %582 = trunc i8 %581 to i1
  br i1 %582, label %590, label %583

583:                                              ; preds = %580
  %584 = load double, ptr %26, align 8, !tbaa !13
  %585 = fsub double %584, 1.000000e+00
  %586 = load ptr, ptr %4, align 8, !tbaa !9
  %587 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %585, ptr noundef %586)
  %588 = load double, ptr %25, align 8, !tbaa !13
  %589 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %587, double noundef %588)
  br label %590

590:                                              ; preds = %583, %580
  %591 = phi i1 [ true, %580 ], [ %589, %583 ]
  %592 = zext i1 %591 to i8
  store i8 %592, ptr %34, align 1, !tbaa !5
  br label %605

593:                                              ; preds = %560
  %594 = load i8, ptr %34, align 1, !tbaa !5, !range !16, !noundef !17
  %595 = trunc i8 %594 to i1
  br i1 %595, label %602, label %596

596:                                              ; preds = %593
  %597 = load double, ptr %26, align 8, !tbaa !13
  %598 = load ptr, ptr %4, align 8, !tbaa !9
  %599 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %597, ptr noundef %598)
  %600 = load double, ptr %25, align 8, !tbaa !13
  %601 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %599, double noundef %600)
  br label %602

602:                                              ; preds = %596, %593
  %603 = phi i1 [ true, %593 ], [ %601, %596 ]
  %604 = zext i1 %603 to i8
  store i8 %604, ptr %34, align 1, !tbaa !5
  br label %605

605:                                              ; preds = %602, %590
  %606 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %607 = load ptr, ptr %606, align 8, !tbaa !15
  %608 = load i64, ptr %19, align 8, !tbaa !11
  %609 = getelementptr inbounds ptr, ptr %607, i64 %608
  %610 = load ptr, ptr %609, align 8, !tbaa !9
  %611 = getelementptr inbounds double, ptr %610, i64 0
  %612 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %613 = load ptr, ptr %612, align 8, !tbaa !15
  %614 = load i64, ptr %20, align 8, !tbaa !11
  %615 = getelementptr inbounds ptr, ptr %613, i64 %614
  %616 = load ptr, ptr %615, align 8, !tbaa !9
  %617 = getelementptr inbounds double, ptr %616, i64 0
  %618 = load i64, ptr %17, align 8, !tbaa !11
  %619 = sub nsw i64 %618, 1
  %620 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %619)
  %621 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %611, i64 noundef 1, ptr noundef %617, i64 noundef 1, i64 noundef %620)
  store double %621, ptr %26, align 8, !tbaa !13
  %622 = load i64, ptr %19, align 8, !tbaa !11
  %623 = load i64, ptr %20, align 8, !tbaa !11
  %624 = icmp eq i64 %622, %623
  br i1 %624, label %625, label %638

625:                                              ; preds = %605
  %626 = load i8, ptr %34, align 1, !tbaa !5, !range !16, !noundef !17
  %627 = trunc i8 %626 to i1
  br i1 %627, label %635, label %628

628:                                              ; preds = %625
  %629 = load double, ptr %26, align 8, !tbaa !13
  %630 = fsub double %629, 1.000000e+00
  %631 = load ptr, ptr %4, align 8, !tbaa !9
  %632 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %630, ptr noundef %631)
  %633 = load double, ptr %25, align 8, !tbaa !13
  %634 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %632, double noundef %633)
  br label %635

635:                                              ; preds = %628, %625
  %636 = phi i1 [ true, %625 ], [ %634, %628 ]
  %637 = zext i1 %636 to i8
  store i8 %637, ptr %34, align 1, !tbaa !5
  br label %650

638:                                              ; preds = %605
  %639 = load i8, ptr %34, align 1, !tbaa !5, !range !16, !noundef !17
  %640 = trunc i8 %639 to i1
  br i1 %640, label %647, label %641

641:                                              ; preds = %638
  %642 = load double, ptr %26, align 8, !tbaa !13
  %643 = load ptr, ptr %4, align 8, !tbaa !9
  %644 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %642, ptr noundef %643)
  %645 = load double, ptr %25, align 8, !tbaa !13
  %646 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %644, double noundef %645)
  br label %647

647:                                              ; preds = %641, %638
  %648 = phi i1 [ true, %638 ], [ %646, %641 ]
  %649 = zext i1 %648 to i8
  store i8 %649, ptr %34, align 1, !tbaa !5
  br label %650

650:                                              ; preds = %647, %635
  %651 = load i64, ptr %17, align 8, !tbaa !11
  %652 = icmp sge i64 %651, 2
  br i1 %652, label %653, label %677

653:                                              ; preds = %650
  %654 = load i8, ptr %34, align 1, !tbaa !5, !range !16, !noundef !17
  %655 = trunc i8 %654 to i1
  br i1 %655, label %674, label %656

656:                                              ; preds = %653
  %657 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %658 = load ptr, ptr %657, align 8, !tbaa !15
  %659 = load i64, ptr %19, align 8, !tbaa !11
  %660 = getelementptr inbounds ptr, ptr %658, i64 %659
  %661 = load ptr, ptr %660, align 8, !tbaa !9
  %662 = load i64, ptr %20, align 8, !tbaa !11
  %663 = getelementptr inbounds double, ptr %661, i64 %662
  %664 = load double, ptr %663, align 8, !tbaa !13
  %665 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %666 = load ptr, ptr %665, align 8, !tbaa !15
  %667 = load i64, ptr %19, align 8, !tbaa !11
  %668 = getelementptr inbounds ptr, ptr %666, i64 %667
  %669 = load ptr, ptr %668, align 8, !tbaa !9
  %670 = load i64, ptr %20, align 8, !tbaa !11
  %671 = getelementptr inbounds double, ptr %669, i64 %670
  %672 = load double, ptr %671, align 8, !tbaa !13
  %673 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %664, double noundef %672)
  br label %674

674:                                              ; preds = %656, %653
  %675 = phi i1 [ true, %653 ], [ %673, %656 ]
  %676 = zext i1 %675 to i8
  store i8 %676, ptr %34, align 1, !tbaa !5
  br label %677

677:                                              ; preds = %674, %650
  br label %678

678:                                              ; preds = %677
  %679 = load i64, ptr %20, align 8, !tbaa !11
  %680 = add nsw i64 %679, 1
  store i64 %680, ptr %20, align 8, !tbaa !11
  br label %555, !llvm.loop !26

681:                                              ; preds = %555
  br label %682

682:                                              ; preds = %681
  %683 = load i64, ptr %19, align 8, !tbaa !11
  %684 = add nsw i64 %683, 1
  store i64 %684, ptr %19, align 8, !tbaa !11
  br label %549, !llvm.loop !27

685:                                              ; preds = %549
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %686

686:                                              ; preds = %729, %685
  %687 = load i64, ptr %19, align 8, !tbaa !11
  %688 = load i64, ptr %17, align 8, !tbaa !11
  %689 = sub nsw i64 %688, 1
  %690 = icmp sle i64 %687, %689
  br i1 %690, label %691, label %732

691:                                              ; preds = %686
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %692

692:                                              ; preds = %725, %691
  %693 = load i64, ptr %20, align 8, !tbaa !11
  %694 = load i64, ptr %17, align 8, !tbaa !11
  %695 = sub nsw i64 %694, 1
  %696 = icmp sle i64 %693, %695
  br i1 %696, label %697, label %728

697:                                              ; preds = %692
  %698 = load ptr, ptr %4, align 8, !tbaa !9
  %699 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %698)
  %700 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %699, double -1.000000e+00)
  %701 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %13, i32 0, i32 6
  %702 = load ptr, ptr %701, align 8, !tbaa !15
  %703 = load i64, ptr %19, align 8, !tbaa !11
  %704 = getelementptr inbounds ptr, ptr %702, i64 %703
  %705 = load ptr, ptr %704, align 8, !tbaa !9
  %706 = load i64, ptr %20, align 8, !tbaa !11
  %707 = getelementptr inbounds double, ptr %705, i64 %706
  store double %700, ptr %707, align 8, !tbaa !13
  %708 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %13, i32 0, i32 6
  %709 = load ptr, ptr %708, align 8, !tbaa !15
  %710 = load i64, ptr %19, align 8, !tbaa !11
  %711 = getelementptr inbounds ptr, ptr %709, i64 %710
  %712 = load ptr, ptr %711, align 8, !tbaa !9
  %713 = load i64, ptr %20, align 8, !tbaa !11
  %714 = getelementptr inbounds double, ptr %712, i64 %713
  %715 = load double, ptr %714, align 8, !tbaa !13
  %716 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %13, i32 0, i32 6
  %717 = load ptr, ptr %716, align 8, !tbaa !15
  %718 = load i64, ptr %19, align 8, !tbaa !11
  %719 = load i64, ptr %17, align 8, !tbaa !11
  %720 = add nsw i64 %718, %719
  %721 = getelementptr inbounds ptr, ptr %717, i64 %720
  %722 = load ptr, ptr %721, align 8, !tbaa !9
  %723 = load i64, ptr %20, align 8, !tbaa !11
  %724 = getelementptr inbounds double, ptr %722, i64 %723
  store double %715, ptr %724, align 8, !tbaa !13
  br label %725

725:                                              ; preds = %697
  %726 = load i64, ptr %20, align 8, !tbaa !11
  %727 = add nsw i64 %726, 1
  store i64 %727, ptr %20, align 8, !tbaa !11
  br label %692, !llvm.loop !28

728:                                              ; preds = %692
  br label %729

729:                                              ; preds = %728
  %730 = load i64, ptr %19, align 8, !tbaa !11
  %731 = add nsw i64 %730, 1
  store i64 %731, ptr %19, align 8, !tbaa !11
  br label %686, !llvm.loop !29

732:                                              ; preds = %686
  %733 = load i64, ptr %17, align 8, !tbaa !11
  %734 = mul nsw i64 2, %733
  %735 = load i64, ptr %17, align 8, !tbaa !11
  %736 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl32rmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %13, i64 noundef %734, i64 noundef %735, ptr noundef %736)
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %737

737:                                              ; preds = %782, %732
  %738 = load i64, ptr %19, align 8, !tbaa !11
  %739 = load i64, ptr %17, align 8, !tbaa !11
  %740 = sub nsw i64 %739, 1
  %741 = icmp sle i64 %738, %740
  br i1 %741, label %742, label %785

742:                                              ; preds = %737
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %743

743:                                              ; preds = %778, %742
  %744 = load i64, ptr %20, align 8, !tbaa !11
  %745 = load i64, ptr %17, align 8, !tbaa !11
  %746 = sub nsw i64 %745, 1
  %747 = icmp sle i64 %744, %746
  br i1 %747, label %748, label %781

748:                                              ; preds = %743
  %749 = load i8, ptr %34, align 1, !tbaa !5, !range !16, !noundef !17
  %750 = trunc i8 %749 to i1
  br i1 %750, label %775, label %751

751:                                              ; preds = %748
  %752 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %13, i32 0, i32 6
  %753 = load ptr, ptr %752, align 8, !tbaa !15
  %754 = load i64, ptr %19, align 8, !tbaa !11
  %755 = load i64, ptr %17, align 8, !tbaa !11
  %756 = add nsw i64 %754, %755
  %757 = getelementptr inbounds ptr, ptr %753, i64 %756
  %758 = load ptr, ptr %757, align 8, !tbaa !9
  %759 = load i64, ptr %20, align 8, !tbaa !11
  %760 = getelementptr inbounds double, ptr %758, i64 %759
  %761 = load double, ptr %760, align 8, !tbaa !13
  %762 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %13, i32 0, i32 6
  %763 = load ptr, ptr %762, align 8, !tbaa !15
  %764 = load i64, ptr %19, align 8, !tbaa !11
  %765 = getelementptr inbounds ptr, ptr %763, i64 %764
  %766 = load ptr, ptr %765, align 8, !tbaa !9
  %767 = load i64, ptr %20, align 8, !tbaa !11
  %768 = getelementptr inbounds double, ptr %766, i64 %767
  %769 = load double, ptr %768, align 8, !tbaa !13
  %770 = fsub double %761, %769
  %771 = load ptr, ptr %4, align 8, !tbaa !9
  %772 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %770, ptr noundef %771)
  %773 = load double, ptr %25, align 8, !tbaa !13
  %774 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %772, double noundef %773)
  br label %775

775:                                              ; preds = %751, %748
  %776 = phi i1 [ true, %748 ], [ %774, %751 ]
  %777 = zext i1 %776 to i8
  store i8 %777, ptr %34, align 1, !tbaa !5
  br label %778

778:                                              ; preds = %775
  %779 = load i64, ptr %20, align 8, !tbaa !11
  %780 = add nsw i64 %779, 1
  store i64 %780, ptr %20, align 8, !tbaa !11
  br label %743, !llvm.loop !30

781:                                              ; preds = %743
  br label %782

782:                                              ; preds = %781
  %783 = load i64, ptr %19, align 8, !tbaa !11
  %784 = add nsw i64 %783, 1
  store i64 %784, ptr %19, align 8, !tbaa !11
  br label %737, !llvm.loop !31

785:                                              ; preds = %737
  %786 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %6, ptr noundef %786)
  %787 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %7, ptr noundef %787)
  %788 = load i64, ptr %17, align 8, !tbaa !11
  %789 = sub nsw i64 %788, 1
  %790 = add nsw i64 %789, 1
  %791 = load i64, ptr %17, align 8, !tbaa !11
  %792 = sub nsw i64 %791, 1
  %793 = add nsw i64 %792, 1
  %794 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %6, i64 noundef %790, i64 noundef %793, ptr noundef %794)
  %795 = load i64, ptr %17, align 8, !tbaa !11
  %796 = sub nsw i64 %795, 1
  %797 = add nsw i64 %796, 1
  %798 = load i64, ptr %17, align 8, !tbaa !11
  %799 = sub nsw i64 %798, 1
  %800 = add nsw i64 %799, 1
  %801 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %7, i64 noundef %797, i64 noundef %800, ptr noundef %801)
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %802

802:                                              ; preds = %846, %785
  %803 = load i64, ptr %19, align 8, !tbaa !11
  %804 = load i64, ptr %17, align 8, !tbaa !11
  %805 = sub nsw i64 %804, 1
  %806 = icmp sle i64 %803, %805
  br i1 %806, label %807, label %849

807:                                              ; preds = %802
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %808

808:                                              ; preds = %828, %807
  %809 = load i64, ptr %20, align 8, !tbaa !11
  %810 = load i64, ptr %17, align 8, !tbaa !11
  %811 = sub nsw i64 %810, 1
  %812 = icmp sle i64 %809, %811
  br i1 %812, label %813, label %831

813:                                              ; preds = %808
  %814 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %815 = load ptr, ptr %814, align 8, !tbaa !15
  %816 = load i64, ptr %19, align 8, !tbaa !11
  %817 = getelementptr inbounds ptr, ptr %815, i64 %816
  %818 = load ptr, ptr %817, align 8, !tbaa !9
  %819 = load i64, ptr %20, align 8, !tbaa !11
  %820 = getelementptr inbounds double, ptr %818, i64 %819
  store double 0.000000e+00, ptr %820, align 8, !tbaa !13
  %821 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %822 = load ptr, ptr %821, align 8, !tbaa !15
  %823 = load i64, ptr %19, align 8, !tbaa !11
  %824 = getelementptr inbounds ptr, ptr %822, i64 %823
  %825 = load ptr, ptr %824, align 8, !tbaa !9
  %826 = load i64, ptr %20, align 8, !tbaa !11
  %827 = getelementptr inbounds double, ptr %825, i64 %826
  store double 0.000000e+00, ptr %827, align 8, !tbaa !13
  br label %828

828:                                              ; preds = %813
  %829 = load i64, ptr %20, align 8, !tbaa !11
  %830 = add nsw i64 %829, 1
  store i64 %830, ptr %20, align 8, !tbaa !11
  br label %808, !llvm.loop !32

831:                                              ; preds = %808
  %832 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %833 = load ptr, ptr %832, align 8, !tbaa !15
  %834 = load i64, ptr %19, align 8, !tbaa !11
  %835 = getelementptr inbounds ptr, ptr %833, i64 %834
  %836 = load ptr, ptr %835, align 8, !tbaa !9
  %837 = load i64, ptr %19, align 8, !tbaa !11
  %838 = getelementptr inbounds double, ptr %836, i64 %837
  store double 1.000000e+00, ptr %838, align 8, !tbaa !13
  %839 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %840 = load ptr, ptr %839, align 8, !tbaa !15
  %841 = load i64, ptr %19, align 8, !tbaa !11
  %842 = getelementptr inbounds ptr, ptr %840, i64 %841
  %843 = load ptr, ptr %842, align 8, !tbaa !9
  %844 = load i64, ptr %19, align 8, !tbaa !11
  %845 = getelementptr inbounds double, ptr %843, i64 %844
  store double 1.000000e+00, ptr %845, align 8, !tbaa !13
  br label %846

846:                                              ; preds = %831
  %847 = load i64, ptr %19, align 8, !tbaa !11
  %848 = add nsw i64 %847, 1
  store i64 %848, ptr %19, align 8, !tbaa !11
  br label %802, !llvm.loop !33

849:                                              ; preds = %802
  %850 = load i64, ptr %17, align 8, !tbaa !11
  %851 = load i64, ptr %17, align 8, !tbaa !11
  %852 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl31rmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %6, i64 noundef %850, i64 noundef %851, ptr noundef %852)
  %853 = load i64, ptr %17, align 8, !tbaa !11
  %854 = load i64, ptr %17, align 8, !tbaa !11
  %855 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl31rmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %7, i64 noundef %853, i64 noundef %854, ptr noundef %855)
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %856

856:                                              ; preds = %989, %849
  %857 = load i64, ptr %19, align 8, !tbaa !11
  %858 = load i64, ptr %17, align 8, !tbaa !11
  %859 = sub nsw i64 %858, 1
  %860 = icmp sle i64 %857, %859
  br i1 %860, label %861, label %992

861:                                              ; preds = %856
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %862

862:                                              ; preds = %985, %861
  %863 = load i64, ptr %20, align 8, !tbaa !11
  %864 = load i64, ptr %17, align 8, !tbaa !11
  %865 = sub nsw i64 %864, 1
  %866 = icmp sle i64 %863, %865
  br i1 %866, label %867, label %988

867:                                              ; preds = %862
  %868 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %869 = load ptr, ptr %868, align 8, !tbaa !15
  %870 = load i64, ptr %19, align 8, !tbaa !11
  %871 = getelementptr inbounds ptr, ptr %869, i64 %870
  %872 = load ptr, ptr %871, align 8, !tbaa !9
  %873 = getelementptr inbounds double, ptr %872, i64 0
  %874 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %875 = load ptr, ptr %874, align 8, !tbaa !15
  %876 = load i64, ptr %20, align 8, !tbaa !11
  %877 = getelementptr inbounds ptr, ptr %875, i64 %876
  %878 = load ptr, ptr %877, align 8, !tbaa !9
  %879 = getelementptr inbounds double, ptr %878, i64 0
  %880 = load i64, ptr %17, align 8, !tbaa !11
  %881 = sub nsw i64 %880, 1
  %882 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %881)
  %883 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %873, i64 noundef 1, ptr noundef %879, i64 noundef 1, i64 noundef %882)
  store double %883, ptr %26, align 8, !tbaa !13
  %884 = load i64, ptr %19, align 8, !tbaa !11
  %885 = load i64, ptr %20, align 8, !tbaa !11
  %886 = icmp eq i64 %884, %885
  br i1 %886, label %887, label %900

887:                                              ; preds = %867
  %888 = load i8, ptr %34, align 1, !tbaa !5, !range !16, !noundef !17
  %889 = trunc i8 %888 to i1
  br i1 %889, label %897, label %890

890:                                              ; preds = %887
  %891 = load double, ptr %26, align 8, !tbaa !13
  %892 = fsub double %891, 1.000000e+00
  %893 = load ptr, ptr %4, align 8, !tbaa !9
  %894 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %892, ptr noundef %893)
  %895 = load double, ptr %25, align 8, !tbaa !13
  %896 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %894, double noundef %895)
  br label %897

897:                                              ; preds = %890, %887
  %898 = phi i1 [ true, %887 ], [ %896, %890 ]
  %899 = zext i1 %898 to i8
  store i8 %899, ptr %34, align 1, !tbaa !5
  br label %912

900:                                              ; preds = %867
  %901 = load i8, ptr %34, align 1, !tbaa !5, !range !16, !noundef !17
  %902 = trunc i8 %901 to i1
  br i1 %902, label %909, label %903

903:                                              ; preds = %900
  %904 = load double, ptr %26, align 8, !tbaa !13
  %905 = load ptr, ptr %4, align 8, !tbaa !9
  %906 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %904, ptr noundef %905)
  %907 = load double, ptr %25, align 8, !tbaa !13
  %908 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %906, double noundef %907)
  br label %909

909:                                              ; preds = %903, %900
  %910 = phi i1 [ true, %900 ], [ %908, %903 ]
  %911 = zext i1 %910 to i8
  store i8 %911, ptr %34, align 1, !tbaa !5
  br label %912

912:                                              ; preds = %909, %897
  %913 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %914 = load ptr, ptr %913, align 8, !tbaa !15
  %915 = load i64, ptr %19, align 8, !tbaa !11
  %916 = getelementptr inbounds ptr, ptr %914, i64 %915
  %917 = load ptr, ptr %916, align 8, !tbaa !9
  %918 = getelementptr inbounds double, ptr %917, i64 0
  %919 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %920 = load ptr, ptr %919, align 8, !tbaa !15
  %921 = load i64, ptr %20, align 8, !tbaa !11
  %922 = getelementptr inbounds ptr, ptr %920, i64 %921
  %923 = load ptr, ptr %922, align 8, !tbaa !9
  %924 = getelementptr inbounds double, ptr %923, i64 0
  %925 = load i64, ptr %17, align 8, !tbaa !11
  %926 = sub nsw i64 %925, 1
  %927 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %926)
  %928 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %918, i64 noundef 1, ptr noundef %924, i64 noundef 1, i64 noundef %927)
  store double %928, ptr %26, align 8, !tbaa !13
  %929 = load i64, ptr %19, align 8, !tbaa !11
  %930 = load i64, ptr %20, align 8, !tbaa !11
  %931 = icmp eq i64 %929, %930
  br i1 %931, label %932, label %945

932:                                              ; preds = %912
  %933 = load i8, ptr %34, align 1, !tbaa !5, !range !16, !noundef !17
  %934 = trunc i8 %933 to i1
  br i1 %934, label %942, label %935

935:                                              ; preds = %932
  %936 = load double, ptr %26, align 8, !tbaa !13
  %937 = fsub double %936, 1.000000e+00
  %938 = load ptr, ptr %4, align 8, !tbaa !9
  %939 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %937, ptr noundef %938)
  %940 = load double, ptr %25, align 8, !tbaa !13
  %941 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %939, double noundef %940)
  br label %942

942:                                              ; preds = %935, %932
  %943 = phi i1 [ true, %932 ], [ %941, %935 ]
  %944 = zext i1 %943 to i8
  store i8 %944, ptr %34, align 1, !tbaa !5
  br label %957

945:                                              ; preds = %912
  %946 = load i8, ptr %34, align 1, !tbaa !5, !range !16, !noundef !17
  %947 = trunc i8 %946 to i1
  br i1 %947, label %954, label %948

948:                                              ; preds = %945
  %949 = load double, ptr %26, align 8, !tbaa !13
  %950 = load ptr, ptr %4, align 8, !tbaa !9
  %951 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %949, ptr noundef %950)
  %952 = load double, ptr %25, align 8, !tbaa !13
  %953 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %951, double noundef %952)
  br label %954

954:                                              ; preds = %948, %945
  %955 = phi i1 [ true, %945 ], [ %953, %948 ]
  %956 = zext i1 %955 to i8
  store i8 %956, ptr %34, align 1, !tbaa !5
  br label %957

957:                                              ; preds = %954, %942
  %958 = load i64, ptr %17, align 8, !tbaa !11
  %959 = icmp sge i64 %958, 2
  br i1 %959, label %960, label %984

960:                                              ; preds = %957
  %961 = load i8, ptr %34, align 1, !tbaa !5, !range !16, !noundef !17
  %962 = trunc i8 %961 to i1
  br i1 %962, label %981, label %963

963:                                              ; preds = %960
  %964 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %965 = load ptr, ptr %964, align 8, !tbaa !15
  %966 = load i64, ptr %19, align 8, !tbaa !11
  %967 = getelementptr inbounds ptr, ptr %965, i64 %966
  %968 = load ptr, ptr %967, align 8, !tbaa !9
  %969 = load i64, ptr %20, align 8, !tbaa !11
  %970 = getelementptr inbounds double, ptr %968, i64 %969
  %971 = load double, ptr %970, align 8, !tbaa !13
  %972 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %973 = load ptr, ptr %972, align 8, !tbaa !15
  %974 = load i64, ptr %19, align 8, !tbaa !11
  %975 = getelementptr inbounds ptr, ptr %973, i64 %974
  %976 = load ptr, ptr %975, align 8, !tbaa !9
  %977 = load i64, ptr %20, align 8, !tbaa !11
  %978 = getelementptr inbounds double, ptr %976, i64 %977
  %979 = load double, ptr %978, align 8, !tbaa !13
  %980 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %971, double noundef %979)
  br label %981

981:                                              ; preds = %963, %960
  %982 = phi i1 [ true, %960 ], [ %980, %963 ]
  %983 = zext i1 %982 to i8
  store i8 %983, ptr %34, align 1, !tbaa !5
  br label %984

984:                                              ; preds = %981, %957
  br label %985

985:                                              ; preds = %984
  %986 = load i64, ptr %20, align 8, !tbaa !11
  %987 = add nsw i64 %986, 1
  store i64 %987, ptr %20, align 8, !tbaa !11
  br label %862, !llvm.loop !34

988:                                              ; preds = %862
  br label %989

989:                                              ; preds = %988
  %990 = load i64, ptr %19, align 8, !tbaa !11
  %991 = add nsw i64 %990, 1
  store i64 %991, ptr %19, align 8, !tbaa !11
  br label %856, !llvm.loop !35

992:                                              ; preds = %856
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %993

993:                                              ; preds = %1036, %992
  %994 = load i64, ptr %19, align 8, !tbaa !11
  %995 = load i64, ptr %17, align 8, !tbaa !11
  %996 = sub nsw i64 %995, 1
  %997 = icmp sle i64 %994, %996
  br i1 %997, label %998, label %1039

998:                                              ; preds = %993
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %999

999:                                              ; preds = %1032, %998
  %1000 = load i64, ptr %20, align 8, !tbaa !11
  %1001 = load i64, ptr %17, align 8, !tbaa !11
  %1002 = sub nsw i64 %1001, 1
  %1003 = icmp sle i64 %1000, %1002
  br i1 %1003, label %1004, label %1035

1004:                                             ; preds = %999
  %1005 = load ptr, ptr %4, align 8, !tbaa !9
  %1006 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1005)
  %1007 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %1006, double -1.000000e+00)
  %1008 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %12, i32 0, i32 6
  %1009 = load ptr, ptr %1008, align 8, !tbaa !15
  %1010 = load i64, ptr %19, align 8, !tbaa !11
  %1011 = getelementptr inbounds ptr, ptr %1009, i64 %1010
  %1012 = load ptr, ptr %1011, align 8, !tbaa !9
  %1013 = load i64, ptr %20, align 8, !tbaa !11
  %1014 = getelementptr inbounds double, ptr %1012, i64 %1013
  store double %1007, ptr %1014, align 8, !tbaa !13
  %1015 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %12, i32 0, i32 6
  %1016 = load ptr, ptr %1015, align 8, !tbaa !15
  %1017 = load i64, ptr %19, align 8, !tbaa !11
  %1018 = getelementptr inbounds ptr, ptr %1016, i64 %1017
  %1019 = load ptr, ptr %1018, align 8, !tbaa !9
  %1020 = load i64, ptr %20, align 8, !tbaa !11
  %1021 = getelementptr inbounds double, ptr %1019, i64 %1020
  %1022 = load double, ptr %1021, align 8, !tbaa !13
  %1023 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %12, i32 0, i32 6
  %1024 = load ptr, ptr %1023, align 8, !tbaa !15
  %1025 = load i64, ptr %19, align 8, !tbaa !11
  %1026 = getelementptr inbounds ptr, ptr %1024, i64 %1025
  %1027 = load ptr, ptr %1026, align 8, !tbaa !9
  %1028 = load i64, ptr %20, align 8, !tbaa !11
  %1029 = load i64, ptr %17, align 8, !tbaa !11
  %1030 = add nsw i64 %1028, %1029
  %1031 = getelementptr inbounds double, ptr %1027, i64 %1030
  store double %1022, ptr %1031, align 8, !tbaa !13
  br label %1032

1032:                                             ; preds = %1004
  %1033 = load i64, ptr %20, align 8, !tbaa !11
  %1034 = add nsw i64 %1033, 1
  store i64 %1034, ptr %20, align 8, !tbaa !11
  br label %999, !llvm.loop !36

1035:                                             ; preds = %999
  br label %1036

1036:                                             ; preds = %1035
  %1037 = load i64, ptr %19, align 8, !tbaa !11
  %1038 = add nsw i64 %1037, 1
  store i64 %1038, ptr %19, align 8, !tbaa !11
  br label %993, !llvm.loop !37

1039:                                             ; preds = %993
  %1040 = load i64, ptr %17, align 8, !tbaa !11
  %1041 = load i64, ptr %17, align 8, !tbaa !11
  %1042 = mul nsw i64 2, %1041
  %1043 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl31rmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %12, i64 noundef %1040, i64 noundef %1042, ptr noundef %1043)
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %1044

1044:                                             ; preds = %1089, %1039
  %1045 = load i64, ptr %19, align 8, !tbaa !11
  %1046 = load i64, ptr %17, align 8, !tbaa !11
  %1047 = sub nsw i64 %1046, 1
  %1048 = icmp sle i64 %1045, %1047
  br i1 %1048, label %1049, label %1092

1049:                                             ; preds = %1044
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %1050

1050:                                             ; preds = %1085, %1049
  %1051 = load i64, ptr %20, align 8, !tbaa !11
  %1052 = load i64, ptr %17, align 8, !tbaa !11
  %1053 = sub nsw i64 %1052, 1
  %1054 = icmp sle i64 %1051, %1053
  br i1 %1054, label %1055, label %1088

1055:                                             ; preds = %1050
  %1056 = load i8, ptr %34, align 1, !tbaa !5, !range !16, !noundef !17
  %1057 = trunc i8 %1056 to i1
  br i1 %1057, label %1082, label %1058

1058:                                             ; preds = %1055
  %1059 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %12, i32 0, i32 6
  %1060 = load ptr, ptr %1059, align 8, !tbaa !15
  %1061 = load i64, ptr %19, align 8, !tbaa !11
  %1062 = getelementptr inbounds ptr, ptr %1060, i64 %1061
  %1063 = load ptr, ptr %1062, align 8, !tbaa !9
  %1064 = load i64, ptr %20, align 8, !tbaa !11
  %1065 = getelementptr inbounds double, ptr %1063, i64 %1064
  %1066 = load double, ptr %1065, align 8, !tbaa !13
  %1067 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %12, i32 0, i32 6
  %1068 = load ptr, ptr %1067, align 8, !tbaa !15
  %1069 = load i64, ptr %19, align 8, !tbaa !11
  %1070 = getelementptr inbounds ptr, ptr %1068, i64 %1069
  %1071 = load ptr, ptr %1070, align 8, !tbaa !9
  %1072 = load i64, ptr %20, align 8, !tbaa !11
  %1073 = load i64, ptr %17, align 8, !tbaa !11
  %1074 = add nsw i64 %1072, %1073
  %1075 = getelementptr inbounds double, ptr %1071, i64 %1074
  %1076 = load double, ptr %1075, align 8, !tbaa !13
  %1077 = fsub double %1066, %1076
  %1078 = load ptr, ptr %4, align 8, !tbaa !9
  %1079 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1077, ptr noundef %1078)
  %1080 = load double, ptr %25, align 8, !tbaa !13
  %1081 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1079, double noundef %1080)
  br label %1082

1082:                                             ; preds = %1058, %1055
  %1083 = phi i1 [ true, %1055 ], [ %1081, %1058 ]
  %1084 = zext i1 %1083 to i8
  store i8 %1084, ptr %34, align 1, !tbaa !5
  br label %1085

1085:                                             ; preds = %1082
  %1086 = load i64, ptr %20, align 8, !tbaa !11
  %1087 = add nsw i64 %1086, 1
  store i64 %1087, ptr %20, align 8, !tbaa !11
  br label %1050, !llvm.loop !38

1088:                                             ; preds = %1050
  br label %1089

1089:                                             ; preds = %1088
  %1090 = load i64, ptr %19, align 8, !tbaa !11
  %1091 = add nsw i64 %1090, 1
  store i64 %1091, ptr %19, align 8, !tbaa !11
  br label %1044, !llvm.loop !39

1092:                                             ; preds = %1044
  %1093 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %10, ptr noundef %1093)
  %1094 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %11, ptr noundef %1094)
  %1095 = load i64, ptr %17, align 8, !tbaa !11
  %1096 = sub nsw i64 %1095, 1
  %1097 = add nsw i64 %1096, 1
  %1098 = load i64, ptr %17, align 8, !tbaa !11
  %1099 = sub nsw i64 %1098, 1
  %1100 = add nsw i64 %1099, 1
  %1101 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %10, i64 noundef %1097, i64 noundef %1100, ptr noundef %1101)
  %1102 = load i64, ptr %17, align 8, !tbaa !11
  %1103 = sub nsw i64 %1102, 1
  %1104 = add nsw i64 %1103, 1
  %1105 = load i64, ptr %17, align 8, !tbaa !11
  %1106 = sub nsw i64 %1105, 1
  %1107 = add nsw i64 %1106, 1
  %1108 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %11, i64 noundef %1104, i64 noundef %1107, ptr noundef %1108)
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %1109

1109:                                             ; preds = %1173, %1092
  %1110 = load i64, ptr %19, align 8, !tbaa !11
  %1111 = load i64, ptr %17, align 8, !tbaa !11
  %1112 = sub nsw i64 %1111, 1
  %1113 = icmp sle i64 %1110, %1112
  br i1 %1113, label %1114, label %1176

1114:                                             ; preds = %1109
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %1115

1115:                                             ; preds = %1145, %1114
  %1116 = load i64, ptr %20, align 8, !tbaa !11
  %1117 = load i64, ptr %17, align 8, !tbaa !11
  %1118 = sub nsw i64 %1117, 1
  %1119 = icmp sle i64 %1116, %1118
  br i1 %1119, label %1120, label %1148

1120:                                             ; preds = %1115
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #6
  %1121 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 0)
  %1122 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 0
  %1123 = extractvalue { double, double } %1121, 0
  store double %1123, ptr %1122, align 8
  %1124 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 1
  %1125 = extractvalue { double, double } %1121, 1
  store double %1125, ptr %1124, align 8
  %1126 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %1127 = load ptr, ptr %1126, align 8, !tbaa !15
  %1128 = load i64, ptr %19, align 8, !tbaa !11
  %1129 = getelementptr inbounds ptr, ptr %1127, i64 %1128
  %1130 = load ptr, ptr %1129, align 8, !tbaa !9
  %1131 = load i64, ptr %20, align 8, !tbaa !11
  %1132 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1130, i64 %1131
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1132, ptr align 8 %48, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #6
  %1133 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 0)
  %1134 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 0
  %1135 = extractvalue { double, double } %1133, 0
  store double %1135, ptr %1134, align 8
  %1136 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 1
  %1137 = extractvalue { double, double } %1133, 1
  store double %1137, ptr %1136, align 8
  %1138 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %1139 = load ptr, ptr %1138, align 8, !tbaa !15
  %1140 = load i64, ptr %19, align 8, !tbaa !11
  %1141 = getelementptr inbounds ptr, ptr %1139, i64 %1140
  %1142 = load ptr, ptr %1141, align 8, !tbaa !9
  %1143 = load i64, ptr %20, align 8, !tbaa !11
  %1144 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1142, i64 %1143
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1144, ptr align 8 %49, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #6
  br label %1145

1145:                                             ; preds = %1120
  %1146 = load i64, ptr %20, align 8, !tbaa !11
  %1147 = add nsw i64 %1146, 1
  store i64 %1147, ptr %20, align 8, !tbaa !11
  br label %1115, !llvm.loop !40

1148:                                             ; preds = %1115
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #6
  %1149 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 1)
  %1150 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 0
  %1151 = extractvalue { double, double } %1149, 0
  store double %1151, ptr %1150, align 8
  %1152 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 1
  %1153 = extractvalue { double, double } %1149, 1
  store double %1153, ptr %1152, align 8
  %1154 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %1155 = load ptr, ptr %1154, align 8, !tbaa !15
  %1156 = load i64, ptr %19, align 8, !tbaa !11
  %1157 = getelementptr inbounds ptr, ptr %1155, i64 %1156
  %1158 = load ptr, ptr %1157, align 8, !tbaa !9
  %1159 = load i64, ptr %19, align 8, !tbaa !11
  %1160 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1158, i64 %1159
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1160, ptr align 8 %50, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #6
  %1161 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 1)
  %1162 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 0
  %1163 = extractvalue { double, double } %1161, 0
  store double %1163, ptr %1162, align 8
  %1164 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 1
  %1165 = extractvalue { double, double } %1161, 1
  store double %1165, ptr %1164, align 8
  %1166 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %1167 = load ptr, ptr %1166, align 8, !tbaa !15
  %1168 = load i64, ptr %19, align 8, !tbaa !11
  %1169 = getelementptr inbounds ptr, ptr %1167, i64 %1168
  %1170 = load ptr, ptr %1169, align 8, !tbaa !9
  %1171 = load i64, ptr %19, align 8, !tbaa !11
  %1172 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1170, i64 %1171
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1172, ptr align 8 %51, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #6
  br label %1173

1173:                                             ; preds = %1148
  %1174 = load i64, ptr %19, align 8, !tbaa !11
  %1175 = add nsw i64 %1174, 1
  store i64 %1175, ptr %19, align 8, !tbaa !11
  br label %1109, !llvm.loop !41

1176:                                             ; preds = %1109
  %1177 = load i64, ptr %17, align 8, !tbaa !11
  %1178 = load i64, ptr %17, align 8, !tbaa !11
  %1179 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl32cmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %10, i64 noundef %1177, i64 noundef %1178, ptr noundef %1179)
  %1180 = load i64, ptr %17, align 8, !tbaa !11
  %1181 = load i64, ptr %17, align 8, !tbaa !11
  %1182 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl32cmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %11, i64 noundef %1180, i64 noundef %1181, ptr noundef %1182)
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %1183

1183:                                             ; preds = %1354, %1176
  %1184 = load i64, ptr %19, align 8, !tbaa !11
  %1185 = load i64, ptr %17, align 8, !tbaa !11
  %1186 = sub nsw i64 %1185, 1
  %1187 = icmp sle i64 %1184, %1186
  br i1 %1187, label %1188, label %1357

1188:                                             ; preds = %1183
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %1189

1189:                                             ; preds = %1350, %1188
  %1190 = load i64, ptr %20, align 8, !tbaa !11
  %1191 = load i64, ptr %17, align 8, !tbaa !11
  %1192 = sub nsw i64 %1191, 1
  %1193 = icmp sle i64 %1190, %1192
  br i1 %1193, label %1194, label %1353

1194:                                             ; preds = %1189
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #6
  %1195 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %1196 = load ptr, ptr %1195, align 8, !tbaa !15
  %1197 = load i64, ptr %19, align 8, !tbaa !11
  %1198 = getelementptr inbounds ptr, ptr %1196, i64 %1197
  %1199 = load ptr, ptr %1198, align 8, !tbaa !9
  %1200 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1199, i64 0
  %1201 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %1202 = load ptr, ptr %1201, align 8, !tbaa !15
  %1203 = load i64, ptr %20, align 8, !tbaa !11
  %1204 = getelementptr inbounds ptr, ptr %1202, i64 %1203
  %1205 = load ptr, ptr %1204, align 8, !tbaa !9
  %1206 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1205, i64 0
  %1207 = load i64, ptr %17, align 8, !tbaa !11
  %1208 = sub nsw i64 %1207, 1
  %1209 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1208)
  %1210 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %1200, i64 noundef 1, ptr noundef @.str.191, ptr noundef %1206, i64 noundef 1, ptr noundef @.str.190, i64 noundef %1209)
  %1211 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 0
  %1212 = extractvalue { double, double } %1210, 0
  store double %1212, ptr %1211, align 8
  %1213 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 1
  %1214 = extractvalue { double, double } %1210, 1
  store double %1214, ptr %1213, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %27, ptr align 8 %52, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #6
  %1215 = load i64, ptr %19, align 8, !tbaa !11
  %1216 = load i64, ptr %20, align 8, !tbaa !11
  %1217 = icmp eq i64 %1215, %1216
  br i1 %1217, label %1218, label %1242

1218:                                             ; preds = %1194
  %1219 = load i8, ptr %35, align 1, !tbaa !5, !range !16, !noundef !17
  %1220 = trunc i8 %1219 to i1
  br i1 %1220, label %1239, label %1221

1221:                                             ; preds = %1218
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %54, ptr align 8 %27, i64 16, i1 false), !tbaa.struct !21
  %1222 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 0
  %1223 = load double, ptr %1222, align 8
  %1224 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 1
  %1225 = load double, ptr %1224, align 8
  %1226 = call { double, double } @_ZN11alglib_impl10ae_c_sub_dENS_10ae_complexEd(double %1223, double %1225, double noundef 1.000000e+00)
  %1227 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 0
  %1228 = extractvalue { double, double } %1226, 0
  store double %1228, ptr %1227, align 8
  %1229 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 1
  %1230 = extractvalue { double, double } %1226, 1
  store double %1230, ptr %1229, align 8
  %1231 = load ptr, ptr %4, align 8, !tbaa !9
  %1232 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 0
  %1233 = load double, ptr %1232, align 8
  %1234 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 1
  %1235 = load double, ptr %1234, align 8
  %1236 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %1233, double %1235, ptr noundef %1231)
  %1237 = load double, ptr %25, align 8, !tbaa !13
  %1238 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1236, double noundef %1237)
  br label %1239

1239:                                             ; preds = %1221, %1218
  %1240 = phi i1 [ true, %1218 ], [ %1238, %1221 ]
  %1241 = zext i1 %1240 to i8
  store i8 %1241, ptr %35, align 1, !tbaa !5
  br label %1257

1242:                                             ; preds = %1194
  %1243 = load i8, ptr %35, align 1, !tbaa !5, !range !16, !noundef !17
  %1244 = trunc i8 %1243 to i1
  br i1 %1244, label %1254, label %1245

1245:                                             ; preds = %1242
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %55, ptr align 8 %27, i64 16, i1 false), !tbaa.struct !21
  %1246 = load ptr, ptr %4, align 8, !tbaa !9
  %1247 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 0
  %1248 = load double, ptr %1247, align 8
  %1249 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 1
  %1250 = load double, ptr %1249, align 8
  %1251 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %1248, double %1250, ptr noundef %1246)
  %1252 = load double, ptr %25, align 8, !tbaa !13
  %1253 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1251, double noundef %1252)
  br label %1254

1254:                                             ; preds = %1245, %1242
  %1255 = phi i1 [ true, %1242 ], [ %1253, %1245 ]
  %1256 = zext i1 %1255 to i8
  store i8 %1256, ptr %35, align 1, !tbaa !5
  br label %1257

1257:                                             ; preds = %1254, %1239
  call void @llvm.lifetime.start.p0(i64 16, ptr %56) #6
  %1258 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %1259 = load ptr, ptr %1258, align 8, !tbaa !15
  %1260 = load i64, ptr %19, align 8, !tbaa !11
  %1261 = getelementptr inbounds ptr, ptr %1259, i64 %1260
  %1262 = load ptr, ptr %1261, align 8, !tbaa !9
  %1263 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1262, i64 0
  %1264 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %1265 = load ptr, ptr %1264, align 8, !tbaa !15
  %1266 = load i64, ptr %20, align 8, !tbaa !11
  %1267 = getelementptr inbounds ptr, ptr %1265, i64 %1266
  %1268 = load ptr, ptr %1267, align 8, !tbaa !9
  %1269 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1268, i64 0
  %1270 = load i64, ptr %17, align 8, !tbaa !11
  %1271 = sub nsw i64 %1270, 1
  %1272 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1271)
  %1273 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %1263, i64 noundef 1, ptr noundef @.str.191, ptr noundef %1269, i64 noundef 1, ptr noundef @.str.190, i64 noundef %1272)
  %1274 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 0
  %1275 = extractvalue { double, double } %1273, 0
  store double %1275, ptr %1274, align 8
  %1276 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 1
  %1277 = extractvalue { double, double } %1273, 1
  store double %1277, ptr %1276, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %27, ptr align 8 %56, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #6
  %1278 = load i64, ptr %19, align 8, !tbaa !11
  %1279 = load i64, ptr %20, align 8, !tbaa !11
  %1280 = icmp eq i64 %1278, %1279
  br i1 %1280, label %1281, label %1305

1281:                                             ; preds = %1257
  %1282 = load i8, ptr %35, align 1, !tbaa !5, !range !16, !noundef !17
  %1283 = trunc i8 %1282 to i1
  br i1 %1283, label %1302, label %1284

1284:                                             ; preds = %1281
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %58, ptr align 8 %27, i64 16, i1 false), !tbaa.struct !21
  %1285 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 0
  %1286 = load double, ptr %1285, align 8
  %1287 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 1
  %1288 = load double, ptr %1287, align 8
  %1289 = call { double, double } @_ZN11alglib_impl10ae_c_sub_dENS_10ae_complexEd(double %1286, double %1288, double noundef 1.000000e+00)
  %1290 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 0
  %1291 = extractvalue { double, double } %1289, 0
  store double %1291, ptr %1290, align 8
  %1292 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 1
  %1293 = extractvalue { double, double } %1289, 1
  store double %1293, ptr %1292, align 8
  %1294 = load ptr, ptr %4, align 8, !tbaa !9
  %1295 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 0
  %1296 = load double, ptr %1295, align 8
  %1297 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 1
  %1298 = load double, ptr %1297, align 8
  %1299 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %1296, double %1298, ptr noundef %1294)
  %1300 = load double, ptr %25, align 8, !tbaa !13
  %1301 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1299, double noundef %1300)
  br label %1302

1302:                                             ; preds = %1284, %1281
  %1303 = phi i1 [ true, %1281 ], [ %1301, %1284 ]
  %1304 = zext i1 %1303 to i8
  store i8 %1304, ptr %35, align 1, !tbaa !5
  br label %1320

1305:                                             ; preds = %1257
  %1306 = load i8, ptr %35, align 1, !tbaa !5, !range !16, !noundef !17
  %1307 = trunc i8 %1306 to i1
  br i1 %1307, label %1317, label %1308

1308:                                             ; preds = %1305
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %59, ptr align 8 %27, i64 16, i1 false), !tbaa.struct !21
  %1309 = load ptr, ptr %4, align 8, !tbaa !9
  %1310 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 0
  %1311 = load double, ptr %1310, align 8
  %1312 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 1
  %1313 = load double, ptr %1312, align 8
  %1314 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %1311, double %1313, ptr noundef %1309)
  %1315 = load double, ptr %25, align 8, !tbaa !13
  %1316 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1314, double noundef %1315)
  br label %1317

1317:                                             ; preds = %1308, %1305
  %1318 = phi i1 [ true, %1305 ], [ %1316, %1308 ]
  %1319 = zext i1 %1318 to i8
  store i8 %1319, ptr %35, align 1, !tbaa !5
  br label %1320

1320:                                             ; preds = %1317, %1302
  %1321 = load i8, ptr %35, align 1, !tbaa !5, !range !16, !noundef !17
  %1322 = trunc i8 %1321 to i1
  br i1 %1322, label %1347, label %1323

1323:                                             ; preds = %1320
  %1324 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %1325 = load ptr, ptr %1324, align 8, !tbaa !15
  %1326 = load i64, ptr %19, align 8, !tbaa !11
  %1327 = getelementptr inbounds ptr, ptr %1325, i64 %1326
  %1328 = load ptr, ptr %1327, align 8, !tbaa !9
  %1329 = load i64, ptr %20, align 8, !tbaa !11
  %1330 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1328, i64 %1329
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %60, ptr align 8 %1330, i64 16, i1 false), !tbaa.struct !21
  %1331 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %1332 = load ptr, ptr %1331, align 8, !tbaa !15
  %1333 = load i64, ptr %19, align 8, !tbaa !11
  %1334 = getelementptr inbounds ptr, ptr %1332, i64 %1333
  %1335 = load ptr, ptr %1334, align 8, !tbaa !9
  %1336 = load i64, ptr %20, align 8, !tbaa !11
  %1337 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1335, i64 %1336
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %61, ptr align 8 %1337, i64 16, i1 false), !tbaa.struct !21
  %1338 = getelementptr inbounds { double, double }, ptr %60, i32 0, i32 0
  %1339 = load double, ptr %1338, align 8
  %1340 = getelementptr inbounds { double, double }, ptr %60, i32 0, i32 1
  %1341 = load double, ptr %1340, align 8
  %1342 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 0
  %1343 = load double, ptr %1342, align 8
  %1344 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 1
  %1345 = load double, ptr %1344, align 8
  %1346 = call noundef zeroext i1 @_ZN11alglib_impl7ae_c_eqENS_10ae_complexES0_(double %1339, double %1341, double %1343, double %1345)
  br label %1347

1347:                                             ; preds = %1323, %1320
  %1348 = phi i1 [ true, %1320 ], [ %1346, %1323 ]
  %1349 = zext i1 %1348 to i8
  store i8 %1349, ptr %35, align 1, !tbaa !5
  br label %1350

1350:                                             ; preds = %1347
  %1351 = load i64, ptr %20, align 8, !tbaa !11
  %1352 = add nsw i64 %1351, 1
  store i64 %1352, ptr %20, align 8, !tbaa !11
  br label %1189, !llvm.loop !42

1353:                                             ; preds = %1189
  br label %1354

1354:                                             ; preds = %1353
  %1355 = load i64, ptr %19, align 8, !tbaa !11
  %1356 = add nsw i64 %1355, 1
  store i64 %1356, ptr %19, align 8, !tbaa !11
  br label %1183, !llvm.loop !43

1357:                                             ; preds = %1183
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %1358

1358:                                             ; preds = %1405, %1357
  %1359 = load i64, ptr %19, align 8, !tbaa !11
  %1360 = load i64, ptr %17, align 8, !tbaa !11
  %1361 = sub nsw i64 %1360, 1
  %1362 = icmp sle i64 %1359, %1361
  br i1 %1362, label %1363, label %1408

1363:                                             ; preds = %1358
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %1364

1364:                                             ; preds = %1401, %1363
  %1365 = load i64, ptr %20, align 8, !tbaa !11
  %1366 = load i64, ptr %17, align 8, !tbaa !11
  %1367 = sub nsw i64 %1366, 1
  %1368 = icmp sle i64 %1365, %1367
  br i1 %1368, label %1369, label %1404

1369:                                             ; preds = %1364
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #6
  %1370 = load ptr, ptr %4, align 8, !tbaa !9
  %1371 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1370)
  %1372 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %1371, double -1.000000e+00)
  %1373 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef %1372)
  %1374 = getelementptr inbounds { double, double }, ptr %62, i32 0, i32 0
  %1375 = extractvalue { double, double } %1373, 0
  store double %1375, ptr %1374, align 8
  %1376 = getelementptr inbounds { double, double }, ptr %62, i32 0, i32 1
  %1377 = extractvalue { double, double } %1373, 1
  store double %1377, ptr %1376, align 8
  %1378 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %15, i32 0, i32 6
  %1379 = load ptr, ptr %1378, align 8, !tbaa !15
  %1380 = load i64, ptr %19, align 8, !tbaa !11
  %1381 = getelementptr inbounds ptr, ptr %1379, i64 %1380
  %1382 = load ptr, ptr %1381, align 8, !tbaa !9
  %1383 = load i64, ptr %20, align 8, !tbaa !11
  %1384 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1382, i64 %1383
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1384, ptr align 8 %62, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #6
  %1385 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %15, i32 0, i32 6
  %1386 = load ptr, ptr %1385, align 8, !tbaa !15
  %1387 = load i64, ptr %19, align 8, !tbaa !11
  %1388 = getelementptr inbounds ptr, ptr %1386, i64 %1387
  %1389 = load ptr, ptr %1388, align 8, !tbaa !9
  %1390 = load i64, ptr %20, align 8, !tbaa !11
  %1391 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1389, i64 %1390
  %1392 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %15, i32 0, i32 6
  %1393 = load ptr, ptr %1392, align 8, !tbaa !15
  %1394 = load i64, ptr %19, align 8, !tbaa !11
  %1395 = load i64, ptr %17, align 8, !tbaa !11
  %1396 = add nsw i64 %1394, %1395
  %1397 = getelementptr inbounds ptr, ptr %1393, i64 %1396
  %1398 = load ptr, ptr %1397, align 8, !tbaa !9
  %1399 = load i64, ptr %20, align 8, !tbaa !11
  %1400 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1398, i64 %1399
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1400, ptr align 8 %1391, i64 16, i1 false), !tbaa.struct !21
  br label %1401

1401:                                             ; preds = %1369
  %1402 = load i64, ptr %20, align 8, !tbaa !11
  %1403 = add nsw i64 %1402, 1
  store i64 %1403, ptr %20, align 8, !tbaa !11
  br label %1364, !llvm.loop !44

1404:                                             ; preds = %1364
  br label %1405

1405:                                             ; preds = %1404
  %1406 = load i64, ptr %19, align 8, !tbaa !11
  %1407 = add nsw i64 %1406, 1
  store i64 %1407, ptr %19, align 8, !tbaa !11
  br label %1358, !llvm.loop !45

1408:                                             ; preds = %1358
  %1409 = load i64, ptr %17, align 8, !tbaa !11
  %1410 = mul nsw i64 2, %1409
  %1411 = load i64, ptr %17, align 8, !tbaa !11
  %1412 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl32cmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %15, i64 noundef %1410, i64 noundef %1411, ptr noundef %1412)
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %1413

1413:                                             ; preds = %1472, %1408
  %1414 = load i64, ptr %19, align 8, !tbaa !11
  %1415 = load i64, ptr %17, align 8, !tbaa !11
  %1416 = sub nsw i64 %1415, 1
  %1417 = icmp sle i64 %1414, %1416
  br i1 %1417, label %1418, label %1475

1418:                                             ; preds = %1413
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %1419

1419:                                             ; preds = %1468, %1418
  %1420 = load i64, ptr %20, align 8, !tbaa !11
  %1421 = load i64, ptr %17, align 8, !tbaa !11
  %1422 = sub nsw i64 %1421, 1
  %1423 = icmp sle i64 %1420, %1422
  br i1 %1423, label %1424, label %1471

1424:                                             ; preds = %1419
  %1425 = load i8, ptr %35, align 1, !tbaa !5, !range !16, !noundef !17
  %1426 = trunc i8 %1425 to i1
  br i1 %1426, label %1465, label %1427

1427:                                             ; preds = %1424
  %1428 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %15, i32 0, i32 6
  %1429 = load ptr, ptr %1428, align 8, !tbaa !15
  %1430 = load i64, ptr %19, align 8, !tbaa !11
  %1431 = load i64, ptr %17, align 8, !tbaa !11
  %1432 = add nsw i64 %1430, %1431
  %1433 = getelementptr inbounds ptr, ptr %1429, i64 %1432
  %1434 = load ptr, ptr %1433, align 8, !tbaa !9
  %1435 = load i64, ptr %20, align 8, !tbaa !11
  %1436 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1434, i64 %1435
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %64, ptr align 8 %1436, i64 16, i1 false), !tbaa.struct !21
  %1437 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %15, i32 0, i32 6
  %1438 = load ptr, ptr %1437, align 8, !tbaa !15
  %1439 = load i64, ptr %19, align 8, !tbaa !11
  %1440 = getelementptr inbounds ptr, ptr %1438, i64 %1439
  %1441 = load ptr, ptr %1440, align 8, !tbaa !9
  %1442 = load i64, ptr %20, align 8, !tbaa !11
  %1443 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1441, i64 %1442
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %65, ptr align 8 %1443, i64 16, i1 false), !tbaa.struct !21
  %1444 = getelementptr inbounds { double, double }, ptr %64, i32 0, i32 0
  %1445 = load double, ptr %1444, align 8
  %1446 = getelementptr inbounds { double, double }, ptr %64, i32 0, i32 1
  %1447 = load double, ptr %1446, align 8
  %1448 = getelementptr inbounds { double, double }, ptr %65, i32 0, i32 0
  %1449 = load double, ptr %1448, align 8
  %1450 = getelementptr inbounds { double, double }, ptr %65, i32 0, i32 1
  %1451 = load double, ptr %1450, align 8
  %1452 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %1445, double %1447, double %1449, double %1451)
  %1453 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 0
  %1454 = extractvalue { double, double } %1452, 0
  store double %1454, ptr %1453, align 8
  %1455 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 1
  %1456 = extractvalue { double, double } %1452, 1
  store double %1456, ptr %1455, align 8
  %1457 = load ptr, ptr %4, align 8, !tbaa !9
  %1458 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 0
  %1459 = load double, ptr %1458, align 8
  %1460 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 1
  %1461 = load double, ptr %1460, align 8
  %1462 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %1459, double %1461, ptr noundef %1457)
  %1463 = load double, ptr %25, align 8, !tbaa !13
  %1464 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1462, double noundef %1463)
  br label %1465

1465:                                             ; preds = %1427, %1424
  %1466 = phi i1 [ true, %1424 ], [ %1464, %1427 ]
  %1467 = zext i1 %1466 to i8
  store i8 %1467, ptr %35, align 1, !tbaa !5
  br label %1468

1468:                                             ; preds = %1465
  %1469 = load i64, ptr %20, align 8, !tbaa !11
  %1470 = add nsw i64 %1469, 1
  store i64 %1470, ptr %20, align 8, !tbaa !11
  br label %1419, !llvm.loop !46

1471:                                             ; preds = %1419
  br label %1472

1472:                                             ; preds = %1471
  %1473 = load i64, ptr %19, align 8, !tbaa !11
  %1474 = add nsw i64 %1473, 1
  store i64 %1474, ptr %19, align 8, !tbaa !11
  br label %1413, !llvm.loop !47

1475:                                             ; preds = %1413
  %1476 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %10, ptr noundef %1476)
  %1477 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %11, ptr noundef %1477)
  %1478 = load i64, ptr %17, align 8, !tbaa !11
  %1479 = sub nsw i64 %1478, 1
  %1480 = add nsw i64 %1479, 1
  %1481 = load i64, ptr %17, align 8, !tbaa !11
  %1482 = sub nsw i64 %1481, 1
  %1483 = add nsw i64 %1482, 1
  %1484 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %10, i64 noundef %1480, i64 noundef %1483, ptr noundef %1484)
  %1485 = load i64, ptr %17, align 8, !tbaa !11
  %1486 = sub nsw i64 %1485, 1
  %1487 = add nsw i64 %1486, 1
  %1488 = load i64, ptr %17, align 8, !tbaa !11
  %1489 = sub nsw i64 %1488, 1
  %1490 = add nsw i64 %1489, 1
  %1491 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %11, i64 noundef %1487, i64 noundef %1490, ptr noundef %1491)
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %1492

1492:                                             ; preds = %1556, %1475
  %1493 = load i64, ptr %19, align 8, !tbaa !11
  %1494 = load i64, ptr %17, align 8, !tbaa !11
  %1495 = sub nsw i64 %1494, 1
  %1496 = icmp sle i64 %1493, %1495
  br i1 %1496, label %1497, label %1559

1497:                                             ; preds = %1492
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %1498

1498:                                             ; preds = %1528, %1497
  %1499 = load i64, ptr %20, align 8, !tbaa !11
  %1500 = load i64, ptr %17, align 8, !tbaa !11
  %1501 = sub nsw i64 %1500, 1
  %1502 = icmp sle i64 %1499, %1501
  br i1 %1502, label %1503, label %1531

1503:                                             ; preds = %1498
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #6
  %1504 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 0)
  %1505 = getelementptr inbounds { double, double }, ptr %66, i32 0, i32 0
  %1506 = extractvalue { double, double } %1504, 0
  store double %1506, ptr %1505, align 8
  %1507 = getelementptr inbounds { double, double }, ptr %66, i32 0, i32 1
  %1508 = extractvalue { double, double } %1504, 1
  store double %1508, ptr %1507, align 8
  %1509 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %1510 = load ptr, ptr %1509, align 8, !tbaa !15
  %1511 = load i64, ptr %19, align 8, !tbaa !11
  %1512 = getelementptr inbounds ptr, ptr %1510, i64 %1511
  %1513 = load ptr, ptr %1512, align 8, !tbaa !9
  %1514 = load i64, ptr %20, align 8, !tbaa !11
  %1515 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1513, i64 %1514
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1515, ptr align 8 %66, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #6
  %1516 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 0)
  %1517 = getelementptr inbounds { double, double }, ptr %67, i32 0, i32 0
  %1518 = extractvalue { double, double } %1516, 0
  store double %1518, ptr %1517, align 8
  %1519 = getelementptr inbounds { double, double }, ptr %67, i32 0, i32 1
  %1520 = extractvalue { double, double } %1516, 1
  store double %1520, ptr %1519, align 8
  %1521 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %1522 = load ptr, ptr %1521, align 8, !tbaa !15
  %1523 = load i64, ptr %19, align 8, !tbaa !11
  %1524 = getelementptr inbounds ptr, ptr %1522, i64 %1523
  %1525 = load ptr, ptr %1524, align 8, !tbaa !9
  %1526 = load i64, ptr %20, align 8, !tbaa !11
  %1527 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1525, i64 %1526
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1527, ptr align 8 %67, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #6
  br label %1528

1528:                                             ; preds = %1503
  %1529 = load i64, ptr %20, align 8, !tbaa !11
  %1530 = add nsw i64 %1529, 1
  store i64 %1530, ptr %20, align 8, !tbaa !11
  br label %1498, !llvm.loop !48

1531:                                             ; preds = %1498
  call void @llvm.lifetime.start.p0(i64 16, ptr %68) #6
  %1532 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 1)
  %1533 = getelementptr inbounds { double, double }, ptr %68, i32 0, i32 0
  %1534 = extractvalue { double, double } %1532, 0
  store double %1534, ptr %1533, align 8
  %1535 = getelementptr inbounds { double, double }, ptr %68, i32 0, i32 1
  %1536 = extractvalue { double, double } %1532, 1
  store double %1536, ptr %1535, align 8
  %1537 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %1538 = load ptr, ptr %1537, align 8, !tbaa !15
  %1539 = load i64, ptr %19, align 8, !tbaa !11
  %1540 = getelementptr inbounds ptr, ptr %1538, i64 %1539
  %1541 = load ptr, ptr %1540, align 8, !tbaa !9
  %1542 = load i64, ptr %19, align 8, !tbaa !11
  %1543 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1541, i64 %1542
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1543, ptr align 8 %68, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #6
  %1544 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 1)
  %1545 = getelementptr inbounds { double, double }, ptr %69, i32 0, i32 0
  %1546 = extractvalue { double, double } %1544, 0
  store double %1546, ptr %1545, align 8
  %1547 = getelementptr inbounds { double, double }, ptr %69, i32 0, i32 1
  %1548 = extractvalue { double, double } %1544, 1
  store double %1548, ptr %1547, align 8
  %1549 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %1550 = load ptr, ptr %1549, align 8, !tbaa !15
  %1551 = load i64, ptr %19, align 8, !tbaa !11
  %1552 = getelementptr inbounds ptr, ptr %1550, i64 %1551
  %1553 = load ptr, ptr %1552, align 8, !tbaa !9
  %1554 = load i64, ptr %19, align 8, !tbaa !11
  %1555 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1553, i64 %1554
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1555, ptr align 8 %69, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #6
  br label %1556

1556:                                             ; preds = %1531
  %1557 = load i64, ptr %19, align 8, !tbaa !11
  %1558 = add nsw i64 %1557, 1
  store i64 %1558, ptr %19, align 8, !tbaa !11
  br label %1492, !llvm.loop !49

1559:                                             ; preds = %1492
  %1560 = load i64, ptr %17, align 8, !tbaa !11
  %1561 = load i64, ptr %17, align 8, !tbaa !11
  %1562 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl31cmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %10, i64 noundef %1560, i64 noundef %1561, ptr noundef %1562)
  %1563 = load i64, ptr %17, align 8, !tbaa !11
  %1564 = load i64, ptr %17, align 8, !tbaa !11
  %1565 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl31cmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %11, i64 noundef %1563, i64 noundef %1564, ptr noundef %1565)
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %1566

1566:                                             ; preds = %1737, %1559
  %1567 = load i64, ptr %19, align 8, !tbaa !11
  %1568 = load i64, ptr %17, align 8, !tbaa !11
  %1569 = sub nsw i64 %1568, 1
  %1570 = icmp sle i64 %1567, %1569
  br i1 %1570, label %1571, label %1740

1571:                                             ; preds = %1566
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %1572

1572:                                             ; preds = %1733, %1571
  %1573 = load i64, ptr %20, align 8, !tbaa !11
  %1574 = load i64, ptr %17, align 8, !tbaa !11
  %1575 = sub nsw i64 %1574, 1
  %1576 = icmp sle i64 %1573, %1575
  br i1 %1576, label %1577, label %1736

1577:                                             ; preds = %1572
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #6
  %1578 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %1579 = load ptr, ptr %1578, align 8, !tbaa !15
  %1580 = load i64, ptr %19, align 8, !tbaa !11
  %1581 = getelementptr inbounds ptr, ptr %1579, i64 %1580
  %1582 = load ptr, ptr %1581, align 8, !tbaa !9
  %1583 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1582, i64 0
  %1584 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %1585 = load ptr, ptr %1584, align 8, !tbaa !15
  %1586 = load i64, ptr %20, align 8, !tbaa !11
  %1587 = getelementptr inbounds ptr, ptr %1585, i64 %1586
  %1588 = load ptr, ptr %1587, align 8, !tbaa !9
  %1589 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1588, i64 0
  %1590 = load i64, ptr %17, align 8, !tbaa !11
  %1591 = sub nsw i64 %1590, 1
  %1592 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1591)
  %1593 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %1583, i64 noundef 1, ptr noundef @.str.191, ptr noundef %1589, i64 noundef 1, ptr noundef @.str.190, i64 noundef %1592)
  %1594 = getelementptr inbounds { double, double }, ptr %70, i32 0, i32 0
  %1595 = extractvalue { double, double } %1593, 0
  store double %1595, ptr %1594, align 8
  %1596 = getelementptr inbounds { double, double }, ptr %70, i32 0, i32 1
  %1597 = extractvalue { double, double } %1593, 1
  store double %1597, ptr %1596, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %27, ptr align 8 %70, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #6
  %1598 = load i64, ptr %19, align 8, !tbaa !11
  %1599 = load i64, ptr %20, align 8, !tbaa !11
  %1600 = icmp eq i64 %1598, %1599
  br i1 %1600, label %1601, label %1625

1601:                                             ; preds = %1577
  %1602 = load i8, ptr %35, align 1, !tbaa !5, !range !16, !noundef !17
  %1603 = trunc i8 %1602 to i1
  br i1 %1603, label %1622, label %1604

1604:                                             ; preds = %1601
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %72, ptr align 8 %27, i64 16, i1 false), !tbaa.struct !21
  %1605 = getelementptr inbounds { double, double }, ptr %72, i32 0, i32 0
  %1606 = load double, ptr %1605, align 8
  %1607 = getelementptr inbounds { double, double }, ptr %72, i32 0, i32 1
  %1608 = load double, ptr %1607, align 8
  %1609 = call { double, double } @_ZN11alglib_impl10ae_c_sub_dENS_10ae_complexEd(double %1606, double %1608, double noundef 1.000000e+00)
  %1610 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 0
  %1611 = extractvalue { double, double } %1609, 0
  store double %1611, ptr %1610, align 8
  %1612 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 1
  %1613 = extractvalue { double, double } %1609, 1
  store double %1613, ptr %1612, align 8
  %1614 = load ptr, ptr %4, align 8, !tbaa !9
  %1615 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 0
  %1616 = load double, ptr %1615, align 8
  %1617 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 1
  %1618 = load double, ptr %1617, align 8
  %1619 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %1616, double %1618, ptr noundef %1614)
  %1620 = load double, ptr %25, align 8, !tbaa !13
  %1621 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1619, double noundef %1620)
  br label %1622

1622:                                             ; preds = %1604, %1601
  %1623 = phi i1 [ true, %1601 ], [ %1621, %1604 ]
  %1624 = zext i1 %1623 to i8
  store i8 %1624, ptr %35, align 1, !tbaa !5
  br label %1640

1625:                                             ; preds = %1577
  %1626 = load i8, ptr %35, align 1, !tbaa !5, !range !16, !noundef !17
  %1627 = trunc i8 %1626 to i1
  br i1 %1627, label %1637, label %1628

1628:                                             ; preds = %1625
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %73, ptr align 8 %27, i64 16, i1 false), !tbaa.struct !21
  %1629 = load ptr, ptr %4, align 8, !tbaa !9
  %1630 = getelementptr inbounds { double, double }, ptr %73, i32 0, i32 0
  %1631 = load double, ptr %1630, align 8
  %1632 = getelementptr inbounds { double, double }, ptr %73, i32 0, i32 1
  %1633 = load double, ptr %1632, align 8
  %1634 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %1631, double %1633, ptr noundef %1629)
  %1635 = load double, ptr %25, align 8, !tbaa !13
  %1636 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1634, double noundef %1635)
  br label %1637

1637:                                             ; preds = %1628, %1625
  %1638 = phi i1 [ true, %1625 ], [ %1636, %1628 ]
  %1639 = zext i1 %1638 to i8
  store i8 %1639, ptr %35, align 1, !tbaa !5
  br label %1640

1640:                                             ; preds = %1637, %1622
  call void @llvm.lifetime.start.p0(i64 16, ptr %74) #6
  %1641 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %1642 = load ptr, ptr %1641, align 8, !tbaa !15
  %1643 = load i64, ptr %19, align 8, !tbaa !11
  %1644 = getelementptr inbounds ptr, ptr %1642, i64 %1643
  %1645 = load ptr, ptr %1644, align 8, !tbaa !9
  %1646 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1645, i64 0
  %1647 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %1648 = load ptr, ptr %1647, align 8, !tbaa !15
  %1649 = load i64, ptr %20, align 8, !tbaa !11
  %1650 = getelementptr inbounds ptr, ptr %1648, i64 %1649
  %1651 = load ptr, ptr %1650, align 8, !tbaa !9
  %1652 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1651, i64 0
  %1653 = load i64, ptr %17, align 8, !tbaa !11
  %1654 = sub nsw i64 %1653, 1
  %1655 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %1654)
  %1656 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %1646, i64 noundef 1, ptr noundef @.str.191, ptr noundef %1652, i64 noundef 1, ptr noundef @.str.190, i64 noundef %1655)
  %1657 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 0
  %1658 = extractvalue { double, double } %1656, 0
  store double %1658, ptr %1657, align 8
  %1659 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 1
  %1660 = extractvalue { double, double } %1656, 1
  store double %1660, ptr %1659, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %27, ptr align 8 %74, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %74) #6
  %1661 = load i64, ptr %19, align 8, !tbaa !11
  %1662 = load i64, ptr %20, align 8, !tbaa !11
  %1663 = icmp eq i64 %1661, %1662
  br i1 %1663, label %1664, label %1688

1664:                                             ; preds = %1640
  %1665 = load i8, ptr %35, align 1, !tbaa !5, !range !16, !noundef !17
  %1666 = trunc i8 %1665 to i1
  br i1 %1666, label %1685, label %1667

1667:                                             ; preds = %1664
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %76, ptr align 8 %27, i64 16, i1 false), !tbaa.struct !21
  %1668 = getelementptr inbounds { double, double }, ptr %76, i32 0, i32 0
  %1669 = load double, ptr %1668, align 8
  %1670 = getelementptr inbounds { double, double }, ptr %76, i32 0, i32 1
  %1671 = load double, ptr %1670, align 8
  %1672 = call { double, double } @_ZN11alglib_impl10ae_c_sub_dENS_10ae_complexEd(double %1669, double %1671, double noundef 1.000000e+00)
  %1673 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 0
  %1674 = extractvalue { double, double } %1672, 0
  store double %1674, ptr %1673, align 8
  %1675 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 1
  %1676 = extractvalue { double, double } %1672, 1
  store double %1676, ptr %1675, align 8
  %1677 = load ptr, ptr %4, align 8, !tbaa !9
  %1678 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 0
  %1679 = load double, ptr %1678, align 8
  %1680 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 1
  %1681 = load double, ptr %1680, align 8
  %1682 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %1679, double %1681, ptr noundef %1677)
  %1683 = load double, ptr %25, align 8, !tbaa !13
  %1684 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1682, double noundef %1683)
  br label %1685

1685:                                             ; preds = %1667, %1664
  %1686 = phi i1 [ true, %1664 ], [ %1684, %1667 ]
  %1687 = zext i1 %1686 to i8
  store i8 %1687, ptr %35, align 1, !tbaa !5
  br label %1703

1688:                                             ; preds = %1640
  %1689 = load i8, ptr %35, align 1, !tbaa !5, !range !16, !noundef !17
  %1690 = trunc i8 %1689 to i1
  br i1 %1690, label %1700, label %1691

1691:                                             ; preds = %1688
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %77, ptr align 8 %27, i64 16, i1 false), !tbaa.struct !21
  %1692 = load ptr, ptr %4, align 8, !tbaa !9
  %1693 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 0
  %1694 = load double, ptr %1693, align 8
  %1695 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 1
  %1696 = load double, ptr %1695, align 8
  %1697 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %1694, double %1696, ptr noundef %1692)
  %1698 = load double, ptr %25, align 8, !tbaa !13
  %1699 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1697, double noundef %1698)
  br label %1700

1700:                                             ; preds = %1691, %1688
  %1701 = phi i1 [ true, %1688 ], [ %1699, %1691 ]
  %1702 = zext i1 %1701 to i8
  store i8 %1702, ptr %35, align 1, !tbaa !5
  br label %1703

1703:                                             ; preds = %1700, %1685
  %1704 = load i8, ptr %35, align 1, !tbaa !5, !range !16, !noundef !17
  %1705 = trunc i8 %1704 to i1
  br i1 %1705, label %1730, label %1706

1706:                                             ; preds = %1703
  %1707 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %1708 = load ptr, ptr %1707, align 8, !tbaa !15
  %1709 = load i64, ptr %19, align 8, !tbaa !11
  %1710 = getelementptr inbounds ptr, ptr %1708, i64 %1709
  %1711 = load ptr, ptr %1710, align 8, !tbaa !9
  %1712 = load i64, ptr %20, align 8, !tbaa !11
  %1713 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1711, i64 %1712
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %78, ptr align 8 %1713, i64 16, i1 false), !tbaa.struct !21
  %1714 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %1715 = load ptr, ptr %1714, align 8, !tbaa !15
  %1716 = load i64, ptr %19, align 8, !tbaa !11
  %1717 = getelementptr inbounds ptr, ptr %1715, i64 %1716
  %1718 = load ptr, ptr %1717, align 8, !tbaa !9
  %1719 = load i64, ptr %20, align 8, !tbaa !11
  %1720 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1718, i64 %1719
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %79, ptr align 8 %1720, i64 16, i1 false), !tbaa.struct !21
  %1721 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 0
  %1722 = load double, ptr %1721, align 8
  %1723 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 1
  %1724 = load double, ptr %1723, align 8
  %1725 = getelementptr inbounds { double, double }, ptr %79, i32 0, i32 0
  %1726 = load double, ptr %1725, align 8
  %1727 = getelementptr inbounds { double, double }, ptr %79, i32 0, i32 1
  %1728 = load double, ptr %1727, align 8
  %1729 = call noundef zeroext i1 @_ZN11alglib_impl7ae_c_eqENS_10ae_complexES0_(double %1722, double %1724, double %1726, double %1728)
  br label %1730

1730:                                             ; preds = %1706, %1703
  %1731 = phi i1 [ true, %1703 ], [ %1729, %1706 ]
  %1732 = zext i1 %1731 to i8
  store i8 %1732, ptr %35, align 1, !tbaa !5
  br label %1733

1733:                                             ; preds = %1730
  %1734 = load i64, ptr %20, align 8, !tbaa !11
  %1735 = add nsw i64 %1734, 1
  store i64 %1735, ptr %20, align 8, !tbaa !11
  br label %1572, !llvm.loop !50

1736:                                             ; preds = %1572
  br label %1737

1737:                                             ; preds = %1736
  %1738 = load i64, ptr %19, align 8, !tbaa !11
  %1739 = add nsw i64 %1738, 1
  store i64 %1739, ptr %19, align 8, !tbaa !11
  br label %1566, !llvm.loop !51

1740:                                             ; preds = %1566
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %1741

1741:                                             ; preds = %1788, %1740
  %1742 = load i64, ptr %19, align 8, !tbaa !11
  %1743 = load i64, ptr %17, align 8, !tbaa !11
  %1744 = sub nsw i64 %1743, 1
  %1745 = icmp sle i64 %1742, %1744
  br i1 %1745, label %1746, label %1791

1746:                                             ; preds = %1741
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %1747

1747:                                             ; preds = %1784, %1746
  %1748 = load i64, ptr %20, align 8, !tbaa !11
  %1749 = load i64, ptr %17, align 8, !tbaa !11
  %1750 = sub nsw i64 %1749, 1
  %1751 = icmp sle i64 %1748, %1750
  br i1 %1751, label %1752, label %1787

1752:                                             ; preds = %1747
  call void @llvm.lifetime.start.p0(i64 16, ptr %80) #6
  %1753 = load ptr, ptr %4, align 8, !tbaa !9
  %1754 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1753)
  %1755 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %1754, double -1.000000e+00)
  %1756 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef %1755)
  %1757 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 0
  %1758 = extractvalue { double, double } %1756, 0
  store double %1758, ptr %1757, align 8
  %1759 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 1
  %1760 = extractvalue { double, double } %1756, 1
  store double %1760, ptr %1759, align 8
  %1761 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %14, i32 0, i32 6
  %1762 = load ptr, ptr %1761, align 8, !tbaa !15
  %1763 = load i64, ptr %19, align 8, !tbaa !11
  %1764 = getelementptr inbounds ptr, ptr %1762, i64 %1763
  %1765 = load ptr, ptr %1764, align 8, !tbaa !9
  %1766 = load i64, ptr %20, align 8, !tbaa !11
  %1767 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1765, i64 %1766
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1767, ptr align 8 %80, i64 16, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #6
  %1768 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %14, i32 0, i32 6
  %1769 = load ptr, ptr %1768, align 8, !tbaa !15
  %1770 = load i64, ptr %19, align 8, !tbaa !11
  %1771 = getelementptr inbounds ptr, ptr %1769, i64 %1770
  %1772 = load ptr, ptr %1771, align 8, !tbaa !9
  %1773 = load i64, ptr %20, align 8, !tbaa !11
  %1774 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1772, i64 %1773
  %1775 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %14, i32 0, i32 6
  %1776 = load ptr, ptr %1775, align 8, !tbaa !15
  %1777 = load i64, ptr %19, align 8, !tbaa !11
  %1778 = getelementptr inbounds ptr, ptr %1776, i64 %1777
  %1779 = load ptr, ptr %1778, align 8, !tbaa !9
  %1780 = load i64, ptr %20, align 8, !tbaa !11
  %1781 = load i64, ptr %17, align 8, !tbaa !11
  %1782 = add nsw i64 %1780, %1781
  %1783 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1779, i64 %1782
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1783, ptr align 8 %1774, i64 16, i1 false), !tbaa.struct !21
  br label %1784

1784:                                             ; preds = %1752
  %1785 = load i64, ptr %20, align 8, !tbaa !11
  %1786 = add nsw i64 %1785, 1
  store i64 %1786, ptr %20, align 8, !tbaa !11
  br label %1747, !llvm.loop !52

1787:                                             ; preds = %1747
  br label %1788

1788:                                             ; preds = %1787
  %1789 = load i64, ptr %19, align 8, !tbaa !11
  %1790 = add nsw i64 %1789, 1
  store i64 %1790, ptr %19, align 8, !tbaa !11
  br label %1741, !llvm.loop !53

1791:                                             ; preds = %1741
  %1792 = load i64, ptr %17, align 8, !tbaa !11
  %1793 = load i64, ptr %17, align 8, !tbaa !11
  %1794 = mul nsw i64 2, %1793
  %1795 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl31cmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %14, i64 noundef %1792, i64 noundef %1794, ptr noundef %1795)
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %1796

1796:                                             ; preds = %1855, %1791
  %1797 = load i64, ptr %19, align 8, !tbaa !11
  %1798 = load i64, ptr %17, align 8, !tbaa !11
  %1799 = sub nsw i64 %1798, 1
  %1800 = icmp sle i64 %1797, %1799
  br i1 %1800, label %1801, label %1858

1801:                                             ; preds = %1796
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %1802

1802:                                             ; preds = %1851, %1801
  %1803 = load i64, ptr %20, align 8, !tbaa !11
  %1804 = load i64, ptr %17, align 8, !tbaa !11
  %1805 = sub nsw i64 %1804, 1
  %1806 = icmp sle i64 %1803, %1805
  br i1 %1806, label %1807, label %1854

1807:                                             ; preds = %1802
  %1808 = load i8, ptr %35, align 1, !tbaa !5, !range !16, !noundef !17
  %1809 = trunc i8 %1808 to i1
  br i1 %1809, label %1848, label %1810

1810:                                             ; preds = %1807
  %1811 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %14, i32 0, i32 6
  %1812 = load ptr, ptr %1811, align 8, !tbaa !15
  %1813 = load i64, ptr %19, align 8, !tbaa !11
  %1814 = getelementptr inbounds ptr, ptr %1812, i64 %1813
  %1815 = load ptr, ptr %1814, align 8, !tbaa !9
  %1816 = load i64, ptr %20, align 8, !tbaa !11
  %1817 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1815, i64 %1816
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %82, ptr align 8 %1817, i64 16, i1 false), !tbaa.struct !21
  %1818 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %14, i32 0, i32 6
  %1819 = load ptr, ptr %1818, align 8, !tbaa !15
  %1820 = load i64, ptr %19, align 8, !tbaa !11
  %1821 = getelementptr inbounds ptr, ptr %1819, i64 %1820
  %1822 = load ptr, ptr %1821, align 8, !tbaa !9
  %1823 = load i64, ptr %20, align 8, !tbaa !11
  %1824 = load i64, ptr %17, align 8, !tbaa !11
  %1825 = add nsw i64 %1823, %1824
  %1826 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %1822, i64 %1825
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %83, ptr align 8 %1826, i64 16, i1 false), !tbaa.struct !21
  %1827 = getelementptr inbounds { double, double }, ptr %82, i32 0, i32 0
  %1828 = load double, ptr %1827, align 8
  %1829 = getelementptr inbounds { double, double }, ptr %82, i32 0, i32 1
  %1830 = load double, ptr %1829, align 8
  %1831 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 0
  %1832 = load double, ptr %1831, align 8
  %1833 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 1
  %1834 = load double, ptr %1833, align 8
  %1835 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %1828, double %1830, double %1832, double %1834)
  %1836 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 0
  %1837 = extractvalue { double, double } %1835, 0
  store double %1837, ptr %1836, align 8
  %1838 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 1
  %1839 = extractvalue { double, double } %1835, 1
  store double %1839, ptr %1838, align 8
  %1840 = load ptr, ptr %4, align 8, !tbaa !9
  %1841 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 0
  %1842 = load double, ptr %1841, align 8
  %1843 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 1
  %1844 = load double, ptr %1843, align 8
  %1845 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %1842, double %1844, ptr noundef %1840)
  %1846 = load double, ptr %25, align 8, !tbaa !13
  %1847 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1845, double noundef %1846)
  br label %1848

1848:                                             ; preds = %1810, %1807
  %1849 = phi i1 [ true, %1807 ], [ %1847, %1810 ]
  %1850 = zext i1 %1849 to i8
  store i8 %1850, ptr %35, align 1, !tbaa !5
  br label %1851

1851:                                             ; preds = %1848
  %1852 = load i64, ptr %20, align 8, !tbaa !11
  %1853 = add nsw i64 %1852, 1
  store i64 %1853, ptr %20, align 8, !tbaa !11
  br label %1802, !llvm.loop !54

1854:                                             ; preds = %1802
  br label %1855

1855:                                             ; preds = %1854
  %1856 = load i64, ptr %19, align 8, !tbaa !11
  %1857 = add nsw i64 %1856, 1
  store i64 %1857, ptr %19, align 8, !tbaa !11
  br label %1796, !llvm.loop !55

1858:                                             ; preds = %1796
  br label %1859

1859:                                             ; preds = %1858
  %1860 = load i64, ptr %21, align 8, !tbaa !11
  %1861 = add nsw i64 %1860, 1
  store i64 %1861, ptr %21, align 8, !tbaa !11
  br label %114, !llvm.loop !56

1862:                                             ; preds = %114
  br label %1863

1863:                                             ; preds = %1862
  %1864 = load i64, ptr %17, align 8, !tbaa !11
  %1865 = add nsw i64 %1864, 1
  store i64 %1865, ptr %17, align 8, !tbaa !11
  br label %109, !llvm.loop !57

1866:                                             ; preds = %109
  store i64 2, ptr %17, align 8, !tbaa !11
  br label %1867

1867:                                             ; preds = %2000, %1866
  %1868 = load i64, ptr %17, align 8, !tbaa !11
  %1869 = load i64, ptr %18, align 8, !tbaa !11
  %1870 = icmp sle i64 %1868, %1869
  br i1 %1870, label %1871, label %2003

1871:                                             ; preds = %1867
  store i64 1, ptr %21, align 8, !tbaa !11
  br label %1872

1872:                                             ; preds = %1996, %1871
  %1873 = load i64, ptr %21, align 8, !tbaa !11
  %1874 = load i64, ptr %22, align 8, !tbaa !11
  %1875 = icmp sle i64 %1873, %1874
  br i1 %1875, label %1876, label %1999

1876:                                             ; preds = %1872
  %1877 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %6, ptr noundef %1877)
  %1878 = load ptr, ptr %4, align 8, !tbaa !9
  %1879 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000000e+03, ptr noundef %1878)
  %1880 = load ptr, ptr %4, align 8, !tbaa !9
  %1881 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1880)
  %1882 = fmul double %1879, %1881
  %1883 = load ptr, ptr %4, align 8, !tbaa !9
  %1884 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %1882, ptr noundef %1883)
  store double %1884, ptr %24, align 8, !tbaa !13
  %1885 = load i64, ptr %17, align 8, !tbaa !11
  %1886 = load double, ptr %24, align 8, !tbaa !13
  %1887 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14rmatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %1885, double noundef %1886, ptr noundef %6, ptr noundef %1887)
  %1888 = load i64, ptr %17, align 8, !tbaa !11
  %1889 = add nsw i64 %1888, 1
  %1890 = load i64, ptr %17, align 8, !tbaa !11
  %1891 = add nsw i64 %1890, 1
  %1892 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %7, i64 noundef %1889, i64 noundef %1891, ptr noundef %1892)
  store i64 1, ptr %19, align 8, !tbaa !11
  br label %1893

1893:                                             ; preds = %1924, %1876
  %1894 = load i64, ptr %19, align 8, !tbaa !11
  %1895 = load i64, ptr %17, align 8, !tbaa !11
  %1896 = icmp sle i64 %1894, %1895
  br i1 %1896, label %1897, label %1927

1897:                                             ; preds = %1893
  store i64 1, ptr %20, align 8, !tbaa !11
  br label %1898

1898:                                             ; preds = %1920, %1897
  %1899 = load i64, ptr %20, align 8, !tbaa !11
  %1900 = load i64, ptr %17, align 8, !tbaa !11
  %1901 = icmp sle i64 %1899, %1900
  br i1 %1901, label %1902, label %1923

1902:                                             ; preds = %1898
  %1903 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %1904 = load ptr, ptr %1903, align 8, !tbaa !15
  %1905 = load i64, ptr %19, align 8, !tbaa !11
  %1906 = sub nsw i64 %1905, 1
  %1907 = getelementptr inbounds ptr, ptr %1904, i64 %1906
  %1908 = load ptr, ptr %1907, align 8, !tbaa !9
  %1909 = load i64, ptr %20, align 8, !tbaa !11
  %1910 = sub nsw i64 %1909, 1
  %1911 = getelementptr inbounds double, ptr %1908, i64 %1910
  %1912 = load double, ptr %1911, align 8, !tbaa !13
  %1913 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %1914 = load ptr, ptr %1913, align 8, !tbaa !15
  %1915 = load i64, ptr %19, align 8, !tbaa !11
  %1916 = getelementptr inbounds ptr, ptr %1914, i64 %1915
  %1917 = load ptr, ptr %1916, align 8, !tbaa !9
  %1918 = load i64, ptr %20, align 8, !tbaa !11
  %1919 = getelementptr inbounds double, ptr %1917, i64 %1918
  store double %1912, ptr %1919, align 8, !tbaa !13
  br label %1920

1920:                                             ; preds = %1902
  %1921 = load i64, ptr %20, align 8, !tbaa !11
  %1922 = add nsw i64 %1921, 1
  store i64 %1922, ptr %20, align 8, !tbaa !11
  br label %1898, !llvm.loop !58

1923:                                             ; preds = %1898
  br label %1924

1924:                                             ; preds = %1923
  %1925 = load i64, ptr %19, align 8, !tbaa !11
  %1926 = add nsw i64 %1925, 1
  store i64 %1926, ptr %19, align 8, !tbaa !11
  br label %1893, !llvm.loop !59

1927:                                             ; preds = %1893
  %1928 = load i64, ptr %17, align 8, !tbaa !11
  %1929 = load i64, ptr %17, align 8, !tbaa !11
  %1930 = load ptr, ptr %4, align 8, !tbaa !9
  %1931 = call noundef zeroext i1 @_ZL39testmatgenunit_obsoletesvddecompositionPN11alglib_impl9ae_matrixEllPNS_9ae_vectorES1_PNS_8ae_stateE(ptr noundef %7, i64 noundef %1928, i64 noundef %1929, ptr noundef %16, ptr noundef %9, ptr noundef %1930)
  br i1 %1931, label %1932, label %1995

1932:                                             ; preds = %1927
  %1933 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %1934 = load ptr, ptr %1933, align 8, !tbaa !15
  %1935 = getelementptr inbounds double, ptr %1934, i64 1
  %1936 = load double, ptr %1935, align 8, !tbaa !13
  store double %1936, ptr %29, align 8, !tbaa !13
  %1937 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %1938 = load ptr, ptr %1937, align 8, !tbaa !15
  %1939 = getelementptr inbounds double, ptr %1938, i64 1
  %1940 = load double, ptr %1939, align 8, !tbaa !13
  store double %1940, ptr %28, align 8, !tbaa !13
  store i64 2, ptr %19, align 8, !tbaa !11
  br label %1941

1941:                                             ; preds = %1974, %1932
  %1942 = load i64, ptr %19, align 8, !tbaa !11
  %1943 = load i64, ptr %17, align 8, !tbaa !11
  %1944 = icmp sle i64 %1942, %1943
  br i1 %1944, label %1945, label %1977

1945:                                             ; preds = %1941
  %1946 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %1947 = load ptr, ptr %1946, align 8, !tbaa !15
  %1948 = load i64, ptr %19, align 8, !tbaa !11
  %1949 = getelementptr inbounds double, ptr %1947, i64 %1948
  %1950 = load double, ptr %1949, align 8, !tbaa !13
  %1951 = load double, ptr %29, align 8, !tbaa !13
  %1952 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1950, double noundef %1951)
  br i1 %1952, label %1953, label %1959

1953:                                             ; preds = %1945
  %1954 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %1955 = load ptr, ptr %1954, align 8, !tbaa !15
  %1956 = load i64, ptr %19, align 8, !tbaa !11
  %1957 = getelementptr inbounds double, ptr %1955, i64 %1956
  %1958 = load double, ptr %1957, align 8, !tbaa !13
  store double %1958, ptr %29, align 8, !tbaa !13
  br label %1959

1959:                                             ; preds = %1953, %1945
  %1960 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %1961 = load ptr, ptr %1960, align 8, !tbaa !15
  %1962 = load i64, ptr %19, align 8, !tbaa !11
  %1963 = getelementptr inbounds double, ptr %1961, i64 %1962
  %1964 = load double, ptr %1963, align 8, !tbaa !13
  %1965 = load double, ptr %28, align 8, !tbaa !13
  %1966 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %1964, double noundef %1965)
  br i1 %1966, label %1967, label %1973

1967:                                             ; preds = %1959
  %1968 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %16, i32 0, i32 4
  %1969 = load ptr, ptr %1968, align 8, !tbaa !15
  %1970 = load i64, ptr %19, align 8, !tbaa !11
  %1971 = getelementptr inbounds double, ptr %1969, i64 %1970
  %1972 = load double, ptr %1971, align 8, !tbaa !13
  store double %1972, ptr %28, align 8, !tbaa !13
  br label %1973

1973:                                             ; preds = %1967, %1959
  br label %1974

1974:                                             ; preds = %1973
  %1975 = load i64, ptr %19, align 8, !tbaa !11
  %1976 = add nsw i64 %1975, 1
  store i64 %1976, ptr %19, align 8, !tbaa !11
  br label %1941, !llvm.loop !60

1977:                                             ; preds = %1941
  %1978 = load double, ptr %29, align 8, !tbaa !13
  %1979 = load double, ptr %28, align 8, !tbaa !13
  %1980 = fdiv double %1978, %1979
  %1981 = load double, ptr %24, align 8, !tbaa !13
  %1982 = fdiv double %1980, %1981
  store double %1982, ptr %26, align 8, !tbaa !13
  %1983 = load double, ptr %26, align 8, !tbaa !13
  %1984 = load ptr, ptr %4, align 8, !tbaa !9
  %1985 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %1983, ptr noundef %1984)
  %1986 = load ptr, ptr %4, align 8, !tbaa !9
  %1987 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %1985, ptr noundef %1986)
  %1988 = load double, ptr %25, align 8, !tbaa !13
  %1989 = fadd double 1.000000e+00, %1988
  %1990 = load ptr, ptr %4, align 8, !tbaa !9
  %1991 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %1989, ptr noundef %1990)
  %1992 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %1987, double noundef %1991)
  br i1 %1992, label %1993, label %1994

1993:                                             ; preds = %1977
  store i8 1, ptr %34, align 1, !tbaa !5
  br label %1994

1994:                                             ; preds = %1993, %1977
  br label %1995

1995:                                             ; preds = %1994, %1927
  br label %1996

1996:                                             ; preds = %1995
  %1997 = load i64, ptr %21, align 8, !tbaa !11
  %1998 = add nsw i64 %1997, 1
  store i64 %1998, ptr %21, align 8, !tbaa !11
  br label %1872, !llvm.loop !61

1999:                                             ; preds = %1872
  br label %2000

2000:                                             ; preds = %1999
  %2001 = load i64, ptr %17, align 8, !tbaa !11
  %2002 = add nsw i64 %2001, 1
  store i64 %2002, ptr %17, align 8, !tbaa !11
  br label %1867, !llvm.loop !62

2003:                                             ; preds = %1867
  store i64 2, ptr %17, align 8, !tbaa !11
  br label %2004

2004:                                             ; preds = %2542, %2003
  %2005 = load i64, ptr %17, align 8, !tbaa !11
  %2006 = load i64, ptr %18, align 8, !tbaa !11
  %2007 = icmp sle i64 %2005, %2006
  br i1 %2007, label %2008, label %2545

2008:                                             ; preds = %2004
  store i64 1, ptr %21, align 8, !tbaa !11
  br label %2009

2009:                                             ; preds = %2147, %2008
  %2010 = load i64, ptr %21, align 8, !tbaa !11
  %2011 = load i64, ptr %22, align 8, !tbaa !11
  %2012 = icmp sle i64 %2010, %2011
  br i1 %2012, label %2013, label %2150

2013:                                             ; preds = %2009
  %2014 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %6, ptr noundef %2014)
  %2015 = load ptr, ptr %4, align 8, !tbaa !9
  %2016 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000000e+03, ptr noundef %2015)
  %2017 = load ptr, ptr %4, align 8, !tbaa !9
  %2018 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %2017)
  %2019 = fmul double %2016, %2018
  %2020 = load ptr, ptr %4, align 8, !tbaa !9
  %2021 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %2019, ptr noundef %2020)
  store double %2021, ptr %24, align 8, !tbaa !13
  %2022 = load i64, ptr %17, align 8, !tbaa !11
  %2023 = load double, ptr %24, align 8, !tbaa !13
  %2024 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl16spdmatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %2022, double noundef %2023, ptr noundef %6, ptr noundef %2024)
  %2025 = load i8, ptr %32, align 1, !tbaa !5, !range !16, !noundef !17
  %2026 = trunc i8 %2025 to i1
  br i1 %2026, label %2036, label %2027

2027:                                             ; preds = %2013
  %2028 = load i64, ptr %17, align 8, !tbaa !11
  %2029 = load ptr, ptr %4, align 8, !tbaa !9
  %2030 = call noundef double @_ZL22testmatgenunit_svdcondPN11alglib_impl9ae_matrixElPNS_8ae_stateE(ptr noundef %6, i64 noundef %2028, ptr noundef %2029)
  %2031 = load double, ptr %24, align 8, !tbaa !13
  %2032 = fdiv double %2030, %2031
  %2033 = fsub double %2032, 1.000000e+00
  %2034 = load double, ptr %25, align 8, !tbaa !13
  %2035 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2033, double noundef %2034)
  br label %2036

2036:                                             ; preds = %2027, %2013
  %2037 = phi i1 [ true, %2013 ], [ %2035, %2027 ]
  %2038 = zext i1 %2037 to i8
  store i8 %2038, ptr %32, align 1, !tbaa !5
  %2039 = load i8, ptr %32, align 1, !tbaa !5, !range !16, !noundef !17
  %2040 = trunc i8 %2039 to i1
  br i1 %2040, label %2046, label %2041

2041:                                             ; preds = %2036
  %2042 = load i64, ptr %17, align 8, !tbaa !11
  %2043 = load ptr, ptr %4, align 8, !tbaa !9
  %2044 = call noundef zeroext i1 @_ZL20testmatgenunit_isspdPN11alglib_impl9ae_matrixElbPNS_8ae_stateE(ptr noundef %6, i64 noundef %2042, i1 noundef zeroext true, ptr noundef %2043)
  %2045 = xor i1 %2044, true
  br label %2046

2046:                                             ; preds = %2041, %2036
  %2047 = phi i1 [ true, %2036 ], [ %2045, %2041 ]
  %2048 = zext i1 %2047 to i8
  store i8 %2048, ptr %32, align 1, !tbaa !5
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %2049

2049:                                             ; preds = %2092, %2046
  %2050 = load i64, ptr %19, align 8, !tbaa !11
  %2051 = load i64, ptr %17, align 8, !tbaa !11
  %2052 = sub nsw i64 %2051, 1
  %2053 = icmp sle i64 %2050, %2052
  br i1 %2053, label %2054, label %2095

2054:                                             ; preds = %2049
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %2055

2055:                                             ; preds = %2088, %2054
  %2056 = load i64, ptr %20, align 8, !tbaa !11
  %2057 = load i64, ptr %17, align 8, !tbaa !11
  %2058 = sub nsw i64 %2057, 1
  %2059 = icmp sle i64 %2056, %2058
  br i1 %2059, label %2060, label %2091

2060:                                             ; preds = %2055
  %2061 = load i8, ptr %32, align 1, !tbaa !5, !range !16, !noundef !17
  %2062 = trunc i8 %2061 to i1
  br i1 %2062, label %2085, label %2063

2063:                                             ; preds = %2060
  %2064 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %2065 = load ptr, ptr %2064, align 8, !tbaa !15
  %2066 = load i64, ptr %19, align 8, !tbaa !11
  %2067 = getelementptr inbounds ptr, ptr %2065, i64 %2066
  %2068 = load ptr, ptr %2067, align 8, !tbaa !9
  %2069 = load i64, ptr %20, align 8, !tbaa !11
  %2070 = getelementptr inbounds double, ptr %2068, i64 %2069
  %2071 = load double, ptr %2070, align 8, !tbaa !13
  %2072 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %2073 = load ptr, ptr %2072, align 8, !tbaa !15
  %2074 = load i64, ptr %20, align 8, !tbaa !11
  %2075 = getelementptr inbounds ptr, ptr %2073, i64 %2074
  %2076 = load ptr, ptr %2075, align 8, !tbaa !9
  %2077 = load i64, ptr %19, align 8, !tbaa !11
  %2078 = getelementptr inbounds double, ptr %2076, i64 %2077
  %2079 = load double, ptr %2078, align 8, !tbaa !13
  %2080 = fsub double %2071, %2079
  %2081 = load ptr, ptr %4, align 8, !tbaa !9
  %2082 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %2080, ptr noundef %2081)
  %2083 = load double, ptr %25, align 8, !tbaa !13
  %2084 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2082, double noundef %2083)
  br label %2085

2085:                                             ; preds = %2063, %2060
  %2086 = phi i1 [ true, %2060 ], [ %2084, %2063 ]
  %2087 = zext i1 %2086 to i8
  store i8 %2087, ptr %32, align 1, !tbaa !5
  br label %2088

2088:                                             ; preds = %2085
  %2089 = load i64, ptr %20, align 8, !tbaa !11
  %2090 = add nsw i64 %2089, 1
  store i64 %2090, ptr %20, align 8, !tbaa !11
  br label %2055, !llvm.loop !63

2091:                                             ; preds = %2055
  br label %2092

2092:                                             ; preds = %2091
  %2093 = load i64, ptr %19, align 8, !tbaa !11
  %2094 = add nsw i64 %2093, 1
  store i64 %2094, ptr %19, align 8, !tbaa !11
  br label %2049, !llvm.loop !64

2095:                                             ; preds = %2049
  %2096 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %7, ptr noundef %2096)
  %2097 = load i64, ptr %17, align 8, !tbaa !11
  %2098 = load double, ptr %24, align 8, !tbaa !13
  %2099 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl16spdmatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %2097, double noundef %2098, ptr noundef %7, ptr noundef %2099)
  %2100 = load i64, ptr %17, align 8, !tbaa !11
  %2101 = icmp sge i64 %2100, 2
  br i1 %2101, label %2102, label %2146

2102:                                             ; preds = %2095
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %2103

2103:                                             ; preds = %2142, %2102
  %2104 = load i64, ptr %19, align 8, !tbaa !11
  %2105 = load i64, ptr %17, align 8, !tbaa !11
  %2106 = sub nsw i64 %2105, 1
  %2107 = icmp sle i64 %2104, %2106
  br i1 %2107, label %2108, label %2145

2108:                                             ; preds = %2103
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %2109

2109:                                             ; preds = %2138, %2108
  %2110 = load i64, ptr %20, align 8, !tbaa !11
  %2111 = load i64, ptr %17, align 8, !tbaa !11
  %2112 = sub nsw i64 %2111, 1
  %2113 = icmp sle i64 %2110, %2112
  br i1 %2113, label %2114, label %2141

2114:                                             ; preds = %2109
  %2115 = load i8, ptr %32, align 1, !tbaa !5, !range !16, !noundef !17
  %2116 = trunc i8 %2115 to i1
  br i1 %2116, label %2135, label %2117

2117:                                             ; preds = %2114
  %2118 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %2119 = load ptr, ptr %2118, align 8, !tbaa !15
  %2120 = load i64, ptr %19, align 8, !tbaa !11
  %2121 = getelementptr inbounds ptr, ptr %2119, i64 %2120
  %2122 = load ptr, ptr %2121, align 8, !tbaa !9
  %2123 = load i64, ptr %20, align 8, !tbaa !11
  %2124 = getelementptr inbounds double, ptr %2122, i64 %2123
  %2125 = load double, ptr %2124, align 8, !tbaa !13
  %2126 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %2127 = load ptr, ptr %2126, align 8, !tbaa !15
  %2128 = load i64, ptr %19, align 8, !tbaa !11
  %2129 = getelementptr inbounds ptr, ptr %2127, i64 %2128
  %2130 = load ptr, ptr %2129, align 8, !tbaa !9
  %2131 = load i64, ptr %20, align 8, !tbaa !11
  %2132 = getelementptr inbounds double, ptr %2130, i64 %2131
  %2133 = load double, ptr %2132, align 8, !tbaa !13
  %2134 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2125, double noundef %2133)
  br label %2135

2135:                                             ; preds = %2117, %2114
  %2136 = phi i1 [ true, %2114 ], [ %2134, %2117 ]
  %2137 = zext i1 %2136 to i8
  store i8 %2137, ptr %32, align 1, !tbaa !5
  br label %2138

2138:                                             ; preds = %2135
  %2139 = load i64, ptr %20, align 8, !tbaa !11
  %2140 = add nsw i64 %2139, 1
  store i64 %2140, ptr %20, align 8, !tbaa !11
  br label %2109, !llvm.loop !65

2141:                                             ; preds = %2109
  br label %2142

2142:                                             ; preds = %2141
  %2143 = load i64, ptr %19, align 8, !tbaa !11
  %2144 = add nsw i64 %2143, 1
  store i64 %2144, ptr %19, align 8, !tbaa !11
  br label %2103, !llvm.loop !66

2145:                                             ; preds = %2103
  br label %2146

2146:                                             ; preds = %2145, %2095
  br label %2147

2147:                                             ; preds = %2146
  %2148 = load i64, ptr %21, align 8, !tbaa !11
  %2149 = add nsw i64 %2148, 1
  store i64 %2149, ptr %21, align 8, !tbaa !11
  br label %2009, !llvm.loop !67

2150:                                             ; preds = %2009
  store i64 1, ptr %21, align 8, !tbaa !11
  br label %2151

2151:                                             ; preds = %2305, %2150
  %2152 = load i64, ptr %21, align 8, !tbaa !11
  %2153 = load i64, ptr %22, align 8, !tbaa !11
  %2154 = icmp sle i64 %2152, %2153
  br i1 %2154, label %2155, label %2308

2155:                                             ; preds = %2151
  %2156 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %10, ptr noundef %2156)
  %2157 = load ptr, ptr %4, align 8, !tbaa !9
  %2158 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000000e+03, ptr noundef %2157)
  %2159 = load ptr, ptr %4, align 8, !tbaa !9
  %2160 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %2159)
  %2161 = fmul double %2158, %2160
  %2162 = load ptr, ptr %4, align 8, !tbaa !9
  %2163 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %2161, ptr noundef %2162)
  store double %2163, ptr %24, align 8, !tbaa !13
  %2164 = load i64, ptr %17, align 8, !tbaa !11
  %2165 = load double, ptr %24, align 8, !tbaa !13
  %2166 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl16hpdmatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %2164, double noundef %2165, ptr noundef %10, ptr noundef %2166)
  %2167 = load i8, ptr %33, align 1, !tbaa !5, !range !16, !noundef !17
  %2168 = trunc i8 %2167 to i1
  br i1 %2168, label %2174, label %2169

2169:                                             ; preds = %2155
  %2170 = load i64, ptr %17, align 8, !tbaa !11
  %2171 = load ptr, ptr %4, align 8, !tbaa !9
  %2172 = call noundef zeroext i1 @_ZL20testmatgenunit_ishpdPN11alglib_impl9ae_matrixElPNS_8ae_stateE(ptr noundef %10, i64 noundef %2170, ptr noundef %2171)
  %2173 = xor i1 %2172, true
  br label %2174

2174:                                             ; preds = %2169, %2155
  %2175 = phi i1 [ true, %2155 ], [ %2173, %2169 ]
  %2176 = zext i1 %2175 to i8
  store i8 %2176, ptr %33, align 1, !tbaa !5
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %2177

2177:                                             ; preds = %2244, %2174
  %2178 = load i64, ptr %19, align 8, !tbaa !11
  %2179 = load i64, ptr %17, align 8, !tbaa !11
  %2180 = sub nsw i64 %2179, 1
  %2181 = icmp sle i64 %2178, %2180
  br i1 %2181, label %2182, label %2247

2182:                                             ; preds = %2177
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %2183

2183:                                             ; preds = %2240, %2182
  %2184 = load i64, ptr %20, align 8, !tbaa !11
  %2185 = load i64, ptr %17, align 8, !tbaa !11
  %2186 = sub nsw i64 %2185, 1
  %2187 = icmp sle i64 %2184, %2186
  br i1 %2187, label %2188, label %2243

2188:                                             ; preds = %2183
  %2189 = load i8, ptr %33, align 1, !tbaa !5, !range !16, !noundef !17
  %2190 = trunc i8 %2189 to i1
  br i1 %2190, label %2237, label %2191

2191:                                             ; preds = %2188
  %2192 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %2193 = load ptr, ptr %2192, align 8, !tbaa !15
  %2194 = load i64, ptr %19, align 8, !tbaa !11
  %2195 = getelementptr inbounds ptr, ptr %2193, i64 %2194
  %2196 = load ptr, ptr %2195, align 8, !tbaa !9
  %2197 = load i64, ptr %20, align 8, !tbaa !11
  %2198 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %2196, i64 %2197
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %85, ptr align 8 %2198, i64 16, i1 false), !tbaa.struct !21
  %2199 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %2200 = load ptr, ptr %2199, align 8, !tbaa !15
  %2201 = load i64, ptr %20, align 8, !tbaa !11
  %2202 = getelementptr inbounds ptr, ptr %2200, i64 %2201
  %2203 = load ptr, ptr %2202, align 8, !tbaa !9
  %2204 = load i64, ptr %19, align 8, !tbaa !11
  %2205 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %2203, i64 %2204
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %87, ptr align 8 %2205, i64 16, i1 false), !tbaa.struct !21
  %2206 = load ptr, ptr %4, align 8, !tbaa !9
  %2207 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 0
  %2208 = load double, ptr %2207, align 8
  %2209 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 1
  %2210 = load double, ptr %2209, align 8
  %2211 = call { double, double } @_ZN11alglib_impl9ae_c_conjENS_10ae_complexEPNS_8ae_stateE(double %2208, double %2210, ptr noundef %2206)
  %2212 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 0
  %2213 = extractvalue { double, double } %2211, 0
  store double %2213, ptr %2212, align 8
  %2214 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 1
  %2215 = extractvalue { double, double } %2211, 1
  store double %2215, ptr %2214, align 8
  %2216 = getelementptr inbounds { double, double }, ptr %85, i32 0, i32 0
  %2217 = load double, ptr %2216, align 8
  %2218 = getelementptr inbounds { double, double }, ptr %85, i32 0, i32 1
  %2219 = load double, ptr %2218, align 8
  %2220 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 0
  %2221 = load double, ptr %2220, align 8
  %2222 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 1
  %2223 = load double, ptr %2222, align 8
  %2224 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %2217, double %2219, double %2221, double %2223)
  %2225 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 0
  %2226 = extractvalue { double, double } %2224, 0
  store double %2226, ptr %2225, align 8
  %2227 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 1
  %2228 = extractvalue { double, double } %2224, 1
  store double %2228, ptr %2227, align 8
  %2229 = load ptr, ptr %4, align 8, !tbaa !9
  %2230 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 0
  %2231 = load double, ptr %2230, align 8
  %2232 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 1
  %2233 = load double, ptr %2232, align 8
  %2234 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %2231, double %2233, ptr noundef %2229)
  %2235 = load double, ptr %25, align 8, !tbaa !13
  %2236 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2234, double noundef %2235)
  br label %2237

2237:                                             ; preds = %2191, %2188
  %2238 = phi i1 [ true, %2188 ], [ %2236, %2191 ]
  %2239 = zext i1 %2238 to i8
  store i8 %2239, ptr %33, align 1, !tbaa !5
  br label %2240

2240:                                             ; preds = %2237
  %2241 = load i64, ptr %20, align 8, !tbaa !11
  %2242 = add nsw i64 %2241, 1
  store i64 %2242, ptr %20, align 8, !tbaa !11
  br label %2183, !llvm.loop !68

2243:                                             ; preds = %2183
  br label %2244

2244:                                             ; preds = %2243
  %2245 = load i64, ptr %19, align 8, !tbaa !11
  %2246 = add nsw i64 %2245, 1
  store i64 %2246, ptr %19, align 8, !tbaa !11
  br label %2177, !llvm.loop !69

2247:                                             ; preds = %2177
  %2248 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %11, ptr noundef %2248)
  %2249 = load i64, ptr %17, align 8, !tbaa !11
  %2250 = load double, ptr %24, align 8, !tbaa !13
  %2251 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl16hpdmatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %2249, double noundef %2250, ptr noundef %11, ptr noundef %2251)
  %2252 = load i64, ptr %17, align 8, !tbaa !11
  %2253 = icmp sge i64 %2252, 2
  br i1 %2253, label %2254, label %2304

2254:                                             ; preds = %2247
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %2255

2255:                                             ; preds = %2300, %2254
  %2256 = load i64, ptr %19, align 8, !tbaa !11
  %2257 = load i64, ptr %17, align 8, !tbaa !11
  %2258 = sub nsw i64 %2257, 1
  %2259 = icmp sle i64 %2256, %2258
  br i1 %2259, label %2260, label %2303

2260:                                             ; preds = %2255
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %2261

2261:                                             ; preds = %2296, %2260
  %2262 = load i64, ptr %20, align 8, !tbaa !11
  %2263 = load i64, ptr %17, align 8, !tbaa !11
  %2264 = sub nsw i64 %2263, 1
  %2265 = icmp sle i64 %2262, %2264
  br i1 %2265, label %2266, label %2299

2266:                                             ; preds = %2261
  %2267 = load i8, ptr %33, align 1, !tbaa !5, !range !16, !noundef !17
  %2268 = trunc i8 %2267 to i1
  br i1 %2268, label %2293, label %2269

2269:                                             ; preds = %2266
  %2270 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %2271 = load ptr, ptr %2270, align 8, !tbaa !15
  %2272 = load i64, ptr %19, align 8, !tbaa !11
  %2273 = getelementptr inbounds ptr, ptr %2271, i64 %2272
  %2274 = load ptr, ptr %2273, align 8, !tbaa !9
  %2275 = load i64, ptr %20, align 8, !tbaa !11
  %2276 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %2274, i64 %2275
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %88, ptr align 8 %2276, i64 16, i1 false), !tbaa.struct !21
  %2277 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %2278 = load ptr, ptr %2277, align 8, !tbaa !15
  %2279 = load i64, ptr %19, align 8, !tbaa !11
  %2280 = getelementptr inbounds ptr, ptr %2278, i64 %2279
  %2281 = load ptr, ptr %2280, align 8, !tbaa !9
  %2282 = load i64, ptr %20, align 8, !tbaa !11
  %2283 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %2281, i64 %2282
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %89, ptr align 8 %2283, i64 16, i1 false), !tbaa.struct !21
  %2284 = getelementptr inbounds { double, double }, ptr %88, i32 0, i32 0
  %2285 = load double, ptr %2284, align 8
  %2286 = getelementptr inbounds { double, double }, ptr %88, i32 0, i32 1
  %2287 = load double, ptr %2286, align 8
  %2288 = getelementptr inbounds { double, double }, ptr %89, i32 0, i32 0
  %2289 = load double, ptr %2288, align 8
  %2290 = getelementptr inbounds { double, double }, ptr %89, i32 0, i32 1
  %2291 = load double, ptr %2290, align 8
  %2292 = call noundef zeroext i1 @_ZN11alglib_impl7ae_c_eqENS_10ae_complexES0_(double %2285, double %2287, double %2289, double %2291)
  br label %2293

2293:                                             ; preds = %2269, %2266
  %2294 = phi i1 [ true, %2266 ], [ %2292, %2269 ]
  %2295 = zext i1 %2294 to i8
  store i8 %2295, ptr %33, align 1, !tbaa !5
  br label %2296

2296:                                             ; preds = %2293
  %2297 = load i64, ptr %20, align 8, !tbaa !11
  %2298 = add nsw i64 %2297, 1
  store i64 %2298, ptr %20, align 8, !tbaa !11
  br label %2261, !llvm.loop !70

2299:                                             ; preds = %2261
  br label %2300

2300:                                             ; preds = %2299
  %2301 = load i64, ptr %19, align 8, !tbaa !11
  %2302 = add nsw i64 %2301, 1
  store i64 %2302, ptr %19, align 8, !tbaa !11
  br label %2255, !llvm.loop !71

2303:                                             ; preds = %2255
  br label %2304

2304:                                             ; preds = %2303, %2247
  br label %2305

2305:                                             ; preds = %2304
  %2306 = load i64, ptr %21, align 8, !tbaa !11
  %2307 = add nsw i64 %2306, 1
  store i64 %2307, ptr %21, align 8, !tbaa !11
  br label %2151, !llvm.loop !72

2308:                                             ; preds = %2151
  store i64 1, ptr %21, align 8, !tbaa !11
  br label %2309

2309:                                             ; preds = %2390, %2308
  %2310 = load i64, ptr %21, align 8, !tbaa !11
  %2311 = load i64, ptr %22, align 8, !tbaa !11
  %2312 = icmp sle i64 %2310, %2311
  br i1 %2312, label %2313, label %2393

2313:                                             ; preds = %2309
  %2314 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %6, ptr noundef %2314)
  %2315 = load ptr, ptr %4, align 8, !tbaa !9
  %2316 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000000e+03, ptr noundef %2315)
  %2317 = load ptr, ptr %4, align 8, !tbaa !9
  %2318 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %2317)
  %2319 = fmul double %2316, %2318
  %2320 = load ptr, ptr %4, align 8, !tbaa !9
  %2321 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %2319, ptr noundef %2320)
  store double %2321, ptr %24, align 8, !tbaa !13
  %2322 = load i64, ptr %17, align 8, !tbaa !11
  %2323 = load double, ptr %24, align 8, !tbaa !13
  %2324 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14smatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %2322, double noundef %2323, ptr noundef %6, ptr noundef %2324)
  %2325 = load i8, ptr %30, align 1, !tbaa !5, !range !16, !noundef !17
  %2326 = trunc i8 %2325 to i1
  br i1 %2326, label %2336, label %2327

2327:                                             ; preds = %2313
  %2328 = load i64, ptr %17, align 8, !tbaa !11
  %2329 = load ptr, ptr %4, align 8, !tbaa !9
  %2330 = call noundef double @_ZL22testmatgenunit_svdcondPN11alglib_impl9ae_matrixElPNS_8ae_stateE(ptr noundef %6, i64 noundef %2328, ptr noundef %2329)
  %2331 = load double, ptr %24, align 8, !tbaa !13
  %2332 = fdiv double %2330, %2331
  %2333 = fsub double %2332, 1.000000e+00
  %2334 = load double, ptr %25, align 8, !tbaa !13
  %2335 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2333, double noundef %2334)
  br label %2336

2336:                                             ; preds = %2327, %2313
  %2337 = phi i1 [ true, %2313 ], [ %2335, %2327 ]
  %2338 = zext i1 %2337 to i8
  store i8 %2338, ptr %30, align 1, !tbaa !5
  %2339 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %7, ptr noundef %2339)
  %2340 = load i64, ptr %17, align 8, !tbaa !11
  %2341 = load double, ptr %24, align 8, !tbaa !13
  %2342 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14smatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %2340, double noundef %2341, ptr noundef %7, ptr noundef %2342)
  %2343 = load i64, ptr %17, align 8, !tbaa !11
  %2344 = icmp sge i64 %2343, 2
  br i1 %2344, label %2345, label %2389

2345:                                             ; preds = %2336
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %2346

2346:                                             ; preds = %2385, %2345
  %2347 = load i64, ptr %19, align 8, !tbaa !11
  %2348 = load i64, ptr %17, align 8, !tbaa !11
  %2349 = sub nsw i64 %2348, 1
  %2350 = icmp sle i64 %2347, %2349
  br i1 %2350, label %2351, label %2388

2351:                                             ; preds = %2346
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %2352

2352:                                             ; preds = %2381, %2351
  %2353 = load i64, ptr %20, align 8, !tbaa !11
  %2354 = load i64, ptr %17, align 8, !tbaa !11
  %2355 = sub nsw i64 %2354, 1
  %2356 = icmp sle i64 %2353, %2355
  br i1 %2356, label %2357, label %2384

2357:                                             ; preds = %2352
  %2358 = load i8, ptr %30, align 1, !tbaa !5, !range !16, !noundef !17
  %2359 = trunc i8 %2358 to i1
  br i1 %2359, label %2378, label %2360

2360:                                             ; preds = %2357
  %2361 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %6, i32 0, i32 6
  %2362 = load ptr, ptr %2361, align 8, !tbaa !15
  %2363 = load i64, ptr %19, align 8, !tbaa !11
  %2364 = getelementptr inbounds ptr, ptr %2362, i64 %2363
  %2365 = load ptr, ptr %2364, align 8, !tbaa !9
  %2366 = load i64, ptr %20, align 8, !tbaa !11
  %2367 = getelementptr inbounds double, ptr %2365, i64 %2366
  %2368 = load double, ptr %2367, align 8, !tbaa !13
  %2369 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %7, i32 0, i32 6
  %2370 = load ptr, ptr %2369, align 8, !tbaa !15
  %2371 = load i64, ptr %19, align 8, !tbaa !11
  %2372 = getelementptr inbounds ptr, ptr %2370, i64 %2371
  %2373 = load ptr, ptr %2372, align 8, !tbaa !9
  %2374 = load i64, ptr %20, align 8, !tbaa !11
  %2375 = getelementptr inbounds double, ptr %2373, i64 %2374
  %2376 = load double, ptr %2375, align 8, !tbaa !13
  %2377 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %2368, double noundef %2376)
  br label %2378

2378:                                             ; preds = %2360, %2357
  %2379 = phi i1 [ true, %2357 ], [ %2377, %2360 ]
  %2380 = zext i1 %2379 to i8
  store i8 %2380, ptr %30, align 1, !tbaa !5
  br label %2381

2381:                                             ; preds = %2378
  %2382 = load i64, ptr %20, align 8, !tbaa !11
  %2383 = add nsw i64 %2382, 1
  store i64 %2383, ptr %20, align 8, !tbaa !11
  br label %2352, !llvm.loop !73

2384:                                             ; preds = %2352
  br label %2385

2385:                                             ; preds = %2384
  %2386 = load i64, ptr %19, align 8, !tbaa !11
  %2387 = add nsw i64 %2386, 1
  store i64 %2387, ptr %19, align 8, !tbaa !11
  br label %2346, !llvm.loop !74

2388:                                             ; preds = %2346
  br label %2389

2389:                                             ; preds = %2388, %2336
  br label %2390

2390:                                             ; preds = %2389
  %2391 = load i64, ptr %21, align 8, !tbaa !11
  %2392 = add nsw i64 %2391, 1
  store i64 %2392, ptr %21, align 8, !tbaa !11
  br label %2309, !llvm.loop !75

2393:                                             ; preds = %2309
  store i64 1, ptr %21, align 8, !tbaa !11
  br label %2394

2394:                                             ; preds = %2538, %2393
  %2395 = load i64, ptr %21, align 8, !tbaa !11
  %2396 = load i64, ptr %22, align 8, !tbaa !11
  %2397 = icmp sle i64 %2395, %2396
  br i1 %2397, label %2398, label %2541

2398:                                             ; preds = %2394
  %2399 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %10, ptr noundef %2399)
  %2400 = load ptr, ptr %4, align 8, !tbaa !9
  %2401 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000000e+03, ptr noundef %2400)
  %2402 = load ptr, ptr %4, align 8, !tbaa !9
  %2403 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %2402)
  %2404 = fmul double %2401, %2403
  %2405 = load ptr, ptr %4, align 8, !tbaa !9
  %2406 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %2404, ptr noundef %2405)
  store double %2406, ptr %24, align 8, !tbaa !13
  %2407 = load i64, ptr %17, align 8, !tbaa !11
  %2408 = load double, ptr %24, align 8, !tbaa !13
  %2409 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14hmatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %2407, double noundef %2408, ptr noundef %10, ptr noundef %2409)
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %2410

2410:                                             ; preds = %2477, %2398
  %2411 = load i64, ptr %19, align 8, !tbaa !11
  %2412 = load i64, ptr %17, align 8, !tbaa !11
  %2413 = sub nsw i64 %2412, 1
  %2414 = icmp sle i64 %2411, %2413
  br i1 %2414, label %2415, label %2480

2415:                                             ; preds = %2410
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %2416

2416:                                             ; preds = %2473, %2415
  %2417 = load i64, ptr %20, align 8, !tbaa !11
  %2418 = load i64, ptr %17, align 8, !tbaa !11
  %2419 = sub nsw i64 %2418, 1
  %2420 = icmp sle i64 %2417, %2419
  br i1 %2420, label %2421, label %2476

2421:                                             ; preds = %2416
  %2422 = load i8, ptr %31, align 1, !tbaa !5, !range !16, !noundef !17
  %2423 = trunc i8 %2422 to i1
  br i1 %2423, label %2470, label %2424

2424:                                             ; preds = %2421
  %2425 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %2426 = load ptr, ptr %2425, align 8, !tbaa !15
  %2427 = load i64, ptr %19, align 8, !tbaa !11
  %2428 = getelementptr inbounds ptr, ptr %2426, i64 %2427
  %2429 = load ptr, ptr %2428, align 8, !tbaa !9
  %2430 = load i64, ptr %20, align 8, !tbaa !11
  %2431 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %2429, i64 %2430
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %91, ptr align 8 %2431, i64 16, i1 false), !tbaa.struct !21
  %2432 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %2433 = load ptr, ptr %2432, align 8, !tbaa !15
  %2434 = load i64, ptr %20, align 8, !tbaa !11
  %2435 = getelementptr inbounds ptr, ptr %2433, i64 %2434
  %2436 = load ptr, ptr %2435, align 8, !tbaa !9
  %2437 = load i64, ptr %19, align 8, !tbaa !11
  %2438 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %2436, i64 %2437
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %93, ptr align 8 %2438, i64 16, i1 false), !tbaa.struct !21
  %2439 = load ptr, ptr %4, align 8, !tbaa !9
  %2440 = getelementptr inbounds { double, double }, ptr %93, i32 0, i32 0
  %2441 = load double, ptr %2440, align 8
  %2442 = getelementptr inbounds { double, double }, ptr %93, i32 0, i32 1
  %2443 = load double, ptr %2442, align 8
  %2444 = call { double, double } @_ZN11alglib_impl9ae_c_conjENS_10ae_complexEPNS_8ae_stateE(double %2441, double %2443, ptr noundef %2439)
  %2445 = getelementptr inbounds { double, double }, ptr %92, i32 0, i32 0
  %2446 = extractvalue { double, double } %2444, 0
  store double %2446, ptr %2445, align 8
  %2447 = getelementptr inbounds { double, double }, ptr %92, i32 0, i32 1
  %2448 = extractvalue { double, double } %2444, 1
  store double %2448, ptr %2447, align 8
  %2449 = getelementptr inbounds { double, double }, ptr %91, i32 0, i32 0
  %2450 = load double, ptr %2449, align 8
  %2451 = getelementptr inbounds { double, double }, ptr %91, i32 0, i32 1
  %2452 = load double, ptr %2451, align 8
  %2453 = getelementptr inbounds { double, double }, ptr %92, i32 0, i32 0
  %2454 = load double, ptr %2453, align 8
  %2455 = getelementptr inbounds { double, double }, ptr %92, i32 0, i32 1
  %2456 = load double, ptr %2455, align 8
  %2457 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %2450, double %2452, double %2454, double %2456)
  %2458 = getelementptr inbounds { double, double }, ptr %90, i32 0, i32 0
  %2459 = extractvalue { double, double } %2457, 0
  store double %2459, ptr %2458, align 8
  %2460 = getelementptr inbounds { double, double }, ptr %90, i32 0, i32 1
  %2461 = extractvalue { double, double } %2457, 1
  store double %2461, ptr %2460, align 8
  %2462 = load ptr, ptr %4, align 8, !tbaa !9
  %2463 = getelementptr inbounds { double, double }, ptr %90, i32 0, i32 0
  %2464 = load double, ptr %2463, align 8
  %2465 = getelementptr inbounds { double, double }, ptr %90, i32 0, i32 1
  %2466 = load double, ptr %2465, align 8
  %2467 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %2464, double %2466, ptr noundef %2462)
  %2468 = load double, ptr %25, align 8, !tbaa !13
  %2469 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %2467, double noundef %2468)
  br label %2470

2470:                                             ; preds = %2424, %2421
  %2471 = phi i1 [ true, %2421 ], [ %2469, %2424 ]
  %2472 = zext i1 %2471 to i8
  store i8 %2472, ptr %31, align 1, !tbaa !5
  br label %2473

2473:                                             ; preds = %2470
  %2474 = load i64, ptr %20, align 8, !tbaa !11
  %2475 = add nsw i64 %2474, 1
  store i64 %2475, ptr %20, align 8, !tbaa !11
  br label %2416, !llvm.loop !76

2476:                                             ; preds = %2416
  br label %2477

2477:                                             ; preds = %2476
  %2478 = load i64, ptr %19, align 8, !tbaa !11
  %2479 = add nsw i64 %2478, 1
  store i64 %2479, ptr %19, align 8, !tbaa !11
  br label %2410, !llvm.loop !77

2480:                                             ; preds = %2410
  %2481 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef %11, ptr noundef %2481)
  %2482 = load i64, ptr %17, align 8, !tbaa !11
  %2483 = load double, ptr %24, align 8, !tbaa !13
  %2484 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14hmatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %2482, double noundef %2483, ptr noundef %11, ptr noundef %2484)
  %2485 = load i64, ptr %17, align 8, !tbaa !11
  %2486 = icmp sge i64 %2485, 2
  br i1 %2486, label %2487, label %2537

2487:                                             ; preds = %2480
  store i64 0, ptr %19, align 8, !tbaa !11
  br label %2488

2488:                                             ; preds = %2533, %2487
  %2489 = load i64, ptr %19, align 8, !tbaa !11
  %2490 = load i64, ptr %17, align 8, !tbaa !11
  %2491 = sub nsw i64 %2490, 1
  %2492 = icmp sle i64 %2489, %2491
  br i1 %2492, label %2493, label %2536

2493:                                             ; preds = %2488
  store i64 0, ptr %20, align 8, !tbaa !11
  br label %2494

2494:                                             ; preds = %2529, %2493
  %2495 = load i64, ptr %20, align 8, !tbaa !11
  %2496 = load i64, ptr %17, align 8, !tbaa !11
  %2497 = sub nsw i64 %2496, 1
  %2498 = icmp sle i64 %2495, %2497
  br i1 %2498, label %2499, label %2532

2499:                                             ; preds = %2494
  %2500 = load i8, ptr %31, align 1, !tbaa !5, !range !16, !noundef !17
  %2501 = trunc i8 %2500 to i1
  br i1 %2501, label %2526, label %2502

2502:                                             ; preds = %2499
  %2503 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %10, i32 0, i32 6
  %2504 = load ptr, ptr %2503, align 8, !tbaa !15
  %2505 = load i64, ptr %19, align 8, !tbaa !11
  %2506 = getelementptr inbounds ptr, ptr %2504, i64 %2505
  %2507 = load ptr, ptr %2506, align 8, !tbaa !9
  %2508 = load i64, ptr %20, align 8, !tbaa !11
  %2509 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %2507, i64 %2508
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %94, ptr align 8 %2509, i64 16, i1 false), !tbaa.struct !21
  %2510 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %11, i32 0, i32 6
  %2511 = load ptr, ptr %2510, align 8, !tbaa !15
  %2512 = load i64, ptr %19, align 8, !tbaa !11
  %2513 = getelementptr inbounds ptr, ptr %2511, i64 %2512
  %2514 = load ptr, ptr %2513, align 8, !tbaa !9
  %2515 = load i64, ptr %20, align 8, !tbaa !11
  %2516 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %2514, i64 %2515
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %95, ptr align 8 %2516, i64 16, i1 false), !tbaa.struct !21
  %2517 = getelementptr inbounds { double, double }, ptr %94, i32 0, i32 0
  %2518 = load double, ptr %2517, align 8
  %2519 = getelementptr inbounds { double, double }, ptr %94, i32 0, i32 1
  %2520 = load double, ptr %2519, align 8
  %2521 = getelementptr inbounds { double, double }, ptr %95, i32 0, i32 0
  %2522 = load double, ptr %2521, align 8
  %2523 = getelementptr inbounds { double, double }, ptr %95, i32 0, i32 1
  %2524 = load double, ptr %2523, align 8
  %2525 = call noundef zeroext i1 @_ZN11alglib_impl7ae_c_eqENS_10ae_complexES0_(double %2518, double %2520, double %2522, double %2524)
  br label %2526

2526:                                             ; preds = %2502, %2499
  %2527 = phi i1 [ true, %2499 ], [ %2525, %2502 ]
  %2528 = zext i1 %2527 to i8
  store i8 %2528, ptr %31, align 1, !tbaa !5
  br label %2529

2529:                                             ; preds = %2526
  %2530 = load i64, ptr %20, align 8, !tbaa !11
  %2531 = add nsw i64 %2530, 1
  store i64 %2531, ptr %20, align 8, !tbaa !11
  br label %2494, !llvm.loop !78

2532:                                             ; preds = %2494
  br label %2533

2533:                                             ; preds = %2532
  %2534 = load i64, ptr %19, align 8, !tbaa !11
  %2535 = add nsw i64 %2534, 1
  store i64 %2535, ptr %19, align 8, !tbaa !11
  br label %2488, !llvm.loop !79

2536:                                             ; preds = %2488
  br label %2537

2537:                                             ; preds = %2536, %2480
  br label %2538

2538:                                             ; preds = %2537
  %2539 = load i64, ptr %21, align 8, !tbaa !11
  %2540 = add nsw i64 %2539, 1
  store i64 %2540, ptr %21, align 8, !tbaa !11
  br label %2394, !llvm.loop !80

2541:                                             ; preds = %2394
  br label %2542

2542:                                             ; preds = %2541
  %2543 = load i64, ptr %17, align 8, !tbaa !11
  %2544 = add nsw i64 %2543, 1
  store i64 %2544, ptr %17, align 8, !tbaa !11
  br label %2004, !llvm.loop !81

2545:                                             ; preds = %2004
  %2546 = load ptr, ptr %4, align 8, !tbaa !9
  %2547 = call noundef zeroext i1 @_ZL23testmatgenunit_testeultPN11alglib_impl8ae_stateE(ptr noundef %2546)
  %2548 = zext i1 %2547 to i8
  store i8 %2548, ptr %36, align 1, !tbaa !5
  %2549 = load i8, ptr %34, align 1, !tbaa !5, !range !16, !noundef !17
  %2550 = trunc i8 %2549 to i1
  br i1 %2550, label %2569, label %2551

2551:                                             ; preds = %2545
  %2552 = load i8, ptr %35, align 1, !tbaa !5, !range !16, !noundef !17
  %2553 = trunc i8 %2552 to i1
  br i1 %2553, label %2569, label %2554

2554:                                             ; preds = %2551
  %2555 = load i8, ptr %30, align 1, !tbaa !5, !range !16, !noundef !17
  %2556 = trunc i8 %2555 to i1
  br i1 %2556, label %2569, label %2557

2557:                                             ; preds = %2554
  %2558 = load i8, ptr %32, align 1, !tbaa !5, !range !16, !noundef !17
  %2559 = trunc i8 %2558 to i1
  br i1 %2559, label %2569, label %2560

2560:                                             ; preds = %2557
  %2561 = load i8, ptr %31, align 1, !tbaa !5, !range !16, !noundef !17
  %2562 = trunc i8 %2561 to i1
  br i1 %2562, label %2569, label %2563

2563:                                             ; preds = %2560
  %2564 = load i8, ptr %33, align 1, !tbaa !5, !range !16, !noundef !17
  %2565 = trunc i8 %2564 to i1
  br i1 %2565, label %2569, label %2566

2566:                                             ; preds = %2563
  %2567 = load i8, ptr %36, align 1, !tbaa !5, !range !16, !noundef !17
  %2568 = trunc i8 %2567 to i1
  br label %2569

2569:                                             ; preds = %2566, %2563, %2560, %2557, %2554, %2551, %2545
  %2570 = phi i1 [ true, %2563 ], [ true, %2560 ], [ true, %2557 ], [ true, %2554 ], [ true, %2551 ], [ true, %2545 ], [ %2568, %2566 ]
  %2571 = zext i1 %2570 to i8
  store i8 %2571, ptr %23, align 1, !tbaa !5
  %2572 = load i8, ptr %3, align 1, !tbaa !5, !range !16, !noundef !17
  %2573 = trunc i8 %2572 to i1
  br i1 %2573, label %2640, label %2574

2574:                                             ; preds = %2569
  %2575 = call i32 (ptr, ...) @printf(ptr noundef @.str.198)
  %2576 = call i32 (ptr, ...) @printf(ptr noundef @.str.199)
  %2577 = load i8, ptr %34, align 1, !tbaa !5, !range !16, !noundef !17
  %2578 = trunc i8 %2577 to i1
  br i1 %2578, label %2581, label %2579

2579:                                             ; preds = %2574
  %2580 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %2583

2581:                                             ; preds = %2574
  %2582 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %2583

2583:                                             ; preds = %2581, %2579
  %2584 = call i32 (ptr, ...) @printf(ptr noundef @.str.200)
  %2585 = load i8, ptr %35, align 1, !tbaa !5, !range !16, !noundef !17
  %2586 = trunc i8 %2585 to i1
  br i1 %2586, label %2589, label %2587

2587:                                             ; preds = %2583
  %2588 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %2591

2589:                                             ; preds = %2583
  %2590 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %2591

2591:                                             ; preds = %2589, %2587
  %2592 = call i32 (ptr, ...) @printf(ptr noundef @.str.201)
  %2593 = load i8, ptr %30, align 1, !tbaa !5, !range !16, !noundef !17
  %2594 = trunc i8 %2593 to i1
  br i1 %2594, label %2597, label %2595

2595:                                             ; preds = %2591
  %2596 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %2599

2597:                                             ; preds = %2591
  %2598 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %2599

2599:                                             ; preds = %2597, %2595
  %2600 = call i32 (ptr, ...) @printf(ptr noundef @.str.202)
  %2601 = load i8, ptr %31, align 1, !tbaa !5, !range !16, !noundef !17
  %2602 = trunc i8 %2601 to i1
  br i1 %2602, label %2605, label %2603

2603:                                             ; preds = %2599
  %2604 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %2607

2605:                                             ; preds = %2599
  %2606 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %2607

2607:                                             ; preds = %2605, %2603
  %2608 = call i32 (ptr, ...) @printf(ptr noundef @.str.203)
  %2609 = load i8, ptr %32, align 1, !tbaa !5, !range !16, !noundef !17
  %2610 = trunc i8 %2609 to i1
  br i1 %2610, label %2613, label %2611

2611:                                             ; preds = %2607
  %2612 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %2615

2613:                                             ; preds = %2607
  %2614 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %2615

2615:                                             ; preds = %2613, %2611
  %2616 = call i32 (ptr, ...) @printf(ptr noundef @.str.204)
  %2617 = load i8, ptr %33, align 1, !tbaa !5, !range !16, !noundef !17
  %2618 = trunc i8 %2617 to i1
  br i1 %2618, label %2621, label %2619

2619:                                             ; preds = %2615
  %2620 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %2623

2621:                                             ; preds = %2615
  %2622 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %2623

2623:                                             ; preds = %2621, %2619
  %2624 = call i32 (ptr, ...) @printf(ptr noundef @.str.205)
  %2625 = load i8, ptr %36, align 1, !tbaa !5, !range !16, !noundef !17
  %2626 = trunc i8 %2625 to i1
  br i1 %2626, label %2629, label %2627

2627:                                             ; preds = %2623
  %2628 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  br label %2631

2629:                                             ; preds = %2623
  %2630 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %2631

2631:                                             ; preds = %2629, %2627
  %2632 = load i8, ptr %23, align 1, !tbaa !5, !range !16, !noundef !17
  %2633 = trunc i8 %2632 to i1
  br i1 %2633, label %2634, label %2636

2634:                                             ; preds = %2631
  %2635 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  br label %2638

2636:                                             ; preds = %2631
  %2637 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %2638

2638:                                             ; preds = %2636, %2634
  %2639 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %2640

2640:                                             ; preds = %2638, %2569
  %2641 = load i8, ptr %23, align 1, !tbaa !5, !range !16, !noundef !17
  %2642 = trunc i8 %2641 to i1
  %2643 = xor i1 %2642, true
  %2644 = zext i1 %2643 to i8
  store i8 %2644, ptr %37, align 1, !tbaa !5
  %2645 = load ptr, ptr %4, align 8, !tbaa !9
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %2645)
  %2646 = load i8, ptr %37, align 1, !tbaa !5, !range !16, !noundef !17
  %2647 = trunc i8 %2646 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #6
  ret i1 %2647
}

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL39testmatgenunit_obsoletesvddecompositionPN11alglib_impl9ae_matrixEllPNS_9ae_vectorES1_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) #5

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL20testmatgenunit_isspdPN11alglib_impl9ae_matrixElbPNS_8ae_stateE(ptr noundef, i64 noundef, i1 noundef zeroext, ptr noundef) #5

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL20testmatgenunit_ishpdPN11alglib_impl9ae_matrixElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) #5

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

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

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

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

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

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


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

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

@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.190 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.191 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.198 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.199 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.200 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.201 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.202 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.203 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.204 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.205 = external hidden unnamed_addr constant [42 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

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

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

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

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

declare { double, double } @_ZN11alglib_impl9ae_c_conjENS_10ae_complexEPNS_8ae_stateE(double, double, ptr noundef) local_unnamed_addr #1

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z10testmatgenbPN11alglib_impl8ae_stateE(i1 noundef zeroext %0, ptr noundef %1) local_unnamed_addr #6 {
  %3 = alloca %"struct.alglib_impl::ae_frame", align 8
  %4 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %5 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %6 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %7 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %8 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %9 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %10 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %11 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %12 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %13 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %14 = alloca %"struct.alglib_impl::ae_vector", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #7
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %14) #7
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %1, ptr noundef nonnull %3)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %4, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %5, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %6, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %7, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %8, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %9, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %10, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %11, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %12, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %13, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %14, i8 0, i64 64, i1 false)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %4, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %5, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %6, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %7, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %8, i64 noundef 0, i64 noundef 0, i64 noundef 4, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %9, i64 noundef 0, i64 noundef 0, i64 noundef 4, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %10, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %11, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %12, i64 noundef 0, i64 noundef 0, i64 noundef 4, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %13, i64 noundef 0, i64 noundef 0, i64 noundef 4, ptr noundef %1, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %14, i64 noundef 0, i64 noundef 3, ptr noundef %1, i1 noundef zeroext true)
  %15 = getelementptr inbounds i8, ptr %4, i64 72
  %16 = getelementptr inbounds i8, ptr %5, i64 72
  %17 = getelementptr inbounds i8, ptr %8, i64 72
  %18 = getelementptr inbounds i8, ptr %9, i64 72
  %19 = getelementptr inbounds i8, ptr %11, i64 72
  %20 = getelementptr inbounds i8, ptr %10, i64 72
  %21 = getelementptr inbounds i8, ptr %13, i64 72
  %22 = getelementptr inbounds i8, ptr %12, i64 72
  br label %.preheader1076

.preheader1076:                                   ; preds = %2, %628
  %indvar = phi i64 [ 0, %2 ], [ %indvar.next, %628 ]
  %.01138 = phi i64 [ 1, %2 ], [ %629, %628 ]
  %.09001137 = phi i1 [ false, %2 ], [ %366, %628 ]
  %.09241136 = phi i1 [ false, %2 ], [ %622, %628 ]
  %23 = add nsw i64 %.01138, -1
  %24 = shl nuw nsw i64 %.01138, 1
  %25 = icmp ult i64 %.01138, 2
  %not.1039 = xor i1 %25, true
  %xtraiter = and i64 %.01138, 1
  %26 = icmp eq i64 %indvar, 0
  %unroll_iter = and i64 %.01138, 9223372036854775806
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %xtraiter1350 = and i64 %.01138, 1
  %27 = icmp eq i64 %indvar, 0
  %unroll_iter1353 = and i64 %.01138, 9223372036854775806
  %lcmp.mod1351.not = icmp eq i64 %xtraiter1350, 0
  br label %30

.preheader1053:                                   ; preds = %628
  %28 = zext i1 %366 to i8
  %29 = getelementptr inbounds i8, ptr %14, i64 56
  br label %.preheader1052

30:                                               ; preds = %.preheader1076, %626
  %.08641135 = phi i64 [ 1, %.preheader1076 ], [ %627, %626 ]
  %.19011134 = phi i1 [ %.09001137, %.preheader1076 ], [ %366, %626 ]
  %.19251133 = phi i1 [ %.09241136, %.preheader1076 ], [ %622, %626 ]
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %.01138, i64 noundef %24, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %24, i64 noundef %.01138, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %.01138, i64 noundef %24, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %24, i64 noundef %.01138, ptr noundef %1)
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %4, ptr noundef %1)
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef %1)
  call void @_ZN11alglib_impl20rmatrixrndorthogonalElPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %.01138, ptr noundef nonnull %4, ptr noundef %1)
  call void @_ZN11alglib_impl20rmatrixrndorthogonalElPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %.01138, ptr noundef nonnull %5, ptr noundef %1)
  br label %.preheader1071

.preheader1071:                                   ; preds = %30, %74
  %.08351080 = phi i64 [ 0, %30 ], [ %75, %74 ]
  %.29021079 = phi i1 [ %.19011134, %30 ], [ %.6906.in, %74 ]
  br label %31

31:                                               ; preds = %.preheader1071, %.thread
  %.08381078 = phi i64 [ 0, %.preheader1071 ], [ %73, %.thread ]
  %.39031077 = phi i1 [ %.29021079, %.preheader1071 ], [ %.6906.in, %.thread ]
  %32 = load ptr, ptr %15, align 8, !tbaa !5
  %33 = getelementptr inbounds ptr, ptr %32, i64 %.08351080
  %34 = load ptr, ptr %33, align 8, !tbaa !8
  %35 = getelementptr inbounds ptr, ptr %32, i64 %.08381078
  %36 = load ptr, ptr %35, align 8, !tbaa !8
  %37 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %23)
  %38 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %34, i64 noundef 1, ptr noundef %36, i64 noundef 1, i64 noundef %37)
  %39 = icmp eq i64 %.08351080, %.08381078
  br i1 %39, label %40, label %43

40:                                               ; preds = %31
  br i1 %.39031077, label %46, label %41

41:                                               ; preds = %40
  %42 = fadd double %38, -1.000000e+00
  br label %.sink.split

43:                                               ; preds = %31
  br i1 %.39031077, label %46, label %.sink.split

.sink.split:                                      ; preds = %43, %41
  %.sink1293 = phi double [ %42, %41 ], [ %38, %43 ]
  %44 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %.sink1293, ptr noundef %1)
  %45 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %44, double noundef 5.000000e-13)
  br label %46

46:                                               ; preds = %.sink.split, %43, %40
  %.4904.in = phi i1 [ true, %40 ], [ true, %43 ], [ %45, %.sink.split ]
  %47 = load ptr, ptr %16, align 8, !tbaa !5
  %48 = getelementptr inbounds ptr, ptr %47, i64 %.08351080
  %49 = load ptr, ptr %48, align 8, !tbaa !8
  %50 = getelementptr inbounds ptr, ptr %47, i64 %.08381078
  %51 = load ptr, ptr %50, align 8, !tbaa !8
  %52 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %23)
  %53 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %49, i64 noundef 1, ptr noundef %51, i64 noundef 1, i64 noundef %52)
  br i1 %39, label %54, label %57

54:                                               ; preds = %46
  br i1 %.4904.in, label %.thread, label %55

55:                                               ; preds = %54
  %56 = fadd double %53, -1.000000e+00
  br label %58

57:                                               ; preds = %46
  br i1 %.4904.in, label %.thread, label %58

58:                                               ; preds = %57, %55
  %.sink1294 = phi double [ %56, %55 ], [ %53, %57 ]
  %59 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %.sink1294, ptr noundef %1)
  %60 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %59, double noundef 5.000000e-13)
  %brmerge = or i1 %25, %60
  %.5905.in.mux = or i1 %60, %not.1039
  br i1 %brmerge, label %.thread, label %61

61:                                               ; preds = %58
  %62 = load ptr, ptr %15, align 8, !tbaa !5
  %63 = getelementptr inbounds ptr, ptr %62, i64 %.08351080
  %64 = load ptr, ptr %63, align 8, !tbaa !8
  %65 = getelementptr inbounds double, ptr %64, i64 %.08381078
  %66 = load double, ptr %65, align 8, !tbaa !10
  %67 = load ptr, ptr %16, align 8, !tbaa !5
  %68 = getelementptr inbounds ptr, ptr %67, i64 %.08351080
  %69 = load ptr, ptr %68, align 8, !tbaa !8
  %70 = getelementptr inbounds double, ptr %69, i64 %.08381078
  %71 = load double, ptr %70, align 8, !tbaa !10
  %72 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %66, double noundef %71)
  br label %.thread

.thread:                                          ; preds = %57, %54, %58, %61
  %.6906.in = phi i1 [ %.5905.in.mux, %58 ], [ %72, %61 ], [ true, %54 ], [ true, %57 ]
  %73 = add nuw nsw i64 %.08381078, 1
  %exitcond.not = icmp eq i64 %73, %.01138
  br i1 %exitcond.not, label %74, label %31, !llvm.loop !12

74:                                               ; preds = %.thread
  %75 = add nuw nsw i64 %.08351080, 1
  %exitcond1209.not = icmp eq i64 %75, %.01138
  br i1 %exitcond1209.not, label %76, label %.preheader1071, !llvm.loop !14

76:                                               ; preds = %74
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %8, ptr noundef %1)
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %9, ptr noundef %1)
  call void @_ZN11alglib_impl20cmatrixrndorthogonalElPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %.01138, ptr noundef nonnull %8, ptr noundef %1)
  call void @_ZN11alglib_impl20cmatrixrndorthogonalElPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %.01138, ptr noundef nonnull %9, ptr noundef %1)
  br label %.preheader1070

.preheader1070:                                   ; preds = %76, %130
  %.18361084 = phi i64 [ 0, %76 ], [ %131, %130 ]
  %.29261083 = phi i1 [ %.19251133, %76 ], [ %.6930.in, %130 ]
  br label %77

77:                                               ; preds = %.preheader1070, %.thread1020
  %.18391082 = phi i64 [ 0, %.preheader1070 ], [ %129, %.thread1020 ]
  %.39271081 = phi i1 [ %.29261083, %.preheader1070 ], [ %.6930.in, %.thread1020 ]
  %78 = load ptr, ptr %17, align 8, !tbaa !5
  %79 = getelementptr inbounds ptr, ptr %78, i64 %.18361084
  %80 = load ptr, ptr %79, align 8, !tbaa !8
  %81 = getelementptr inbounds ptr, ptr %78, i64 %.18391082
  %82 = load ptr, ptr %81, align 8, !tbaa !8
  %83 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %23)
  %84 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %80, i64 noundef 1, ptr noundef nonnull @.str.191, ptr noundef %82, i64 noundef 1, ptr noundef nonnull @.str.190, i64 noundef %83)
  %85 = extractvalue { double, double } %84, 0
  %86 = extractvalue { double, double } %84, 1
  %87 = icmp eq i64 %.18361084, %.18391082
  br i1 %87, label %88, label %94

88:                                               ; preds = %77
  br i1 %.39271081, label %98, label %89

89:                                               ; preds = %88
  %90 = call { double, double } @_ZN11alglib_impl10ae_c_sub_dENS_10ae_complexEd(double %85, double %86, double noundef 1.000000e+00)
  %91 = extractvalue { double, double } %90, 0
  %92 = extractvalue { double, double } %90, 1
  %93 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %91, double %92, ptr noundef %1)
  br label %.sink.split1295

94:                                               ; preds = %77
  br i1 %.39271081, label %98, label %95

95:                                               ; preds = %94
  %96 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %85, double %86, ptr noundef %1)
  br label %.sink.split1295

.sink.split1295:                                  ; preds = %89, %95
  %.sink = phi double [ %96, %95 ], [ %93, %89 ]
  %97 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %.sink, double noundef 5.000000e-13)
  br label %98

98:                                               ; preds = %.sink.split1295, %94, %88
  %.4928.in = phi i1 [ true, %88 ], [ true, %94 ], [ %97, %.sink.split1295 ]
  %99 = load ptr, ptr %18, align 8, !tbaa !5
  %100 = getelementptr inbounds ptr, ptr %99, i64 %.18361084
  %101 = load ptr, ptr %100, align 8, !tbaa !8
  %102 = getelementptr inbounds ptr, ptr %99, i64 %.18391082
  %103 = load ptr, ptr %102, align 8, !tbaa !8
  %104 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %23)
  %105 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %101, i64 noundef 1, ptr noundef nonnull @.str.191, ptr noundef %103, i64 noundef 1, ptr noundef nonnull @.str.190, i64 noundef %104)
  %106 = extractvalue { double, double } %105, 0
  %107 = extractvalue { double, double } %105, 1
  br i1 %87, label %108, label %114

108:                                              ; preds = %98
  br i1 %.4928.in, label %.thread1020, label %109

109:                                              ; preds = %108
  %110 = call { double, double } @_ZN11alglib_impl10ae_c_sub_dENS_10ae_complexEd(double %106, double %107, double noundef 1.000000e+00)
  %111 = extractvalue { double, double } %110, 0
  %112 = extractvalue { double, double } %110, 1
  %113 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %111, double %112, ptr noundef %1)
  br label %117

114:                                              ; preds = %98
  br i1 %.4928.in, label %.thread1020, label %115

115:                                              ; preds = %114
  %116 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %106, double %107, ptr noundef %1)
  br label %117

117:                                              ; preds = %115, %109
  %.sink1296 = phi double [ %116, %115 ], [ %113, %109 ]
  %118 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %.sink1296, double noundef 5.000000e-13)
  %brmerge1010 = or i1 %25, %118
  %.5929.in.mux = or i1 %118, %not.1039
  br i1 %brmerge1010, label %.thread1020, label %119

119:                                              ; preds = %117
  %120 = load ptr, ptr %17, align 8, !tbaa !5
  %121 = getelementptr inbounds ptr, ptr %120, i64 %.18361084
  %122 = load ptr, ptr %121, align 8, !tbaa !8
  %123 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %122, i64 %.18391082
  %.sroa.096.0.copyload = load double, ptr %123, align 8, !tbaa !10
  %.sroa.297.0..sroa_idx = getelementptr inbounds i8, ptr %123, i64 8
  %.sroa.297.0.copyload = load double, ptr %.sroa.297.0..sroa_idx, align 8, !tbaa !10
  %124 = load ptr, ptr %18, align 8, !tbaa !5
  %125 = getelementptr inbounds ptr, ptr %124, i64 %.18361084
  %126 = load ptr, ptr %125, align 8, !tbaa !8
  %127 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %126, i64 %.18391082
  %.sroa.094.0.copyload = load double, ptr %127, align 8, !tbaa !10
  %.sroa.295.0..sroa_idx = getelementptr inbounds i8, ptr %127, i64 8
  %.sroa.295.0.copyload = load double, ptr %.sroa.295.0..sroa_idx, align 8, !tbaa !10
  %128 = call noundef zeroext i1 @_ZN11alglib_impl7ae_c_eqENS_10ae_complexES0_(double %.sroa.096.0.copyload, double %.sroa.297.0.copyload, double %.sroa.094.0.copyload, double %.sroa.295.0.copyload)
  br label %.thread1020

.thread1020:                                      ; preds = %114, %108, %117, %119
  %.6930.in = phi i1 [ %.5929.in.mux, %117 ], [ %128, %119 ], [ true, %108 ], [ true, %114 ]
  %129 = add nuw nsw i64 %.18391082, 1
  %exitcond1210.not = icmp eq i64 %129, %.01138
  br i1 %exitcond1210.not, label %130, label %77, !llvm.loop !15

130:                                              ; preds = %.thread1020
  %131 = add nuw nsw i64 %.18361084, 1
  %exitcond1211.not = icmp eq i64 %131, %.01138
  br i1 %exitcond1211.not, label %132, label %.preheader1070, !llvm.loop !16

132:                                              ; preds = %130
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %4, ptr noundef %1)
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.01138, i64 noundef %.01138, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef %.01138, i64 noundef %.01138, ptr noundef %1)
  br label %.preheader1069

.preheader1069:                                   ; preds = %132, %159
  %.28371086 = phi i64 [ 0, %132 ], [ %168, %159 ]
  br i1 %26, label %.unr-lcssa, label %.preheader1069.new

.preheader1069.new:                               ; preds = %.preheader1069, %.preheader1069.new
  %.28401085 = phi i64 [ %150, %.preheader1069.new ], [ 0, %.preheader1069 ]
  %niter = phi i64 [ %niter.next.1, %.preheader1069.new ], [ 0, %.preheader1069 ]
  %133 = load ptr, ptr %15, align 8, !tbaa !5
  %134 = getelementptr inbounds ptr, ptr %133, i64 %.28371086
  %135 = load ptr, ptr %134, align 8, !tbaa !8
  %136 = getelementptr inbounds double, ptr %135, i64 %.28401085
  store double 0.000000e+00, ptr %136, align 8, !tbaa !10
  %137 = load ptr, ptr %16, align 8, !tbaa !5
  %138 = getelementptr inbounds ptr, ptr %137, i64 %.28371086
  %139 = load ptr, ptr %138, align 8, !tbaa !8
  %140 = getelementptr inbounds double, ptr %139, i64 %.28401085
  store double 0.000000e+00, ptr %140, align 8, !tbaa !10
  %141 = or disjoint i64 %.28401085, 1
  %142 = load ptr, ptr %15, align 8, !tbaa !5
  %143 = getelementptr inbounds ptr, ptr %142, i64 %.28371086
  %144 = load ptr, ptr %143, align 8, !tbaa !8
  %145 = getelementptr inbounds double, ptr %144, i64 %141
  store double 0.000000e+00, ptr %145, align 8, !tbaa !10
  %146 = load ptr, ptr %16, align 8, !tbaa !5
  %147 = getelementptr inbounds ptr, ptr %146, i64 %.28371086
  %148 = load ptr, ptr %147, align 8, !tbaa !8
  %149 = getelementptr inbounds double, ptr %148, i64 %141
  store double 0.000000e+00, ptr %149, align 8, !tbaa !10
  %150 = add nuw nsw i64 %.28401085, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.unr-lcssa, label %.preheader1069.new, !llvm.loop !17

.unr-lcssa:                                       ; preds = %.preheader1069.new, %.preheader1069
  %.28401085.unr = phi i64 [ 0, %.preheader1069 ], [ %150, %.preheader1069.new ]
  br i1 %lcmp.mod.not, label %159, label %.epilog-lcssa

.epilog-lcssa:                                    ; preds = %.unr-lcssa
  %151 = load ptr, ptr %15, align 8, !tbaa !5
  %152 = getelementptr inbounds ptr, ptr %151, i64 %.28371086
  %153 = load ptr, ptr %152, align 8, !tbaa !8
  %154 = getelementptr inbounds double, ptr %153, i64 %.28401085.unr
  store double 0.000000e+00, ptr %154, align 8, !tbaa !10
  %155 = load ptr, ptr %16, align 8, !tbaa !5
  %156 = getelementptr inbounds ptr, ptr %155, i64 %.28371086
  %157 = load ptr, ptr %156, align 8, !tbaa !8
  %158 = getelementptr inbounds double, ptr %157, i64 %.28401085.unr
  store double 0.000000e+00, ptr %158, align 8, !tbaa !10
  br label %159

159:                                              ; preds = %.unr-lcssa, %.epilog-lcssa
  %160 = load ptr, ptr %15, align 8, !tbaa !5
  %161 = getelementptr inbounds ptr, ptr %160, i64 %.28371086
  %162 = load ptr, ptr %161, align 8, !tbaa !8
  %163 = getelementptr inbounds double, ptr %162, i64 %.28371086
  store double 1.000000e+00, ptr %163, align 8, !tbaa !10
  %164 = load ptr, ptr %16, align 8, !tbaa !5
  %165 = getelementptr inbounds ptr, ptr %164, i64 %.28371086
  %166 = load ptr, ptr %165, align 8, !tbaa !8
  %167 = getelementptr inbounds double, ptr %166, i64 %.28371086
  store double 1.000000e+00, ptr %167, align 8, !tbaa !10
  %168 = add nuw nsw i64 %.28371086, 1
  %exitcond1213.not = icmp eq i64 %168, %.01138
  br i1 %exitcond1213.not, label %169, label %.preheader1069, !llvm.loop !18

169:                                              ; preds = %159
  call void @_ZN11alglib_impl32rmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.01138, i64 noundef %.01138, ptr noundef %1)
  call void @_ZN11alglib_impl32rmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef %.01138, i64 noundef %.01138, ptr noundef %1)
  br label %.preheader1068

.preheader1068:                                   ; preds = %169, %213
  %.31090 = phi i64 [ 0, %169 ], [ %214, %213 ]
  %.79071089 = phi i1 [ %.6906.in, %169 ], [ %.11911.in, %213 ]
  br label %170

170:                                              ; preds = %.preheader1068, %.thread1026
  %.38411088 = phi i64 [ 0, %.preheader1068 ], [ %212, %.thread1026 ]
  %.89081087 = phi i1 [ %.79071089, %.preheader1068 ], [ %.11911.in, %.thread1026 ]
  %171 = load ptr, ptr %15, align 8, !tbaa !5
  %172 = getelementptr inbounds ptr, ptr %171, i64 %.31090
  %173 = load ptr, ptr %172, align 8, !tbaa !8
  %174 = getelementptr inbounds ptr, ptr %171, i64 %.38411088
  %175 = load ptr, ptr %174, align 8, !tbaa !8
  %176 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %23)
  %177 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %173, i64 noundef 1, ptr noundef %175, i64 noundef 1, i64 noundef %176)
  %178 = icmp eq i64 %.31090, %.38411088
  br i1 %178, label %179, label %182

179:                                              ; preds = %170
  br i1 %.89081087, label %185, label %180

180:                                              ; preds = %179
  %181 = fadd double %177, -1.000000e+00
  br label %.sink.split1297

182:                                              ; preds = %170
  br i1 %.89081087, label %185, label %.sink.split1297

.sink.split1297:                                  ; preds = %182, %180
  %.sink1299 = phi double [ %181, %180 ], [ %177, %182 ]
  %183 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %.sink1299, ptr noundef %1)
  %184 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %183, double noundef 5.000000e-13)
  br label %185

185:                                              ; preds = %.sink.split1297, %182, %179
  %.9909.in = phi i1 [ true, %179 ], [ true, %182 ], [ %184, %.sink.split1297 ]
  %186 = load ptr, ptr %16, align 8, !tbaa !5
  %187 = getelementptr inbounds ptr, ptr %186, i64 %.31090
  %188 = load ptr, ptr %187, align 8, !tbaa !8
  %189 = getelementptr inbounds ptr, ptr %186, i64 %.38411088
  %190 = load ptr, ptr %189, align 8, !tbaa !8
  %191 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %23)
  %192 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %188, i64 noundef 1, ptr noundef %190, i64 noundef 1, i64 noundef %191)
  br i1 %178, label %193, label %196

193:                                              ; preds = %185
  br i1 %.9909.in, label %.thread1026, label %194

194:                                              ; preds = %193
  %195 = fadd double %192, -1.000000e+00
  br label %197

196:                                              ; preds = %185
  br i1 %.9909.in, label %.thread1026, label %197

197:                                              ; preds = %196, %194
  %.sink1301 = phi double [ %195, %194 ], [ %192, %196 ]
  %198 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %.sink1301, ptr noundef %1)
  %199 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %198, double noundef 5.000000e-13)
  %brmerge1012 = or i1 %25, %199
  %.10910.in.mux = or i1 %199, %not.1039
  br i1 %brmerge1012, label %.thread1026, label %200

200:                                              ; preds = %197
  %201 = load ptr, ptr %15, align 8, !tbaa !5
  %202 = getelementptr inbounds ptr, ptr %201, i64 %.31090
  %203 = load ptr, ptr %202, align 8, !tbaa !8
  %204 = getelementptr inbounds double, ptr %203, i64 %.38411088
  %205 = load double, ptr %204, align 8, !tbaa !10
  %206 = load ptr, ptr %16, align 8, !tbaa !5
  %207 = getelementptr inbounds ptr, ptr %206, i64 %.31090
  %208 = load ptr, ptr %207, align 8, !tbaa !8
  %209 = getelementptr inbounds double, ptr %208, i64 %.38411088
  %210 = load double, ptr %209, align 8, !tbaa !10
  %211 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %205, double noundef %210)
  br label %.thread1026

.thread1026:                                      ; preds = %196, %193, %197, %200
  %.11911.in = phi i1 [ %.10910.in.mux, %197 ], [ %211, %200 ], [ true, %193 ], [ true, %196 ]
  %212 = add nuw nsw i64 %.38411088, 1
  %exitcond1214.not = icmp eq i64 %212, %.01138
  br i1 %exitcond1214.not, label %213, label %170, !llvm.loop !19

213:                                              ; preds = %.thread1026
  %214 = add nuw nsw i64 %.31090, 1
  %exitcond1215.not = icmp eq i64 %214, %.01138
  br i1 %exitcond1215.not, label %.preheader1067, label %.preheader1068, !llvm.loop !20

.preheader1067:                                   ; preds = %213, %231
  %.41092 = phi i64 [ %232, %231 ], [ 0, %213 ]
  br label %215

215:                                              ; preds = %.preheader1067, %215
  %.48421091 = phi i64 [ 0, %.preheader1067 ], [ %230, %215 ]
  %216 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %217 = call double @llvm.fmuladd.f64(double %216, double 2.000000e+00, double -1.000000e+00)
  %218 = load ptr, ptr %19, align 8, !tbaa !5
  %219 = getelementptr inbounds ptr, ptr %218, i64 %.41092
  %220 = load ptr, ptr %219, align 8, !tbaa !8
  %221 = getelementptr inbounds double, ptr %220, i64 %.48421091
  store double %217, ptr %221, align 8, !tbaa !10
  %222 = load ptr, ptr %19, align 8, !tbaa !5
  %223 = getelementptr inbounds ptr, ptr %222, i64 %.41092
  %224 = load ptr, ptr %223, align 8, !tbaa !8
  %225 = getelementptr inbounds double, ptr %224, i64 %.48421091
  %226 = load double, ptr %225, align 8, !tbaa !10
  %227 = getelementptr inbounds ptr, ptr %223, i64 %.01138
  %228 = load ptr, ptr %227, align 8, !tbaa !8
  %229 = getelementptr inbounds double, ptr %228, i64 %.48421091
  store double %226, ptr %229, align 8, !tbaa !10
  %230 = add nuw nsw i64 %.48421091, 1
  %exitcond1216.not = icmp eq i64 %230, %.01138
  br i1 %exitcond1216.not, label %231, label %215, !llvm.loop !21

231:                                              ; preds = %215
  %232 = add nuw nsw i64 %.41092, 1
  %exitcond1217.not = icmp eq i64 %232, %.01138
  br i1 %exitcond1217.not, label %233, label %.preheader1067, !llvm.loop !22

233:                                              ; preds = %231
  call void @_ZN11alglib_impl32rmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %24, i64 noundef %.01138, ptr noundef %1)
  br label %.preheader1066

.preheader1066:                                   ; preds = %233, %251
  %.51096 = phi i64 [ 0, %233 ], [ %252, %251 ]
  %.129121095 = phi i1 [ %.11911.in, %233 ], [ %249, %251 ]
  br label %234

234:                                              ; preds = %.preheader1066, %248
  %.58431094 = phi i64 [ 0, %.preheader1066 ], [ %250, %248 ]
  %.139131093 = phi i1 [ %.129121095, %.preheader1066 ], [ %249, %248 ]
  br i1 %.139131093, label %248, label %235

235:                                              ; preds = %234
  %236 = load ptr, ptr %19, align 8, !tbaa !5
  %237 = getelementptr inbounds ptr, ptr %236, i64 %.51096
  %238 = getelementptr inbounds ptr, ptr %237, i64 %.01138
  %239 = load ptr, ptr %238, align 8, !tbaa !8
  %240 = getelementptr inbounds double, ptr %239, i64 %.58431094
  %241 = load double, ptr %240, align 8, !tbaa !10
  %242 = load ptr, ptr %237, align 8, !tbaa !8
  %243 = getelementptr inbounds double, ptr %242, i64 %.58431094
  %244 = load double, ptr %243, align 8, !tbaa !10
  %245 = fsub double %241, %244
  %246 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %245, ptr noundef %1)
  %247 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %246, double noundef 5.000000e-13)
  br label %248

248:                                              ; preds = %235, %234
  %249 = phi i1 [ true, %234 ], [ %247, %235 ]
  %250 = add nuw nsw i64 %.58431094, 1
  %exitcond1218.not = icmp eq i64 %250, %.01138
  br i1 %exitcond1218.not, label %251, label %234, !llvm.loop !23

251:                                              ; preds = %248
  %252 = add nuw nsw i64 %.51096, 1
  %exitcond1219.not = icmp eq i64 %252, %.01138
  br i1 %exitcond1219.not, label %253, label %.preheader1066, !llvm.loop !24

253:                                              ; preds = %251
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %4, ptr noundef %1)
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.01138, i64 noundef %.01138, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef %.01138, i64 noundef %.01138, ptr noundef %1)
  br label %.preheader1065

.preheader1065:                                   ; preds = %253, %280
  %.61098 = phi i64 [ 0, %253 ], [ %289, %280 ]
  br i1 %27, label %.unr-lcssa1348, label %.preheader1065.new

.preheader1065.new:                               ; preds = %.preheader1065, %.preheader1065.new
  %.68441097 = phi i64 [ %271, %.preheader1065.new ], [ 0, %.preheader1065 ]
  %niter1354 = phi i64 [ %niter1354.next.1, %.preheader1065.new ], [ 0, %.preheader1065 ]
  %254 = load ptr, ptr %15, align 8, !tbaa !5
  %255 = getelementptr inbounds ptr, ptr %254, i64 %.61098
  %256 = load ptr, ptr %255, align 8, !tbaa !8
  %257 = getelementptr inbounds double, ptr %256, i64 %.68441097
  store double 0.000000e+00, ptr %257, align 8, !tbaa !10
  %258 = load ptr, ptr %16, align 8, !tbaa !5
  %259 = getelementptr inbounds ptr, ptr %258, i64 %.61098
  %260 = load ptr, ptr %259, align 8, !tbaa !8
  %261 = getelementptr inbounds double, ptr %260, i64 %.68441097
  store double 0.000000e+00, ptr %261, align 8, !tbaa !10
  %262 = or disjoint i64 %.68441097, 1
  %263 = load ptr, ptr %15, align 8, !tbaa !5
  %264 = getelementptr inbounds ptr, ptr %263, i64 %.61098
  %265 = load ptr, ptr %264, align 8, !tbaa !8
  %266 = getelementptr inbounds double, ptr %265, i64 %262
  store double 0.000000e+00, ptr %266, align 8, !tbaa !10
  %267 = load ptr, ptr %16, align 8, !tbaa !5
  %268 = getelementptr inbounds ptr, ptr %267, i64 %.61098
  %269 = load ptr, ptr %268, align 8, !tbaa !8
  %270 = getelementptr inbounds double, ptr %269, i64 %262
  store double 0.000000e+00, ptr %270, align 8, !tbaa !10
  %271 = add nuw nsw i64 %.68441097, 2
  %niter1354.next.1 = add i64 %niter1354, 2
  %niter1354.ncmp.1 = icmp eq i64 %niter1354.next.1, %unroll_iter1353
  br i1 %niter1354.ncmp.1, label %.unr-lcssa1348, label %.preheader1065.new, !llvm.loop !25

.unr-lcssa1348:                                   ; preds = %.preheader1065.new, %.preheader1065
  %.68441097.unr = phi i64 [ 0, %.preheader1065 ], [ %271, %.preheader1065.new ]
  br i1 %lcmp.mod1351.not, label %280, label %.epilog-lcssa1352

.epilog-lcssa1352:                                ; preds = %.unr-lcssa1348
  %272 = load ptr, ptr %15, align 8, !tbaa !5
  %273 = getelementptr inbounds ptr, ptr %272, i64 %.61098
  %274 = load ptr, ptr %273, align 8, !tbaa !8
  %275 = getelementptr inbounds double, ptr %274, i64 %.68441097.unr
  store double 0.000000e+00, ptr %275, align 8, !tbaa !10
  %276 = load ptr, ptr %16, align 8, !tbaa !5
  %277 = getelementptr inbounds ptr, ptr %276, i64 %.61098
  %278 = load ptr, ptr %277, align 8, !tbaa !8
  %279 = getelementptr inbounds double, ptr %278, i64 %.68441097.unr
  store double 0.000000e+00, ptr %279, align 8, !tbaa !10
  br label %280

280:                                              ; preds = %.unr-lcssa1348, %.epilog-lcssa1352
  %281 = load ptr, ptr %15, align 8, !tbaa !5
  %282 = getelementptr inbounds ptr, ptr %281, i64 %.61098
  %283 = load ptr, ptr %282, align 8, !tbaa !8
  %284 = getelementptr inbounds double, ptr %283, i64 %.61098
  store double 1.000000e+00, ptr %284, align 8, !tbaa !10
  %285 = load ptr, ptr %16, align 8, !tbaa !5
  %286 = getelementptr inbounds ptr, ptr %285, i64 %.61098
  %287 = load ptr, ptr %286, align 8, !tbaa !8
  %288 = getelementptr inbounds double, ptr %287, i64 %.61098
  store double 1.000000e+00, ptr %288, align 8, !tbaa !10
  %289 = add nuw nsw i64 %.61098, 1
  %exitcond1221.not = icmp eq i64 %289, %.01138
  br i1 %exitcond1221.not, label %290, label %.preheader1065, !llvm.loop !26

290:                                              ; preds = %280
  call void @_ZN11alglib_impl31rmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.01138, i64 noundef %.01138, ptr noundef %1)
  call void @_ZN11alglib_impl31rmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef %.01138, i64 noundef %.01138, ptr noundef %1)
  br label %.preheader1064

.preheader1064:                                   ; preds = %290, %334
  %.71102 = phi i64 [ 0, %290 ], [ %335, %334 ]
  %.149141101 = phi i1 [ %249, %290 ], [ %.18918.in, %334 ]
  br label %291

291:                                              ; preds = %.preheader1064, %.thread1032
  %.78451100 = phi i64 [ 0, %.preheader1064 ], [ %333, %.thread1032 ]
  %.159151099 = phi i1 [ %.149141101, %.preheader1064 ], [ %.18918.in, %.thread1032 ]
  %292 = load ptr, ptr %15, align 8, !tbaa !5
  %293 = getelementptr inbounds ptr, ptr %292, i64 %.71102
  %294 = load ptr, ptr %293, align 8, !tbaa !8
  %295 = getelementptr inbounds ptr, ptr %292, i64 %.78451100
  %296 = load ptr, ptr %295, align 8, !tbaa !8
  %297 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %23)
  %298 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %294, i64 noundef 1, ptr noundef %296, i64 noundef 1, i64 noundef %297)
  %299 = icmp eq i64 %.71102, %.78451100
  br i1 %299, label %300, label %303

300:                                              ; preds = %291
  br i1 %.159151099, label %306, label %301

301:                                              ; preds = %300
  %302 = fadd double %298, -1.000000e+00
  br label %.sink.split1302

303:                                              ; preds = %291
  br i1 %.159151099, label %306, label %.sink.split1302

.sink.split1302:                                  ; preds = %303, %301
  %.sink1304 = phi double [ %302, %301 ], [ %298, %303 ]
  %304 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %.sink1304, ptr noundef %1)
  %305 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %304, double noundef 5.000000e-13)
  br label %306

306:                                              ; preds = %.sink.split1302, %303, %300
  %.16916.in = phi i1 [ true, %300 ], [ true, %303 ], [ %305, %.sink.split1302 ]
  %307 = load ptr, ptr %16, align 8, !tbaa !5
  %308 = getelementptr inbounds ptr, ptr %307, i64 %.71102
  %309 = load ptr, ptr %308, align 8, !tbaa !8
  %310 = getelementptr inbounds ptr, ptr %307, i64 %.78451100
  %311 = load ptr, ptr %310, align 8, !tbaa !8
  %312 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %23)
  %313 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %309, i64 noundef 1, ptr noundef %311, i64 noundef 1, i64 noundef %312)
  br i1 %299, label %314, label %317

314:                                              ; preds = %306
  br i1 %.16916.in, label %.thread1032, label %315

315:                                              ; preds = %314
  %316 = fadd double %313, -1.000000e+00
  br label %318

317:                                              ; preds = %306
  br i1 %.16916.in, label %.thread1032, label %318

318:                                              ; preds = %317, %315
  %.sink1306 = phi double [ %316, %315 ], [ %313, %317 ]
  %319 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %.sink1306, ptr noundef %1)
  %320 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %319, double noundef 5.000000e-13)
  %brmerge1014 = or i1 %25, %320
  %.17917.in.mux = or i1 %320, %not.1039
  br i1 %brmerge1014, label %.thread1032, label %321

321:                                              ; preds = %318
  %322 = load ptr, ptr %15, align 8, !tbaa !5
  %323 = getelementptr inbounds ptr, ptr %322, i64 %.71102
  %324 = load ptr, ptr %323, align 8, !tbaa !8
  %325 = getelementptr inbounds double, ptr %324, i64 %.78451100
  %326 = load double, ptr %325, align 8, !tbaa !10
  %327 = load ptr, ptr %16, align 8, !tbaa !5
  %328 = getelementptr inbounds ptr, ptr %327, i64 %.71102
  %329 = load ptr, ptr %328, align 8, !tbaa !8
  %330 = getelementptr inbounds double, ptr %329, i64 %.78451100
  %331 = load double, ptr %330, align 8, !tbaa !10
  %332 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %326, double noundef %331)
  br label %.thread1032

.thread1032:                                      ; preds = %317, %314, %318, %321
  %.18918.in = phi i1 [ %.17917.in.mux, %318 ], [ %332, %321 ], [ true, %314 ], [ true, %317 ]
  %333 = add nuw nsw i64 %.78451100, 1
  %exitcond1222.not = icmp eq i64 %333, %.01138
  br i1 %exitcond1222.not, label %334, label %291, !llvm.loop !27

334:                                              ; preds = %.thread1032
  %335 = add nuw nsw i64 %.71102, 1
  %exitcond1223.not = icmp eq i64 %335, %.01138
  br i1 %exitcond1223.not, label %.preheader1063, label %.preheader1064, !llvm.loop !28

.preheader1063:                                   ; preds = %334, %350
  %.81104 = phi i64 [ %351, %350 ], [ 0, %334 ]
  br label %336

336:                                              ; preds = %.preheader1063, %336
  %.88461103 = phi i64 [ 0, %.preheader1063 ], [ %349, %336 ]
  %337 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %338 = call double @llvm.fmuladd.f64(double %337, double 2.000000e+00, double -1.000000e+00)
  %339 = load ptr, ptr %20, align 8, !tbaa !5
  %340 = getelementptr inbounds ptr, ptr %339, i64 %.81104
  %341 = load ptr, ptr %340, align 8, !tbaa !8
  %342 = getelementptr inbounds double, ptr %341, i64 %.88461103
  store double %338, ptr %342, align 8, !tbaa !10
  %343 = load ptr, ptr %20, align 8, !tbaa !5
  %344 = getelementptr inbounds ptr, ptr %343, i64 %.81104
  %345 = load ptr, ptr %344, align 8, !tbaa !8
  %346 = getelementptr inbounds double, ptr %345, i64 %.88461103
  %347 = load double, ptr %346, align 8, !tbaa !10
  %348 = getelementptr inbounds double, ptr %346, i64 %.01138
  store double %347, ptr %348, align 8, !tbaa !10
  %349 = add nuw nsw i64 %.88461103, 1
  %exitcond1224.not = icmp eq i64 %349, %.01138
  br i1 %exitcond1224.not, label %350, label %336, !llvm.loop !29

350:                                              ; preds = %336
  %351 = add nuw nsw i64 %.81104, 1
  %exitcond1225.not = icmp eq i64 %351, %.01138
  br i1 %exitcond1225.not, label %352, label %.preheader1063, !llvm.loop !30

352:                                              ; preds = %350
  call void @_ZN11alglib_impl31rmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %.01138, i64 noundef %24, ptr noundef %1)
  br label %.preheader1062

.preheader1062:                                   ; preds = %352, %368
  %.91108 = phi i64 [ 0, %352 ], [ %369, %368 ]
  %.199191107 = phi i1 [ %.18918.in, %352 ], [ %366, %368 ]
  br label %353

353:                                              ; preds = %.preheader1062, %365
  %.98471106 = phi i64 [ 0, %.preheader1062 ], [ %367, %365 ]
  %.209201105 = phi i1 [ %.199191107, %.preheader1062 ], [ %366, %365 ]
  br i1 %.209201105, label %365, label %354

354:                                              ; preds = %353
  %355 = load ptr, ptr %20, align 8, !tbaa !5
  %356 = getelementptr inbounds ptr, ptr %355, i64 %.91108
  %357 = load ptr, ptr %356, align 8, !tbaa !8
  %358 = getelementptr inbounds double, ptr %357, i64 %.98471106
  %359 = load double, ptr %358, align 8, !tbaa !10
  %360 = getelementptr inbounds double, ptr %358, i64 %.01138
  %361 = load double, ptr %360, align 8, !tbaa !10
  %362 = fsub double %359, %361
  %363 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %362, ptr noundef %1)
  %364 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %363, double noundef 5.000000e-13)
  br label %365

365:                                              ; preds = %354, %353
  %366 = phi i1 [ true, %353 ], [ %364, %354 ]
  %367 = add nuw nsw i64 %.98471106, 1
  %exitcond1226.not = icmp eq i64 %367, %.01138
  br i1 %exitcond1226.not, label %368, label %353, !llvm.loop !31

368:                                              ; preds = %365
  %369 = add nuw nsw i64 %.91108, 1
  %exitcond1227.not = icmp eq i64 %369, %.01138
  br i1 %exitcond1227.not, label %370, label %.preheader1062, !llvm.loop !32

370:                                              ; preds = %368
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %8, ptr noundef %1)
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %9, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.01138, i64 noundef %.01138, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.01138, i64 noundef %.01138, ptr noundef %1)
  br label %.preheader1061

.preheader1061:                                   ; preds = %370, %387
  %.101110 = phi i64 [ 0, %370 ], [ %402, %387 ]
  br label %371

371:                                              ; preds = %.preheader1061, %371
  %.108481109 = phi i64 [ 0, %.preheader1061 ], [ %386, %371 ]
  %372 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 0)
  %373 = extractvalue { double, double } %372, 0
  %374 = extractvalue { double, double } %372, 1
  %375 = load ptr, ptr %17, align 8, !tbaa !5
  %376 = getelementptr inbounds ptr, ptr %375, i64 %.101110
  %377 = load ptr, ptr %376, align 8, !tbaa !8
  %378 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %377, i64 %.108481109
  store double %373, ptr %378, align 8, !tbaa !10
  %.sroa.493.0..sroa_idx = getelementptr inbounds i8, ptr %378, i64 8
  store double %374, ptr %.sroa.493.0..sroa_idx, align 8, !tbaa !10
  %379 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 0)
  %380 = extractvalue { double, double } %379, 0
  %381 = extractvalue { double, double } %379, 1
  %382 = load ptr, ptr %18, align 8, !tbaa !5
  %383 = getelementptr inbounds ptr, ptr %382, i64 %.101110
  %384 = load ptr, ptr %383, align 8, !tbaa !8
  %385 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %384, i64 %.108481109
  store double %380, ptr %385, align 8, !tbaa !10
  %.sroa.491.0..sroa_idx = getelementptr inbounds i8, ptr %385, i64 8
  store double %381, ptr %.sroa.491.0..sroa_idx, align 8, !tbaa !10
  %386 = add nuw nsw i64 %.108481109, 1
  %exitcond1228.not = icmp eq i64 %386, %.01138
  br i1 %exitcond1228.not, label %387, label %371, !llvm.loop !33

387:                                              ; preds = %371
  %388 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 1)
  %389 = extractvalue { double, double } %388, 0
  %390 = extractvalue { double, double } %388, 1
  %391 = load ptr, ptr %17, align 8, !tbaa !5
  %392 = getelementptr inbounds ptr, ptr %391, i64 %.101110
  %393 = load ptr, ptr %392, align 8, !tbaa !8
  %394 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %393, i64 %.101110
  store double %389, ptr %394, align 8, !tbaa !10
  %.sroa.489.0..sroa_idx = getelementptr inbounds i8, ptr %394, i64 8
  store double %390, ptr %.sroa.489.0..sroa_idx, align 8, !tbaa !10
  %395 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 1)
  %396 = extractvalue { double, double } %395, 0
  %397 = extractvalue { double, double } %395, 1
  %398 = load ptr, ptr %18, align 8, !tbaa !5
  %399 = getelementptr inbounds ptr, ptr %398, i64 %.101110
  %400 = load ptr, ptr %399, align 8, !tbaa !8
  %401 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %400, i64 %.101110
  store double %396, ptr %401, align 8, !tbaa !10
  %.sroa.487.0..sroa_idx = getelementptr inbounds i8, ptr %401, i64 8
  store double %397, ptr %.sroa.487.0..sroa_idx, align 8, !tbaa !10
  %402 = add nuw nsw i64 %.101110, 1
  %exitcond1229.not = icmp eq i64 %402, %.01138
  br i1 %exitcond1229.not, label %403, label %.preheader1061, !llvm.loop !34

403:                                              ; preds = %387
  call void @_ZN11alglib_impl32cmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.01138, i64 noundef %.01138, ptr noundef %1)
  call void @_ZN11alglib_impl32cmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.01138, i64 noundef %.01138, ptr noundef %1)
  br label %.preheader1060

.preheader1060:                                   ; preds = %403, %458
  %.111114 = phi i64 [ 0, %403 ], [ %459, %458 ]
  %.79311113 = phi i1 [ %.6930.in, %403 ], [ %456, %458 ]
  br label %404

404:                                              ; preds = %.preheader1060, %.critedge
  %.118491112 = phi i64 [ 0, %.preheader1060 ], [ %457, %.critedge ]
  %.89321111 = phi i1 [ %.79311113, %.preheader1060 ], [ %456, %.critedge ]
  %405 = load ptr, ptr %17, align 8, !tbaa !5
  %406 = getelementptr inbounds ptr, ptr %405, i64 %.111114
  %407 = load ptr, ptr %406, align 8, !tbaa !8
  %408 = getelementptr inbounds ptr, ptr %405, i64 %.118491112
  %409 = load ptr, ptr %408, align 8, !tbaa !8
  %410 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %23)
  %411 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %407, i64 noundef 1, ptr noundef nonnull @.str.191, ptr noundef %409, i64 noundef 1, ptr noundef nonnull @.str.190, i64 noundef %410)
  %412 = extractvalue { double, double } %411, 0
  %413 = extractvalue { double, double } %411, 1
  %414 = icmp eq i64 %.111114, %.118491112
  br i1 %414, label %415, label %421

415:                                              ; preds = %404
  br i1 %.89321111, label %425, label %416

416:                                              ; preds = %415
  %417 = call { double, double } @_ZN11alglib_impl10ae_c_sub_dENS_10ae_complexEd(double %412, double %413, double noundef 1.000000e+00)
  %418 = extractvalue { double, double } %417, 0
  %419 = extractvalue { double, double } %417, 1
  %420 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %418, double %419, ptr noundef %1)
  br label %.sink.split1307

421:                                              ; preds = %404
  br i1 %.89321111, label %425, label %422

422:                                              ; preds = %421
  %423 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %412, double %413, ptr noundef %1)
  br label %.sink.split1307

.sink.split1307:                                  ; preds = %416, %422
  %.sink1308 = phi double [ %423, %422 ], [ %420, %416 ]
  %424 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %.sink1308, double noundef 5.000000e-13)
  br label %425

425:                                              ; preds = %.sink.split1307, %421, %415
  %.9933.in = phi i1 [ true, %415 ], [ true, %421 ], [ %424, %.sink.split1307 ]
  %426 = load ptr, ptr %18, align 8, !tbaa !5
  %427 = getelementptr inbounds ptr, ptr %426, i64 %.111114
  %428 = load ptr, ptr %427, align 8, !tbaa !8
  %429 = getelementptr inbounds ptr, ptr %426, i64 %.118491112
  %430 = load ptr, ptr %429, align 8, !tbaa !8
  %431 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %23)
  %432 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %428, i64 noundef 1, ptr noundef nonnull @.str.191, ptr noundef %430, i64 noundef 1, ptr noundef nonnull @.str.190, i64 noundef %431)
  %433 = extractvalue { double, double } %432, 0
  %434 = extractvalue { double, double } %432, 1
  br i1 %414, label %435, label %442

435:                                              ; preds = %425
  br i1 %.9933.in, label %.critedge, label %436

436:                                              ; preds = %435
  %437 = call { double, double } @_ZN11alglib_impl10ae_c_sub_dENS_10ae_complexEd(double %433, double %434, double noundef 1.000000e+00)
  %438 = extractvalue { double, double } %437, 0
  %439 = extractvalue { double, double } %437, 1
  %440 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %438, double %439, ptr noundef %1)
  %441 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %440, double noundef 5.000000e-13)
  br i1 %441, label %.critedge, label %446

442:                                              ; preds = %425
  br i1 %.9933.in, label %.critedge, label %443

443:                                              ; preds = %442
  %444 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %433, double %434, ptr noundef %1)
  %445 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %444, double noundef 5.000000e-13)
  br i1 %445, label %.critedge, label %446

446:                                              ; preds = %436, %443
  %447 = load ptr, ptr %17, align 8, !tbaa !5
  %448 = getelementptr inbounds ptr, ptr %447, i64 %.111114
  %449 = load ptr, ptr %448, align 8, !tbaa !8
  %450 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %449, i64 %.118491112
  %.sroa.068.0.copyload = load double, ptr %450, align 8, !tbaa !10
  %.sroa.269.0..sroa_idx = getelementptr inbounds i8, ptr %450, i64 8
  %.sroa.269.0.copyload = load double, ptr %.sroa.269.0..sroa_idx, align 8, !tbaa !10
  %451 = load ptr, ptr %18, align 8, !tbaa !5
  %452 = getelementptr inbounds ptr, ptr %451, i64 %.111114
  %453 = load ptr, ptr %452, align 8, !tbaa !8
  %454 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %453, i64 %.118491112
  %.sroa.066.0.copyload = load double, ptr %454, align 8, !tbaa !10
  %.sroa.267.0..sroa_idx = getelementptr inbounds i8, ptr %454, i64 8
  %.sroa.267.0.copyload = load double, ptr %.sroa.267.0..sroa_idx, align 8, !tbaa !10
  %455 = call noundef zeroext i1 @_ZN11alglib_impl7ae_c_eqENS_10ae_complexES0_(double %.sroa.068.0.copyload, double %.sroa.269.0.copyload, double %.sroa.066.0.copyload, double %.sroa.267.0.copyload)
  br label %.critedge

.critedge:                                        ; preds = %436, %435, %442, %446, %443
  %456 = phi i1 [ true, %443 ], [ %455, %446 ], [ true, %442 ], [ true, %435 ], [ true, %436 ]
  %457 = add nuw nsw i64 %.118491112, 1
  %exitcond1230.not = icmp eq i64 %457, %.01138
  br i1 %exitcond1230.not, label %458, label %404, !llvm.loop !35

458:                                              ; preds = %.critedge
  %459 = add nuw nsw i64 %.111114, 1
  %exitcond1231.not = icmp eq i64 %459, %.01138
  br i1 %exitcond1231.not, label %.preheader1059, label %.preheader1060, !llvm.loop !36

.preheader1059:                                   ; preds = %458, %478
  %.121116 = phi i64 [ %479, %478 ], [ 0, %458 ]
  br label %460

460:                                              ; preds = %.preheader1059, %460
  %.128501115 = phi i64 [ 0, %.preheader1059 ], [ %477, %460 ]
  %461 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %462 = call double @llvm.fmuladd.f64(double %461, double 2.000000e+00, double -1.000000e+00)
  %463 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef %462)
  %464 = extractvalue { double, double } %463, 0
  %465 = extractvalue { double, double } %463, 1
  %466 = load ptr, ptr %21, align 8, !tbaa !5
  %467 = getelementptr inbounds ptr, ptr %466, i64 %.121116
  %468 = load ptr, ptr %467, align 8, !tbaa !8
  %469 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %468, i64 %.128501115
  store double %464, ptr %469, align 8, !tbaa !10
  %.sroa.465.0..sroa_idx = getelementptr inbounds i8, ptr %469, i64 8
  store double %465, ptr %.sroa.465.0..sroa_idx, align 8, !tbaa !10
  %470 = load ptr, ptr %21, align 8, !tbaa !5
  %471 = getelementptr inbounds ptr, ptr %470, i64 %.121116
  %472 = load ptr, ptr %471, align 8, !tbaa !8
  %473 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %472, i64 %.128501115
  %474 = getelementptr inbounds ptr, ptr %471, i64 %.01138
  %475 = load ptr, ptr %474, align 8, !tbaa !8
  %476 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %475, i64 %.128501115
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %476, ptr noundef nonnull align 8 dereferenceable(16) %473, i64 16, i1 false), !tbaa.struct !37
  %477 = add nuw nsw i64 %.128501115, 1
  %exitcond1232.not = icmp eq i64 %477, %.01138
  br i1 %exitcond1232.not, label %478, label %460, !llvm.loop !38

478:                                              ; preds = %460
  %479 = add nuw nsw i64 %.121116, 1
  %exitcond1233.not = icmp eq i64 %479, %.01138
  br i1 %exitcond1233.not, label %480, label %.preheader1059, !llvm.loop !39

480:                                              ; preds = %478
  call void @_ZN11alglib_impl32cmatrixrndorthogonalfromtherightEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %24, i64 noundef %.01138, ptr noundef %1)
  br label %.preheader1058

.preheader1058:                                   ; preds = %480, %498
  %.131120 = phi i64 [ 0, %480 ], [ %499, %498 ]
  %.119351119 = phi i1 [ %456, %480 ], [ %496, %498 ]
  br label %481

481:                                              ; preds = %.preheader1058, %495
  %.138511118 = phi i64 [ 0, %.preheader1058 ], [ %497, %495 ]
  %.129361117 = phi i1 [ %.119351119, %.preheader1058 ], [ %496, %495 ]
  br i1 %.129361117, label %495, label %482

482:                                              ; preds = %481
  %483 = load ptr, ptr %21, align 8, !tbaa !5
  %484 = getelementptr inbounds ptr, ptr %483, i64 %.131120
  %485 = getelementptr inbounds ptr, ptr %484, i64 %.01138
  %486 = load ptr, ptr %485, align 8, !tbaa !8
  %487 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %486, i64 %.138511118
  %.sroa.060.0.copyload = load double, ptr %487, align 8, !tbaa !10
  %.sroa.261.0..sroa_idx = getelementptr inbounds i8, ptr %487, i64 8
  %.sroa.261.0.copyload = load double, ptr %.sroa.261.0..sroa_idx, align 8, !tbaa !10
  %488 = load ptr, ptr %484, align 8, !tbaa !8
  %489 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %488, i64 %.138511118
  %.sroa.058.0.copyload = load double, ptr %489, align 8, !tbaa !10
  %.sroa.259.0..sroa_idx = getelementptr inbounds i8, ptr %489, i64 8
  %.sroa.259.0.copyload = load double, ptr %.sroa.259.0..sroa_idx, align 8, !tbaa !10
  %490 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %.sroa.060.0.copyload, double %.sroa.261.0.copyload, double %.sroa.058.0.copyload, double %.sroa.259.0.copyload)
  %491 = extractvalue { double, double } %490, 0
  %492 = extractvalue { double, double } %490, 1
  %493 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %491, double %492, ptr noundef %1)
  %494 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %493, double noundef 5.000000e-13)
  br label %495

495:                                              ; preds = %482, %481
  %496 = phi i1 [ true, %481 ], [ %494, %482 ]
  %497 = add nuw nsw i64 %.138511118, 1
  %exitcond1234.not = icmp eq i64 %497, %.01138
  br i1 %exitcond1234.not, label %498, label %481, !llvm.loop !40

498:                                              ; preds = %495
  %499 = add nuw nsw i64 %.131120, 1
  %exitcond1235.not = icmp eq i64 %499, %.01138
  br i1 %exitcond1235.not, label %500, label %.preheader1058, !llvm.loop !41

500:                                              ; preds = %498
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %8, ptr noundef %1)
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %9, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.01138, i64 noundef %.01138, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.01138, i64 noundef %.01138, ptr noundef %1)
  br label %.preheader1057

.preheader1057:                                   ; preds = %500, %517
  %.141122 = phi i64 [ 0, %500 ], [ %532, %517 ]
  br label %501

501:                                              ; preds = %.preheader1057, %501
  %.148521121 = phi i64 [ 0, %.preheader1057 ], [ %516, %501 ]
  %502 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 0)
  %503 = extractvalue { double, double } %502, 0
  %504 = extractvalue { double, double } %502, 1
  %505 = load ptr, ptr %17, align 8, !tbaa !5
  %506 = getelementptr inbounds ptr, ptr %505, i64 %.141122
  %507 = load ptr, ptr %506, align 8, !tbaa !8
  %508 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %507, i64 %.148521121
  store double %503, ptr %508, align 8, !tbaa !10
  %.sroa.457.0..sroa_idx = getelementptr inbounds i8, ptr %508, i64 8
  store double %504, ptr %.sroa.457.0..sroa_idx, align 8, !tbaa !10
  %509 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 0)
  %510 = extractvalue { double, double } %509, 0
  %511 = extractvalue { double, double } %509, 1
  %512 = load ptr, ptr %18, align 8, !tbaa !5
  %513 = getelementptr inbounds ptr, ptr %512, i64 %.141122
  %514 = load ptr, ptr %513, align 8, !tbaa !8
  %515 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %514, i64 %.148521121
  store double %510, ptr %515, align 8, !tbaa !10
  %.sroa.455.0..sroa_idx = getelementptr inbounds i8, ptr %515, i64 8
  store double %511, ptr %.sroa.455.0..sroa_idx, align 8, !tbaa !10
  %516 = add nuw nsw i64 %.148521121, 1
  %exitcond1236.not = icmp eq i64 %516, %.01138
  br i1 %exitcond1236.not, label %517, label %501, !llvm.loop !42

517:                                              ; preds = %501
  %518 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 1)
  %519 = extractvalue { double, double } %518, 0
  %520 = extractvalue { double, double } %518, 1
  %521 = load ptr, ptr %17, align 8, !tbaa !5
  %522 = getelementptr inbounds ptr, ptr %521, i64 %.141122
  %523 = load ptr, ptr %522, align 8, !tbaa !8
  %524 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %523, i64 %.141122
  store double %519, ptr %524, align 8, !tbaa !10
  %.sroa.453.0..sroa_idx = getelementptr inbounds i8, ptr %524, i64 8
  store double %520, ptr %.sroa.453.0..sroa_idx, align 8, !tbaa !10
  %525 = call { double, double } @_ZN11alglib_impl17ae_complex_from_iEl(i64 noundef 1)
  %526 = extractvalue { double, double } %525, 0
  %527 = extractvalue { double, double } %525, 1
  %528 = load ptr, ptr %18, align 8, !tbaa !5
  %529 = getelementptr inbounds ptr, ptr %528, i64 %.141122
  %530 = load ptr, ptr %529, align 8, !tbaa !8
  %531 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %530, i64 %.141122
  store double %526, ptr %531, align 8, !tbaa !10
  %.sroa.451.0..sroa_idx = getelementptr inbounds i8, ptr %531, i64 8
  store double %527, ptr %.sroa.451.0..sroa_idx, align 8, !tbaa !10
  %532 = add nuw nsw i64 %.141122, 1
  %exitcond1237.not = icmp eq i64 %532, %.01138
  br i1 %exitcond1237.not, label %533, label %.preheader1057, !llvm.loop !43

533:                                              ; preds = %517
  call void @_ZN11alglib_impl31cmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.01138, i64 noundef %.01138, ptr noundef %1)
  call void @_ZN11alglib_impl31cmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %.01138, i64 noundef %.01138, ptr noundef %1)
  br label %.preheader1056

.preheader1056:                                   ; preds = %533, %588
  %.151126 = phi i64 [ 0, %533 ], [ %589, %588 ]
  %.139371125 = phi i1 [ %496, %533 ], [ %586, %588 ]
  br label %534

534:                                              ; preds = %.preheader1056, %.critedge1004
  %.158531124 = phi i64 [ 0, %.preheader1056 ], [ %587, %.critedge1004 ]
  %.149381123 = phi i1 [ %.139371125, %.preheader1056 ], [ %586, %.critedge1004 ]
  %535 = load ptr, ptr %17, align 8, !tbaa !5
  %536 = getelementptr inbounds ptr, ptr %535, i64 %.151126
  %537 = load ptr, ptr %536, align 8, !tbaa !8
  %538 = getelementptr inbounds ptr, ptr %535, i64 %.158531124
  %539 = load ptr, ptr %538, align 8, !tbaa !8
  %540 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %23)
  %541 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %537, i64 noundef 1, ptr noundef nonnull @.str.191, ptr noundef %539, i64 noundef 1, ptr noundef nonnull @.str.190, i64 noundef %540)
  %542 = extractvalue { double, double } %541, 0
  %543 = extractvalue { double, double } %541, 1
  %544 = icmp eq i64 %.151126, %.158531124
  br i1 %544, label %545, label %551

545:                                              ; preds = %534
  br i1 %.149381123, label %555, label %546

546:                                              ; preds = %545
  %547 = call { double, double } @_ZN11alglib_impl10ae_c_sub_dENS_10ae_complexEd(double %542, double %543, double noundef 1.000000e+00)
  %548 = extractvalue { double, double } %547, 0
  %549 = extractvalue { double, double } %547, 1
  %550 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %548, double %549, ptr noundef %1)
  br label %.sink.split1309

551:                                              ; preds = %534
  br i1 %.149381123, label %555, label %552

552:                                              ; preds = %551
  %553 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %542, double %543, ptr noundef %1)
  br label %.sink.split1309

.sink.split1309:                                  ; preds = %546, %552
  %.sink1310 = phi double [ %553, %552 ], [ %550, %546 ]
  %554 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %.sink1310, double noundef 5.000000e-13)
  br label %555

555:                                              ; preds = %.sink.split1309, %551, %545
  %.15939.in = phi i1 [ true, %545 ], [ true, %551 ], [ %554, %.sink.split1309 ]
  %556 = load ptr, ptr %18, align 8, !tbaa !5
  %557 = getelementptr inbounds ptr, ptr %556, i64 %.151126
  %558 = load ptr, ptr %557, align 8, !tbaa !8
  %559 = getelementptr inbounds ptr, ptr %556, i64 %.158531124
  %560 = load ptr, ptr %559, align 8, !tbaa !8
  %561 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %23)
  %562 = call { double, double } @_ZN11alglib_impl16ae_v_cdotproductEPKNS_10ae_complexElPKcS2_lS4_l(ptr noundef %558, i64 noundef 1, ptr noundef nonnull @.str.191, ptr noundef %560, i64 noundef 1, ptr noundef nonnull @.str.190, i64 noundef %561)
  %563 = extractvalue { double, double } %562, 0
  %564 = extractvalue { double, double } %562, 1
  br i1 %544, label %565, label %572

565:                                              ; preds = %555
  br i1 %.15939.in, label %.critedge1004, label %566

566:                                              ; preds = %565
  %567 = call { double, double } @_ZN11alglib_impl10ae_c_sub_dENS_10ae_complexEd(double %563, double %564, double noundef 1.000000e+00)
  %568 = extractvalue { double, double } %567, 0
  %569 = extractvalue { double, double } %567, 1
  %570 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %568, double %569, ptr noundef %1)
  %571 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %570, double noundef 5.000000e-13)
  br i1 %571, label %.critedge1004, label %576

572:                                              ; preds = %555
  br i1 %.15939.in, label %.critedge1004, label %573

573:                                              ; preds = %572
  %574 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %563, double %564, ptr noundef %1)
  %575 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %574, double noundef 5.000000e-13)
  br i1 %575, label %.critedge1004, label %576

576:                                              ; preds = %566, %573
  %577 = load ptr, ptr %17, align 8, !tbaa !5
  %578 = getelementptr inbounds ptr, ptr %577, i64 %.151126
  %579 = load ptr, ptr %578, align 8, !tbaa !8
  %580 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %579, i64 %.158531124
  %.sroa.032.0.copyload = load double, ptr %580, align 8, !tbaa !10
  %.sroa.233.0..sroa_idx = getelementptr inbounds i8, ptr %580, i64 8
  %.sroa.233.0.copyload = load double, ptr %.sroa.233.0..sroa_idx, align 8, !tbaa !10
  %581 = load ptr, ptr %18, align 8, !tbaa !5
  %582 = getelementptr inbounds ptr, ptr %581, i64 %.151126
  %583 = load ptr, ptr %582, align 8, !tbaa !8
  %584 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %583, i64 %.158531124
  %.sroa.030.0.copyload = load double, ptr %584, align 8, !tbaa !10
  %.sroa.231.0..sroa_idx = getelementptr inbounds i8, ptr %584, i64 8
  %.sroa.231.0.copyload = load double, ptr %.sroa.231.0..sroa_idx, align 8, !tbaa !10
  %585 = call noundef zeroext i1 @_ZN11alglib_impl7ae_c_eqENS_10ae_complexES0_(double %.sroa.032.0.copyload, double %.sroa.233.0.copyload, double %.sroa.030.0.copyload, double %.sroa.231.0.copyload)
  br label %.critedge1004

.critedge1004:                                    ; preds = %566, %565, %572, %576, %573
  %586 = phi i1 [ true, %573 ], [ %585, %576 ], [ true, %572 ], [ true, %565 ], [ true, %566 ]
  %587 = add nuw nsw i64 %.158531124, 1
  %exitcond1238.not = icmp eq i64 %587, %.01138
  br i1 %exitcond1238.not, label %588, label %534, !llvm.loop !44

588:                                              ; preds = %.critedge1004
  %589 = add nuw nsw i64 %.151126, 1
  %exitcond1239.not = icmp eq i64 %589, %.01138
  br i1 %exitcond1239.not, label %.preheader1055, label %.preheader1056, !llvm.loop !45

.preheader1055:                                   ; preds = %588, %606
  %.161128 = phi i64 [ %607, %606 ], [ 0, %588 ]
  br label %590

590:                                              ; preds = %.preheader1055, %590
  %.168541127 = phi i64 [ 0, %.preheader1055 ], [ %605, %590 ]
  %591 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %592 = call double @llvm.fmuladd.f64(double %591, double 2.000000e+00, double -1.000000e+00)
  %593 = call { double, double } @_ZN11alglib_impl17ae_complex_from_dEd(double noundef %592)
  %594 = extractvalue { double, double } %593, 0
  %595 = extractvalue { double, double } %593, 1
  %596 = load ptr, ptr %22, align 8, !tbaa !5
  %597 = getelementptr inbounds ptr, ptr %596, i64 %.161128
  %598 = load ptr, ptr %597, align 8, !tbaa !8
  %599 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %598, i64 %.168541127
  store double %594, ptr %599, align 8, !tbaa !10
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %599, i64 8
  store double %595, ptr %.sroa.4.0..sroa_idx, align 8, !tbaa !10
  %600 = load ptr, ptr %22, align 8, !tbaa !5
  %601 = getelementptr inbounds ptr, ptr %600, i64 %.161128
  %602 = load ptr, ptr %601, align 8, !tbaa !8
  %603 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %602, i64 %.168541127
  %604 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %603, i64 %.01138
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %604, ptr noundef nonnull align 8 dereferenceable(16) %603, i64 16, i1 false), !tbaa.struct !37
  %605 = add nuw nsw i64 %.168541127, 1
  %exitcond1240.not = icmp eq i64 %605, %.01138
  br i1 %exitcond1240.not, label %606, label %590, !llvm.loop !46

606:                                              ; preds = %590
  %607 = add nuw nsw i64 %.161128, 1
  %exitcond1241.not = icmp eq i64 %607, %.01138
  br i1 %exitcond1241.not, label %608, label %.preheader1055, !llvm.loop !47

608:                                              ; preds = %606
  call void @_ZN11alglib_impl31cmatrixrndorthogonalfromtheleftEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %.01138, i64 noundef %24, ptr noundef %1)
  br label %.preheader1054

.preheader1054:                                   ; preds = %608, %624
  %.171132 = phi i64 [ 0, %608 ], [ %625, %624 ]
  %.179411131 = phi i1 [ %586, %608 ], [ %622, %624 ]
  br label %609

609:                                              ; preds = %.preheader1054, %621
  %.178551130 = phi i64 [ 0, %.preheader1054 ], [ %623, %621 ]
  %.189421129 = phi i1 [ %.179411131, %.preheader1054 ], [ %622, %621 ]
  br i1 %.189421129, label %621, label %610

610:                                              ; preds = %609
  %611 = load ptr, ptr %22, align 8, !tbaa !5
  %612 = getelementptr inbounds ptr, ptr %611, i64 %.171132
  %613 = load ptr, ptr %612, align 8, !tbaa !8
  %614 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %613, i64 %.178551130
  %.sroa.025.0.copyload = load double, ptr %614, align 8, !tbaa !10
  %.sroa.226.0..sroa_idx = getelementptr inbounds i8, ptr %614, i64 8
  %.sroa.226.0.copyload = load double, ptr %.sroa.226.0..sroa_idx, align 8, !tbaa !10
  %615 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %614, i64 %.01138
  %.sroa.023.0.copyload = load double, ptr %615, align 8, !tbaa !10
  %.sroa.224.0..sroa_idx = getelementptr inbounds i8, ptr %615, i64 8
  %.sroa.224.0.copyload = load double, ptr %.sroa.224.0..sroa_idx, align 8, !tbaa !10
  %616 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %.sroa.025.0.copyload, double %.sroa.226.0.copyload, double %.sroa.023.0.copyload, double %.sroa.224.0.copyload)
  %617 = extractvalue { double, double } %616, 0
  %618 = extractvalue { double, double } %616, 1
  %619 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %617, double %618, ptr noundef %1)
  %620 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %619, double noundef 5.000000e-13)
  br label %621

621:                                              ; preds = %610, %609
  %622 = phi i1 [ true, %609 ], [ %620, %610 ]
  %623 = add nuw nsw i64 %.178551130, 1
  %exitcond1242.not = icmp eq i64 %623, %.01138
  br i1 %exitcond1242.not, label %624, label %609, !llvm.loop !48

624:                                              ; preds = %621
  %625 = add nuw nsw i64 %.171132, 1
  %exitcond1243.not = icmp eq i64 %625, %.01138
  br i1 %exitcond1243.not, label %626, label %.preheader1054, !llvm.loop !49

626:                                              ; preds = %624
  %627 = add nuw nsw i64 %.08641135, 1
  %exitcond1244.not = icmp eq i64 %627, 16
  br i1 %exitcond1244.not, label %628, label %30, !llvm.loop !50

628:                                              ; preds = %626
  %629 = add nuw nsw i64 %.01138, 1
  %exitcond1245.not = icmp eq i64 %629, 21
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond1245.not, label %.preheader1053, label %.preheader1076, !llvm.loop !51

.preheader1052:                                   ; preds = %.preheader1053, %701
  %indvar1357 = phi i64 [ 0, %.preheader1053 ], [ %indvar.next1358, %701 ]
  %indvars.iv = phi i64 [ 3, %.preheader1053 ], [ %indvars.iv.next, %701 ]
  %.11149 = phi i64 [ 2, %.preheader1053 ], [ %630, %701 ]
  %.219211148 = phi i8 [ %28, %.preheader1053 ], [ %.23923, %701 ]
  %630 = add nuw nsw i64 %.11149, 1
  %xtraiter1359 = and i64 %indvar1357, 1
  %631 = icmp eq i64 %indvar1357, -1
  %632 = and i64 %indvar1357, -2
  %lcmp.mod1360.not = icmp eq i64 %xtraiter1359, 0
  br label %633

633:                                              ; preds = %.preheader1052, %699
  %.18651147 = phi i64 [ 1, %.preheader1052 ], [ %700, %699 ]
  %.229221146 = phi i8 [ %.219211148, %.preheader1052 ], [ %.23923, %699 ]
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %4, ptr noundef %1)
  %634 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000000e+03, ptr noundef %1)
  %635 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %636 = fmul double %634, %635
  %637 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %636, ptr noundef %1)
  call void @_ZN11alglib_impl14rmatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %.11149, double noundef %637, ptr noundef nonnull %4, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef %630, i64 noundef %630, ptr noundef %1)
  br label %.preheader1051

.preheader1051:                                   ; preds = %633, %673
  %.181140 = phi i64 [ 1, %633 ], [ %674, %673 ]
  br i1 %631, label %.unr-lcssa1355, label %.preheader1051.new

.preheader1051.new:                               ; preds = %.preheader1051, %.preheader1051.new
  %.188561139 = phi i64 [ %661, %.preheader1051.new ], [ 1, %.preheader1051 ]
  %niter1363 = phi i64 [ %niter1363.next.1, %.preheader1051.new ], [ 0, %.preheader1051 ]
  %638 = load ptr, ptr %15, align 8, !tbaa !5
  %639 = getelementptr ptr, ptr %638, i64 %.181140
  %640 = getelementptr i8, ptr %639, i64 -8
  %641 = load ptr, ptr %640, align 8, !tbaa !8
  %642 = getelementptr double, ptr %641, i64 %.188561139
  %643 = getelementptr i8, ptr %642, i64 -8
  %644 = load double, ptr %643, align 8, !tbaa !10
  %645 = load ptr, ptr %16, align 8, !tbaa !5
  %646 = getelementptr inbounds ptr, ptr %645, i64 %.181140
  %647 = load ptr, ptr %646, align 8, !tbaa !8
  %648 = getelementptr inbounds double, ptr %647, i64 %.188561139
  store double %644, ptr %648, align 8, !tbaa !10
  %649 = add nuw nsw i64 %.188561139, 1
  %650 = load ptr, ptr %15, align 8, !tbaa !5
  %651 = getelementptr ptr, ptr %650, i64 %.181140
  %652 = getelementptr i8, ptr %651, i64 -8
  %653 = load ptr, ptr %652, align 8, !tbaa !8
  %654 = getelementptr double, ptr %653, i64 %649
  %655 = getelementptr i8, ptr %654, i64 -8
  %656 = load double, ptr %655, align 8, !tbaa !10
  %657 = load ptr, ptr %16, align 8, !tbaa !5
  %658 = getelementptr inbounds ptr, ptr %657, i64 %.181140
  %659 = load ptr, ptr %658, align 8, !tbaa !8
  %660 = getelementptr inbounds double, ptr %659, i64 %649
  store double %656, ptr %660, align 8, !tbaa !10
  %661 = add nuw nsw i64 %.188561139, 2
  %niter1363.next.1 = add i64 %niter1363, 2
  %niter1363.ncmp.1 = icmp eq i64 %niter1363, %632
  br i1 %niter1363.ncmp.1, label %.unr-lcssa1355, label %.preheader1051.new, !llvm.loop !52

.unr-lcssa1355:                                   ; preds = %.preheader1051.new, %.preheader1051
  %.188561139.unr = phi i64 [ 1, %.preheader1051 ], [ %661, %.preheader1051.new ]
  br i1 %lcmp.mod1360.not, label %673, label %.epilog-lcssa1361

.epilog-lcssa1361:                                ; preds = %.unr-lcssa1355
  %662 = load ptr, ptr %15, align 8, !tbaa !5
  %663 = getelementptr ptr, ptr %662, i64 %.181140
  %664 = getelementptr i8, ptr %663, i64 -8
  %665 = load ptr, ptr %664, align 8, !tbaa !8
  %666 = getelementptr double, ptr %665, i64 %.188561139.unr
  %667 = getelementptr i8, ptr %666, i64 -8
  %668 = load double, ptr %667, align 8, !tbaa !10
  %669 = load ptr, ptr %16, align 8, !tbaa !5
  %670 = getelementptr inbounds ptr, ptr %669, i64 %.181140
  %671 = load ptr, ptr %670, align 8, !tbaa !8
  %672 = getelementptr inbounds double, ptr %671, i64 %.188561139.unr
  store double %668, ptr %672, align 8, !tbaa !10
  br label %673

673:                                              ; preds = %.unr-lcssa1355, %.epilog-lcssa1361
  %674 = add nuw nsw i64 %.181140, 1
  %exitcond1247.not = icmp eq i64 %674, %indvars.iv
  br i1 %exitcond1247.not, label %675, label %.preheader1051, !llvm.loop !53

675:                                              ; preds = %673
  %676 = call noundef zeroext i1 @_ZL39testmatgenunit_obsoletesvddecompositionPN11alglib_impl9ae_matrixEllPNS_9ae_vectorES1_PNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef %.11149, i64 noundef %.11149, ptr noundef nonnull %14, ptr noundef nonnull %7, ptr noundef %1)
  br i1 %676, label %.lr.ph.preheader, label %699

.lr.ph.preheader:                                 ; preds = %675
  %677 = load ptr, ptr %29, align 8, !tbaa !5
  %678 = getelementptr inbounds i8, ptr %677, i64 8
  %679 = load double, ptr %678, align 8, !tbaa !10
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %691
  %.191144 = phi i64 [ %692, %691 ], [ 2, %.lr.ph.preheader ]
  %.08701143 = phi double [ %.1871, %691 ], [ %679, %.lr.ph.preheader ]
  %.08721142 = phi double [ %..08721142, %691 ], [ %679, %.lr.ph.preheader ]
  %680 = load ptr, ptr %29, align 8, !tbaa !5
  %681 = getelementptr inbounds double, ptr %680, i64 %.191144
  %682 = load double, ptr %681, align 8, !tbaa !10
  %683 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %682, double noundef %.08721142)
  %.pre = load ptr, ptr %29, align 8, !tbaa !5
  %684 = getelementptr inbounds double, ptr %.pre, i64 %.191144
  %685 = load double, ptr %684, align 8, !tbaa !10
  %..08721142 = select i1 %683, double %685, double %.08721142
  %686 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %685, double noundef %.08701143)
  br i1 %686, label %687, label %691

687:                                              ; preds = %.lr.ph
  %688 = load ptr, ptr %29, align 8, !tbaa !5
  %689 = getelementptr inbounds double, ptr %688, i64 %.191144
  %690 = load double, ptr %689, align 8, !tbaa !10
  br label %691

691:                                              ; preds = %.lr.ph, %687
  %.1871 = phi double [ %690, %687 ], [ %.08701143, %.lr.ph ]
  %692 = add nuw nsw i64 %.191144, 1
  %exitcond1248.not = icmp eq i64 %692, %indvars.iv
  br i1 %exitcond1248.not, label %._crit_edge, label %.lr.ph, !llvm.loop !54

._crit_edge:                                      ; preds = %691
  %693 = fdiv double %..08721142, %.1871
  %694 = fdiv double %693, %637
  %695 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef %694, ptr noundef %1)
  %696 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %695, ptr noundef %1)
  %697 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 0x3FF00000000008CC, ptr noundef %1)
  %698 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %696, double noundef %697)
  %spec.select = select i1 %698, i8 1, i8 %.229221146
  br label %699

699:                                              ; preds = %._crit_edge, %675
  %.23923 = phi i8 [ %.229221146, %675 ], [ %spec.select, %._crit_edge ]
  %700 = add nuw nsw i64 %.18651147, 1
  %exitcond1249.not = icmp eq i64 %700, 16
  br i1 %exitcond1249.not, label %701, label %633, !llvm.loop !55

701:                                              ; preds = %699
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond1250.not = icmp eq i64 %indvars.iv.next, 22
  %indvar.next1358 = add i64 %indvar1357, 1
  br i1 %exitcond1250.not, label %.preheader1049, label %.preheader1052, !llvm.loop !56

.preheader1049:                                   ; preds = %701, %879
  %.21190 = phi i64 [ %880, %879 ], [ 2, %701 ]
  %.08741189 = phi i1 [ %828, %879 ], [ false, %701 ]
  %.08791188 = phi i1 [ %873, %879 ], [ false, %701 ]
  %.08861187 = phi i1 [ %749, %879 ], [ false, %701 ]
  %.08931186 = phi i1 [ %797, %879 ], [ false, %701 ]
  br label %702

702:                                              ; preds = %.preheader1049, %753
  %.28661159 = phi i64 [ 1, %.preheader1049 ], [ %754, %753 ]
  %.18871158 = phi i1 [ %.08861187, %.preheader1049 ], [ %749, %753 ]
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %4, ptr noundef %1)
  %703 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000000e+03, ptr noundef %1)
  %704 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %705 = fmul double %703, %704
  %706 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %705, ptr noundef %1)
  call void @_ZN11alglib_impl16spdmatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %.21190, double noundef %706, ptr noundef nonnull %4, ptr noundef %1)
  br i1 %.18871158, label %.preheader1045.preheader, label %707

707:                                              ; preds = %702
  %708 = call noundef double @_ZL22testmatgenunit_svdcondPN11alglib_impl9ae_matrixElPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.21190, ptr noundef %1)
  %709 = fdiv double %708, %706
  %710 = fadd double %709, -1.000000e+00
  %711 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %710, double noundef 5.000000e-13)
  br i1 %711, label %.preheader1045.preheader, label %712

712:                                              ; preds = %707
  %713 = call noundef zeroext i1 @_ZL20testmatgenunit_isspdPN11alglib_impl9ae_matrixElbPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.21190, i1 noundef zeroext true, ptr noundef %1)
  %714 = xor i1 %713, true
  br label %.preheader1045.preheader

.preheader1045.preheader:                         ; preds = %702, %712, %707
  %.28881152.ph = phi i1 [ true, %707 ], [ %714, %712 ], [ true, %702 ]
  br label %.preheader1045

.preheader1045:                                   ; preds = %.preheader1045.preheader, %732
  %.201153 = phi i64 [ %733, %732 ], [ 0, %.preheader1045.preheader ]
  %.28881152 = phi i1 [ %730, %732 ], [ %.28881152.ph, %.preheader1045.preheader ]
  br label %715

715:                                              ; preds = %.preheader1045, %729
  %.198571151 = phi i64 [ 0, %.preheader1045 ], [ %731, %729 ]
  %.38891150 = phi i1 [ %.28881152, %.preheader1045 ], [ %730, %729 ]
  br i1 %.38891150, label %729, label %716

716:                                              ; preds = %715
  %717 = load ptr, ptr %15, align 8, !tbaa !5
  %718 = getelementptr inbounds ptr, ptr %717, i64 %.201153
  %719 = load ptr, ptr %718, align 8, !tbaa !8
  %720 = getelementptr inbounds double, ptr %719, i64 %.198571151
  %721 = load double, ptr %720, align 8, !tbaa !10
  %722 = getelementptr inbounds ptr, ptr %717, i64 %.198571151
  %723 = load ptr, ptr %722, align 8, !tbaa !8
  %724 = getelementptr inbounds double, ptr %723, i64 %.201153
  %725 = load double, ptr %724, align 8, !tbaa !10
  %726 = fsub double %721, %725
  %727 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %726, ptr noundef %1)
  %728 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %727, double noundef 5.000000e-13)
  br label %729

729:                                              ; preds = %716, %715
  %730 = phi i1 [ true, %715 ], [ %728, %716 ]
  %731 = add nuw nsw i64 %.198571151, 1
  %exitcond1251.not = icmp eq i64 %731, %.21190
  br i1 %exitcond1251.not, label %732, label %715, !llvm.loop !57

732:                                              ; preds = %729
  %733 = add nuw nsw i64 %.201153, 1
  %exitcond1252.not = icmp eq i64 %733, %.21190
  br i1 %exitcond1252.not, label %734, label %.preheader1045, !llvm.loop !58

734:                                              ; preds = %732
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef %1)
  call void @_ZN11alglib_impl16spdmatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %.21190, double noundef %706, ptr noundef nonnull %5, ptr noundef %1)
  br label %.preheader1044

.preheader1044:                                   ; preds = %734, %751
  %.211157 = phi i64 [ 0, %734 ], [ %752, %751 ]
  %.48901156 = phi i1 [ %730, %734 ], [ %749, %751 ]
  br label %735

735:                                              ; preds = %.preheader1044, %748
  %.208581155 = phi i64 [ 0, %.preheader1044 ], [ %750, %748 ]
  %.58911154 = phi i1 [ %.48901156, %.preheader1044 ], [ %749, %748 ]
  br i1 %.58911154, label %748, label %736

736:                                              ; preds = %735
  %737 = load ptr, ptr %15, align 8, !tbaa !5
  %738 = getelementptr inbounds ptr, ptr %737, i64 %.211157
  %739 = load ptr, ptr %738, align 8, !tbaa !8
  %740 = getelementptr inbounds double, ptr %739, i64 %.208581155
  %741 = load double, ptr %740, align 8, !tbaa !10
  %742 = load ptr, ptr %16, align 8, !tbaa !5
  %743 = getelementptr inbounds ptr, ptr %742, i64 %.211157
  %744 = load ptr, ptr %743, align 8, !tbaa !8
  %745 = getelementptr inbounds double, ptr %744, i64 %.208581155
  %746 = load double, ptr %745, align 8, !tbaa !10
  %747 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %741, double noundef %746)
  br label %748

748:                                              ; preds = %736, %735
  %749 = phi i1 [ true, %735 ], [ %747, %736 ]
  %750 = add nuw nsw i64 %.208581155, 1
  %exitcond1253.not = icmp eq i64 %750, %.21190
  br i1 %exitcond1253.not, label %751, label %735, !llvm.loop !59

751:                                              ; preds = %748
  %752 = add nuw nsw i64 %.211157, 1
  %exitcond1254.not = icmp eq i64 %752, %.21190
  br i1 %exitcond1254.not, label %753, label %.preheader1044, !llvm.loop !60

753:                                              ; preds = %751
  %754 = add nuw nsw i64 %.28661159, 1
  %exitcond1255.not = icmp eq i64 %754, 16
  br i1 %exitcond1255.not, label %.preheader1048, label %702, !llvm.loop !61

.preheader1048:                                   ; preds = %753, %801
  %.38671169 = phi i64 [ %802, %801 ], [ 1, %753 ]
  %.18941168 = phi i1 [ %797, %801 ], [ %.08931186, %753 ]
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %8, ptr noundef %1)
  %755 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000000e+03, ptr noundef %1)
  %756 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %757 = fmul double %755, %756
  %758 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %757, ptr noundef %1)
  call void @_ZN11alglib_impl16hpdmatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %.21190, double noundef %758, ptr noundef nonnull %8, ptr noundef %1)
  br i1 %.18941168, label %.preheader1043.preheader, label %759

759:                                              ; preds = %.preheader1048
  %760 = call noundef zeroext i1 @_ZL20testmatgenunit_ishpdPN11alglib_impl9ae_matrixElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %.21190, ptr noundef %1)
  %761 = xor i1 %760, true
  br label %.preheader1043.preheader

.preheader1043.preheader:                         ; preds = %759, %.preheader1048
  %.28951162.ph = phi i1 [ true, %.preheader1048 ], [ %761, %759 ]
  br label %.preheader1043

.preheader1043:                                   ; preds = %.preheader1043.preheader, %782
  %.221163 = phi i64 [ %783, %782 ], [ 0, %.preheader1043.preheader ]
  %.28951162 = phi i1 [ %780, %782 ], [ %.28951162.ph, %.preheader1043.preheader ]
  br label %762

762:                                              ; preds = %.preheader1043, %779
  %.218591161 = phi i64 [ 0, %.preheader1043 ], [ %781, %779 ]
  %.38961160 = phi i1 [ %.28951162, %.preheader1043 ], [ %780, %779 ]
  br i1 %.38961160, label %779, label %763

763:                                              ; preds = %762
  %764 = load ptr, ptr %17, align 8, !tbaa !5
  %765 = getelementptr inbounds ptr, ptr %764, i64 %.221163
  %766 = load ptr, ptr %765, align 8, !tbaa !8
  %767 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %766, i64 %.218591161
  %.sroa.019.0.copyload = load double, ptr %767, align 8, !tbaa !10
  %.sroa.220.0..sroa_idx = getelementptr inbounds i8, ptr %767, i64 8
  %.sroa.220.0.copyload = load double, ptr %.sroa.220.0..sroa_idx, align 8, !tbaa !10
  %768 = getelementptr inbounds ptr, ptr %764, i64 %.218591161
  %769 = load ptr, ptr %768, align 8, !tbaa !8
  %770 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %769, i64 %.221163
  %.sroa.015.0.copyload = load double, ptr %770, align 8, !tbaa !10
  %.sroa.216.0..sroa_idx = getelementptr inbounds i8, ptr %770, i64 8
  %.sroa.216.0.copyload = load double, ptr %.sroa.216.0..sroa_idx, align 8, !tbaa !10
  %771 = call { double, double } @_ZN11alglib_impl9ae_c_conjENS_10ae_complexEPNS_8ae_stateE(double %.sroa.015.0.copyload, double %.sroa.216.0.copyload, ptr noundef %1)
  %772 = extractvalue { double, double } %771, 0
  %773 = extractvalue { double, double } %771, 1
  %774 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %.sroa.019.0.copyload, double %.sroa.220.0.copyload, double %772, double %773)
  %775 = extractvalue { double, double } %774, 0
  %776 = extractvalue { double, double } %774, 1
  %777 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %775, double %776, ptr noundef %1)
  %778 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %777, double noundef 5.000000e-13)
  br label %779

779:                                              ; preds = %763, %762
  %780 = phi i1 [ true, %762 ], [ %778, %763 ]
  %781 = add nuw nsw i64 %.218591161, 1
  %exitcond1256.not = icmp eq i64 %781, %.21190
  br i1 %exitcond1256.not, label %782, label %762, !llvm.loop !62

782:                                              ; preds = %779
  %783 = add nuw nsw i64 %.221163, 1
  %exitcond1257.not = icmp eq i64 %783, %.21190
  br i1 %exitcond1257.not, label %784, label %.preheader1043, !llvm.loop !63

784:                                              ; preds = %782
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %9, ptr noundef %1)
  call void @_ZN11alglib_impl16hpdmatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %.21190, double noundef %758, ptr noundef nonnull %9, ptr noundef %1)
  br label %.preheader1042

.preheader1042:                                   ; preds = %784, %799
  %.231167 = phi i64 [ 0, %784 ], [ %800, %799 ]
  %.48971166 = phi i1 [ %780, %784 ], [ %797, %799 ]
  br label %785

785:                                              ; preds = %.preheader1042, %796
  %.228601165 = phi i64 [ 0, %.preheader1042 ], [ %798, %796 ]
  %.58981164 = phi i1 [ %.48971166, %.preheader1042 ], [ %797, %796 ]
  br i1 %.58981164, label %796, label %786

786:                                              ; preds = %785
  %787 = load ptr, ptr %17, align 8, !tbaa !5
  %788 = getelementptr inbounds ptr, ptr %787, i64 %.231167
  %789 = load ptr, ptr %788, align 8, !tbaa !8
  %790 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %789, i64 %.228601165
  %.sroa.013.0.copyload = load double, ptr %790, align 8, !tbaa !10
  %.sroa.214.0..sroa_idx = getelementptr inbounds i8, ptr %790, i64 8
  %.sroa.214.0.copyload = load double, ptr %.sroa.214.0..sroa_idx, align 8, !tbaa !10
  %791 = load ptr, ptr %18, align 8, !tbaa !5
  %792 = getelementptr inbounds ptr, ptr %791, i64 %.231167
  %793 = load ptr, ptr %792, align 8, !tbaa !8
  %794 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %793, i64 %.228601165
  %.sroa.011.0.copyload = load double, ptr %794, align 8, !tbaa !10
  %.sroa.212.0..sroa_idx = getelementptr inbounds i8, ptr %794, i64 8
  %.sroa.212.0.copyload = load double, ptr %.sroa.212.0..sroa_idx, align 8, !tbaa !10
  %795 = call noundef zeroext i1 @_ZN11alglib_impl7ae_c_eqENS_10ae_complexES0_(double %.sroa.013.0.copyload, double %.sroa.214.0.copyload, double %.sroa.011.0.copyload, double %.sroa.212.0.copyload)
  br label %796

796:                                              ; preds = %786, %785
  %797 = phi i1 [ true, %785 ], [ %795, %786 ]
  %798 = add nuw nsw i64 %.228601165, 1
  %exitcond1258.not = icmp eq i64 %798, %.21190
  br i1 %exitcond1258.not, label %799, label %785, !llvm.loop !64

799:                                              ; preds = %796
  %800 = add nuw nsw i64 %.231167, 1
  %exitcond1259.not = icmp eq i64 %800, %.21190
  br i1 %exitcond1259.not, label %801, label %.preheader1042, !llvm.loop !65

801:                                              ; preds = %799
  %802 = add nuw nsw i64 %.38671169, 1
  %exitcond1260.not = icmp eq i64 %802, 16
  br i1 %exitcond1260.not, label %.preheader1047, label %.preheader1048, !llvm.loop !66

.preheader1047:                                   ; preds = %801, %832
  %.48681175 = phi i64 [ %833, %832 ], [ 1, %801 ]
  %.18751174 = phi i1 [ %828, %832 ], [ %.08741189, %801 ]
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %4, ptr noundef %1)
  %803 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000000e+03, ptr noundef %1)
  %804 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %805 = fmul double %803, %804
  %806 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %805, ptr noundef %1)
  call void @_ZN11alglib_impl14smatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %.21190, double noundef %806, ptr noundef nonnull %4, ptr noundef %1)
  br i1 %.18751174, label %812, label %807

807:                                              ; preds = %.preheader1047
  %808 = call noundef double @_ZL22testmatgenunit_svdcondPN11alglib_impl9ae_matrixElPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.21190, ptr noundef %1)
  %809 = fdiv double %808, %806
  %810 = fadd double %809, -1.000000e+00
  %811 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %810, double noundef 5.000000e-13)
  br label %812

812:                                              ; preds = %807, %.preheader1047
  %813 = phi i1 [ true, %.preheader1047 ], [ %811, %807 ]
  call void @_ZL22testmatgenunit_unset2dPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %5, ptr noundef %1)
  call void @_ZN11alglib_impl14smatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %.21190, double noundef %806, ptr noundef nonnull %5, ptr noundef %1)
  br label %.preheader1041

.preheader1041:                                   ; preds = %812, %830
  %.241173 = phi i64 [ 0, %812 ], [ %831, %830 ]
  %.28761172 = phi i1 [ %813, %812 ], [ %828, %830 ]
  br label %814

814:                                              ; preds = %.preheader1041, %827
  %.238611171 = phi i64 [ 0, %.preheader1041 ], [ %829, %827 ]
  %.38771170 = phi i1 [ %.28761172, %.preheader1041 ], [ %828, %827 ]
  br i1 %.38771170, label %827, label %815

815:                                              ; preds = %814
  %816 = load ptr, ptr %15, align 8, !tbaa !5
  %817 = getelementptr inbounds ptr, ptr %816, i64 %.241173
  %818 = load ptr, ptr %817, align 8, !tbaa !8
  %819 = getelementptr inbounds double, ptr %818, i64 %.238611171
  %820 = load double, ptr %819, align 8, !tbaa !10
  %821 = load ptr, ptr %16, align 8, !tbaa !5
  %822 = getelementptr inbounds ptr, ptr %821, i64 %.241173
  %823 = load ptr, ptr %822, align 8, !tbaa !8
  %824 = getelementptr inbounds double, ptr %823, i64 %.238611171
  %825 = load double, ptr %824, align 8, !tbaa !10
  %826 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %820, double noundef %825)
  br label %827

827:                                              ; preds = %815, %814
  %828 = phi i1 [ true, %814 ], [ %826, %815 ]
  %829 = add nuw nsw i64 %.238611171, 1
  %exitcond1261.not = icmp eq i64 %829, %.21190
  br i1 %exitcond1261.not, label %830, label %814, !llvm.loop !67

830:                                              ; preds = %827
  %831 = add nuw nsw i64 %.241173, 1
  %exitcond1262.not = icmp eq i64 %831, %.21190
  br i1 %exitcond1262.not, label %832, label %.preheader1041, !llvm.loop !68

832:                                              ; preds = %830
  %833 = add nuw nsw i64 %.48681175, 1
  %exitcond1263.not = icmp eq i64 %833, 16
  br i1 %exitcond1263.not, label %.preheader1046, label %.preheader1047, !llvm.loop !69

.preheader1046:                                   ; preds = %832, %877
  %.58691185 = phi i64 [ %878, %877 ], [ 1, %832 ]
  %.18801184 = phi i1 [ %873, %877 ], [ %.08791188, %832 ]
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %8, ptr noundef %1)
  %834 = call noundef double @_ZN11alglib_impl6ae_logEdPNS_8ae_stateE(double noundef 1.000000e+03, ptr noundef %1)
  %835 = call noundef double @_ZN11alglib_impl13ae_randomrealEPNS_8ae_stateE(ptr noundef %1)
  %836 = fmul double %834, %835
  %837 = call noundef double @_ZN11alglib_impl6ae_expEdPNS_8ae_stateE(double noundef %836, ptr noundef %1)
  call void @_ZN11alglib_impl14hmatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %.21190, double noundef %837, ptr noundef nonnull %8, ptr noundef %1)
  br label %.preheader1040

.preheader1040:                                   ; preds = %.preheader1046, %858
  %.251179 = phi i64 [ 0, %.preheader1046 ], [ %859, %858 ]
  %.28811178 = phi i1 [ %.18801184, %.preheader1046 ], [ %856, %858 ]
  br label %838

838:                                              ; preds = %.preheader1040, %855
  %.248621177 = phi i64 [ 0, %.preheader1040 ], [ %857, %855 ]
  %.38821176 = phi i1 [ %.28811178, %.preheader1040 ], [ %856, %855 ]
  br i1 %.38821176, label %855, label %839

839:                                              ; preds = %838
  %840 = load ptr, ptr %17, align 8, !tbaa !5
  %841 = getelementptr inbounds ptr, ptr %840, i64 %.251179
  %842 = load ptr, ptr %841, align 8, !tbaa !8
  %843 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %842, i64 %.248621177
  %.sroa.07.0.copyload = load double, ptr %843, align 8, !tbaa !10
  %.sroa.28.0..sroa_idx = getelementptr inbounds i8, ptr %843, i64 8
  %.sroa.28.0.copyload = load double, ptr %.sroa.28.0..sroa_idx, align 8, !tbaa !10
  %844 = getelementptr inbounds ptr, ptr %840, i64 %.248621177
  %845 = load ptr, ptr %844, align 8, !tbaa !8
  %846 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %845, i64 %.251179
  %.sroa.03.0.copyload = load double, ptr %846, align 8, !tbaa !10
  %.sroa.24.0..sroa_idx = getelementptr inbounds i8, ptr %846, i64 8
  %.sroa.24.0.copyload = load double, ptr %.sroa.24.0..sroa_idx, align 8, !tbaa !10
  %847 = call { double, double } @_ZN11alglib_impl9ae_c_conjENS_10ae_complexEPNS_8ae_stateE(double %.sroa.03.0.copyload, double %.sroa.24.0.copyload, ptr noundef %1)
  %848 = extractvalue { double, double } %847, 0
  %849 = extractvalue { double, double } %847, 1
  %850 = call { double, double } @_ZN11alglib_impl8ae_c_subENS_10ae_complexES0_(double %.sroa.07.0.copyload, double %.sroa.28.0.copyload, double %848, double %849)
  %851 = extractvalue { double, double } %850, 0
  %852 = extractvalue { double, double } %850, 1
  %853 = call noundef double @_ZN11alglib_impl8ae_c_absENS_10ae_complexEPNS_8ae_stateE(double %851, double %852, ptr noundef %1)
  %854 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %853, double noundef 5.000000e-13)
  br label %855

855:                                              ; preds = %839, %838
  %856 = phi i1 [ true, %838 ], [ %854, %839 ]
  %857 = add nuw nsw i64 %.248621177, 1
  %exitcond1264.not = icmp eq i64 %857, %.21190
  br i1 %exitcond1264.not, label %858, label %838, !llvm.loop !70

858:                                              ; preds = %855
  %859 = add nuw nsw i64 %.251179, 1
  %exitcond1265.not = icmp eq i64 %859, %.21190
  br i1 %exitcond1265.not, label %860, label %.preheader1040, !llvm.loop !71

860:                                              ; preds = %858
  call void @_ZL23testmatgenunit_unset2dcPN11alglib_impl9ae_matrixEPNS_8ae_stateE(ptr noundef nonnull %9, ptr noundef %1)
  call void @_ZN11alglib_impl14hmatrixrndcondEldPNS_9ae_matrixEPNS_8ae_stateE(i64 noundef %.21190, double noundef %837, ptr noundef nonnull %9, ptr noundef %1)
  br label %.preheader

.preheader:                                       ; preds = %860, %875
  %.261183 = phi i64 [ 0, %860 ], [ %876, %875 ]
  %.48831182 = phi i1 [ %856, %860 ], [ %873, %875 ]
  br label %861

861:                                              ; preds = %.preheader, %872
  %.258631181 = phi i64 [ 0, %.preheader ], [ %874, %872 ]
  %.58841180 = phi i1 [ %.48831182, %.preheader ], [ %873, %872 ]
  br i1 %.58841180, label %872, label %862

862:                                              ; preds = %861
  %863 = load ptr, ptr %17, align 8, !tbaa !5
  %864 = getelementptr inbounds ptr, ptr %863, i64 %.261183
  %865 = load ptr, ptr %864, align 8, !tbaa !8
  %866 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %865, i64 %.258631181
  %.sroa.01.0.copyload = load double, ptr %866, align 8, !tbaa !10
  %.sroa.22.0..sroa_idx = getelementptr inbounds i8, ptr %866, i64 8
  %.sroa.22.0.copyload = load double, ptr %.sroa.22.0..sroa_idx, align 8, !tbaa !10
  %867 = load ptr, ptr %18, align 8, !tbaa !5
  %868 = getelementptr inbounds ptr, ptr %867, i64 %.261183
  %869 = load ptr, ptr %868, align 8, !tbaa !8
  %870 = getelementptr inbounds %"struct.alglib_impl::ae_complex", ptr %869, i64 %.258631181
  %.sroa.0.0.copyload = load double, ptr %870, align 8, !tbaa !10
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %870, i64 8
  %.sroa.2.0.copyload = load double, ptr %.sroa.2.0..sroa_idx, align 8, !tbaa !10
  %871 = call noundef zeroext i1 @_ZN11alglib_impl7ae_c_eqENS_10ae_complexES0_(double %.sroa.01.0.copyload, double %.sroa.22.0.copyload, double %.sroa.0.0.copyload, double %.sroa.2.0.copyload)
  br label %872

872:                                              ; preds = %862, %861
  %873 = phi i1 [ true, %861 ], [ %871, %862 ]
  %874 = add nuw nsw i64 %.258631181, 1
  %exitcond1266.not = icmp eq i64 %874, %.21190
  br i1 %exitcond1266.not, label %875, label %861, !llvm.loop !72

875:                                              ; preds = %872
  %876 = add nuw nsw i64 %.261183, 1
  %exitcond1267.not = icmp eq i64 %876, %.21190
  br i1 %exitcond1267.not, label %877, label %.preheader, !llvm.loop !73

877:                                              ; preds = %875
  %878 = add nuw nsw i64 %.58691185, 1
  %exitcond1268.not = icmp eq i64 %878, 16
  br i1 %exitcond1268.not, label %879, label %.preheader1046, !llvm.loop !74

879:                                              ; preds = %877
  %880 = add nuw nsw i64 %.21190, 1
  %exitcond1269.not = icmp eq i64 %880, 21
  br i1 %exitcond1269.not, label %881, label %.preheader1049, !llvm.loop !75

881:                                              ; preds = %879
  %882 = call noundef zeroext i1 @_ZL23testmatgenunit_testeultPN11alglib_impl8ae_stateE(ptr noundef %1)
  %883 = trunc nuw i8 %.23923 to i1
  %brmerge1311 = or i1 %622, %883
  %brmerge1312 = or i1 %brmerge1311, %828
  %brmerge1313 = or i1 %brmerge1312, %749
  br i1 %brmerge1313, label %885, label %884

884:                                              ; preds = %881
  %spec.select1007 = or i1 %797, %882
  %spec.select1314 = or i1 %873, %spec.select1007
  br label %885

885:                                              ; preds = %884, %881
  %886 = phi i1 [ true, %881 ], [ %spec.select1314, %884 ]
  br i1 %0, label %905, label %887

887:                                              ; preds = %885
  %888 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.198)
  %889 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.199)
  %.str.7..str.6 = select i1 %883, ptr @.str.7, ptr @.str.6
  %890 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7..str.6)
  %891 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.200)
  %.str.7.sink1315 = select i1 %622, ptr @.str.7, ptr @.str.6
  %892 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7.sink1315)
  %893 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.201)
  %.str.7.sink1316 = select i1 %828, ptr @.str.7, ptr @.str.6
  %894 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7.sink1316)
  %895 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.202)
  %.str.7.sink1317 = select i1 %873, ptr @.str.7, ptr @.str.6
  %896 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7.sink1317)
  %897 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.203)
  %.str.7.sink1318 = select i1 %749, ptr @.str.7, ptr @.str.6
  %898 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7.sink1318)
  %899 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.204)
  %.str.7.sink1319 = select i1 %797, ptr @.str.7, ptr @.str.6
  %900 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7.sink1319)
  %901 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.205)
  %.str.7.sink1320 = select i1 %882, ptr @.str.7, ptr @.str.6
  %902 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7.sink1320)
  %.str.2.sink = select i1 %886, ptr @.str.1, ptr @.str.2
  %903 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink)
  %904 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  br label %905

905:                                              ; preds = %887, %885
  %906 = xor i1 %886, true
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  ret i1 %906
}

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

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

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

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

declare { double, double } @_ZN11alglib_impl10ae_c_sub_dENS_10ae_complexEd(double, double, double noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL39testmatgenunit_obsoletesvddecompositionPN11alglib_impl9ae_matrixEllPNS_9ae_vectorES1_PNS_8ae_stateE(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #6

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL20testmatgenunit_isspdPN11alglib_impl9ae_matrixElbPNS_8ae_stateE(ptr noundef, i64 noundef, i1 noundef zeroext, ptr noundef) local_unnamed_addr #6

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZL20testmatgenunit_ishpdPN11alglib_impl9ae_matrixElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #6

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

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

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

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

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

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


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