; LLVM IR from Dimandragon/non-parametric-dsp :: alglib-cpp/src (linalg)

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

%"struct.alglib_impl::ae_vector" = type { i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.1 }
%"struct.alglib_impl::ae_dyn_block" = type { ptr, ptr, ptr, ptr }
%union.anon.1 = type { ptr }
%"struct.alglib_impl::spcholanalysis" = type { i64, i64, i64, i8, i64, double, double, double, double, %"struct.alglib_impl::ae_vector", i8, i8, i8, i8, i8, %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i8, i8, %"struct.alglib_impl::spcholadj", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_nxpool", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::amdbuffer", %"struct.alglib_impl::priorityamdbuffers", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::spcholadj" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::ae_nxpool" = type { i64, i64, i64, i64, %"struct.alglib_impl::ae_dyn_block", %"struct.alglib_impl::ae_lock", %"struct.alglib_impl::ae_dyn_block" }
%"struct.alglib_impl::ae_lock" = type { ptr, %"struct.alglib_impl::ae_dyn_block", i8 }
%"struct.alglib_impl::amdbuffer" = type { i64, i8, i8, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::amdllmatrix", %"struct.alglib_impl::amdvertexset", %"struct.alglib_impl::niset", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::ae_vector", i64, %"struct.alglib_impl::niset", %"struct.alglib_impl::niset", %"struct.alglib_impl::amdknset", %"struct.alglib_impl::niset", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_matrix" }
%"struct.alglib_impl::amdllmatrix" = type { i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64 }
%"struct.alglib_impl::amdvertexset" = type { i64, i8, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector" }
%"struct.alglib_impl::amdknset" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64 }
%"struct.alglib_impl::niset" = type { i64, i64, %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64 }
%"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::priorityamdbuffers" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::amdbuffer", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix", %"struct.alglib_impl::sparsematrix" }
%"struct.alglib_impl::sparsematrix" = type { %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", %"struct.alglib_impl::ae_vector", i64, i64, i64, i64, i64, i64 }

@.str.340 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.349 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.350 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.351 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.352 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.353 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.354 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.355 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.356 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.357 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.358 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.359 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.360 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.361 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.362 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.363 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.364 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.365 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.366 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.367 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.368 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.369 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.370 = external hidden unnamed_addr constant [46 x i8], align 1

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

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

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

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

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

declare noundef zeroext i1 @_ZN11alglib_impl11sparseiscrsEPKNS_12sparsematrixEPNS_8ae_stateE(ptr noundef, ptr noundef) #1

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

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

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

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

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

declare noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef, ptr noundef) #1

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

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

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

declare noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef) #1

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl13spsymmanalyzeEPKNS_12sparsematrixEPKNS_9ae_vectorEdllllPNS_14spcholanalysisEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1, double noundef %2, i64 noundef %3, i64 noundef %4, i64 noundef %5, i64 noundef %6, ptr noundef %7, ptr noundef %8) #2 {
  %10 = alloca i1, align 1
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca double, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i8, align 1
  %26 = alloca i8, align 1
  %27 = alloca i32, align 4
  store ptr %0, ptr %11, align 8, !tbaa !5
  store ptr %1, ptr %12, align 8, !tbaa !5
  store double %2, ptr %13, align 8, !tbaa !9
  store i64 %3, ptr %14, align 8, !tbaa !11
  store i64 %4, ptr %15, align 8, !tbaa !11
  store i64 %5, ptr %16, align 8, !tbaa !11
  store i64 %6, ptr %17, align 8, !tbaa !11
  store ptr %7, ptr %18, align 8, !tbaa !5
  store ptr %8, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #3
  %28 = load double, ptr %13, align 8, !tbaa !9
  %29 = load ptr, ptr %19, align 8, !tbaa !5
  %30 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %28, ptr noundef %29)
  br i1 %30, label %31, label %34

31:                                               ; preds = %9
  %32 = load double, ptr %13, align 8, !tbaa !9
  %33 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %32, double noundef 0.000000e+00)
  br label %34

34:                                               ; preds = %31, %9
  %35 = phi i1 [ false, %9 ], [ %33, %31 ]
  %36 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %35, ptr noundef @.str.349, ptr noundef %36)
  %37 = load i64, ptr %14, align 8, !tbaa !11
  %38 = icmp sge i64 %37, 0
  %39 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %38, ptr noundef @.str.350, ptr noundef %39)
  %40 = load ptr, ptr %11, align 8, !tbaa !5
  %41 = load ptr, ptr %19, align 8, !tbaa !5
  %42 = call noundef zeroext i1 @_ZN11alglib_impl11sparseiscrsEPKNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %40, ptr noundef %41)
  %43 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %42, ptr noundef @.str.351, ptr noundef %43)
  %44 = load ptr, ptr %11, align 8, !tbaa !5
  %45 = load ptr, ptr %19, align 8, !tbaa !5
  %46 = call noundef i64 @_ZN11alglib_impl14sparsegetnrowsEPKNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %44, ptr noundef %45)
  %47 = load ptr, ptr %11, align 8, !tbaa !5
  %48 = load ptr, ptr %19, align 8, !tbaa !5
  %49 = call noundef i64 @_ZN11alglib_impl14sparsegetncolsEPKNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %47, ptr noundef %48)
  %50 = icmp eq i64 %46, %49
  %51 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %50, ptr noundef @.str.352, ptr noundef %51)
  %52 = load i64, ptr %15, align 8, !tbaa !11
  %53 = icmp eq i64 %52, 0
  br i1 %53, label %57, label %54

54:                                               ; preds = %34
  %55 = load i64, ptr %15, align 8, !tbaa !11
  %56 = icmp eq i64 %55, 1
  br label %57

57:                                               ; preds = %54, %34
  %58 = phi i1 [ true, %34 ], [ %56, %54 ]
  %59 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %58, ptr noundef @.str.353, ptr noundef %59)
  %60 = load i64, ptr %16, align 8, !tbaa !11
  %61 = icmp eq i64 %60, 0
  br i1 %61, label %80, label %62

62:                                               ; preds = %57
  %63 = load i64, ptr %16, align 8, !tbaa !11
  %64 = icmp eq i64 %63, 1
  br i1 %64, label %80, label %65

65:                                               ; preds = %62
  %66 = load i64, ptr %16, align 8, !tbaa !11
  %67 = icmp eq i64 %66, 2
  br i1 %67, label %80, label %68

68:                                               ; preds = %65
  %69 = load i64, ptr %16, align 8, !tbaa !11
  %70 = icmp eq i64 %69, 3
  br i1 %70, label %80, label %71

71:                                               ; preds = %68
  %72 = load i64, ptr %16, align 8, !tbaa !11
  %73 = icmp eq i64 %72, -1
  br i1 %73, label %80, label %74

74:                                               ; preds = %71
  %75 = load i64, ptr %16, align 8, !tbaa !11
  %76 = icmp eq i64 %75, -2
  br i1 %76, label %80, label %77

77:                                               ; preds = %74
  %78 = load i64, ptr %16, align 8, !tbaa !11
  %79 = icmp eq i64 %78, -3
  br label %80

80:                                               ; preds = %77, %74, %71, %68, %65, %62, %57
  %81 = phi i1 [ true, %74 ], [ true, %71 ], [ true, %68 ], [ true, %65 ], [ true, %62 ], [ true, %57 ], [ %79, %77 ]
  %82 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %81, ptr noundef @.str.354, ptr noundef %82)
  %83 = load i64, ptr %17, align 8, !tbaa !11
  %84 = icmp eq i64 %83, -1
  br i1 %84, label %88, label %85

85:                                               ; preds = %80
  %86 = load i64, ptr %17, align 8, !tbaa !11
  %87 = icmp eq i64 %86, 1
  br label %88

88:                                               ; preds = %85, %80
  %89 = phi i1 [ true, %80 ], [ %87, %85 ]
  %90 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %89, ptr noundef @.str.355, ptr noundef %90)
  %91 = load i64, ptr %16, align 8, !tbaa !11
  %92 = icmp ne i64 %91, 3
  br i1 %92, label %93, label %96

93:                                               ; preds = %88
  %94 = load i64, ptr %16, align 8, !tbaa !11
  %95 = icmp ne i64 %94, -3
  br i1 %95, label %105, label %96

96:                                               ; preds = %93, %88
  %97 = load double, ptr %13, align 8, !tbaa !9
  %98 = load ptr, ptr %19, align 8, !tbaa !5
  %99 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %97, ptr noundef %98)
  br i1 %99, label %100, label %103

100:                                              ; preds = %96
  %101 = load double, ptr %13, align 8, !tbaa !9
  %102 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %101, double noundef 0.000000e+00)
  br label %103

103:                                              ; preds = %100, %96
  %104 = phi i1 [ false, %96 ], [ %102, %100 ]
  br label %105

105:                                              ; preds = %103, %93
  %106 = phi i1 [ true, %93 ], [ %104, %103 ]
  %107 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %106, ptr noundef @.str.356, ptr noundef %107)
  store i8 1, ptr %26, align 1, !tbaa !13
  %108 = load ptr, ptr %11, align 8, !tbaa !5
  %109 = load ptr, ptr %19, align 8, !tbaa !5
  %110 = call noundef i64 @_ZN11alglib_impl14sparsegetnrowsEPKNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %108, ptr noundef %109)
  store i64 %110, ptr %20, align 8, !tbaa !11
  %111 = load i64, ptr %16, align 8, !tbaa !11
  %112 = icmp eq i64 %111, -3
  br i1 %112, label %116, label %113

113:                                              ; preds = %105
  %114 = load i64, ptr %16, align 8, !tbaa !11
  %115 = icmp eq i64 %114, 3
  br i1 %115, label %116, label %128

116:                                              ; preds = %113, %105
  %117 = load ptr, ptr %12, align 8, !tbaa !5
  %118 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %117, i32 0, i32 0
  %119 = load i64, ptr %118, align 8, !tbaa !15
  %120 = load i64, ptr %20, align 8, !tbaa !11
  %121 = icmp sge i64 %119, %120
  %122 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %121, ptr noundef @.str.357, ptr noundef %122)
  %123 = load i64, ptr %20, align 8, !tbaa !11
  %124 = load ptr, ptr %12, align 8, !tbaa !5
  %125 = load ptr, ptr %18, align 8, !tbaa !5
  %126 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %125, i32 0, i32 47
  %127 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl11icopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %123, ptr noundef %124, ptr noundef %126, ptr noundef %127)
  br label %128

128:                                              ; preds = %116, %113
  %129 = load i64, ptr %16, align 8, !tbaa !11
  %130 = icmp eq i64 %129, 0
  br i1 %130, label %131, label %136

131:                                              ; preds = %128
  %132 = load i64, ptr %20, align 8, !tbaa !11
  %133 = load ptr, ptr %18, align 8, !tbaa !5
  %134 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %133, i32 0, i32 47
  %135 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl10isetallocvEllPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %132, i64 noundef 0, ptr noundef %134, ptr noundef %135)
  store i64 3, ptr %16, align 8, !tbaa !11
  store double 0.000000e+00, ptr %13, align 8, !tbaa !9
  store i64 0, ptr %14, align 8, !tbaa !11
  br label %136

136:                                              ; preds = %131, %128
  %137 = load ptr, ptr %18, align 8, !tbaa !5
  %138 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %137, i32 0, i32 0
  store i64 0, ptr %138, align 8, !tbaa !18
  %139 = load i64, ptr %20, align 8, !tbaa !11
  %140 = load ptr, ptr %18, align 8, !tbaa !5
  %141 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %140, i32 0, i32 1
  store i64 %139, ptr %141, align 8, !tbaa !31
  %142 = load i64, ptr %15, align 8, !tbaa !11
  %143 = icmp eq i64 %142, 0
  %144 = load ptr, ptr %18, align 8, !tbaa !5
  %145 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %144, i32 0, i32 3
  %146 = zext i1 %143 to i8
  store i8 %146, ptr %145, align 8, !tbaa !32
  %147 = load i64, ptr %16, align 8, !tbaa !11
  %148 = load ptr, ptr %18, align 8, !tbaa !5
  %149 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %148, i32 0, i32 2
  store i64 %147, ptr %149, align 8, !tbaa !33
  %150 = load i64, ptr %16, align 8, !tbaa !11
  %151 = icmp eq i64 %150, -3
  %152 = load ptr, ptr %18, align 8, !tbaa !5
  %153 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %152, i32 0, i32 10
  %154 = zext i1 %151 to i8
  store i8 %154, ptr %153, align 8, !tbaa !34
  %155 = call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef @.str.340)
  br i1 %155, label %156, label %159

156:                                              ; preds = %136
  %157 = load i64, ptr %20, align 8, !tbaa !11
  %158 = icmp sle i64 %157, 100
  br label %159

159:                                              ; preds = %156, %136
  %160 = phi i1 [ false, %136 ], [ %158, %156 ]
  %161 = load ptr, ptr %18, align 8, !tbaa !5
  %162 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %161, i32 0, i32 11
  %163 = zext i1 %160 to i8
  store i8 %163, ptr %162, align 1, !tbaa !35
  %164 = call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef @.str.358)
  %165 = load ptr, ptr %18, align 8, !tbaa !5
  %166 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %165, i32 0, i32 12
  %167 = zext i1 %164 to i8
  store i8 %167, ptr %166, align 2, !tbaa !36
  %168 = load ptr, ptr %18, align 8, !tbaa !5
  %169 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %168, i32 0, i32 12
  %170 = load i8, ptr %169, align 2, !tbaa !36, !range !37, !noundef !38
  %171 = trunc i8 %170 to i1
  br i1 %171, label %172, label %174

172:                                              ; preds = %159
  %173 = call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef @.str.359)
  br label %174

174:                                              ; preds = %172, %159
  %175 = phi i1 [ false, %159 ], [ %173, %172 ]
  %176 = load ptr, ptr %18, align 8, !tbaa !5
  %177 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %176, i32 0, i32 13
  %178 = zext i1 %175 to i8
  store i8 %178, ptr %177, align 1, !tbaa !39
  %179 = load ptr, ptr %18, align 8, !tbaa !5
  %180 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %179, i32 0, i32 12
  %181 = load i8, ptr %180, align 2, !tbaa !36, !range !37, !noundef !38
  %182 = trunc i8 %181 to i1
  br i1 %182, label %183, label %185

183:                                              ; preds = %174
  %184 = call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef @.str.360)
  br label %185

185:                                              ; preds = %183, %174
  %186 = phi i1 [ false, %174 ], [ %184, %183 ]
  %187 = load ptr, ptr %18, align 8, !tbaa !5
  %188 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %187, i32 0, i32 14
  %189 = zext i1 %186 to i8
  store i8 %189, ptr %188, align 4, !tbaa !40
  %190 = load i64, ptr %16, align 8, !tbaa !11
  %191 = icmp eq i64 %190, -1
  br i1 %191, label %195, label %192

192:                                              ; preds = %185
  %193 = load i64, ptr %16, align 8, !tbaa !11
  %194 = icmp eq i64 %193, 1
  br label %195

195:                                              ; preds = %192, %185
  %196 = phi i1 [ true, %185 ], [ %194, %192 ]
  %197 = load ptr, ptr %18, align 8, !tbaa !5
  %198 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %197, i32 0, i32 30
  %199 = zext i1 %196 to i8
  store i8 %199, ptr %198, align 8, !tbaa !41
  %200 = load i64, ptr %16, align 8, !tbaa !11
  %201 = icmp eq i64 %200, -1
  %202 = load ptr, ptr %18, align 8, !tbaa !5
  %203 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %202, i32 0, i32 31
  %204 = zext i1 %201 to i8
  store i8 %204, ptr %203, align 1, !tbaa !42
  %205 = load ptr, ptr %18, align 8, !tbaa !5
  %206 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %205, i32 0, i32 4
  store i64 0, ptr %206, align 8, !tbaa !43
  %207 = load ptr, ptr %18, align 8, !tbaa !5
  %208 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %207, i32 0, i32 5
  store double 0.000000e+00, ptr %208, align 8, !tbaa !44
  %209 = load ptr, ptr %18, align 8, !tbaa !5
  %210 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %209, i32 0, i32 6
  store double 0.000000e+00, ptr %210, align 8, !tbaa !45
  %211 = load ptr, ptr %18, align 8, !tbaa !5
  %212 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %211, i32 0, i32 7
  store double 0.000000e+00, ptr %212, align 8, !tbaa !46
  %213 = load ptr, ptr %18, align 8, !tbaa !5
  %214 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %213, i32 0, i32 8
  store double 0.000000e+00, ptr %214, align 8, !tbaa !47
  %215 = load ptr, ptr %18, align 8, !tbaa !5
  %216 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %215, i32 0, i32 23
  store i8 0, ptr %216, align 8, !tbaa !48
  %217 = load ptr, ptr %18, align 8, !tbaa !5
  %218 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %217, i32 0, i32 48
  %219 = load i64, ptr %20, align 8, !tbaa !11
  %220 = add nsw i64 %219, 1
  %221 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %218, i64 noundef %220, ptr noundef %221)
  %222 = load ptr, ptr %18, align 8, !tbaa !5
  %223 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %222, i32 0, i32 52
  %224 = load i64, ptr %20, align 8, !tbaa !11
  %225 = add nsw i64 %224, 1
  %226 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %223, i64 noundef %225, ptr noundef %226)
  %227 = load ptr, ptr %18, align 8, !tbaa !5
  %228 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %227, i32 0, i32 53
  %229 = load i64, ptr %20, align 8, !tbaa !11
  %230 = add nsw i64 %229, 1
  %231 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %228, i64 noundef %230, ptr noundef %231)
  %232 = load ptr, ptr %18, align 8, !tbaa !5
  %233 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %232, i32 0, i32 54
  %234 = load i64, ptr %20, align 8, !tbaa !11
  %235 = add nsw i64 %234, 1
  %236 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %233, i64 noundef %235, ptr noundef %236)
  %237 = load ptr, ptr %18, align 8, !tbaa !5
  %238 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %237, i32 0, i32 55
  %239 = load i64, ptr %20, align 8, !tbaa !11
  %240 = add nsw i64 %239, 1
  %241 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %238, i64 noundef %240, ptr noundef %241)
  %242 = load ptr, ptr %18, align 8, !tbaa !5
  %243 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %242, i32 0, i32 56
  %244 = load i64, ptr %20, align 8, !tbaa !11
  %245 = add nsw i64 %244, 1
  %246 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %243, i64 noundef %245, ptr noundef %246)
  %247 = load ptr, ptr %18, align 8, !tbaa !5
  %248 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %247, i32 0, i32 46
  %249 = load i64, ptr %20, align 8, !tbaa !11
  %250 = add nsw i64 %249, 1
  %251 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %248, i64 noundef %250, ptr noundef %251)
  %252 = load ptr, ptr %18, align 8, !tbaa !5
  %253 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %252, i32 0, i32 39
  %254 = load i64, ptr %20, align 8, !tbaa !11
  %255 = add nsw i64 %254, 1
  %256 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl15ae_nxpool_allocEPNS_9ae_nxpoolElPNS_8ae_stateE(ptr noundef %253, i64 noundef %255, ptr noundef %256)
  %257 = load ptr, ptr %18, align 8, !tbaa !5
  %258 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %257, i32 0, i32 41
  %259 = load i64, ptr %20, align 8, !tbaa !11
  %260 = add nsw i64 %259, 1
  %261 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl15ae_nxpool_allocEPNS_9ae_nxpoolElPNS_8ae_stateE(ptr noundef %258, i64 noundef %260, ptr noundef %261)
  %262 = load ptr, ptr %18, align 8, !tbaa !5
  %263 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %262, i32 0, i32 43
  %264 = load i64, ptr %20, align 8, !tbaa !11
  %265 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl15ae_nxpool_allocEPNS_9ae_nxpoolElPNS_8ae_stateE(ptr noundef %263, i64 noundef %264, ptr noundef %265)
  %266 = load ptr, ptr %18, align 8, !tbaa !5
  %267 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %266, i32 0, i32 12
  %268 = load i8, ptr %267, align 2, !tbaa !36, !range !37, !noundef !38
  %269 = trunc i8 %268 to i1
  br i1 %269, label %270, label %422

270:                                              ; preds = %195
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.361)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.362)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.363)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.362)
  store i64 0, ptr %24, align 8, !tbaa !11
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %271

271:                                              ; preds = %295, %270
  %272 = load i64, ptr %21, align 8, !tbaa !11
  %273 = load i64, ptr %20, align 8, !tbaa !11
  %274 = sub nsw i64 %273, 1
  %275 = icmp sle i64 %272, %274
  br i1 %275, label %276, label %298

276:                                              ; preds = %271
  %277 = load i64, ptr %24, align 8, !tbaa !11
  %278 = load ptr, ptr %11, align 8, !tbaa !5
  %279 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %278, i32 0, i32 3
  %280 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %279, i32 0, i32 4
  %281 = load ptr, ptr %280, align 8, !tbaa !49
  %282 = load i64, ptr %21, align 8, !tbaa !11
  %283 = getelementptr inbounds i64, ptr %281, i64 %282
  %284 = load i64, ptr %283, align 8, !tbaa !11
  %285 = load ptr, ptr %11, align 8, !tbaa !5
  %286 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %285, i32 0, i32 2
  %287 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %286, i32 0, i32 4
  %288 = load ptr, ptr %287, align 8, !tbaa !49
  %289 = load i64, ptr %21, align 8, !tbaa !11
  %290 = getelementptr inbounds i64, ptr %288, i64 %289
  %291 = load i64, ptr %290, align 8, !tbaa !11
  %292 = sub nsw i64 %284, %291
  %293 = add nsw i64 %277, %292
  %294 = add nsw i64 %293, 1
  store i64 %294, ptr %24, align 8, !tbaa !11
  br label %295

295:                                              ; preds = %276
  %296 = load i64, ptr %21, align 8, !tbaa !11
  %297 = add nsw i64 %296, 1
  store i64 %297, ptr %21, align 8, !tbaa !11
  br label %271, !llvm.loop !50

298:                                              ; preds = %271
  %299 = load i64, ptr %24, align 8, !tbaa !11
  %300 = trunc i64 %299 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.364, i32 noundef %300)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.365)
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.366)
  %301 = load i64, ptr %20, align 8, !tbaa !11
  %302 = load ptr, ptr %18, align 8, !tbaa !5
  %303 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %302, i32 0, i32 52
  %304 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl5isetvEllPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %301, i64 noundef 1, ptr noundef %303, ptr noundef %304)
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %305

305:                                              ; preds = %369, %298
  %306 = load i64, ptr %21, align 8, !tbaa !11
  %307 = load i64, ptr %20, align 8, !tbaa !11
  %308 = sub nsw i64 %307, 1
  %309 = icmp sle i64 %306, %308
  br i1 %309, label %310, label %372

310:                                              ; preds = %305
  %311 = load ptr, ptr %11, align 8, !tbaa !5
  %312 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %311, i32 0, i32 2
  %313 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %312, i32 0, i32 4
  %314 = load ptr, ptr %313, align 8, !tbaa !49
  %315 = load i64, ptr %21, align 8, !tbaa !11
  %316 = getelementptr inbounds i64, ptr %314, i64 %315
  %317 = load i64, ptr %316, align 8, !tbaa !11
  store i64 %317, ptr %23, align 8, !tbaa !11
  br label %318

318:                                              ; preds = %365, %310
  %319 = load i64, ptr %23, align 8, !tbaa !11
  %320 = load ptr, ptr %11, align 8, !tbaa !5
  %321 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %320, i32 0, i32 3
  %322 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %321, i32 0, i32 4
  %323 = load ptr, ptr %322, align 8, !tbaa !49
  %324 = load i64, ptr %21, align 8, !tbaa !11
  %325 = getelementptr inbounds i64, ptr %323, i64 %324
  %326 = load i64, ptr %325, align 8, !tbaa !11
  %327 = sub nsw i64 %326, 1
  %328 = icmp sle i64 %319, %327
  br i1 %328, label %329, label %368

329:                                              ; preds = %318
  %330 = load ptr, ptr %11, align 8, !tbaa !5
  %331 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %330, i32 0, i32 1
  %332 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %331, i32 0, i32 4
  %333 = load ptr, ptr %332, align 8, !tbaa !49
  %334 = load i64, ptr %23, align 8, !tbaa !11
  %335 = getelementptr inbounds i64, ptr %333, i64 %334
  %336 = load i64, ptr %335, align 8, !tbaa !11
  store i64 %336, ptr %22, align 8, !tbaa !11
  %337 = load ptr, ptr %18, align 8, !tbaa !5
  %338 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %337, i32 0, i32 52
  %339 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %338, i32 0, i32 4
  %340 = load ptr, ptr %339, align 8, !tbaa !49
  %341 = load i64, ptr %21, align 8, !tbaa !11
  %342 = getelementptr inbounds i64, ptr %340, i64 %341
  %343 = load i64, ptr %342, align 8, !tbaa !11
  %344 = add nsw i64 %343, 1
  %345 = load ptr, ptr %18, align 8, !tbaa !5
  %346 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %345, i32 0, i32 52
  %347 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %346, i32 0, i32 4
  %348 = load ptr, ptr %347, align 8, !tbaa !49
  %349 = load i64, ptr %21, align 8, !tbaa !11
  %350 = getelementptr inbounds i64, ptr %348, i64 %349
  store i64 %344, ptr %350, align 8, !tbaa !11
  %351 = load ptr, ptr %18, align 8, !tbaa !5
  %352 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %351, i32 0, i32 52
  %353 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %352, i32 0, i32 4
  %354 = load ptr, ptr %353, align 8, !tbaa !49
  %355 = load i64, ptr %22, align 8, !tbaa !11
  %356 = getelementptr inbounds i64, ptr %354, i64 %355
  %357 = load i64, ptr %356, align 8, !tbaa !11
  %358 = add nsw i64 %357, 1
  %359 = load ptr, ptr %18, align 8, !tbaa !5
  %360 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %359, i32 0, i32 52
  %361 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %360, i32 0, i32 4
  %362 = load ptr, ptr %361, align 8, !tbaa !49
  %363 = load i64, ptr %22, align 8, !tbaa !11
  %364 = getelementptr inbounds i64, ptr %362, i64 %363
  store i64 %358, ptr %364, align 8, !tbaa !11
  br label %365

365:                                              ; preds = %329
  %366 = load i64, ptr %23, align 8, !tbaa !11
  %367 = add nsw i64 %366, 1
  store i64 %367, ptr %23, align 8, !tbaa !11
  br label %318, !llvm.loop !52

368:                                              ; preds = %318
  br label %369

369:                                              ; preds = %368
  %370 = load i64, ptr %21, align 8, !tbaa !11
  %371 = add nsw i64 %370, 1
  store i64 %371, ptr %21, align 8, !tbaa !11
  br label %305, !llvm.loop !53

372:                                              ; preds = %305
  store i64 1, ptr %24, align 8, !tbaa !11
  br label %373

373:                                              ; preds = %411, %372
  %374 = load i64, ptr %24, align 8, !tbaa !11
  %375 = load i64, ptr %20, align 8, !tbaa !11
  %376 = icmp sle i64 %374, %375
  br i1 %376, label %377, label %421

377:                                              ; preds = %373
  store i64 0, ptr %22, align 8, !tbaa !11
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %378

378:                                              ; preds = %408, %377
  %379 = load i64, ptr %21, align 8, !tbaa !11
  %380 = load i64, ptr %20, align 8, !tbaa !11
  %381 = sub nsw i64 %380, 1
  %382 = icmp sle i64 %379, %381
  br i1 %382, label %383, label %411

383:                                              ; preds = %378
  %384 = load ptr, ptr %18, align 8, !tbaa !5
  %385 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %384, i32 0, i32 52
  %386 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %385, i32 0, i32 4
  %387 = load ptr, ptr %386, align 8, !tbaa !49
  %388 = load i64, ptr %21, align 8, !tbaa !11
  %389 = getelementptr inbounds i64, ptr %387, i64 %388
  %390 = load i64, ptr %389, align 8, !tbaa !11
  %391 = load i64, ptr %24, align 8, !tbaa !11
  %392 = icmp sge i64 %390, %391
  br i1 %392, label %393, label %407

393:                                              ; preds = %383
  %394 = load ptr, ptr %18, align 8, !tbaa !5
  %395 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %394, i32 0, i32 52
  %396 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %395, i32 0, i32 4
  %397 = load ptr, ptr %396, align 8, !tbaa !49
  %398 = load i64, ptr %21, align 8, !tbaa !11
  %399 = getelementptr inbounds i64, ptr %397, i64 %398
  %400 = load i64, ptr %399, align 8, !tbaa !11
  %401 = load i64, ptr %24, align 8, !tbaa !11
  %402 = mul nsw i64 2, %401
  %403 = icmp slt i64 %400, %402
  br i1 %403, label %404, label %407

404:                                              ; preds = %393
  %405 = load i64, ptr %22, align 8, !tbaa !11
  %406 = add nsw i64 %405, 1
  store i64 %406, ptr %22, align 8, !tbaa !11
  br label %407

407:                                              ; preds = %404, %393, %383
  br label %408

408:                                              ; preds = %407
  %409 = load i64, ptr %21, align 8, !tbaa !11
  %410 = add nsw i64 %409, 1
  store i64 %410, ptr %21, align 8, !tbaa !11
  br label %378, !llvm.loop !54

411:                                              ; preds = %378
  %412 = load i64, ptr %24, align 8, !tbaa !11
  %413 = trunc i64 %412 to i32
  %414 = load i64, ptr %24, align 8, !tbaa !11
  %415 = mul nsw i64 2, %414
  %416 = trunc i64 %415 to i32
  %417 = load i64, ptr %22, align 8, !tbaa !11
  %418 = trunc i64 %417 to i32
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.367, i32 noundef %413, i32 noundef %416, i32 noundef %418)
  %419 = load i64, ptr %24, align 8, !tbaa !11
  %420 = mul nsw i64 %419, 2
  store i64 %420, ptr %24, align 8, !tbaa !11
  br label %373, !llvm.loop !55

421:                                              ; preds = %373
  br label %422

422:                                              ; preds = %421, %195
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %423

423:                                              ; preds = %454, %422
  %424 = load i64, ptr %21, align 8, !tbaa !11
  %425 = load i64, ptr %20, align 8, !tbaa !11
  %426 = sub nsw i64 %425, 1
  %427 = icmp sle i64 %424, %426
  br i1 %427, label %428, label %457

428:                                              ; preds = %423
  %429 = load ptr, ptr %11, align 8, !tbaa !5
  %430 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %429, i32 0, i32 3
  %431 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %430, i32 0, i32 4
  %432 = load ptr, ptr %431, align 8, !tbaa !49
  %433 = load i64, ptr %21, align 8, !tbaa !11
  %434 = getelementptr inbounds i64, ptr %432, i64 %433
  %435 = load i64, ptr %434, align 8, !tbaa !11
  %436 = load ptr, ptr %11, align 8, !tbaa !5
  %437 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %436, i32 0, i32 4
  %438 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %437, i32 0, i32 4
  %439 = load ptr, ptr %438, align 8, !tbaa !49
  %440 = load i64, ptr %21, align 8, !tbaa !11
  %441 = getelementptr inbounds i64, ptr %439, i64 %440
  %442 = load i64, ptr %441, align 8, !tbaa !11
  %443 = icmp eq i64 %435, %442
  br i1 %443, label %444, label %453

444:                                              ; preds = %428
  %445 = load ptr, ptr %18, align 8, !tbaa !5
  %446 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %445, i32 0, i32 12
  %447 = load i8, ptr %446, align 2, !tbaa !36, !range !37, !noundef !38
  %448 = trunc i8 %447 to i1
  br i1 %448, label %449, label %450

449:                                              ; preds = %444
  call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef @.str.368)
  br label %450

450:                                              ; preds = %449, %444
  store i8 0, ptr %26, align 1, !tbaa !13
  %451 = load i8, ptr %26, align 1, !tbaa !13, !range !37, !noundef !38
  %452 = trunc i8 %451 to i1
  store i1 %452, ptr %10, align 1
  store i32 1, ptr %27, align 4
  br label %793

453:                                              ; preds = %428
  br label %454

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

457:                                              ; preds = %423
  %458 = load ptr, ptr %18, align 8, !tbaa !5
  %459 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %458, i32 0, i32 30
  %460 = load i8, ptr %459, align 8, !tbaa !41, !range !37, !noundef !38
  %461 = trunc i8 %460 to i1
  br i1 %461, label %462, label %593

462:                                              ; preds = %457
  %463 = load i64, ptr %16, align 8, !tbaa !11
  %464 = icmp eq i64 %463, -1
  br i1 %464, label %468, label %465

465:                                              ; preds = %462
  %466 = load i64, ptr %16, align 8, !tbaa !11
  %467 = icmp eq i64 %466, 1
  br label %468

468:                                              ; preds = %465, %462
  %469 = phi i1 [ true, %462 ], [ %467, %465 ]
  %470 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %469, ptr noundef @.str.369, ptr noundef %470)
  %471 = load ptr, ptr %11, align 8, !tbaa !5
  %472 = load i64, ptr %20, align 8, !tbaa !11
  %473 = load ptr, ptr %18, align 8, !tbaa !5
  %474 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %473, i32 0, i32 48
  %475 = load ptr, ptr %18, align 8, !tbaa !5
  %476 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %475, i32 0, i32 26
  %477 = load ptr, ptr %18, align 8, !tbaa !5
  %478 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %477, i32 0, i32 27
  %479 = load ptr, ptr %18, align 8, !tbaa !5
  %480 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %479, i32 0, i32 52
  %481 = load ptr, ptr %18, align 8, !tbaa !5
  %482 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %481, i32 0, i32 53
  %483 = load ptr, ptr %18, align 8, !tbaa !5
  %484 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %483, i32 0, i32 54
  %485 = load ptr, ptr %18, align 8, !tbaa !5
  %486 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %485, i32 0, i32 46
  %487 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_implL24spchol_buildorderedetreeEPKNS_12sparsematrixElPNS_9ae_vectorES4_S4_S4_S4_S4_S4_PNS_8ae_stateE(ptr noundef %471, i64 noundef %472, ptr noundef %474, ptr noundef %476, ptr noundef %478, ptr noundef %480, ptr noundef %482, ptr noundef %484, ptr noundef %486, ptr noundef %487)
  %488 = load ptr, ptr %18, align 8, !tbaa !5
  %489 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %488, i32 0, i32 24
  %490 = load i64, ptr %20, align 8, !tbaa !11
  %491 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %489, i64 noundef %490, ptr noundef %491)
  %492 = load ptr, ptr %18, align 8, !tbaa !5
  %493 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %492, i32 0, i32 25
  %494 = load i64, ptr %20, align 8, !tbaa !11
  %495 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %493, i64 noundef %494, ptr noundef %495)
  %496 = load ptr, ptr %18, align 8, !tbaa !5
  %497 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %496, i32 0, i32 28
  %498 = load i64, ptr %20, align 8, !tbaa !11
  %499 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %497, i64 noundef %498, ptr noundef %499)
  %500 = load ptr, ptr %18, align 8, !tbaa !5
  %501 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %500, i32 0, i32 29
  %502 = load i64, ptr %20, align 8, !tbaa !11
  %503 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %501, i64 noundef %502, ptr noundef %503)
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %504

504:                                              ; preds = %550, %468
  %505 = load i64, ptr %21, align 8, !tbaa !11
  %506 = load i64, ptr %20, align 8, !tbaa !11
  %507 = sub nsw i64 %506, 1
  %508 = icmp sle i64 %505, %507
  br i1 %508, label %509, label %553

509:                                              ; preds = %504
  %510 = load i64, ptr %21, align 8, !tbaa !11
  %511 = load ptr, ptr %18, align 8, !tbaa !5
  %512 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %511, i32 0, i32 24
  %513 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %512, i32 0, i32 4
  %514 = load ptr, ptr %513, align 8, !tbaa !49
  %515 = load i64, ptr %21, align 8, !tbaa !11
  %516 = getelementptr inbounds i64, ptr %514, i64 %515
  store i64 %510, ptr %516, align 8, !tbaa !11
  %517 = load i64, ptr %21, align 8, !tbaa !11
  %518 = load ptr, ptr %18, align 8, !tbaa !5
  %519 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %518, i32 0, i32 25
  %520 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %519, i32 0, i32 4
  %521 = load ptr, ptr %520, align 8, !tbaa !49
  %522 = load i64, ptr %21, align 8, !tbaa !11
  %523 = getelementptr inbounds i64, ptr %521, i64 %522
  store i64 %517, ptr %523, align 8, !tbaa !11
  %524 = load ptr, ptr %18, align 8, !tbaa !5
  %525 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %524, i32 0, i32 26
  %526 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %525, i32 0, i32 4
  %527 = load ptr, ptr %526, align 8, !tbaa !49
  %528 = load i64, ptr %21, align 8, !tbaa !11
  %529 = getelementptr inbounds i64, ptr %527, i64 %528
  %530 = load i64, ptr %529, align 8, !tbaa !11
  %531 = load ptr, ptr %18, align 8, !tbaa !5
  %532 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %531, i32 0, i32 28
  %533 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %532, i32 0, i32 4
  %534 = load ptr, ptr %533, align 8, !tbaa !49
  %535 = load i64, ptr %21, align 8, !tbaa !11
  %536 = getelementptr inbounds i64, ptr %534, i64 %535
  store i64 %530, ptr %536, align 8, !tbaa !11
  %537 = load ptr, ptr %18, align 8, !tbaa !5
  %538 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %537, i32 0, i32 27
  %539 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %538, i32 0, i32 4
  %540 = load ptr, ptr %539, align 8, !tbaa !49
  %541 = load i64, ptr %21, align 8, !tbaa !11
  %542 = getelementptr inbounds i64, ptr %540, i64 %541
  %543 = load i64, ptr %542, align 8, !tbaa !11
  %544 = load ptr, ptr %18, align 8, !tbaa !5
  %545 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %544, i32 0, i32 29
  %546 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %545, i32 0, i32 4
  %547 = load ptr, ptr %546, align 8, !tbaa !49
  %548 = load i64, ptr %21, align 8, !tbaa !11
  %549 = getelementptr inbounds i64, ptr %547, i64 %548
  store i64 %543, ptr %549, align 8, !tbaa !11
  br label %550

550:                                              ; preds = %509
  %551 = load i64, ptr %21, align 8, !tbaa !11
  %552 = add nsw i64 %551, 1
  store i64 %552, ptr %21, align 8, !tbaa !11
  br label %504, !llvm.loop !57

553:                                              ; preds = %504
  %554 = load ptr, ptr %11, align 8, !tbaa !5
  %555 = load ptr, ptr %18, align 8, !tbaa !5
  %556 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %555, i32 0, i32 26
  %557 = load ptr, ptr %18, align 8, !tbaa !5
  %558 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %557, i32 0, i32 59
  %559 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_implL29spchol_topologicalpermutationEPKNS_12sparsematrixEPKNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef %554, ptr noundef %556, ptr noundef %558, ptr noundef %559)
  %560 = load ptr, ptr %18, align 8, !tbaa !5
  %561 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %560, i32 0, i32 59
  %562 = load ptr, ptr %18, align 8, !tbaa !5
  %563 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %562, i32 0, i32 48
  %564 = load i64, ptr %20, align 8, !tbaa !11
  %565 = load ptr, ptr %18, align 8, !tbaa !5
  %566 = load ptr, ptr %18, align 8, !tbaa !5
  %567 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %566, i32 0, i32 49
  %568 = load ptr, ptr %18, align 8, !tbaa !5
  %569 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %568, i32 0, i32 52
  %570 = load ptr, ptr %18, align 8, !tbaa !5
  %571 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %570, i32 0, i32 53
  %572 = load ptr, ptr %18, align 8, !tbaa !5
  %573 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %572, i32 0, i32 54
  %574 = load ptr, ptr %18, align 8, !tbaa !5
  %575 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %574, i32 0, i32 55
  %576 = load ptr, ptr %18, align 8, !tbaa !5
  %577 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %576, i32 0, i32 56
  %578 = load ptr, ptr %18, align 8, !tbaa !5
  %579 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %578, i32 0, i32 46
  %580 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_implL32spchol_createsupernodalstructureEPKNS_12sparsematrixEPKNS_9ae_vectorElPNS_14spcholanalysisEPS3_S8_S8_S8_S8_S8_S8_PNS_8ae_stateE(ptr noundef %561, ptr noundef %563, i64 noundef %564, ptr noundef %565, ptr noundef %567, ptr noundef %569, ptr noundef %571, ptr noundef %573, ptr noundef %575, ptr noundef %577, ptr noundef %579, ptr noundef %580)
  %581 = load ptr, ptr %18, align 8, !tbaa !5
  %582 = load ptr, ptr %11, align 8, !tbaa !5
  %583 = load ptr, ptr %18, align 8, !tbaa !5
  %584 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %583, i32 0, i32 49
  %585 = load i64, ptr %20, align 8, !tbaa !11
  %586 = load ptr, ptr %18, align 8, !tbaa !5
  %587 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %586, i32 0, i32 52
  %588 = load ptr, ptr %18, align 8, !tbaa !5
  %589 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %588, i32 0, i32 53
  %590 = load ptr, ptr %18, align 8, !tbaa !5
  %591 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %590, i32 0, i32 46
  %592 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_implL36spchol_analyzesupernodaldependenciesEPNS_14spcholanalysisEPKNS_12sparsematrixEPKNS_9ae_vectorElPS5_S8_S8_PNS_8ae_stateE(ptr noundef %581, ptr noundef %582, ptr noundef %584, i64 noundef %585, ptr noundef %587, ptr noundef %589, ptr noundef %591, ptr noundef %592)
  br label %778

593:                                              ; preds = %457
  store i8 0, ptr %25, align 1, !tbaa !13
  %594 = load i64, ptr %16, align 8, !tbaa !11
  %595 = icmp eq i64 %594, -2
  br i1 %595, label %596, label %604

596:                                              ; preds = %593
  %597 = load ptr, ptr %11, align 8, !tbaa !5
  %598 = load i64, ptr %20, align 8, !tbaa !11
  %599 = load ptr, ptr %18, align 8, !tbaa !5
  %600 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %599, i32 0, i32 24
  %601 = load ptr, ptr %18, align 8, !tbaa !5
  %602 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %601, i32 0, i32 25
  %603 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_implL29spchol_generatedbgpermutationEPKNS_12sparsematrixElPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef %597, i64 noundef %598, ptr noundef %600, ptr noundef %602, ptr noundef %603)
  store i8 1, ptr %25, align 1, !tbaa !13
  br label %604

604:                                              ; preds = %596, %593
  %605 = load i64, ptr %16, align 8, !tbaa !11
  %606 = icmp eq i64 %605, 2
  br i1 %606, label %607, label %617

607:                                              ; preds = %604
  %608 = load ptr, ptr %11, align 8, !tbaa !5
  %609 = load i64, ptr %20, align 8, !tbaa !11
  %610 = load ptr, ptr %18, align 8, !tbaa !5
  %611 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %610, i32 0, i32 24
  %612 = load ptr, ptr %18, align 8, !tbaa !5
  %613 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %612, i32 0, i32 25
  %614 = load ptr, ptr %18, align 8, !tbaa !5
  %615 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %614, i32 0, i32 50
  %616 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl22generateamdpermutationEPKNS_12sparsematrixElPNS_9ae_vectorES4_PNS_9amdbufferEPNS_8ae_stateE(ptr noundef %608, i64 noundef %609, ptr noundef %611, ptr noundef %613, ptr noundef %615, ptr noundef %616)
  store i8 1, ptr %25, align 1, !tbaa !13
  br label %617

617:                                              ; preds = %607, %604
  %618 = load i64, ptr %16, align 8, !tbaa !11
  %619 = icmp eq i64 %618, 3
  br i1 %619, label %623, label %620

620:                                              ; preds = %617
  %621 = load i64, ptr %16, align 8, !tbaa !11
  %622 = icmp eq i64 %621, -3
  br i1 %622, label %623, label %659

623:                                              ; preds = %620, %617
  %624 = load ptr, ptr %11, align 8, !tbaa !5
  %625 = load ptr, ptr %18, align 8, !tbaa !5
  %626 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %625, i32 0, i32 58
  %627 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl13sparsecopybufEPKNS_12sparsematrixEPS0_PNS_8ae_stateE(ptr noundef %624, ptr noundef %626, ptr noundef %627)
  %628 = load ptr, ptr %18, align 8, !tbaa !5
  %629 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %628, i32 0, i32 58
  %630 = load ptr, ptr %18, align 8, !tbaa !5
  %631 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %630, i32 0, i32 47
  %632 = load double, ptr %13, align 8, !tbaa !9
  %633 = load i64, ptr %14, align 8, !tbaa !11
  %634 = load i64, ptr %16, align 8, !tbaa !11
  %635 = icmp eq i64 %634, -3
  br i1 %635, label %636, label %640

636:                                              ; preds = %623
  %637 = load ptr, ptr %19, align 8, !tbaa !5
  %638 = call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 100, ptr noundef %637)
  %639 = icmp sgt i64 %638, 50
  br label %640

640:                                              ; preds = %636, %623
  %641 = phi i1 [ false, %623 ], [ %639, %636 ]
  %642 = load ptr, ptr %18, align 8, !tbaa !5
  %643 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %642, i32 0, i32 12
  %644 = load i8, ptr %643, align 2, !tbaa !36, !range !37, !noundef !38
  %645 = trunc i8 %644 to i1
  %646 = load ptr, ptr %18, align 8, !tbaa !5
  %647 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %646, i32 0, i32 39
  %648 = load ptr, ptr %18, align 8, !tbaa !5
  %649 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %648, i32 0, i32 41
  %650 = load ptr, ptr %18, align 8, !tbaa !5
  %651 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %650, i32 0, i32 51
  %652 = load i64, ptr %17, align 8, !tbaa !11
  %653 = icmp sgt i64 %652, 0
  %654 = load ptr, ptr %18, align 8, !tbaa !5
  %655 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %654, i32 0, i32 24
  %656 = load ptr, ptr %18, align 8, !tbaa !5
  %657 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %656, i32 0, i32 25
  %658 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_implL37spchol_generatepriorityamdpermutationEPNS_12sparsematrixEPNS_9ae_vectorEdlbbPNS_9ae_nxpoolES5_PNS_18priorityamdbuffersEbS3_S3_PNS_8ae_stateE(ptr noundef %629, ptr noundef %631, double noundef %632, i64 noundef %633, i1 noundef zeroext %641, i1 noundef zeroext %645, ptr noundef %647, ptr noundef %649, ptr noundef %651, i1 noundef zeroext %653, ptr noundef %655, ptr noundef %657, ptr noundef %658)
  store i8 1, ptr %25, align 1, !tbaa !13
  br label %659

659:                                              ; preds = %640, %620
  %660 = load i8, ptr %25, align 1, !tbaa !13, !range !37, !noundef !38
  %661 = trunc i8 %660 to i1
  %662 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %661, ptr noundef @.str.370, ptr noundef %662)
  %663 = load ptr, ptr %11, align 8, !tbaa !5
  %664 = load ptr, ptr %18, align 8, !tbaa !5
  %665 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %664, i32 0, i32 24
  %666 = load ptr, ptr %18, align 8, !tbaa !5
  %667 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %666, i32 0, i32 58
  %668 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl20sparsesymmpermtblbufEPKNS_12sparsematrixEbPKNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef %663, i1 noundef zeroext false, ptr noundef %665, ptr noundef %667, ptr noundef %668)
  %669 = load ptr, ptr %18, align 8, !tbaa !5
  %670 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %669, i32 0, i32 58
  %671 = load i64, ptr %20, align 8, !tbaa !11
  %672 = load ptr, ptr %18, align 8, !tbaa !5
  %673 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %672, i32 0, i32 48
  %674 = load ptr, ptr %18, align 8, !tbaa !5
  %675 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %674, i32 0, i32 26
  %676 = load ptr, ptr %18, align 8, !tbaa !5
  %677 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %676, i32 0, i32 27
  %678 = load ptr, ptr %18, align 8, !tbaa !5
  %679 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %678, i32 0, i32 52
  %680 = load ptr, ptr %18, align 8, !tbaa !5
  %681 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %680, i32 0, i32 53
  %682 = load ptr, ptr %18, align 8, !tbaa !5
  %683 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %682, i32 0, i32 54
  %684 = load ptr, ptr %18, align 8, !tbaa !5
  %685 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %684, i32 0, i32 46
  %686 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_implL24spchol_buildorderedetreeEPKNS_12sparsematrixElPNS_9ae_vectorES4_S4_S4_S4_S4_S4_PNS_8ae_stateE(ptr noundef %670, i64 noundef %671, ptr noundef %673, ptr noundef %675, ptr noundef %677, ptr noundef %679, ptr noundef %681, ptr noundef %683, ptr noundef %685, ptr noundef %686)
  %687 = load ptr, ptr %18, align 8, !tbaa !5
  %688 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %687, i32 0, i32 28
  %689 = load i64, ptr %20, align 8, !tbaa !11
  %690 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %688, i64 noundef %689, ptr noundef %690)
  %691 = load ptr, ptr %18, align 8, !tbaa !5
  %692 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %691, i32 0, i32 29
  %693 = load i64, ptr %20, align 8, !tbaa !11
  %694 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %692, i64 noundef %693, ptr noundef %694)
  store i64 0, ptr %21, align 8, !tbaa !11
  br label %695

695:                                              ; preds = %733, %659
  %696 = load i64, ptr %21, align 8, !tbaa !11
  %697 = load i64, ptr %20, align 8, !tbaa !11
  %698 = sub nsw i64 %697, 1
  %699 = icmp sle i64 %696, %698
  br i1 %699, label %700, label %736

700:                                              ; preds = %695
  %701 = load ptr, ptr %18, align 8, !tbaa !5
  %702 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %701, i32 0, i32 26
  %703 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %702, i32 0, i32 4
  %704 = load ptr, ptr %703, align 8, !tbaa !49
  %705 = load ptr, ptr %18, align 8, !tbaa !5
  %706 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %705, i32 0, i32 24
  %707 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %706, i32 0, i32 4
  %708 = load ptr, ptr %707, align 8, !tbaa !49
  %709 = load i64, ptr %21, align 8, !tbaa !11
  %710 = getelementptr inbounds i64, ptr %708, i64 %709
  %711 = load i64, ptr %710, align 8, !tbaa !11
  %712 = getelementptr inbounds i64, ptr %704, i64 %711
  %713 = load i64, ptr %712, align 8, !tbaa !11
  %714 = load ptr, ptr %18, align 8, !tbaa !5
  %715 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %714, i32 0, i32 28
  %716 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %715, i32 0, i32 4
  %717 = load ptr, ptr %716, align 8, !tbaa !49
  %718 = load i64, ptr %21, align 8, !tbaa !11
  %719 = getelementptr inbounds i64, ptr %717, i64 %718
  store i64 %713, ptr %719, align 8, !tbaa !11
  %720 = load i64, ptr %21, align 8, !tbaa !11
  %721 = load ptr, ptr %18, align 8, !tbaa !5
  %722 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %721, i32 0, i32 29
  %723 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %722, i32 0, i32 4
  %724 = load ptr, ptr %723, align 8, !tbaa !49
  %725 = load ptr, ptr %18, align 8, !tbaa !5
  %726 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %725, i32 0, i32 28
  %727 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %726, i32 0, i32 4
  %728 = load ptr, ptr %727, align 8, !tbaa !49
  %729 = load i64, ptr %21, align 8, !tbaa !11
  %730 = getelementptr inbounds i64, ptr %728, i64 %729
  %731 = load i64, ptr %730, align 8, !tbaa !11
  %732 = getelementptr inbounds i64, ptr %724, i64 %731
  store i64 %720, ptr %732, align 8, !tbaa !11
  br label %733

733:                                              ; preds = %700
  %734 = load i64, ptr %21, align 8, !tbaa !11
  %735 = add nsw i64 %734, 1
  store i64 %735, ptr %21, align 8, !tbaa !11
  br label %695, !llvm.loop !58

736:                                              ; preds = %695
  %737 = load ptr, ptr %18, align 8, !tbaa !5
  %738 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %737, i32 0, i32 58
  %739 = load ptr, ptr %18, align 8, !tbaa !5
  %740 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %739, i32 0, i32 26
  %741 = load ptr, ptr %18, align 8, !tbaa !5
  %742 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %741, i32 0, i32 59
  %743 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_implL29spchol_topologicalpermutationEPKNS_12sparsematrixEPKNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef %738, ptr noundef %740, ptr noundef %742, ptr noundef %743)
  %744 = load ptr, ptr %18, align 8, !tbaa !5
  %745 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %744, i32 0, i32 59
  %746 = load ptr, ptr %18, align 8, !tbaa !5
  %747 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %746, i32 0, i32 48
  %748 = load i64, ptr %20, align 8, !tbaa !11
  %749 = load ptr, ptr %18, align 8, !tbaa !5
  %750 = load ptr, ptr %18, align 8, !tbaa !5
  %751 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %750, i32 0, i32 49
  %752 = load ptr, ptr %18, align 8, !tbaa !5
  %753 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %752, i32 0, i32 52
  %754 = load ptr, ptr %18, align 8, !tbaa !5
  %755 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %754, i32 0, i32 53
  %756 = load ptr, ptr %18, align 8, !tbaa !5
  %757 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %756, i32 0, i32 54
  %758 = load ptr, ptr %18, align 8, !tbaa !5
  %759 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %758, i32 0, i32 55
  %760 = load ptr, ptr %18, align 8, !tbaa !5
  %761 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %760, i32 0, i32 56
  %762 = load ptr, ptr %18, align 8, !tbaa !5
  %763 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %762, i32 0, i32 46
  %764 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_implL32spchol_createsupernodalstructureEPKNS_12sparsematrixEPKNS_9ae_vectorElPNS_14spcholanalysisEPS3_S8_S8_S8_S8_S8_S8_PNS_8ae_stateE(ptr noundef %745, ptr noundef %747, i64 noundef %748, ptr noundef %749, ptr noundef %751, ptr noundef %753, ptr noundef %755, ptr noundef %757, ptr noundef %759, ptr noundef %761, ptr noundef %763, ptr noundef %764)
  %765 = load ptr, ptr %18, align 8, !tbaa !5
  %766 = load ptr, ptr %18, align 8, !tbaa !5
  %767 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %766, i32 0, i32 58
  %768 = load ptr, ptr %18, align 8, !tbaa !5
  %769 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %768, i32 0, i32 49
  %770 = load i64, ptr %20, align 8, !tbaa !11
  %771 = load ptr, ptr %18, align 8, !tbaa !5
  %772 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %771, i32 0, i32 52
  %773 = load ptr, ptr %18, align 8, !tbaa !5
  %774 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %773, i32 0, i32 53
  %775 = load ptr, ptr %18, align 8, !tbaa !5
  %776 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %775, i32 0, i32 46
  %777 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_implL36spchol_analyzesupernodaldependenciesEPNS_14spcholanalysisEPKNS_12sparsematrixEPKNS_9ae_vectorElPS5_S8_S8_PNS_8ae_stateE(ptr noundef %765, ptr noundef %767, ptr noundef %769, i64 noundef %770, ptr noundef %772, ptr noundef %774, ptr noundef %776, ptr noundef %777)
  br label %778

778:                                              ; preds = %736, %553
  %779 = load i64, ptr %20, align 8, !tbaa !11
  %780 = add nsw i64 %779, 1
  %781 = load ptr, ptr %18, align 8, !tbaa !5
  %782 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %781, i32 0, i32 59
  %783 = getelementptr inbounds %"struct.alglib_impl::sparsematrix", ptr %782, i32 0, i32 2
  %784 = load ptr, ptr %18, align 8, !tbaa !5
  %785 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %784, i32 0, i32 15
  %786 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_impl11icopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %780, ptr noundef %783, ptr noundef %785, ptr noundef %786)
  %787 = load ptr, ptr %18, align 8, !tbaa !5
  %788 = load ptr, ptr %18, align 8, !tbaa !5
  %789 = getelementptr inbounds %"struct.alglib_impl::spcholanalysis", ptr %788, i32 0, i32 59
  %790 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZN11alglib_implL17spchol_loadmatrixEPNS_14spcholanalysisEPKNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %787, ptr noundef %789, ptr noundef %790)
  %791 = load i8, ptr %26, align 1, !tbaa !13, !range !37, !noundef !38
  %792 = trunc i8 %791 to i1
  store i1 %792, ptr %10, align 1
  store i32 1, ptr %27, align 4
  br label %793

793:                                              ; preds = %778, %450
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  %794 = load i1, ptr %10, align 1
  ret i1 %794
}

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

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

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

declare void @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef, ...) #1

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL37spchol_generatepriorityamdpermutationEPNS_12sparsematrixEPNS_9ae_vectorEdlbbPNS_9ae_nxpoolES5_PNS_18priorityamdbuffersEbS3_S3_PNS_8ae_stateE(ptr noundef, ptr noundef, double noundef, i64 noundef, i1 noundef zeroext, i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!16, !12, i64 0}
!16 = !{!"_ZTSN11alglib_impl9ae_vectorE", !12, i64 0, !12, i64 8, !14, i64 16, !17, i64 24, !7, i64 56}
!17 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!18 = !{!19, !12, i64 0}
!19 = !{!"_ZTSN11alglib_impl14spcholanalysisE", !12, i64 0, !12, i64 8, !12, i64 16, !14, i64 24, !12, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !16, i64 72, !14, i64 136, !14, i64 137, !14, i64 138, !14, i64 139, !14, i64 140, !16, i64 144, !12, i64 208, !16, i64 216, !16, i64 280, !16, i64 344, !16, i64 408, !16, i64 472, !16, i64 536, !14, i64 600, !16, i64 608, !16, i64 672, !16, i64 736, !16, i64 800, !16, i64 864, !16, i64 928, !14, i64 992, !14, i64 993, !20, i64 1000, !16, i64 1512, !16, i64 1576, !16, i64 1640, !16, i64 1704, !16, i64 1768, !16, i64 1832, !21, i64 1896, !21, i64 2040, !21, i64 2184, !21, i64 2328, !21, i64 2472, !21, i64 2616, !16, i64 2760, !16, i64 2824, !16, i64 2888, !16, i64 2952, !16, i64 3016, !23, i64 3080, !29, i64 7464, !16, i64 13816, !16, i64 13880, !16, i64 13944, !16, i64 14008, !16, i64 14072, !16, i64 14136, !30, i64 14200, !30, i64 14568, !16, i64 14936, !16, i64 15000}
!20 = !{!"_ZTSN11alglib_impl9spcholadjE", !16, i64 0, !16, i64 64, !16, i64 128, !16, i64 192, !16, i64 256, !16, i64 320, !16, i64 384, !16, i64 448}
!21 = !{!"_ZTSN11alglib_impl9ae_nxpoolE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !17, i64 32, !22, i64 64, !17, i64 112}
!22 = !{!"_ZTSN11alglib_impl7ae_lockE", !6, i64 0, !17, i64 8, !14, i64 40}
!23 = !{!"_ZTSN11alglib_impl9amdbufferE", !12, i64 0, !14, i64 8, !14, i64 9, !16, i64 16, !16, i64 80, !16, i64 144, !24, i64 208, !24, i64 568, !24, i64 928, !25, i64 1288, !26, i64 1496, !27, i64 1968, !16, i64 2120, !16, i64 2184, !16, i64 2248, !27, i64 2312, !27, i64 2464, !27, i64 2616, !27, i64 2768, !27, i64 2920, !27, i64 3072, !16, i64 3224, !12, i64 3288, !27, i64 3296, !27, i64 3448, !24, i64 3600, !27, i64 3960, !16, i64 4112, !16, i64 4176, !16, i64 4240, !28, i64 4304}
!24 = !{!"_ZTSN11alglib_impl8amdknsetE", !12, i64 0, !12, i64 8, !16, i64 16, !16, i64 80, !16, i64 144, !16, i64 208, !16, i64 272, !12, i64 336, !12, i64 344, !12, i64 352}
!25 = !{!"_ZTSN11alglib_impl11amdllmatrixE", !12, i64 0, !16, i64 8, !16, i64 72, !16, i64 136, !12, i64 200}
!26 = !{!"_ZTSN11alglib_impl12amdvertexsetE", !12, i64 0, !14, i64 8, !12, i64 16, !16, i64 24, !16, i64 88, !16, i64 152, !16, i64 216, !16, i64 280, !16, i64 344, !16, i64 408}
!27 = !{!"_ZTSN11alglib_impl5nisetE", !12, i64 0, !12, i64 8, !16, i64 16, !16, i64 80, !12, i64 144}
!28 = !{!"_ZTSN11alglib_impl9ae_matrixE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !14, i64 32, !17, i64 40, !7, i64 72}
!29 = !{!"_ZTSN11alglib_impl18priorityamdbuffersE", !16, i64 0, !16, i64 64, !23, i64 128, !30, i64 4512, !30, i64 4880, !30, i64 5248, !30, i64 5616, !30, i64 5984}
!30 = !{!"_ZTSN11alglib_impl12sparsematrixE", !16, i64 0, !16, i64 64, !16, i64 128, !16, i64 192, !16, i64 256, !12, i64 320, !12, i64 328, !12, i64 336, !12, i64 344, !12, i64 352, !12, i64 360}
!31 = !{!19, !12, i64 8}
!32 = !{!19, !14, i64 24}
!33 = !{!19, !12, i64 16}
!34 = !{!19, !14, i64 136}
!35 = !{!19, !14, i64 137}
!36 = !{!19, !14, i64 138}
!37 = !{i8 0, i8 2}
!38 = !{}
!39 = !{!19, !14, i64 139}
!40 = !{!19, !14, i64 140}
!41 = !{!19, !14, i64 992}
!42 = !{!19, !14, i64 993}
!43 = !{!19, !12, i64 32}
!44 = !{!19, !10, i64 40}
!45 = !{!19, !10, i64 48}
!46 = !{!19, !10, i64 56}
!47 = !{!19, !10, i64 64}
!48 = !{!19, !14, i64 600}
!49 = !{!7, !7, i64 0}
!50 = distinct !{!50, !51}
!51 = !{!"llvm.loop.mustprogress"}
!52 = distinct !{!52, !51}
!53 = distinct !{!53, !51}
!54 = distinct !{!54, !51}
!55 = distinct !{!55, !51}
!56 = distinct !{!56, !51}
!57 = distinct !{!57, !51}
!58 = distinct !{!58, !51}


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

@.str.340 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.349 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.350 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.351 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.352 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.353 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.354 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.355 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.356 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.357 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.358 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.359 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.360 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.361 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.362 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.363 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.364 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.365 = external hidden unnamed_addr constant [102 x i8], align 1
@.str.366 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.367 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.368 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.369 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.370 = external hidden unnamed_addr constant [46 x i8], align 1

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

declare void @_ZN11alglib_impl13sparsecopybufEPKNS_12sparsematrixEPS0_PNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

declare noundef zeroext i1 @_ZN11alglib_impl11sparseiscrsEPKNS_12sparsematrixEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #0

declare noundef i64 @_ZN11alglib_impl14sparsegetnrowsEPKNS_12sparsematrixEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #0

declare noundef i64 @_ZN11alglib_impl14sparsegetncolsEPKNS_12sparsematrixEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #0

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

declare noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

declare noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl5isetvEllPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl10isetallocvEllPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

declare noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN11alglib_impl13spsymmanalyzeEPKNS_12sparsematrixEPKNS_9ae_vectorEdllllPNS_14spcholanalysisEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1, double noundef %2, i64 noundef %3, i64 noundef %4, i64 noundef %5, i64 noundef %6, ptr noundef %7, ptr noundef %8) local_unnamed_addr #1 {
  %10 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %2, ptr noundef %8)
  br i1 %10, label %11, label %13

11:                                               ; preds = %9
  %12 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %2, double noundef 0.000000e+00)
  br label %13

13:                                               ; preds = %11, %9
  %14 = phi i1 [ false, %9 ], [ %12, %11 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %14, ptr noundef nonnull @.str.349, ptr noundef %8)
  %15 = icmp sgt i64 %3, -1
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %15, ptr noundef nonnull @.str.350, ptr noundef %8)
  %16 = tail call noundef zeroext i1 @_ZN11alglib_impl11sparseiscrsEPKNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %0, ptr noundef %8)
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %16, ptr noundef nonnull @.str.351, ptr noundef %8)
  %17 = tail call noundef i64 @_ZN11alglib_impl14sparsegetnrowsEPKNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %0, ptr noundef %8)
  %18 = tail call noundef i64 @_ZN11alglib_impl14sparsegetncolsEPKNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %0, ptr noundef %8)
  %19 = icmp eq i64 %17, %18
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %19, ptr noundef nonnull @.str.352, ptr noundef %8)
  %20 = icmp eq i64 %4, 0
  %21 = icmp ult i64 %4, 2
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %21, ptr noundef nonnull @.str.353, ptr noundef %8)
  %22 = icmp eq i64 %5, 0
  %23 = add i64 %5, 3
  %spec.select = icmp ult i64 %23, 7
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %spec.select, ptr noundef nonnull @.str.354, ptr noundef %8)
  %24 = icmp eq i64 %6, -1
  %25 = icmp eq i64 %6, 1
  %26 = or i1 %24, %25
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %26, ptr noundef nonnull @.str.355, ptr noundef %8)
  switch i64 %5, label %31 [
    i64 -3, label %27
    i64 3, label %27
  ]

27:                                               ; preds = %13, %13
  %28 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %2, ptr noundef %8)
  br i1 %28, label %29, label %31

29:                                               ; preds = %27
  %30 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %2, double noundef 0.000000e+00)
  br label %31

31:                                               ; preds = %13, %27, %29
  %32 = phi i1 [ true, %13 ], [ false, %27 ], [ %30, %29 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %32, ptr noundef nonnull @.str.356, ptr noundef %8)
  %33 = tail call noundef i64 @_ZN11alglib_impl14sparsegetnrowsEPKNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %0, ptr noundef %8)
  switch i64 %5, label %40 [
    i64 -3, label %34
    i64 3, label %34
    i64 0, label %38
  ]

34:                                               ; preds = %31, %31
  %35 = load i64, ptr %1, align 8, !tbaa !5
  %36 = icmp sge i64 %35, %33
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %36, ptr noundef nonnull @.str.357, ptr noundef %8)
  %37 = getelementptr inbounds i8, ptr %7, i64 2888
  tail call void @_ZN11alglib_impl11icopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %33, ptr noundef nonnull %1, ptr noundef nonnull %37, ptr noundef %8)
  br i1 %22, label %38, label %40

38:                                               ; preds = %31, %34
  %39 = getelementptr inbounds i8, ptr %7, i64 2888
  tail call void @_ZN11alglib_impl10isetallocvEllPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %33, i64 noundef 0, ptr noundef nonnull %39, ptr noundef %8)
  br label %40

40:                                               ; preds = %31, %38, %34
  %.0354 = phi i64 [ 3, %38 ], [ %5, %34 ], [ %5, %31 ]
  %.0353 = phi i64 [ 0, %38 ], [ %3, %34 ], [ %3, %31 ]
  %.0352 = phi double [ 0.000000e+00, %38 ], [ %2, %34 ], [ %2, %31 ]
  store i64 0, ptr %7, align 8, !tbaa !13
  %41 = getelementptr inbounds i8, ptr %7, i64 8
  store i64 %33, ptr %41, align 8, !tbaa !27
  %42 = getelementptr inbounds i8, ptr %7, i64 24
  %43 = zext i1 %20 to i8
  store i8 %43, ptr %42, align 8, !tbaa !28
  %44 = getelementptr inbounds i8, ptr %7, i64 16
  store i64 %.0354, ptr %44, align 8, !tbaa !29
  %45 = icmp eq i64 %.0354, -3
  %46 = getelementptr inbounds i8, ptr %7, i64 136
  %47 = zext i1 %45 to i8
  store i8 %47, ptr %46, align 8, !tbaa !30
  %48 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.340)
  %49 = icmp slt i64 %33, 101
  %50 = and i1 %49, %48
  %51 = getelementptr inbounds i8, ptr %7, i64 137
  %52 = zext i1 %50 to i8
  store i8 %52, ptr %51, align 1, !tbaa !31
  %53 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.358)
  %54 = getelementptr inbounds i8, ptr %7, i64 138
  %55 = zext i1 %53 to i8
  store i8 %55, ptr %54, align 2, !tbaa !32
  br i1 %53, label %57, label %.thread417

.thread417:                                       ; preds = %40
  %56 = getelementptr inbounds i8, ptr %7, i64 139
  store i8 0, ptr %56, align 1, !tbaa !33
  br label %64

57:                                               ; preds = %40
  %58 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.359)
  %.pre = load i8, ptr %54, align 2, !tbaa !32, !range !34
  %59 = getelementptr inbounds i8, ptr %7, i64 139
  %60 = zext i1 %58 to i8
  store i8 %60, ptr %59, align 1, !tbaa !33
  %61 = trunc nuw i8 %.pre to i1
  br i1 %61, label %62, label %64

62:                                               ; preds = %57
  %63 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.360)
  br label %64

64:                                               ; preds = %.thread417, %62, %57
  %65 = phi i1 [ false, %57 ], [ %63, %62 ], [ false, %.thread417 ]
  %66 = getelementptr inbounds i8, ptr %7, i64 140
  %67 = zext i1 %65 to i8
  store i8 %67, ptr %66, align 4, !tbaa !35
  %68 = icmp eq i64 %.0354, -1
  %69 = icmp eq i64 %.0354, 1
  %70 = or i1 %68, %69
  %71 = getelementptr inbounds i8, ptr %7, i64 992
  %72 = zext i1 %70 to i8
  store i8 %72, ptr %71, align 8, !tbaa !36
  %73 = getelementptr inbounds i8, ptr %7, i64 993
  %74 = zext i1 %68 to i8
  store i8 %74, ptr %73, align 1, !tbaa !37
  %75 = getelementptr inbounds i8, ptr %7, i64 32
  %76 = getelementptr inbounds i8, ptr %7, i64 600
  store i8 0, ptr %76, align 8, !tbaa !38
  %77 = getelementptr inbounds i8, ptr %7, i64 2952
  %78 = add nsw i64 %33, 1
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %75, i8 0, i64 40, i1 false)
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %77, i64 noundef %78, ptr noundef %8)
  %79 = getelementptr inbounds i8, ptr %7, i64 13816
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %79, i64 noundef %78, ptr noundef %8)
  %80 = getelementptr inbounds i8, ptr %7, i64 13880
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %80, i64 noundef %78, ptr noundef %8)
  %81 = getelementptr inbounds i8, ptr %7, i64 13944
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %81, i64 noundef %78, ptr noundef %8)
  %82 = getelementptr inbounds i8, ptr %7, i64 14008
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %82, i64 noundef %78, ptr noundef %8)
  %83 = getelementptr inbounds i8, ptr %7, i64 14072
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %83, i64 noundef %78, ptr noundef %8)
  %84 = getelementptr inbounds i8, ptr %7, i64 2824
  tail call void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %84, i64 noundef %78, ptr noundef %8)
  %85 = getelementptr inbounds i8, ptr %7, i64 1896
  tail call void @_ZN11alglib_impl15ae_nxpool_allocEPNS_9ae_nxpoolElPNS_8ae_stateE(ptr noundef nonnull %85, i64 noundef %78, ptr noundef %8)
  %86 = getelementptr inbounds i8, ptr %7, i64 2184
  tail call void @_ZN11alglib_impl15ae_nxpool_allocEPNS_9ae_nxpoolElPNS_8ae_stateE(ptr noundef nonnull %86, i64 noundef %78, ptr noundef %8)
  %87 = getelementptr inbounds i8, ptr %7, i64 2472
  tail call void @_ZN11alglib_impl15ae_nxpool_allocEPNS_9ae_nxpoolElPNS_8ae_stateE(ptr noundef nonnull %87, i64 noundef %33, ptr noundef %8)
  %88 = load i8, ptr %54, align 2, !tbaa !32, !range !34, !noundef !39
  %89 = trunc nuw i8 %88 to i1
  br i1 %89, label %90, label %.loopexit

90:                                               ; preds = %64
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.361)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.362)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.363)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.362)
  %.not.not373 = icmp sgt i64 %33, 0
  br i1 %.not.not373, label %.lr.ph, label %._crit_edge398.critedge

.lr.ph:                                           ; preds = %90
  %91 = getelementptr inbounds i8, ptr %0, i64 248
  %92 = load ptr, ptr %91, align 8, !tbaa !40
  %93 = getelementptr inbounds i8, ptr %0, i64 184
  %94 = load ptr, ptr %93, align 8, !tbaa !40
  %min.iters.check = icmp ult i64 %33, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph
  %n.vec = and i64 %33, 9223372036854775804
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.phi = phi <2 x i64> [ zeroinitializer, %vector.ph ], [ %103, %vector.body ]
  %vec.phi429 = phi <2 x i64> [ zeroinitializer, %vector.ph ], [ %104, %vector.body ]
  %95 = getelementptr inbounds i64, ptr %92, i64 %index
  %96 = getelementptr inbounds i8, ptr %95, i64 16
  %wide.load = load <2 x i64>, ptr %95, align 8, !tbaa !41
  %wide.load430 = load <2 x i64>, ptr %96, align 8, !tbaa !41
  %97 = getelementptr inbounds i64, ptr %94, i64 %index
  %98 = getelementptr inbounds i8, ptr %97, i64 16
  %wide.load431 = load <2 x i64>, ptr %97, align 8, !tbaa !41
  %wide.load432 = load <2 x i64>, ptr %98, align 8, !tbaa !41
  %99 = add <2 x i64> %vec.phi, <i64 1, i64 1>
  %100 = add <2 x i64> %vec.phi429, <i64 1, i64 1>
  %101 = add <2 x i64> %99, %wide.load
  %102 = add <2 x i64> %100, %wide.load430
  %103 = sub <2 x i64> %101, %wide.load431
  %104 = sub <2 x i64> %102, %wide.load432
  %index.next = add nuw i64 %index, 4
  %105 = icmp eq i64 %index.next, %n.vec
  br i1 %105, label %middle.block, label %vector.body, !llvm.loop !42

middle.block:                                     ; preds = %vector.body
  %bin.rdx = add <2 x i64> %104, %103
  %106 = tail call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %bin.rdx)
  %cmp.n = icmp eq i64 %33, %n.vec
  br i1 %cmp.n, label %._crit_edge, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph
  %.0343375.ph = phi i64 [ 0, %.lr.ph ], [ %106, %middle.block ]
  %.0348374.ph = phi i64 [ 0, %.lr.ph ], [ %n.vec, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.0343375 = phi i64 [ %113, %scalar.ph ], [ %.0343375.ph, %scalar.ph.preheader ]
  %.0348374 = phi i64 [ %114, %scalar.ph ], [ %.0348374.ph, %scalar.ph.preheader ]
  %107 = getelementptr inbounds i64, ptr %92, i64 %.0348374
  %108 = load i64, ptr %107, align 8, !tbaa !41
  %109 = getelementptr inbounds i64, ptr %94, i64 %.0348374
  %110 = load i64, ptr %109, align 8, !tbaa !41
  %111 = add i64 %.0343375, 1
  %112 = add i64 %111, %108
  %113 = sub i64 %112, %110
  %114 = add nuw nsw i64 %.0348374, 1
  %exitcond.not = icmp eq i64 %114, %33
  br i1 %exitcond.not, label %._crit_edge, label %scalar.ph, !llvm.loop !46

._crit_edge:                                      ; preds = %scalar.ph, %middle.block
  %.lcssa425 = phi i64 [ %106, %middle.block ], [ %113, %scalar.ph ]
  %115 = trunc i64 %.lcssa425 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.364, i32 noundef %115)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.365)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.366)
  tail call void @_ZN11alglib_impl5isetvEllPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %33, i64 noundef 1, ptr noundef nonnull %79, ptr noundef %8)
  br i1 %.not.not373, label %.lr.ph384, label %._crit_edge398

.lr.ph384:                                        ; preds = %._crit_edge
  %116 = getelementptr inbounds i8, ptr %0, i64 184
  %117 = getelementptr inbounds i8, ptr %0, i64 248
  %118 = getelementptr inbounds i8, ptr %0, i64 120
  %119 = getelementptr inbounds i8, ptr %7, i64 13872
  %.pre416 = load ptr, ptr %117, align 8, !tbaa !40
  br label %140

.preheader.lr.ph:                                 ; preds = %._crit_edge380
  %120 = getelementptr inbounds i8, ptr %7, i64 13872
  %xtraiter = and i64 %33, 1
  %121 = icmp eq i64 %33, 1
  %unroll_iter = and i64 %33, 9223372036854775806
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %.preheader.us

.preheader.us:                                    ; preds = %._crit_edge389.us, %.preheader.lr.ph
  %.1344392.us = phi i64 [ 1, %.preheader.lr.ph ], [ %123, %._crit_edge389.us ]
  %122 = load ptr, ptr %120, align 8, !tbaa !40
  %123 = shl nsw i64 %.1344392.us, 1
  br i1 %121, label %._crit_edge389.us.unr-lcssa, label %.preheader.us.new

.preheader.us.new:                                ; preds = %.preheader.us, %.preheader.us.new
  %.0346387.us = phi i32 [ %.1347.us.1, %.preheader.us.new ], [ 0, %.preheader.us ]
  %.2350386.us = phi i64 [ %133, %.preheader.us.new ], [ 0, %.preheader.us ]
  %niter = phi i64 [ %niter.next.1, %.preheader.us.new ], [ 0, %.preheader.us ]
  %124 = getelementptr inbounds i64, ptr %122, i64 %.2350386.us
  %125 = load i64, ptr %124, align 8, !tbaa !41
  %.not365.us = icmp sge i64 %125, %.1344392.us
  %126 = icmp slt i64 %125, %123
  %or.cond.us = select i1 %.not365.us, i1 %126, i1 false
  %127 = zext i1 %or.cond.us to i32
  %.1347.us = add i32 %.0346387.us, %127
  %128 = or disjoint i64 %.2350386.us, 1
  %129 = getelementptr inbounds i64, ptr %122, i64 %128
  %130 = load i64, ptr %129, align 8, !tbaa !41
  %.not365.us.1 = icmp sge i64 %130, %.1344392.us
  %131 = icmp slt i64 %130, %123
  %or.cond.us.1 = select i1 %.not365.us.1, i1 %131, i1 false
  %132 = zext i1 %or.cond.us.1 to i32
  %.1347.us.1 = add i32 %.1347.us, %132
  %133 = add nuw nsw i64 %.2350386.us, 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 %._crit_edge389.us.unr-lcssa, label %.preheader.us.new, !llvm.loop !47

._crit_edge389.us.unr-lcssa:                      ; preds = %.preheader.us.new, %.preheader.us
  %.1347.us.lcssa.ph = phi i32 [ poison, %.preheader.us ], [ %.1347.us.1, %.preheader.us.new ]
  %.0346387.us.unr = phi i32 [ 0, %.preheader.us ], [ %.1347.us.1, %.preheader.us.new ]
  %.2350386.us.unr = phi i64 [ 0, %.preheader.us ], [ %133, %.preheader.us.new ]
  br i1 %lcmp.mod.not, label %._crit_edge389.us, label %._crit_edge389.us.epilog-lcssa

._crit_edge389.us.epilog-lcssa:                   ; preds = %._crit_edge389.us.unr-lcssa
  %134 = getelementptr inbounds i64, ptr %122, i64 %.2350386.us.unr
  %135 = load i64, ptr %134, align 8, !tbaa !41
  %.not365.us.epil = icmp sge i64 %135, %.1344392.us
  %136 = icmp slt i64 %135, %123
  %or.cond.us.epil = select i1 %.not365.us.epil, i1 %136, i1 false
  %137 = zext i1 %or.cond.us.epil to i32
  %.1347.us.epil = add i32 %.0346387.us.unr, %137
  br label %._crit_edge389.us

._crit_edge389.us:                                ; preds = %._crit_edge389.us.unr-lcssa, %._crit_edge389.us.epilog-lcssa
  %.1347.us.lcssa = phi i32 [ %.1347.us.lcssa.ph, %._crit_edge389.us.unr-lcssa ], [ %.1347.us.epil, %._crit_edge389.us.epilog-lcssa ]
  %138 = trunc i64 %.1344392.us to i32
  %139 = trunc i64 %123 to i32
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.367, i32 noundef %138, i32 noundef %139, i32 noundef %.1347.us.lcssa)
  %.not.us = icmp sgt i64 %123, %33
  br i1 %.not.us, label %.loopexit, label %.preheader.us, !llvm.loop !48

140:                                              ; preds = %.lr.ph384, %._crit_edge380
  %141 = phi ptr [ %.pre416, %.lr.ph384 ], [ %162, %._crit_edge380 ]
  %.1349382 = phi i64 [ 0, %.lr.ph384 ], [ %163, %._crit_edge380 ]
  %142 = load ptr, ptr %116, align 8, !tbaa !40
  %143 = getelementptr inbounds i64, ptr %142, i64 %.1349382
  %144 = load i64, ptr %143, align 8, !tbaa !41
  %145 = getelementptr inbounds i64, ptr %141, i64 %.1349382
  %146 = load i64, ptr %145, align 8, !tbaa !41
  %.not366.not376 = icmp slt i64 %144, %146
  br i1 %.not366.not376, label %.lr.ph379, label %._crit_edge380

.lr.ph379:                                        ; preds = %140, %.lr.ph379
  %.0345377 = phi i64 [ %158, %.lr.ph379 ], [ %144, %140 ]
  %147 = load ptr, ptr %118, align 8, !tbaa !40
  %148 = getelementptr inbounds i64, ptr %147, i64 %.0345377
  %149 = load i64, ptr %148, align 8, !tbaa !41
  %150 = load ptr, ptr %119, align 8, !tbaa !40
  %151 = getelementptr inbounds i64, ptr %150, i64 %.1349382
  %152 = load i64, ptr %151, align 8, !tbaa !41
  %153 = add nsw i64 %152, 1
  store i64 %153, ptr %151, align 8, !tbaa !41
  %154 = load ptr, ptr %119, align 8, !tbaa !40
  %155 = getelementptr inbounds i64, ptr %154, i64 %149
  %156 = load i64, ptr %155, align 8, !tbaa !41
  %157 = add nsw i64 %156, 1
  store i64 %157, ptr %155, align 8, !tbaa !41
  %158 = add nsw i64 %.0345377, 1
  %159 = load ptr, ptr %117, align 8, !tbaa !40
  %160 = getelementptr inbounds i64, ptr %159, i64 %.1349382
  %161 = load i64, ptr %160, align 8, !tbaa !41
  %.not366.not = icmp slt i64 %158, %161
  br i1 %.not366.not, label %.lr.ph379, label %._crit_edge380, !llvm.loop !49

._crit_edge380:                                   ; preds = %.lr.ph379, %140
  %162 = phi ptr [ %141, %140 ], [ %159, %.lr.ph379 ]
  %163 = add nuw nsw i64 %.1349382, 1
  %exitcond411.not = icmp eq i64 %163, %33
  br i1 %exitcond411.not, label %.preheader.lr.ph, label %140, !llvm.loop !50

.loopexit:                                        ; preds = %._crit_edge389.us, %64
  %.not361.not393 = icmp slt i64 %33, 1
  br i1 %.not361.not393, label %._crit_edge398, label %.lr.ph397

.lr.ph397:                                        ; preds = %.loopexit
  %164 = getelementptr inbounds i8, ptr %0, i64 248
  %165 = load ptr, ptr %164, align 8, !tbaa !40
  %166 = getelementptr inbounds i8, ptr %0, i64 312
  %167 = load ptr, ptr %166, align 8, !tbaa !40
  %168 = load i64, ptr %165, align 8, !tbaa !41
  %169 = load i64, ptr %167, align 8, !tbaa !41
  %170 = icmp eq i64 %168, %169
  br i1 %170, label %._crit_edge428, label %.lr.ph427

.lr.ph427:                                        ; preds = %.lr.ph397, %172
  %.3394426 = phi i64 [ %171, %172 ], [ 0, %.lr.ph397 ]
  %171 = add nuw nsw i64 %.3394426, 1
  %exitcond413 = icmp eq i64 %171, %33
  br i1 %exitcond413, label %._crit_edge398, label %172, !llvm.loop !51

172:                                              ; preds = %.lr.ph427
  %173 = getelementptr inbounds i64, ptr %165, i64 %171
  %174 = load i64, ptr %173, align 8, !tbaa !41
  %175 = getelementptr inbounds i64, ptr %167, i64 %171
  %176 = load i64, ptr %175, align 8, !tbaa !41
  %177 = icmp eq i64 %174, %176
  br i1 %177, label %._crit_edge428.loopexit, label %.lr.ph427, !llvm.loop !51

._crit_edge428.loopexit:                          ; preds = %172
  %.not361.not.le = icmp sge i64 %171, %33
  br label %._crit_edge428

._crit_edge428:                                   ; preds = %._crit_edge428.loopexit, %.lr.ph397
  %.not361.not395.lcssa = phi i1 [ false, %.lr.ph397 ], [ %.not361.not.le, %._crit_edge428.loopexit ]
  %178 = load i8, ptr %54, align 2, !tbaa !32, !range !34, !noundef !39
  %179 = trunc nuw i8 %178 to i1
  br i1 %179, label %180, label %294

180:                                              ; preds = %._crit_edge428
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.368)
  br label %294

._crit_edge398.critedge:                          ; preds = %90
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.364, i32 noundef 0)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.365)
  tail call void (ptr, ...) @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef nonnull @.str.366)
  tail call void @_ZN11alglib_impl5isetvEllPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %33, i64 noundef 1, ptr noundef nonnull %79, ptr noundef %8)
  br label %._crit_edge398

._crit_edge398:                                   ; preds = %.lr.ph427, %._crit_edge398.critedge, %._crit_edge, %.loopexit
  %181 = load i8, ptr %71, align 8, !tbaa !36, !range !34, !noundef !39
  %182 = trunc nuw i8 %181 to i1
  br i1 %182, label %183, label %214

183:                                              ; preds = %._crit_edge398
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %70, ptr noundef nonnull @.str.369, ptr noundef %8)
  %184 = getelementptr inbounds i8, ptr %7, i64 736
  %185 = getelementptr inbounds i8, ptr %7, i64 800
  tail call void @_ZN11alglib_implL24spchol_buildorderedetreeEPKNS_12sparsematrixElPNS_9ae_vectorES4_S4_S4_S4_S4_S4_PNS_8ae_stateE(ptr noundef %0, i64 noundef %33, ptr noundef nonnull %77, ptr noundef nonnull %184, ptr noundef nonnull %185, ptr noundef nonnull %79, ptr noundef nonnull %80, ptr noundef nonnull %81, ptr noundef nonnull %84, ptr noundef %8)
  %186 = getelementptr inbounds i8, ptr %7, i64 608
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %186, i64 noundef %33, ptr noundef %8)
  %187 = getelementptr inbounds i8, ptr %7, i64 672
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %187, i64 noundef %33, ptr noundef %8)
  %188 = getelementptr inbounds i8, ptr %7, i64 864
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %188, i64 noundef %33, ptr noundef %8)
  %189 = getelementptr inbounds i8, ptr %7, i64 928
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %189, i64 noundef %33, ptr noundef %8)
  %.not363.not404 = icmp sgt i64 %33, 0
  br i1 %.not363.not404, label %.lr.ph407, label %._crit_edge408

.lr.ph407:                                        ; preds = %183
  %190 = getelementptr inbounds i8, ptr %7, i64 664
  %191 = getelementptr inbounds i8, ptr %7, i64 728
  %192 = getelementptr inbounds i8, ptr %7, i64 792
  %193 = getelementptr inbounds i8, ptr %7, i64 920
  %194 = getelementptr inbounds i8, ptr %7, i64 856
  %195 = getelementptr inbounds i8, ptr %7, i64 984
  br label %196

196:                                              ; preds = %.lr.ph407, %196
  %.4405 = phi i64 [ 0, %.lr.ph407 ], [ %211, %196 ]
  %197 = load ptr, ptr %190, align 8, !tbaa !40
  %198 = getelementptr inbounds i64, ptr %197, i64 %.4405
  store i64 %.4405, ptr %198, align 8, !tbaa !41
  %199 = load ptr, ptr %191, align 8, !tbaa !40
  %200 = getelementptr inbounds i64, ptr %199, i64 %.4405
  store i64 %.4405, ptr %200, align 8, !tbaa !41
  %201 = load ptr, ptr %192, align 8, !tbaa !40
  %202 = getelementptr inbounds i64, ptr %201, i64 %.4405
  %203 = load i64, ptr %202, align 8, !tbaa !41
  %204 = load ptr, ptr %193, align 8, !tbaa !40
  %205 = getelementptr inbounds i64, ptr %204, i64 %.4405
  store i64 %203, ptr %205, align 8, !tbaa !41
  %206 = load ptr, ptr %194, align 8, !tbaa !40
  %207 = getelementptr inbounds i64, ptr %206, i64 %.4405
  %208 = load i64, ptr %207, align 8, !tbaa !41
  %209 = load ptr, ptr %195, align 8, !tbaa !40
  %210 = getelementptr inbounds i64, ptr %209, i64 %.4405
  store i64 %208, ptr %210, align 8, !tbaa !41
  %211 = add nuw nsw i64 %.4405, 1
  %exitcond415.not = icmp eq i64 %211, %33
  br i1 %exitcond415.not, label %._crit_edge408, label %196, !llvm.loop !52

._crit_edge408:                                   ; preds = %196, %183
  %212 = getelementptr inbounds i8, ptr %7, i64 14568
  tail call void @_ZN11alglib_implL29spchol_topologicalpermutationEPKNS_12sparsematrixEPKNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %184, ptr noundef nonnull %212, ptr noundef %8)
  %213 = getelementptr inbounds i8, ptr %7, i64 3016
  tail call void @_ZN11alglib_implL32spchol_createsupernodalstructureEPKNS_12sparsematrixEPKNS_9ae_vectorElPNS_14spcholanalysisEPS3_S8_S8_S8_S8_S8_S8_PNS_8ae_stateE(ptr noundef nonnull %212, ptr noundef nonnull %77, i64 noundef %33, ptr noundef nonnull %7, ptr noundef nonnull %213, ptr noundef nonnull %79, ptr noundef nonnull %80, ptr noundef nonnull %81, ptr noundef nonnull %82, ptr noundef nonnull %83, ptr noundef nonnull %84, ptr noundef %8)
  tail call void @_ZN11alglib_implL36spchol_analyzesupernodaldependenciesEPNS_14spcholanalysisEPKNS_12sparsematrixEPKNS_9ae_vectorElPS5_S8_S8_PNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef %0, ptr noundef nonnull %213, i64 noundef %33, ptr noundef nonnull %79, ptr noundef nonnull %80, ptr noundef nonnull %84, ptr noundef %8)
  br label %290

214:                                              ; preds = %._crit_edge398
  switch i64 %.0354, label %.thread368 [
    i64 -2, label %.thread
    i64 2, label %217
    i64 -3, label %221
    i64 3, label %221
  ]

.thread:                                          ; preds = %214
  %215 = getelementptr inbounds i8, ptr %7, i64 608
  %216 = getelementptr inbounds i8, ptr %7, i64 672
  tail call void @_ZN11alglib_implL29spchol_generatedbgpermutationEPKNS_12sparsematrixElPNS_9ae_vectorES4_PNS_8ae_stateE(ptr noundef %0, i64 noundef %33, ptr noundef nonnull %215, ptr noundef nonnull %216, ptr noundef %8)
  br label %.thread368

217:                                              ; preds = %214
  %218 = getelementptr inbounds i8, ptr %7, i64 608
  %219 = getelementptr inbounds i8, ptr %7, i64 672
  %220 = getelementptr inbounds i8, ptr %7, i64 3080
  tail call void @_ZN11alglib_impl22generateamdpermutationEPKNS_12sparsematrixElPNS_9ae_vectorES4_PNS_9amdbufferEPNS_8ae_stateE(ptr noundef %0, i64 noundef %33, ptr noundef nonnull %218, ptr noundef nonnull %219, ptr noundef nonnull %220, ptr noundef %8)
  br label %.thread368

221:                                              ; preds = %214, %214
  %222 = getelementptr inbounds i8, ptr %7, i64 14200
  tail call void @_ZN11alglib_impl13sparsecopybufEPKNS_12sparsematrixEPS0_PNS_8ae_stateE(ptr noundef %0, ptr noundef nonnull %222, ptr noundef %8)
  %223 = getelementptr inbounds i8, ptr %7, i64 2888
  br i1 %45, label %224, label %227

224:                                              ; preds = %221
  %225 = tail call noundef i64 @_ZN11alglib_impl16ae_randomintegerElPNS_8ae_stateE(i64 noundef 100, ptr noundef %8)
  %226 = icmp sgt i64 %225, 50
  br label %227

227:                                              ; preds = %224, %221
  %228 = phi i1 [ false, %221 ], [ %226, %224 ]
  %229 = load i8, ptr %54, align 2, !tbaa !32, !range !34, !noundef !39
  %230 = trunc nuw i8 %229 to i1
  %231 = getelementptr inbounds i8, ptr %7, i64 7464
  %232 = icmp sgt i64 %6, 0
  %233 = getelementptr inbounds i8, ptr %7, i64 608
  %234 = getelementptr inbounds i8, ptr %7, i64 672
  tail call void @_ZN11alglib_implL37spchol_generatepriorityamdpermutationEPNS_12sparsematrixEPNS_9ae_vectorEdlbbPNS_9ae_nxpoolES5_PNS_18priorityamdbuffersEbS3_S3_PNS_8ae_stateE(ptr noundef nonnull %222, ptr noundef nonnull %223, double noundef %.0352, i64 noundef %.0353, i1 noundef zeroext %228, i1 noundef zeroext %230, ptr noundef nonnull %85, ptr noundef nonnull %86, ptr noundef nonnull %231, i1 noundef zeroext %232, ptr noundef nonnull %233, ptr noundef nonnull %234, ptr noundef %8)
  br label %.thread368

.thread368:                                       ; preds = %214, %217, %.thread, %227
  %.2 = phi i1 [ true, %227 ], [ true, %.thread ], [ true, %217 ], [ false, %214 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %.2, ptr noundef nonnull @.str.370, ptr noundef %8)
  %235 = getelementptr inbounds i8, ptr %7, i64 608
  %236 = getelementptr inbounds i8, ptr %7, i64 14200
  tail call void @_ZN11alglib_impl20sparsesymmpermtblbufEPKNS_12sparsematrixEbPKNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef %0, i1 noundef zeroext false, ptr noundef nonnull %235, ptr noundef nonnull %236, ptr noundef %8)
  %237 = getelementptr inbounds i8, ptr %7, i64 736
  %238 = getelementptr inbounds i8, ptr %7, i64 800
  tail call void @_ZN11alglib_implL24spchol_buildorderedetreeEPKNS_12sparsematrixElPNS_9ae_vectorES4_S4_S4_S4_S4_S4_PNS_8ae_stateE(ptr noundef nonnull %236, i64 noundef %33, ptr noundef nonnull %77, ptr noundef nonnull %237, ptr noundef nonnull %238, ptr noundef nonnull %79, ptr noundef nonnull %80, ptr noundef nonnull %81, ptr noundef nonnull %84, ptr noundef %8)
  %239 = getelementptr inbounds i8, ptr %7, i64 864
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %239, i64 noundef %33, ptr noundef %8)
  %240 = getelementptr inbounds i8, ptr %7, i64 928
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %240, i64 noundef %33, ptr noundef %8)
  %.not362.not400 = icmp sgt i64 %33, 0
  br i1 %.not362.not400, label %.lr.ph402, label %._crit_edge403

.lr.ph402:                                        ; preds = %.thread368
  %241 = getelementptr inbounds i8, ptr %7, i64 792
  %242 = getelementptr inbounds i8, ptr %7, i64 664
  %243 = getelementptr inbounds i8, ptr %7, i64 920
  %244 = getelementptr inbounds i8, ptr %7, i64 984
  %xtraiter440 = and i64 %33, 1
  %245 = icmp eq i64 %33, 1
  br i1 %245, label %._crit_edge403.loopexit.unr-lcssa, label %.lr.ph402.new

.lr.ph402.new:                                    ; preds = %.lr.ph402
  %unroll_iter442 = and i64 %33, 9223372036854775806
  br label %246

246:                                              ; preds = %246, %.lr.ph402.new
  %.5401 = phi i64 [ 0, %.lr.ph402.new ], [ %274, %246 ]
  %niter443 = phi i64 [ 0, %.lr.ph402.new ], [ %niter443.next.1, %246 ]
  %247 = load ptr, ptr %241, align 8, !tbaa !40
  %248 = load ptr, ptr %242, align 8, !tbaa !40
  %249 = getelementptr inbounds i64, ptr %248, i64 %.5401
  %250 = load i64, ptr %249, align 8, !tbaa !41
  %251 = getelementptr inbounds i64, ptr %247, i64 %250
  %252 = load i64, ptr %251, align 8, !tbaa !41
  %253 = load ptr, ptr %243, align 8, !tbaa !40
  %254 = getelementptr inbounds i64, ptr %253, i64 %.5401
  store i64 %252, ptr %254, align 8, !tbaa !41
  %255 = load ptr, ptr %244, align 8, !tbaa !40
  %256 = load ptr, ptr %243, align 8, !tbaa !40
  %257 = getelementptr inbounds i64, ptr %256, i64 %.5401
  %258 = load i64, ptr %257, align 8, !tbaa !41
  %259 = getelementptr inbounds i64, ptr %255, i64 %258
  store i64 %.5401, ptr %259, align 8, !tbaa !41
  %260 = or disjoint i64 %.5401, 1
  %261 = load ptr, ptr %241, align 8, !tbaa !40
  %262 = load ptr, ptr %242, align 8, !tbaa !40
  %263 = getelementptr inbounds i64, ptr %262, i64 %260
  %264 = load i64, ptr %263, align 8, !tbaa !41
  %265 = getelementptr inbounds i64, ptr %261, i64 %264
  %266 = load i64, ptr %265, align 8, !tbaa !41
  %267 = load ptr, ptr %243, align 8, !tbaa !40
  %268 = getelementptr inbounds i64, ptr %267, i64 %260
  store i64 %266, ptr %268, align 8, !tbaa !41
  %269 = load ptr, ptr %244, align 8, !tbaa !40
  %270 = load ptr, ptr %243, align 8, !tbaa !40
  %271 = getelementptr inbounds i64, ptr %270, i64 %260
  %272 = load i64, ptr %271, align 8, !tbaa !41
  %273 = getelementptr inbounds i64, ptr %269, i64 %272
  store i64 %260, ptr %273, align 8, !tbaa !41
  %274 = add nuw nsw i64 %.5401, 2
  %niter443.next.1 = add i64 %niter443, 2
  %niter443.ncmp.1 = icmp eq i64 %niter443.next.1, %unroll_iter442
  br i1 %niter443.ncmp.1, label %._crit_edge403.loopexit.unr-lcssa, label %246, !llvm.loop !53

._crit_edge403.loopexit.unr-lcssa:                ; preds = %246, %.lr.ph402
  %.5401.unr = phi i64 [ 0, %.lr.ph402 ], [ %274, %246 ]
  %lcmp.mod441.not = icmp eq i64 %xtraiter440, 0
  br i1 %lcmp.mod441.not, label %._crit_edge403, label %._crit_edge403.loopexit.epilog-lcssa

._crit_edge403.loopexit.epilog-lcssa:             ; preds = %._crit_edge403.loopexit.unr-lcssa
  %275 = load ptr, ptr %241, align 8, !tbaa !40
  %276 = load ptr, ptr %242, align 8, !tbaa !40
  %277 = getelementptr inbounds i64, ptr %276, i64 %.5401.unr
  %278 = load i64, ptr %277, align 8, !tbaa !41
  %279 = getelementptr inbounds i64, ptr %275, i64 %278
  %280 = load i64, ptr %279, align 8, !tbaa !41
  %281 = load ptr, ptr %243, align 8, !tbaa !40
  %282 = getelementptr inbounds i64, ptr %281, i64 %.5401.unr
  store i64 %280, ptr %282, align 8, !tbaa !41
  %283 = load ptr, ptr %244, align 8, !tbaa !40
  %284 = load ptr, ptr %243, align 8, !tbaa !40
  %285 = getelementptr inbounds i64, ptr %284, i64 %.5401.unr
  %286 = load i64, ptr %285, align 8, !tbaa !41
  %287 = getelementptr inbounds i64, ptr %283, i64 %286
  store i64 %.5401.unr, ptr %287, align 8, !tbaa !41
  br label %._crit_edge403

._crit_edge403:                                   ; preds = %._crit_edge403.loopexit.epilog-lcssa, %._crit_edge403.loopexit.unr-lcssa, %.thread368
  %288 = getelementptr inbounds i8, ptr %7, i64 14568
  tail call void @_ZN11alglib_implL29spchol_topologicalpermutationEPKNS_12sparsematrixEPKNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef nonnull %236, ptr noundef nonnull %237, ptr noundef nonnull %288, ptr noundef %8)
  %289 = getelementptr inbounds i8, ptr %7, i64 3016
  tail call void @_ZN11alglib_implL32spchol_createsupernodalstructureEPKNS_12sparsematrixEPKNS_9ae_vectorElPNS_14spcholanalysisEPS3_S8_S8_S8_S8_S8_S8_PNS_8ae_stateE(ptr noundef nonnull %288, ptr noundef nonnull %77, i64 noundef %33, ptr noundef nonnull %7, ptr noundef nonnull %289, ptr noundef nonnull %79, ptr noundef nonnull %80, ptr noundef nonnull %81, ptr noundef nonnull %82, ptr noundef nonnull %83, ptr noundef nonnull %84, ptr noundef %8)
  tail call void @_ZN11alglib_implL36spchol_analyzesupernodaldependenciesEPNS_14spcholanalysisEPKNS_12sparsematrixEPKNS_9ae_vectorElPS5_S8_S8_PNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %236, ptr noundef nonnull %289, i64 noundef %33, ptr noundef nonnull %79, ptr noundef nonnull %80, ptr noundef nonnull %84, ptr noundef %8)
  br label %290

290:                                              ; preds = %._crit_edge403, %._crit_edge408
  %291 = getelementptr inbounds i8, ptr %7, i64 14568
  %292 = getelementptr inbounds i8, ptr %7, i64 14696
  %293 = getelementptr inbounds i8, ptr %7, i64 144
  tail call void @_ZN11alglib_impl11icopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %78, ptr noundef nonnull %292, ptr noundef nonnull %293, ptr noundef %8)
  tail call void @_ZN11alglib_implL17spchol_loadmatrixEPNS_14spcholanalysisEPKNS_12sparsematrixEPNS_8ae_stateE(ptr noundef nonnull %7, ptr noundef nonnull %291, ptr noundef %8)
  br label %294

294:                                              ; preds = %._crit_edge428, %180, %290
  %.not361.not372 = phi i1 [ %.not361.not395.lcssa, %._crit_edge428 ], [ %.not361.not395.lcssa, %180 ], [ true, %290 ]
  ret i1 %.not361.not372
}

declare void @_ZN11alglib_impl11icopyallocvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl23bvectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl15ae_nxpool_allocEPNS_9ae_nxpoolElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #0

declare void @_ZN11alglib_impl8ae_traceEPKcz(ptr noundef, ...) local_unnamed_addr #0

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.vector.reduce.add.v2i64(<2 x i64>) #3

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

!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, !7, i64 0}
!6 = !{!"_ZTSN11alglib_impl9ae_vectorE", !7, i64 0, !7, i64 8, !10, i64 16, !11, i64 24, !8, i64 56}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"bool", !8, i64 0}
!11 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24}
!12 = !{!"any pointer", !8, i64 0}
!13 = !{!14, !7, i64 0}
!14 = !{!"_ZTSN11alglib_impl14spcholanalysisE", !7, i64 0, !7, i64 8, !7, i64 16, !10, i64 24, !7, i64 32, !15, i64 40, !15, i64 48, !15, i64 56, !15, i64 64, !6, i64 72, !10, i64 136, !10, i64 137, !10, i64 138, !10, i64 139, !10, i64 140, !6, i64 144, !7, i64 208, !6, i64 216, !6, i64 280, !6, i64 344, !6, i64 408, !6, i64 472, !6, i64 536, !10, i64 600, !6, i64 608, !6, i64 672, !6, i64 736, !6, i64 800, !6, i64 864, !6, i64 928, !10, i64 992, !10, i64 993, !16, i64 1000, !6, i64 1512, !6, i64 1576, !6, i64 1640, !6, i64 1704, !6, i64 1768, !6, i64 1832, !17, i64 1896, !17, i64 2040, !17, i64 2184, !17, i64 2328, !17, i64 2472, !17, i64 2616, !6, i64 2760, !6, i64 2824, !6, i64 2888, !6, i64 2952, !6, i64 3016, !19, i64 3080, !25, i64 7464, !6, i64 13816, !6, i64 13880, !6, i64 13944, !6, i64 14008, !6, i64 14072, !6, i64 14136, !26, i64 14200, !26, i64 14568, !6, i64 14936, !6, i64 15000}
!15 = !{!"double", !8, i64 0}
!16 = !{!"_ZTSN11alglib_impl9spcholadjE", !6, i64 0, !6, i64 64, !6, i64 128, !6, i64 192, !6, i64 256, !6, i64 320, !6, i64 384, !6, i64 448}
!17 = !{!"_ZTSN11alglib_impl9ae_nxpoolE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !11, i64 32, !18, i64 64, !11, i64 112}
!18 = !{!"_ZTSN11alglib_impl7ae_lockE", !12, i64 0, !11, i64 8, !10, i64 40}
!19 = !{!"_ZTSN11alglib_impl9amdbufferE", !7, i64 0, !10, i64 8, !10, i64 9, !6, i64 16, !6, i64 80, !6, i64 144, !20, i64 208, !20, i64 568, !20, i64 928, !21, i64 1288, !22, i64 1496, !23, i64 1968, !6, i64 2120, !6, i64 2184, !6, i64 2248, !23, i64 2312, !23, i64 2464, !23, i64 2616, !23, i64 2768, !23, i64 2920, !23, i64 3072, !6, i64 3224, !7, i64 3288, !23, i64 3296, !23, i64 3448, !20, i64 3600, !23, i64 3960, !6, i64 4112, !6, i64 4176, !6, i64 4240, !24, i64 4304}
!20 = !{!"_ZTSN11alglib_impl8amdknsetE", !7, i64 0, !7, i64 8, !6, i64 16, !6, i64 80, !6, i64 144, !6, i64 208, !6, i64 272, !7, i64 336, !7, i64 344, !7, i64 352}
!21 = !{!"_ZTSN11alglib_impl11amdllmatrixE", !7, i64 0, !6, i64 8, !6, i64 72, !6, i64 136, !7, i64 200}
!22 = !{!"_ZTSN11alglib_impl12amdvertexsetE", !7, i64 0, !10, i64 8, !7, i64 16, !6, i64 24, !6, i64 88, !6, i64 152, !6, i64 216, !6, i64 280, !6, i64 344, !6, i64 408}
!23 = !{!"_ZTSN11alglib_impl5nisetE", !7, i64 0, !7, i64 8, !6, i64 16, !6, i64 80, !7, i64 144}
!24 = !{!"_ZTSN11alglib_impl9ae_matrixE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !10, i64 32, !11, i64 40, !8, i64 72}
!25 = !{!"_ZTSN11alglib_impl18priorityamdbuffersE", !6, i64 0, !6, i64 64, !19, i64 128, !26, i64 4512, !26, i64 4880, !26, i64 5248, !26, i64 5616, !26, i64 5984}
!26 = !{!"_ZTSN11alglib_impl12sparsematrixE", !6, i64 0, !6, i64 64, !6, i64 128, !6, i64 192, !6, i64 256, !7, i64 320, !7, i64 328, !7, i64 336, !7, i64 344, !7, i64 352, !7, i64 360}
!27 = !{!14, !7, i64 8}
!28 = !{!14, !10, i64 24}
!29 = !{!14, !7, i64 16}
!30 = !{!14, !10, i64 136}
!31 = !{!14, !10, i64 137}
!32 = !{!14, !10, i64 138}
!33 = !{!14, !10, i64 139}
!34 = !{i8 0, i8 2}
!35 = !{!14, !10, i64 140}
!36 = !{!14, !10, i64 992}
!37 = !{!14, !10, i64 993}
!38 = !{!14, !10, i64 600}
!39 = !{}
!40 = !{!8, !8, i64 0}
!41 = !{!7, !7, i64 0}
!42 = distinct !{!42, !43, !44, !45}
!43 = !{!"llvm.loop.mustprogress"}
!44 = !{!"llvm.loop.isvectorized", i32 1}
!45 = !{!"llvm.loop.unroll.runtime.disable"}
!46 = distinct !{!46, !43, !45, !44}
!47 = distinct !{!47, !43}
!48 = distinct !{!48, !43}
!49 = distinct !{!49, !43}
!50 = distinct !{!50, !43}
!51 = distinct !{!51, !43}
!52 = distinct !{!52, !43}
!53 = distinct !{!53, !43}


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