; 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::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_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::ae_matrix" = type { i64, i64, i64, i64, i8, %"struct.alglib_impl::ae_dyn_block", %union.anon.0 }
%union.anon.0 = type { ptr }

@.str.338 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.339 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.340 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.341 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.342 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.343 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.344 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.345 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.346 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.347 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.348 = external hidden unnamed_addr constant [33 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i64 @_ZN11alglib_impl23generateamdpermutationxEPKNS_12sparsematrixEPKNS_9ae_vectorEldPS3_S6_lPNS_9amdbufferEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1, i64 noundef %2, double noundef %3, ptr noundef %4, ptr noundef %5, i64 noundef %6, ptr noundef %7, ptr noundef %8) #1 {
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i64, align 8
  %13 = alloca double, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i64, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i64, 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 i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca double, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store i64 %2, ptr %12, align 8, !tbaa !9
  store double %3, ptr %13, align 8, !tbaa !11
  store ptr %4, ptr %14, align 8, !tbaa !5
  store ptr %5, ptr %15, align 8, !tbaa !5
  store i64 %6, ptr %16, align 8, !tbaa !9
  store ptr %7, ptr %17, align 8, !tbaa !5
  store ptr %8, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  %34 = load i64, ptr %16, align 8, !tbaa !9
  %35 = icmp eq i64 %34, 0
  br i1 %35, label %39, label %36

36:                                               ; preds = %9
  %37 = load i64, ptr %16, align 8, !tbaa !9
  %38 = icmp eq i64 %37, 1
  br label %39

39:                                               ; preds = %36, %9
  %40 = phi i1 [ true, %9 ], [ %38, %36 ]
  %41 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %40, ptr noundef @.str.338, ptr noundef %41)
  %42 = load i64, ptr %16, align 8, !tbaa !9
  %43 = icmp eq i64 %42, 0
  br i1 %43, label %53, label %44

44:                                               ; preds = %39
  %45 = load double, ptr %13, align 8, !tbaa !11
  %46 = load ptr, ptr %18, align 8, !tbaa !5
  %47 = call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %45, ptr noundef %46)
  br i1 %47, label %48, label %51

48:                                               ; preds = %44
  %49 = load double, ptr %13, align 8, !tbaa !11
  %50 = call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %49, double noundef 0.000000e+00)
  br label %51

51:                                               ; preds = %48, %44
  %52 = phi i1 [ false, %44 ], [ %50, %48 ]
  br label %53

53:                                               ; preds = %51, %39
  %54 = phi i1 [ true, %39 ], [ %52, %51 ]
  %55 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %54, ptr noundef @.str.339, ptr noundef %55)
  store i64 3, ptr %23, align 8, !tbaa !9
  store i64 16, ptr %24, align 8, !tbaa !9
  %56 = call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef @.str.340)
  br i1 %56, label %57, label %60

57:                                               ; preds = %53
  %58 = load i64, ptr %12, align 8, !tbaa !9
  %59 = icmp sle i64 %58, 100
  br label %60

60:                                               ; preds = %57, %53
  %61 = phi i1 [ false, %53 ], [ %59, %57 ]
  %62 = zext i1 %61 to i8
  store i8 %62, ptr %25, align 1, !tbaa !13
  %63 = load i64, ptr %12, align 8, !tbaa !9
  store i64 %63, ptr %33, align 8, !tbaa !9
  %64 = load i64, ptr %12, align 8, !tbaa !9
  %65 = load ptr, ptr %17, align 8, !tbaa !5
  %66 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %65, i32 0, i32 0
  store i64 %64, ptr %66, align 8, !tbaa !15
  %67 = load i8, ptr %25, align 1, !tbaa !13, !range !24, !noundef !25
  %68 = trunc i8 %67 to i1
  %69 = load ptr, ptr %17, align 8, !tbaa !5
  %70 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %69, i32 0, i32 2
  %71 = zext i1 %68 to i8
  store i8 %71, ptr %70, align 1, !tbaa !26
  %72 = load i8, ptr %25, align 1, !tbaa !13, !range !24, !noundef !25
  %73 = trunc i8 %72 to i1
  %74 = load ptr, ptr %17, align 8, !tbaa !5
  %75 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %74, i32 0, i32 1
  %76 = zext i1 %73 to i8
  store i8 %76, ptr %75, align 8, !tbaa !27
  %77 = load i64, ptr %12, align 8, !tbaa !9
  %78 = load ptr, ptr %17, align 8, !tbaa !5
  %79 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %78, i32 0, i32 9
  %80 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL19amdordering_mtxinitElPNS_11amdllmatrixEPNS_8ae_stateE(i64 noundef %77, ptr noundef %79, ptr noundef %80)
  %81 = load ptr, ptr %10, align 8, !tbaa !5
  %82 = load i64, ptr %12, align 8, !tbaa !9
  %83 = load ptr, ptr %17, align 8, !tbaa !5
  %84 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %83, i32 0, i32 7
  %85 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL24amdordering_knsinitfromaEPKNS_12sparsematrixElbPNS_8amdknsetEPNS_8ae_stateE(ptr noundef %81, i64 noundef %82, i1 noundef zeroext true, ptr noundef %84, ptr noundef %85)
  %86 = load i64, ptr %12, align 8, !tbaa !9
  %87 = load i64, ptr %12, align 8, !tbaa !9
  %88 = load i64, ptr %23, align 8, !tbaa !9
  %89 = load ptr, ptr %17, align 8, !tbaa !5
  %90 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %89, i32 0, i32 6
  %91 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL19amdordering_knsinitElllPNS_8amdknsetEPNS_8ae_stateE(i64 noundef %86, i64 noundef %87, i64 noundef %88, ptr noundef %90, ptr noundef %91)
  store i64 0, ptr %19, align 8, !tbaa !9
  br label %92

92:                                               ; preds = %103, %60
  %93 = load i64, ptr %19, align 8, !tbaa !9
  %94 = load i64, ptr %12, align 8, !tbaa !9
  %95 = sub nsw i64 %94, 1
  %96 = icmp sle i64 %93, %95
  br i1 %96, label %97, label %106

97:                                               ; preds = %92
  %98 = load ptr, ptr %17, align 8, !tbaa !5
  %99 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %98, i32 0, i32 6
  %100 = load i64, ptr %19, align 8, !tbaa !9
  %101 = load i64, ptr %19, align 8, !tbaa !9
  %102 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL28amdordering_knsaddnewelementEPNS_8amdknsetEllPNS_8ae_stateE(ptr noundef %99, i64 noundef %100, i64 noundef %101, ptr noundef %102)
  br label %103

103:                                              ; preds = %97
  %104 = load i64, ptr %19, align 8, !tbaa !9
  %105 = add nsw i64 %104, 1
  store i64 %105, ptr %19, align 8, !tbaa !9
  br label %92, !llvm.loop !28

106:                                              ; preds = %92
  %107 = load i64, ptr %12, align 8, !tbaa !9
  %108 = load i64, ptr %12, align 8, !tbaa !9
  %109 = load i64, ptr %23, align 8, !tbaa !9
  %110 = load ptr, ptr %17, align 8, !tbaa !5
  %111 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %110, i32 0, i32 8
  %112 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL19amdordering_knsinitElllPNS_8amdknsetEPNS_8ae_stateE(i64 noundef %107, i64 noundef %108, i64 noundef %109, ptr noundef %111, ptr noundef %112)
  %113 = load i64, ptr %12, align 8, !tbaa !9
  %114 = load i64, ptr %12, align 8, !tbaa !9
  %115 = load i64, ptr %24, align 8, !tbaa !9
  %116 = load ptr, ptr %17, align 8, !tbaa !5
  %117 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %116, i32 0, i32 25
  %118 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL19amdordering_knsinitElllPNS_8amdknsetEPNS_8ae_stateE(i64 noundef %113, i64 noundef %114, i64 noundef %115, ptr noundef %117, ptr noundef %118)
  %119 = load i64, ptr %12, align 8, !tbaa !9
  %120 = load ptr, ptr %17, align 8, !tbaa !5
  %121 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %120, i32 0, i32 26
  %122 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %119, ptr noundef %121, ptr noundef %122)
  %123 = load ptr, ptr %17, align 8, !tbaa !5
  %124 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %123, i32 0, i32 12
  %125 = load i64, ptr %12, align 8, !tbaa !9
  %126 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %124, i64 noundef %125, ptr noundef %126)
  %127 = load ptr, ptr %17, align 8, !tbaa !5
  %128 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %127, i32 0, i32 13
  %129 = load i64, ptr %12, align 8, !tbaa !9
  %130 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %128, i64 noundef %129, ptr noundef %130)
  %131 = load ptr, ptr %17, align 8, !tbaa !5
  %132 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %131, i32 0, i32 14
  %133 = load i64, ptr %12, align 8, !tbaa !9
  %134 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %132, i64 noundef %133, ptr noundef %134)
  store i64 0, ptr %19, align 8, !tbaa !9
  br label %135

135:                                              ; preds = %162, %106
  %136 = load i64, ptr %19, align 8, !tbaa !9
  %137 = load i64, ptr %12, align 8, !tbaa !9
  %138 = sub nsw i64 %137, 1
  %139 = icmp sle i64 %136, %138
  br i1 %139, label %140, label %165

140:                                              ; preds = %135
  %141 = load i64, ptr %19, align 8, !tbaa !9
  %142 = load ptr, ptr %17, align 8, !tbaa !5
  %143 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %142, i32 0, i32 12
  %144 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %143, i32 0, i32 4
  %145 = load ptr, ptr %144, align 8, !tbaa !30
  %146 = load i64, ptr %19, align 8, !tbaa !9
  %147 = getelementptr inbounds i64, ptr %145, i64 %146
  store i64 %141, ptr %147, align 8, !tbaa !9
  %148 = load i64, ptr %19, align 8, !tbaa !9
  %149 = load ptr, ptr %17, align 8, !tbaa !5
  %150 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %149, i32 0, i32 13
  %151 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %150, i32 0, i32 4
  %152 = load ptr, ptr %151, align 8, !tbaa !30
  %153 = load i64, ptr %19, align 8, !tbaa !9
  %154 = getelementptr inbounds i64, ptr %152, i64 %153
  store i64 %148, ptr %154, align 8, !tbaa !9
  %155 = load i64, ptr %19, align 8, !tbaa !9
  %156 = load ptr, ptr %17, align 8, !tbaa !5
  %157 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %156, i32 0, i32 14
  %158 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %157, i32 0, i32 4
  %159 = load ptr, ptr %158, align 8, !tbaa !30
  %160 = load i64, ptr %19, align 8, !tbaa !9
  %161 = getelementptr inbounds i64, ptr %159, i64 %160
  store i64 %155, ptr %161, align 8, !tbaa !9
  br label %162

162:                                              ; preds = %140
  %163 = load i64, ptr %19, align 8, !tbaa !9
  %164 = add nsw i64 %163, 1
  store i64 %164, ptr %19, align 8, !tbaa !9
  br label %135, !llvm.loop !31

165:                                              ; preds = %135
  %166 = load i64, ptr %12, align 8, !tbaa !9
  %167 = load ptr, ptr %17, align 8, !tbaa !5
  %168 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %167, i32 0, i32 5
  %169 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl10bsetallocvElbPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %166, i1 noundef zeroext true, ptr noundef %168, ptr noundef %169)
  %170 = load i64, ptr %16, align 8, !tbaa !9
  %171 = icmp eq i64 %170, 1
  br i1 %171, label %172, label %178

172:                                              ; preds = %165
  %173 = load i64, ptr %12, align 8, !tbaa !9
  %174 = load ptr, ptr %11, align 8, !tbaa !5
  %175 = load ptr, ptr %17, align 8, !tbaa !5
  %176 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %175, i32 0, i32 5
  %177 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl6bcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %173, ptr noundef %174, ptr noundef %176, ptr noundef %177)
  br label %178

178:                                              ; preds = %172, %165
  %179 = load ptr, ptr %10, align 8, !tbaa !5
  %180 = load i64, ptr %12, align 8, !tbaa !9
  %181 = load ptr, ptr %17, align 8, !tbaa !5
  %182 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %181, i32 0, i32 5
  %183 = load ptr, ptr %17, align 8, !tbaa !5
  %184 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %183, i32 0, i32 2
  %185 = load i8, ptr %184, align 1, !tbaa !26, !range !24, !noundef !25
  %186 = trunc i8 %185 to i1
  %187 = load ptr, ptr %17, align 8, !tbaa !5
  %188 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %187, i32 0, i32 10
  %189 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL19amdordering_vtxinitEPKNS_12sparsematrixElPKNS_9ae_vectorEbbPNS_12amdvertexsetEPNS_8ae_stateE(ptr noundef %179, i64 noundef %180, ptr noundef %182, i1 noundef zeroext true, i1 noundef zeroext %186, ptr noundef %188, ptr noundef %189)
  %190 = load i64, ptr %12, align 8, !tbaa !9
  %191 = load ptr, ptr %17, align 8, !tbaa !5
  %192 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %191, i32 0, i32 4
  %193 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl10bsetallocvElbPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %190, i1 noundef zeroext true, ptr noundef %192, ptr noundef %193)
  %194 = load i64, ptr %12, align 8, !tbaa !9
  %195 = load ptr, ptr %17, align 8, !tbaa !5
  %196 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %195, i32 0, i32 3
  %197 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl10bsetallocvElbPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %194, i1 noundef zeroext false, ptr noundef %196, ptr noundef %197)
  %198 = load i64, ptr %12, align 8, !tbaa !9
  %199 = load ptr, ptr %17, align 8, !tbaa !5
  %200 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %199, i32 0, i32 29
  %201 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl10isetallocvEllPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %198, i64 noundef -1, ptr noundef %200, ptr noundef %201)
  %202 = load i64, ptr %12, align 8, !tbaa !9
  %203 = load ptr, ptr %17, align 8, !tbaa !5
  %204 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %203, i32 0, i32 21
  %205 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %202, ptr noundef %204, ptr noundef %205)
  %206 = load i64, ptr %12, align 8, !tbaa !9
  %207 = load ptr, ptr %17, align 8, !tbaa !5
  %208 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %207, i32 0, i32 15
  %209 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %206, ptr noundef %208, ptr noundef %209)
  %210 = load i64, ptr %12, align 8, !tbaa !9
  %211 = load ptr, ptr %17, align 8, !tbaa !5
  %212 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %211, i32 0, i32 16
  %213 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %210, ptr noundef %212, ptr noundef %213)
  %214 = load i64, ptr %12, align 8, !tbaa !9
  %215 = load ptr, ptr %17, align 8, !tbaa !5
  %216 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %215, i32 0, i32 17
  %217 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %214, ptr noundef %216, ptr noundef %217)
  %218 = load i64, ptr %12, align 8, !tbaa !9
  %219 = load ptr, ptr %17, align 8, !tbaa !5
  %220 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %219, i32 0, i32 18
  %221 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %218, ptr noundef %220, ptr noundef %221)
  %222 = load i64, ptr %12, align 8, !tbaa !9
  %223 = load ptr, ptr %17, align 8, !tbaa !5
  %224 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %223, i32 0, i32 24
  %225 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %222, ptr noundef %224, ptr noundef %225)
  %226 = load i64, ptr %12, align 8, !tbaa !9
  %227 = load ptr, ptr %17, align 8, !tbaa !5
  %228 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %227, i32 0, i32 19
  %229 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %226, ptr noundef %228, ptr noundef %229)
  %230 = load i64, ptr %12, align 8, !tbaa !9
  %231 = load ptr, ptr %17, align 8, !tbaa !5
  %232 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %231, i32 0, i32 20
  %233 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %230, ptr noundef %232, ptr noundef %233)
  %234 = load i64, ptr %12, align 8, !tbaa !9
  %235 = load ptr, ptr %17, align 8, !tbaa !5
  %236 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %235, i32 0, i32 11
  %237 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %234, ptr noundef %236, ptr noundef %237)
  %238 = load i64, ptr %12, align 8, !tbaa !9
  %239 = load ptr, ptr %17, align 8, !tbaa !5
  %240 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %239, i32 0, i32 23
  %241 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %238, ptr noundef %240, ptr noundef %241)
  %242 = load i8, ptr %25, align 1, !tbaa !13, !range !24, !noundef !25
  %243 = trunc i8 %242 to i1
  br i1 %243, label %244, label %346

244:                                              ; preds = %178
  %245 = load ptr, ptr %17, align 8, !tbaa !5
  %246 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %245, i32 0, i32 30
  %247 = load i64, ptr %12, align 8, !tbaa !9
  %248 = load i64, ptr %12, align 8, !tbaa !9
  %249 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %246, i64 noundef %247, i64 noundef %248, ptr noundef %249)
  store i64 0, ptr %19, align 8, !tbaa !9
  br label %250

250:                                              ; preds = %323, %244
  %251 = load i64, ptr %19, align 8, !tbaa !9
  %252 = load i64, ptr %12, align 8, !tbaa !9
  %253 = sub nsw i64 %252, 1
  %254 = icmp sle i64 %251, %253
  br i1 %254, label %255, label %326

255:                                              ; preds = %250
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %256

256:                                              ; preds = %319, %255
  %257 = load i64, ptr %20, align 8, !tbaa !9
  %258 = load i64, ptr %12, align 8, !tbaa !9
  %259 = sub nsw i64 %258, 1
  %260 = icmp sle i64 %257, %259
  br i1 %260, label %261, label %322

261:                                              ; preds = %256
  %262 = load i64, ptr %20, align 8, !tbaa !9
  %263 = load i64, ptr %19, align 8, !tbaa !9
  %264 = icmp sle i64 %262, %263
  br i1 %264, label %265, label %271

265:                                              ; preds = %261
  %266 = load ptr, ptr %10, align 8, !tbaa !5
  %267 = load i64, ptr %19, align 8, !tbaa !9
  %268 = load i64, ptr %20, align 8, !tbaa !9
  %269 = load ptr, ptr %18, align 8, !tbaa !5
  %270 = call noundef zeroext i1 @_ZN11alglib_impl12sparseexistsEPKNS_12sparsematrixEllPNS_8ae_stateE(ptr noundef %266, i64 noundef %267, i64 noundef %268, ptr noundef %269)
  br i1 %270, label %281, label %271

271:                                              ; preds = %265, %261
  %272 = load i64, ptr %20, align 8, !tbaa !9
  %273 = load i64, ptr %19, align 8, !tbaa !9
  %274 = icmp sge i64 %272, %273
  br i1 %274, label %275, label %308

275:                                              ; preds = %271
  %276 = load ptr, ptr %10, align 8, !tbaa !5
  %277 = load i64, ptr %20, align 8, !tbaa !9
  %278 = load i64, ptr %19, align 8, !tbaa !9
  %279 = load ptr, ptr %18, align 8, !tbaa !5
  %280 = call noundef zeroext i1 @_ZN11alglib_impl12sparseexistsEPKNS_12sparsematrixEllPNS_8ae_stateE(ptr noundef %276, i64 noundef %277, i64 noundef %278, ptr noundef %279)
  br i1 %280, label %281, label %308

281:                                              ; preds = %275, %265
  %282 = load i64, ptr %12, align 8, !tbaa !9
  %283 = sitofp i64 %282 to double
  %284 = fdiv double 1.000000e-01, %283
  %285 = load i64, ptr %19, align 8, !tbaa !9
  %286 = sitofp i64 %285 to double
  %287 = fadd double %286, 1.700000e-01
  %288 = load ptr, ptr %18, align 8, !tbaa !5
  %289 = call noundef double @_ZN11alglib_impl6ae_sinEdPNS_8ae_stateE(double noundef %287, ptr noundef %288)
  %290 = load i64, ptr %20, align 8, !tbaa !9
  %291 = sitofp i64 %290 to double
  %292 = fadd double %291, 6.500000e-01
  %293 = load ptr, ptr %18, align 8, !tbaa !5
  %294 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %292, ptr noundef %293)
  %295 = load ptr, ptr %18, align 8, !tbaa !5
  %296 = call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %294, ptr noundef %295)
  %297 = fadd double %289, %296
  %298 = fmul double %284, %297
  %299 = load ptr, ptr %17, align 8, !tbaa !5
  %300 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %299, i32 0, i32 30
  %301 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %300, i32 0, i32 6
  %302 = load ptr, ptr %301, align 8, !tbaa !30
  %303 = load i64, ptr %19, align 8, !tbaa !9
  %304 = getelementptr inbounds ptr, ptr %302, i64 %303
  %305 = load ptr, ptr %304, align 8, !tbaa !5
  %306 = load i64, ptr %20, align 8, !tbaa !9
  %307 = getelementptr inbounds double, ptr %305, i64 %306
  store double %298, ptr %307, align 8, !tbaa !11
  br label %318

308:                                              ; preds = %275, %271
  %309 = load ptr, ptr %17, align 8, !tbaa !5
  %310 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %309, i32 0, i32 30
  %311 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %310, i32 0, i32 6
  %312 = load ptr, ptr %311, align 8, !tbaa !30
  %313 = load i64, ptr %19, align 8, !tbaa !9
  %314 = getelementptr inbounds ptr, ptr %312, i64 %313
  %315 = load ptr, ptr %314, align 8, !tbaa !5
  %316 = load i64, ptr %20, align 8, !tbaa !9
  %317 = getelementptr inbounds double, ptr %315, i64 %316
  store double 0.000000e+00, ptr %317, align 8, !tbaa !11
  br label %318

318:                                              ; preds = %308, %281
  br label %319

319:                                              ; preds = %318
  %320 = load i64, ptr %20, align 8, !tbaa !9
  %321 = add nsw i64 %320, 1
  store i64 %321, ptr %20, align 8, !tbaa !9
  br label %256, !llvm.loop !32

322:                                              ; preds = %256
  br label %323

323:                                              ; preds = %322
  %324 = load i64, ptr %19, align 8, !tbaa !9
  %325 = add nsw i64 %324, 1
  store i64 %325, ptr %19, align 8, !tbaa !9
  br label %250, !llvm.loop !33

326:                                              ; preds = %250
  store i64 0, ptr %19, align 8, !tbaa !9
  br label %327

327:                                              ; preds = %342, %326
  %328 = load i64, ptr %19, align 8, !tbaa !9
  %329 = load i64, ptr %12, align 8, !tbaa !9
  %330 = sub nsw i64 %329, 1
  %331 = icmp sle i64 %328, %330
  br i1 %331, label %332, label %345

332:                                              ; preds = %327
  %333 = load ptr, ptr %17, align 8, !tbaa !5
  %334 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %333, i32 0, i32 30
  %335 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %334, i32 0, i32 6
  %336 = load ptr, ptr %335, align 8, !tbaa !30
  %337 = load i64, ptr %19, align 8, !tbaa !9
  %338 = getelementptr inbounds ptr, ptr %336, i64 %337
  %339 = load ptr, ptr %338, align 8, !tbaa !5
  %340 = load i64, ptr %19, align 8, !tbaa !9
  %341 = getelementptr inbounds double, ptr %339, i64 %340
  store double 1.000000e+00, ptr %341, align 8, !tbaa !11
  br label %342

342:                                              ; preds = %332
  %343 = load i64, ptr %19, align 8, !tbaa !9
  %344 = add nsw i64 %343, 1
  store i64 %344, ptr %19, align 8, !tbaa !9
  br label %327, !llvm.loop !34

345:                                              ; preds = %327
  br label %346

346:                                              ; preds = %345, %178
  %347 = load i64, ptr %12, align 8, !tbaa !9
  store i64 %347, ptr %31, align 8, !tbaa !9
  store i64 0, ptr %29, align 8, !tbaa !9
  %348 = load i64, ptr %16, align 8, !tbaa !9
  %349 = icmp eq i64 %348, 1
  br i1 %349, label %350, label %436

350:                                              ; preds = %346
  %351 = load ptr, ptr %11, align 8, !tbaa !5
  %352 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %351, i32 0, i32 0
  %353 = load i64, ptr %352, align 8, !tbaa !35
  %354 = load i64, ptr %12, align 8, !tbaa !9
  %355 = icmp sge i64 %353, %354
  %356 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %355, ptr noundef @.str.341, ptr noundef %356)
  store double 0.000000e+00, ptr %30, align 8, !tbaa !11
  store i64 0, ptr %31, align 8, !tbaa !9
  store i64 0, ptr %19, align 8, !tbaa !9
  br label %357

357:                                              ; preds = %383, %350
  %358 = load i64, ptr %19, align 8, !tbaa !9
  %359 = load i64, ptr %12, align 8, !tbaa !9
  %360 = sub nsw i64 %359, 1
  %361 = icmp sle i64 %358, %360
  br i1 %361, label %362, label %386

362:                                              ; preds = %357
  %363 = load ptr, ptr %11, align 8, !tbaa !5
  %364 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %363, i32 0, i32 4
  %365 = load ptr, ptr %364, align 8, !tbaa !30
  %366 = load i64, ptr %19, align 8, !tbaa !9
  %367 = getelementptr inbounds i8, ptr %365, i64 %366
  %368 = load i8, ptr %367, align 1, !tbaa !13, !range !24, !noundef !25
  %369 = trunc i8 %368 to i1
  br i1 %369, label %370, label %382

370:                                              ; preds = %362
  %371 = load ptr, ptr %17, align 8, !tbaa !5
  %372 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %371, i32 0, i32 10
  %373 = load i64, ptr %19, align 8, !tbaa !9
  %374 = load ptr, ptr %18, align 8, !tbaa !5
  %375 = call noundef i64 @_ZN11alglib_implL24amdordering_vtxgetapproxEPKNS_12amdvertexsetElPNS_8ae_stateE(ptr noundef %372, i64 noundef %373, ptr noundef %374)
  store i64 %375, ptr %32, align 8, !tbaa !9
  %376 = load double, ptr %30, align 8, !tbaa !11
  %377 = load i64, ptr %32, align 8, !tbaa !9
  %378 = sitofp i64 %377 to double
  %379 = fadd double %376, %378
  store double %379, ptr %30, align 8, !tbaa !11
  %380 = load i64, ptr %31, align 8, !tbaa !9
  %381 = add nsw i64 %380, 1
  store i64 %381, ptr %31, align 8, !tbaa !9
  br label %382

382:                                              ; preds = %370, %362
  br label %383

383:                                              ; preds = %382
  %384 = load i64, ptr %19, align 8, !tbaa !9
  %385 = add nsw i64 %384, 1
  store i64 %385, ptr %19, align 8, !tbaa !9
  br label %357, !llvm.loop !36

386:                                              ; preds = %357
  %387 = load double, ptr %30, align 8, !tbaa !11
  %388 = load i64, ptr %31, align 8, !tbaa !9
  %389 = sitofp i64 %388 to double
  %390 = load ptr, ptr %18, align 8, !tbaa !5
  %391 = call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %389, double noundef 1.000000e+00, ptr noundef %390)
  %392 = fdiv double %387, %391
  store double %392, ptr %30, align 8, !tbaa !11
  %393 = load double, ptr %13, align 8, !tbaa !11
  %394 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %393, double noundef 0.000000e+00)
  %395 = load double, ptr %13, align 8, !tbaa !11
  %396 = load ptr, ptr %18, align 8, !tbaa !5
  %397 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %395, double noundef 1.000000e+00, ptr noundef %396)
  %398 = load ptr, ptr %18, align 8, !tbaa !5
  %399 = call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext %394, double noundef %397, double noundef 1.000000e+01, ptr noundef %398)
  %400 = load double, ptr %30, align 8, !tbaa !11
  %401 = load ptr, ptr %18, align 8, !tbaa !5
  %402 = call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %400, double noundef 1.000000e+00, ptr noundef %401)
  %403 = fmul double %399, %402
  %404 = load ptr, ptr %18, align 8, !tbaa !5
  %405 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %403, ptr noundef %404)
  store i64 %405, ptr %29, align 8, !tbaa !9
  %406 = load i64, ptr %29, align 8, !tbaa !9
  %407 = load ptr, ptr %18, align 8, !tbaa !5
  %408 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %406, i64 noundef 1, ptr noundef %407)
  store i64 %408, ptr %29, align 8, !tbaa !9
  store i64 0, ptr %19, align 8, !tbaa !9
  br label %409

409:                                              ; preds = %428, %386
  %410 = load i64, ptr %19, align 8, !tbaa !9
  %411 = load i64, ptr %12, align 8, !tbaa !9
  %412 = sub nsw i64 %411, 1
  %413 = icmp sle i64 %410, %412
  br i1 %413, label %414, label %431

414:                                              ; preds = %409
  %415 = load ptr, ptr %17, align 8, !tbaa !5
  %416 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %415, i32 0, i32 10
  %417 = load i64, ptr %19, align 8, !tbaa !9
  %418 = load ptr, ptr %18, align 8, !tbaa !5
  %419 = call noundef i64 @_ZN11alglib_implL24amdordering_vtxgetapproxEPKNS_12amdvertexsetElPNS_8ae_stateE(ptr noundef %416, i64 noundef %417, ptr noundef %418)
  %420 = load i64, ptr %29, align 8, !tbaa !9
  %421 = icmp sgt i64 %419, %420
  br i1 %421, label %422, label %427

422:                                              ; preds = %414
  %423 = load ptr, ptr %17, align 8, !tbaa !5
  %424 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %423, i32 0, i32 23
  %425 = load i64, ptr %19, align 8, !tbaa !9
  %426 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl13nisaddelementEPNS_5nisetElPNS_8ae_stateE(ptr noundef %424, i64 noundef %425, ptr noundef %426)
  br label %427

427:                                              ; preds = %422, %414
  br label %428

428:                                              ; preds = %427
  %429 = load i64, ptr %19, align 8, !tbaa !9
  %430 = add nsw i64 %429, 1
  store i64 %430, ptr %19, align 8, !tbaa !9
  br label %409, !llvm.loop !37

431:                                              ; preds = %409
  %432 = load ptr, ptr %17, align 8, !tbaa !5
  %433 = load ptr, ptr %17, align 8, !tbaa !5
  %434 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %433, i32 0, i32 23
  %435 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL31amdordering_amdmovetoquasidenseEPNS_9amdbufferEPNS_5nisetElPNS_8ae_stateE(ptr noundef %432, ptr noundef %434, i64 noundef -1, ptr noundef %435)
  br label %436

436:                                              ; preds = %431, %346
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %437

437:                                              ; preds = %697, %436
  %438 = load i64, ptr %21, align 8, !tbaa !9
  %439 = load i64, ptr %12, align 8, !tbaa !9
  %440 = load ptr, ptr %17, align 8, !tbaa !5
  %441 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %440, i32 0, i32 11
  %442 = load ptr, ptr %18, align 8, !tbaa !5
  %443 = call noundef i64 @_ZN11alglib_impl8niscountEPKNS_5nisetEPNS_8ae_stateE(ptr noundef %441, ptr noundef %442)
  %444 = sub nsw i64 %439, %443
  %445 = icmp slt i64 %438, %444
  br i1 %445, label %446, label %719

446:                                              ; preds = %437
  %447 = load ptr, ptr %17, align 8, !tbaa !5
  %448 = load i64, ptr %21, align 8, !tbaa !9
  %449 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL33amdordering_amdselectpivotelementEPNS_9amdbufferElPlS2_PNS_8ae_stateE(ptr noundef %447, i64 noundef %448, ptr noundef %22, ptr noundef %26, ptr noundef %449)
  %450 = load i64, ptr %22, align 8, !tbaa !9
  %451 = icmp slt i64 %450, 0
  br i1 %451, label %452, label %453

452:                                              ; preds = %446
  br label %719

453:                                              ; preds = %446
  %454 = load ptr, ptr %17, align 8, !tbaa !5
  %455 = load i64, ptr %22, align 8, !tbaa !9
  %456 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL24amdordering_amdcomputelpEPNS_9amdbufferElPNS_8ae_stateE(ptr noundef %454, i64 noundef %455, ptr noundef %456)
  %457 = load ptr, ptr %17, align 8, !tbaa !5
  %458 = load i64, ptr %22, align 8, !tbaa !9
  %459 = load i64, ptr %21, align 8, !tbaa !9
  %460 = load i64, ptr %29, align 8, !tbaa !9
  %461 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL30amdordering_amdmasseliminationEPNS_9amdbufferElllPNS_8ae_stateE(ptr noundef %457, i64 noundef %458, i64 noundef %459, i64 noundef %460, ptr noundef %461)
  %462 = load ptr, ptr %17, align 8, !tbaa !5
  %463 = load ptr, ptr %17, align 8, !tbaa !5
  %464 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %463, i32 0, i32 23
  %465 = load i64, ptr %22, align 8, !tbaa !9
  %466 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL31amdordering_amdmovetoquasidenseEPNS_9amdbufferEPNS_5nisetElPNS_8ae_stateE(ptr noundef %462, ptr noundef %464, i64 noundef %465, ptr noundef %466)
  %467 = load ptr, ptr %17, align 8, !tbaa !5
  %468 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL31amdordering_amddetectsupernodesEPNS_9amdbufferEPNS_8ae_stateE(ptr noundef %467, ptr noundef %468)
  %469 = load i8, ptr %25, align 1, !tbaa !13, !range !24, !noundef !25
  %470 = trunc i8 %469 to i1
  br i1 %470, label %471, label %624

471:                                              ; preds = %453
  %472 = load ptr, ptr %17, align 8, !tbaa !5
  %473 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %472, i32 0, i32 2
  %474 = load i8, ptr %473, align 1, !tbaa !26, !range !24, !noundef !25
  %475 = trunc i8 %474 to i1
  %476 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %475, ptr noundef @.str.342, ptr noundef %476)
  %477 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %477, ptr %19, align 8, !tbaa !9
  br label %478

478:                                              ; preds = %521, %471
  %479 = load i64, ptr %19, align 8, !tbaa !9
  %480 = load i64, ptr %21, align 8, !tbaa !9
  %481 = load i64, ptr %26, align 8, !tbaa !9
  %482 = add nsw i64 %480, %481
  %483 = sub nsw i64 %482, 1
  %484 = icmp sle i64 %479, %483
  br i1 %484, label %485, label %524

485:                                              ; preds = %478
  %486 = load ptr, ptr %17, align 8, !tbaa !5
  %487 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %486, i32 0, i32 14
  %488 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %487, i32 0, i32 4
  %489 = load ptr, ptr %488, align 8, !tbaa !30
  %490 = load i64, ptr %19, align 8, !tbaa !9
  %491 = getelementptr inbounds i64, ptr %489, i64 %490
  %492 = load i64, ptr %491, align 8, !tbaa !9
  %493 = load i64, ptr %19, align 8, !tbaa !9
  %494 = icmp ne i64 %492, %493
  br i1 %494, label %495, label %520

495:                                              ; preds = %485
  %496 = load ptr, ptr %17, align 8, !tbaa !5
  %497 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %496, i32 0, i32 30
  %498 = load i64, ptr %19, align 8, !tbaa !9
  %499 = load ptr, ptr %17, align 8, !tbaa !5
  %500 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %499, i32 0, i32 14
  %501 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %500, i32 0, i32 4
  %502 = load ptr, ptr %501, align 8, !tbaa !30
  %503 = load i64, ptr %19, align 8, !tbaa !9
  %504 = getelementptr inbounds i64, ptr %502, i64 %503
  %505 = load i64, ptr %504, align 8, !tbaa !9
  %506 = load i64, ptr %12, align 8, !tbaa !9
  %507 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl8swaprowsEPNS_9ae_matrixElllPNS_8ae_stateE(ptr noundef %497, i64 noundef %498, i64 noundef %505, i64 noundef %506, ptr noundef %507)
  %508 = load ptr, ptr %17, align 8, !tbaa !5
  %509 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %508, i32 0, i32 30
  %510 = load i64, ptr %19, align 8, !tbaa !9
  %511 = load ptr, ptr %17, align 8, !tbaa !5
  %512 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %511, i32 0, i32 14
  %513 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %512, i32 0, i32 4
  %514 = load ptr, ptr %513, align 8, !tbaa !30
  %515 = load i64, ptr %19, align 8, !tbaa !9
  %516 = getelementptr inbounds i64, ptr %514, i64 %515
  %517 = load i64, ptr %516, align 8, !tbaa !9
  %518 = load i64, ptr %12, align 8, !tbaa !9
  %519 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl8swapcolsEPNS_9ae_matrixElllPNS_8ae_stateE(ptr noundef %509, i64 noundef %510, i64 noundef %517, i64 noundef %518, ptr noundef %519)
  br label %520

520:                                              ; preds = %495, %485
  br label %521

521:                                              ; preds = %520
  %522 = load i64, ptr %19, align 8, !tbaa !9
  %523 = add nsw i64 %522, 1
  store i64 %523, ptr %19, align 8, !tbaa !9
  br label %478, !llvm.loop !38

524:                                              ; preds = %478
  store i64 0, ptr %19, align 8, !tbaa !9
  br label %525

525:                                              ; preds = %563, %524
  %526 = load i64, ptr %19, align 8, !tbaa !9
  %527 = load i64, ptr %26, align 8, !tbaa !9
  %528 = sub nsw i64 %527, 1
  %529 = icmp sle i64 %526, %528
  br i1 %529, label %530, label %566

530:                                              ; preds = %525
  %531 = load i64, ptr %12, align 8, !tbaa !9
  %532 = load i64, ptr %21, align 8, !tbaa !9
  %533 = sub nsw i64 %531, %532
  %534 = load i64, ptr %19, align 8, !tbaa !9
  %535 = sub nsw i64 %533, %534
  %536 = load i64, ptr %12, align 8, !tbaa !9
  %537 = load i64, ptr %21, align 8, !tbaa !9
  %538 = sub nsw i64 %536, %537
  %539 = load i64, ptr %19, align 8, !tbaa !9
  %540 = sub nsw i64 %538, %539
  %541 = load i64, ptr %21, align 8, !tbaa !9
  %542 = load i64, ptr %19, align 8, !tbaa !9
  %543 = add nsw i64 %541, %542
  %544 = load ptr, ptr %17, align 8, !tbaa !5
  %545 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %544, i32 0, i32 30
  %546 = load i64, ptr %21, align 8, !tbaa !9
  %547 = load i64, ptr %19, align 8, !tbaa !9
  %548 = add nsw i64 %546, %547
  %549 = load ptr, ptr %17, align 8, !tbaa !5
  %550 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %549, i32 0, i32 30
  %551 = load i64, ptr %21, align 8, !tbaa !9
  %552 = load i64, ptr %19, align 8, !tbaa !9
  %553 = add nsw i64 %551, %552
  %554 = load ptr, ptr %17, align 8, !tbaa !5
  %555 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %554, i32 0, i32 30
  %556 = load i64, ptr %21, align 8, !tbaa !9
  %557 = load i64, ptr %19, align 8, !tbaa !9
  %558 = add nsw i64 %556, %557
  %559 = load i64, ptr %21, align 8, !tbaa !9
  %560 = load i64, ptr %19, align 8, !tbaa !9
  %561 = add nsw i64 %559, %560
  %562 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %535, i64 noundef %540, i64 noundef %543, double noundef -1.000000e+00, ptr noundef %545, i64 noundef %548, i64 noundef 0, i64 noundef 0, ptr noundef %550, i64 noundef 0, i64 noundef %553, i64 noundef 0, double noundef 1.000000e+00, ptr noundef %555, i64 noundef %558, i64 noundef %561, ptr noundef %562)
  br label %563

563:                                              ; preds = %530
  %564 = load i64, ptr %19, align 8, !tbaa !9
  %565 = add nsw i64 %564, 1
  store i64 %565, ptr %19, align 8, !tbaa !9
  br label %525, !llvm.loop !39

566:                                              ; preds = %525
  %567 = load ptr, ptr %17, align 8, !tbaa !5
  %568 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %567, i32 0, i32 16
  %569 = load ptr, ptr %18, align 8, !tbaa !5
  %570 = call noundef i64 @_ZN11alglib_impl8niscountEPKNS_5nisetEPNS_8ae_stateE(ptr noundef %568, ptr noundef %569)
  store i64 %570, ptr %27, align 8, !tbaa !9
  store i64 0, ptr %28, align 8, !tbaa !9
  %571 = load i64, ptr %21, align 8, !tbaa !9
  %572 = add nsw i64 %571, 1
  store i64 %572, ptr %19, align 8, !tbaa !9
  br label %573

573:                                              ; preds = %593, %566
  %574 = load i64, ptr %19, align 8, !tbaa !9
  %575 = load i64, ptr %12, align 8, !tbaa !9
  %576 = sub nsw i64 %575, 1
  %577 = icmp sle i64 %574, %576
  br i1 %577, label %578, label %596

578:                                              ; preds = %573
  %579 = load ptr, ptr %17, align 8, !tbaa !5
  %580 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %579, i32 0, i32 30
  %581 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %580, i32 0, i32 6
  %582 = load ptr, ptr %581, align 8, !tbaa !30
  %583 = load i64, ptr %19, align 8, !tbaa !9
  %584 = getelementptr inbounds ptr, ptr %582, i64 %583
  %585 = load ptr, ptr %584, align 8, !tbaa !5
  %586 = load i64, ptr %21, align 8, !tbaa !9
  %587 = getelementptr inbounds double, ptr %585, i64 %586
  %588 = load double, ptr %587, align 8, !tbaa !11
  %589 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %588, double noundef 0.000000e+00)
  br i1 %589, label %590, label %592

590:                                              ; preds = %578
  %591 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef %28, ptr noundef %591)
  br label %592

592:                                              ; preds = %590, %578
  br label %593

593:                                              ; preds = %592
  %594 = load i64, ptr %19, align 8, !tbaa !9
  %595 = add nsw i64 %594, 1
  store i64 %595, ptr %19, align 8, !tbaa !9
  br label %573, !llvm.loop !40

596:                                              ; preds = %573
  %597 = load i64, ptr %27, align 8, !tbaa !9
  %598 = load i64, ptr %26, align 8, !tbaa !9
  %599 = add nsw i64 %597, %598
  %600 = sub nsw i64 %599, 1
  %601 = load i64, ptr %28, align 8, !tbaa !9
  %602 = icmp eq i64 %600, %601
  %603 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %602, ptr noundef @.str.343, ptr noundef %603)
  %604 = load ptr, ptr %17, align 8, !tbaa !5
  %605 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %604, i32 0, i32 10
  %606 = load i64, ptr %22, align 8, !tbaa !9
  %607 = load ptr, ptr %18, align 8, !tbaa !5
  %608 = call noundef i64 @_ZN11alglib_implL24amdordering_vtxgetapproxEPKNS_12amdvertexsetElPNS_8ae_stateE(ptr noundef %605, i64 noundef %606, ptr noundef %607)
  %609 = load ptr, ptr %17, align 8, !tbaa !5
  %610 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %609, i32 0, i32 10
  %611 = load i64, ptr %22, align 8, !tbaa !9
  %612 = load ptr, ptr %18, align 8, !tbaa !5
  %613 = call noundef i64 @_ZN11alglib_implL23amdordering_vtxgetexactEPKNS_12amdvertexsetElPNS_8ae_stateE(ptr noundef %610, i64 noundef %611, ptr noundef %612)
  %614 = icmp sge i64 %608, %613
  %615 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %614, ptr noundef @.str.344, ptr noundef %615)
  %616 = load ptr, ptr %17, align 8, !tbaa !5
  %617 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %616, i32 0, i32 10
  %618 = load i64, ptr %22, align 8, !tbaa !9
  %619 = load ptr, ptr %18, align 8, !tbaa !5
  %620 = call noundef i64 @_ZN11alglib_implL23amdordering_vtxgetexactEPKNS_12amdvertexsetElPNS_8ae_stateE(ptr noundef %617, i64 noundef %618, ptr noundef %619)
  %621 = load i64, ptr %27, align 8, !tbaa !9
  %622 = icmp eq i64 %620, %621
  %623 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %622, ptr noundef @.str.345, ptr noundef %623)
  br label %624

624:                                              ; preds = %596, %453
  %625 = load ptr, ptr %17, align 8, !tbaa !5
  %626 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %625, i32 0, i32 10
  %627 = load i64, ptr %22, align 8, !tbaa !9
  %628 = load ptr, ptr %18, align 8, !tbaa !5
  %629 = call noundef i64 @_ZN11alglib_implL24amdordering_vtxgetapproxEPKNS_12amdvertexsetElPNS_8ae_stateE(ptr noundef %626, i64 noundef %627, ptr noundef %628)
  %630 = load ptr, ptr %17, align 8, !tbaa !5
  %631 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %630, i32 0, i32 16
  %632 = load ptr, ptr %18, align 8, !tbaa !5
  %633 = call noundef i64 @_ZN11alglib_impl8niscountEPKNS_5nisetEPNS_8ae_stateE(ptr noundef %631, ptr noundef %632)
  %634 = icmp sge i64 %629, %633
  %635 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %634, ptr noundef @.str.346, ptr noundef %635)
  %636 = load ptr, ptr %17, align 8, !tbaa !5
  %637 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %636, i32 0, i32 8
  %638 = load i64, ptr %22, align 8, !tbaa !9
  %639 = load ptr, ptr %18, align 8, !tbaa !5
  %640 = call noundef i64 @_ZN11alglib_implL23amdordering_knscountkthEPKNS_8amdknsetElPNS_8ae_stateE(ptr noundef %637, i64 noundef %638, ptr noundef %639)
  %641 = icmp sgt i64 %640, 2
  br i1 %641, label %659, label %642

642:                                              ; preds = %624
  %643 = load ptr, ptr %17, align 8, !tbaa !5
  %644 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %643, i32 0, i32 11
  %645 = load ptr, ptr %18, align 8, !tbaa !5
  %646 = call noundef i64 @_ZN11alglib_impl8niscountEPKNS_5nisetEPNS_8ae_stateE(ptr noundef %644, ptr noundef %645)
  %647 = icmp sgt i64 %646, 0
  br i1 %647, label %659, label %648

648:                                              ; preds = %642
  %649 = load ptr, ptr %17, align 8, !tbaa !5
  %650 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %649, i32 0, i32 10
  %651 = load i64, ptr %22, align 8, !tbaa !9
  %652 = load ptr, ptr %18, align 8, !tbaa !5
  %653 = call noundef i64 @_ZN11alglib_implL24amdordering_vtxgetapproxEPKNS_12amdvertexsetElPNS_8ae_stateE(ptr noundef %650, i64 noundef %651, ptr noundef %652)
  %654 = load ptr, ptr %17, align 8, !tbaa !5
  %655 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %654, i32 0, i32 16
  %656 = load ptr, ptr %18, align 8, !tbaa !5
  %657 = call noundef i64 @_ZN11alglib_impl8niscountEPKNS_5nisetEPNS_8ae_stateE(ptr noundef %655, ptr noundef %656)
  %658 = icmp eq i64 %653, %657
  br label %659

659:                                              ; preds = %648, %642, %624
  %660 = phi i1 [ true, %642 ], [ true, %624 ], [ %658, %648 ]
  %661 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %660, ptr noundef @.str.347, ptr noundef %661)
  %662 = load ptr, ptr %17, align 8, !tbaa !5
  %663 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %662, i32 0, i32 8
  %664 = load i64, ptr %22, align 8, !tbaa !9
  %665 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL31amdordering_knsstartenumerationEPNS_8amdknsetElPNS_8ae_stateE(ptr noundef %663, i64 noundef %664, ptr noundef %665)
  br label %666

666:                                              ; preds = %671, %659
  %667 = load ptr, ptr %17, align 8, !tbaa !5
  %668 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %667, i32 0, i32 8
  %669 = load ptr, ptr %18, align 8, !tbaa !5
  %670 = call noundef zeroext i1 @_ZN11alglib_implL24amdordering_knsenumerateEPNS_8amdknsetEPlPNS_8ae_stateE(ptr noundef %668, ptr noundef %20, ptr noundef %669)
  br i1 %670, label %671, label %676

671:                                              ; preds = %666
  %672 = load ptr, ptr %17, align 8, !tbaa !5
  %673 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %672, i32 0, i32 9
  %674 = load i64, ptr %20, align 8, !tbaa !9
  %675 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL26amdordering_mtxclearcolumnEPNS_11amdllmatrixElPNS_8ae_stateE(ptr noundef %673, i64 noundef %674, ptr noundef %675)
  br label %666, !llvm.loop !41

676:                                              ; preds = %666
  %677 = load ptr, ptr %17, align 8, !tbaa !5
  %678 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %677, i32 0, i32 6
  %679 = load i64, ptr %22, align 8, !tbaa !9
  %680 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL31amdordering_knsstartenumerationEPNS_8amdknsetElPNS_8ae_stateE(ptr noundef %678, i64 noundef %679, ptr noundef %680)
  br label %681

681:                                              ; preds = %686, %676
  %682 = load ptr, ptr %17, align 8, !tbaa !5
  %683 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %682, i32 0, i32 6
  %684 = load ptr, ptr %18, align 8, !tbaa !5
  %685 = call noundef zeroext i1 @_ZN11alglib_implL24amdordering_knsenumerateEPNS_8amdknsetEPlPNS_8ae_stateE(ptr noundef %683, ptr noundef %20, ptr noundef %684)
  br i1 %685, label %686, label %697

686:                                              ; preds = %681
  %687 = load ptr, ptr %17, align 8, !tbaa !5
  %688 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %687, i32 0, i32 3
  %689 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %688, i32 0, i32 4
  %690 = load ptr, ptr %689, align 8, !tbaa !30
  %691 = load i64, ptr %20, align 8, !tbaa !9
  %692 = getelementptr inbounds i8, ptr %690, i64 %691
  store i8 1, ptr %692, align 1, !tbaa !13
  %693 = load ptr, ptr %17, align 8, !tbaa !5
  %694 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %693, i32 0, i32 9
  %695 = load i64, ptr %20, align 8, !tbaa !9
  %696 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL23amdordering_mtxclearrowEPNS_11amdllmatrixElPNS_8ae_stateE(ptr noundef %694, i64 noundef %695, ptr noundef %696)
  br label %681, !llvm.loop !42

697:                                              ; preds = %681
  %698 = load ptr, ptr %17, align 8, !tbaa !5
  %699 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %698, i32 0, i32 7
  %700 = load i64, ptr %22, align 8, !tbaa !9
  %701 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL30amdordering_knsclearkthreclaimEPNS_8amdknsetElPNS_8ae_stateE(ptr noundef %699, i64 noundef %700, ptr noundef %701)
  %702 = load ptr, ptr %17, align 8, !tbaa !5
  %703 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %702, i32 0, i32 8
  %704 = load i64, ptr %22, align 8, !tbaa !9
  %705 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL30amdordering_knsclearkthreclaimEPNS_8amdknsetElPNS_8ae_stateE(ptr noundef %703, i64 noundef %704, ptr noundef %705)
  %706 = load ptr, ptr %17, align 8, !tbaa !5
  %707 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %706, i32 0, i32 4
  %708 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %707, i32 0, i32 4
  %709 = load ptr, ptr %708, align 8, !tbaa !30
  %710 = load i64, ptr %22, align 8, !tbaa !9
  %711 = getelementptr inbounds i8, ptr %709, i64 %710
  store i8 0, ptr %711, align 1, !tbaa !13
  %712 = load ptr, ptr %17, align 8, !tbaa !5
  %713 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %712, i32 0, i32 10
  %714 = load i64, ptr %22, align 8, !tbaa !9
  %715 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_implL27amdordering_vtxremovevertexEPNS_12amdvertexsetElPNS_8ae_stateE(ptr noundef %713, i64 noundef %714, ptr noundef %715)
  %716 = load i64, ptr %21, align 8, !tbaa !9
  %717 = load i64, ptr %26, align 8, !tbaa !9
  %718 = add nsw i64 %716, %717
  store i64 %718, ptr %21, align 8, !tbaa !9
  br label %437, !llvm.loop !43

719:                                              ; preds = %452, %437
  %720 = load i64, ptr %21, align 8, !tbaa !9
  %721 = icmp sgt i64 %720, 0
  br i1 %721, label %725, label %722

722:                                              ; preds = %719
  %723 = load i64, ptr %16, align 8, !tbaa !9
  %724 = icmp eq i64 %723, 1
  br label %725

725:                                              ; preds = %722, %719
  %726 = phi i1 [ true, %719 ], [ %724, %722 ]
  %727 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %726, ptr noundef @.str.348, ptr noundef %727)
  %728 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %728, ptr %33, align 8, !tbaa !9
  %729 = load ptr, ptr %14, align 8, !tbaa !5
  %730 = load i64, ptr %12, align 8, !tbaa !9
  %731 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %729, i64 noundef %730, ptr noundef %731)
  %732 = load ptr, ptr %15, align 8, !tbaa !5
  %733 = load i64, ptr %12, align 8, !tbaa !9
  %734 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %732, i64 noundef %733, ptr noundef %734)
  store i64 0, ptr %19, align 8, !tbaa !9
  br label %735

735:                                              ; preds = %765, %725
  %736 = load i64, ptr %19, align 8, !tbaa !9
  %737 = load i64, ptr %12, align 8, !tbaa !9
  %738 = sub nsw i64 %737, 1
  %739 = icmp sle i64 %736, %738
  br i1 %739, label %740, label %768

740:                                              ; preds = %735
  %741 = load ptr, ptr %17, align 8, !tbaa !5
  %742 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %741, i32 0, i32 12
  %743 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %742, i32 0, i32 4
  %744 = load ptr, ptr %743, align 8, !tbaa !30
  %745 = load i64, ptr %19, align 8, !tbaa !9
  %746 = getelementptr inbounds i64, ptr %744, i64 %745
  %747 = load i64, ptr %746, align 8, !tbaa !9
  %748 = load ptr, ptr %14, align 8, !tbaa !5
  %749 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %748, i32 0, i32 4
  %750 = load ptr, ptr %749, align 8, !tbaa !30
  %751 = load i64, ptr %19, align 8, !tbaa !9
  %752 = getelementptr inbounds i64, ptr %750, i64 %751
  store i64 %747, ptr %752, align 8, !tbaa !9
  %753 = load ptr, ptr %17, align 8, !tbaa !5
  %754 = getelementptr inbounds %"struct.alglib_impl::amdbuffer", ptr %753, i32 0, i32 13
  %755 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %754, i32 0, i32 4
  %756 = load ptr, ptr %755, align 8, !tbaa !30
  %757 = load i64, ptr %19, align 8, !tbaa !9
  %758 = getelementptr inbounds i64, ptr %756, i64 %757
  %759 = load i64, ptr %758, align 8, !tbaa !9
  %760 = load ptr, ptr %15, align 8, !tbaa !5
  %761 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %760, i32 0, i32 4
  %762 = load ptr, ptr %761, align 8, !tbaa !30
  %763 = load i64, ptr %19, align 8, !tbaa !9
  %764 = getelementptr inbounds i64, ptr %762, i64 %763
  store i64 %759, ptr %764, align 8, !tbaa !9
  br label %765

765:                                              ; preds = %740
  %766 = load i64, ptr %19, align 8, !tbaa !9
  %767 = add nsw i64 %766, 1
  store i64 %767, ptr %19, align 8, !tbaa !9
  br label %735, !llvm.loop !44

768:                                              ; preds = %735
  %769 = load i64, ptr %33, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  ret i64 %769
}

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext, double noundef, double noundef, ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN11alglib_implL24amdordering_knsenumerateEPNS_8amdknsetEPlPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) #3

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!16, !10, i64 0}
!16 = !{!"_ZTSN11alglib_impl9amdbufferE", !10, i64 0, !14, i64 8, !14, i64 9, !17, i64 16, !17, i64 80, !17, i64 144, !19, i64 208, !19, i64 568, !19, i64 928, !20, i64 1288, !21, i64 1496, !22, i64 1968, !17, i64 2120, !17, i64 2184, !17, i64 2248, !22, i64 2312, !22, i64 2464, !22, i64 2616, !22, i64 2768, !22, i64 2920, !22, i64 3072, !17, i64 3224, !10, i64 3288, !22, i64 3296, !22, i64 3448, !19, i64 3600, !22, i64 3960, !17, i64 4112, !17, i64 4176, !17, i64 4240, !23, i64 4304}
!17 = !{!"_ZTSN11alglib_impl9ae_vectorE", !10, i64 0, !10, i64 8, !14, i64 16, !18, i64 24, !7, i64 56}
!18 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!19 = !{!"_ZTSN11alglib_impl8amdknsetE", !10, i64 0, !10, i64 8, !17, i64 16, !17, i64 80, !17, i64 144, !17, i64 208, !17, i64 272, !10, i64 336, !10, i64 344, !10, i64 352}
!20 = !{!"_ZTSN11alglib_impl11amdllmatrixE", !10, i64 0, !17, i64 8, !17, i64 72, !17, i64 136, !10, i64 200}
!21 = !{!"_ZTSN11alglib_impl12amdvertexsetE", !10, i64 0, !14, i64 8, !10, i64 16, !17, i64 24, !17, i64 88, !17, i64 152, !17, i64 216, !17, i64 280, !17, i64 344, !17, i64 408}
!22 = !{!"_ZTSN11alglib_impl5nisetE", !10, i64 0, !10, i64 8, !17, i64 16, !17, i64 80, !10, i64 144}
!23 = !{!"_ZTSN11alglib_impl9ae_matrixE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !14, i64 32, !18, i64 40, !7, i64 72}
!24 = !{i8 0, i8 2}
!25 = !{}
!26 = !{!16, !14, i64 9}
!27 = !{!16, !14, i64 8}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = !{!7, !7, i64 0}
!31 = distinct !{!31, !29}
!32 = distinct !{!32, !29}
!33 = distinct !{!33, !29}
!34 = distinct !{!34, !29}
!35 = !{!17, !10, i64 0}
!36 = distinct !{!36, !29}
!37 = distinct !{!37, !29}
!38 = distinct !{!38, !29}
!39 = distinct !{!39, !29}
!40 = distinct !{!40, !29}
!41 = distinct !{!41, !29}
!42 = distinct !{!42, !29}
!43 = distinct !{!43, !29}
!44 = distinct !{!44, !29}


; 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.338 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.339 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.340 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.341 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.342 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.343 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.344 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.345 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.346 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.347 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.348 = external hidden unnamed_addr constant [33 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i64 @_ZN11alglib_impl23generateamdpermutationxEPKNS_12sparsematrixEPKNS_9ae_vectorEldPS3_S6_lPNS_9amdbufferEPNS_8ae_stateE(ptr noundef %0, ptr noundef %1, i64 noundef %2, double noundef %3, ptr noundef %4, ptr noundef %5, i64 noundef %6, ptr noundef %7, ptr noundef %8) local_unnamed_addr #1 {
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #4
  %14 = icmp eq i64 %6, 0
  %15 = icmp eq i64 %6, 1
  %16 = icmp ult i64 %6, 2
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %16, ptr noundef nonnull @.str.338, ptr noundef %8)
  br i1 %14, label %21, label %17

17:                                               ; preds = %9
  %18 = tail call noundef zeroext i1 @_ZN11alglib_impl11ae_isfiniteEdPNS_8ae_stateE(double noundef %3, ptr noundef %8)
  br i1 %18, label %19, label %21

19:                                               ; preds = %17
  %20 = tail call noundef zeroext i1 @_ZN11alglib_impl16ae_fp_greater_eqEdd(double noundef %3, double noundef 0.000000e+00)
  br label %21

21:                                               ; preds = %17, %19, %9
  %22 = phi i1 [ true, %9 ], [ false, %17 ], [ %20, %19 ]
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %22, ptr noundef nonnull @.str.339, ptr noundef %8)
  %23 = tail call noundef zeroext i1 @_ZN11alglib_impl19ae_is_trace_enabledEPKc(ptr noundef nonnull @.str.340)
  %24 = icmp slt i64 %2, 101
  %25 = and i1 %24, %23
  %26 = zext i1 %25 to i8
  store i64 %2, ptr %7, align 8, !tbaa !5
  %27 = getelementptr inbounds i8, ptr %7, i64 9
  store i8 %26, ptr %27, align 1, !tbaa !19
  %28 = getelementptr inbounds i8, ptr %7, i64 8
  store i8 %26, ptr %28, align 8, !tbaa !20
  %29 = getelementptr inbounds i8, ptr %7, i64 1288
  tail call void @_ZN11alglib_implL19amdordering_mtxinitElPNS_11amdllmatrixEPNS_8ae_stateE(i64 noundef %2, ptr noundef nonnull %29, ptr noundef %8)
  %30 = getelementptr inbounds i8, ptr %7, i64 568
  tail call void @_ZN11alglib_implL24amdordering_knsinitfromaEPKNS_12sparsematrixElbPNS_8amdknsetEPNS_8ae_stateE(ptr noundef %0, i64 noundef %2, i1 noundef zeroext true, ptr noundef nonnull %30, ptr noundef %8)
  %31 = getelementptr inbounds i8, ptr %7, i64 208
  tail call void @_ZN11alglib_implL19amdordering_knsinitElllPNS_8amdknsetEPNS_8ae_stateE(i64 noundef %2, i64 noundef %2, i64 noundef 3, ptr noundef nonnull %31, ptr noundef %8)
  %.not.not361 = icmp sgt i64 %2, 0
  br i1 %.not.not361, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %21, %.lr.ph
  %.0362 = phi i64 [ %32, %.lr.ph ], [ 0, %21 ]
  tail call void @_ZN11alglib_implL28amdordering_knsaddnewelementEPNS_8amdknsetEllPNS_8ae_stateE(ptr noundef nonnull %31, i64 noundef %.0362, i64 noundef %.0362, ptr noundef %8)
  %32 = add nuw nsw i64 %.0362, 1
  %exitcond.not = icmp eq i64 %32, %2
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !21

._crit_edge:                                      ; preds = %.lr.ph, %21
  %33 = add i64 %2, -1
  %34 = getelementptr inbounds i8, ptr %7, i64 928
  tail call void @_ZN11alglib_implL19amdordering_knsinitElllPNS_8amdknsetEPNS_8ae_stateE(i64 noundef %2, i64 noundef %2, i64 noundef 3, ptr noundef nonnull %34, ptr noundef %8)
  %35 = getelementptr inbounds i8, ptr %7, i64 3600
  tail call void @_ZN11alglib_implL19amdordering_knsinitElllPNS_8amdknsetEPNS_8ae_stateE(i64 noundef %2, i64 noundef %2, i64 noundef 16, ptr noundef nonnull %35, ptr noundef %8)
  %36 = getelementptr inbounds i8, ptr %7, i64 3960
  tail call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %2, ptr noundef nonnull %36, ptr noundef %8)
  %37 = getelementptr inbounds i8, ptr %7, i64 2120
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %37, i64 noundef %2, ptr noundef %8)
  %38 = getelementptr inbounds i8, ptr %7, i64 2184
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %38, i64 noundef %2, ptr noundef %8)
  %39 = getelementptr inbounds i8, ptr %7, i64 2248
  tail call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %39, i64 noundef %2, ptr noundef %8)
  br i1 %.not.not361, label %.lr.ph366, label %._crit_edge367

.lr.ph366:                                        ; preds = %._crit_edge
  %40 = getelementptr inbounds i8, ptr %7, i64 2176
  %41 = getelementptr inbounds i8, ptr %7, i64 2240
  %42 = getelementptr inbounds i8, ptr %7, i64 2304
  %xtraiter = and i64 %2, 1
  %43 = icmp eq i64 %2, 1
  br i1 %43, label %._crit_edge367.loopexit.unr-lcssa, label %.lr.ph366.new

.lr.ph366.new:                                    ; preds = %.lr.ph366
  %unroll_iter = and i64 %2, 9223372036854775806
  br label %44

44:                                               ; preds = %44, %.lr.ph366.new
  %.1364 = phi i64 [ 0, %.lr.ph366.new ], [ %58, %44 ]
  %niter = phi i64 [ 0, %.lr.ph366.new ], [ %niter.next.1, %44 ]
  %45 = load ptr, ptr %40, align 8, !tbaa !23
  %46 = getelementptr inbounds i64, ptr %45, i64 %.1364
  store i64 %.1364, ptr %46, align 8, !tbaa !24
  %47 = load ptr, ptr %41, align 8, !tbaa !23
  %48 = getelementptr inbounds i64, ptr %47, i64 %.1364
  store i64 %.1364, ptr %48, align 8, !tbaa !24
  %49 = load ptr, ptr %42, align 8, !tbaa !23
  %50 = getelementptr inbounds i64, ptr %49, i64 %.1364
  store i64 %.1364, ptr %50, align 8, !tbaa !24
  %51 = or disjoint i64 %.1364, 1
  %52 = load ptr, ptr %40, align 8, !tbaa !23
  %53 = getelementptr inbounds i64, ptr %52, i64 %51
  store i64 %51, ptr %53, align 8, !tbaa !24
  %54 = load ptr, ptr %41, align 8, !tbaa !23
  %55 = getelementptr inbounds i64, ptr %54, i64 %51
  store i64 %51, ptr %55, align 8, !tbaa !24
  %56 = load ptr, ptr %42, align 8, !tbaa !23
  %57 = getelementptr inbounds i64, ptr %56, i64 %51
  store i64 %51, ptr %57, align 8, !tbaa !24
  %58 = add nuw nsw i64 %.1364, 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_edge367.loopexit.unr-lcssa, label %44, !llvm.loop !25

._crit_edge367.loopexit.unr-lcssa:                ; preds = %44, %.lr.ph366
  %.1364.unr = phi i64 [ 0, %.lr.ph366 ], [ %58, %44 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge367, label %._crit_edge367.loopexit.epilog-lcssa

._crit_edge367.loopexit.epilog-lcssa:             ; preds = %._crit_edge367.loopexit.unr-lcssa
  %59 = load ptr, ptr %40, align 8, !tbaa !23
  %60 = getelementptr inbounds i64, ptr %59, i64 %.1364.unr
  store i64 %.1364.unr, ptr %60, align 8, !tbaa !24
  %61 = load ptr, ptr %41, align 8, !tbaa !23
  %62 = getelementptr inbounds i64, ptr %61, i64 %.1364.unr
  store i64 %.1364.unr, ptr %62, align 8, !tbaa !24
  %63 = load ptr, ptr %42, align 8, !tbaa !23
  %64 = getelementptr inbounds i64, ptr %63, i64 %.1364.unr
  store i64 %.1364.unr, ptr %64, align 8, !tbaa !24
  br label %._crit_edge367

._crit_edge367:                                   ; preds = %._crit_edge367.loopexit.epilog-lcssa, %._crit_edge367.loopexit.unr-lcssa, %._crit_edge
  %65 = getelementptr inbounds i8, ptr %7, i64 144
  tail call void @_ZN11alglib_impl10bsetallocvElbPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %2, i1 noundef zeroext true, ptr noundef nonnull %65, ptr noundef %8)
  br i1 %15, label %66, label %67

66:                                               ; preds = %._crit_edge367
  tail call void @_ZN11alglib_impl6bcopyvElPKNS_9ae_vectorEPS0_PNS_8ae_stateE(i64 noundef %2, ptr noundef %1, ptr noundef nonnull %65, ptr noundef %8)
  br label %67

67:                                               ; preds = %66, %._crit_edge367
  %68 = load i8, ptr %27, align 1, !tbaa !19, !range !26, !noundef !27
  %69 = trunc nuw i8 %68 to i1
  %70 = getelementptr inbounds i8, ptr %7, i64 1496
  tail call void @_ZN11alglib_implL19amdordering_vtxinitEPKNS_12sparsematrixElPKNS_9ae_vectorEbbPNS_12amdvertexsetEPNS_8ae_stateE(ptr noundef %0, i64 noundef %2, ptr noundef nonnull %65, i1 noundef zeroext true, i1 noundef zeroext %69, ptr noundef nonnull %70, ptr noundef %8)
  %71 = getelementptr inbounds i8, ptr %7, i64 80
  tail call void @_ZN11alglib_impl10bsetallocvElbPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %2, i1 noundef zeroext true, ptr noundef nonnull %71, ptr noundef %8)
  %72 = getelementptr inbounds i8, ptr %7, i64 16
  tail call void @_ZN11alglib_impl10bsetallocvElbPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %2, i1 noundef zeroext false, ptr noundef nonnull %72, ptr noundef %8)
  %73 = getelementptr inbounds i8, ptr %7, i64 4240
  tail call void @_ZN11alglib_impl10isetallocvEllPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %2, i64 noundef -1, ptr noundef nonnull %73, ptr noundef %8)
  %74 = getelementptr inbounds i8, ptr %7, i64 3224
  tail call void @_ZN11alglib_impl7iallocvElPNS_9ae_vectorEPNS_8ae_stateE(i64 noundef %2, ptr noundef nonnull %74, ptr noundef %8)
  %75 = getelementptr inbounds i8, ptr %7, i64 2312
  tail call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %2, ptr noundef nonnull %75, ptr noundef %8)
  %76 = getelementptr inbounds i8, ptr %7, i64 2464
  tail call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %2, ptr noundef nonnull %76, ptr noundef %8)
  %77 = getelementptr inbounds i8, ptr %7, i64 2616
  tail call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %2, ptr noundef nonnull %77, ptr noundef %8)
  %78 = getelementptr inbounds i8, ptr %7, i64 2768
  tail call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %2, ptr noundef nonnull %78, ptr noundef %8)
  %79 = getelementptr inbounds i8, ptr %7, i64 3448
  tail call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %2, ptr noundef nonnull %79, ptr noundef %8)
  %80 = getelementptr inbounds i8, ptr %7, i64 2920
  tail call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %2, ptr noundef nonnull %80, ptr noundef %8)
  %81 = getelementptr inbounds i8, ptr %7, i64 3072
  tail call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %2, ptr noundef nonnull %81, ptr noundef %8)
  %82 = getelementptr inbounds i8, ptr %7, i64 1968
  tail call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %2, ptr noundef nonnull %82, ptr noundef %8)
  %83 = getelementptr inbounds i8, ptr %7, i64 3296
  tail call void @_ZN11alglib_impl16nisinitemptyslowElPNS_5nisetEPNS_8ae_stateE(i64 noundef %2, ptr noundef nonnull %83, ptr noundef %8)
  br i1 %25, label %84, label %.loopexit

84:                                               ; preds = %67
  %85 = getelementptr inbounds i8, ptr %7, i64 4304
  tail call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %85, i64 noundef %2, i64 noundef %2, ptr noundef %8)
  br i1 %.not.not361, label %.preheader360.lr.ph, label %.loopexit

.preheader360.lr.ph:                              ; preds = %84
  %86 = uitofp nneg i64 %2 to double
  %87 = fdiv double 1.000000e-01, %86
  %88 = getelementptr inbounds i8, ptr %7, i64 4376
  br label %.preheader360.us

.preheader360.us:                                 ; preds = %._crit_edge371.us, %.preheader360.lr.ph
  %.2374.us = phi i64 [ 0, %.preheader360.lr.ph ], [ %111, %._crit_edge371.us ]
  %89 = uitofp nneg i64 %.2374.us to double
  %90 = fadd double %89, 1.700000e-01
  br label %91

91:                                               ; preds = %.preheader360.us, %105
  %storemerge369.us = phi i64 [ 0, %.preheader360.us ], [ %110, %105 ]
  %.not357.us = icmp ugt i64 %storemerge369.us, %.2374.us
  br i1 %.not357.us, label %94, label %92

92:                                               ; preds = %91
  %93 = tail call noundef zeroext i1 @_ZN11alglib_impl12sparseexistsEPKNS_12sparsematrixEllPNS_8ae_stateE(ptr noundef %0, i64 noundef %.2374.us, i64 noundef %storemerge369.us, ptr noundef %8)
  br i1 %93, label %97, label %94

94:                                               ; preds = %92, %91
  %.not358.us = icmp ult i64 %storemerge369.us, %.2374.us
  br i1 %.not358.us, label %105, label %95

95:                                               ; preds = %94
  %96 = tail call noundef zeroext i1 @_ZN11alglib_impl12sparseexistsEPKNS_12sparsematrixEllPNS_8ae_stateE(ptr noundef %0, i64 noundef %storemerge369.us, i64 noundef %.2374.us, ptr noundef %8)
  br i1 %96, label %97, label %105

97:                                               ; preds = %95, %92
  %98 = tail call noundef double @_ZN11alglib_impl6ae_sinEdPNS_8ae_stateE(double noundef %90, ptr noundef %8)
  %99 = uitofp nneg i64 %storemerge369.us to double
  %100 = fadd double %99, 6.500000e-01
  %101 = tail call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %100, ptr noundef %8)
  %102 = tail call noundef double @_ZN11alglib_impl6ae_cosEdPNS_8ae_stateE(double noundef %101, ptr noundef %8)
  %103 = fadd double %98, %102
  %104 = fmul double %87, %103
  br label %105

105:                                              ; preds = %94, %95, %97
  %.sink = phi double [ %104, %97 ], [ 0.000000e+00, %95 ], [ 0.000000e+00, %94 ]
  %106 = load ptr, ptr %88, align 8, !tbaa !23
  %107 = getelementptr inbounds ptr, ptr %106, i64 %.2374.us
  %108 = load ptr, ptr %107, align 8, !tbaa !28
  %109 = getelementptr inbounds double, ptr %108, i64 %storemerge369.us
  store double %.sink, ptr %109, align 8, !tbaa !29
  %110 = add nuw nsw i64 %storemerge369.us, 1
  %exitcond426.not = icmp eq i64 %110, %2
  br i1 %exitcond426.not, label %._crit_edge371.us, label %91, !llvm.loop !31

._crit_edge371.us:                                ; preds = %105
  %111 = add nuw nsw i64 %.2374.us, 1
  %exitcond427.not = icmp eq i64 %111, %2
  br i1 %exitcond427.not, label %.preheader359, label %.preheader360.us, !llvm.loop !32

.preheader359:                                    ; preds = %._crit_edge371.us
  store i64 %2, ptr %10, align 8, !tbaa !24
  br i1 %.not.not361, label %.lr.ph378, label %.loopexit

.lr.ph378:                                        ; preds = %.preheader359
  %112 = getelementptr inbounds i8, ptr %7, i64 4376
  %xtraiter441 = and i64 %2, 3
  %113 = icmp ult i64 %2, 4
  br i1 %113, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph378.new

.lr.ph378.new:                                    ; preds = %.lr.ph378
  %unroll_iter443 = and i64 %2, 9223372036854775804
  br label %114

114:                                              ; preds = %114, %.lr.ph378.new
  %.3377 = phi i64 [ 0, %.lr.ph378.new ], [ %134, %114 ]
  %niter444 = phi i64 [ 0, %.lr.ph378.new ], [ %niter444.next.3, %114 ]
  %115 = load ptr, ptr %112, align 8, !tbaa !23
  %116 = getelementptr inbounds ptr, ptr %115, i64 %.3377
  %117 = load ptr, ptr %116, align 8, !tbaa !28
  %118 = getelementptr inbounds double, ptr %117, i64 %.3377
  store double 1.000000e+00, ptr %118, align 8, !tbaa !29
  %119 = or disjoint i64 %.3377, 1
  %120 = load ptr, ptr %112, align 8, !tbaa !23
  %121 = getelementptr inbounds ptr, ptr %120, i64 %119
  %122 = load ptr, ptr %121, align 8, !tbaa !28
  %123 = getelementptr inbounds double, ptr %122, i64 %119
  store double 1.000000e+00, ptr %123, align 8, !tbaa !29
  %124 = or disjoint i64 %.3377, 2
  %125 = load ptr, ptr %112, align 8, !tbaa !23
  %126 = getelementptr inbounds ptr, ptr %125, i64 %124
  %127 = load ptr, ptr %126, align 8, !tbaa !28
  %128 = getelementptr inbounds double, ptr %127, i64 %124
  store double 1.000000e+00, ptr %128, align 8, !tbaa !29
  %129 = or disjoint i64 %.3377, 3
  %130 = load ptr, ptr %112, align 8, !tbaa !23
  %131 = getelementptr inbounds ptr, ptr %130, i64 %129
  %132 = load ptr, ptr %131, align 8, !tbaa !28
  %133 = getelementptr inbounds double, ptr %132, i64 %129
  store double 1.000000e+00, ptr %133, align 8, !tbaa !29
  %134 = add nuw nsw i64 %.3377, 4
  %niter444.next.3 = add i64 %niter444, 4
  %niter444.ncmp.3 = icmp eq i64 %niter444.next.3, %unroll_iter443
  br i1 %niter444.ncmp.3, label %.loopexit.loopexit.unr-lcssa, label %114, !llvm.loop !33

.loopexit.loopexit.unr-lcssa:                     ; preds = %114, %.lr.ph378
  %.3377.unr = phi i64 [ 0, %.lr.ph378 ], [ %134, %114 ]
  %lcmp.mod442.not = icmp eq i64 %xtraiter441, 0
  br i1 %lcmp.mod442.not, label %.loopexit, label %.epil.preheader440

.epil.preheader440:                               ; preds = %.loopexit.loopexit.unr-lcssa, %.epil.preheader440
  %.3377.epil = phi i64 [ %139, %.epil.preheader440 ], [ %.3377.unr, %.loopexit.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader440 ], [ 0, %.loopexit.loopexit.unr-lcssa ]
  %135 = load ptr, ptr %112, align 8, !tbaa !23
  %136 = getelementptr inbounds ptr, ptr %135, i64 %.3377.epil
  %137 = load ptr, ptr %136, align 8, !tbaa !28
  %138 = getelementptr inbounds double, ptr %137, i64 %.3377.epil
  store double 1.000000e+00, ptr %138, align 8, !tbaa !29
  %139 = add nuw nsw i64 %.3377.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter441
  br i1 %epil.iter.cmp.not, label %.loopexit, label %.epil.preheader440, !llvm.loop !34

.loopexit:                                        ; preds = %.loopexit.loopexit.unr-lcssa, %.epil.preheader440, %84, %.preheader359, %67
  br i1 %15, label %140, label %171

140:                                              ; preds = %.loopexit
  %141 = load i64, ptr %1, align 8, !tbaa !36
  %142 = icmp sge i64 %141, %2
  tail call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %142, ptr noundef nonnull @.str.341, ptr noundef %8)
  br i1 %.not.not361, label %.lr.ph384, label %._crit_edge385

.lr.ph384:                                        ; preds = %140
  %143 = getelementptr inbounds i8, ptr %1, i64 56
  br label %144

144:                                              ; preds = %.lr.ph384, %154
  %.4382 = phi i64 [ 0, %.lr.ph384 ], [ %155, %154 ]
  %.0334381 = phi i64 [ 0, %.lr.ph384 ], [ %.1335, %154 ]
  %.0336380 = phi double [ 0.000000e+00, %.lr.ph384 ], [ %.1337, %154 ]
  %145 = load ptr, ptr %143, align 8, !tbaa !23
  %146 = getelementptr inbounds i8, ptr %145, i64 %.4382
  %147 = load i8, ptr %146, align 1, !tbaa !37, !range !26, !noundef !27
  %148 = trunc nuw i8 %147 to i1
  br i1 %148, label %149, label %154

149:                                              ; preds = %144
  %150 = tail call noundef i64 @_ZN11alglib_implL24amdordering_vtxgetapproxEPKNS_12amdvertexsetElPNS_8ae_stateE(ptr noundef nonnull %70, i64 noundef %.4382, ptr noundef %8)
  %151 = sitofp i64 %150 to double
  %152 = fadd double %.0336380, %151
  %153 = add nsw i64 %.0334381, 1
  br label %154

154:                                              ; preds = %144, %149
  %.1337 = phi double [ %152, %149 ], [ %.0336380, %144 ]
  %.1335 = phi i64 [ %153, %149 ], [ %.0334381, %144 ]
  %155 = add nuw nsw i64 %.4382, 1
  %exitcond429.not = icmp eq i64 %155, %2
  br i1 %exitcond429.not, label %._crit_edge385.loopexit, label %144, !llvm.loop !38

._crit_edge385.loopexit:                          ; preds = %154
  %156 = sitofp i64 %.1335 to double
  br label %._crit_edge385

._crit_edge385:                                   ; preds = %._crit_edge385.loopexit, %140
  %.0336.lcssa = phi double [ 0.000000e+00, %140 ], [ %.1337, %._crit_edge385.loopexit ]
  %.0334.lcssa = phi double [ 0.000000e+00, %140 ], [ %156, %._crit_edge385.loopexit ]
  %157 = tail call noundef double @_ZN11alglib_impl8coalesceEddPNS_8ae_stateE(double noundef %.0334.lcssa, double noundef 1.000000e+00, ptr noundef %8)
  %158 = fdiv double %.0336.lcssa, %157
  %159 = tail call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %3, double noundef 0.000000e+00)
  %160 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %3, double noundef 1.000000e+00, ptr noundef %8)
  %161 = tail call noundef double @_ZN11alglib_impl6rcase2EbddPNS_8ae_stateE(i1 noundef zeroext %159, double noundef %160, double noundef 1.000000e+01, ptr noundef %8)
  %162 = tail call noundef double @_ZN11alglib_impl10ae_maxrealEddPNS_8ae_stateE(double noundef %158, double noundef 1.000000e+00, ptr noundef %8)
  %163 = fmul double %161, %162
  %164 = tail call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %163, ptr noundef %8)
  %165 = tail call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %164, i64 noundef 1, ptr noundef %8)
  br i1 %.not.not361, label %.lr.ph390, label %._crit_edge391

.lr.ph390:                                        ; preds = %._crit_edge385, %169
  %.5388 = phi i64 [ %170, %169 ], [ 0, %._crit_edge385 ]
  %166 = tail call noundef i64 @_ZN11alglib_implL24amdordering_vtxgetapproxEPKNS_12amdvertexsetElPNS_8ae_stateE(ptr noundef nonnull %70, i64 noundef %.5388, ptr noundef %8)
  %167 = icmp sgt i64 %166, %165
  br i1 %167, label %168, label %169

168:                                              ; preds = %.lr.ph390
  tail call void @_ZN11alglib_impl13nisaddelementEPNS_5nisetElPNS_8ae_stateE(ptr noundef nonnull %83, i64 noundef %.5388, ptr noundef %8)
  br label %169

169:                                              ; preds = %.lr.ph390, %168
  %170 = add nuw nsw i64 %.5388, 1
  %exitcond430.not = icmp eq i64 %170, %2
  br i1 %exitcond430.not, label %._crit_edge391, label %.lr.ph390, !llvm.loop !39

._crit_edge391:                                   ; preds = %169, %._crit_edge385
  tail call void @_ZN11alglib_implL31amdordering_amdmovetoquasidenseEPNS_9amdbufferEPNS_5nisetElPNS_8ae_stateE(ptr noundef %7, ptr noundef nonnull %83, i64 noundef -1, ptr noundef %8)
  br label %171

171:                                              ; preds = %._crit_edge391, %.loopexit
  %.0338 = phi i64 [ %165, %._crit_edge391 ], [ 0, %.loopexit ]
  %172 = tail call noundef i64 @_ZN11alglib_impl8niscountEPKNS_5nisetEPNS_8ae_stateE(ptr noundef nonnull %82, ptr noundef %8)
  %173 = icmp slt i64 %172, %2
  br i1 %173, label %.lr.ph415, label %._crit_edge416

.lr.ph415:                                        ; preds = %171
  %174 = getelementptr inbounds i8, ptr %7, i64 2304
  %175 = getelementptr inbounds i8, ptr %7, i64 4304
  %176 = getelementptr inbounds i8, ptr %7, i64 4376
  %177 = getelementptr inbounds i8, ptr %7, i64 72
  %178 = getelementptr inbounds i8, ptr %7, i64 136
  br label %179

179:                                              ; preds = %.lr.ph415, %._crit_edge411
  %.0339412 = phi i64 [ 0, %.lr.ph415 ], [ %261, %._crit_edge411 ]
  call void @_ZN11alglib_implL33amdordering_amdselectpivotelementEPNS_9amdbufferElPlS2_PNS_8ae_stateE(ptr noundef %7, i64 noundef %.0339412, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %8)
  %180 = load i64, ptr %11, align 8, !tbaa !24
  %181 = icmp slt i64 %180, 0
  br i1 %181, label %._crit_edge416, label %182

182:                                              ; preds = %179
  call void @_ZN11alglib_implL24amdordering_amdcomputelpEPNS_9amdbufferElPNS_8ae_stateE(ptr noundef %7, i64 noundef %180, ptr noundef %8)
  %183 = load i64, ptr %11, align 8, !tbaa !24
  call void @_ZN11alglib_implL30amdordering_amdmasseliminationEPNS_9amdbufferElllPNS_8ae_stateE(ptr noundef %7, i64 noundef %183, i64 noundef %.0339412, i64 noundef %.0338, ptr noundef %8)
  %184 = load i64, ptr %11, align 8, !tbaa !24
  call void @_ZN11alglib_implL31amdordering_amdmovetoquasidenseEPNS_9amdbufferEPNS_5nisetElPNS_8ae_stateE(ptr noundef %7, ptr noundef nonnull %83, i64 noundef %184, ptr noundef %8)
  call void @_ZN11alglib_implL31amdordering_amddetectsupernodesEPNS_9amdbufferEPNS_8ae_stateE(ptr noundef %7, ptr noundef %8)
  br i1 %25, label %185, label %227

185:                                              ; preds = %182
  %186 = load i8, ptr %27, align 1, !tbaa !19, !range !26, !noundef !27
  %187 = trunc nuw i8 %186 to i1
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %187, ptr noundef nonnull @.str.342, ptr noundef %8)
  %188 = load i64, ptr %12, align 8, !tbaa !24
  %.not.not352392 = icmp sgt i64 %188, 0
  br i1 %.not.not352392, label %.lr.ph395, label %._crit_edge399

.preheader:                                       ; preds = %197
  %.not.not353396 = icmp sgt i64 %198, 0
  br i1 %.not.not353396, label %.lr.ph398, label %._crit_edge399

.lr.ph395:                                        ; preds = %185, %197
  %189 = phi i64 [ %198, %197 ], [ %188, %185 ]
  %.6393 = phi i64 [ %199, %197 ], [ %.0339412, %185 ]
  %190 = load ptr, ptr %174, align 8, !tbaa !23
  %191 = getelementptr inbounds i64, ptr %190, i64 %.6393
  %192 = load i64, ptr %191, align 8, !tbaa !24
  %.not = icmp eq i64 %192, %.6393
  br i1 %.not, label %197, label %193

193:                                              ; preds = %.lr.ph395
  call void @_ZN11alglib_impl8swaprowsEPNS_9ae_matrixElllPNS_8ae_stateE(ptr noundef nonnull %175, i64 noundef %.6393, i64 noundef %192, i64 noundef %2, ptr noundef %8)
  %194 = load ptr, ptr %174, align 8, !tbaa !23
  %195 = getelementptr inbounds i64, ptr %194, i64 %.6393
  %196 = load i64, ptr %195, align 8, !tbaa !24
  call void @_ZN11alglib_impl8swapcolsEPNS_9ae_matrixElllPNS_8ae_stateE(ptr noundef nonnull %175, i64 noundef %.6393, i64 noundef %196, i64 noundef %2, ptr noundef %8)
  %.pre = load i64, ptr %12, align 8, !tbaa !24
  br label %197

197:                                              ; preds = %.lr.ph395, %193
  %198 = phi i64 [ %189, %.lr.ph395 ], [ %.pre, %193 ]
  %199 = add nsw i64 %.6393, 1
  %200 = add nsw i64 %198, %.0339412
  %.not.not352 = icmp slt i64 %199, %200
  br i1 %.not.not352, label %.lr.ph395, label %.preheader, !llvm.loop !40

.lr.ph398:                                        ; preds = %.preheader, %.lr.ph398
  %.7397 = phi i64 [ %203, %.lr.ph398 ], [ 0, %.preheader ]
  %201 = add i64 %.7397, %.0339412
  %202 = sub i64 %2, %201
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %202, i64 noundef %202, i64 noundef %201, double noundef -1.000000e+00, ptr noundef nonnull %175, i64 noundef %201, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %175, i64 noundef 0, i64 noundef %201, i64 noundef 0, double noundef 1.000000e+00, ptr noundef nonnull %175, i64 noundef %201, i64 noundef %201, ptr noundef %8)
  %203 = add nuw nsw i64 %.7397, 1
  %204 = load i64, ptr %12, align 8, !tbaa !24
  %.not.not353 = icmp slt i64 %203, %204
  br i1 %.not.not353, label %.lr.ph398, label %._crit_edge399, !llvm.loop !41

._crit_edge399:                                   ; preds = %.lr.ph398, %185, %.preheader
  %205 = call noundef i64 @_ZN11alglib_impl8niscountEPKNS_5nisetEPNS_8ae_stateE(ptr noundef nonnull %76, ptr noundef %8)
  store i64 0, ptr %13, align 8, !tbaa !24
  %.not.not354401 = icmp slt i64 %.0339412, %33
  br i1 %.not.not354401, label %.lr.ph404, label %._crit_edge405

.lr.ph404:                                        ; preds = %._crit_edge399, %213
  %.8402.in = phi i64 [ %.8402, %213 ], [ %.0339412, %._crit_edge399 ]
  %.8402 = add nsw i64 %.8402.in, 1
  %206 = load ptr, ptr %176, align 8, !tbaa !23
  %207 = getelementptr inbounds ptr, ptr %206, i64 %.8402
  %208 = load ptr, ptr %207, align 8, !tbaa !28
  %209 = getelementptr inbounds double, ptr %208, i64 %.0339412
  %210 = load double, ptr %209, align 8, !tbaa !29
  %211 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %210, double noundef 0.000000e+00)
  br i1 %211, label %212, label %213

212:                                              ; preds = %.lr.ph404
  call void @_ZN11alglib_impl3incEPlPNS_8ae_stateE(ptr noundef nonnull %13, ptr noundef %8)
  br label %213

213:                                              ; preds = %.lr.ph404, %212
  %exitcond431.not = icmp eq i64 %.8402, %33
  br i1 %exitcond431.not, label %._crit_edge405.loopexit, label %.lr.ph404, !llvm.loop !42

._crit_edge405.loopexit:                          ; preds = %213
  %.pre433 = load i64, ptr %13, align 8, !tbaa !24
  br label %._crit_edge405

._crit_edge405:                                   ; preds = %._crit_edge405.loopexit, %._crit_edge399
  %214 = phi i64 [ %.pre433, %._crit_edge405.loopexit ], [ 0, %._crit_edge399 ]
  %215 = load i64, ptr %12, align 8, !tbaa !24
  %216 = add i64 %205, -1
  %217 = add i64 %216, %215
  %218 = icmp eq i64 %217, %214
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %218, ptr noundef nonnull @.str.343, ptr noundef %8)
  %219 = load i64, ptr %11, align 8, !tbaa !24
  %220 = call noundef i64 @_ZN11alglib_implL24amdordering_vtxgetapproxEPKNS_12amdvertexsetElPNS_8ae_stateE(ptr noundef nonnull %70, i64 noundef %219, ptr noundef %8)
  %221 = load i64, ptr %11, align 8, !tbaa !24
  %222 = call noundef i64 @_ZN11alglib_implL23amdordering_vtxgetexactEPKNS_12amdvertexsetElPNS_8ae_stateE(ptr noundef nonnull %70, i64 noundef %221, ptr noundef %8)
  %223 = icmp sge i64 %220, %222
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %223, ptr noundef nonnull @.str.344, ptr noundef %8)
  %224 = load i64, ptr %11, align 8, !tbaa !24
  %225 = call noundef i64 @_ZN11alglib_implL23amdordering_vtxgetexactEPKNS_12amdvertexsetElPNS_8ae_stateE(ptr noundef nonnull %70, i64 noundef %224, ptr noundef %8)
  %226 = icmp eq i64 %225, %205
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %226, ptr noundef nonnull @.str.345, ptr noundef %8)
  br label %227

227:                                              ; preds = %._crit_edge405, %182
  %228 = load i64, ptr %11, align 8, !tbaa !24
  %229 = call noundef i64 @_ZN11alglib_implL24amdordering_vtxgetapproxEPKNS_12amdvertexsetElPNS_8ae_stateE(ptr noundef nonnull %70, i64 noundef %228, ptr noundef %8)
  %230 = call noundef i64 @_ZN11alglib_impl8niscountEPKNS_5nisetEPNS_8ae_stateE(ptr noundef nonnull %76, ptr noundef %8)
  %231 = icmp sge i64 %229, %230
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %231, ptr noundef nonnull @.str.346, ptr noundef %8)
  %232 = load i64, ptr %11, align 8, !tbaa !24
  %233 = call noundef i64 @_ZN11alglib_implL23amdordering_knscountkthEPKNS_8amdknsetElPNS_8ae_stateE(ptr noundef nonnull %34, i64 noundef %232, ptr noundef %8)
  %234 = icmp sgt i64 %233, 2
  br i1 %234, label %243, label %235

235:                                              ; preds = %227
  %236 = call noundef i64 @_ZN11alglib_impl8niscountEPKNS_5nisetEPNS_8ae_stateE(ptr noundef nonnull %82, ptr noundef %8)
  %237 = icmp sgt i64 %236, 0
  br i1 %237, label %243, label %238

238:                                              ; preds = %235
  %239 = load i64, ptr %11, align 8, !tbaa !24
  %240 = call noundef i64 @_ZN11alglib_implL24amdordering_vtxgetapproxEPKNS_12amdvertexsetElPNS_8ae_stateE(ptr noundef nonnull %70, i64 noundef %239, ptr noundef %8)
  %241 = call noundef i64 @_ZN11alglib_impl8niscountEPKNS_5nisetEPNS_8ae_stateE(ptr noundef nonnull %76, ptr noundef %8)
  %242 = icmp eq i64 %240, %241
  br label %243

243:                                              ; preds = %238, %235, %227
  %244 = phi i1 [ true, %235 ], [ true, %227 ], [ %242, %238 ]
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %244, ptr noundef nonnull @.str.347, ptr noundef %8)
  %245 = load i64, ptr %11, align 8, !tbaa !24
  call void @_ZN11alglib_implL31amdordering_knsstartenumerationEPNS_8amdknsetElPNS_8ae_stateE(ptr noundef nonnull %34, i64 noundef %245, ptr noundef %8)
  %246 = call noundef zeroext i1 @_ZN11alglib_implL24amdordering_knsenumerateEPNS_8amdknsetEPlPNS_8ae_stateE(ptr noundef nonnull %34, ptr noundef nonnull %10, ptr noundef %8)
  br i1 %246, label %.lr.ph407, label %._crit_edge408

.lr.ph407:                                        ; preds = %243, %.lr.ph407
  %247 = load i64, ptr %10, align 8, !tbaa !24
  call void @_ZN11alglib_implL26amdordering_mtxclearcolumnEPNS_11amdllmatrixElPNS_8ae_stateE(ptr noundef nonnull %29, i64 noundef %247, ptr noundef %8)
  %248 = call noundef zeroext i1 @_ZN11alglib_implL24amdordering_knsenumerateEPNS_8amdknsetEPlPNS_8ae_stateE(ptr noundef nonnull %34, ptr noundef nonnull %10, ptr noundef %8)
  br i1 %248, label %.lr.ph407, label %._crit_edge408, !llvm.loop !43

._crit_edge408:                                   ; preds = %.lr.ph407, %243
  %249 = load i64, ptr %11, align 8, !tbaa !24
  call void @_ZN11alglib_implL31amdordering_knsstartenumerationEPNS_8amdknsetElPNS_8ae_stateE(ptr noundef nonnull %31, i64 noundef %249, ptr noundef %8)
  %250 = call noundef zeroext i1 @_ZN11alglib_implL24amdordering_knsenumerateEPNS_8amdknsetEPlPNS_8ae_stateE(ptr noundef nonnull %31, ptr noundef nonnull %10, ptr noundef %8)
  br i1 %250, label %.lr.ph410, label %._crit_edge411

.lr.ph410:                                        ; preds = %._crit_edge408, %.lr.ph410
  %251 = load ptr, ptr %177, align 8, !tbaa !23
  %252 = load i64, ptr %10, align 8, !tbaa !24
  %253 = getelementptr inbounds i8, ptr %251, i64 %252
  store i8 1, ptr %253, align 1, !tbaa !37
  call void @_ZN11alglib_implL23amdordering_mtxclearrowEPNS_11amdllmatrixElPNS_8ae_stateE(ptr noundef nonnull %29, i64 noundef %252, ptr noundef %8)
  %254 = call noundef zeroext i1 @_ZN11alglib_implL24amdordering_knsenumerateEPNS_8amdknsetEPlPNS_8ae_stateE(ptr noundef nonnull %31, ptr noundef nonnull %10, ptr noundef %8)
  br i1 %254, label %.lr.ph410, label %._crit_edge411, !llvm.loop !44

._crit_edge411:                                   ; preds = %.lr.ph410, %._crit_edge408
  %255 = load i64, ptr %11, align 8, !tbaa !24
  call void @_ZN11alglib_implL30amdordering_knsclearkthreclaimEPNS_8amdknsetElPNS_8ae_stateE(ptr noundef nonnull %30, i64 noundef %255, ptr noundef %8)
  %256 = load i64, ptr %11, align 8, !tbaa !24
  call void @_ZN11alglib_implL30amdordering_knsclearkthreclaimEPNS_8amdknsetElPNS_8ae_stateE(ptr noundef nonnull %34, i64 noundef %256, ptr noundef %8)
  %257 = load ptr, ptr %178, align 8, !tbaa !23
  %258 = load i64, ptr %11, align 8, !tbaa !24
  %259 = getelementptr inbounds i8, ptr %257, i64 %258
  store i8 0, ptr %259, align 1, !tbaa !37
  call void @_ZN11alglib_implL27amdordering_vtxremovevertexEPNS_12amdvertexsetElPNS_8ae_stateE(ptr noundef nonnull %70, i64 noundef %258, ptr noundef %8)
  %260 = load i64, ptr %12, align 8, !tbaa !24
  %261 = add nsw i64 %260, %.0339412
  %262 = call noundef i64 @_ZN11alglib_impl8niscountEPKNS_5nisetEPNS_8ae_stateE(ptr noundef nonnull %82, ptr noundef %8)
  %263 = sub nsw i64 %2, %262
  %264 = icmp slt i64 %261, %263
  br i1 %264, label %179, label %._crit_edge416, !llvm.loop !45

._crit_edge416:                                   ; preds = %._crit_edge411, %179, %171
  %.0339.lcssa = phi i64 [ 0, %171 ], [ %.0339412, %179 ], [ %261, %._crit_edge411 ]
  %265 = icmp sgt i64 %.0339.lcssa, 0
  %266 = or i1 %15, %265
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %266, ptr noundef nonnull @.str.348, ptr noundef %8)
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %4, i64 noundef %2, ptr noundef %8)
  call void @_ZN11alglib_impl23ivectorsetlengthatleastEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %5, i64 noundef %2, ptr noundef %8)
  br i1 %.not.not361, label %.lr.ph423, label %._crit_edge424

.lr.ph423:                                        ; preds = %._crit_edge416
  %267 = getelementptr inbounds i8, ptr %7, i64 2176
  %268 = getelementptr inbounds i8, ptr %4, i64 56
  %269 = getelementptr inbounds i8, ptr %7, i64 2240
  %270 = getelementptr inbounds i8, ptr %5, i64 56
  %xtraiter446 = and i64 %2, 1
  %271 = icmp eq i64 %33, 0
  br i1 %271, label %._crit_edge424.loopexit.unr-lcssa, label %.lr.ph423.new

.lr.ph423.new:                                    ; preds = %.lr.ph423
  %unroll_iter449 = and i64 %2, 9223372036854775806
  br label %272

272:                                              ; preds = %272, %.lr.ph423.new
  %.9421 = phi i64 [ 0, %.lr.ph423.new ], [ %294, %272 ]
  %niter450 = phi i64 [ 0, %.lr.ph423.new ], [ %niter450.next.1, %272 ]
  %273 = load ptr, ptr %267, align 8, !tbaa !23
  %274 = getelementptr inbounds i64, ptr %273, i64 %.9421
  %275 = load i64, ptr %274, align 8, !tbaa !24
  %276 = load ptr, ptr %268, align 8, !tbaa !23
  %277 = getelementptr inbounds i64, ptr %276, i64 %.9421
  store i64 %275, ptr %277, align 8, !tbaa !24
  %278 = load ptr, ptr %269, align 8, !tbaa !23
  %279 = getelementptr inbounds i64, ptr %278, i64 %.9421
  %280 = load i64, ptr %279, align 8, !tbaa !24
  %281 = load ptr, ptr %270, align 8, !tbaa !23
  %282 = getelementptr inbounds i64, ptr %281, i64 %.9421
  store i64 %280, ptr %282, align 8, !tbaa !24
  %283 = or disjoint i64 %.9421, 1
  %284 = load ptr, ptr %267, align 8, !tbaa !23
  %285 = getelementptr inbounds i64, ptr %284, i64 %283
  %286 = load i64, ptr %285, align 8, !tbaa !24
  %287 = load ptr, ptr %268, align 8, !tbaa !23
  %288 = getelementptr inbounds i64, ptr %287, i64 %283
  store i64 %286, ptr %288, align 8, !tbaa !24
  %289 = load ptr, ptr %269, align 8, !tbaa !23
  %290 = getelementptr inbounds i64, ptr %289, i64 %283
  %291 = load i64, ptr %290, align 8, !tbaa !24
  %292 = load ptr, ptr %270, align 8, !tbaa !23
  %293 = getelementptr inbounds i64, ptr %292, i64 %283
  store i64 %291, ptr %293, align 8, !tbaa !24
  %294 = add nuw nsw i64 %.9421, 2
  %niter450.next.1 = add i64 %niter450, 2
  %niter450.ncmp.1 = icmp eq i64 %niter450.next.1, %unroll_iter449
  br i1 %niter450.ncmp.1, label %._crit_edge424.loopexit.unr-lcssa, label %272, !llvm.loop !46

._crit_edge424.loopexit.unr-lcssa:                ; preds = %272, %.lr.ph423
  %.9421.unr = phi i64 [ 0, %.lr.ph423 ], [ %294, %272 ]
  %lcmp.mod448.not = icmp eq i64 %xtraiter446, 0
  br i1 %lcmp.mod448.not, label %._crit_edge424, label %._crit_edge424.loopexit.epilog-lcssa

._crit_edge424.loopexit.epilog-lcssa:             ; preds = %._crit_edge424.loopexit.unr-lcssa
  %295 = load ptr, ptr %267, align 8, !tbaa !23
  %296 = getelementptr inbounds i64, ptr %295, i64 %.9421.unr
  %297 = load i64, ptr %296, align 8, !tbaa !24
  %298 = load ptr, ptr %268, align 8, !tbaa !23
  %299 = getelementptr inbounds i64, ptr %298, i64 %.9421.unr
  store i64 %297, ptr %299, align 8, !tbaa !24
  %300 = load ptr, ptr %269, align 8, !tbaa !23
  %301 = getelementptr inbounds i64, ptr %300, i64 %.9421.unr
  %302 = load i64, ptr %301, align 8, !tbaa !24
  %303 = load ptr, ptr %270, align 8, !tbaa !23
  %304 = getelementptr inbounds i64, ptr %303, i64 %.9421.unr
  store i64 %302, ptr %304, align 8, !tbaa !24
  br label %._crit_edge424

._crit_edge424:                                   ; preds = %._crit_edge424.loopexit.epilog-lcssa, %._crit_edge424.loopexit.unr-lcssa, %._crit_edge416
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #4
  ret i64 %.0339.lcssa
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN11alglib_implL33amdordering_amdselectpivotelementEPNS_9amdbufferElPlS2_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_implL24amdordering_amdcomputelpEPNS_9amdbufferElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN11alglib_implL24amdordering_knsenumerateEPNS_8amdknsetEPlPNS_8ae_stateE(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTSN11alglib_impl9amdbufferE", !7, i64 0, !10, i64 8, !10, i64 9, !11, i64 16, !11, i64 80, !11, i64 144, !14, i64 208, !14, i64 568, !14, i64 928, !15, i64 1288, !16, i64 1496, !17, i64 1968, !11, i64 2120, !11, i64 2184, !11, i64 2248, !17, i64 2312, !17, i64 2464, !17, i64 2616, !17, i64 2768, !17, i64 2920, !17, i64 3072, !11, i64 3224, !7, i64 3288, !17, i64 3296, !17, i64 3448, !14, i64 3600, !17, i64 3960, !11, i64 4112, !11, i64 4176, !11, i64 4240, !18, i64 4304}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"bool", !8, i64 0}
!11 = !{!"_ZTSN11alglib_impl9ae_vectorE", !7, i64 0, !7, i64 8, !10, i64 16, !12, i64 24, !8, i64 56}
!12 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24}
!13 = !{!"any pointer", !8, i64 0}
!14 = !{!"_ZTSN11alglib_impl8amdknsetE", !7, i64 0, !7, i64 8, !11, i64 16, !11, i64 80, !11, i64 144, !11, i64 208, !11, i64 272, !7, i64 336, !7, i64 344, !7, i64 352}
!15 = !{!"_ZTSN11alglib_impl11amdllmatrixE", !7, i64 0, !11, i64 8, !11, i64 72, !11, i64 136, !7, i64 200}
!16 = !{!"_ZTSN11alglib_impl12amdvertexsetE", !7, i64 0, !10, i64 8, !7, i64 16, !11, i64 24, !11, i64 88, !11, i64 152, !11, i64 216, !11, i64 280, !11, i64 344, !11, i64 408}
!17 = !{!"_ZTSN11alglib_impl5nisetE", !7, i64 0, !7, i64 8, !11, i64 16, !11, i64 80, !7, i64 144}
!18 = !{!"_ZTSN11alglib_impl9ae_matrixE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !10, i64 32, !12, i64 40, !8, i64 72}
!19 = !{!6, !10, i64 9}
!20 = !{!6, !10, i64 8}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = !{!8, !8, i64 0}
!24 = !{!7, !7, i64 0}
!25 = distinct !{!25, !22}
!26 = !{i8 0, i8 2}
!27 = !{}
!28 = !{!13, !13, i64 0}
!29 = !{!30, !30, i64 0}
!30 = !{!"double", !8, i64 0}
!31 = distinct !{!31, !22}
!32 = distinct !{!32, !22}
!33 = distinct !{!33, !22}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.unroll.disable"}
!36 = !{!11, !7, i64 0}
!37 = !{!10, !10, i64 0}
!38 = distinct !{!38, !22}
!39 = distinct !{!39, !22}
!40 = distinct !{!40, !22}
!41 = distinct !{!41, !22}
!42 = distinct !{!42, !22}
!43 = distinct !{!43, !22}
!44 = distinct !{!44, !22}
!45 = distinct !{!45, !22}
!46 = distinct !{!46, !22}


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