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

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

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

@.str.8 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.247 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.248 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.249 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.250 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.251 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.252 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.253 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.254 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.255 = external hidden unnamed_addr constant [22 x i8], align 1

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

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

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

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z16sparsereallutestPbPN11alglib_impl8ae_stateE(ptr noundef %0, ptr noundef %1) #3 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %"struct.alglib_impl::ae_frame", align 8
  %6 = alloca i64, align 8
  %7 = alloca i64, align 8
  %8 = alloca double, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca double, align 8
  %13 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %14 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %15 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %16 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %17 = alloca %"struct.alglib_impl::ae_vector", align 8
  %18 = alloca %"struct.alglib_impl::ae_vector", align 8
  %19 = alloca %"struct.alglib_impl::sparsematrix", align 8
  %20 = alloca %"struct.alglib_impl::sparsematrix", align 8
  %21 = alloca i8, align 1
  %22 = alloca double, align 8
  %23 = alloca i8, align 1
  %24 = alloca i64, align 8
  %25 = alloca %"struct.alglib_impl::hqrndstate", align 8
  %26 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %5) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 80, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 80, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 80, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 80, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 368, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 368, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #4
  %27 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %27, ptr noundef %5)
  call void @llvm.memset.p0.i64(ptr align 8 %13, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %15, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %16, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %17, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %18, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %19, i8 0, i64 368, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 368, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %25, i8 0, i64 24, i1 false)
  %28 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %13, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %28, i1 noundef zeroext true)
  %29 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %14, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %29, i1 noundef zeroext true)
  %30 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %15, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %30, i1 noundef zeroext true)
  %31 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %16, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %31, i1 noundef zeroext true)
  %32 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %17, i64 noundef 0, i64 noundef 2, ptr noundef %32, i1 noundef zeroext true)
  %33 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %18, i64 noundef 0, i64 noundef 2, ptr noundef %33, i1 noundef zeroext true)
  %34 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl18_sparsematrix_initEPvPNS_8ae_stateEb(ptr noundef %19, ptr noundef %34, i1 noundef zeroext true)
  %35 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl18_sparsematrix_initEPvPNS_8ae_stateEb(ptr noundef %20, ptr noundef %35, i1 noundef zeroext true)
  %36 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl16_hqrndstate_initEPvPNS_8ae_stateEb(ptr noundef %25, ptr noundef %36, i1 noundef zeroext true)
  %37 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl14hqrndrandomizeEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %25, ptr noundef %37)
  store double 0x3D95FD7FE1796496, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %6, align 8, !tbaa !11
  br label %38

38:                                               ; preds = %545, %2
  %39 = load i64, ptr %6, align 8, !tbaa !11
  %40 = icmp sle i64 %39, 20
  br i1 %40, label %41, label %548

41:                                               ; preds = %38
  %42 = load i64, ptr %6, align 8, !tbaa !11
  %43 = load i64, ptr %6, align 8, !tbaa !11
  %44 = mul nsw i64 %42, %43
  store i64 %44, ptr %7, align 8, !tbaa !11
  br label %45

45:                                               ; preds = %541, %41
  %46 = load i64, ptr %7, align 8, !tbaa !11
  %47 = sitofp i64 %46 to double
  %48 = load i64, ptr %6, align 8, !tbaa !11
  %49 = load i64, ptr %6, align 8, !tbaa !11
  %50 = mul nsw i64 %48, %49
  %51 = sitofp i64 %50 to double
  %52 = fdiv double %47, %51
  store double %52, ptr %8, align 8, !tbaa !9
  %53 = load i64, ptr %6, align 8, !tbaa !11
  %54 = load i64, ptr %6, align 8, !tbaa !11
  %55 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %13, i64 noundef %53, i64 noundef %54, ptr noundef %55)
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %56

56:                                               ; preds = %95, %45
  %57 = load i64, ptr %9, align 8, !tbaa !11
  %58 = load i64, ptr %6, align 8, !tbaa !11
  %59 = sub nsw i64 %58, 1
  %60 = icmp sle i64 %57, %59
  br i1 %60, label %61, label %98

61:                                               ; preds = %56
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %62

62:                                               ; preds = %91, %61
  %63 = load i64, ptr %10, align 8, !tbaa !11
  %64 = load i64, ptr %6, align 8, !tbaa !11
  %65 = sub nsw i64 %64, 1
  %66 = icmp sle i64 %63, %65
  br i1 %66, label %67, label %94

67:                                               ; preds = %62
  %68 = load ptr, ptr %4, align 8, !tbaa !5
  %69 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %25, ptr noundef %68)
  %70 = load double, ptr %8, align 8, !tbaa !9
  %71 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %69, double noundef %70)
  br i1 %71, label %72, label %82

72:                                               ; preds = %67
  %73 = load ptr, ptr %4, align 8, !tbaa !5
  %74 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef %25, ptr noundef %73)
  %75 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %13, i32 0, i32 6
  %76 = load ptr, ptr %75, align 8, !tbaa !13
  %77 = load i64, ptr %9, align 8, !tbaa !11
  %78 = getelementptr inbounds ptr, ptr %76, i64 %77
  %79 = load ptr, ptr %78, align 8, !tbaa !5
  %80 = load i64, ptr %10, align 8, !tbaa !11
  %81 = getelementptr inbounds double, ptr %79, i64 %80
  store double %74, ptr %81, align 8, !tbaa !9
  br label %90

82:                                               ; preds = %67
  %83 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %13, i32 0, i32 6
  %84 = load ptr, ptr %83, align 8, !tbaa !13
  %85 = load i64, ptr %9, align 8, !tbaa !11
  %86 = getelementptr inbounds ptr, ptr %84, i64 %85
  %87 = load ptr, ptr %86, align 8, !tbaa !5
  %88 = load i64, ptr %10, align 8, !tbaa !11
  %89 = getelementptr inbounds double, ptr %87, i64 %88
  store double 0.000000e+00, ptr %89, align 8, !tbaa !9
  br label %90

90:                                               ; preds = %82, %72
  br label %91

91:                                               ; preds = %90
  %92 = load i64, ptr %10, align 8, !tbaa !11
  %93 = add nsw i64 %92, 1
  store i64 %93, ptr %10, align 8, !tbaa !11
  br label %62, !llvm.loop !14

94:                                               ; preds = %62
  br label %95

95:                                               ; preds = %94
  %96 = load i64, ptr %9, align 8, !tbaa !11
  %97 = add nsw i64 %96, 1
  store i64 %97, ptr %9, align 8, !tbaa !11
  br label %56, !llvm.loop !16

98:                                               ; preds = %56
  %99 = load i64, ptr %6, align 8, !tbaa !11
  %100 = load i64, ptr %6, align 8, !tbaa !11
  %101 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl12sparsecreateElllPNS_12sparsematrixEPNS_8ae_stateE(i64 noundef %99, i64 noundef %100, i64 noundef 0, ptr noundef %19, ptr noundef %101)
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %102

102:                                              ; preds = %129, %98
  %103 = load i64, ptr %9, align 8, !tbaa !11
  %104 = load i64, ptr %6, align 8, !tbaa !11
  %105 = sub nsw i64 %104, 1
  %106 = icmp sle i64 %103, %105
  br i1 %106, label %107, label %132

107:                                              ; preds = %102
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %108

108:                                              ; preds = %125, %107
  %109 = load i64, ptr %10, align 8, !tbaa !11
  %110 = load i64, ptr %6, align 8, !tbaa !11
  %111 = sub nsw i64 %110, 1
  %112 = icmp sle i64 %109, %111
  br i1 %112, label %113, label %128

113:                                              ; preds = %108
  %114 = load i64, ptr %9, align 8, !tbaa !11
  %115 = load i64, ptr %10, align 8, !tbaa !11
  %116 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %13, i32 0, i32 6
  %117 = load ptr, ptr %116, align 8, !tbaa !13
  %118 = load i64, ptr %9, align 8, !tbaa !11
  %119 = getelementptr inbounds ptr, ptr %117, i64 %118
  %120 = load ptr, ptr %119, align 8, !tbaa !5
  %121 = load i64, ptr %10, align 8, !tbaa !11
  %122 = getelementptr inbounds double, ptr %120, i64 %121
  %123 = load double, ptr %122, align 8, !tbaa !9
  %124 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl9sparsesetEPNS_12sparsematrixElldPNS_8ae_stateE(ptr noundef %19, i64 noundef %114, i64 noundef %115, double noundef %123, ptr noundef %124)
  br label %125

125:                                              ; preds = %113
  %126 = load i64, ptr %10, align 8, !tbaa !11
  %127 = add nsw i64 %126, 1
  store i64 %127, ptr %10, align 8, !tbaa !11
  br label %108, !llvm.loop !17

128:                                              ; preds = %108
  br label %129

129:                                              ; preds = %128
  %130 = load i64, ptr %9, align 8, !tbaa !11
  %131 = add nsw i64 %130, 1
  store i64 %131, ptr %9, align 8, !tbaa !11
  br label %102, !llvm.loop !18

132:                                              ; preds = %102
  store i64 0, ptr %24, align 8, !tbaa !11
  br label %133

133:                                              ; preds = %534, %132
  %134 = load i64, ptr %24, align 8, !tbaa !11
  %135 = icmp sle i64 %134, 2
  br i1 %135, label %136, label %537

136:                                              ; preds = %133
  %137 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl15sparsecopytocrsEPNS_12sparsematrixES1_PNS_8ae_stateE(ptr noundef %19, ptr noundef %20, ptr noundef %137)
  %138 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %17, i64 noundef 0, ptr noundef %138)
  %139 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %18, i64 noundef 0, ptr noundef %139)
  %140 = load i64, ptr %24, align 8, !tbaa !11
  %141 = load ptr, ptr %4, align 8, !tbaa !5
  %142 = call noundef zeroext i1 @_ZN11alglib_impl8sparseluEPNS_12sparsematrixElPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef %20, i64 noundef %140, ptr noundef %17, ptr noundef %18, ptr noundef %141)
  %143 = zext i1 %142 to i8
  store i8 %143, ptr %21, align 1, !tbaa !19
  %144 = load ptr, ptr %3, align 8, !tbaa !5
  %145 = load ptr, ptr %4, align 8, !tbaa !5
  %146 = call noundef zeroext i1 @_ZN11alglib_impl11sparseiscrsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %20, ptr noundef %145)
  %147 = xor i1 %146, true
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %144, i1 noundef zeroext %147, ptr noundef @.str.8, i32 noundef 15659, ptr noundef @.str.247)
  %148 = load ptr, ptr %3, align 8, !tbaa !5
  %149 = load ptr, ptr %4, align 8, !tbaa !5
  %150 = call noundef i64 @_ZN11alglib_impl14sparsegetncolsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %20, ptr noundef %149)
  %151 = load i64, ptr %6, align 8, !tbaa !11
  %152 = icmp ne i64 %150, %151
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %148, i1 noundef zeroext %152, ptr noundef @.str.8, i32 noundef 15660, ptr noundef @.str.248)
  %153 = load ptr, ptr %3, align 8, !tbaa !5
  %154 = load ptr, ptr %4, align 8, !tbaa !5
  %155 = call noundef i64 @_ZN11alglib_impl14sparsegetnrowsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef %20, ptr noundef %154)
  %156 = load i64, ptr %6, align 8, !tbaa !11
  %157 = icmp ne i64 %155, %156
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %153, i1 noundef zeroext %157, ptr noundef @.str.8, i32 noundef 15661, ptr noundef @.str.249)
  %158 = load ptr, ptr %3, align 8, !tbaa !5
  %159 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 0
  %160 = load i64, ptr %159, align 8, !tbaa !21
  %161 = load i64, ptr %6, align 8, !tbaa !11
  %162 = icmp ne i64 %160, %161
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %158, i1 noundef zeroext %162, ptr noundef @.str.8, i32 noundef 15662, ptr noundef @.str.250)
  %163 = load ptr, ptr %3, align 8, !tbaa !5
  %164 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 0
  %165 = load i64, ptr %164, align 8, !tbaa !21
  %166 = load i64, ptr %6, align 8, !tbaa !11
  %167 = icmp ne i64 %165, %166
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %163, i1 noundef zeroext %167, ptr noundef @.str.8, i32 noundef 15663, ptr noundef @.str.251)
  %168 = load ptr, ptr %3, align 8, !tbaa !5
  %169 = load i8, ptr %168, align 1, !tbaa !19, !range !24, !noundef !25
  %170 = trunc i8 %169 to i1
  br i1 %170, label %171, label %173

171:                                              ; preds = %136
  %172 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %172)
  store i32 1, ptr %26, align 4
  br label %550

173:                                              ; preds = %136
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %174

174:                                              ; preds = %212, %173
  %175 = load i64, ptr %9, align 8, !tbaa !11
  %176 = load i64, ptr %6, align 8, !tbaa !11
  %177 = sub nsw i64 %176, 1
  %178 = icmp sle i64 %175, %177
  br i1 %178, label %179, label %215

179:                                              ; preds = %174
  %180 = load ptr, ptr %3, align 8, !tbaa !5
  %181 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %182 = load ptr, ptr %181, align 8, !tbaa !13
  %183 = load i64, ptr %9, align 8, !tbaa !11
  %184 = getelementptr inbounds i64, ptr %182, i64 %183
  %185 = load i64, ptr %184, align 8, !tbaa !11
  %186 = icmp slt i64 %185, 0
  br i1 %186, label %210, label %187

187:                                              ; preds = %179
  %188 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %189 = load ptr, ptr %188, align 8, !tbaa !13
  %190 = load i64, ptr %9, align 8, !tbaa !11
  %191 = getelementptr inbounds i64, ptr %189, i64 %190
  %192 = load i64, ptr %191, align 8, !tbaa !11
  %193 = load i64, ptr %6, align 8, !tbaa !11
  %194 = icmp sge i64 %192, %193
  br i1 %194, label %210, label %195

195:                                              ; preds = %187
  %196 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %197 = load ptr, ptr %196, align 8, !tbaa !13
  %198 = load i64, ptr %9, align 8, !tbaa !11
  %199 = getelementptr inbounds i64, ptr %197, i64 %198
  %200 = load i64, ptr %199, align 8, !tbaa !11
  %201 = icmp slt i64 %200, 0
  br i1 %201, label %210, label %202

202:                                              ; preds = %195
  %203 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %204 = load ptr, ptr %203, align 8, !tbaa !13
  %205 = load i64, ptr %9, align 8, !tbaa !11
  %206 = getelementptr inbounds i64, ptr %204, i64 %205
  %207 = load i64, ptr %206, align 8, !tbaa !11
  %208 = load i64, ptr %6, align 8, !tbaa !11
  %209 = icmp sge i64 %207, %208
  br label %210

210:                                              ; preds = %202, %195, %187, %179
  %211 = phi i1 [ true, %195 ], [ true, %187 ], [ true, %179 ], [ %209, %202 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %180, i1 noundef zeroext %211, ptr noundef @.str.8, i32 noundef 15671, ptr noundef @.str.252)
  br label %212

212:                                              ; preds = %210
  %213 = load i64, ptr %9, align 8, !tbaa !11
  %214 = add nsw i64 %213, 1
  store i64 %214, ptr %9, align 8, !tbaa !11
  br label %174, !llvm.loop !26

215:                                              ; preds = %174
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %216

216:                                              ; preds = %235, %215
  %217 = load i64, ptr %9, align 8, !tbaa !11
  %218 = load i64, ptr %6, align 8, !tbaa !11
  %219 = sub nsw i64 %218, 1
  %220 = icmp sle i64 %217, %219
  br i1 %220, label %221, label %238

221:                                              ; preds = %216
  %222 = load ptr, ptr %3, align 8, !tbaa !5
  %223 = load i64, ptr %24, align 8, !tbaa !11
  %224 = icmp eq i64 %223, 1
  br i1 %224, label %225, label %233

225:                                              ; preds = %221
  %226 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %227 = load ptr, ptr %226, align 8, !tbaa !13
  %228 = load i64, ptr %9, align 8, !tbaa !11
  %229 = getelementptr inbounds i64, ptr %227, i64 %228
  %230 = load i64, ptr %229, align 8, !tbaa !11
  %231 = load i64, ptr %9, align 8, !tbaa !11
  %232 = icmp ne i64 %230, %231
  br label %233

233:                                              ; preds = %225, %221
  %234 = phi i1 [ false, %221 ], [ %232, %225 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %222, i1 noundef zeroext %234, ptr noundef @.str.8, i32 noundef 15675, ptr noundef @.str.253)
  br label %235

235:                                              ; preds = %233
  %236 = load i64, ptr %9, align 8, !tbaa !11
  %237 = add nsw i64 %236, 1
  store i64 %237, ptr %9, align 8, !tbaa !11
  br label %216, !llvm.loop !27

238:                                              ; preds = %216
  %239 = load i64, ptr %6, align 8, !tbaa !11
  %240 = load i64, ptr %6, align 8, !tbaa !11
  %241 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %14, i64 noundef %239, i64 noundef %240, ptr noundef %241)
  %242 = load i64, ptr %6, align 8, !tbaa !11
  %243 = load i64, ptr %6, align 8, !tbaa !11
  %244 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %15, i64 noundef %242, i64 noundef %243, ptr noundef %244)
  store i8 0, ptr %23, align 1, !tbaa !19
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %245

245:                                              ; preds = %352, %238
  %246 = load i64, ptr %9, align 8, !tbaa !11
  %247 = load i64, ptr %6, align 8, !tbaa !11
  %248 = sub nsw i64 %247, 1
  %249 = icmp sle i64 %246, %248
  br i1 %249, label %250, label %355

250:                                              ; preds = %245
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %251

251:                                              ; preds = %268, %250
  %252 = load i64, ptr %10, align 8, !tbaa !11
  %253 = load i64, ptr %9, align 8, !tbaa !11
  %254 = sub nsw i64 %253, 1
  %255 = icmp sle i64 %252, %254
  br i1 %255, label %256, label %271

256:                                              ; preds = %251
  %257 = load i64, ptr %9, align 8, !tbaa !11
  %258 = load i64, ptr %10, align 8, !tbaa !11
  %259 = load ptr, ptr %4, align 8, !tbaa !5
  %260 = call noundef double @_ZN11alglib_impl9sparsegetEPNS_12sparsematrixEllPNS_8ae_stateE(ptr noundef %20, i64 noundef %257, i64 noundef %258, ptr noundef %259)
  %261 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %14, i32 0, i32 6
  %262 = load ptr, ptr %261, align 8, !tbaa !13
  %263 = load i64, ptr %9, align 8, !tbaa !11
  %264 = getelementptr inbounds ptr, ptr %262, i64 %263
  %265 = load ptr, ptr %264, align 8, !tbaa !5
  %266 = load i64, ptr %10, align 8, !tbaa !11
  %267 = getelementptr inbounds double, ptr %265, i64 %266
  store double %260, ptr %267, align 8, !tbaa !9
  br label %268

268:                                              ; preds = %256
  %269 = load i64, ptr %10, align 8, !tbaa !11
  %270 = add nsw i64 %269, 1
  store i64 %270, ptr %10, align 8, !tbaa !11
  br label %251, !llvm.loop !28

271:                                              ; preds = %251
  %272 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %14, i32 0, i32 6
  %273 = load ptr, ptr %272, align 8, !tbaa !13
  %274 = load i64, ptr %9, align 8, !tbaa !11
  %275 = getelementptr inbounds ptr, ptr %273, i64 %274
  %276 = load ptr, ptr %275, align 8, !tbaa !5
  %277 = load i64, ptr %9, align 8, !tbaa !11
  %278 = getelementptr inbounds double, ptr %276, i64 %277
  store double 1.000000e+00, ptr %278, align 8, !tbaa !9
  %279 = load i64, ptr %9, align 8, !tbaa !11
  %280 = add nsw i64 %279, 1
  store i64 %280, ptr %10, align 8, !tbaa !11
  br label %281

281:                                              ; preds = %294, %271
  %282 = load i64, ptr %10, align 8, !tbaa !11
  %283 = load i64, ptr %6, align 8, !tbaa !11
  %284 = sub nsw i64 %283, 1
  %285 = icmp sle i64 %282, %284
  br i1 %285, label %286, label %297

286:                                              ; preds = %281
  %287 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %14, i32 0, i32 6
  %288 = load ptr, ptr %287, align 8, !tbaa !13
  %289 = load i64, ptr %9, align 8, !tbaa !11
  %290 = getelementptr inbounds ptr, ptr %288, i64 %289
  %291 = load ptr, ptr %290, align 8, !tbaa !5
  %292 = load i64, ptr %10, align 8, !tbaa !11
  %293 = getelementptr inbounds double, ptr %291, i64 %292
  store double 0.000000e+00, ptr %293, align 8, !tbaa !9
  br label %294

294:                                              ; preds = %286
  %295 = load i64, ptr %10, align 8, !tbaa !11
  %296 = add nsw i64 %295, 1
  store i64 %296, ptr %10, align 8, !tbaa !11
  br label %281, !llvm.loop !29

297:                                              ; preds = %281
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %298

298:                                              ; preds = %311, %297
  %299 = load i64, ptr %10, align 8, !tbaa !11
  %300 = load i64, ptr %9, align 8, !tbaa !11
  %301 = sub nsw i64 %300, 1
  %302 = icmp sle i64 %299, %301
  br i1 %302, label %303, label %314

303:                                              ; preds = %298
  %304 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %15, i32 0, i32 6
  %305 = load ptr, ptr %304, align 8, !tbaa !13
  %306 = load i64, ptr %9, align 8, !tbaa !11
  %307 = getelementptr inbounds ptr, ptr %305, i64 %306
  %308 = load ptr, ptr %307, align 8, !tbaa !5
  %309 = load i64, ptr %10, align 8, !tbaa !11
  %310 = getelementptr inbounds double, ptr %308, i64 %309
  store double 0.000000e+00, ptr %310, align 8, !tbaa !9
  br label %311

311:                                              ; preds = %303
  %312 = load i64, ptr %10, align 8, !tbaa !11
  %313 = add nsw i64 %312, 1
  store i64 %313, ptr %10, align 8, !tbaa !11
  br label %298, !llvm.loop !30

314:                                              ; preds = %298
  %315 = load i64, ptr %9, align 8, !tbaa !11
  store i64 %315, ptr %10, align 8, !tbaa !11
  br label %316

316:                                              ; preds = %333, %314
  %317 = load i64, ptr %10, align 8, !tbaa !11
  %318 = load i64, ptr %6, align 8, !tbaa !11
  %319 = sub nsw i64 %318, 1
  %320 = icmp sle i64 %317, %319
  br i1 %320, label %321, label %336

321:                                              ; preds = %316
  %322 = load i64, ptr %9, align 8, !tbaa !11
  %323 = load i64, ptr %10, align 8, !tbaa !11
  %324 = load ptr, ptr %4, align 8, !tbaa !5
  %325 = call noundef double @_ZN11alglib_impl9sparsegetEPNS_12sparsematrixEllPNS_8ae_stateE(ptr noundef %20, i64 noundef %322, i64 noundef %323, ptr noundef %324)
  %326 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %15, i32 0, i32 6
  %327 = load ptr, ptr %326, align 8, !tbaa !13
  %328 = load i64, ptr %9, align 8, !tbaa !11
  %329 = getelementptr inbounds ptr, ptr %327, i64 %328
  %330 = load ptr, ptr %329, align 8, !tbaa !5
  %331 = load i64, ptr %10, align 8, !tbaa !11
  %332 = getelementptr inbounds double, ptr %330, i64 %331
  store double %325, ptr %332, align 8, !tbaa !9
  br label %333

333:                                              ; preds = %321
  %334 = load i64, ptr %10, align 8, !tbaa !11
  %335 = add nsw i64 %334, 1
  store i64 %335, ptr %10, align 8, !tbaa !11
  br label %316, !llvm.loop !31

336:                                              ; preds = %316
  %337 = load i8, ptr %23, align 1, !tbaa !19, !range !24, !noundef !25
  %338 = trunc i8 %337 to i1
  br i1 %338, label %349, label %339

339:                                              ; preds = %336
  %340 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %15, i32 0, i32 6
  %341 = load ptr, ptr %340, align 8, !tbaa !13
  %342 = load i64, ptr %9, align 8, !tbaa !11
  %343 = getelementptr inbounds ptr, ptr %341, i64 %342
  %344 = load ptr, ptr %343, align 8, !tbaa !5
  %345 = load i64, ptr %9, align 8, !tbaa !11
  %346 = getelementptr inbounds double, ptr %344, i64 %345
  %347 = load double, ptr %346, align 8, !tbaa !9
  %348 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %347, double noundef 0.000000e+00)
  br label %349

349:                                              ; preds = %339, %336
  %350 = phi i1 [ true, %336 ], [ %348, %339 ]
  %351 = zext i1 %350 to i8
  store i8 %351, ptr %23, align 1, !tbaa !19
  br label %352

352:                                              ; preds = %349
  %353 = load i64, ptr %9, align 8, !tbaa !11
  %354 = add nsw i64 %353, 1
  store i64 %354, ptr %9, align 8, !tbaa !11
  br label %245, !llvm.loop !32

355:                                              ; preds = %245
  %356 = load i64, ptr %6, align 8, !tbaa !11
  %357 = load i64, ptr %6, align 8, !tbaa !11
  %358 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %16, i64 noundef %356, i64 noundef %357, ptr noundef %358)
  %359 = load i64, ptr %6, align 8, !tbaa !11
  %360 = load i64, ptr %6, align 8, !tbaa !11
  %361 = load i64, ptr %6, align 8, !tbaa !11
  %362 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %359, i64 noundef %360, i64 noundef %361, double noundef 1.000000e+00, ptr noundef %14, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %15, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %16, i64 noundef 0, i64 noundef 0, ptr noundef %362)
  %363 = load i64, ptr %6, align 8, !tbaa !11
  %364 = sub nsw i64 %363, 1
  store i64 %364, ptr %9, align 8, !tbaa !11
  br label %365

365:                                              ; preds = %415, %355
  %366 = load i64, ptr %9, align 8, !tbaa !11
  %367 = icmp sge i64 %366, 0
  br i1 %367, label %368, label %418

368:                                              ; preds = %365
  %369 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %17, i32 0, i32 4
  %370 = load ptr, ptr %369, align 8, !tbaa !13
  %371 = load i64, ptr %9, align 8, !tbaa !11
  %372 = getelementptr inbounds i64, ptr %370, i64 %371
  %373 = load i64, ptr %372, align 8, !tbaa !11
  store i64 %373, ptr %10, align 8, !tbaa !11
  store i64 0, ptr %11, align 8, !tbaa !11
  br label %374

374:                                              ; preds = %411, %368
  %375 = load i64, ptr %11, align 8, !tbaa !11
  %376 = load i64, ptr %6, align 8, !tbaa !11
  %377 = sub nsw i64 %376, 1
  %378 = icmp sle i64 %375, %377
  br i1 %378, label %379, label %414

379:                                              ; preds = %374
  %380 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %16, i32 0, i32 6
  %381 = load ptr, ptr %380, align 8, !tbaa !13
  %382 = load i64, ptr %9, align 8, !tbaa !11
  %383 = getelementptr inbounds ptr, ptr %381, i64 %382
  %384 = load ptr, ptr %383, align 8, !tbaa !5
  %385 = load i64, ptr %11, align 8, !tbaa !11
  %386 = getelementptr inbounds double, ptr %384, i64 %385
  %387 = load double, ptr %386, align 8, !tbaa !9
  store double %387, ptr %12, align 8, !tbaa !9
  %388 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %16, i32 0, i32 6
  %389 = load ptr, ptr %388, align 8, !tbaa !13
  %390 = load i64, ptr %10, align 8, !tbaa !11
  %391 = getelementptr inbounds ptr, ptr %389, i64 %390
  %392 = load ptr, ptr %391, align 8, !tbaa !5
  %393 = load i64, ptr %11, align 8, !tbaa !11
  %394 = getelementptr inbounds double, ptr %392, i64 %393
  %395 = load double, ptr %394, align 8, !tbaa !9
  %396 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %16, i32 0, i32 6
  %397 = load ptr, ptr %396, align 8, !tbaa !13
  %398 = load i64, ptr %9, align 8, !tbaa !11
  %399 = getelementptr inbounds ptr, ptr %397, i64 %398
  %400 = load ptr, ptr %399, align 8, !tbaa !5
  %401 = load i64, ptr %11, align 8, !tbaa !11
  %402 = getelementptr inbounds double, ptr %400, i64 %401
  store double %395, ptr %402, align 8, !tbaa !9
  %403 = load double, ptr %12, align 8, !tbaa !9
  %404 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %16, i32 0, i32 6
  %405 = load ptr, ptr %404, align 8, !tbaa !13
  %406 = load i64, ptr %10, align 8, !tbaa !11
  %407 = getelementptr inbounds ptr, ptr %405, i64 %406
  %408 = load ptr, ptr %407, align 8, !tbaa !5
  %409 = load i64, ptr %11, align 8, !tbaa !11
  %410 = getelementptr inbounds double, ptr %408, i64 %409
  store double %403, ptr %410, align 8, !tbaa !9
  br label %411

411:                                              ; preds = %379
  %412 = load i64, ptr %11, align 8, !tbaa !11
  %413 = add nsw i64 %412, 1
  store i64 %413, ptr %11, align 8, !tbaa !11
  br label %374, !llvm.loop !33

414:                                              ; preds = %374
  br label %415

415:                                              ; preds = %414
  %416 = load i64, ptr %9, align 8, !tbaa !11
  %417 = add nsw i64 %416, -1
  store i64 %417, ptr %9, align 8, !tbaa !11
  br label %365, !llvm.loop !34

418:                                              ; preds = %365
  %419 = load i64, ptr %6, align 8, !tbaa !11
  %420 = sub nsw i64 %419, 1
  store i64 %420, ptr %9, align 8, !tbaa !11
  br label %421

421:                                              ; preds = %471, %418
  %422 = load i64, ptr %9, align 8, !tbaa !11
  %423 = icmp sge i64 %422, 0
  br i1 %423, label %424, label %474

424:                                              ; preds = %421
  %425 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %18, i32 0, i32 4
  %426 = load ptr, ptr %425, align 8, !tbaa !13
  %427 = load i64, ptr %9, align 8, !tbaa !11
  %428 = getelementptr inbounds i64, ptr %426, i64 %427
  %429 = load i64, ptr %428, align 8, !tbaa !11
  store i64 %429, ptr %10, align 8, !tbaa !11
  store i64 0, ptr %11, align 8, !tbaa !11
  br label %430

430:                                              ; preds = %467, %424
  %431 = load i64, ptr %11, align 8, !tbaa !11
  %432 = load i64, ptr %6, align 8, !tbaa !11
  %433 = sub nsw i64 %432, 1
  %434 = icmp sle i64 %431, %433
  br i1 %434, label %435, label %470

435:                                              ; preds = %430
  %436 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %16, i32 0, i32 6
  %437 = load ptr, ptr %436, align 8, !tbaa !13
  %438 = load i64, ptr %11, align 8, !tbaa !11
  %439 = getelementptr inbounds ptr, ptr %437, i64 %438
  %440 = load ptr, ptr %439, align 8, !tbaa !5
  %441 = load i64, ptr %9, align 8, !tbaa !11
  %442 = getelementptr inbounds double, ptr %440, i64 %441
  %443 = load double, ptr %442, align 8, !tbaa !9
  store double %443, ptr %12, align 8, !tbaa !9
  %444 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %16, i32 0, i32 6
  %445 = load ptr, ptr %444, align 8, !tbaa !13
  %446 = load i64, ptr %11, align 8, !tbaa !11
  %447 = getelementptr inbounds ptr, ptr %445, i64 %446
  %448 = load ptr, ptr %447, align 8, !tbaa !5
  %449 = load i64, ptr %10, align 8, !tbaa !11
  %450 = getelementptr inbounds double, ptr %448, i64 %449
  %451 = load double, ptr %450, align 8, !tbaa !9
  %452 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %16, i32 0, i32 6
  %453 = load ptr, ptr %452, align 8, !tbaa !13
  %454 = load i64, ptr %11, align 8, !tbaa !11
  %455 = getelementptr inbounds ptr, ptr %453, i64 %454
  %456 = load ptr, ptr %455, align 8, !tbaa !5
  %457 = load i64, ptr %9, align 8, !tbaa !11
  %458 = getelementptr inbounds double, ptr %456, i64 %457
  store double %451, ptr %458, align 8, !tbaa !9
  %459 = load double, ptr %12, align 8, !tbaa !9
  %460 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %16, i32 0, i32 6
  %461 = load ptr, ptr %460, align 8, !tbaa !13
  %462 = load i64, ptr %11, align 8, !tbaa !11
  %463 = getelementptr inbounds ptr, ptr %461, i64 %462
  %464 = load ptr, ptr %463, align 8, !tbaa !5
  %465 = load i64, ptr %10, align 8, !tbaa !11
  %466 = getelementptr inbounds double, ptr %464, i64 %465
  store double %459, ptr %466, align 8, !tbaa !9
  br label %467

467:                                              ; preds = %435
  %468 = load i64, ptr %11, align 8, !tbaa !11
  %469 = add nsw i64 %468, 1
  store i64 %469, ptr %11, align 8, !tbaa !11
  br label %430, !llvm.loop !35

470:                                              ; preds = %430
  br label %471

471:                                              ; preds = %470
  %472 = load i64, ptr %9, align 8, !tbaa !11
  %473 = add nsw i64 %472, -1
  store i64 %473, ptr %9, align 8, !tbaa !11
  br label %421, !llvm.loop !36

474:                                              ; preds = %421
  store i64 0, ptr %9, align 8, !tbaa !11
  br label %475

475:                                              ; preds = %513, %474
  %476 = load i64, ptr %9, align 8, !tbaa !11
  %477 = load i64, ptr %6, align 8, !tbaa !11
  %478 = sub nsw i64 %477, 1
  %479 = icmp sle i64 %476, %478
  br i1 %479, label %480, label %516

480:                                              ; preds = %475
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %481

481:                                              ; preds = %509, %480
  %482 = load i64, ptr %10, align 8, !tbaa !11
  %483 = load i64, ptr %6, align 8, !tbaa !11
  %484 = sub nsw i64 %483, 1
  %485 = icmp sle i64 %482, %484
  br i1 %485, label %486, label %512

486:                                              ; preds = %481
  %487 = load ptr, ptr %3, align 8, !tbaa !5
  %488 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %16, i32 0, i32 6
  %489 = load ptr, ptr %488, align 8, !tbaa !13
  %490 = load i64, ptr %9, align 8, !tbaa !11
  %491 = getelementptr inbounds ptr, ptr %489, i64 %490
  %492 = load ptr, ptr %491, align 8, !tbaa !5
  %493 = load i64, ptr %10, align 8, !tbaa !11
  %494 = getelementptr inbounds double, ptr %492, i64 %493
  %495 = load double, ptr %494, align 8, !tbaa !9
  %496 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %13, i32 0, i32 6
  %497 = load ptr, ptr %496, align 8, !tbaa !13
  %498 = load i64, ptr %9, align 8, !tbaa !11
  %499 = getelementptr inbounds ptr, ptr %497, i64 %498
  %500 = load ptr, ptr %499, align 8, !tbaa !5
  %501 = load i64, ptr %10, align 8, !tbaa !11
  %502 = getelementptr inbounds double, ptr %500, i64 %501
  %503 = load double, ptr %502, align 8, !tbaa !9
  %504 = fsub double %495, %503
  %505 = load ptr, ptr %4, align 8, !tbaa !5
  %506 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %504, ptr noundef %505)
  %507 = load double, ptr %22, align 8, !tbaa !9
  %508 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %506, double noundef %507)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %487, i1 noundef zeroext %508, ptr noundef @.str.8, i32 noundef 15727, ptr noundef @.str.254)
  br label %509

509:                                              ; preds = %486
  %510 = load i64, ptr %10, align 8, !tbaa !11
  %511 = add nsw i64 %510, 1
  store i64 %511, ptr %10, align 8, !tbaa !11
  br label %481, !llvm.loop !37

512:                                              ; preds = %481
  br label %513

513:                                              ; preds = %512
  %514 = load i64, ptr %9, align 8, !tbaa !11
  %515 = add nsw i64 %514, 1
  store i64 %515, ptr %9, align 8, !tbaa !11
  br label %475, !llvm.loop !38

516:                                              ; preds = %475
  %517 = load ptr, ptr %3, align 8, !tbaa !5
  %518 = load i8, ptr %21, align 1, !tbaa !19, !range !24, !noundef !25
  %519 = trunc i8 %518 to i1
  br i1 %519, label %520, label %523

520:                                              ; preds = %516
  %521 = load i8, ptr %23, align 1, !tbaa !19, !range !24, !noundef !25
  %522 = trunc i8 %521 to i1
  br i1 %522, label %532, label %523

523:                                              ; preds = %520, %516
  %524 = load i8, ptr %23, align 1, !tbaa !19, !range !24, !noundef !25
  %525 = trunc i8 %524 to i1
  br i1 %525, label %530, label %526

526:                                              ; preds = %523
  %527 = load i8, ptr %21, align 1, !tbaa !19, !range !24, !noundef !25
  %528 = trunc i8 %527 to i1
  %529 = xor i1 %528, true
  br label %530

530:                                              ; preds = %526, %523
  %531 = phi i1 [ false, %523 ], [ %529, %526 ]
  br label %532

532:                                              ; preds = %530, %520
  %533 = phi i1 [ true, %520 ], [ %531, %530 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %517, i1 noundef zeroext %533, ptr noundef @.str.8, i32 noundef 15730, ptr noundef @.str.255)
  br label %534

534:                                              ; preds = %532
  %535 = load i64, ptr %24, align 8, !tbaa !11
  %536 = add nsw i64 %535, 1
  store i64 %536, ptr %24, align 8, !tbaa !11
  br label %133, !llvm.loop !39

537:                                              ; preds = %133
  %538 = load i64, ptr %7, align 8, !tbaa !11
  %539 = icmp eq i64 %538, 0
  br i1 %539, label %540, label %541

540:                                              ; preds = %537
  br label %544

541:                                              ; preds = %537
  %542 = load i64, ptr %7, align 8, !tbaa !11
  %543 = sdiv i64 %542, 2
  store i64 %543, ptr %7, align 8, !tbaa !11
  br label %45, !llvm.loop !40

544:                                              ; preds = %540
  br label %545

545:                                              ; preds = %544
  %546 = load i64, ptr %6, align 8, !tbaa !11
  %547 = add nsw i64 %546, 1
  store i64 %547, ptr %6, align 8, !tbaa !11
  br label %38, !llvm.loop !41

548:                                              ; preds = %38
  %549 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %549)
  store i32 0, ptr %26, align 4
  br label %550

550:                                              ; preds = %548, %171
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 368, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 368, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %5) #4
  %551 = load i32, ptr %26, align 4
  switch i32 %551, label %553 [
    i32 0, label %552
    i32 1, label %552
  ]

552:                                              ; preds = %550, %550
  ret void

553:                                              ; preds = %550
  unreachable
}

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { 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 #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 = !{!"double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15}
!19 = !{!20, !20, i64 0}
!20 = !{!"bool", !7, i64 0}
!21 = !{!22, !12, i64 0}
!22 = !{!"_ZTSN11alglib_impl9ae_vectorE", !12, i64 0, !12, i64 8, !20, i64 16, !23, i64 24, !7, i64 56}
!23 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!24 = !{i8 0, i8 2}
!25 = !{}
!26 = distinct !{!26, !15}
!27 = distinct !{!27, !15}
!28 = distinct !{!28, !15}
!29 = distinct !{!29, !15}
!30 = distinct !{!30, !15}
!31 = distinct !{!31, !15}
!32 = distinct !{!32, !15}
!33 = distinct !{!33, !15}
!34 = distinct !{!34, !15}
!35 = distinct !{!35, !15}
!36 = distinct !{!36, !15}
!37 = distinct !{!37, !15}
!38 = distinct !{!38, !15}
!39 = distinct !{!39, !15}
!40 = distinct !{!40, !15}
!41 = distinct !{!41, !15}


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

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

@.str.8 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.247 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.248 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.249 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.250 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.251 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.252 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.253 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.254 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.255 = external hidden unnamed_addr constant [22 x i8], align 1

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

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

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

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef i64 @_ZN11alglib_impl14sparsegetnrowsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #1

declare noundef i64 @_ZN11alglib_impl14sparsegetncolsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef, ptr noundef) local_unnamed_addr #1

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

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

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

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

19:                                               ; preds = %2, %257
  %indvar = phi i64 [ 0, %2 ], [ %indvar.next, %257 ]
  %.0188258 = phi i64 [ 1, %2 ], [ %258, %257 ]
  %20 = mul nuw nsw i64 %.0188258, %.0188258
  %21 = uitofp nneg i64 %20 to double
  %22 = add nsw i64 %.0188258, -1
  %xtraiter279 = and i64 %.0188258, 1
  %23 = icmp eq i64 %indvar, 0
  %unroll_iter282 = and i64 %.0188258, 9223372036854775806
  %lcmp.mod281.not = icmp eq i64 %xtraiter279, 0
  %xtraiter286 = and i64 %.0188258, 1
  %24 = icmp eq i64 %indvar, 0
  %unroll_iter290 = and i64 %.0188258, 9223372036854775806
  %lcmp.mod288.not = icmp eq i64 %xtraiter286, 0
  br label %25

25:                                               ; preds = %255, %19
  %.0189 = phi i64 [ %20, %19 ], [ %256, %255 ]
  %26 = sitofp i64 %.0189 to double
  %27 = fdiv double %26, %21
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %4, i64 noundef %.0188258, i64 noundef %.0188258, ptr noundef %1)
  br label %.preheader228

.preheader228:                                    ; preds = %25, %39
  %.0193231 = phi i64 [ 0, %25 ], [ %40, %39 ]
  br label %28

28:                                               ; preds = %.preheader228, %33
  %.0191230 = phi i64 [ 0, %.preheader228 ], [ %38, %33 ]
  %29 = call noundef double @_ZN11alglib_impl13hqrnduniformrEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef %1)
  %30 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %29, double noundef %27)
  br i1 %30, label %31, label %33

31:                                               ; preds = %28
  %32 = call noundef double @_ZN11alglib_impl11hqrndnormalEPNS_10hqrndstateEPNS_8ae_stateE(ptr noundef nonnull %12, ptr noundef %1)
  br label %33

33:                                               ; preds = %28, %31
  %.sink = phi double [ %32, %31 ], [ 0.000000e+00, %28 ]
  %34 = load ptr, ptr %13, align 8, !tbaa !5
  %35 = getelementptr inbounds ptr, ptr %34, i64 %.0193231
  %36 = load ptr, ptr %35, align 8, !tbaa !8
  %37 = getelementptr inbounds double, ptr %36, i64 %.0191230
  store double %.sink, ptr %37, align 8, !tbaa !10
  %38 = add nuw nsw i64 %.0191230, 1
  %exitcond.not = icmp eq i64 %38, %.0188258
  br i1 %exitcond.not, label %39, label %28, !llvm.loop !12

39:                                               ; preds = %33
  %40 = add nuw nsw i64 %.0193231, 1
  %exitcond259.not = icmp eq i64 %40, %.0188258
  br i1 %exitcond259.not, label %41, label %.preheader228, !llvm.loop !14

41:                                               ; preds = %39
  call void @_ZN11alglib_impl12sparsecreateElllPNS_12sparsematrixEPNS_8ae_stateE(i64 noundef %.0188258, i64 noundef %.0188258, i64 noundef 0, ptr noundef nonnull %10, ptr noundef %1)
  br label %.preheader227

.preheader227:                                    ; preds = %41, %49
  %.1194233 = phi i64 [ 0, %41 ], [ %50, %49 ]
  br label %42

42:                                               ; preds = %.preheader227, %42
  %.1192232 = phi i64 [ 0, %.preheader227 ], [ %48, %42 ]
  %43 = load ptr, ptr %13, align 8, !tbaa !5
  %44 = getelementptr inbounds ptr, ptr %43, i64 %.1194233
  %45 = load ptr, ptr %44, align 8, !tbaa !8
  %46 = getelementptr inbounds double, ptr %45, i64 %.1192232
  %47 = load double, ptr %46, align 8, !tbaa !10
  call void @_ZN11alglib_impl9sparsesetEPNS_12sparsematrixElldPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %.1194233, i64 noundef %.1192232, double noundef %47, ptr noundef %1)
  %48 = add nuw nsw i64 %.1192232, 1
  %exitcond260.not = icmp eq i64 %48, %.0188258
  br i1 %exitcond260.not, label %49, label %42, !llvm.loop !15

49:                                               ; preds = %42
  %50 = add nuw nsw i64 %.1194233, 1
  %exitcond261.not = icmp eq i64 %50, %.0188258
  br i1 %exitcond261.not, label %.preheader229, label %.preheader227, !llvm.loop !16

.preheader229:                                    ; preds = %49, %249
  %.0257 = phi i64 [ %252, %249 ], [ 0, %49 ]
  call void @_ZN11alglib_impl15sparsecopytocrsEPNS_12sparsematrixES1_PNS_8ae_stateE(ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef 0, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef 0, ptr noundef %1)
  %51 = call noundef zeroext i1 @_ZN11alglib_impl8sparseluEPNS_12sparsematrixElPNS_9ae_vectorES3_PNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.0257, ptr noundef nonnull %8, ptr noundef nonnull %9, ptr noundef %1)
  %52 = call noundef zeroext i1 @_ZN11alglib_impl11sparseiscrsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef nonnull %11, ptr noundef %1)
  %53 = xor i1 %52, true
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %0, i1 noundef zeroext %53, ptr noundef nonnull @.str.8, i32 noundef 15659, ptr noundef nonnull @.str.247)
  %54 = call noundef i64 @_ZN11alglib_impl14sparsegetncolsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef nonnull %11, ptr noundef %1)
  %55 = icmp ne i64 %54, %.0188258
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %0, i1 noundef zeroext %55, ptr noundef nonnull @.str.8, i32 noundef 15660, ptr noundef nonnull @.str.248)
  %56 = call noundef i64 @_ZN11alglib_impl14sparsegetnrowsEPNS_12sparsematrixEPNS_8ae_stateE(ptr noundef nonnull %11, ptr noundef %1)
  %57 = icmp ne i64 %56, %.0188258
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %0, i1 noundef zeroext %57, ptr noundef nonnull @.str.8, i32 noundef 15661, ptr noundef nonnull @.str.249)
  %58 = load i64, ptr %8, align 8, !tbaa !17
  %59 = icmp ne i64 %58, %.0188258
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %0, i1 noundef zeroext %59, ptr noundef nonnull @.str.8, i32 noundef 15662, ptr noundef nonnull @.str.250)
  %60 = load i64, ptr %9, align 8, !tbaa !17
  %61 = icmp ne i64 %60, %.0188258
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef %0, i1 noundef zeroext %61, ptr noundef nonnull @.str.8, i32 noundef 15663, ptr noundef nonnull @.str.251)
  %62 = load i8, ptr %0, align 1, !tbaa !22, !range !23, !noundef !24
  %63 = trunc nuw i8 %62 to i1
  br i1 %63, label %.loopexit, label %.preheader226

.preheader225:                                    ; preds = %72
  %64 = icmp eq i64 %.0257, 1
  br label %75

.preheader226:                                    ; preds = %.preheader229, %72
  %.2195234 = phi i64 [ %74, %72 ], [ 0, %.preheader229 ]
  %65 = load ptr, ptr %14, align 8, !tbaa !5
  %66 = getelementptr inbounds i64, ptr %65, i64 %.2195234
  %67 = load i64, ptr %66, align 8, !tbaa !25
  %or.cond = icmp ult i64 %67, %.0188258
  br i1 %or.cond, label %68, label %72

68:                                               ; preds = %.preheader226
  %69 = load ptr, ptr %15, align 8, !tbaa !5
  %70 = getelementptr inbounds i64, ptr %69, i64 %.2195234
  %71 = load i64, ptr %70, align 8, !tbaa !25
  %spec.select = icmp uge i64 %71, %.0188258
  br label %72

72:                                               ; preds = %68, %.preheader226
  %73 = phi i1 [ true, %.preheader226 ], [ %spec.select, %68 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %0, i1 noundef zeroext %73, ptr noundef nonnull @.str.8, i32 noundef 15671, ptr noundef nonnull @.str.252)
  %74 = add nuw nsw i64 %.2195234, 1
  %exitcond262.not = icmp eq i64 %74, %.0188258
  br i1 %exitcond262.not, label %.preheader225, label %.preheader226, !llvm.loop !26

75:                                               ; preds = %.preheader225, %81
  %.3196235 = phi i64 [ 0, %.preheader225 ], [ %83, %81 ]
  br i1 %64, label %76, label %81

76:                                               ; preds = %75
  %77 = load ptr, ptr %15, align 8, !tbaa !5
  %78 = getelementptr inbounds i64, ptr %77, i64 %.3196235
  %79 = load i64, ptr %78, align 8, !tbaa !25
  %80 = icmp ne i64 %79, %.3196235
  br label %81

81:                                               ; preds = %76, %75
  %82 = phi i1 [ false, %75 ], [ %80, %76 ]
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %0, i1 noundef zeroext %82, ptr noundef nonnull @.str.8, i32 noundef 15675, ptr noundef nonnull @.str.253)
  %83 = add nuw nsw i64 %.3196235, 1
  %exitcond263.not = icmp eq i64 %83, %.0188258
  br i1 %exitcond263.not, label %84, label %75, !llvm.loop !27

84:                                               ; preds = %81
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %5, i64 noundef %.0188258, i64 noundef %.0188258, ptr noundef %1)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %6, i64 noundef %.0188258, i64 noundef %.0188258, ptr noundef %1)
  br label %.preheader222

.preheader222:                                    ; preds = %84, %140
  %.0187250 = phi i1 [ false, %84 ], [ %141, %140 ]
  %.4197249 = phi i64 [ 0, %84 ], [ %95, %140 ]
  %.not.not213236.not = icmp eq i64 %.4197249, 0
  br i1 %.not.not213236.not, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader222, %.lr.ph
  %.2237 = phi i64 [ %90, %.lr.ph ], [ 0, %.preheader222 ]
  %85 = call noundef double @_ZN11alglib_impl9sparsegetEPNS_12sparsematrixEllPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.4197249, i64 noundef %.2237, ptr noundef %1)
  %86 = load ptr, ptr %16, align 8, !tbaa !5
  %87 = getelementptr inbounds ptr, ptr %86, i64 %.4197249
  %88 = load ptr, ptr %87, align 8, !tbaa !8
  %89 = getelementptr inbounds double, ptr %88, i64 %.2237
  store double %85, ptr %89, align 8, !tbaa !10
  %90 = add nuw nsw i64 %.2237, 1
  %exitcond264.not = icmp eq i64 %90, %.4197249
  br i1 %exitcond264.not, label %._crit_edge, label %.lr.ph, !llvm.loop !28

._crit_edge:                                      ; preds = %.lr.ph, %.preheader222
  %91 = load ptr, ptr %16, align 8, !tbaa !5
  %92 = getelementptr inbounds ptr, ptr %91, i64 %.4197249
  %93 = load ptr, ptr %92, align 8, !tbaa !8
  %94 = getelementptr inbounds double, ptr %93, i64 %.4197249
  store double 1.000000e+00, ptr %94, align 8, !tbaa !10
  %95 = add nuw nsw i64 %.4197249, 1
  %.not.not214238 = icmp ult i64 %95, %.0188258
  br i1 %.not.not214238, label %.lr.ph241, label %.preheader221

.preheader221:                                    ; preds = %.lr.ph241, %._crit_edge
  br i1 %.not.not213236.not, label %.lr.ph247.preheader, label %.lr.ph244.preheader

.lr.ph244.preheader:                              ; preds = %.preheader221
  %xtraiter = and i64 %.4197249, 3
  %96 = icmp ult i64 %.4197249, 4
  br i1 %96, label %.lr.ph247.preheader.loopexit.unr-lcssa, label %.lr.ph244.preheader.new

.lr.ph244.preheader.new:                          ; preds = %.lr.ph244.preheader
  %unroll_iter = and i64 %.4197249, 9223372036854775804
  br label %.lr.ph244

.lr.ph241:                                        ; preds = %._crit_edge, %.lr.ph241
  %.3239 = phi i64 [ %101, %.lr.ph241 ], [ %95, %._crit_edge ]
  %97 = load ptr, ptr %16, align 8, !tbaa !5
  %98 = getelementptr inbounds ptr, ptr %97, i64 %.4197249
  %99 = load ptr, ptr %98, align 8, !tbaa !8
  %100 = getelementptr inbounds double, ptr %99, i64 %.3239
  store double 0.000000e+00, ptr %100, align 8, !tbaa !10
  %101 = add nuw nsw i64 %.3239, 1
  %.not.not214 = icmp ult i64 %101, %.0188258
  br i1 %.not.not214, label %.lr.ph241, label %.preheader221, !llvm.loop !29

.lr.ph244:                                        ; preds = %.lr.ph244, %.lr.ph244.preheader.new
  %.4243 = phi i64 [ 0, %.lr.ph244.preheader.new ], [ %121, %.lr.ph244 ]
  %niter = phi i64 [ 0, %.lr.ph244.preheader.new ], [ %niter.next.3, %.lr.ph244 ]
  %102 = load ptr, ptr %17, align 8, !tbaa !5
  %103 = getelementptr inbounds ptr, ptr %102, i64 %.4197249
  %104 = load ptr, ptr %103, align 8, !tbaa !8
  %105 = getelementptr inbounds double, ptr %104, i64 %.4243
  store double 0.000000e+00, ptr %105, align 8, !tbaa !10
  %106 = or disjoint i64 %.4243, 1
  %107 = load ptr, ptr %17, align 8, !tbaa !5
  %108 = getelementptr inbounds ptr, ptr %107, i64 %.4197249
  %109 = load ptr, ptr %108, align 8, !tbaa !8
  %110 = getelementptr inbounds double, ptr %109, i64 %106
  store double 0.000000e+00, ptr %110, align 8, !tbaa !10
  %111 = or disjoint i64 %.4243, 2
  %112 = load ptr, ptr %17, align 8, !tbaa !5
  %113 = getelementptr inbounds ptr, ptr %112, i64 %.4197249
  %114 = load ptr, ptr %113, align 8, !tbaa !8
  %115 = getelementptr inbounds double, ptr %114, i64 %111
  store double 0.000000e+00, ptr %115, align 8, !tbaa !10
  %116 = or disjoint i64 %.4243, 3
  %117 = load ptr, ptr %17, align 8, !tbaa !5
  %118 = getelementptr inbounds ptr, ptr %117, i64 %.4197249
  %119 = load ptr, ptr %118, align 8, !tbaa !8
  %120 = getelementptr inbounds double, ptr %119, i64 %116
  store double 0.000000e+00, ptr %120, align 8, !tbaa !10
  %121 = add nuw nsw i64 %.4243, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.lr.ph247.preheader.loopexit.unr-lcssa, label %.lr.ph244, !llvm.loop !30

.lr.ph247.preheader.loopexit.unr-lcssa:           ; preds = %.lr.ph244, %.lr.ph244.preheader
  %.4243.unr = phi i64 [ 0, %.lr.ph244.preheader ], [ %121, %.lr.ph244 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph247.preheader, label %.lr.ph244.epil

.lr.ph244.epil:                                   ; preds = %.lr.ph247.preheader.loopexit.unr-lcssa, %.lr.ph244.epil
  %.4243.epil = phi i64 [ %126, %.lr.ph244.epil ], [ %.4243.unr, %.lr.ph247.preheader.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph244.epil ], [ 0, %.lr.ph247.preheader.loopexit.unr-lcssa ]
  %122 = load ptr, ptr %17, align 8, !tbaa !5
  %123 = getelementptr inbounds ptr, ptr %122, i64 %.4197249
  %124 = load ptr, ptr %123, align 8, !tbaa !8
  %125 = getelementptr inbounds double, ptr %124, i64 %.4243.epil
  store double 0.000000e+00, ptr %125, align 8, !tbaa !10
  %126 = add nuw nsw i64 %.4243.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.lr.ph247.preheader, label %.lr.ph244.epil, !llvm.loop !31

.lr.ph247.preheader:                              ; preds = %.lr.ph247.preheader.loopexit.unr-lcssa, %.lr.ph244.epil, %.preheader221
  br label %.lr.ph247

.lr.ph247:                                        ; preds = %.lr.ph247.preheader, %.lr.ph247
  %.5246 = phi i64 [ %132, %.lr.ph247 ], [ %.4197249, %.lr.ph247.preheader ]
  %127 = call noundef double @_ZN11alglib_impl9sparsegetEPNS_12sparsematrixEllPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %.4197249, i64 noundef %.5246, ptr noundef %1)
  %128 = load ptr, ptr %17, align 8, !tbaa !5
  %129 = getelementptr inbounds ptr, ptr %128, i64 %.4197249
  %130 = load ptr, ptr %129, align 8, !tbaa !8
  %131 = getelementptr inbounds double, ptr %130, i64 %.5246
  store double %127, ptr %131, align 8, !tbaa !10
  %132 = add nuw nsw i64 %.5246, 1
  %.not.not216 = icmp ult i64 %132, %.0188258
  br i1 %.not.not216, label %.lr.ph247, label %._crit_edge248, !llvm.loop !33

._crit_edge248:                                   ; preds = %.lr.ph247
  br i1 %.0187250, label %140, label %133

133:                                              ; preds = %._crit_edge248
  %134 = load ptr, ptr %17, align 8, !tbaa !5
  %135 = getelementptr inbounds ptr, ptr %134, i64 %.4197249
  %136 = load ptr, ptr %135, align 8, !tbaa !8
  %137 = getelementptr inbounds double, ptr %136, i64 %.4197249
  %138 = load double, ptr %137, align 8, !tbaa !10
  %139 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %138, double noundef 0.000000e+00)
  br label %140

140:                                              ; preds = %133, %._crit_edge248
  %141 = phi i1 [ true, %._crit_edge248 ], [ %139, %133 ]
  %exitcond266.not = icmp eq i64 %95, %.0188258
  br i1 %exitcond266.not, label %142, label %.preheader222, !llvm.loop !34

142:                                              ; preds = %140
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %7, i64 noundef %.0188258, i64 noundef %.0188258, ptr noundef %1)
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %.0188258, i64 noundef %.0188258, i64 noundef %.0188258, double noundef 1.000000e+00, ptr noundef nonnull %5, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %6, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %7, i64 noundef 0, i64 noundef 0, ptr noundef %1)
  br label %143

143:                                              ; preds = %142, %188
  %.5198252 = phi i64 [ %22, %142 ], [ %189, %188 ]
  %144 = load ptr, ptr %14, align 8, !tbaa !5
  %145 = getelementptr inbounds i64, ptr %144, i64 %.5198252
  %146 = load i64, ptr %145, align 8, !tbaa !25
  br i1 %23, label %.unr-lcssa, label %.new

.new:                                             ; preds = %143, %.new
  %.0190251 = phi i64 [ %174, %.new ], [ 0, %143 ]
  %niter283 = phi i64 [ %niter283.next.1, %.new ], [ 0, %143 ]
  %147 = load ptr, ptr %18, align 8, !tbaa !5
  %148 = getelementptr inbounds ptr, ptr %147, i64 %.5198252
  %149 = load ptr, ptr %148, align 8, !tbaa !8
  %150 = getelementptr inbounds double, ptr %149, i64 %.0190251
  %151 = load double, ptr %150, align 8, !tbaa !10
  %152 = getelementptr inbounds ptr, ptr %147, i64 %146
  %153 = load ptr, ptr %152, align 8, !tbaa !8
  %154 = getelementptr inbounds double, ptr %153, i64 %.0190251
  %155 = load double, ptr %154, align 8, !tbaa !10
  store double %155, ptr %150, align 8, !tbaa !10
  %156 = load ptr, ptr %18, align 8, !tbaa !5
  %157 = getelementptr inbounds ptr, ptr %156, i64 %146
  %158 = load ptr, ptr %157, align 8, !tbaa !8
  %159 = getelementptr inbounds double, ptr %158, i64 %.0190251
  store double %151, ptr %159, align 8, !tbaa !10
  %160 = or disjoint i64 %.0190251, 1
  %161 = load ptr, ptr %18, align 8, !tbaa !5
  %162 = getelementptr inbounds ptr, ptr %161, i64 %.5198252
  %163 = load ptr, ptr %162, align 8, !tbaa !8
  %164 = getelementptr inbounds double, ptr %163, i64 %160
  %165 = load double, ptr %164, align 8, !tbaa !10
  %166 = getelementptr inbounds ptr, ptr %161, i64 %146
  %167 = load ptr, ptr %166, align 8, !tbaa !8
  %168 = getelementptr inbounds double, ptr %167, i64 %160
  %169 = load double, ptr %168, align 8, !tbaa !10
  store double %169, ptr %164, align 8, !tbaa !10
  %170 = load ptr, ptr %18, align 8, !tbaa !5
  %171 = getelementptr inbounds ptr, ptr %170, i64 %146
  %172 = load ptr, ptr %171, align 8, !tbaa !8
  %173 = getelementptr inbounds double, ptr %172, i64 %160
  store double %165, ptr %173, align 8, !tbaa !10
  %174 = add nuw nsw i64 %.0190251, 2
  %niter283.next.1 = add i64 %niter283, 2
  %niter283.ncmp.1 = icmp eq i64 %niter283.next.1, %unroll_iter282
  br i1 %niter283.ncmp.1, label %.unr-lcssa, label %.new, !llvm.loop !35

.unr-lcssa:                                       ; preds = %.new, %143
  %.0190251.unr = phi i64 [ 0, %143 ], [ %174, %.new ]
  br i1 %lcmp.mod281.not, label %188, label %.epilog-lcssa

.epilog-lcssa:                                    ; preds = %.unr-lcssa
  %175 = load ptr, ptr %18, align 8, !tbaa !5
  %176 = getelementptr inbounds ptr, ptr %175, i64 %.5198252
  %177 = load ptr, ptr %176, align 8, !tbaa !8
  %178 = getelementptr inbounds double, ptr %177, i64 %.0190251.unr
  %179 = load double, ptr %178, align 8, !tbaa !10
  %180 = getelementptr inbounds ptr, ptr %175, i64 %146
  %181 = load ptr, ptr %180, align 8, !tbaa !8
  %182 = getelementptr inbounds double, ptr %181, i64 %.0190251.unr
  %183 = load double, ptr %182, align 8, !tbaa !10
  store double %183, ptr %178, align 8, !tbaa !10
  %184 = load ptr, ptr %18, align 8, !tbaa !5
  %185 = getelementptr inbounds ptr, ptr %184, i64 %146
  %186 = load ptr, ptr %185, align 8, !tbaa !8
  %187 = getelementptr inbounds double, ptr %186, i64 %.0190251.unr
  store double %179, ptr %187, align 8, !tbaa !10
  br label %188

188:                                              ; preds = %.unr-lcssa, %.epilog-lcssa
  %189 = add nsw i64 %.5198252, -1
  %190 = icmp sgt i64 %.5198252, 0
  br i1 %190, label %143, label %.preheader224, !llvm.loop !36

.preheader224:                                    ; preds = %188, %229
  %.6199254 = phi i64 [ %230, %229 ], [ %22, %188 ]
  %191 = load ptr, ptr %15, align 8, !tbaa !5
  %192 = getelementptr inbounds i64, ptr %191, i64 %.6199254
  %193 = load i64, ptr %192, align 8, !tbaa !25
  br i1 %24, label %.unr-lcssa284, label %.preheader224.new

.preheader224.new:                                ; preds = %.preheader224, %.preheader224.new
  %.1253 = phi i64 [ %217, %.preheader224.new ], [ 0, %.preheader224 ]
  %niter291 = phi i64 [ %niter291.next.1, %.preheader224.new ], [ 0, %.preheader224 ]
  %194 = load ptr, ptr %18, align 8, !tbaa !5
  %195 = getelementptr inbounds ptr, ptr %194, i64 %.1253
  %196 = load ptr, ptr %195, align 8, !tbaa !8
  %197 = getelementptr inbounds double, ptr %196, i64 %.6199254
  %198 = load double, ptr %197, align 8, !tbaa !10
  %199 = getelementptr inbounds double, ptr %196, i64 %193
  %200 = load double, ptr %199, align 8, !tbaa !10
  store double %200, ptr %197, align 8, !tbaa !10
  %201 = load ptr, ptr %18, align 8, !tbaa !5
  %202 = getelementptr inbounds ptr, ptr %201, i64 %.1253
  %203 = load ptr, ptr %202, align 8, !tbaa !8
  %204 = getelementptr inbounds double, ptr %203, i64 %193
  store double %198, ptr %204, align 8, !tbaa !10
  %205 = or disjoint i64 %.1253, 1
  %206 = load ptr, ptr %18, align 8, !tbaa !5
  %207 = getelementptr inbounds ptr, ptr %206, i64 %205
  %208 = load ptr, ptr %207, align 8, !tbaa !8
  %209 = getelementptr inbounds double, ptr %208, i64 %.6199254
  %210 = load double, ptr %209, align 8, !tbaa !10
  %211 = getelementptr inbounds double, ptr %208, i64 %193
  %212 = load double, ptr %211, align 8, !tbaa !10
  store double %212, ptr %209, align 8, !tbaa !10
  %213 = load ptr, ptr %18, align 8, !tbaa !5
  %214 = getelementptr inbounds ptr, ptr %213, i64 %205
  %215 = load ptr, ptr %214, align 8, !tbaa !8
  %216 = getelementptr inbounds double, ptr %215, i64 %193
  store double %210, ptr %216, align 8, !tbaa !10
  %217 = add nuw nsw i64 %.1253, 2
  %niter291.next.1 = add i64 %niter291, 2
  %niter291.ncmp.1 = icmp eq i64 %niter291.next.1, %unroll_iter290
  br i1 %niter291.ncmp.1, label %.unr-lcssa284, label %.preheader224.new, !llvm.loop !37

.unr-lcssa284:                                    ; preds = %.preheader224.new, %.preheader224
  %.1253.unr = phi i64 [ 0, %.preheader224 ], [ %217, %.preheader224.new ]
  br i1 %lcmp.mod288.not, label %229, label %.epilog-lcssa289

.epilog-lcssa289:                                 ; preds = %.unr-lcssa284
  %218 = load ptr, ptr %18, align 8, !tbaa !5
  %219 = getelementptr inbounds ptr, ptr %218, i64 %.1253.unr
  %220 = load ptr, ptr %219, align 8, !tbaa !8
  %221 = getelementptr inbounds double, ptr %220, i64 %.6199254
  %222 = load double, ptr %221, align 8, !tbaa !10
  %223 = getelementptr inbounds double, ptr %220, i64 %193
  %224 = load double, ptr %223, align 8, !tbaa !10
  store double %224, ptr %221, align 8, !tbaa !10
  %225 = load ptr, ptr %18, align 8, !tbaa !5
  %226 = getelementptr inbounds ptr, ptr %225, i64 %.1253.unr
  %227 = load ptr, ptr %226, align 8, !tbaa !8
  %228 = getelementptr inbounds double, ptr %227, i64 %193
  store double %222, ptr %228, align 8, !tbaa !10
  br label %229

229:                                              ; preds = %.unr-lcssa284, %.epilog-lcssa289
  %230 = add nsw i64 %.6199254, -1
  %231 = icmp sgt i64 %.6199254, 0
  br i1 %231, label %.preheader224, label %.preheader, !llvm.loop !38

.preheader:                                       ; preds = %229, %247
  %.7256 = phi i64 [ %248, %247 ], [ 0, %229 ]
  br label %232

232:                                              ; preds = %.preheader, %232
  %.6255 = phi i64 [ 0, %.preheader ], [ %246, %232 ]
  %233 = load ptr, ptr %18, align 8, !tbaa !5
  %234 = getelementptr inbounds ptr, ptr %233, i64 %.7256
  %235 = load ptr, ptr %234, align 8, !tbaa !8
  %236 = getelementptr inbounds double, ptr %235, i64 %.6255
  %237 = load double, ptr %236, align 8, !tbaa !10
  %238 = load ptr, ptr %13, align 8, !tbaa !5
  %239 = getelementptr inbounds ptr, ptr %238, i64 %.7256
  %240 = load ptr, ptr %239, align 8, !tbaa !8
  %241 = getelementptr inbounds double, ptr %240, i64 %.6255
  %242 = load double, ptr %241, align 8, !tbaa !10
  %243 = fsub double %237, %242
  %244 = call noundef double @_ZN11alglib_impl7ae_fabsEdPNS_8ae_stateE(double noundef %243, ptr noundef %1)
  %245 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_greaterEdd(double noundef %244, double noundef 0x3D95FD7FE1796496)
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %0, i1 noundef zeroext %245, ptr noundef nonnull @.str.8, i32 noundef 15727, ptr noundef nonnull @.str.254)
  %246 = add nuw nsw i64 %.6255, 1
  %exitcond269.not = icmp eq i64 %246, %.0188258
  br i1 %exitcond269.not, label %247, label %232, !llvm.loop !39

247:                                              ; preds = %232
  %248 = add nuw nsw i64 %.7256, 1
  %exitcond270.not = icmp eq i64 %248, %.0188258
  br i1 %exitcond270.not, label %249, label %.preheader, !llvm.loop !40

249:                                              ; preds = %247
  %250 = xor i1 %51, %141
  %251 = xor i1 %250, true
  call void @_ZN11alglib_impl17ae_set_error_flagEPbbPKciS2_(ptr noundef nonnull %0, i1 noundef zeroext %251, ptr noundef nonnull @.str.8, i32 noundef 15730, ptr noundef nonnull @.str.255)
  %252 = add nuw nsw i64 %.0257, 1
  %exitcond271.not = icmp eq i64 %252, 3
  br i1 %exitcond271.not, label %253, label %.preheader229, !llvm.loop !41

253:                                              ; preds = %249
  %254 = icmp eq i64 %.0189, 0
  br i1 %254, label %257, label %255

255:                                              ; preds = %253
  %256 = sdiv i64 %.0189, 2
  br label %25, !llvm.loop !42

257:                                              ; preds = %253
  %258 = add nuw nsw i64 %.0188258, 1
  %exitcond272.not = icmp eq i64 %258, 21
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond272.not, label %.loopexit, label %19, !llvm.loop !43

.loopexit:                                        ; preds = %257, %.preheader229
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %1)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #4
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %11) #4
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %10) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %7) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %6) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %5) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %4) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #4
  ret void
}

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { 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 #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 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"any pointer", !6, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"double", !6, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13}
!16 = distinct !{!16, !13}
!17 = !{!18, !19, i64 0}
!18 = !{!"_ZTSN11alglib_impl9ae_vectorE", !19, i64 0, !19, i64 8, !20, i64 16, !21, i64 24, !6, i64 56}
!19 = !{!"long", !6, i64 0}
!20 = !{!"bool", !6, i64 0}
!21 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !9, i64 0, !9, i64 8, !9, i64 16, !9, i64 24}
!22 = !{!20, !20, i64 0}
!23 = !{i8 0, i8 2}
!24 = !{}
!25 = !{!19, !19, i64 0}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !13}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.unroll.disable"}
!33 = distinct !{!33, !13}
!34 = distinct !{!34, !13}
!35 = distinct !{!35, !13}
!36 = distinct !{!36, !13}
!37 = distinct !{!37, !13}
!38 = distinct !{!38, !13}
!39 = distinct !{!39, !13}
!40 = distinct !{!40, !13}
!41 = distinct !{!41, !13}
!42 = distinct !{!42, !13}
!43 = distinct !{!43, !13}


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