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

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

@.str.57 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [27 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
define dso_local void @_ZN11alglib_impl13pearsoncorrm2EPNS_9ae_matrixES1_lllS1_PNS_8ae_stateE(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, ptr noundef %5, ptr noundef %6) #1 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca %"struct.alglib_impl::ae_frame", align 8
  %16 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %17 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca double, align 8
  %21 = alloca %"struct.alglib_impl::ae_vector", align 8
  %22 = alloca %"struct.alglib_impl::ae_vector", align 8
  %23 = alloca %"struct.alglib_impl::ae_vector", align 8
  %24 = alloca %"struct.alglib_impl::ae_vector", align 8
  %25 = alloca %"struct.alglib_impl::ae_vector", align 8
  %26 = alloca %"struct.alglib_impl::ae_vector", align 8
  %27 = alloca %"struct.alglib_impl::ae_vector", align 8
  %28 = alloca i32, align 4
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store i64 %2, ptr %10, align 8, !tbaa !9
  store i64 %3, ptr %11, align 8, !tbaa !9
  store i64 %4, ptr %12, align 8, !tbaa !9
  store ptr %5, ptr %13, align 8, !tbaa !5
  store ptr %6, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr %27) #5
  %29 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %29, ptr noundef %15)
  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 80, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %21, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %22, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %23, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %24, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %25, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %26, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %27, i8 0, i64 64, i1 false)
  %30 = load ptr, ptr %8, align 8, !tbaa !5
  %31 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl19ae_matrix_init_copyEPNS_9ae_matrixES1_PNS_8ae_stateEb(ptr noundef %16, ptr noundef %30, ptr noundef %31, i1 noundef zeroext true)
  store ptr %16, ptr %8, align 8, !tbaa !5
  %32 = load ptr, ptr %9, align 8, !tbaa !5
  %33 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl19ae_matrix_init_copyEPNS_9ae_matrixES1_PNS_8ae_stateEb(ptr noundef %17, ptr noundef %32, ptr noundef %33, i1 noundef zeroext true)
  store ptr %17, ptr %9, align 8, !tbaa !5
  %34 = load ptr, ptr %13, align 8, !tbaa !5
  call void @_ZN11alglib_impl15ae_matrix_clearEPNS_9ae_matrixE(ptr noundef %34)
  %35 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %21, i64 noundef 0, i64 noundef 3, ptr noundef %35, i1 noundef zeroext true)
  %36 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %22, i64 noundef 0, i64 noundef 3, ptr noundef %36, i1 noundef zeroext true)
  %37 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %23, i64 noundef 0, i64 noundef 3, ptr noundef %37, i1 noundef zeroext true)
  %38 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %24, i64 noundef 0, i64 noundef 3, ptr noundef %38, i1 noundef zeroext true)
  %39 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %25, i64 noundef 0, i64 noundef 3, ptr noundef %39, i1 noundef zeroext true)
  %40 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %26, i64 noundef 0, i64 noundef 1, ptr noundef %40, i1 noundef zeroext true)
  %41 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %27, i64 noundef 0, i64 noundef 1, ptr noundef %41, i1 noundef zeroext true)
  %42 = load i64, ptr %10, align 8, !tbaa !9
  %43 = icmp sge i64 %42, 0
  %44 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %43, ptr noundef @.str.57, ptr noundef %44)
  %45 = load i64, ptr %11, align 8, !tbaa !9
  %46 = icmp sge i64 %45, 1
  %47 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %46, ptr noundef @.str.58, ptr noundef %47)
  %48 = load i64, ptr %12, align 8, !tbaa !9
  %49 = icmp sge i64 %48, 1
  %50 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %49, ptr noundef @.str.59, ptr noundef %50)
  %51 = load ptr, ptr %8, align 8, !tbaa !5
  %52 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %51, i32 0, i32 0
  %53 = load i64, ptr %52, align 8, !tbaa !11
  %54 = load i64, ptr %10, align 8, !tbaa !9
  %55 = icmp sge i64 %53, %54
  %56 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %55, ptr noundef @.str.60, ptr noundef %56)
  %57 = load ptr, ptr %8, align 8, !tbaa !5
  %58 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %57, i32 0, i32 1
  %59 = load i64, ptr %58, align 8, !tbaa !15
  %60 = load i64, ptr %11, align 8, !tbaa !9
  %61 = icmp sge i64 %59, %60
  br i1 %61, label %65, label %62

62:                                               ; preds = %7
  %63 = load i64, ptr %10, align 8, !tbaa !9
  %64 = icmp eq i64 %63, 0
  br label %65

65:                                               ; preds = %62, %7
  %66 = phi i1 [ true, %7 ], [ %64, %62 ]
  %67 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %66, ptr noundef @.str.61, ptr noundef %67)
  %68 = load ptr, ptr %8, align 8, !tbaa !5
  %69 = load i64, ptr %10, align 8, !tbaa !9
  %70 = load i64, ptr %11, align 8, !tbaa !9
  %71 = load ptr, ptr %14, align 8, !tbaa !5
  %72 = call noundef zeroext i1 @_ZN11alglib_impl20apservisfinitematrixEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %68, i64 noundef %69, i64 noundef %70, ptr noundef %71)
  %73 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %72, ptr noundef @.str.62, ptr noundef %73)
  %74 = load ptr, ptr %9, align 8, !tbaa !5
  %75 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %74, i32 0, i32 0
  %76 = load i64, ptr %75, align 8, !tbaa !11
  %77 = load i64, ptr %10, align 8, !tbaa !9
  %78 = icmp sge i64 %76, %77
  %79 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %78, ptr noundef @.str.63, ptr noundef %79)
  %80 = load ptr, ptr %9, align 8, !tbaa !5
  %81 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %80, i32 0, i32 1
  %82 = load i64, ptr %81, align 8, !tbaa !15
  %83 = load i64, ptr %12, align 8, !tbaa !9
  %84 = icmp sge i64 %82, %83
  br i1 %84, label %88, label %85

85:                                               ; preds = %65
  %86 = load i64, ptr %10, align 8, !tbaa !9
  %87 = icmp eq i64 %86, 0
  br label %88

88:                                               ; preds = %85, %65
  %89 = phi i1 [ true, %65 ], [ %87, %85 ]
  %90 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %89, ptr noundef @.str.64, ptr noundef %90)
  %91 = load ptr, ptr %9, align 8, !tbaa !5
  %92 = load i64, ptr %10, align 8, !tbaa !9
  %93 = load i64, ptr %12, align 8, !tbaa !9
  %94 = load ptr, ptr %14, align 8, !tbaa !5
  %95 = call noundef zeroext i1 @_ZN11alglib_impl20apservisfinitematrixEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %91, i64 noundef %92, i64 noundef %93, ptr noundef %94)
  %96 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %95, ptr noundef @.str.62, ptr noundef %96)
  %97 = load i64, ptr %10, align 8, !tbaa !9
  %98 = icmp sle i64 %97, 1
  br i1 %98, label %99, label %133

99:                                               ; preds = %88
  %100 = load ptr, ptr %13, align 8, !tbaa !5
  %101 = load i64, ptr %11, align 8, !tbaa !9
  %102 = load i64, ptr %12, align 8, !tbaa !9
  %103 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %100, i64 noundef %101, i64 noundef %102, ptr noundef %103)
  store i64 0, ptr %18, align 8, !tbaa !9
  br label %104

104:                                              ; preds = %128, %99
  %105 = load i64, ptr %18, align 8, !tbaa !9
  %106 = load i64, ptr %11, align 8, !tbaa !9
  %107 = sub nsw i64 %106, 1
  %108 = icmp sle i64 %105, %107
  br i1 %108, label %109, label %131

109:                                              ; preds = %104
  store i64 0, ptr %19, align 8, !tbaa !9
  br label %110

110:                                              ; preds = %124, %109
  %111 = load i64, ptr %19, align 8, !tbaa !9
  %112 = load i64, ptr %12, align 8, !tbaa !9
  %113 = sub nsw i64 %112, 1
  %114 = icmp sle i64 %111, %113
  br i1 %114, label %115, label %127

115:                                              ; preds = %110
  %116 = load ptr, ptr %13, align 8, !tbaa !5
  %117 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %116, i32 0, i32 6
  %118 = load ptr, ptr %117, align 8, !tbaa !16
  %119 = load i64, ptr %18, align 8, !tbaa !9
  %120 = getelementptr inbounds ptr, ptr %118, i64 %119
  %121 = load ptr, ptr %120, align 8, !tbaa !5
  %122 = load i64, ptr %19, align 8, !tbaa !9
  %123 = getelementptr inbounds double, ptr %121, i64 %122
  store double 0.000000e+00, ptr %123, align 8, !tbaa !17
  br label %124

124:                                              ; preds = %115
  %125 = load i64, ptr %19, align 8, !tbaa !9
  %126 = add nsw i64 %125, 1
  store i64 %126, ptr %19, align 8, !tbaa !9
  br label %110, !llvm.loop !19

127:                                              ; preds = %110
  br label %128

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

131:                                              ; preds = %104
  %132 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %132)
  store i32 1, ptr %28, align 4
  br label %687

133:                                              ; preds = %88
  %134 = load i64, ptr %11, align 8, !tbaa !9
  %135 = load i64, ptr %12, align 8, !tbaa !9
  %136 = load ptr, ptr %14, align 8, !tbaa !5
  %137 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %134, i64 noundef %135, ptr noundef %136)
  %138 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %21, i64 noundef %137, ptr noundef %138)
  %139 = load i64, ptr %11, align 8, !tbaa !9
  %140 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %22, i64 noundef %139, ptr noundef %140)
  %141 = load i64, ptr %12, align 8, !tbaa !9
  %142 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %23, i64 noundef %141, ptr noundef %142)
  %143 = load i64, ptr %11, align 8, !tbaa !9
  %144 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %24, i64 noundef %143, ptr noundef %144)
  %145 = load i64, ptr %12, align 8, !tbaa !9
  %146 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %25, i64 noundef %145, ptr noundef %146)
  %147 = load i64, ptr %11, align 8, !tbaa !9
  %148 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %26, i64 noundef %147, ptr noundef %148)
  %149 = load i64, ptr %12, align 8, !tbaa !9
  %150 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %27, i64 noundef %149, ptr noundef %150)
  %151 = load ptr, ptr %13, align 8, !tbaa !5
  %152 = load i64, ptr %11, align 8, !tbaa !9
  %153 = load i64, ptr %12, align 8, !tbaa !9
  %154 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %151, i64 noundef %152, i64 noundef %153, ptr noundef %154)
  store i64 0, ptr %18, align 8, !tbaa !9
  br label %155

155:                                              ; preds = %173, %133
  %156 = load i64, ptr %18, align 8, !tbaa !9
  %157 = load i64, ptr %11, align 8, !tbaa !9
  %158 = sub nsw i64 %157, 1
  %159 = icmp sle i64 %156, %158
  br i1 %159, label %160, label %176

160:                                              ; preds = %155
  %161 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %162 = load ptr, ptr %161, align 8, !tbaa !16
  %163 = load i64, ptr %18, align 8, !tbaa !9
  %164 = getelementptr inbounds double, ptr %162, i64 %163
  store double 0.000000e+00, ptr %164, align 8, !tbaa !17
  %165 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 4
  %166 = load ptr, ptr %165, align 8, !tbaa !16
  %167 = load i64, ptr %18, align 8, !tbaa !9
  %168 = getelementptr inbounds i8, ptr %166, i64 %167
  store i8 1, ptr %168, align 1, !tbaa !22
  %169 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %170 = load ptr, ptr %169, align 8, !tbaa !16
  %171 = load i64, ptr %18, align 8, !tbaa !9
  %172 = getelementptr inbounds double, ptr %170, i64 %171
  store double 0.000000e+00, ptr %172, align 8, !tbaa !17
  br label %173

173:                                              ; preds = %160
  %174 = load i64, ptr %18, align 8, !tbaa !9
  %175 = add nsw i64 %174, 1
  store i64 %175, ptr %18, align 8, !tbaa !9
  br label %155, !llvm.loop !23

176:                                              ; preds = %155
  %177 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %178 = load ptr, ptr %177, align 8, !tbaa !16
  %179 = getelementptr inbounds double, ptr %178, i64 0
  %180 = load ptr, ptr %8, align 8, !tbaa !5
  %181 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %180, i32 0, i32 6
  %182 = load ptr, ptr %181, align 8, !tbaa !16
  %183 = getelementptr inbounds ptr, ptr %182, i64 0
  %184 = load ptr, ptr %183, align 8, !tbaa !5
  %185 = getelementptr inbounds double, ptr %184, i64 0
  %186 = load i64, ptr %11, align 8, !tbaa !9
  %187 = sub nsw i64 %186, 1
  %188 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %187)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %179, i64 noundef 1, ptr noundef %185, i64 noundef 1, i64 noundef %188)
  %189 = load i64, ptr %10, align 8, !tbaa !9
  %190 = sitofp i64 %189 to double
  %191 = fdiv double 1.000000e+00, %190
  store double %191, ptr %20, align 8, !tbaa !17
  store i64 0, ptr %18, align 8, !tbaa !9
  br label %192

192:                                              ; preds = %251, %176
  %193 = load i64, ptr %18, align 8, !tbaa !9
  %194 = load i64, ptr %10, align 8, !tbaa !9
  %195 = sub nsw i64 %194, 1
  %196 = icmp sle i64 %193, %195
  br i1 %196, label %197, label %254

197:                                              ; preds = %192
  %198 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %199 = load ptr, ptr %198, align 8, !tbaa !16
  %200 = getelementptr inbounds double, ptr %199, i64 0
  %201 = load ptr, ptr %8, align 8, !tbaa !5
  %202 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %201, i32 0, i32 6
  %203 = load ptr, ptr %202, align 8, !tbaa !16
  %204 = load i64, ptr %18, align 8, !tbaa !9
  %205 = getelementptr inbounds ptr, ptr %203, i64 %204
  %206 = load ptr, ptr %205, align 8, !tbaa !5
  %207 = getelementptr inbounds double, ptr %206, i64 0
  %208 = load i64, ptr %11, align 8, !tbaa !9
  %209 = sub nsw i64 %208, 1
  %210 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %209)
  %211 = load double, ptr %20, align 8, !tbaa !17
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %200, i64 noundef 1, ptr noundef %207, i64 noundef 1, i64 noundef %210, double noundef %211)
  store i64 0, ptr %19, align 8, !tbaa !9
  br label %212

212:                                              ; preds = %247, %197
  %213 = load i64, ptr %19, align 8, !tbaa !9
  %214 = load i64, ptr %11, align 8, !tbaa !9
  %215 = sub nsw i64 %214, 1
  %216 = icmp sle i64 %213, %215
  br i1 %216, label %217, label %250

217:                                              ; preds = %212
  %218 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 4
  %219 = load ptr, ptr %218, align 8, !tbaa !16
  %220 = load i64, ptr %19, align 8, !tbaa !9
  %221 = getelementptr inbounds i8, ptr %219, i64 %220
  %222 = load i8, ptr %221, align 1, !tbaa !22, !range !24, !noundef !25
  %223 = trunc i8 %222 to i1
  br i1 %223, label %224, label %240

224:                                              ; preds = %217
  %225 = load ptr, ptr %8, align 8, !tbaa !5
  %226 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %225, i32 0, i32 6
  %227 = load ptr, ptr %226, align 8, !tbaa !16
  %228 = load i64, ptr %18, align 8, !tbaa !9
  %229 = getelementptr inbounds ptr, ptr %227, i64 %228
  %230 = load ptr, ptr %229, align 8, !tbaa !5
  %231 = load i64, ptr %19, align 8, !tbaa !9
  %232 = getelementptr inbounds double, ptr %230, i64 %231
  %233 = load double, ptr %232, align 8, !tbaa !17
  %234 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %235 = load ptr, ptr %234, align 8, !tbaa !16
  %236 = load i64, ptr %19, align 8, !tbaa !9
  %237 = getelementptr inbounds double, ptr %235, i64 %236
  %238 = load double, ptr %237, align 8, !tbaa !17
  %239 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %233, double noundef %238)
  br label %240

240:                                              ; preds = %224, %217
  %241 = phi i1 [ false, %217 ], [ %239, %224 ]
  %242 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 4
  %243 = load ptr, ptr %242, align 8, !tbaa !16
  %244 = load i64, ptr %19, align 8, !tbaa !9
  %245 = getelementptr inbounds i8, ptr %243, i64 %244
  %246 = zext i1 %241 to i8
  store i8 %246, ptr %245, align 1, !tbaa !22
  br label %247

247:                                              ; preds = %240
  %248 = load i64, ptr %19, align 8, !tbaa !9
  %249 = add nsw i64 %248, 1
  store i64 %249, ptr %19, align 8, !tbaa !9
  br label %212, !llvm.loop !26

250:                                              ; preds = %212
  br label %251

251:                                              ; preds = %250
  %252 = load i64, ptr %18, align 8, !tbaa !9
  %253 = add nsw i64 %252, 1
  store i64 %253, ptr %18, align 8, !tbaa !9
  br label %192, !llvm.loop !27

254:                                              ; preds = %192
  store i64 0, ptr %18, align 8, !tbaa !9
  br label %255

255:                                              ; preds = %328, %254
  %256 = load i64, ptr %18, align 8, !tbaa !9
  %257 = load i64, ptr %10, align 8, !tbaa !9
  %258 = sub nsw i64 %257, 1
  %259 = icmp sle i64 %256, %258
  br i1 %259, label %260, label %331

260:                                              ; preds = %255
  %261 = load ptr, ptr %8, align 8, !tbaa !5
  %262 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %261, i32 0, i32 6
  %263 = load ptr, ptr %262, align 8, !tbaa !16
  %264 = load i64, ptr %18, align 8, !tbaa !9
  %265 = getelementptr inbounds ptr, ptr %263, i64 %264
  %266 = load ptr, ptr %265, align 8, !tbaa !5
  %267 = getelementptr inbounds double, ptr %266, i64 0
  %268 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %269 = load ptr, ptr %268, align 8, !tbaa !16
  %270 = getelementptr inbounds double, ptr %269, i64 0
  %271 = load i64, ptr %11, align 8, !tbaa !9
  %272 = sub nsw i64 %271, 1
  %273 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %272)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %267, i64 noundef 1, ptr noundef %270, i64 noundef 1, i64 noundef %273)
  store i64 0, ptr %19, align 8, !tbaa !9
  br label %274

274:                                              ; preds = %324, %260
  %275 = load i64, ptr %19, align 8, !tbaa !9
  %276 = load i64, ptr %11, align 8, !tbaa !9
  %277 = sub nsw i64 %276, 1
  %278 = icmp sle i64 %275, %277
  br i1 %278, label %279, label %327

279:                                              ; preds = %274
  %280 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %26, i32 0, i32 4
  %281 = load ptr, ptr %280, align 8, !tbaa !16
  %282 = load i64, ptr %19, align 8, !tbaa !9
  %283 = getelementptr inbounds i8, ptr %281, i64 %282
  %284 = load i8, ptr %283, align 1, !tbaa !22, !range !24, !noundef !25
  %285 = trunc i8 %284 to i1
  br i1 %285, label %286, label %295

286:                                              ; preds = %279
  %287 = load ptr, ptr %8, align 8, !tbaa !5
  %288 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %287, i32 0, i32 6
  %289 = load ptr, ptr %288, align 8, !tbaa !16
  %290 = load i64, ptr %18, align 8, !tbaa !9
  %291 = getelementptr inbounds ptr, ptr %289, i64 %290
  %292 = load ptr, ptr %291, align 8, !tbaa !5
  %293 = load i64, ptr %19, align 8, !tbaa !9
  %294 = getelementptr inbounds double, ptr %292, i64 %293
  store double 0.000000e+00, ptr %294, align 8, !tbaa !17
  br label %295

295:                                              ; preds = %286, %279
  %296 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %297 = load ptr, ptr %296, align 8, !tbaa !16
  %298 = load i64, ptr %19, align 8, !tbaa !9
  %299 = getelementptr inbounds double, ptr %297, i64 %298
  %300 = load double, ptr %299, align 8, !tbaa !17
  %301 = load ptr, ptr %8, align 8, !tbaa !5
  %302 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %301, i32 0, i32 6
  %303 = load ptr, ptr %302, align 8, !tbaa !16
  %304 = load i64, ptr %18, align 8, !tbaa !9
  %305 = getelementptr inbounds ptr, ptr %303, i64 %304
  %306 = load ptr, ptr %305, align 8, !tbaa !5
  %307 = load i64, ptr %19, align 8, !tbaa !9
  %308 = getelementptr inbounds double, ptr %306, i64 %307
  %309 = load double, ptr %308, align 8, !tbaa !17
  %310 = load ptr, ptr %8, align 8, !tbaa !5
  %311 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %310, i32 0, i32 6
  %312 = load ptr, ptr %311, align 8, !tbaa !16
  %313 = load i64, ptr %18, 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 %19, align 8, !tbaa !9
  %317 = getelementptr inbounds double, ptr %315, i64 %316
  %318 = load double, ptr %317, align 8, !tbaa !17
  %319 = call double @llvm.fmuladd.f64(double %309, double %318, double %300)
  %320 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %321 = load ptr, ptr %320, align 8, !tbaa !16
  %322 = load i64, ptr %19, align 8, !tbaa !9
  %323 = getelementptr inbounds double, ptr %321, i64 %322
  store double %319, ptr %323, align 8, !tbaa !17
  br label %324

324:                                              ; preds = %295
  %325 = load i64, ptr %19, align 8, !tbaa !9
  %326 = add nsw i64 %325, 1
  store i64 %326, ptr %19, align 8, !tbaa !9
  br label %274, !llvm.loop !28

327:                                              ; preds = %274
  br label %328

328:                                              ; preds = %327
  %329 = load i64, ptr %18, align 8, !tbaa !9
  %330 = add nsw i64 %329, 1
  store i64 %330, ptr %18, align 8, !tbaa !9
  br label %255, !llvm.loop !29

331:                                              ; preds = %255
  store i64 0, ptr %19, align 8, !tbaa !9
  br label %332

332:                                              ; preds = %353, %331
  %333 = load i64, ptr %19, align 8, !tbaa !9
  %334 = load i64, ptr %11, align 8, !tbaa !9
  %335 = sub nsw i64 %334, 1
  %336 = icmp sle i64 %333, %335
  br i1 %336, label %337, label %356

337:                                              ; preds = %332
  %338 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %339 = load ptr, ptr %338, align 8, !tbaa !16
  %340 = load i64, ptr %19, align 8, !tbaa !9
  %341 = getelementptr inbounds double, ptr %339, i64 %340
  %342 = load double, ptr %341, align 8, !tbaa !17
  %343 = load i64, ptr %10, align 8, !tbaa !9
  %344 = sub nsw i64 %343, 1
  %345 = sitofp i64 %344 to double
  %346 = fdiv double %342, %345
  %347 = load ptr, ptr %14, align 8, !tbaa !5
  %348 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %346, ptr noundef %347)
  %349 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %350 = load ptr, ptr %349, align 8, !tbaa !16
  %351 = load i64, ptr %19, align 8, !tbaa !9
  %352 = getelementptr inbounds double, ptr %350, i64 %351
  store double %348, ptr %352, align 8, !tbaa !17
  br label %353

353:                                              ; preds = %337
  %354 = load i64, ptr %19, align 8, !tbaa !9
  %355 = add nsw i64 %354, 1
  store i64 %355, ptr %19, align 8, !tbaa !9
  br label %332, !llvm.loop !30

356:                                              ; preds = %332
  store i64 0, ptr %18, align 8, !tbaa !9
  br label %357

357:                                              ; preds = %375, %356
  %358 = load i64, ptr %18, 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 %378

362:                                              ; preds = %357
  %363 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %364 = load ptr, ptr %363, align 8, !tbaa !16
  %365 = load i64, ptr %18, align 8, !tbaa !9
  %366 = getelementptr inbounds double, ptr %364, i64 %365
  store double 0.000000e+00, ptr %366, align 8, !tbaa !17
  %367 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %368 = load ptr, ptr %367, align 8, !tbaa !16
  %369 = load i64, ptr %18, align 8, !tbaa !9
  %370 = getelementptr inbounds i8, ptr %368, i64 %369
  store i8 1, ptr %370, align 1, !tbaa !22
  %371 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %25, i32 0, i32 4
  %372 = load ptr, ptr %371, align 8, !tbaa !16
  %373 = load i64, ptr %18, align 8, !tbaa !9
  %374 = getelementptr inbounds double, ptr %372, i64 %373
  store double 0.000000e+00, ptr %374, align 8, !tbaa !17
  br label %375

375:                                              ; preds = %362
  %376 = load i64, ptr %18, align 8, !tbaa !9
  %377 = add nsw i64 %376, 1
  store i64 %377, ptr %18, align 8, !tbaa !9
  br label %357, !llvm.loop !31

378:                                              ; preds = %357
  %379 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %23, i32 0, i32 4
  %380 = load ptr, ptr %379, align 8, !tbaa !16
  %381 = getelementptr inbounds double, ptr %380, i64 0
  %382 = load ptr, ptr %9, align 8, !tbaa !5
  %383 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %382, i32 0, i32 6
  %384 = load ptr, ptr %383, align 8, !tbaa !16
  %385 = getelementptr inbounds ptr, ptr %384, i64 0
  %386 = load ptr, ptr %385, align 8, !tbaa !5
  %387 = getelementptr inbounds double, ptr %386, i64 0
  %388 = load i64, ptr %12, align 8, !tbaa !9
  %389 = sub nsw i64 %388, 1
  %390 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %389)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %381, i64 noundef 1, ptr noundef %387, i64 noundef 1, i64 noundef %390)
  %391 = load i64, ptr %10, align 8, !tbaa !9
  %392 = sitofp i64 %391 to double
  %393 = fdiv double 1.000000e+00, %392
  store double %393, ptr %20, align 8, !tbaa !17
  store i64 0, ptr %18, align 8, !tbaa !9
  br label %394

394:                                              ; preds = %453, %378
  %395 = load i64, ptr %18, align 8, !tbaa !9
  %396 = load i64, ptr %10, align 8, !tbaa !9
  %397 = sub nsw i64 %396, 1
  %398 = icmp sle i64 %395, %397
  br i1 %398, label %399, label %456

399:                                              ; preds = %394
  %400 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %401 = load ptr, ptr %400, align 8, !tbaa !16
  %402 = getelementptr inbounds double, ptr %401, i64 0
  %403 = load ptr, ptr %9, align 8, !tbaa !5
  %404 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %403, i32 0, i32 6
  %405 = load ptr, ptr %404, align 8, !tbaa !16
  %406 = load i64, ptr %18, align 8, !tbaa !9
  %407 = getelementptr inbounds ptr, ptr %405, i64 %406
  %408 = load ptr, ptr %407, align 8, !tbaa !5
  %409 = getelementptr inbounds double, ptr %408, i64 0
  %410 = load i64, ptr %12, align 8, !tbaa !9
  %411 = sub nsw i64 %410, 1
  %412 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %411)
  %413 = load double, ptr %20, align 8, !tbaa !17
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %402, i64 noundef 1, ptr noundef %409, i64 noundef 1, i64 noundef %412, double noundef %413)
  store i64 0, ptr %19, align 8, !tbaa !9
  br label %414

414:                                              ; preds = %449, %399
  %415 = load i64, ptr %19, align 8, !tbaa !9
  %416 = load i64, ptr %12, align 8, !tbaa !9
  %417 = sub nsw i64 %416, 1
  %418 = icmp sle i64 %415, %417
  br i1 %418, label %419, label %452

419:                                              ; preds = %414
  %420 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %421 = load ptr, ptr %420, align 8, !tbaa !16
  %422 = load i64, ptr %19, align 8, !tbaa !9
  %423 = getelementptr inbounds i8, ptr %421, i64 %422
  %424 = load i8, ptr %423, align 1, !tbaa !22, !range !24, !noundef !25
  %425 = trunc i8 %424 to i1
  br i1 %425, label %426, label %442

426:                                              ; preds = %419
  %427 = load ptr, ptr %9, align 8, !tbaa !5
  %428 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %427, i32 0, i32 6
  %429 = load ptr, ptr %428, align 8, !tbaa !16
  %430 = load i64, ptr %18, align 8, !tbaa !9
  %431 = getelementptr inbounds ptr, ptr %429, i64 %430
  %432 = load ptr, ptr %431, align 8, !tbaa !5
  %433 = load i64, ptr %19, align 8, !tbaa !9
  %434 = getelementptr inbounds double, ptr %432, i64 %433
  %435 = load double, ptr %434, align 8, !tbaa !17
  %436 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %23, i32 0, i32 4
  %437 = load ptr, ptr %436, align 8, !tbaa !16
  %438 = load i64, ptr %19, align 8, !tbaa !9
  %439 = getelementptr inbounds double, ptr %437, i64 %438
  %440 = load double, ptr %439, align 8, !tbaa !17
  %441 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %435, double noundef %440)
  br label %442

442:                                              ; preds = %426, %419
  %443 = phi i1 [ false, %419 ], [ %441, %426 ]
  %444 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %445 = load ptr, ptr %444, align 8, !tbaa !16
  %446 = load i64, ptr %19, align 8, !tbaa !9
  %447 = getelementptr inbounds i8, ptr %445, i64 %446
  %448 = zext i1 %443 to i8
  store i8 %448, ptr %447, align 1, !tbaa !22
  br label %449

449:                                              ; preds = %442
  %450 = load i64, ptr %19, align 8, !tbaa !9
  %451 = add nsw i64 %450, 1
  store i64 %451, ptr %19, align 8, !tbaa !9
  br label %414, !llvm.loop !32

452:                                              ; preds = %414
  br label %453

453:                                              ; preds = %452
  %454 = load i64, ptr %18, align 8, !tbaa !9
  %455 = add nsw i64 %454, 1
  store i64 %455, ptr %18, align 8, !tbaa !9
  br label %394, !llvm.loop !33

456:                                              ; preds = %394
  store i64 0, ptr %18, align 8, !tbaa !9
  br label %457

457:                                              ; preds = %530, %456
  %458 = load i64, ptr %18, align 8, !tbaa !9
  %459 = load i64, ptr %10, align 8, !tbaa !9
  %460 = sub nsw i64 %459, 1
  %461 = icmp sle i64 %458, %460
  br i1 %461, label %462, label %533

462:                                              ; preds = %457
  %463 = load ptr, ptr %9, align 8, !tbaa !5
  %464 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %463, i32 0, i32 6
  %465 = load ptr, ptr %464, align 8, !tbaa !16
  %466 = load i64, ptr %18, align 8, !tbaa !9
  %467 = getelementptr inbounds ptr, ptr %465, i64 %466
  %468 = load ptr, ptr %467, align 8, !tbaa !5
  %469 = getelementptr inbounds double, ptr %468, i64 0
  %470 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %471 = load ptr, ptr %470, align 8, !tbaa !16
  %472 = getelementptr inbounds double, ptr %471, i64 0
  %473 = load i64, ptr %12, align 8, !tbaa !9
  %474 = sub nsw i64 %473, 1
  %475 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %474)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %469, i64 noundef 1, ptr noundef %472, i64 noundef 1, i64 noundef %475)
  store i64 0, ptr %19, align 8, !tbaa !9
  br label %476

476:                                              ; preds = %526, %462
  %477 = load i64, ptr %19, align 8, !tbaa !9
  %478 = load i64, ptr %12, align 8, !tbaa !9
  %479 = sub nsw i64 %478, 1
  %480 = icmp sle i64 %477, %479
  br i1 %480, label %481, label %529

481:                                              ; preds = %476
  %482 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %27, i32 0, i32 4
  %483 = load ptr, ptr %482, align 8, !tbaa !16
  %484 = load i64, ptr %19, align 8, !tbaa !9
  %485 = getelementptr inbounds i8, ptr %483, i64 %484
  %486 = load i8, ptr %485, align 1, !tbaa !22, !range !24, !noundef !25
  %487 = trunc i8 %486 to i1
  br i1 %487, label %488, label %497

488:                                              ; preds = %481
  %489 = load ptr, ptr %9, align 8, !tbaa !5
  %490 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %489, i32 0, i32 6
  %491 = load ptr, ptr %490, align 8, !tbaa !16
  %492 = load i64, ptr %18, align 8, !tbaa !9
  %493 = getelementptr inbounds ptr, ptr %491, i64 %492
  %494 = load ptr, ptr %493, align 8, !tbaa !5
  %495 = load i64, ptr %19, align 8, !tbaa !9
  %496 = getelementptr inbounds double, ptr %494, i64 %495
  store double 0.000000e+00, ptr %496, align 8, !tbaa !17
  br label %497

497:                                              ; preds = %488, %481
  %498 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %25, i32 0, i32 4
  %499 = load ptr, ptr %498, align 8, !tbaa !16
  %500 = load i64, ptr %19, align 8, !tbaa !9
  %501 = getelementptr inbounds double, ptr %499, i64 %500
  %502 = load double, ptr %501, align 8, !tbaa !17
  %503 = load ptr, ptr %9, align 8, !tbaa !5
  %504 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %503, i32 0, i32 6
  %505 = load ptr, ptr %504, align 8, !tbaa !16
  %506 = load i64, ptr %18, align 8, !tbaa !9
  %507 = getelementptr inbounds ptr, ptr %505, i64 %506
  %508 = load ptr, ptr %507, align 8, !tbaa !5
  %509 = load i64, ptr %19, align 8, !tbaa !9
  %510 = getelementptr inbounds double, ptr %508, i64 %509
  %511 = load double, ptr %510, align 8, !tbaa !17
  %512 = load ptr, ptr %9, align 8, !tbaa !5
  %513 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %512, i32 0, i32 6
  %514 = load ptr, ptr %513, align 8, !tbaa !16
  %515 = load i64, ptr %18, align 8, !tbaa !9
  %516 = getelementptr inbounds ptr, ptr %514, i64 %515
  %517 = load ptr, ptr %516, align 8, !tbaa !5
  %518 = load i64, ptr %19, align 8, !tbaa !9
  %519 = getelementptr inbounds double, ptr %517, i64 %518
  %520 = load double, ptr %519, align 8, !tbaa !17
  %521 = call double @llvm.fmuladd.f64(double %511, double %520, double %502)
  %522 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %25, i32 0, i32 4
  %523 = load ptr, ptr %522, align 8, !tbaa !16
  %524 = load i64, ptr %19, align 8, !tbaa !9
  %525 = getelementptr inbounds double, ptr %523, i64 %524
  store double %521, ptr %525, align 8, !tbaa !17
  br label %526

526:                                              ; preds = %497
  %527 = load i64, ptr %19, align 8, !tbaa !9
  %528 = add nsw i64 %527, 1
  store i64 %528, ptr %19, align 8, !tbaa !9
  br label %476, !llvm.loop !34

529:                                              ; preds = %476
  br label %530

530:                                              ; preds = %529
  %531 = load i64, ptr %18, align 8, !tbaa !9
  %532 = add nsw i64 %531, 1
  store i64 %532, ptr %18, align 8, !tbaa !9
  br label %457, !llvm.loop !35

533:                                              ; preds = %457
  store i64 0, ptr %19, align 8, !tbaa !9
  br label %534

534:                                              ; preds = %555, %533
  %535 = load i64, ptr %19, align 8, !tbaa !9
  %536 = load i64, ptr %12, align 8, !tbaa !9
  %537 = sub nsw i64 %536, 1
  %538 = icmp sle i64 %535, %537
  br i1 %538, label %539, label %558

539:                                              ; preds = %534
  %540 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %25, i32 0, i32 4
  %541 = load ptr, ptr %540, align 8, !tbaa !16
  %542 = load i64, ptr %19, align 8, !tbaa !9
  %543 = getelementptr inbounds double, ptr %541, i64 %542
  %544 = load double, ptr %543, align 8, !tbaa !17
  %545 = load i64, ptr %10, align 8, !tbaa !9
  %546 = sub nsw i64 %545, 1
  %547 = sitofp i64 %546 to double
  %548 = fdiv double %544, %547
  %549 = load ptr, ptr %14, align 8, !tbaa !5
  %550 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %548, ptr noundef %549)
  %551 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %25, i32 0, i32 4
  %552 = load ptr, ptr %551, align 8, !tbaa !16
  %553 = load i64, ptr %19, align 8, !tbaa !9
  %554 = getelementptr inbounds double, ptr %552, i64 %553
  store double %550, ptr %554, align 8, !tbaa !17
  br label %555

555:                                              ; preds = %539
  %556 = load i64, ptr %19, align 8, !tbaa !9
  %557 = add nsw i64 %556, 1
  store i64 %557, ptr %19, align 8, !tbaa !9
  br label %534, !llvm.loop !36

558:                                              ; preds = %534
  %559 = load i64, ptr %11, align 8, !tbaa !9
  %560 = load i64, ptr %12, align 8, !tbaa !9
  %561 = load i64, ptr %10, align 8, !tbaa !9
  %562 = load i64, ptr %10, align 8, !tbaa !9
  %563 = sub nsw i64 %562, 1
  %564 = sitofp i64 %563 to double
  %565 = fdiv double 1.000000e+00, %564
  %566 = load ptr, ptr %8, align 8, !tbaa !5
  %567 = load ptr, ptr %9, align 8, !tbaa !5
  %568 = load ptr, ptr %13, align 8, !tbaa !5
  %569 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %559, i64 noundef %560, i64 noundef %561, double noundef %565, ptr noundef %566, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef %567, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %568, i64 noundef 0, i64 noundef 0, ptr noundef %569)
  store i64 0, ptr %18, align 8, !tbaa !9
  br label %570

570:                                              ; preds = %599, %558
  %571 = load i64, ptr %18, align 8, !tbaa !9
  %572 = load i64, ptr %11, align 8, !tbaa !9
  %573 = sub nsw i64 %572, 1
  %574 = icmp sle i64 %571, %573
  br i1 %574, label %575, label %602

575:                                              ; preds = %570
  %576 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %577 = load ptr, ptr %576, align 8, !tbaa !16
  %578 = load i64, ptr %18, align 8, !tbaa !9
  %579 = getelementptr inbounds double, ptr %577, i64 %578
  %580 = load double, ptr %579, align 8, !tbaa !17
  %581 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %580, double noundef 0.000000e+00)
  br i1 %581, label %582, label %593

582:                                              ; preds = %575
  %583 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %584 = load ptr, ptr %583, align 8, !tbaa !16
  %585 = load i64, ptr %18, align 8, !tbaa !9
  %586 = getelementptr inbounds double, ptr %584, i64 %585
  %587 = load double, ptr %586, align 8, !tbaa !17
  %588 = fdiv double 1.000000e+00, %587
  %589 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %590 = load ptr, ptr %589, align 8, !tbaa !16
  %591 = load i64, ptr %18, align 8, !tbaa !9
  %592 = getelementptr inbounds double, ptr %590, i64 %591
  store double %588, ptr %592, align 8, !tbaa !17
  br label %598

593:                                              ; preds = %575
  %594 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %595 = load ptr, ptr %594, align 8, !tbaa !16
  %596 = load i64, ptr %18, align 8, !tbaa !9
  %597 = getelementptr inbounds double, ptr %595, i64 %596
  store double 0.000000e+00, ptr %597, align 8, !tbaa !17
  br label %598

598:                                              ; preds = %593, %582
  br label %599

599:                                              ; preds = %598
  %600 = load i64, ptr %18, align 8, !tbaa !9
  %601 = add nsw i64 %600, 1
  store i64 %601, ptr %18, align 8, !tbaa !9
  br label %570, !llvm.loop !37

602:                                              ; preds = %570
  store i64 0, ptr %18, align 8, !tbaa !9
  br label %603

603:                                              ; preds = %632, %602
  %604 = load i64, ptr %18, align 8, !tbaa !9
  %605 = load i64, ptr %12, align 8, !tbaa !9
  %606 = sub nsw i64 %605, 1
  %607 = icmp sle i64 %604, %606
  br i1 %607, label %608, label %635

608:                                              ; preds = %603
  %609 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %25, i32 0, i32 4
  %610 = load ptr, ptr %609, align 8, !tbaa !16
  %611 = load i64, ptr %18, align 8, !tbaa !9
  %612 = getelementptr inbounds double, ptr %610, i64 %611
  %613 = load double, ptr %612, align 8, !tbaa !17
  %614 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %613, double noundef 0.000000e+00)
  br i1 %614, label %615, label %626

615:                                              ; preds = %608
  %616 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %25, i32 0, i32 4
  %617 = load ptr, ptr %616, align 8, !tbaa !16
  %618 = load i64, ptr %18, align 8, !tbaa !9
  %619 = getelementptr inbounds double, ptr %617, i64 %618
  %620 = load double, ptr %619, align 8, !tbaa !17
  %621 = fdiv double 1.000000e+00, %620
  %622 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %25, i32 0, i32 4
  %623 = load ptr, ptr %622, align 8, !tbaa !16
  %624 = load i64, ptr %18, align 8, !tbaa !9
  %625 = getelementptr inbounds double, ptr %623, i64 %624
  store double %621, ptr %625, align 8, !tbaa !17
  br label %631

626:                                              ; preds = %608
  %627 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %25, i32 0, i32 4
  %628 = load ptr, ptr %627, align 8, !tbaa !16
  %629 = load i64, ptr %18, align 8, !tbaa !9
  %630 = getelementptr inbounds double, ptr %628, i64 %629
  store double 0.000000e+00, ptr %630, align 8, !tbaa !17
  br label %631

631:                                              ; preds = %626, %615
  br label %632

632:                                              ; preds = %631
  %633 = load i64, ptr %18, align 8, !tbaa !9
  %634 = add nsw i64 %633, 1
  store i64 %634, ptr %18, align 8, !tbaa !9
  br label %603, !llvm.loop !38

635:                                              ; preds = %603
  store i64 0, ptr %18, align 8, !tbaa !9
  br label %636

636:                                              ; preds = %682, %635
  %637 = load i64, ptr %18, align 8, !tbaa !9
  %638 = load i64, ptr %11, align 8, !tbaa !9
  %639 = sub nsw i64 %638, 1
  %640 = icmp sle i64 %637, %639
  br i1 %640, label %641, label %685

641:                                              ; preds = %636
  %642 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %643 = load ptr, ptr %642, align 8, !tbaa !16
  %644 = load i64, ptr %18, align 8, !tbaa !9
  %645 = getelementptr inbounds double, ptr %643, i64 %644
  %646 = load double, ptr %645, align 8, !tbaa !17
  store double %646, ptr %20, align 8, !tbaa !17
  store i64 0, ptr %19, align 8, !tbaa !9
  br label %647

647:                                              ; preds = %678, %641
  %648 = load i64, ptr %19, align 8, !tbaa !9
  %649 = load i64, ptr %12, align 8, !tbaa !9
  %650 = sub nsw i64 %649, 1
  %651 = icmp sle i64 %648, %650
  br i1 %651, label %652, label %681

652:                                              ; preds = %647
  %653 = load ptr, ptr %13, align 8, !tbaa !5
  %654 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %653, i32 0, i32 6
  %655 = load ptr, ptr %654, align 8, !tbaa !16
  %656 = load i64, ptr %18, align 8, !tbaa !9
  %657 = getelementptr inbounds ptr, ptr %655, i64 %656
  %658 = load ptr, ptr %657, align 8, !tbaa !5
  %659 = load i64, ptr %19, align 8, !tbaa !9
  %660 = getelementptr inbounds double, ptr %658, i64 %659
  %661 = load double, ptr %660, align 8, !tbaa !17
  %662 = load double, ptr %20, align 8, !tbaa !17
  %663 = fmul double %661, %662
  %664 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %25, i32 0, i32 4
  %665 = load ptr, ptr %664, align 8, !tbaa !16
  %666 = load i64, ptr %19, align 8, !tbaa !9
  %667 = getelementptr inbounds double, ptr %665, i64 %666
  %668 = load double, ptr %667, align 8, !tbaa !17
  %669 = fmul double %663, %668
  %670 = load ptr, ptr %13, align 8, !tbaa !5
  %671 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %670, i32 0, i32 6
  %672 = load ptr, ptr %671, align 8, !tbaa !16
  %673 = load i64, ptr %18, align 8, !tbaa !9
  %674 = getelementptr inbounds ptr, ptr %672, i64 %673
  %675 = load ptr, ptr %674, align 8, !tbaa !5
  %676 = load i64, ptr %19, align 8, !tbaa !9
  %677 = getelementptr inbounds double, ptr %675, i64 %676
  store double %669, ptr %677, align 8, !tbaa !17
  br label %678

678:                                              ; preds = %652
  %679 = load i64, ptr %19, align 8, !tbaa !9
  %680 = add nsw i64 %679, 1
  store i64 %680, ptr %19, align 8, !tbaa !9
  br label %647, !llvm.loop !39

681:                                              ; preds = %647
  br label %682

682:                                              ; preds = %681
  %683 = load i64, ptr %18, align 8, !tbaa !9
  %684 = add nsw i64 %683, 1
  store i64 %684, ptr %18, align 8, !tbaa !9
  br label %636, !llvm.loop !40

685:                                              ; preds = %636
  %686 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %686)
  store i32 0, ptr %28, align 4
  br label %687

687:                                              ; preds = %685, %131
  call void @llvm.lifetime.end.p0(i64 64, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #5
  %688 = load i32, ptr %28, align 4
  switch i32 %688, label %690 [
    i32 0, label %689
    i32 1, label %689
  ]

689:                                              ; preds = %687, %687
  ret void

690:                                              ; preds = %687
  unreachable
}

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

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

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

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

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #2

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

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

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

declare void @_ZN11alglib_impl15ae_matrix_clearEPNS_9ae_matrixE(ptr noundef) #2

declare noundef zeroext i1 @_ZN11alglib_impl20apservisfinitematrixEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef, 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 void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) #2

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

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

declare void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, double noundef) #2

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

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

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

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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { 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, !10, i64 0}
!12 = !{!"_ZTSN11alglib_impl9ae_matrixE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !13, i64 32, !14, i64 40, !7, i64 72}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!15 = !{!12, !10, i64 8}
!16 = !{!7, !7, i64 0}
!17 = !{!18, !18, i64 0}
!18 = !{!"double", !7, i64 0}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = distinct !{!21, !20}
!22 = !{!13, !13, i64 0}
!23 = distinct !{!23, !20}
!24 = !{i8 0, i8 2}
!25 = !{}
!26 = distinct !{!26, !20}
!27 = distinct !{!27, !20}
!28 = distinct !{!28, !20}
!29 = distinct !{!29, !20}
!30 = distinct !{!30, !20}
!31 = distinct !{!31, !20}
!32 = distinct !{!32, !20}
!33 = distinct !{!33, !20}
!34 = distinct !{!34, !20}
!35 = distinct !{!35, !20}
!36 = distinct !{!36, !20}
!37 = distinct !{!37, !20}
!38 = distinct !{!38, !20}
!39 = distinct !{!39, !20}
!40 = distinct !{!40, !20}


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

@.str.57 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [27 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
define dso_local void @_ZN11alglib_impl13pearsoncorrm2EPNS_9ae_matrixES1_lllS1_PNS_8ae_stateE(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, ptr noundef %5, ptr noundef %6) local_unnamed_addr #1 {
  %8 = alloca %"struct.alglib_impl::ae_frame", align 8
  %9 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %10 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %11 = alloca %"struct.alglib_impl::ae_vector", align 8
  %12 = alloca %"struct.alglib_impl::ae_vector", align 8
  %13 = alloca %"struct.alglib_impl::ae_vector", align 8
  %14 = alloca %"struct.alglib_impl::ae_vector", align 8
  %15 = alloca %"struct.alglib_impl::ae_vector", align 8
  %16 = alloca %"struct.alglib_impl::ae_vector", align 8
  %17 = alloca %"struct.alglib_impl::ae_vector", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %17) #6
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %6, ptr noundef nonnull %8)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %9, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %10, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %11, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %12, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %13, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %14, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %15, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %16, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %17, i8 0, i64 64, i1 false)
  call void @_ZN11alglib_impl19ae_matrix_init_copyEPNS_9ae_matrixES1_PNS_8ae_stateEb(ptr noundef nonnull %9, ptr noundef %0, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl19ae_matrix_init_copyEPNS_9ae_matrixES1_PNS_8ae_stateEb(ptr noundef nonnull %10, ptr noundef %1, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl15ae_matrix_clearEPNS_9ae_matrixE(ptr noundef %5)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %11, i64 noundef 0, i64 noundef 3, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %12, i64 noundef 0, i64 noundef 3, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %13, i64 noundef 0, i64 noundef 3, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %14, i64 noundef 0, i64 noundef 3, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %15, i64 noundef 0, i64 noundef 3, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %16, i64 noundef 0, i64 noundef 1, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %17, i64 noundef 0, i64 noundef 1, ptr noundef %6, i1 noundef zeroext true)
  %18 = icmp sgt i64 %2, -1
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %18, ptr noundef nonnull @.str.57, ptr noundef %6)
  %19 = icmp sgt i64 %3, 0
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %19, ptr noundef nonnull @.str.58, ptr noundef %6)
  %20 = icmp sgt i64 %4, 0
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %20, ptr noundef nonnull @.str.59, ptr noundef %6)
  %21 = load i64, ptr %9, align 8, !tbaa !5
  %22 = icmp sge i64 %21, %2
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %22, ptr noundef nonnull @.str.60, ptr noundef %6)
  %23 = getelementptr inbounds i8, ptr %9, i64 8
  %24 = load i64, ptr %23, align 8, !tbaa !13
  %25 = icmp sge i64 %24, %3
  %26 = icmp eq i64 %2, 0
  %27 = or i1 %26, %25
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %27, ptr noundef nonnull @.str.61, ptr noundef %6)
  %28 = call noundef zeroext i1 @_ZN11alglib_impl20apservisfinitematrixEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %2, i64 noundef %3, ptr noundef %6)
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %28, ptr noundef nonnull @.str.62, ptr noundef %6)
  %29 = load i64, ptr %10, align 8, !tbaa !5
  %30 = icmp sge i64 %29, %2
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %30, ptr noundef nonnull @.str.63, ptr noundef %6)
  %31 = getelementptr inbounds i8, ptr %10, i64 8
  %32 = load i64, ptr %31, align 8, !tbaa !13
  %33 = icmp sge i64 %32, %4
  %34 = or i1 %26, %33
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %34, ptr noundef nonnull @.str.64, ptr noundef %6)
  %35 = call noundef zeroext i1 @_ZN11alglib_impl20apservisfinitematrixEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %2, i64 noundef %4, ptr noundef %6)
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %35, ptr noundef nonnull @.str.62, ptr noundef %6)
  %36 = icmp slt i64 %2, 2
  br i1 %36, label %37, label %66

37:                                               ; preds = %7
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %5, i64 noundef %3, i64 noundef %4, ptr noundef %6)
  br i1 %19, label %.preheader.lr.ph, label %._crit_edge328

.preheader.lr.ph:                                 ; preds = %37
  %38 = getelementptr inbounds i8, ptr %5, i64 72
  br i1 %20, label %.preheader.us.preheader, label %._crit_edge328

.preheader.us.preheader:                          ; preds = %.preheader.lr.ph
  %xtraiter374 = and i64 %4, 3
  %39 = icmp ult i64 %4, 4
  %unroll_iter376 = and i64 %4, 9223372036854775804
  %lcmp.mod375.not = icmp eq i64 %xtraiter374, 0
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us.preheader, %._crit_edge325.us
  %.0221327.us = phi i64 [ %65, %._crit_edge325.us ], [ 0, %.preheader.us.preheader ]
  br i1 %39, label %._crit_edge325.us.unr-lcssa, label %.preheader.us.new

.preheader.us.new:                                ; preds = %.preheader.us, %.preheader.us.new
  %.0323.us = phi i64 [ %59, %.preheader.us.new ], [ 0, %.preheader.us ]
  %niter377 = phi i64 [ %niter377.next.3, %.preheader.us.new ], [ 0, %.preheader.us ]
  %40 = load ptr, ptr %38, align 8, !tbaa !14
  %41 = getelementptr inbounds ptr, ptr %40, i64 %.0221327.us
  %42 = load ptr, ptr %41, align 8, !tbaa !15
  %43 = getelementptr inbounds double, ptr %42, i64 %.0323.us
  store double 0.000000e+00, ptr %43, align 8, !tbaa !16
  %44 = or disjoint i64 %.0323.us, 1
  %45 = load ptr, ptr %38, align 8, !tbaa !14
  %46 = getelementptr inbounds ptr, ptr %45, i64 %.0221327.us
  %47 = load ptr, ptr %46, align 8, !tbaa !15
  %48 = getelementptr inbounds double, ptr %47, i64 %44
  store double 0.000000e+00, ptr %48, align 8, !tbaa !16
  %49 = or disjoint i64 %.0323.us, 2
  %50 = load ptr, ptr %38, align 8, !tbaa !14
  %51 = getelementptr inbounds ptr, ptr %50, i64 %.0221327.us
  %52 = load ptr, ptr %51, align 8, !tbaa !15
  %53 = getelementptr inbounds double, ptr %52, i64 %49
  store double 0.000000e+00, ptr %53, align 8, !tbaa !16
  %54 = or disjoint i64 %.0323.us, 3
  %55 = load ptr, ptr %38, align 8, !tbaa !14
  %56 = getelementptr inbounds ptr, ptr %55, i64 %.0221327.us
  %57 = load ptr, ptr %56, align 8, !tbaa !15
  %58 = getelementptr inbounds double, ptr %57, i64 %54
  store double 0.000000e+00, ptr %58, align 8, !tbaa !16
  %59 = add nuw nsw i64 %.0323.us, 4
  %niter377.next.3 = add i64 %niter377, 4
  %niter377.ncmp.3 = icmp eq i64 %niter377.next.3, %unroll_iter376
  br i1 %niter377.ncmp.3, label %._crit_edge325.us.unr-lcssa, label %.preheader.us.new, !llvm.loop !18

._crit_edge325.us.unr-lcssa:                      ; preds = %.preheader.us.new, %.preheader.us
  %.0323.us.unr = phi i64 [ 0, %.preheader.us ], [ %59, %.preheader.us.new ]
  br i1 %lcmp.mod375.not, label %._crit_edge325.us, label %.epil.preheader373

.epil.preheader373:                               ; preds = %._crit_edge325.us.unr-lcssa, %.epil.preheader373
  %.0323.us.epil = phi i64 [ %64, %.epil.preheader373 ], [ %.0323.us.unr, %._crit_edge325.us.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader373 ], [ 0, %._crit_edge325.us.unr-lcssa ]
  %60 = load ptr, ptr %38, align 8, !tbaa !14
  %61 = getelementptr inbounds ptr, ptr %60, i64 %.0221327.us
  %62 = load ptr, ptr %61, align 8, !tbaa !15
  %63 = getelementptr inbounds double, ptr %62, i64 %.0323.us.epil
  store double 0.000000e+00, ptr %63, align 8, !tbaa !16
  %64 = add nuw nsw i64 %.0323.us.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter374
  br i1 %epil.iter.cmp.not, label %._crit_edge325.us, label %.epil.preheader373, !llvm.loop !20

._crit_edge325.us:                                ; preds = %.epil.preheader373, %._crit_edge325.us.unr-lcssa
  %65 = add nuw nsw i64 %.0221327.us, 1
  %exitcond350.not = icmp eq i64 %65, %3
  br i1 %exitcond350.not, label %._crit_edge328, label %.preheader.us, !llvm.loop !22

66:                                               ; preds = %7
  %67 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %3, i64 noundef %4, ptr noundef %6)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %67, ptr noundef %6)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %3, ptr noundef %6)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %4, ptr noundef %6)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %14, i64 noundef %3, ptr noundef %6)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %15, i64 noundef %4, ptr noundef %6)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %3, ptr noundef %6)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %17, i64 noundef %4, ptr noundef %6)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %5, i64 noundef %3, i64 noundef %4, ptr noundef %6)
  br i1 %19, label %.lr.ph, label %.lr.ph269

.lr.ph:                                           ; preds = %66
  %68 = getelementptr inbounds i8, ptr %11, i64 56
  %69 = getelementptr inbounds i8, ptr %16, i64 56
  %70 = getelementptr inbounds i8, ptr %14, i64 56
  %xtraiter = and i64 %3, 1
  %71 = icmp eq i64 %3, 1
  br i1 %71, label %.lr.ph269.loopexit.unr-lcssa, label %.lr.ph.new

.lr.ph.new:                                       ; preds = %.lr.ph
  %unroll_iter = and i64 %3, 9223372036854775806
  br label %72

72:                                               ; preds = %72, %.lr.ph.new
  %.1222260 = phi i64 [ 0, %.lr.ph.new ], [ %86, %72 ]
  %niter = phi i64 [ 0, %.lr.ph.new ], [ %niter.next.1, %72 ]
  %73 = load ptr, ptr %68, align 8, !tbaa !14
  %74 = getelementptr inbounds double, ptr %73, i64 %.1222260
  store double 0.000000e+00, ptr %74, align 8, !tbaa !16
  %75 = load ptr, ptr %69, align 8, !tbaa !14
  %76 = getelementptr inbounds i8, ptr %75, i64 %.1222260
  store i8 1, ptr %76, align 1, !tbaa !23
  %77 = load ptr, ptr %70, align 8, !tbaa !14
  %78 = getelementptr inbounds double, ptr %77, i64 %.1222260
  store double 0.000000e+00, ptr %78, align 8, !tbaa !16
  %79 = or disjoint i64 %.1222260, 1
  %80 = load ptr, ptr %68, align 8, !tbaa !14
  %81 = getelementptr inbounds double, ptr %80, i64 %79
  store double 0.000000e+00, ptr %81, align 8, !tbaa !16
  %82 = load ptr, ptr %69, align 8, !tbaa !14
  %83 = getelementptr inbounds i8, ptr %82, i64 %79
  store i8 1, ptr %83, align 1, !tbaa !23
  %84 = load ptr, ptr %70, align 8, !tbaa !14
  %85 = getelementptr inbounds double, ptr %84, i64 %79
  store double 0.000000e+00, ptr %85, align 8, !tbaa !16
  %86 = add nuw nsw i64 %.1222260, 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 %.lr.ph269.loopexit.unr-lcssa, label %72, !llvm.loop !24

.lr.ph269.loopexit.unr-lcssa:                     ; preds = %72, %.lr.ph
  %.1222260.unr = phi i64 [ 0, %.lr.ph ], [ %86, %72 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph269, label %.lr.ph269.loopexit.epilog-lcssa

.lr.ph269.loopexit.epilog-lcssa:                  ; preds = %.lr.ph269.loopexit.unr-lcssa
  %87 = load ptr, ptr %68, align 8, !tbaa !14
  %88 = getelementptr inbounds double, ptr %87, i64 %.1222260.unr
  store double 0.000000e+00, ptr %88, align 8, !tbaa !16
  %89 = load ptr, ptr %69, align 8, !tbaa !14
  %90 = getelementptr inbounds i8, ptr %89, i64 %.1222260.unr
  store i8 1, ptr %90, align 1, !tbaa !23
  %91 = load ptr, ptr %70, align 8, !tbaa !14
  %92 = getelementptr inbounds double, ptr %91, i64 %.1222260.unr
  store double 0.000000e+00, ptr %92, align 8, !tbaa !16
  br label %.lr.ph269

.lr.ph269:                                        ; preds = %.lr.ph269.loopexit.epilog-lcssa, %.lr.ph269.loopexit.unr-lcssa, %66
  %93 = add nsw i64 %3, -1
  %94 = getelementptr inbounds i8, ptr %12, i64 56
  %95 = load ptr, ptr %94, align 8, !tbaa !14
  %96 = getelementptr inbounds i8, ptr %9, i64 72
  %97 = load ptr, ptr %96, align 8, !tbaa !14
  %98 = load ptr, ptr %97, align 8, !tbaa !15
  %99 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %93)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %95, i64 noundef 1, ptr noundef %98, i64 noundef 1, i64 noundef %99)
  %100 = uitofp nneg i64 %2 to double
  %101 = fdiv double 1.000000e+00, %100
  %102 = getelementptr inbounds i8, ptr %11, i64 56
  %103 = getelementptr inbounds i8, ptr %16, i64 56
  %smax = call i64 @llvm.smax.i64(i64 %2, i64 1)
  br label %108

.lr.ph277:                                        ; preds = %._crit_edge265
  %104 = add nsw i64 %2, -1
  %105 = getelementptr inbounds i8, ptr %11, i64 56
  %106 = getelementptr inbounds i8, ptr %16, i64 56
  %107 = getelementptr inbounds i8, ptr %14, i64 56
  %smax334 = call i64 @llvm.smax.i64(i64 %2, i64 1)
  br label %.backedge357

108:                                              ; preds = %.lr.ph269, %._crit_edge265
  %.2223267 = phi i64 [ 0, %.lr.ph269 ], [ %134, %._crit_edge265 ]
  %109 = load ptr, ptr %102, align 8, !tbaa !14
  %110 = load ptr, ptr %96, align 8, !tbaa !14
  %111 = getelementptr inbounds ptr, ptr %110, i64 %.2223267
  %112 = load ptr, ptr %111, align 8, !tbaa !15
  %113 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %93)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %109, i64 noundef 1, ptr noundef %112, i64 noundef 1, i64 noundef %113, double noundef %101)
  br i1 %19, label %.lr.ph264, label %._crit_edge265

.lr.ph264:                                        ; preds = %108, %128
  %.1262 = phi i64 [ %133, %128 ], [ 0, %108 ]
  %114 = load ptr, ptr %103, align 8, !tbaa !14
  %115 = getelementptr inbounds i8, ptr %114, i64 %.1262
  %116 = load i8, ptr %115, align 1, !tbaa !23, !range !25, !noundef !26
  %117 = trunc nuw i8 %116 to i1
  br i1 %117, label %118, label %128

118:                                              ; preds = %.lr.ph264
  %119 = load ptr, ptr %96, align 8, !tbaa !14
  %120 = getelementptr inbounds ptr, ptr %119, i64 %.2223267
  %121 = load ptr, ptr %120, align 8, !tbaa !15
  %122 = getelementptr inbounds double, ptr %121, i64 %.1262
  %123 = load double, ptr %122, align 8, !tbaa !16
  %124 = load ptr, ptr %94, align 8, !tbaa !14
  %125 = getelementptr inbounds double, ptr %124, i64 %.1262
  %126 = load double, ptr %125, align 8, !tbaa !16
  %127 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %123, double noundef %126)
  %.pre = load ptr, ptr %103, align 8, !tbaa !14
  br label %128

128:                                              ; preds = %118, %.lr.ph264
  %129 = phi ptr [ %114, %.lr.ph264 ], [ %.pre, %118 ]
  %130 = phi i1 [ false, %.lr.ph264 ], [ %127, %118 ]
  %131 = getelementptr inbounds i8, ptr %129, i64 %.1262
  %132 = zext i1 %130 to i8
  store i8 %132, ptr %131, align 1, !tbaa !23
  %133 = add nuw nsw i64 %.1262, 1
  %exitcond331.not = icmp eq i64 %133, %3
  br i1 %exitcond331.not, label %._crit_edge265, label %.lr.ph264, !llvm.loop !27

._crit_edge265:                                   ; preds = %128, %108
  %134 = add nuw nsw i64 %.2223267, 1
  %exitcond332.not = icmp eq i64 %134, %smax
  br i1 %exitcond332.not, label %.lr.ph277, label %108, !llvm.loop !28

.preheader255:                                    ; preds = %._crit_edge274
  br i1 %19, label %.lr.ph280, label %.preheader254

.lr.ph280:                                        ; preds = %.preheader255
  %135 = getelementptr inbounds i8, ptr %14, i64 56
  %136 = uitofp nneg i64 %104 to double
  br label %168

.backedge357:                                     ; preds = %.backedge357.backedge, %.lr.ph277
  %.3224276 = phi i64 [ 0, %.lr.ph277 ], [ %.3224276.be, %.backedge357.backedge ]
  %137 = load ptr, ptr %96, align 8, !tbaa !14
  %138 = getelementptr inbounds ptr, ptr %137, i64 %.3224276
  %139 = load ptr, ptr %138, align 8, !tbaa !15
  %140 = load ptr, ptr %105, align 8, !tbaa !14
  %141 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %93)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %139, i64 noundef 1, ptr noundef %140, i64 noundef 1, i64 noundef %141)
  br i1 %19, label %.lr.ph273, label %._crit_edge274.thread

.lr.ph273:                                        ; preds = %.backedge357, %151
  %.2271 = phi i64 [ %161, %151 ], [ 0, %.backedge357 ]
  %142 = load ptr, ptr %106, align 8, !tbaa !14
  %143 = getelementptr inbounds i8, ptr %142, i64 %.2271
  %144 = load i8, ptr %143, align 1, !tbaa !23, !range !25, !noundef !26
  %145 = trunc nuw i8 %144 to i1
  br i1 %145, label %146, label %151

146:                                              ; preds = %.lr.ph273
  %147 = load ptr, ptr %96, align 8, !tbaa !14
  %148 = getelementptr inbounds ptr, ptr %147, i64 %.3224276
  %149 = load ptr, ptr %148, align 8, !tbaa !15
  %150 = getelementptr inbounds double, ptr %149, i64 %.2271
  store double 0.000000e+00, ptr %150, align 8, !tbaa !16
  br label %151

151:                                              ; preds = %146, %.lr.ph273
  %152 = load ptr, ptr %107, align 8, !tbaa !14
  %153 = getelementptr inbounds double, ptr %152, i64 %.2271
  %154 = load double, ptr %153, align 8, !tbaa !16
  %155 = load ptr, ptr %96, align 8, !tbaa !14
  %156 = getelementptr inbounds ptr, ptr %155, i64 %.3224276
  %157 = load ptr, ptr %156, align 8, !tbaa !15
  %158 = getelementptr inbounds double, ptr %157, i64 %.2271
  %159 = load double, ptr %158, align 8, !tbaa !16
  %160 = call double @llvm.fmuladd.f64(double %159, double %159, double %154)
  store double %160, ptr %153, align 8, !tbaa !16
  %161 = add nuw nsw i64 %.2271, 1
  %exitcond333.not = icmp eq i64 %161, %3
  br i1 %exitcond333.not, label %._crit_edge274, label %.lr.ph273, !llvm.loop !29

._crit_edge274:                                   ; preds = %151
  %162 = add nuw nsw i64 %.3224276, 1
  %exitcond335.not = icmp eq i64 %162, %smax334
  br i1 %exitcond335.not, label %.preheader255, label %.backedge357.backedge

.backedge357.backedge:                            ; preds = %._crit_edge274, %._crit_edge274.thread
  %.3224276.be = phi i64 [ %162, %._crit_edge274 ], [ %163, %._crit_edge274.thread ]
  br label %.backedge357, !llvm.loop !30

._crit_edge274.thread:                            ; preds = %.backedge357
  %163 = add nuw nsw i64 %.3224276, 1
  %exitcond335.not353 = icmp eq i64 %163, %smax334
  br i1 %exitcond335.not353, label %.preheader254, label %.backedge357.backedge

.preheader254:                                    ; preds = %._crit_edge274.thread, %168, %.preheader255
  br i1 %20, label %.lr.ph283, label %.lr.ph293

.lr.ph283:                                        ; preds = %.preheader254
  %164 = getelementptr inbounds i8, ptr %11, i64 56
  %165 = getelementptr inbounds i8, ptr %17, i64 56
  %166 = getelementptr inbounds i8, ptr %15, i64 56
  %xtraiter364 = and i64 %4, 1
  %167 = icmp eq i64 %4, 1
  br i1 %167, label %.lr.ph293.loopexit.unr-lcssa, label %.lr.ph283.new

.lr.ph283.new:                                    ; preds = %.lr.ph283
  %unroll_iter366 = and i64 %4, 9223372036854775806
  br label %177

168:                                              ; preds = %.lr.ph280, %168
  %.3279 = phi i64 [ 0, %.lr.ph280 ], [ %176, %168 ]
  %169 = load ptr, ptr %135, align 8, !tbaa !14
  %170 = getelementptr inbounds double, ptr %169, i64 %.3279
  %171 = load double, ptr %170, align 8, !tbaa !16
  %172 = fdiv double %171, %136
  %173 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %172, ptr noundef %6)
  %174 = load ptr, ptr %135, align 8, !tbaa !14
  %175 = getelementptr inbounds double, ptr %174, i64 %.3279
  store double %173, ptr %175, align 8, !tbaa !16
  %176 = add nuw nsw i64 %.3279, 1
  %exitcond336.not = icmp eq i64 %176, %3
  br i1 %exitcond336.not, label %.preheader254, label %168, !llvm.loop !31

177:                                              ; preds = %177, %.lr.ph283.new
  %.4225282 = phi i64 [ 0, %.lr.ph283.new ], [ %191, %177 ]
  %niter367 = phi i64 [ 0, %.lr.ph283.new ], [ %niter367.next.1, %177 ]
  %178 = load ptr, ptr %164, align 8, !tbaa !14
  %179 = getelementptr inbounds double, ptr %178, i64 %.4225282
  store double 0.000000e+00, ptr %179, align 8, !tbaa !16
  %180 = load ptr, ptr %165, align 8, !tbaa !14
  %181 = getelementptr inbounds i8, ptr %180, i64 %.4225282
  store i8 1, ptr %181, align 1, !tbaa !23
  %182 = load ptr, ptr %166, align 8, !tbaa !14
  %183 = getelementptr inbounds double, ptr %182, i64 %.4225282
  store double 0.000000e+00, ptr %183, align 8, !tbaa !16
  %184 = or disjoint i64 %.4225282, 1
  %185 = load ptr, ptr %164, align 8, !tbaa !14
  %186 = getelementptr inbounds double, ptr %185, i64 %184
  store double 0.000000e+00, ptr %186, align 8, !tbaa !16
  %187 = load ptr, ptr %165, align 8, !tbaa !14
  %188 = getelementptr inbounds i8, ptr %187, i64 %184
  store i8 1, ptr %188, align 1, !tbaa !23
  %189 = load ptr, ptr %166, align 8, !tbaa !14
  %190 = getelementptr inbounds double, ptr %189, i64 %184
  store double 0.000000e+00, ptr %190, align 8, !tbaa !16
  %191 = add nuw nsw i64 %.4225282, 2
  %niter367.next.1 = add i64 %niter367, 2
  %niter367.ncmp.1 = icmp eq i64 %niter367.next.1, %unroll_iter366
  br i1 %niter367.ncmp.1, label %.lr.ph293.loopexit.unr-lcssa, label %177, !llvm.loop !32

.lr.ph293.loopexit.unr-lcssa:                     ; preds = %177, %.lr.ph283
  %.4225282.unr = phi i64 [ 0, %.lr.ph283 ], [ %191, %177 ]
  %lcmp.mod365.not = icmp eq i64 %xtraiter364, 0
  br i1 %lcmp.mod365.not, label %.lr.ph293, label %.lr.ph293.loopexit.epilog-lcssa

.lr.ph293.loopexit.epilog-lcssa:                  ; preds = %.lr.ph293.loopexit.unr-lcssa
  %192 = load ptr, ptr %164, align 8, !tbaa !14
  %193 = getelementptr inbounds double, ptr %192, i64 %.4225282.unr
  store double 0.000000e+00, ptr %193, align 8, !tbaa !16
  %194 = load ptr, ptr %165, align 8, !tbaa !14
  %195 = getelementptr inbounds i8, ptr %194, i64 %.4225282.unr
  store i8 1, ptr %195, align 1, !tbaa !23
  %196 = load ptr, ptr %166, align 8, !tbaa !14
  %197 = getelementptr inbounds double, ptr %196, i64 %.4225282.unr
  store double 0.000000e+00, ptr %197, align 8, !tbaa !16
  br label %.lr.ph293

.lr.ph293:                                        ; preds = %.lr.ph293.loopexit.epilog-lcssa, %.lr.ph293.loopexit.unr-lcssa, %.preheader254
  %198 = add nsw i64 %4, -1
  %199 = getelementptr inbounds i8, ptr %13, i64 56
  %200 = load ptr, ptr %199, align 8, !tbaa !14
  %201 = getelementptr inbounds i8, ptr %10, i64 72
  %202 = load ptr, ptr %201, align 8, !tbaa !14
  %203 = load ptr, ptr %202, align 8, !tbaa !15
  %204 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %198)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %200, i64 noundef 1, ptr noundef %203, i64 noundef 1, i64 noundef %204)
  %205 = getelementptr inbounds i8, ptr %11, i64 56
  %206 = getelementptr inbounds i8, ptr %17, i64 56
  %smax339 = call i64 @llvm.smax.i64(i64 %2, i64 1)
  br label %210

.lr.ph301:                                        ; preds = %._crit_edge289
  %207 = getelementptr inbounds i8, ptr %11, i64 56
  %208 = getelementptr inbounds i8, ptr %17, i64 56
  %209 = getelementptr inbounds i8, ptr %15, i64 56
  %smax342 = call i64 @llvm.smax.i64(i64 %2, i64 1)
  br label %.backedge

210:                                              ; preds = %.lr.ph293, %._crit_edge289
  %.5226291 = phi i64 [ 0, %.lr.ph293 ], [ %236, %._crit_edge289 ]
  %211 = load ptr, ptr %205, align 8, !tbaa !14
  %212 = load ptr, ptr %201, align 8, !tbaa !14
  %213 = getelementptr inbounds ptr, ptr %212, i64 %.5226291
  %214 = load ptr, ptr %213, align 8, !tbaa !15
  %215 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %198)
  call void @_ZN11alglib_impl9ae_v_adddEPdlPKdlld(ptr noundef %211, i64 noundef 1, ptr noundef %214, i64 noundef 1, i64 noundef %215, double noundef %101)
  br i1 %20, label %.lr.ph288, label %._crit_edge289

.lr.ph288:                                        ; preds = %210, %230
  %.4286 = phi i64 [ %235, %230 ], [ 0, %210 ]
  %216 = load ptr, ptr %206, align 8, !tbaa !14
  %217 = getelementptr inbounds i8, ptr %216, i64 %.4286
  %218 = load i8, ptr %217, align 1, !tbaa !23, !range !25, !noundef !26
  %219 = trunc nuw i8 %218 to i1
  br i1 %219, label %220, label %230

220:                                              ; preds = %.lr.ph288
  %221 = load ptr, ptr %201, align 8, !tbaa !14
  %222 = getelementptr inbounds ptr, ptr %221, i64 %.5226291
  %223 = load ptr, ptr %222, align 8, !tbaa !15
  %224 = getelementptr inbounds double, ptr %223, i64 %.4286
  %225 = load double, ptr %224, align 8, !tbaa !16
  %226 = load ptr, ptr %199, align 8, !tbaa !14
  %227 = getelementptr inbounds double, ptr %226, i64 %.4286
  %228 = load double, ptr %227, align 8, !tbaa !16
  %229 = call noundef zeroext i1 @_ZN11alglib_impl8ae_fp_eqEdd(double noundef %225, double noundef %228)
  %.pre351 = load ptr, ptr %206, align 8, !tbaa !14
  br label %230

230:                                              ; preds = %220, %.lr.ph288
  %231 = phi ptr [ %216, %.lr.ph288 ], [ %.pre351, %220 ]
  %232 = phi i1 [ false, %.lr.ph288 ], [ %229, %220 ]
  %233 = getelementptr inbounds i8, ptr %231, i64 %.4286
  %234 = zext i1 %232 to i8
  store i8 %234, ptr %233, align 1, !tbaa !23
  %235 = add nuw nsw i64 %.4286, 1
  %exitcond338.not = icmp eq i64 %235, %4
  br i1 %exitcond338.not, label %._crit_edge289, label %.lr.ph288, !llvm.loop !33

._crit_edge289:                                   ; preds = %230, %210
  %236 = add nuw nsw i64 %.5226291, 1
  %exitcond340.not = icmp eq i64 %236, %smax339
  br i1 %exitcond340.not, label %.lr.ph301, label %210, !llvm.loop !34

.preheader252:                                    ; preds = %._crit_edge298
  br i1 %20, label %.lr.ph304, label %._crit_edge305.thread

.lr.ph304:                                        ; preds = %.preheader252
  %237 = getelementptr inbounds i8, ptr %15, i64 56
  %238 = uitofp nneg i64 %104 to double
  br label %266

.backedge:                                        ; preds = %.backedge.backedge, %.lr.ph301
  %.6227300 = phi i64 [ 0, %.lr.ph301 ], [ %.6227300.be, %.backedge.backedge ]
  %239 = load ptr, ptr %201, align 8, !tbaa !14
  %240 = getelementptr inbounds ptr, ptr %239, i64 %.6227300
  %241 = load ptr, ptr %240, align 8, !tbaa !15
  %242 = load ptr, ptr %207, align 8, !tbaa !14
  %243 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %198)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %241, i64 noundef 1, ptr noundef %242, i64 noundef 1, i64 noundef %243)
  br i1 %20, label %.lr.ph297, label %._crit_edge298.thread

.lr.ph297:                                        ; preds = %.backedge, %253
  %.5295 = phi i64 [ %263, %253 ], [ 0, %.backedge ]
  %244 = load ptr, ptr %208, align 8, !tbaa !14
  %245 = getelementptr inbounds i8, ptr %244, i64 %.5295
  %246 = load i8, ptr %245, align 1, !tbaa !23, !range !25, !noundef !26
  %247 = trunc nuw i8 %246 to i1
  br i1 %247, label %248, label %253

248:                                              ; preds = %.lr.ph297
  %249 = load ptr, ptr %201, align 8, !tbaa !14
  %250 = getelementptr inbounds ptr, ptr %249, i64 %.6227300
  %251 = load ptr, ptr %250, align 8, !tbaa !15
  %252 = getelementptr inbounds double, ptr %251, i64 %.5295
  store double 0.000000e+00, ptr %252, align 8, !tbaa !16
  br label %253

253:                                              ; preds = %248, %.lr.ph297
  %254 = load ptr, ptr %209, align 8, !tbaa !14
  %255 = getelementptr inbounds double, ptr %254, i64 %.5295
  %256 = load double, ptr %255, align 8, !tbaa !16
  %257 = load ptr, ptr %201, align 8, !tbaa !14
  %258 = getelementptr inbounds ptr, ptr %257, i64 %.6227300
  %259 = load ptr, ptr %258, align 8, !tbaa !15
  %260 = getelementptr inbounds double, ptr %259, i64 %.5295
  %261 = load double, ptr %260, align 8, !tbaa !16
  %262 = call double @llvm.fmuladd.f64(double %261, double %261, double %256)
  store double %262, ptr %255, align 8, !tbaa !16
  %263 = add nuw nsw i64 %.5295, 1
  %exitcond341.not = icmp eq i64 %263, %4
  br i1 %exitcond341.not, label %._crit_edge298, label %.lr.ph297, !llvm.loop !35

._crit_edge298:                                   ; preds = %253
  %264 = add nuw nsw i64 %.6227300, 1
  %exitcond343.not = icmp eq i64 %264, %smax342
  br i1 %exitcond343.not, label %.preheader252, label %.backedge.backedge

.backedge.backedge:                               ; preds = %._crit_edge298, %._crit_edge298.thread
  %.6227300.be = phi i64 [ %264, %._crit_edge298 ], [ %265, %._crit_edge298.thread ]
  br label %.backedge, !llvm.loop !36

._crit_edge298.thread:                            ; preds = %.backedge
  %265 = add nuw nsw i64 %.6227300, 1
  %exitcond343.not354 = icmp eq i64 %265, %smax342
  br i1 %exitcond343.not354, label %._crit_edge305.thread, label %.backedge.backedge

266:                                              ; preds = %.lr.ph304, %266
  %.6303 = phi i64 [ 0, %.lr.ph304 ], [ %274, %266 ]
  %267 = load ptr, ptr %237, align 8, !tbaa !14
  %268 = getelementptr inbounds double, ptr %267, i64 %.6303
  %269 = load double, ptr %268, align 8, !tbaa !16
  %270 = fdiv double %269, %238
  %271 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %270, ptr noundef %6)
  %272 = load ptr, ptr %237, align 8, !tbaa !14
  %273 = getelementptr inbounds double, ptr %272, i64 %.6303
  store double %271, ptr %273, align 8, !tbaa !16
  %274 = add nuw nsw i64 %.6303, 1
  %exitcond344.not = icmp eq i64 %274, %4
  br i1 %exitcond344.not, label %._crit_edge305, label %266, !llvm.loop !37

._crit_edge305:                                   ; preds = %266
  %275 = fdiv double 1.000000e+00, %238
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %3, i64 noundef %4, i64 noundef %2, double noundef %275, ptr noundef nonnull %9, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %10, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %5, i64 noundef 0, i64 noundef 0, ptr noundef %6)
  br i1 %19, label %.lr.ph309, label %.preheader251.thread

._crit_edge305.thread:                            ; preds = %._crit_edge298.thread, %.preheader252
  %.pre352 = uitofp nneg i64 %104 to double
  %276 = fdiv double 1.000000e+00, %.pre352
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %3, i64 noundef %4, i64 noundef %2, double noundef %276, ptr noundef nonnull %9, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %10, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %5, i64 noundef 0, i64 noundef 0, ptr noundef %6)
  br i1 %19, label %.lr.ph309, label %._crit_edge328

.lr.ph309:                                        ; preds = %._crit_edge305.thread, %._crit_edge305
  %277 = getelementptr inbounds i8, ptr %14, i64 56
  br label %279

.preheader251:                                    ; preds = %289
  br i1 %20, label %.lr.ph312, label %._crit_edge328

.preheader251.thread:                             ; preds = %._crit_edge305
  br i1 %20, label %.lr.ph312, label %._crit_edge328

.lr.ph312:                                        ; preds = %.preheader251.thread, %.preheader251
  %278 = getelementptr inbounds i8, ptr %15, i64 56
  br label %331

279:                                              ; preds = %.lr.ph309, %289
  %.7228307 = phi i64 [ 0, %.lr.ph309 ], [ %290, %289 ]
  %280 = load ptr, ptr %277, align 8, !tbaa !14
  %281 = getelementptr inbounds double, ptr %280, i64 %.7228307
  %282 = load double, ptr %281, align 8, !tbaa !16
  %283 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %282, double noundef 0.000000e+00)
  %284 = load ptr, ptr %277, align 8, !tbaa !14
  %285 = getelementptr inbounds double, ptr %284, i64 %.7228307
  br i1 %283, label %286, label %289

286:                                              ; preds = %279
  %287 = load double, ptr %285, align 8, !tbaa !16
  %288 = fdiv double 1.000000e+00, %287
  br label %289

289:                                              ; preds = %279, %286
  %.sink = phi double [ %288, %286 ], [ 0.000000e+00, %279 ]
  store double %.sink, ptr %285, align 8, !tbaa !16
  %290 = add nuw nsw i64 %.7228307, 1
  %exitcond345.not = icmp eq i64 %290, %3
  br i1 %exitcond345.not, label %.preheader251, label %279, !llvm.loop !38

.preheader250:                                    ; preds = %341
  br i1 %19, label %.lr.ph320, label %._crit_edge328

.lr.ph320:                                        ; preds = %.preheader250
  %291 = getelementptr inbounds i8, ptr %14, i64 56
  %292 = getelementptr inbounds i8, ptr %5, i64 72
  %293 = getelementptr inbounds i8, ptr %15, i64 56
  br i1 %20, label %.lr.ph316.us.preheader, label %._crit_edge328

.lr.ph316.us.preheader:                           ; preds = %.lr.ph320
  %xtraiter369 = and i64 %4, 1
  %294 = icmp eq i64 %4, 1
  %unroll_iter371 = and i64 %4, 9223372036854775806
  %lcmp.mod370.not = icmp eq i64 %xtraiter369, 0
  br label %.lr.ph316.us

.lr.ph316.us:                                     ; preds = %.lr.ph316.us.preheader, %._crit_edge317.us
  %.9319.us = phi i64 [ %330, %._crit_edge317.us ], [ 0, %.lr.ph316.us.preheader ]
  %295 = load ptr, ptr %291, align 8, !tbaa !14
  %296 = getelementptr inbounds double, ptr %295, i64 %.9319.us
  %297 = load double, ptr %296, align 8, !tbaa !16
  br i1 %294, label %._crit_edge317.us.unr-lcssa, label %.lr.ph316.us.new

.lr.ph316.us.new:                                 ; preds = %.lr.ph316.us, %.lr.ph316.us.new
  %.7314.us = phi i64 [ %319, %.lr.ph316.us.new ], [ 0, %.lr.ph316.us ]
  %niter372 = phi i64 [ %niter372.next.1, %.lr.ph316.us.new ], [ 0, %.lr.ph316.us ]
  %298 = load ptr, ptr %292, align 8, !tbaa !14
  %299 = getelementptr inbounds ptr, ptr %298, i64 %.9319.us
  %300 = load ptr, ptr %299, align 8, !tbaa !15
  %301 = getelementptr inbounds double, ptr %300, i64 %.7314.us
  %302 = load double, ptr %301, align 8, !tbaa !16
  %303 = fmul double %297, %302
  %304 = load ptr, ptr %293, align 8, !tbaa !14
  %305 = getelementptr inbounds double, ptr %304, i64 %.7314.us
  %306 = load double, ptr %305, align 8, !tbaa !16
  %307 = fmul double %303, %306
  store double %307, ptr %301, align 8, !tbaa !16
  %308 = or disjoint i64 %.7314.us, 1
  %309 = load ptr, ptr %292, align 8, !tbaa !14
  %310 = getelementptr inbounds ptr, ptr %309, i64 %.9319.us
  %311 = load ptr, ptr %310, align 8, !tbaa !15
  %312 = getelementptr inbounds double, ptr %311, i64 %308
  %313 = load double, ptr %312, align 8, !tbaa !16
  %314 = fmul double %297, %313
  %315 = load ptr, ptr %293, align 8, !tbaa !14
  %316 = getelementptr inbounds double, ptr %315, i64 %308
  %317 = load double, ptr %316, align 8, !tbaa !16
  %318 = fmul double %314, %317
  store double %318, ptr %312, align 8, !tbaa !16
  %319 = add nuw nsw i64 %.7314.us, 2
  %niter372.next.1 = add i64 %niter372, 2
  %niter372.ncmp.1 = icmp eq i64 %niter372.next.1, %unroll_iter371
  br i1 %niter372.ncmp.1, label %._crit_edge317.us.unr-lcssa, label %.lr.ph316.us.new, !llvm.loop !39

._crit_edge317.us.unr-lcssa:                      ; preds = %.lr.ph316.us.new, %.lr.ph316.us
  %.7314.us.unr = phi i64 [ 0, %.lr.ph316.us ], [ %319, %.lr.ph316.us.new ]
  br i1 %lcmp.mod370.not, label %._crit_edge317.us, label %._crit_edge317.us.epilog-lcssa

._crit_edge317.us.epilog-lcssa:                   ; preds = %._crit_edge317.us.unr-lcssa
  %320 = load ptr, ptr %292, align 8, !tbaa !14
  %321 = getelementptr inbounds ptr, ptr %320, i64 %.9319.us
  %322 = load ptr, ptr %321, align 8, !tbaa !15
  %323 = getelementptr inbounds double, ptr %322, i64 %.7314.us.unr
  %324 = load double, ptr %323, align 8, !tbaa !16
  %325 = fmul double %297, %324
  %326 = load ptr, ptr %293, align 8, !tbaa !14
  %327 = getelementptr inbounds double, ptr %326, i64 %.7314.us.unr
  %328 = load double, ptr %327, align 8, !tbaa !16
  %329 = fmul double %325, %328
  store double %329, ptr %323, align 8, !tbaa !16
  br label %._crit_edge317.us

._crit_edge317.us:                                ; preds = %._crit_edge317.us.unr-lcssa, %._crit_edge317.us.epilog-lcssa
  %330 = add nuw nsw i64 %.9319.us, 1
  %exitcond348.not = icmp eq i64 %330, %3
  br i1 %exitcond348.not, label %._crit_edge328, label %.lr.ph316.us, !llvm.loop !40

331:                                              ; preds = %.lr.ph312, %341
  %.8311 = phi i64 [ 0, %.lr.ph312 ], [ %342, %341 ]
  %332 = load ptr, ptr %278, align 8, !tbaa !14
  %333 = getelementptr inbounds double, ptr %332, i64 %.8311
  %334 = load double, ptr %333, align 8, !tbaa !16
  %335 = call noundef zeroext i1 @_ZN11alglib_impl9ae_fp_neqEdd(double noundef %334, double noundef 0.000000e+00)
  %336 = load ptr, ptr %278, align 8, !tbaa !14
  %337 = getelementptr inbounds double, ptr %336, i64 %.8311
  br i1 %335, label %338, label %341

338:                                              ; preds = %331
  %339 = load double, ptr %337, align 8, !tbaa !16
  %340 = fdiv double 1.000000e+00, %339
  br label %341

341:                                              ; preds = %331, %338
  %.sink358 = phi double [ %340, %338 ], [ 0.000000e+00, %331 ]
  store double %.sink358, ptr %337, align 8, !tbaa !16
  %342 = add nuw nsw i64 %.8311, 1
  %exitcond346.not = icmp eq i64 %342, %4
  br i1 %exitcond346.not, label %.preheader250, label %331, !llvm.loop !41

._crit_edge328:                                   ; preds = %._crit_edge317.us, %._crit_edge325.us, %.preheader250, %.lr.ph320, %.preheader251.thread, %._crit_edge305.thread, %.preheader251, %37, %.preheader.lr.ph
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %6)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  ret void
}

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

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

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

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

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) local_unnamed_addr #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 #2

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

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

declare void @_ZN11alglib_impl15ae_matrix_clearEPNS_9ae_matrixE(ptr noundef) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN11alglib_impl20apservisfinitematrixEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef, 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 void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

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

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

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

declare void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 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_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef, i64 noundef, i64 noundef, double noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, double noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #5

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 nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTSN11alglib_impl9ae_matrixE", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !10, i64 32, !11, i64 40, !8, i64 72}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"bool", !8, i64 0}
!11 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24}
!12 = !{!"any pointer", !8, i64 0}
!13 = !{!6, !7, i64 8}
!14 = !{!8, !8, i64 0}
!15 = !{!12, !12, i64 0}
!16 = !{!17, !17, i64 0}
!17 = !{!"double", !8, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.unroll.disable"}
!22 = distinct !{!22, !19}
!23 = !{!10, !10, i64 0}
!24 = distinct !{!24, !19}
!25 = !{i8 0, i8 2}
!26 = !{}
!27 = distinct !{!27, !19}
!28 = distinct !{!28, !19}
!29 = distinct !{!29, !19}
!30 = distinct !{!30, !19}
!31 = distinct !{!31, !19}
!32 = distinct !{!32, !19}
!33 = distinct !{!33, !19}
!34 = distinct !{!34, !19}
!35 = distinct !{!35, !19}
!36 = distinct !{!36, !19}
!37 = distinct !{!37, !19}
!38 = distinct !{!38, !19}
!39 = distinct !{!39, !19}
!40 = distinct !{!40, !19}
!41 = distinct !{!41, !19}


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