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

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

@.str.224 = external hidden unnamed_addr constant [30 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: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1

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

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

63:                                               ; preds = %7
  %64 = load i64, ptr %10, align 8, !tbaa !9
  %65 = icmp slt i64 %64, 1
  br i1 %65, label %69, label %66

66:                                               ; preds = %63
  %67 = load i64, ptr %11, align 8, !tbaa !9
  %68 = icmp slt i64 %67, 2
  br i1 %68, label %69, label %72

69:                                               ; preds = %66, %63, %7
  %70 = load ptr, ptr %12, align 8, !tbaa !5
  store i64 -1, ptr %70, align 8, !tbaa !9
  %71 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %71)
  store i32 1, ptr %39, align 4
  br label %935

72:                                               ; preds = %66
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %73

73:                                               ; preds = %109, %72
  %74 = load i64, ptr %16, align 8, !tbaa !9
  %75 = load i64, ptr %9, align 8, !tbaa !9
  %76 = sub nsw i64 %75, 1
  %77 = icmp sle i64 %74, %76
  br i1 %77, label %78, label %112

78:                                               ; preds = %73
  %79 = load ptr, ptr %8, align 8, !tbaa !5
  %80 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %79, i32 0, i32 6
  %81 = load ptr, ptr %80, align 8, !tbaa !11
  %82 = load i64, ptr %16, align 8, !tbaa !9
  %83 = getelementptr inbounds ptr, ptr %81, i64 %82
  %84 = load ptr, ptr %83, align 8, !tbaa !5
  %85 = load i64, ptr %10, align 8, !tbaa !9
  %86 = getelementptr inbounds double, ptr %84, i64 %85
  %87 = load double, ptr %86, align 8, !tbaa !12
  %88 = load ptr, ptr %14, align 8, !tbaa !5
  %89 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %87, ptr noundef %88)
  %90 = icmp slt i64 %89, 0
  br i1 %90, label %105, label %91

91:                                               ; preds = %78
  %92 = load ptr, ptr %8, align 8, !tbaa !5
  %93 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %92, i32 0, i32 6
  %94 = load ptr, ptr %93, align 8, !tbaa !11
  %95 = load i64, ptr %16, align 8, !tbaa !9
  %96 = getelementptr inbounds ptr, ptr %94, i64 %95
  %97 = load ptr, ptr %96, align 8, !tbaa !5
  %98 = load i64, ptr %10, align 8, !tbaa !9
  %99 = getelementptr inbounds double, ptr %97, i64 %98
  %100 = load double, ptr %99, align 8, !tbaa !12
  %101 = load ptr, ptr %14, align 8, !tbaa !5
  %102 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %100, ptr noundef %101)
  %103 = load i64, ptr %11, align 8, !tbaa !9
  %104 = icmp sge i64 %102, %103
  br i1 %104, label %105, label %108

105:                                              ; preds = %91, %78
  %106 = load ptr, ptr %12, align 8, !tbaa !5
  store i64 -2, ptr %106, align 8, !tbaa !9
  %107 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %107)
  store i32 1, ptr %39, align 4
  br label %935

108:                                              ; preds = %91
  br label %109

109:                                              ; preds = %108
  %110 = load i64, ptr %16, align 8, !tbaa !9
  %111 = add nsw i64 %110, 1
  store i64 %111, ptr %16, align 8, !tbaa !9
  br label %73, !llvm.loop !14

112:                                              ; preds = %73
  %113 = load ptr, ptr %12, align 8, !tbaa !5
  store i64 1, ptr %113, align 8, !tbaa !9
  %114 = load i64, ptr %9, align 8, !tbaa !9
  %115 = icmp sle i64 %114, 1
  br i1 %115, label %116, label %165

116:                                              ; preds = %112
  %117 = load ptr, ptr %12, align 8, !tbaa !5
  store i64 2, ptr %117, align 8, !tbaa !9
  %118 = load ptr, ptr %13, align 8, !tbaa !5
  %119 = load i64, ptr %10, align 8, !tbaa !9
  %120 = load i64, ptr %10, align 8, !tbaa !9
  %121 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %118, i64 noundef %119, i64 noundef %120, ptr noundef %121)
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %122

122:                                              ; preds = %160, %116
  %123 = load i64, ptr %16, align 8, !tbaa !9
  %124 = load i64, ptr %10, align 8, !tbaa !9
  %125 = sub nsw i64 %124, 1
  %126 = icmp sle i64 %123, %125
  br i1 %126, label %127, label %163

127:                                              ; preds = %122
  store i64 0, ptr %17, align 8, !tbaa !9
  br label %128

128:                                              ; preds = %156, %127
  %129 = load i64, ptr %17, align 8, !tbaa !9
  %130 = load i64, ptr %10, align 8, !tbaa !9
  %131 = sub nsw i64 %130, 1
  %132 = icmp sle i64 %129, %131
  br i1 %132, label %133, label %159

133:                                              ; preds = %128
  %134 = load i64, ptr %16, align 8, !tbaa !9
  %135 = load i64, ptr %17, align 8, !tbaa !9
  %136 = icmp eq i64 %134, %135
  br i1 %136, label %137, label %146

137:                                              ; preds = %133
  %138 = load ptr, ptr %13, align 8, !tbaa !5
  %139 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %138, i32 0, i32 6
  %140 = load ptr, ptr %139, align 8, !tbaa !11
  %141 = load i64, ptr %16, align 8, !tbaa !9
  %142 = getelementptr inbounds ptr, ptr %140, i64 %141
  %143 = load ptr, ptr %142, align 8, !tbaa !5
  %144 = load i64, ptr %17, align 8, !tbaa !9
  %145 = getelementptr inbounds double, ptr %143, i64 %144
  store double 1.000000e+00, ptr %145, align 8, !tbaa !12
  br label %155

146:                                              ; preds = %133
  %147 = load ptr, ptr %13, align 8, !tbaa !5
  %148 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %147, i32 0, i32 6
  %149 = load ptr, ptr %148, align 8, !tbaa !11
  %150 = load i64, ptr %16, align 8, !tbaa !9
  %151 = getelementptr inbounds ptr, ptr %149, i64 %150
  %152 = load ptr, ptr %151, align 8, !tbaa !5
  %153 = load i64, ptr %17, align 8, !tbaa !9
  %154 = getelementptr inbounds double, ptr %152, i64 %153
  store double 0.000000e+00, ptr %154, align 8, !tbaa !12
  br label %155

155:                                              ; preds = %146, %137
  br label %156

156:                                              ; preds = %155
  %157 = load i64, ptr %17, align 8, !tbaa !9
  %158 = add nsw i64 %157, 1
  store i64 %158, ptr %17, align 8, !tbaa !9
  br label %128, !llvm.loop !16

159:                                              ; preds = %128
  br label %160

160:                                              ; preds = %159
  %161 = load i64, ptr %16, align 8, !tbaa !9
  %162 = add nsw i64 %161, 1
  store i64 %162, ptr %16, align 8, !tbaa !9
  br label %122, !llvm.loop !17

163:                                              ; preds = %122
  %164 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %164)
  store i32 1, ptr %39, align 4
  br label %935

165:                                              ; preds = %112
  %166 = load i64, ptr %10, align 8, !tbaa !9
  %167 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %35, i64 noundef %166, ptr noundef %167)
  %168 = load i64, ptr %10, align 8, !tbaa !9
  %169 = load i64, ptr %9, align 8, !tbaa !9
  %170 = load ptr, ptr %14, align 8, !tbaa !5
  %171 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %168, i64 noundef %169, ptr noundef %170)
  %172 = add nsw i64 %171, 1
  %173 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %38, i64 noundef %172, ptr noundef %173)
  %174 = load i64, ptr %9, align 8, !tbaa !9
  %175 = load i64, ptr %10, align 8, !tbaa !9
  %176 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %32, i64 noundef %174, i64 noundef %175, ptr noundef %176)
  %177 = load i64, ptr %9, align 8, !tbaa !9
  %178 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %21, i64 noundef %177, ptr noundef %178)
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %179

179:                                              ; preds = %200, %165
  %180 = load i64, ptr %16, align 8, !tbaa !9
  %181 = load i64, ptr %9, align 8, !tbaa !9
  %182 = sub nsw i64 %181, 1
  %183 = icmp sle i64 %180, %182
  br i1 %183, label %184, label %203

184:                                              ; preds = %179
  %185 = load ptr, ptr %8, align 8, !tbaa !5
  %186 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %185, i32 0, i32 6
  %187 = load ptr, ptr %186, align 8, !tbaa !11
  %188 = load i64, ptr %16, align 8, !tbaa !9
  %189 = getelementptr inbounds ptr, ptr %187, i64 %188
  %190 = load ptr, ptr %189, align 8, !tbaa !5
  %191 = load i64, ptr %10, align 8, !tbaa !9
  %192 = getelementptr inbounds double, ptr %190, i64 %191
  %193 = load double, ptr %192, align 8, !tbaa !12
  %194 = load ptr, ptr %14, align 8, !tbaa !5
  %195 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %193, ptr noundef %194)
  %196 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %197 = load ptr, ptr %196, align 8, !tbaa !11
  %198 = load i64, ptr %16, align 8, !tbaa !9
  %199 = getelementptr inbounds i64, ptr %197, i64 %198
  store i64 %195, ptr %199, align 8, !tbaa !9
  br label %200

200:                                              ; preds = %184
  %201 = load i64, ptr %16, align 8, !tbaa !9
  %202 = add nsw i64 %201, 1
  store i64 %202, ptr %16, align 8, !tbaa !9
  br label %179, !llvm.loop !18

203:                                              ; preds = %179
  %204 = load i64, ptr %10, align 8, !tbaa !9
  %205 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %22, i64 noundef %204, ptr noundef %205)
  %206 = load i64, ptr %11, align 8, !tbaa !9
  %207 = load i64, ptr %10, align 8, !tbaa !9
  %208 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %23, i64 noundef %206, i64 noundef %207, ptr noundef %208)
  %209 = load i64, ptr %11, align 8, !tbaa !9
  %210 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %24, i64 noundef %209, ptr noundef %210)
  store i64 0, ptr %17, align 8, !tbaa !9
  br label %211

211:                                              ; preds = %221, %203
  %212 = load i64, ptr %17, align 8, !tbaa !9
  %213 = load i64, ptr %10, align 8, !tbaa !9
  %214 = sub nsw i64 %213, 1
  %215 = icmp sle i64 %212, %214
  br i1 %215, label %216, label %224

216:                                              ; preds = %211
  %217 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %218 = load ptr, ptr %217, align 8, !tbaa !11
  %219 = load i64, ptr %17, align 8, !tbaa !9
  %220 = getelementptr inbounds double, ptr %218, i64 %219
  store double 0.000000e+00, ptr %220, align 8, !tbaa !12
  br label %221

221:                                              ; preds = %216
  %222 = load i64, ptr %17, align 8, !tbaa !9
  %223 = add nsw i64 %222, 1
  store i64 %223, ptr %17, align 8, !tbaa !9
  br label %211, !llvm.loop !19

224:                                              ; preds = %211
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %225

225:                                              ; preds = %252, %224
  %226 = load i64, ptr %16, align 8, !tbaa !9
  %227 = load i64, ptr %11, align 8, !tbaa !9
  %228 = sub nsw i64 %227, 1
  %229 = icmp sle i64 %226, %228
  br i1 %229, label %230, label %255

230:                                              ; preds = %225
  %231 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %232 = load ptr, ptr %231, align 8, !tbaa !11
  %233 = load i64, ptr %16, align 8, !tbaa !9
  %234 = getelementptr inbounds i64, ptr %232, i64 %233
  store i64 0, ptr %234, align 8, !tbaa !9
  store i64 0, ptr %17, align 8, !tbaa !9
  br label %235

235:                                              ; preds = %248, %230
  %236 = load i64, ptr %17, align 8, !tbaa !9
  %237 = load i64, ptr %10, align 8, !tbaa !9
  %238 = sub nsw i64 %237, 1
  %239 = icmp sle i64 %236, %238
  br i1 %239, label %240, label %251

240:                                              ; preds = %235
  %241 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %23, i32 0, i32 6
  %242 = load ptr, ptr %241, align 8, !tbaa !11
  %243 = load i64, ptr %16, align 8, !tbaa !9
  %244 = getelementptr inbounds ptr, ptr %242, i64 %243
  %245 = load ptr, ptr %244, align 8, !tbaa !5
  %246 = load i64, ptr %17, align 8, !tbaa !9
  %247 = getelementptr inbounds double, ptr %245, i64 %246
  store double 0.000000e+00, ptr %247, align 8, !tbaa !12
  br label %248

248:                                              ; preds = %240
  %249 = load i64, ptr %17, align 8, !tbaa !9
  %250 = add nsw i64 %249, 1
  store i64 %250, ptr %17, align 8, !tbaa !9
  br label %235, !llvm.loop !20

251:                                              ; preds = %235
  br label %252

252:                                              ; preds = %251
  %253 = load i64, ptr %16, align 8, !tbaa !9
  %254 = add nsw i64 %253, 1
  store i64 %254, ptr %16, align 8, !tbaa !9
  br label %225, !llvm.loop !21

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

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

261:                                              ; preds = %256
  %262 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %263 = load ptr, ptr %262, align 8, !tbaa !11
  %264 = getelementptr inbounds double, ptr %263, i64 0
  %265 = load ptr, ptr %8, align 8, !tbaa !5
  %266 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %265, i32 0, i32 6
  %267 = load ptr, ptr %266, align 8, !tbaa !11
  %268 = load i64, ptr %16, align 8, !tbaa !9
  %269 = getelementptr inbounds ptr, ptr %267, i64 %268
  %270 = load ptr, ptr %269, align 8, !tbaa !5
  %271 = getelementptr inbounds double, ptr %270, i64 0
  %272 = load i64, ptr %10, align 8, !tbaa !9
  %273 = sub nsw i64 %272, 1
  %274 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %273)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %264, i64 noundef 1, ptr noundef %271, i64 noundef 1, i64 noundef %274)
  %275 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %23, i32 0, i32 6
  %276 = load ptr, ptr %275, align 8, !tbaa !11
  %277 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %278 = load ptr, ptr %277, align 8, !tbaa !11
  %279 = load i64, ptr %16, align 8, !tbaa !9
  %280 = getelementptr inbounds i64, ptr %278, i64 %279
  %281 = load i64, ptr %280, align 8, !tbaa !9
  %282 = getelementptr inbounds ptr, ptr %276, i64 %281
  %283 = load ptr, ptr %282, align 8, !tbaa !5
  %284 = getelementptr inbounds double, ptr %283, i64 0
  %285 = load ptr, ptr %8, align 8, !tbaa !5
  %286 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %285, i32 0, i32 6
  %287 = load ptr, ptr %286, align 8, !tbaa !11
  %288 = load i64, ptr %16, align 8, !tbaa !9
  %289 = getelementptr inbounds ptr, ptr %287, i64 %288
  %290 = load ptr, ptr %289, align 8, !tbaa !5
  %291 = getelementptr inbounds double, ptr %290, i64 0
  %292 = load i64, ptr %10, align 8, !tbaa !9
  %293 = sub nsw i64 %292, 1
  %294 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %293)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %284, i64 noundef 1, ptr noundef %291, i64 noundef 1, i64 noundef %294)
  %295 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %296 = load ptr, ptr %295, align 8, !tbaa !11
  %297 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %298 = load ptr, ptr %297, align 8, !tbaa !11
  %299 = load i64, ptr %16, align 8, !tbaa !9
  %300 = getelementptr inbounds i64, ptr %298, i64 %299
  %301 = load i64, ptr %300, align 8, !tbaa !9
  %302 = getelementptr inbounds i64, ptr %296, i64 %301
  %303 = load i64, ptr %302, align 8, !tbaa !9
  %304 = add nsw i64 %303, 1
  %305 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %306 = load ptr, ptr %305, align 8, !tbaa !11
  %307 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %308 = load ptr, ptr %307, align 8, !tbaa !11
  %309 = load i64, ptr %16, align 8, !tbaa !9
  %310 = getelementptr inbounds i64, ptr %308, i64 %309
  %311 = load i64, ptr %310, align 8, !tbaa !9
  %312 = getelementptr inbounds i64, ptr %306, i64 %311
  store i64 %304, ptr %312, align 8, !tbaa !9
  br label %313

313:                                              ; preds = %261
  %314 = load i64, ptr %16, align 8, !tbaa !9
  %315 = add nsw i64 %314, 1
  store i64 %315, ptr %16, align 8, !tbaa !9
  br label %256, !llvm.loop !22

316:                                              ; preds = %256
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %317

317:                                              ; preds = %340, %316
  %318 = load i64, ptr %16, align 8, !tbaa !9
  %319 = load i64, ptr %11, align 8, !tbaa !9
  %320 = sub nsw i64 %319, 1
  %321 = icmp sle i64 %318, %320
  br i1 %321, label %322, label %343

322:                                              ; preds = %317
  %323 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %24, i32 0, i32 4
  %324 = load ptr, ptr %323, align 8, !tbaa !11
  %325 = load i64, ptr %16, align 8, !tbaa !9
  %326 = getelementptr inbounds i64, ptr %324, i64 %325
  %327 = load i64, ptr %326, align 8, !tbaa !9
  %328 = sitofp i64 %327 to double
  %329 = fdiv double 1.000000e+00, %328
  store double %329, ptr %20, align 8, !tbaa !12
  %330 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %23, i32 0, i32 6
  %331 = load ptr, ptr %330, align 8, !tbaa !11
  %332 = load i64, ptr %16, align 8, !tbaa !9
  %333 = getelementptr inbounds ptr, ptr %331, i64 %332
  %334 = load ptr, ptr %333, align 8, !tbaa !5
  %335 = getelementptr inbounds double, ptr %334, i64 0
  %336 = load i64, ptr %10, align 8, !tbaa !9
  %337 = sub nsw i64 %336, 1
  %338 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %337)
  %339 = load double, ptr %20, align 8, !tbaa !12
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %335, i64 noundef 1, i64 noundef %338, double noundef %339)
  br label %340

340:                                              ; preds = %322
  %341 = load i64, ptr %16, align 8, !tbaa !9
  %342 = add nsw i64 %341, 1
  store i64 %342, ptr %16, align 8, !tbaa !9
  br label %317, !llvm.loop !23

343:                                              ; preds = %317
  %344 = load i64, ptr %9, align 8, !tbaa !9
  %345 = sitofp i64 %344 to double
  %346 = fdiv double 1.000000e+00, %345
  store double %346, ptr %20, align 8, !tbaa !12
  %347 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %348 = load ptr, ptr %347, align 8, !tbaa !11
  %349 = getelementptr inbounds double, ptr %348, i64 0
  %350 = load i64, ptr %10, align 8, !tbaa !9
  %351 = sub nsw i64 %350, 1
  %352 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %351)
  %353 = load double, ptr %20, align 8, !tbaa !12
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %349, i64 noundef 1, i64 noundef %352, double noundef %353)
  %354 = load i64, ptr %10, align 8, !tbaa !9
  %355 = load i64, ptr %10, align 8, !tbaa !9
  %356 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %26, i64 noundef %354, i64 noundef %355, ptr noundef %356)
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %357

357:                                              ; preds = %380, %343
  %358 = load i64, ptr %16, align 8, !tbaa !9
  %359 = load i64, ptr %10, align 8, !tbaa !9
  %360 = sub nsw i64 %359, 1
  %361 = icmp sle i64 %358, %360
  br i1 %361, label %362, label %383

362:                                              ; preds = %357
  store i64 0, ptr %17, align 8, !tbaa !9
  br label %363

363:                                              ; preds = %376, %362
  %364 = load i64, ptr %17, align 8, !tbaa !9
  %365 = load i64, ptr %10, align 8, !tbaa !9
  %366 = sub nsw i64 %365, 1
  %367 = icmp sle i64 %364, %366
  br i1 %367, label %368, label %379

368:                                              ; preds = %363
  %369 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %26, i32 0, i32 6
  %370 = load ptr, ptr %369, align 8, !tbaa !11
  %371 = load i64, ptr %16, align 8, !tbaa !9
  %372 = getelementptr inbounds ptr, ptr %370, i64 %371
  %373 = load ptr, ptr %372, align 8, !tbaa !5
  %374 = load i64, ptr %17, align 8, !tbaa !9
  %375 = getelementptr inbounds double, ptr %373, i64 %374
  store double 0.000000e+00, ptr %375, align 8, !tbaa !12
  br label %376

376:                                              ; preds = %368
  %377 = load i64, ptr %17, align 8, !tbaa !9
  %378 = add nsw i64 %377, 1
  store i64 %378, ptr %17, align 8, !tbaa !9
  br label %363, !llvm.loop !24

379:                                              ; preds = %363
  br label %380

380:                                              ; preds = %379
  %381 = load i64, ptr %16, align 8, !tbaa !9
  %382 = add nsw i64 %381, 1
  store i64 %382, ptr %16, align 8, !tbaa !9
  br label %357, !llvm.loop !25

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

384:                                              ; preds = %418, %383
  %385 = load i64, ptr %18, align 8, !tbaa !9
  %386 = load i64, ptr %9, align 8, !tbaa !9
  %387 = sub nsw i64 %386, 1
  %388 = icmp sle i64 %385, %387
  br i1 %388, label %389, label %421

389:                                              ; preds = %384
  %390 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %32, i32 0, i32 6
  %391 = load ptr, ptr %390, align 8, !tbaa !11
  %392 = load i64, ptr %18, align 8, !tbaa !9
  %393 = getelementptr inbounds ptr, ptr %391, i64 %392
  %394 = load ptr, ptr %393, align 8, !tbaa !5
  %395 = getelementptr inbounds double, ptr %394, i64 0
  %396 = load ptr, ptr %8, align 8, !tbaa !5
  %397 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %396, i32 0, i32 6
  %398 = load ptr, ptr %397, align 8, !tbaa !11
  %399 = load i64, ptr %18, align 8, !tbaa !9
  %400 = getelementptr inbounds ptr, ptr %398, i64 %399
  %401 = load ptr, ptr %400, align 8, !tbaa !5
  %402 = getelementptr inbounds double, ptr %401, i64 0
  %403 = load i64, ptr %10, align 8, !tbaa !9
  %404 = sub nsw i64 %403, 1
  %405 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %404)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %395, i64 noundef 1, ptr noundef %402, i64 noundef 1, i64 noundef %405)
  %406 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %32, i32 0, i32 6
  %407 = load ptr, ptr %406, align 8, !tbaa !11
  %408 = load i64, ptr %18, align 8, !tbaa !9
  %409 = getelementptr inbounds ptr, ptr %407, i64 %408
  %410 = load ptr, ptr %409, align 8, !tbaa !5
  %411 = getelementptr inbounds double, ptr %410, i64 0
  %412 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %413 = load ptr, ptr %412, align 8, !tbaa !11
  %414 = getelementptr inbounds double, ptr %413, i64 0
  %415 = load i64, ptr %10, align 8, !tbaa !9
  %416 = sub nsw i64 %415, 1
  %417 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %416)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %411, i64 noundef 1, ptr noundef %414, i64 noundef 1, i64 noundef %417)
  br label %418

418:                                              ; preds = %389
  %419 = load i64, ptr %18, align 8, !tbaa !9
  %420 = add nsw i64 %419, 1
  store i64 %420, ptr %18, align 8, !tbaa !9
  br label %384, !llvm.loop !26

421:                                              ; preds = %384
  %422 = load i64, ptr %10, align 8, !tbaa !9
  %423 = load i64, ptr %10, align 8, !tbaa !9
  %424 = load i64, ptr %9, align 8, !tbaa !9
  %425 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %422, i64 noundef %423, i64 noundef %424, double noundef 1.000000e+00, ptr noundef %32, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef %32, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %26, i64 noundef 0, i64 noundef 0, ptr noundef %425)
  %426 = load i64, ptr %10, align 8, !tbaa !9
  %427 = load i64, ptr %10, align 8, !tbaa !9
  %428 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %25, i64 noundef %426, i64 noundef %427, ptr noundef %428)
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %429

429:                                              ; preds = %452, %421
  %430 = load i64, ptr %16, align 8, !tbaa !9
  %431 = load i64, ptr %10, align 8, !tbaa !9
  %432 = sub nsw i64 %431, 1
  %433 = icmp sle i64 %430, %432
  br i1 %433, label %434, label %455

434:                                              ; preds = %429
  store i64 0, ptr %17, align 8, !tbaa !9
  br label %435

435:                                              ; preds = %448, %434
  %436 = load i64, ptr %17, align 8, !tbaa !9
  %437 = load i64, ptr %10, align 8, !tbaa !9
  %438 = sub nsw i64 %437, 1
  %439 = icmp sle i64 %436, %438
  br i1 %439, label %440, label %451

440:                                              ; preds = %435
  %441 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %25, i32 0, i32 6
  %442 = load ptr, ptr %441, align 8, !tbaa !11
  %443 = load i64, ptr %16, align 8, !tbaa !9
  %444 = getelementptr inbounds ptr, ptr %442, i64 %443
  %445 = load ptr, ptr %444, align 8, !tbaa !5
  %446 = load i64, ptr %17, align 8, !tbaa !9
  %447 = getelementptr inbounds double, ptr %445, i64 %446
  store double 0.000000e+00, ptr %447, align 8, !tbaa !12
  br label %448

448:                                              ; preds = %440
  %449 = load i64, ptr %17, align 8, !tbaa !9
  %450 = add nsw i64 %449, 1
  store i64 %450, ptr %17, align 8, !tbaa !9
  br label %435, !llvm.loop !27

451:                                              ; preds = %435
  br label %452

452:                                              ; preds = %451
  %453 = load i64, ptr %16, align 8, !tbaa !9
  %454 = add nsw i64 %453, 1
  store i64 %454, ptr %16, align 8, !tbaa !9
  br label %429, !llvm.loop !28

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

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

461:                                              ; preds = %456
  %462 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %32, i32 0, i32 6
  %463 = load ptr, ptr %462, align 8, !tbaa !11
  %464 = load i64, ptr %18, align 8, !tbaa !9
  %465 = getelementptr inbounds ptr, ptr %463, i64 %464
  %466 = load ptr, ptr %465, align 8, !tbaa !5
  %467 = getelementptr inbounds double, ptr %466, i64 0
  %468 = load ptr, ptr %8, align 8, !tbaa !5
  %469 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %468, i32 0, i32 6
  %470 = load ptr, ptr %469, align 8, !tbaa !11
  %471 = load i64, ptr %18, align 8, !tbaa !9
  %472 = getelementptr inbounds ptr, ptr %470, i64 %471
  %473 = load ptr, ptr %472, align 8, !tbaa !5
  %474 = getelementptr inbounds double, ptr %473, i64 0
  %475 = load i64, ptr %10, align 8, !tbaa !9
  %476 = sub nsw i64 %475, 1
  %477 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %476)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %467, i64 noundef 1, ptr noundef %474, i64 noundef 1, i64 noundef %477)
  %478 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %32, i32 0, i32 6
  %479 = load ptr, ptr %478, align 8, !tbaa !11
  %480 = load i64, ptr %18, align 8, !tbaa !9
  %481 = getelementptr inbounds ptr, ptr %479, i64 %480
  %482 = load ptr, ptr %481, align 8, !tbaa !5
  %483 = getelementptr inbounds double, ptr %482, i64 0
  %484 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %23, i32 0, i32 6
  %485 = load ptr, ptr %484, align 8, !tbaa !11
  %486 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %21, i32 0, i32 4
  %487 = load ptr, ptr %486, align 8, !tbaa !11
  %488 = load i64, ptr %18, align 8, !tbaa !9
  %489 = getelementptr inbounds i64, ptr %487, i64 %488
  %490 = load i64, ptr %489, align 8, !tbaa !9
  %491 = getelementptr inbounds ptr, ptr %485, i64 %490
  %492 = load ptr, ptr %491, align 8, !tbaa !5
  %493 = getelementptr inbounds double, ptr %492, i64 0
  %494 = load i64, ptr %10, align 8, !tbaa !9
  %495 = sub nsw i64 %494, 1
  %496 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %495)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %483, i64 noundef 1, ptr noundef %493, i64 noundef 1, i64 noundef %496)
  br label %497

497:                                              ; preds = %461
  %498 = load i64, ptr %18, align 8, !tbaa !9
  %499 = add nsw i64 %498, 1
  store i64 %499, ptr %18, align 8, !tbaa !9
  br label %456, !llvm.loop !29

500:                                              ; preds = %456
  %501 = load i64, ptr %10, align 8, !tbaa !9
  %502 = load i64, ptr %10, align 8, !tbaa !9
  %503 = load i64, ptr %9, align 8, !tbaa !9
  %504 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %501, i64 noundef %502, i64 noundef %503, double noundef 1.000000e+00, ptr noundef %32, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef %32, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %25, i64 noundef 0, i64 noundef 0, ptr noundef %504)
  %505 = load i64, ptr %10, align 8, !tbaa !9
  %506 = load ptr, ptr %14, align 8, !tbaa !5
  %507 = call noundef zeroext i1 @_ZN11alglib_impl10smatrixevdEPNS_9ae_matrixEllbPNS_9ae_vectorES1_PNS_8ae_stateE(ptr noundef %26, i64 noundef %505, i64 noundef 1, i1 noundef zeroext true, ptr noundef %36, ptr noundef %27, ptr noundef %506)
  br i1 %507, label %511, label %508

508:                                              ; preds = %500
  %509 = load ptr, ptr %12, align 8, !tbaa !5
  store i64 -4, ptr %509, align 8, !tbaa !9
  %510 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %510)
  store i32 1, ptr %39, align 4
  br label %935

511:                                              ; preds = %500
  %512 = load ptr, ptr %13, align 8, !tbaa !5
  %513 = load i64, ptr %10, align 8, !tbaa !9
  %514 = load i64, ptr %10, align 8, !tbaa !9
  %515 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %512, i64 noundef %513, i64 noundef %514, ptr noundef %515)
  %516 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %517 = load ptr, ptr %516, align 8, !tbaa !11
  %518 = load i64, ptr %10, align 8, !tbaa !9
  %519 = sub nsw i64 %518, 1
  %520 = getelementptr inbounds double, ptr %517, i64 %519
  %521 = load double, ptr %520, align 8, !tbaa !12
  %522 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %521, double noundef 0.000000e+00)
  br i1 %522, label %536, label %523

523:                                              ; preds = %511
  %524 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %525 = load ptr, ptr %524, align 8, !tbaa !11
  %526 = getelementptr inbounds double, ptr %525, i64 0
  %527 = load double, ptr %526, align 8, !tbaa !12
  %528 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %529 = load ptr, ptr %528, align 8, !tbaa !11
  %530 = load i64, ptr %10, align 8, !tbaa !9
  %531 = sub nsw i64 %530, 1
  %532 = getelementptr inbounds double, ptr %529, i64 %531
  %533 = load double, ptr %532, align 8, !tbaa !12
  %534 = fmul double 5.000000e-13, %533
  %535 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %527, double noundef %534)
  br i1 %535, label %536, label %724

536:                                              ; preds = %523, %511
  %537 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %538 = load ptr, ptr %537, align 8, !tbaa !11
  %539 = load i64, ptr %10, align 8, !tbaa !9
  %540 = sub nsw i64 %539, 1
  %541 = getelementptr inbounds double, ptr %538, i64 %540
  %542 = load double, ptr %541, align 8, !tbaa !12
  %543 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %542, double noundef 0.000000e+00)
  br i1 %543, label %544, label %589

544:                                              ; preds = %536
  %545 = load ptr, ptr %12, align 8, !tbaa !5
  store i64 2, ptr %545, align 8, !tbaa !9
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %546

546:                                              ; preds = %584, %544
  %547 = load i64, ptr %16, align 8, !tbaa !9
  %548 = load i64, ptr %10, align 8, !tbaa !9
  %549 = sub nsw i64 %548, 1
  %550 = icmp sle i64 %547, %549
  br i1 %550, label %551, label %587

551:                                              ; preds = %546
  store i64 0, ptr %17, align 8, !tbaa !9
  br label %552

552:                                              ; preds = %580, %551
  %553 = load i64, ptr %17, align 8, !tbaa !9
  %554 = load i64, ptr %10, align 8, !tbaa !9
  %555 = sub nsw i64 %554, 1
  %556 = icmp sle i64 %553, %555
  br i1 %556, label %557, label %583

557:                                              ; preds = %552
  %558 = load i64, ptr %16, align 8, !tbaa !9
  %559 = load i64, ptr %17, align 8, !tbaa !9
  %560 = icmp eq i64 %558, %559
  br i1 %560, label %561, label %570

561:                                              ; preds = %557
  %562 = load ptr, ptr %13, align 8, !tbaa !5
  %563 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %562, i32 0, i32 6
  %564 = load ptr, ptr %563, align 8, !tbaa !11
  %565 = load i64, ptr %16, align 8, !tbaa !9
  %566 = getelementptr inbounds ptr, ptr %564, i64 %565
  %567 = load ptr, ptr %566, align 8, !tbaa !5
  %568 = load i64, ptr %17, align 8, !tbaa !9
  %569 = getelementptr inbounds double, ptr %567, i64 %568
  store double 1.000000e+00, ptr %569, align 8, !tbaa !12
  br label %579

570:                                              ; preds = %557
  %571 = load ptr, ptr %13, align 8, !tbaa !5
  %572 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %571, i32 0, i32 6
  %573 = load ptr, ptr %572, align 8, !tbaa !11
  %574 = load i64, ptr %16, align 8, !tbaa !9
  %575 = getelementptr inbounds ptr, ptr %573, i64 %574
  %576 = load ptr, ptr %575, align 8, !tbaa !5
  %577 = load i64, ptr %17, align 8, !tbaa !9
  %578 = getelementptr inbounds double, ptr %576, i64 %577
  store double 0.000000e+00, ptr %578, align 8, !tbaa !12
  br label %579

579:                                              ; preds = %570, %561
  br label %580

580:                                              ; preds = %579
  %581 = load i64, ptr %17, align 8, !tbaa !9
  %582 = add nsw i64 %581, 1
  store i64 %582, ptr %17, align 8, !tbaa !9
  br label %552, !llvm.loop !30

583:                                              ; preds = %552
  br label %584

584:                                              ; preds = %583
  %585 = load i64, ptr %16, align 8, !tbaa !9
  %586 = add nsw i64 %585, 1
  store i64 %586, ptr %16, align 8, !tbaa !9
  br label %546, !llvm.loop !31

587:                                              ; preds = %546
  %588 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %588)
  store i32 1, ptr %39, align 4
  br label %935

589:                                              ; preds = %536
  store i64 0, ptr %19, align 8, !tbaa !9
  store i64 0, ptr %18, align 8, !tbaa !9
  br label %590

590:                                              ; preds = %613, %589
  %591 = load i64, ptr %18, align 8, !tbaa !9
  %592 = load i64, ptr %10, align 8, !tbaa !9
  %593 = sub nsw i64 %592, 1
  %594 = icmp sle i64 %591, %593
  br i1 %594, label %595, label %616

595:                                              ; preds = %590
  %596 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %597 = load ptr, ptr %596, align 8, !tbaa !11
  %598 = load i64, ptr %18, align 8, !tbaa !9
  %599 = getelementptr inbounds double, ptr %597, i64 %598
  %600 = load double, ptr %599, align 8, !tbaa !12
  %601 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %602 = load ptr, ptr %601, align 8, !tbaa !11
  %603 = load i64, ptr %10, align 8, !tbaa !9
  %604 = sub nsw i64 %603, 1
  %605 = getelementptr inbounds double, ptr %602, i64 %604
  %606 = load double, ptr %605, align 8, !tbaa !12
  %607 = fmul double 5.000000e-13, %606
  %608 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %600, double noundef %607)
  br i1 %608, label %609, label %612

609:                                              ; preds = %595
  %610 = load i64, ptr %18, align 8, !tbaa !9
  %611 = add nsw i64 %610, 1
  store i64 %611, ptr %19, align 8, !tbaa !9
  br label %612

612:                                              ; preds = %609, %595
  br label %613

613:                                              ; preds = %612
  %614 = load i64, ptr %18, align 8, !tbaa !9
  %615 = add nsw i64 %614, 1
  store i64 %615, ptr %18, align 8, !tbaa !9
  br label %590, !llvm.loop !32

616:                                              ; preds = %590
  %617 = load i64, ptr %19, align 8, !tbaa !9
  %618 = icmp ne i64 %617, 0
  %619 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %618, ptr noundef @.str.224, ptr noundef %619)
  %620 = load i64, ptr %9, align 8, !tbaa !9
  %621 = load i64, ptr %10, align 8, !tbaa !9
  %622 = load i64, ptr %19, align 8, !tbaa !9
  %623 = sub nsw i64 %621, %622
  %624 = add nsw i64 %623, 1
  %625 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %33, i64 noundef %620, i64 noundef %624, ptr noundef %625)
  %626 = load i64, ptr %9, align 8, !tbaa !9
  %627 = load i64, ptr %10, align 8, !tbaa !9
  %628 = load i64, ptr %19, align 8, !tbaa !9
  %629 = sub nsw i64 %627, %628
  %630 = load i64, ptr %10, align 8, !tbaa !9
  %631 = load ptr, ptr %8, align 8, !tbaa !5
  %632 = load i64, ptr %19, align 8, !tbaa !9
  %633 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %626, i64 noundef %629, i64 noundef %630, double noundef 1.000000e+00, ptr noundef %631, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %27, i64 noundef 0, i64 noundef %632, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %33, i64 noundef 0, i64 noundef 0, ptr noundef %633)
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %634

634:                                              ; preds = %658, %616
  %635 = load i64, ptr %16, align 8, !tbaa !9
  %636 = load i64, ptr %9, align 8, !tbaa !9
  %637 = sub nsw i64 %636, 1
  %638 = icmp sle i64 %635, %637
  br i1 %638, label %639, label %661

639:                                              ; preds = %634
  %640 = load ptr, ptr %8, align 8, !tbaa !5
  %641 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %640, i32 0, i32 6
  %642 = load ptr, ptr %641, align 8, !tbaa !11
  %643 = load i64, ptr %16, align 8, !tbaa !9
  %644 = getelementptr inbounds ptr, ptr %642, i64 %643
  %645 = load ptr, ptr %644, align 8, !tbaa !5
  %646 = load i64, ptr %10, align 8, !tbaa !9
  %647 = getelementptr inbounds double, ptr %645, i64 %646
  %648 = load double, ptr %647, align 8, !tbaa !12
  %649 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %33, i32 0, i32 6
  %650 = load ptr, ptr %649, align 8, !tbaa !11
  %651 = load i64, ptr %16, align 8, !tbaa !9
  %652 = getelementptr inbounds ptr, ptr %650, i64 %651
  %653 = load ptr, ptr %652, align 8, !tbaa !5
  %654 = load i64, ptr %10, align 8, !tbaa !9
  %655 = load i64, ptr %19, align 8, !tbaa !9
  %656 = sub nsw i64 %654, %655
  %657 = getelementptr inbounds double, ptr %653, i64 %656
  store double %648, ptr %657, align 8, !tbaa !12
  br label %658

658:                                              ; preds = %639
  %659 = load i64, ptr %16, align 8, !tbaa !9
  %660 = add nsw i64 %659, 1
  store i64 %660, ptr %16, align 8, !tbaa !9
  br label %634, !llvm.loop !33

661:                                              ; preds = %634
  %662 = load i64, ptr %9, align 8, !tbaa !9
  %663 = load i64, ptr %10, align 8, !tbaa !9
  %664 = load i64, ptr %19, align 8, !tbaa !9
  %665 = sub nsw i64 %663, %664
  %666 = load i64, ptr %11, align 8, !tbaa !9
  %667 = load ptr, ptr %12, align 8, !tbaa !5
  %668 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl10fisherldanEPNS_9ae_matrixElllPlS1_PNS_8ae_stateE(ptr noundef %33, i64 noundef %662, i64 noundef %665, i64 noundef %666, ptr noundef %667, ptr noundef %34, ptr noundef %668)
  %669 = load ptr, ptr %12, align 8, !tbaa !5
  %670 = load i64, ptr %669, align 8, !tbaa !9
  %671 = icmp slt i64 %670, 0
  br i1 %671, label %672, label %674

672:                                              ; preds = %661
  %673 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %673)
  store i32 1, ptr %39, align 4
  br label %935

674:                                              ; preds = %661
  %675 = load i64, ptr %10, align 8, !tbaa !9
  %676 = load i64, ptr %10, align 8, !tbaa !9
  %677 = load i64, ptr %19, align 8, !tbaa !9
  %678 = sub nsw i64 %676, %677
  %679 = load i64, ptr %10, align 8, !tbaa !9
  %680 = load i64, ptr %19, align 8, !tbaa !9
  %681 = sub nsw i64 %679, %680
  %682 = load i64, ptr %19, align 8, !tbaa !9
  %683 = load ptr, ptr %13, align 8, !tbaa !5
  %684 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %675, i64 noundef %678, i64 noundef %681, double noundef 1.000000e+00, ptr noundef %27, i64 noundef 0, i64 noundef %682, i64 noundef 0, ptr noundef %34, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %683, i64 noundef 0, i64 noundef 0, ptr noundef %684)
  %685 = load i64, ptr %10, align 8, !tbaa !9
  %686 = load i64, ptr %19, align 8, !tbaa !9
  %687 = sub nsw i64 %685, %686
  store i64 %687, ptr %18, align 8, !tbaa !9
  br label %688

688:                                              ; preds = %719, %674
  %689 = load i64, ptr %18, align 8, !tbaa !9
  %690 = load i64, ptr %10, align 8, !tbaa !9
  %691 = sub nsw i64 %690, 1
  %692 = icmp sle i64 %689, %691
  br i1 %692, label %693, label %722

693:                                              ; preds = %688
  %694 = load ptr, ptr %13, align 8, !tbaa !5
  %695 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %694, i32 0, i32 6
  %696 = load ptr, ptr %695, align 8, !tbaa !11
  %697 = getelementptr inbounds ptr, ptr %696, i64 0
  %698 = load ptr, ptr %697, align 8, !tbaa !5
  %699 = load i64, ptr %18, align 8, !tbaa !9
  %700 = getelementptr inbounds double, ptr %698, i64 %699
  %701 = load ptr, ptr %13, align 8, !tbaa !5
  %702 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %701, i32 0, i32 2
  %703 = load i64, ptr %702, align 8, !tbaa !34
  %704 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 6
  %705 = load ptr, ptr %704, align 8, !tbaa !11
  %706 = getelementptr inbounds ptr, ptr %705, i64 0
  %707 = load ptr, ptr %706, align 8, !tbaa !5
  %708 = load i64, ptr %18, align 8, !tbaa !9
  %709 = load i64, ptr %10, align 8, !tbaa !9
  %710 = load i64, ptr %19, align 8, !tbaa !9
  %711 = sub nsw i64 %709, %710
  %712 = sub nsw i64 %708, %711
  %713 = getelementptr inbounds double, ptr %707, i64 %712
  %714 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %27, i32 0, i32 2
  %715 = load i64, ptr %714, align 8, !tbaa !34
  %716 = load i64, ptr %10, align 8, !tbaa !9
  %717 = sub nsw i64 %716, 1
  %718 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %717)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %700, i64 noundef %703, ptr noundef %713, i64 noundef %715, i64 noundef %718)
  br label %719

719:                                              ; preds = %693
  %720 = load i64, ptr %18, align 8, !tbaa !9
  %721 = add nsw i64 %720, 1
  store i64 %721, ptr %18, align 8, !tbaa !9
  br label %688, !llvm.loop !38

722:                                              ; preds = %688
  %723 = load ptr, ptr %12, align 8, !tbaa !5
  store i64 2, ptr %723, align 8, !tbaa !9
  br label %843

724:                                              ; preds = %523
  %725 = load i64, ptr %10, align 8, !tbaa !9
  %726 = load i64, ptr %10, align 8, !tbaa !9
  %727 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %29, i64 noundef %725, i64 noundef %726, ptr noundef %727)
  %728 = load i64, ptr %10, align 8, !tbaa !9
  %729 = load i64, ptr %10, align 8, !tbaa !9
  %730 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %31, i64 noundef %728, i64 noundef %729, ptr noundef %730)
  %731 = load i64, ptr %10, align 8, !tbaa !9
  %732 = load i64, ptr %10, align 8, !tbaa !9
  %733 = load i64, ptr %10, align 8, !tbaa !9
  %734 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %731, i64 noundef %732, i64 noundef %733, double noundef 1.000000e+00, ptr noundef %25, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %27, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %29, i64 noundef 0, i64 noundef 0, ptr noundef %734)
  %735 = load i64, ptr %10, align 8, !tbaa !9
  %736 = load i64, ptr %10, align 8, !tbaa !9
  %737 = load i64, ptr %10, align 8, !tbaa !9
  %738 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %735, i64 noundef %736, i64 noundef %737, double noundef 1.000000e+00, ptr noundef %27, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef %29, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %31, i64 noundef 0, i64 noundef 0, ptr noundef %738)
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %739

739:                                              ; preds = %784, %724
  %740 = load i64, ptr %16, align 8, !tbaa !9
  %741 = load i64, ptr %10, align 8, !tbaa !9
  %742 = sub nsw i64 %741, 1
  %743 = icmp sle i64 %740, %742
  br i1 %743, label %744, label %787

744:                                              ; preds = %739
  store i64 0, ptr %17, align 8, !tbaa !9
  br label %745

745:                                              ; preds = %780, %744
  %746 = load i64, ptr %17, align 8, !tbaa !9
  %747 = load i64, ptr %10, align 8, !tbaa !9
  %748 = sub nsw i64 %747, 1
  %749 = icmp sle i64 %746, %748
  br i1 %749, label %750, label %783

750:                                              ; preds = %745
  %751 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %31, i32 0, i32 6
  %752 = load ptr, ptr %751, align 8, !tbaa !11
  %753 = load i64, ptr %16, align 8, !tbaa !9
  %754 = getelementptr inbounds ptr, ptr %752, i64 %753
  %755 = load ptr, ptr %754, align 8, !tbaa !5
  %756 = load i64, ptr %17, align 8, !tbaa !9
  %757 = getelementptr inbounds double, ptr %755, i64 %756
  %758 = load double, ptr %757, align 8, !tbaa !12
  %759 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %760 = load ptr, ptr %759, align 8, !tbaa !11
  %761 = load i64, ptr %16, align 8, !tbaa !9
  %762 = getelementptr inbounds double, ptr %760, i64 %761
  %763 = load double, ptr %762, align 8, !tbaa !12
  %764 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %765 = load ptr, ptr %764, align 8, !tbaa !11
  %766 = load i64, ptr %17, align 8, !tbaa !9
  %767 = getelementptr inbounds double, ptr %765, i64 %766
  %768 = load double, ptr %767, align 8, !tbaa !12
  %769 = fmul double %763, %768
  %770 = load ptr, ptr %14, align 8, !tbaa !5
  %771 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %769, ptr noundef %770)
  %772 = fdiv double %758, %771
  %773 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %31, i32 0, i32 6
  %774 = load ptr, ptr %773, align 8, !tbaa !11
  %775 = load i64, ptr %16, align 8, !tbaa !9
  %776 = getelementptr inbounds ptr, ptr %774, i64 %775
  %777 = load ptr, ptr %776, align 8, !tbaa !5
  %778 = load i64, ptr %17, align 8, !tbaa !9
  %779 = getelementptr inbounds double, ptr %777, i64 %778
  store double %772, ptr %779, align 8, !tbaa !12
  br label %780

780:                                              ; preds = %750
  %781 = load i64, ptr %17, align 8, !tbaa !9
  %782 = add nsw i64 %781, 1
  store i64 %782, ptr %17, align 8, !tbaa !9
  br label %745, !llvm.loop !39

783:                                              ; preds = %745
  br label %784

784:                                              ; preds = %783
  %785 = load i64, ptr %16, align 8, !tbaa !9
  %786 = add nsw i64 %785, 1
  store i64 %786, ptr %16, align 8, !tbaa !9
  br label %739, !llvm.loop !40

787:                                              ; preds = %739
  %788 = load i64, ptr %10, align 8, !tbaa !9
  %789 = load ptr, ptr %14, align 8, !tbaa !5
  %790 = call noundef zeroext i1 @_ZN11alglib_impl10smatrixevdEPNS_9ae_matrixEllbPNS_9ae_vectorES1_PNS_8ae_stateE(ptr noundef %31, i64 noundef %788, i64 noundef 1, i1 noundef zeroext true, ptr noundef %37, ptr noundef %28, ptr noundef %789)
  br i1 %790, label %794, label %791

791:                                              ; preds = %787
  %792 = load ptr, ptr %12, align 8, !tbaa !5
  store i64 -4, ptr %792, align 8, !tbaa !9
  %793 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %793)
  store i32 1, ptr %39, align 4
  br label %935

794:                                              ; preds = %787
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %795

795:                                              ; preds = %834, %794
  %796 = load i64, ptr %16, align 8, !tbaa !9
  %797 = load i64, ptr %10, align 8, !tbaa !9
  %798 = sub nsw i64 %797, 1
  %799 = icmp sle i64 %796, %798
  br i1 %799, label %800, label %837

800:                                              ; preds = %795
  store i64 0, ptr %18, align 8, !tbaa !9
  br label %801

801:                                              ; preds = %830, %800
  %802 = load i64, ptr %18, align 8, !tbaa !9
  %803 = load i64, ptr %10, align 8, !tbaa !9
  %804 = sub nsw i64 %803, 1
  %805 = icmp sle i64 %802, %804
  br i1 %805, label %806, label %833

806:                                              ; preds = %801
  %807 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %28, i32 0, i32 6
  %808 = load ptr, ptr %807, align 8, !tbaa !11
  %809 = load i64, ptr %16, align 8, !tbaa !9
  %810 = getelementptr inbounds ptr, ptr %808, i64 %809
  %811 = load ptr, ptr %810, align 8, !tbaa !5
  %812 = load i64, ptr %18, align 8, !tbaa !9
  %813 = getelementptr inbounds double, ptr %811, i64 %812
  %814 = load double, ptr %813, align 8, !tbaa !12
  %815 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %36, i32 0, i32 4
  %816 = load ptr, ptr %815, align 8, !tbaa !11
  %817 = load i64, ptr %16, align 8, !tbaa !9
  %818 = getelementptr inbounds double, ptr %816, i64 %817
  %819 = load double, ptr %818, align 8, !tbaa !12
  %820 = load ptr, ptr %14, align 8, !tbaa !5
  %821 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %819, ptr noundef %820)
  %822 = fdiv double %814, %821
  %823 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %28, i32 0, i32 6
  %824 = load ptr, ptr %823, align 8, !tbaa !11
  %825 = load i64, ptr %16, align 8, !tbaa !9
  %826 = getelementptr inbounds ptr, ptr %824, i64 %825
  %827 = load ptr, ptr %826, align 8, !tbaa !5
  %828 = load i64, ptr %18, align 8, !tbaa !9
  %829 = getelementptr inbounds double, ptr %827, i64 %828
  store double %822, ptr %829, align 8, !tbaa !12
  br label %830

830:                                              ; preds = %806
  %831 = load i64, ptr %18, align 8, !tbaa !9
  %832 = add nsw i64 %831, 1
  store i64 %832, ptr %18, align 8, !tbaa !9
  br label %801, !llvm.loop !41

833:                                              ; preds = %801
  br label %834

834:                                              ; preds = %833
  %835 = load i64, ptr %16, align 8, !tbaa !9
  %836 = add nsw i64 %835, 1
  store i64 %836, ptr %16, align 8, !tbaa !9
  br label %795, !llvm.loop !42

837:                                              ; preds = %795
  %838 = load i64, ptr %10, align 8, !tbaa !9
  %839 = load i64, ptr %10, align 8, !tbaa !9
  %840 = load i64, ptr %10, align 8, !tbaa !9
  %841 = load ptr, ptr %13, align 8, !tbaa !5
  %842 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %838, i64 noundef %839, i64 noundef %840, double noundef 1.000000e+00, ptr noundef %27, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %28, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %841, i64 noundef 0, i64 noundef 0, ptr noundef %842)
  br label %843

843:                                              ; preds = %837, %722
  store i64 0, ptr %18, align 8, !tbaa !9
  br label %844

844:                                              ; preds = %930, %843
  %845 = load i64, ptr %18, align 8, !tbaa !9
  %846 = load i64, ptr %10, align 8, !tbaa !9
  %847 = sub nsw i64 %846, 1
  %848 = icmp sle i64 %845, %847
  br i1 %848, label %849, label %933

849:                                              ; preds = %844
  %850 = load ptr, ptr %13, align 8, !tbaa !5
  %851 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %850, i32 0, i32 6
  %852 = load ptr, ptr %851, align 8, !tbaa !11
  %853 = getelementptr inbounds ptr, ptr %852, i64 0
  %854 = load ptr, ptr %853, align 8, !tbaa !5
  %855 = load i64, ptr %18, align 8, !tbaa !9
  %856 = getelementptr inbounds double, ptr %854, i64 %855
  %857 = load ptr, ptr %13, align 8, !tbaa !5
  %858 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %857, i32 0, i32 2
  %859 = load i64, ptr %858, align 8, !tbaa !34
  %860 = load ptr, ptr %13, align 8, !tbaa !5
  %861 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %860, i32 0, i32 6
  %862 = load ptr, ptr %861, align 8, !tbaa !11
  %863 = getelementptr inbounds ptr, ptr %862, i64 0
  %864 = load ptr, ptr %863, align 8, !tbaa !5
  %865 = load i64, ptr %18, align 8, !tbaa !9
  %866 = getelementptr inbounds double, ptr %864, i64 %865
  %867 = load ptr, ptr %13, align 8, !tbaa !5
  %868 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %867, i32 0, i32 2
  %869 = load i64, ptr %868, align 8, !tbaa !34
  %870 = load i64, ptr %10, align 8, !tbaa !9
  %871 = sub nsw i64 %870, 1
  %872 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %871)
  %873 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %856, i64 noundef %859, ptr noundef %866, i64 noundef %869, i64 noundef %872)
  store double %873, ptr %20, align 8, !tbaa !12
  %874 = load double, ptr %20, align 8, !tbaa !12
  %875 = load ptr, ptr %14, align 8, !tbaa !5
  %876 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %874, ptr noundef %875)
  %877 = fdiv double 1.000000e+00, %876
  store double %877, ptr %20, align 8, !tbaa !12
  %878 = load ptr, ptr %13, align 8, !tbaa !5
  %879 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %878, i32 0, i32 6
  %880 = load ptr, ptr %879, align 8, !tbaa !11
  %881 = getelementptr inbounds ptr, ptr %880, i64 0
  %882 = load ptr, ptr %881, align 8, !tbaa !5
  %883 = load i64, ptr %18, align 8, !tbaa !9
  %884 = getelementptr inbounds double, ptr %882, i64 %883
  %885 = load ptr, ptr %13, align 8, !tbaa !5
  %886 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %885, i32 0, i32 2
  %887 = load i64, ptr %886, align 8, !tbaa !34
  %888 = load i64, ptr %10, align 8, !tbaa !9
  %889 = sub nsw i64 %888, 1
  %890 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %889)
  %891 = load double, ptr %20, align 8, !tbaa !12
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %884, i64 noundef %887, i64 noundef %890, double noundef %891)
  store double 0.000000e+00, ptr %20, align 8, !tbaa !12
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %892

892:                                              ; preds = %909, %849
  %893 = load i64, ptr %16, align 8, !tbaa !9
  %894 = load i64, ptr %10, align 8, !tbaa !9
  %895 = sub nsw i64 %894, 1
  %896 = icmp sle i64 %893, %895
  br i1 %896, label %897, label %912

897:                                              ; preds = %892
  %898 = load double, ptr %20, align 8, !tbaa !12
  %899 = load ptr, ptr %13, align 8, !tbaa !5
  %900 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %899, i32 0, i32 6
  %901 = load ptr, ptr %900, align 8, !tbaa !11
  %902 = load i64, ptr %16, align 8, !tbaa !9
  %903 = getelementptr inbounds ptr, ptr %901, i64 %902
  %904 = load ptr, ptr %903, align 8, !tbaa !5
  %905 = load i64, ptr %18, align 8, !tbaa !9
  %906 = getelementptr inbounds double, ptr %904, i64 %905
  %907 = load double, ptr %906, align 8, !tbaa !12
  %908 = fadd double %898, %907
  store double %908, ptr %20, align 8, !tbaa !12
  br label %909

909:                                              ; preds = %897
  %910 = load i64, ptr %16, align 8, !tbaa !9
  %911 = add nsw i64 %910, 1
  store i64 %911, ptr %16, align 8, !tbaa !9
  br label %892, !llvm.loop !43

912:                                              ; preds = %892
  %913 = load double, ptr %20, align 8, !tbaa !12
  %914 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %913, double noundef 0.000000e+00)
  br i1 %914, label %915, label %929

915:                                              ; preds = %912
  %916 = load ptr, ptr %13, align 8, !tbaa !5
  %917 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %916, i32 0, i32 6
  %918 = load ptr, ptr %917, align 8, !tbaa !11
  %919 = getelementptr inbounds ptr, ptr %918, i64 0
  %920 = load ptr, ptr %919, align 8, !tbaa !5
  %921 = load i64, ptr %18, align 8, !tbaa !9
  %922 = getelementptr inbounds double, ptr %920, i64 %921
  %923 = load ptr, ptr %13, align 8, !tbaa !5
  %924 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %923, i32 0, i32 2
  %925 = load i64, ptr %924, align 8, !tbaa !34
  %926 = load i64, ptr %10, align 8, !tbaa !9
  %927 = sub nsw i64 %926, 1
  %928 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %927)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %922, i64 noundef %925, i64 noundef %928, double noundef -1.000000e+00)
  br label %929

929:                                              ; preds = %915, %912
  br label %930

930:                                              ; preds = %929
  %931 = load i64, ptr %18, align 8, !tbaa !9
  %932 = add nsw i64 %931, 1
  store i64 %932, ptr %18, align 8, !tbaa !9
  br label %844, !llvm.loop !44

933:                                              ; preds = %844
  %934 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %934)
  store i32 0, ptr %39, align 4
  br label %935

935:                                              ; preds = %933, %791, %672, %587, %508, %163, %105, %69
  call void @llvm.lifetime.end.p0(i64 64, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 80, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #4
  %936 = load i32, ptr %39, align 4
  switch i32 %936, label %938 [
    i32 0, label %937
    i32 1, label %937
  ]

937:                                              ; preds = %935, %935
  ret void

938:                                              ; preds = %935
  unreachable
}

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

declare void @_ZN11alglib_impl15ae_matrix_clearEPNS_9ae_matrixE(ptr noundef) #2

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

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

declare void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef) #2

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

declare void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef, i64 noundef, ptr noundef, i64 noundef, i64 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

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

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

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

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

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

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

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

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

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

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

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


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

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

@.str.224 = external hidden unnamed_addr constant [30 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 nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11alglib_impl10fisherldanEPNS_9ae_matrixElllPlS1_PNS_8ae_stateE(ptr noundef %0, i64 noundef %1, i64 noundef %2, i64 noundef %3, ptr nocapture noundef %4, ptr noundef %5, ptr noundef %6) local_unnamed_addr #3 {
  %8 = alloca %"struct.alglib_impl::ae_frame", align 8
  %9 = alloca %"struct.alglib_impl::ae_vector", align 8
  %10 = alloca %"struct.alglib_impl::ae_vector", align 8
  %11 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %12 = alloca %"struct.alglib_impl::ae_vector", align 8
  %13 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %14 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %15 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %16 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %17 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %18 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %19 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %20 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %21 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %22 = alloca %"struct.alglib_impl::ae_matrix", 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
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %9) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %26) #5
  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(64) %9, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %10, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %11, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %12, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %13, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %14, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %15, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %16, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %17, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %18, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %19, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %20, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %21, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %22, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %23, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %24, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %25, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %26, i8 0, i64 64, i1 false)
  store i64 0, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl15ae_matrix_clearEPNS_9ae_matrixE(ptr noundef %5)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %9, i64 noundef 0, i64 noundef 2, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %10, i64 noundef 0, i64 noundef 3, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %11, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %12, i64 noundef 0, i64 noundef 2, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %13, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %14, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %15, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %16, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %17, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %18, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %19, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %20, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %21, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %6, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %22, i64 noundef 0, 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 %23, 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 %24, 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 %25, 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 %26, i64 noundef 0, i64 noundef 3, ptr noundef %6, i1 noundef zeroext true)
  %27 = icmp slt i64 %1, 0
  %28 = icmp slt i64 %2, 1
  %or.cond = or i1 %27, %28
  %29 = icmp slt i64 %3, 2
  %or.cond3 = or i1 %or.cond, %29
  br i1 %or.cond3, label %._crit_edge493.sink.split, label %.preheader396

.preheader396:                                    ; preds = %7
  %.not.not397.not = icmp eq i64 %1, 0
  br i1 %.not.not397.not, label %.thread, label %.lr.ph

.thread:                                          ; preds = %.preheader396
  store i64 2, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %5, i64 noundef %2, i64 noundef %2, ptr noundef %6)
  br label %.preheader.lr.ph

.lr.ph:                                           ; preds = %.preheader396
  %30 = getelementptr inbounds i8, ptr %0, i64 72
  br label %33

31:                                               ; preds = %41
  %32 = add nuw nsw i64 %.0345398, 1
  %exitcond.not = icmp eq i64 %32, %1
  br i1 %exitcond.not, label %._crit_edge, label %33, !llvm.loop !9

33:                                               ; preds = %.lr.ph, %31
  %.0345398 = phi i64 [ 0, %.lr.ph ], [ %32, %31 ]
  %34 = load ptr, ptr %30, align 8, !tbaa !11
  %35 = getelementptr inbounds ptr, ptr %34, i64 %.0345398
  %36 = load ptr, ptr %35, align 8, !tbaa !12
  %37 = getelementptr inbounds double, ptr %36, i64 %2
  %38 = load double, ptr %37, align 8, !tbaa !14
  %39 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %38, ptr noundef %6)
  %40 = icmp slt i64 %39, 0
  br i1 %40, label %._crit_edge493.sink.split, label %41

41:                                               ; preds = %33
  %42 = load ptr, ptr %30, align 8, !tbaa !11
  %43 = getelementptr inbounds ptr, ptr %42, i64 %.0345398
  %44 = load ptr, ptr %43, align 8, !tbaa !12
  %45 = getelementptr inbounds double, ptr %44, i64 %2
  %46 = load double, ptr %45, align 8, !tbaa !14
  %47 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %46, ptr noundef %6)
  %.not = icmp slt i64 %47, %3
  br i1 %.not, label %31, label %._crit_edge493.sink.split

._crit_edge:                                      ; preds = %31
  store i64 1, ptr %4, align 8, !tbaa !5
  %48 = icmp slt i64 %1, 2
  br i1 %48, label %49, label %70

49:                                               ; preds = %._crit_edge
  store i64 2, ptr %4, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %5, i64 noundef %2, i64 noundef %2, ptr noundef %6)
  %.not.not382491 = icmp sgt i64 %2, 0
  br i1 %.not.not382491, label %.preheader.lr.ph, label %._crit_edge493

.preheader.lr.ph:                                 ; preds = %.thread, %49
  %50 = getelementptr inbounds i8, ptr %5, i64 72
  %xtraiter567 = and i64 %2, 1
  %51 = icmp eq i64 %2, 1
  %unroll_iter570 = and i64 %2, 9223372036854775806
  %lcmp.mod569.not = icmp eq i64 %xtraiter567, 0
  br label %.preheader.us

.preheader.us:                                    ; preds = %._crit_edge490.us, %.preheader.lr.ph
  %.1346492.us = phi i64 [ 0, %.preheader.lr.ph ], [ %69, %._crit_edge490.us ]
  br i1 %51, label %._crit_edge490.us.unr-lcssa, label %.preheader.us.new

.preheader.us.new:                                ; preds = %.preheader.us, %.preheader.us.new
  %.0339488.us = phi i64 [ %63, %.preheader.us.new ], [ 0, %.preheader.us ]
  %niter571 = phi i64 [ %niter571.next.1, %.preheader.us.new ], [ 0, %.preheader.us ]
  %52 = icmp eq i64 %.1346492.us, %.0339488.us
  %53 = load ptr, ptr %50, align 8, !tbaa !11
  %54 = getelementptr inbounds ptr, ptr %53, i64 %.1346492.us
  %55 = load ptr, ptr %54, align 8, !tbaa !12
  %. = select i1 %52, double 1.000000e+00, double 0.000000e+00
  %56 = getelementptr inbounds double, ptr %55, i64 %.0339488.us
  store double %., ptr %56, align 8, !tbaa !14
  %57 = or disjoint i64 %.0339488.us, 1
  %58 = icmp eq i64 %.1346492.us, %57
  %59 = load ptr, ptr %50, align 8, !tbaa !11
  %60 = getelementptr inbounds ptr, ptr %59, i64 %.1346492.us
  %61 = load ptr, ptr %60, align 8, !tbaa !12
  %..1 = select i1 %58, double 1.000000e+00, double 0.000000e+00
  %62 = getelementptr inbounds double, ptr %61, i64 %57
  store double %..1, ptr %62, align 8, !tbaa !14
  %63 = add nuw nsw i64 %.0339488.us, 2
  %niter571.next.1 = add i64 %niter571, 2
  %niter571.ncmp.1 = icmp eq i64 %niter571.next.1, %unroll_iter570
  br i1 %niter571.ncmp.1, label %._crit_edge490.us.unr-lcssa, label %.preheader.us.new, !llvm.loop !16

._crit_edge490.us.unr-lcssa:                      ; preds = %.preheader.us.new, %.preheader.us
  %.0339488.us.unr = phi i64 [ 0, %.preheader.us ], [ %63, %.preheader.us.new ]
  br i1 %lcmp.mod569.not, label %._crit_edge490.us, label %._crit_edge490.us.epilog-lcssa

._crit_edge490.us.epilog-lcssa:                   ; preds = %._crit_edge490.us.unr-lcssa
  %64 = icmp eq i64 %.1346492.us, %.0339488.us.unr
  %65 = load ptr, ptr %50, align 8, !tbaa !11
  %66 = getelementptr inbounds ptr, ptr %65, i64 %.1346492.us
  %67 = load ptr, ptr %66, align 8, !tbaa !12
  %..epil = select i1 %64, double 1.000000e+00, double 0.000000e+00
  %68 = getelementptr inbounds double, ptr %67, i64 %.0339488.us.unr
  store double %..epil, ptr %68, align 8, !tbaa !14
  br label %._crit_edge490.us

._crit_edge490.us:                                ; preds = %._crit_edge490.us.unr-lcssa, %._crit_edge490.us.epilog-lcssa
  %69 = add nuw nsw i64 %.1346492.us, 1
  %exitcond520.not = icmp eq i64 %69, %2
  br i1 %exitcond520.not, label %._crit_edge493, label %.preheader.us, !llvm.loop !17

70:                                               ; preds = %._crit_edge
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %23, i64 noundef %2, ptr noundef %6)
  %71 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %2, i64 noundef %1, ptr noundef %6)
  %72 = add nsw i64 %71, 1
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %26, i64 noundef %72, ptr noundef %6)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %20, i64 noundef %1, i64 noundef %2, ptr noundef %6)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %1, ptr noundef %6)
  %73 = getelementptr inbounds i8, ptr %0, i64 72
  %74 = getelementptr inbounds i8, ptr %9, i64 56
  br label %75

75:                                               ; preds = %70, %75
  %.2347399 = phi i64 [ 0, %70 ], [ %84, %75 ]
  %76 = load ptr, ptr %73, align 8, !tbaa !11
  %77 = getelementptr inbounds ptr, ptr %76, i64 %.2347399
  %78 = load ptr, ptr %77, align 8, !tbaa !12
  %79 = getelementptr inbounds double, ptr %78, i64 %2
  %80 = load double, ptr %79, align 8, !tbaa !14
  %81 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %80, ptr noundef %6)
  %82 = load ptr, ptr %74, align 8, !tbaa !11
  %83 = getelementptr inbounds i64, ptr %82, i64 %.2347399
  store i64 %81, ptr %83, align 8, !tbaa !5
  %84 = add nuw nsw i64 %.2347399, 1
  %exitcond494.not = icmp eq i64 %84, %1
  br i1 %exitcond494.not, label %85, label %75, !llvm.loop !18

85:                                               ; preds = %75
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %2, ptr noundef %6)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %3, i64 noundef %2, ptr noundef %6)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %3, ptr noundef %6)
  %.not.not360400 = icmp sgt i64 %2, 0
  br i1 %.not.not360400, label %.lr.ph403, label %.preheader395

.lr.ph403:                                        ; preds = %85
  %86 = getelementptr inbounds i8, ptr %10, i64 56
  %87 = add nsw i64 %2, -1
  %xtraiter = and i64 %2, 3
  %88 = icmp ult i64 %87, 3
  br i1 %88, label %.preheader395.loopexit.unr-lcssa, label %.lr.ph403.new

.lr.ph403.new:                                    ; preds = %.lr.ph403
  %unroll_iter = and i64 %2, 9223372036854775804
  br label %96

.preheader395.loopexit.unr-lcssa:                 ; preds = %96, %.lr.ph403
  %.1340401.unr = phi i64 [ 0, %.lr.ph403 ], [ %108, %96 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader395, label %.epil.preheader

.epil.preheader:                                  ; preds = %.preheader395.loopexit.unr-lcssa, %.epil.preheader
  %.1340401.epil = phi i64 [ %91, %.epil.preheader ], [ %.1340401.unr, %.preheader395.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %.preheader395.loopexit.unr-lcssa ]
  %89 = load ptr, ptr %86, align 8, !tbaa !11
  %90 = getelementptr inbounds double, ptr %89, i64 %.1340401.epil
  store double 0.000000e+00, ptr %90, align 8, !tbaa !14
  %91 = add nuw nsw i64 %.1340401.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.preheader395, label %.epil.preheader, !llvm.loop !19

.preheader395:                                    ; preds = %.preheader395.loopexit.unr-lcssa, %.epil.preheader, %85
  %92 = add nsw i64 %2, -1
  %.not.not361409 = icmp sgt i64 %3, 0
  br i1 %.not.not361409, label %.lr.ph411, label %.lr.ph414

.lr.ph411:                                        ; preds = %.preheader395
  %93 = getelementptr inbounds i8, ptr %12, i64 56
  %94 = getelementptr inbounds i8, ptr %11, i64 72
  %xtraiter530 = and i64 %2, 3
  %95 = icmp ult i64 %92, 3
  %unroll_iter533 = and i64 %2, 9223372036854775804
  %lcmp.mod532.not = icmp eq i64 %xtraiter530, 0
  br label %112

96:                                               ; preds = %96, %.lr.ph403.new
  %.1340401 = phi i64 [ 0, %.lr.ph403.new ], [ %108, %96 ]
  %niter = phi i64 [ 0, %.lr.ph403.new ], [ %niter.next.3, %96 ]
  %97 = load ptr, ptr %86, align 8, !tbaa !11
  %98 = getelementptr inbounds double, ptr %97, i64 %.1340401
  store double 0.000000e+00, ptr %98, align 8, !tbaa !14
  %99 = or disjoint i64 %.1340401, 1
  %100 = load ptr, ptr %86, align 8, !tbaa !11
  %101 = getelementptr inbounds double, ptr %100, i64 %99
  store double 0.000000e+00, ptr %101, align 8, !tbaa !14
  %102 = or disjoint i64 %.1340401, 2
  %103 = load ptr, ptr %86, align 8, !tbaa !11
  %104 = getelementptr inbounds double, ptr %103, i64 %102
  store double 0.000000e+00, ptr %104, align 8, !tbaa !14
  %105 = or disjoint i64 %.1340401, 3
  %106 = load ptr, ptr %86, align 8, !tbaa !11
  %107 = getelementptr inbounds double, ptr %106, i64 %105
  store double 0.000000e+00, ptr %107, align 8, !tbaa !14
  %108 = add nuw nsw i64 %.1340401, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.preheader395.loopexit.unr-lcssa, label %96, !llvm.loop !21

.lr.ph414:                                        ; preds = %._crit_edge408, %.preheader395
  %109 = getelementptr inbounds i8, ptr %10, i64 56
  %110 = getelementptr inbounds i8, ptr %11, i64 72
  %111 = getelementptr inbounds i8, ptr %12, i64 56
  %smax = call i64 @llvm.smax.i64(i64 %1, i64 1)
  br label %143

112:                                              ; preds = %.lr.ph411, %._crit_edge408
  %.3348410 = phi i64 [ 0, %.lr.ph411 ], [ %140, %._crit_edge408 ]
  %113 = load ptr, ptr %93, align 8, !tbaa !11
  %114 = getelementptr inbounds i64, ptr %113, i64 %.3348410
  store i64 0, ptr %114, align 8, !tbaa !5
  br i1 %.not.not360400, label %.lr.ph407.preheader, label %._crit_edge408

.lr.ph407.preheader:                              ; preds = %112
  br i1 %95, label %._crit_edge408.loopexit.unr-lcssa, label %.lr.ph407

.lr.ph407:                                        ; preds = %.lr.ph407.preheader, %.lr.ph407
  %.2341405 = phi i64 [ %134, %.lr.ph407 ], [ 0, %.lr.ph407.preheader ]
  %niter534 = phi i64 [ %niter534.next.3, %.lr.ph407 ], [ 0, %.lr.ph407.preheader ]
  %115 = load ptr, ptr %94, align 8, !tbaa !11
  %116 = getelementptr inbounds ptr, ptr %115, i64 %.3348410
  %117 = load ptr, ptr %116, align 8, !tbaa !12
  %118 = getelementptr inbounds double, ptr %117, i64 %.2341405
  store double 0.000000e+00, ptr %118, align 8, !tbaa !14
  %119 = or disjoint i64 %.2341405, 1
  %120 = load ptr, ptr %94, align 8, !tbaa !11
  %121 = getelementptr inbounds ptr, ptr %120, i64 %.3348410
  %122 = load ptr, ptr %121, align 8, !tbaa !12
  %123 = getelementptr inbounds double, ptr %122, i64 %119
  store double 0.000000e+00, ptr %123, align 8, !tbaa !14
  %124 = or disjoint i64 %.2341405, 2
  %125 = load ptr, ptr %94, align 8, !tbaa !11
  %126 = getelementptr inbounds ptr, ptr %125, i64 %.3348410
  %127 = load ptr, ptr %126, align 8, !tbaa !12
  %128 = getelementptr inbounds double, ptr %127, i64 %124
  store double 0.000000e+00, ptr %128, align 8, !tbaa !14
  %129 = or disjoint i64 %.2341405, 3
  %130 = load ptr, ptr %94, align 8, !tbaa !11
  %131 = getelementptr inbounds ptr, ptr %130, i64 %.3348410
  %132 = load ptr, ptr %131, align 8, !tbaa !12
  %133 = getelementptr inbounds double, ptr %132, i64 %129
  store double 0.000000e+00, ptr %133, align 8, !tbaa !14
  %134 = add nuw nsw i64 %.2341405, 4
  %niter534.next.3 = add i64 %niter534, 4
  %niter534.ncmp.3 = icmp eq i64 %niter534.next.3, %unroll_iter533
  br i1 %niter534.ncmp.3, label %._crit_edge408.loopexit.unr-lcssa, label %.lr.ph407, !llvm.loop !22

._crit_edge408.loopexit.unr-lcssa:                ; preds = %.lr.ph407, %.lr.ph407.preheader
  %.2341405.unr = phi i64 [ 0, %.lr.ph407.preheader ], [ %134, %.lr.ph407 ]
  br i1 %lcmp.mod532.not, label %._crit_edge408, label %.lr.ph407.epil

.lr.ph407.epil:                                   ; preds = %._crit_edge408.loopexit.unr-lcssa, %.lr.ph407.epil
  %.2341405.epil = phi i64 [ %139, %.lr.ph407.epil ], [ %.2341405.unr, %._crit_edge408.loopexit.unr-lcssa ]
  %epil.iter531 = phi i64 [ %epil.iter531.next, %.lr.ph407.epil ], [ 0, %._crit_edge408.loopexit.unr-lcssa ]
  %135 = load ptr, ptr %94, align 8, !tbaa !11
  %136 = getelementptr inbounds ptr, ptr %135, i64 %.3348410
  %137 = load ptr, ptr %136, align 8, !tbaa !12
  %138 = getelementptr inbounds double, ptr %137, i64 %.2341405.epil
  store double 0.000000e+00, ptr %138, align 8, !tbaa !14
  %139 = add nuw nsw i64 %.2341405.epil, 1
  %epil.iter531.next = add i64 %epil.iter531, 1
  %epil.iter531.cmp.not = icmp eq i64 %epil.iter531.next, %xtraiter530
  br i1 %epil.iter531.cmp.not, label %._crit_edge408, label %.lr.ph407.epil, !llvm.loop !23

._crit_edge408:                                   ; preds = %._crit_edge408.loopexit.unr-lcssa, %.lr.ph407.epil, %112
  %140 = add nuw nsw i64 %.3348410, 1
  %exitcond497.not = icmp eq i64 %140, %3
  br i1 %exitcond497.not, label %.lr.ph414, label %112, !llvm.loop !24

.preheader393:                                    ; preds = %143
  br i1 %.not.not361409, label %.lr.ph417, label %._crit_edge418

.lr.ph417:                                        ; preds = %.preheader393
  %141 = getelementptr inbounds i8, ptr %12, i64 56
  %142 = getelementptr inbounds i8, ptr %11, i64 72
  br label %167

143:                                              ; preds = %.lr.ph414, %143
  %.4349413 = phi i64 [ 0, %.lr.ph414 ], [ %166, %143 ]
  %144 = load ptr, ptr %109, align 8, !tbaa !11
  %145 = load ptr, ptr %73, align 8, !tbaa !11
  %146 = getelementptr inbounds ptr, ptr %145, i64 %.4349413
  %147 = load ptr, ptr %146, align 8, !tbaa !12
  %148 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %92)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %144, i64 noundef 1, ptr noundef %147, i64 noundef 1, i64 noundef %148)
  %149 = load ptr, ptr %110, align 8, !tbaa !11
  %150 = load ptr, ptr %74, align 8, !tbaa !11
  %151 = getelementptr inbounds i64, ptr %150, i64 %.4349413
  %152 = load i64, ptr %151, align 8, !tbaa !5
  %153 = getelementptr inbounds ptr, ptr %149, i64 %152
  %154 = load ptr, ptr %153, align 8, !tbaa !12
  %155 = load ptr, ptr %73, align 8, !tbaa !11
  %156 = getelementptr inbounds ptr, ptr %155, i64 %.4349413
  %157 = load ptr, ptr %156, align 8, !tbaa !12
  %158 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %92)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %154, i64 noundef 1, ptr noundef %157, i64 noundef 1, i64 noundef %158)
  %159 = load ptr, ptr %111, align 8, !tbaa !11
  %160 = load ptr, ptr %74, align 8, !tbaa !11
  %161 = getelementptr inbounds i64, ptr %160, i64 %.4349413
  %162 = load i64, ptr %161, align 8, !tbaa !5
  %163 = getelementptr inbounds i64, ptr %159, i64 %162
  %164 = load i64, ptr %163, align 8, !tbaa !5
  %165 = add nsw i64 %164, 1
  store i64 %165, ptr %163, align 8, !tbaa !5
  %166 = add nuw nsw i64 %.4349413, 1
  %exitcond498.not = icmp eq i64 %166, %smax
  br i1 %exitcond498.not, label %.preheader393, label %143, !llvm.loop !25

167:                                              ; preds = %.lr.ph417, %167
  %.5350416 = phi i64 [ 0, %.lr.ph417 ], [ %177, %167 ]
  %168 = load ptr, ptr %141, align 8, !tbaa !11
  %169 = getelementptr inbounds i64, ptr %168, i64 %.5350416
  %170 = load i64, ptr %169, align 8, !tbaa !5
  %171 = sitofp i64 %170 to double
  %172 = fdiv double 1.000000e+00, %171
  %173 = load ptr, ptr %142, align 8, !tbaa !11
  %174 = getelementptr inbounds ptr, ptr %173, i64 %.5350416
  %175 = load ptr, ptr %174, align 8, !tbaa !12
  %176 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %92)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %175, i64 noundef 1, i64 noundef %176, double noundef %172)
  %177 = add nuw nsw i64 %.5350416, 1
  %exitcond499.not = icmp eq i64 %177, %3
  br i1 %exitcond499.not, label %._crit_edge418, label %167, !llvm.loop !26

._crit_edge418:                                   ; preds = %167, %.preheader393
  %178 = uitofp nneg i64 %1 to double
  %179 = fdiv double 1.000000e+00, %178
  %180 = getelementptr inbounds i8, ptr %10, i64 56
  %181 = load ptr, ptr %180, align 8, !tbaa !11
  %182 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %92)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %181, i64 noundef 1, i64 noundef %182, double noundef %179)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %14, i64 noundef %2, i64 noundef %2, ptr noundef %6)
  br i1 %.not.not360400, label %.preheader392.lr.ph, label %.lr.ph427

.preheader392.lr.ph:                              ; preds = %._crit_edge418
  %183 = getelementptr inbounds i8, ptr %14, i64 72
  %xtraiter536 = and i64 %2, 3
  %184 = icmp ult i64 %92, 3
  %unroll_iter539 = and i64 %2, 9223372036854775804
  %lcmp.mod538.not = icmp eq i64 %xtraiter536, 0
  br label %.preheader392.us

.preheader392.us:                                 ; preds = %._crit_edge422.us, %.preheader392.lr.ph
  %.6351424.us = phi i64 [ 0, %.preheader392.lr.ph ], [ %210, %._crit_edge422.us ]
  br i1 %184, label %._crit_edge422.us.unr-lcssa, label %.preheader392.us.new

.preheader392.us.new:                             ; preds = %.preheader392.us, %.preheader392.us.new
  %.3342420.us = phi i64 [ %204, %.preheader392.us.new ], [ 0, %.preheader392.us ]
  %niter540 = phi i64 [ %niter540.next.3, %.preheader392.us.new ], [ 0, %.preheader392.us ]
  %185 = load ptr, ptr %183, align 8, !tbaa !11
  %186 = getelementptr inbounds ptr, ptr %185, i64 %.6351424.us
  %187 = load ptr, ptr %186, align 8, !tbaa !12
  %188 = getelementptr inbounds double, ptr %187, i64 %.3342420.us
  store double 0.000000e+00, ptr %188, align 8, !tbaa !14
  %189 = or disjoint i64 %.3342420.us, 1
  %190 = load ptr, ptr %183, align 8, !tbaa !11
  %191 = getelementptr inbounds ptr, ptr %190, i64 %.6351424.us
  %192 = load ptr, ptr %191, align 8, !tbaa !12
  %193 = getelementptr inbounds double, ptr %192, i64 %189
  store double 0.000000e+00, ptr %193, align 8, !tbaa !14
  %194 = or disjoint i64 %.3342420.us, 2
  %195 = load ptr, ptr %183, align 8, !tbaa !11
  %196 = getelementptr inbounds ptr, ptr %195, i64 %.6351424.us
  %197 = load ptr, ptr %196, align 8, !tbaa !12
  %198 = getelementptr inbounds double, ptr %197, i64 %194
  store double 0.000000e+00, ptr %198, align 8, !tbaa !14
  %199 = or disjoint i64 %.3342420.us, 3
  %200 = load ptr, ptr %183, align 8, !tbaa !11
  %201 = getelementptr inbounds ptr, ptr %200, i64 %.6351424.us
  %202 = load ptr, ptr %201, align 8, !tbaa !12
  %203 = getelementptr inbounds double, ptr %202, i64 %199
  store double 0.000000e+00, ptr %203, align 8, !tbaa !14
  %204 = add nuw nsw i64 %.3342420.us, 4
  %niter540.next.3 = add i64 %niter540, 4
  %niter540.ncmp.3 = icmp eq i64 %niter540.next.3, %unroll_iter539
  br i1 %niter540.ncmp.3, label %._crit_edge422.us.unr-lcssa, label %.preheader392.us.new, !llvm.loop !27

._crit_edge422.us.unr-lcssa:                      ; preds = %.preheader392.us.new, %.preheader392.us
  %.3342420.us.unr = phi i64 [ 0, %.preheader392.us ], [ %204, %.preheader392.us.new ]
  br i1 %lcmp.mod538.not, label %._crit_edge422.us, label %.epil.preheader535

.epil.preheader535:                               ; preds = %._crit_edge422.us.unr-lcssa, %.epil.preheader535
  %.3342420.us.epil = phi i64 [ %209, %.epil.preheader535 ], [ %.3342420.us.unr, %._crit_edge422.us.unr-lcssa ]
  %epil.iter537 = phi i64 [ %epil.iter537.next, %.epil.preheader535 ], [ 0, %._crit_edge422.us.unr-lcssa ]
  %205 = load ptr, ptr %183, align 8, !tbaa !11
  %206 = getelementptr inbounds ptr, ptr %205, i64 %.6351424.us
  %207 = load ptr, ptr %206, align 8, !tbaa !12
  %208 = getelementptr inbounds double, ptr %207, i64 %.3342420.us.epil
  store double 0.000000e+00, ptr %208, align 8, !tbaa !14
  %209 = add nuw nsw i64 %.3342420.us.epil, 1
  %epil.iter537.next = add i64 %epil.iter537, 1
  %epil.iter537.cmp.not = icmp eq i64 %epil.iter537.next, %xtraiter536
  br i1 %epil.iter537.cmp.not, label %._crit_edge422.us, label %.epil.preheader535, !llvm.loop !28

._crit_edge422.us:                                ; preds = %.epil.preheader535, %._crit_edge422.us.unr-lcssa
  %210 = add nuw nsw i64 %.6351424.us, 1
  %exitcond501.not = icmp eq i64 %210, %2
  br i1 %exitcond501.not, label %.lr.ph427, label %.preheader392.us, !llvm.loop !29

.lr.ph427:                                        ; preds = %._crit_edge422.us, %._crit_edge418
  %211 = getelementptr inbounds i8, ptr %20, i64 72
  %smax502 = call i64 @llvm.smax.i64(i64 %1, i64 1)
  br label %212

212:                                              ; preds = %.lr.ph427, %212
  %.0337426 = phi i64 [ 0, %.lr.ph427 ], [ %225, %212 ]
  %213 = load ptr, ptr %211, align 8, !tbaa !11
  %214 = getelementptr inbounds ptr, ptr %213, i64 %.0337426
  %215 = load ptr, ptr %214, align 8, !tbaa !12
  %216 = load ptr, ptr %73, align 8, !tbaa !11
  %217 = getelementptr inbounds ptr, ptr %216, i64 %.0337426
  %218 = load ptr, ptr %217, align 8, !tbaa !12
  %219 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %92)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %215, i64 noundef 1, ptr noundef %218, i64 noundef 1, i64 noundef %219)
  %220 = load ptr, ptr %211, align 8, !tbaa !11
  %221 = getelementptr inbounds ptr, ptr %220, i64 %.0337426
  %222 = load ptr, ptr %221, align 8, !tbaa !12
  %223 = load ptr, ptr %180, align 8, !tbaa !11
  %224 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %92)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %222, i64 noundef 1, ptr noundef %223, i64 noundef 1, i64 noundef %224)
  %225 = add nuw nsw i64 %.0337426, 1
  %exitcond503.not = icmp eq i64 %225, %smax502
  br i1 %exitcond503.not, label %._crit_edge428, label %212, !llvm.loop !30

._crit_edge428:                                   ; preds = %212
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %2, i64 noundef %2, i64 noundef %1, double noundef 1.000000e+00, ptr noundef nonnull %20, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %20, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %14, i64 noundef 0, i64 noundef 0, ptr noundef %6)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %2, i64 noundef %2, ptr noundef %6)
  br i1 %.not.not360400, label %.preheader390.lr.ph, label %.lr.ph437

.preheader390.lr.ph:                              ; preds = %._crit_edge428
  %226 = getelementptr inbounds i8, ptr %13, i64 72
  %xtraiter542 = and i64 %2, 3
  %227 = icmp ult i64 %92, 3
  %unroll_iter545 = and i64 %2, 9223372036854775804
  %lcmp.mod544.not = icmp eq i64 %xtraiter542, 0
  br label %.preheader390.us

.preheader390.us:                                 ; preds = %._crit_edge432.us, %.preheader390.lr.ph
  %.7434.us = phi i64 [ 0, %.preheader390.lr.ph ], [ %253, %._crit_edge432.us ]
  br i1 %227, label %._crit_edge432.us.unr-lcssa, label %.preheader390.us.new

.preheader390.us.new:                             ; preds = %.preheader390.us, %.preheader390.us.new
  %.4343430.us = phi i64 [ %247, %.preheader390.us.new ], [ 0, %.preheader390.us ]
  %niter546 = phi i64 [ %niter546.next.3, %.preheader390.us.new ], [ 0, %.preheader390.us ]
  %228 = load ptr, ptr %226, align 8, !tbaa !11
  %229 = getelementptr inbounds ptr, ptr %228, i64 %.7434.us
  %230 = load ptr, ptr %229, align 8, !tbaa !12
  %231 = getelementptr inbounds double, ptr %230, i64 %.4343430.us
  store double 0.000000e+00, ptr %231, align 8, !tbaa !14
  %232 = or disjoint i64 %.4343430.us, 1
  %233 = load ptr, ptr %226, align 8, !tbaa !11
  %234 = getelementptr inbounds ptr, ptr %233, i64 %.7434.us
  %235 = load ptr, ptr %234, align 8, !tbaa !12
  %236 = getelementptr inbounds double, ptr %235, i64 %232
  store double 0.000000e+00, ptr %236, align 8, !tbaa !14
  %237 = or disjoint i64 %.4343430.us, 2
  %238 = load ptr, ptr %226, align 8, !tbaa !11
  %239 = getelementptr inbounds ptr, ptr %238, i64 %.7434.us
  %240 = load ptr, ptr %239, align 8, !tbaa !12
  %241 = getelementptr inbounds double, ptr %240, i64 %237
  store double 0.000000e+00, ptr %241, align 8, !tbaa !14
  %242 = or disjoint i64 %.4343430.us, 3
  %243 = load ptr, ptr %226, align 8, !tbaa !11
  %244 = getelementptr inbounds ptr, ptr %243, i64 %.7434.us
  %245 = load ptr, ptr %244, align 8, !tbaa !12
  %246 = getelementptr inbounds double, ptr %245, i64 %242
  store double 0.000000e+00, ptr %246, align 8, !tbaa !14
  %247 = add nuw nsw i64 %.4343430.us, 4
  %niter546.next.3 = add i64 %niter546, 4
  %niter546.ncmp.3 = icmp eq i64 %niter546.next.3, %unroll_iter545
  br i1 %niter546.ncmp.3, label %._crit_edge432.us.unr-lcssa, label %.preheader390.us.new, !llvm.loop !31

._crit_edge432.us.unr-lcssa:                      ; preds = %.preheader390.us.new, %.preheader390.us
  %.4343430.us.unr = phi i64 [ 0, %.preheader390.us ], [ %247, %.preheader390.us.new ]
  br i1 %lcmp.mod544.not, label %._crit_edge432.us, label %.epil.preheader541

.epil.preheader541:                               ; preds = %._crit_edge432.us.unr-lcssa, %.epil.preheader541
  %.4343430.us.epil = phi i64 [ %252, %.epil.preheader541 ], [ %.4343430.us.unr, %._crit_edge432.us.unr-lcssa ]
  %epil.iter543 = phi i64 [ %epil.iter543.next, %.epil.preheader541 ], [ 0, %._crit_edge432.us.unr-lcssa ]
  %248 = load ptr, ptr %226, align 8, !tbaa !11
  %249 = getelementptr inbounds ptr, ptr %248, i64 %.7434.us
  %250 = load ptr, ptr %249, align 8, !tbaa !12
  %251 = getelementptr inbounds double, ptr %250, i64 %.4343430.us.epil
  store double 0.000000e+00, ptr %251, align 8, !tbaa !14
  %252 = add nuw nsw i64 %.4343430.us.epil, 1
  %epil.iter543.next = add i64 %epil.iter543, 1
  %epil.iter543.cmp.not = icmp eq i64 %epil.iter543.next, %xtraiter542
  br i1 %epil.iter543.cmp.not, label %._crit_edge432.us, label %.epil.preheader541, !llvm.loop !32

._crit_edge432.us:                                ; preds = %.epil.preheader541, %._crit_edge432.us.unr-lcssa
  %253 = add nuw nsw i64 %.7434.us, 1
  %exitcond505.not = icmp eq i64 %253, %2
  br i1 %exitcond505.not, label %.lr.ph437, label %.preheader390.us, !llvm.loop !33

.lr.ph437:                                        ; preds = %._crit_edge432.us, %._crit_edge428
  %254 = getelementptr inbounds i8, ptr %20, i64 72
  %255 = getelementptr inbounds i8, ptr %11, i64 72
  %smax506 = call i64 @llvm.smax.i64(i64 %1, i64 1)
  br label %256

256:                                              ; preds = %.lr.ph437, %256
  %.1338436 = phi i64 [ 0, %.lr.ph437 ], [ %274, %256 ]
  %257 = load ptr, ptr %254, align 8, !tbaa !11
  %258 = getelementptr inbounds ptr, ptr %257, i64 %.1338436
  %259 = load ptr, ptr %258, align 8, !tbaa !12
  %260 = load ptr, ptr %73, align 8, !tbaa !11
  %261 = getelementptr inbounds ptr, ptr %260, i64 %.1338436
  %262 = load ptr, ptr %261, align 8, !tbaa !12
  %263 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %92)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %259, i64 noundef 1, ptr noundef %262, i64 noundef 1, i64 noundef %263)
  %264 = load ptr, ptr %254, align 8, !tbaa !11
  %265 = getelementptr inbounds ptr, ptr %264, i64 %.1338436
  %266 = load ptr, ptr %265, align 8, !tbaa !12
  %267 = load ptr, ptr %255, align 8, !tbaa !11
  %268 = load ptr, ptr %74, align 8, !tbaa !11
  %269 = getelementptr inbounds i64, ptr %268, i64 %.1338436
  %270 = load i64, ptr %269, align 8, !tbaa !5
  %271 = getelementptr inbounds ptr, ptr %267, i64 %270
  %272 = load ptr, ptr %271, align 8, !tbaa !12
  %273 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %92)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %266, i64 noundef 1, ptr noundef %272, i64 noundef 1, i64 noundef %273)
  %274 = add nuw nsw i64 %.1338436, 1
  %exitcond507.not = icmp eq i64 %274, %smax506
  br i1 %exitcond507.not, label %._crit_edge438, label %256, !llvm.loop !34

._crit_edge438:                                   ; preds = %256
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %2, i64 noundef %2, i64 noundef %1, double noundef 1.000000e+00, ptr noundef nonnull %20, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %20, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %13, i64 noundef 0, i64 noundef 0, ptr noundef %6)
  %275 = call noundef zeroext i1 @_ZN11alglib_impl10smatrixevdEPNS_9ae_matrixEllbPNS_9ae_vectorES1_PNS_8ae_stateE(ptr noundef nonnull %14, i64 noundef %2, i64 noundef 1, i1 noundef zeroext true, ptr noundef nonnull %24, ptr noundef nonnull %15, ptr noundef %6)
  br i1 %275, label %276, label %._crit_edge493.sink.split

276:                                              ; preds = %._crit_edge438
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %5, i64 noundef %2, i64 noundef %2, ptr noundef %6)
  %277 = getelementptr inbounds i8, ptr %24, i64 56
  %278 = load ptr, ptr %277, align 8, !tbaa !11
  %279 = getelementptr inbounds double, ptr %278, i64 %92
  %280 = load double, ptr %279, align 8, !tbaa !14
  %281 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %280, double noundef 0.000000e+00)
  br i1 %281, label %289, label %282

282:                                              ; preds = %276
  %283 = load ptr, ptr %277, align 8, !tbaa !11
  %284 = load double, ptr %283, align 8, !tbaa !14
  %285 = getelementptr inbounds double, ptr %283, i64 %92
  %286 = load double, ptr %285, align 8, !tbaa !14
  %287 = fmul double %286, 5.000000e-13
  %288 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %284, double noundef %287)
  br i1 %288, label %289, label %376

289:                                              ; preds = %282, %276
  %290 = load ptr, ptr %277, align 8, !tbaa !11
  %291 = getelementptr inbounds double, ptr %290, i64 %92
  %292 = load double, ptr %291, align 8, !tbaa !14
  %293 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %292, double noundef 0.000000e+00)
  br i1 %293, label %294, label %.preheader385

.preheader385:                                    ; preds = %289
  br i1 %.not.not360400, label %.lr.ph456, label %.lr.ph461

294:                                              ; preds = %289
  store i64 2, ptr %4, align 8, !tbaa !5
  br i1 %.not.not360400, label %.preheader384.lr.ph, label %._crit_edge493

.preheader384.lr.ph:                              ; preds = %294
  %295 = getelementptr inbounds i8, ptr %5, i64 72
  %xtraiter561 = and i64 %2, 1
  %296 = icmp eq i64 %92, 0
  %unroll_iter564 = and i64 %2, 9223372036854775806
  %lcmp.mod563.not = icmp eq i64 %xtraiter561, 0
  br label %.preheader384.us

.preheader384.us:                                 ; preds = %._crit_edge483.us, %.preheader384.lr.ph
  %.8485.us = phi i64 [ 0, %.preheader384.lr.ph ], [ %314, %._crit_edge483.us ]
  br i1 %296, label %._crit_edge483.us.unr-lcssa, label %.preheader384.us.new

.preheader384.us.new:                             ; preds = %.preheader384.us, %.preheader384.us.new
  %.5344481.us = phi i64 [ %308, %.preheader384.us.new ], [ 0, %.preheader384.us ]
  %niter565 = phi i64 [ %niter565.next.1, %.preheader384.us.new ], [ 0, %.preheader384.us ]
  %297 = icmp eq i64 %.8485.us, %.5344481.us
  %298 = load ptr, ptr %295, align 8, !tbaa !11
  %299 = getelementptr inbounds ptr, ptr %298, i64 %.8485.us
  %300 = load ptr, ptr %299, align 8, !tbaa !12
  %.525 = select i1 %297, double 1.000000e+00, double 0.000000e+00
  %301 = getelementptr inbounds double, ptr %300, i64 %.5344481.us
  store double %.525, ptr %301, align 8, !tbaa !14
  %302 = or disjoint i64 %.5344481.us, 1
  %303 = icmp eq i64 %.8485.us, %302
  %304 = load ptr, ptr %295, align 8, !tbaa !11
  %305 = getelementptr inbounds ptr, ptr %304, i64 %.8485.us
  %306 = load ptr, ptr %305, align 8, !tbaa !12
  %.525.1 = select i1 %303, double 1.000000e+00, double 0.000000e+00
  %307 = getelementptr inbounds double, ptr %306, i64 %302
  store double %.525.1, ptr %307, align 8, !tbaa !14
  %308 = add nuw nsw i64 %.5344481.us, 2
  %niter565.next.1 = add i64 %niter565, 2
  %niter565.ncmp.1 = icmp eq i64 %niter565.next.1, %unroll_iter564
  br i1 %niter565.ncmp.1, label %._crit_edge483.us.unr-lcssa, label %.preheader384.us.new, !llvm.loop !35

._crit_edge483.us.unr-lcssa:                      ; preds = %.preheader384.us.new, %.preheader384.us
  %.5344481.us.unr = phi i64 [ 0, %.preheader384.us ], [ %308, %.preheader384.us.new ]
  br i1 %lcmp.mod563.not, label %._crit_edge483.us, label %._crit_edge483.us.epilog-lcssa

._crit_edge483.us.epilog-lcssa:                   ; preds = %._crit_edge483.us.unr-lcssa
  %309 = icmp eq i64 %.8485.us, %.5344481.us.unr
  %310 = load ptr, ptr %295, align 8, !tbaa !11
  %311 = getelementptr inbounds ptr, ptr %310, i64 %.8485.us
  %312 = load ptr, ptr %311, align 8, !tbaa !12
  %.525.epil = select i1 %309, double 1.000000e+00, double 0.000000e+00
  %313 = getelementptr inbounds double, ptr %312, i64 %.5344481.us.unr
  store double %.525.epil, ptr %313, align 8, !tbaa !14
  br label %._crit_edge483.us

._crit_edge483.us:                                ; preds = %._crit_edge483.us.unr-lcssa, %._crit_edge483.us.epilog-lcssa
  %314 = add nuw nsw i64 %.8485.us, 1
  %exitcond518.not = icmp eq i64 %314, %2
  br i1 %exitcond518.not, label %._crit_edge493, label %.preheader384.us, !llvm.loop !36

.lr.ph456:                                        ; preds = %.preheader385, %.lr.ph456
  %.0336455 = phi i64 [ %spec.select, %.lr.ph456 ], [ 0, %.preheader385 ]
  %.2454 = phi i64 [ %322, %.lr.ph456 ], [ 0, %.preheader385 ]
  %315 = load ptr, ptr %277, align 8, !tbaa !11
  %316 = getelementptr inbounds double, ptr %315, i64 %.2454
  %317 = load double, ptr %316, align 8, !tbaa !14
  %318 = getelementptr inbounds double, ptr %315, i64 %92
  %319 = load double, ptr %318, align 8, !tbaa !14
  %320 = fmul double %319, 5.000000e-13
  %321 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %317, double noundef %320)
  %322 = add nuw nsw i64 %.2454, 1
  %spec.select = select i1 %321, i64 %322, i64 %.0336455
  %exitcond512.not = icmp eq i64 %322, %2
  br i1 %exitcond512.not, label %.lr.ph461, label %.lr.ph456, !llvm.loop !37

.lr.ph461:                                        ; preds = %.lr.ph456, %.preheader385
  %.0336.lcssa = phi i64 [ 0, %.preheader385 ], [ %spec.select, %.lr.ph456 ]
  %323 = icmp ne i64 %.0336.lcssa, 0
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %323, ptr noundef nonnull @.str.224, ptr noundef %6)
  %324 = sub nsw i64 %2, %.0336.lcssa
  %325 = add nsw i64 %324, 1
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %21, i64 noundef %1, i64 noundef %325, ptr noundef %6)
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %1, i64 noundef %324, i64 noundef %2, double noundef 1.000000e+00, ptr noundef %0, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %15, i64 noundef 0, i64 noundef %.0336.lcssa, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %21, i64 noundef 0, i64 noundef 0, ptr noundef %6)
  %326 = getelementptr inbounds i8, ptr %21, i64 72
  %xtraiter548 = and i64 %smax506, 1
  %unroll_iter551 = and i64 %smax506, 9223372036854775806
  br label %327

327:                                              ; preds = %327, %.lr.ph461
  %.9459 = phi i64 [ 0, %.lr.ph461 ], [ %347, %327 ]
  %niter552 = phi i64 [ 0, %.lr.ph461 ], [ %niter552.next.1, %327 ]
  %328 = load ptr, ptr %73, align 8, !tbaa !11
  %329 = getelementptr inbounds ptr, ptr %328, i64 %.9459
  %330 = load ptr, ptr %329, align 8, !tbaa !12
  %331 = getelementptr inbounds double, ptr %330, i64 %2
  %332 = load double, ptr %331, align 8, !tbaa !14
  %333 = load ptr, ptr %326, align 8, !tbaa !11
  %334 = getelementptr inbounds ptr, ptr %333, i64 %.9459
  %335 = load ptr, ptr %334, align 8, !tbaa !12
  %336 = getelementptr inbounds double, ptr %335, i64 %324
  store double %332, ptr %336, align 8, !tbaa !14
  %337 = or disjoint i64 %.9459, 1
  %338 = load ptr, ptr %73, align 8, !tbaa !11
  %339 = getelementptr inbounds ptr, ptr %338, i64 %337
  %340 = load ptr, ptr %339, align 8, !tbaa !12
  %341 = getelementptr inbounds double, ptr %340, i64 %2
  %342 = load double, ptr %341, align 8, !tbaa !14
  %343 = load ptr, ptr %326, align 8, !tbaa !11
  %344 = getelementptr inbounds ptr, ptr %343, i64 %337
  %345 = load ptr, ptr %344, align 8, !tbaa !12
  %346 = getelementptr inbounds double, ptr %345, i64 %324
  store double %342, ptr %346, align 8, !tbaa !14
  %347 = add nuw nsw i64 %.9459, 2
  %niter552.next.1 = add i64 %niter552, 2
  %niter552.ncmp.1 = icmp eq i64 %niter552.next.1, %unroll_iter551
  br i1 %niter552.ncmp.1, label %._crit_edge462.unr-lcssa, label %327, !llvm.loop !38

._crit_edge462.unr-lcssa:                         ; preds = %327
  %lcmp.mod550.not = icmp eq i64 %xtraiter548, 0
  br i1 %lcmp.mod550.not, label %._crit_edge462, label %._crit_edge462.epilog-lcssa

._crit_edge462.epilog-lcssa:                      ; preds = %._crit_edge462.unr-lcssa
  %348 = load ptr, ptr %73, align 8, !tbaa !11
  %349 = getelementptr inbounds ptr, ptr %348, i64 %347
  %350 = load ptr, ptr %349, align 8, !tbaa !12
  %351 = getelementptr inbounds double, ptr %350, i64 %2
  %352 = load double, ptr %351, align 8, !tbaa !14
  %353 = load ptr, ptr %326, align 8, !tbaa !11
  %354 = getelementptr inbounds ptr, ptr %353, i64 %347
  %355 = load ptr, ptr %354, align 8, !tbaa !12
  %356 = getelementptr inbounds double, ptr %355, i64 %324
  store double %352, ptr %356, align 8, !tbaa !14
  br label %._crit_edge462

._crit_edge462:                                   ; preds = %._crit_edge462.unr-lcssa, %._crit_edge462.epilog-lcssa
  call void @_ZN11alglib_impl10fisherldanEPNS_9ae_matrixElllPlS1_PNS_8ae_stateE(ptr noundef nonnull %21, i64 noundef %1, i64 noundef %324, i64 noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %22, ptr noundef %6)
  %357 = load i64, ptr %4, align 8, !tbaa !5
  %358 = icmp slt i64 %357, 0
  br i1 %358, label %._crit_edge493, label %359

359:                                              ; preds = %._crit_edge462
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %2, i64 noundef %324, i64 noundef %324, double noundef 1.000000e+00, ptr noundef nonnull %15, i64 noundef 0, i64 noundef %.0336.lcssa, i64 noundef 0, ptr noundef nonnull %22, 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)
  %.not.not374463 = icmp sgt i64 %.0336.lcssa, 0
  br i1 %.not.not374463, label %.lr.ph466, label %._crit_edge467

.lr.ph466:                                        ; preds = %359
  %360 = getelementptr inbounds i8, ptr %5, i64 72
  %361 = getelementptr inbounds i8, ptr %5, i64 16
  %362 = getelementptr inbounds i8, ptr %15, i64 72
  %363 = getelementptr inbounds i8, ptr %15, i64 16
  br label %364

364:                                              ; preds = %.lr.ph466, %364
  %.3464 = phi i64 [ %324, %.lr.ph466 ], [ %375, %364 ]
  %365 = load ptr, ptr %360, align 8, !tbaa !11
  %366 = load ptr, ptr %365, align 8, !tbaa !12
  %367 = getelementptr inbounds double, ptr %366, i64 %.3464
  %368 = load i64, ptr %361, align 8, !tbaa !39
  %369 = load ptr, ptr %362, align 8, !tbaa !11
  %370 = load ptr, ptr %369, align 8, !tbaa !12
  %371 = sub nsw i64 %.3464, %324
  %372 = getelementptr inbounds double, ptr %370, i64 %371
  %373 = load i64, ptr %363, align 8, !tbaa !39
  %374 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %92)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %367, i64 noundef %368, ptr noundef %372, i64 noundef %373, i64 noundef %374)
  %375 = add nsw i64 %.3464, 1
  %.not.not374 = icmp slt i64 %375, %2
  br i1 %.not.not374, label %364, label %._crit_edge467, !llvm.loop !43

._crit_edge467:                                   ; preds = %364, %359
  store i64 2, ptr %4, align 8, !tbaa !5
  br label %418

376:                                              ; preds = %282
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %17, i64 noundef %2, i64 noundef %2, ptr noundef %6)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %19, i64 noundef %2, i64 noundef %2, ptr noundef %6)
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %2, i64 noundef %2, i64 noundef %2, double noundef 1.000000e+00, ptr noundef nonnull %13, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %15, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %17, i64 noundef 0, i64 noundef 0, ptr noundef %6)
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %2, i64 noundef %2, i64 noundef %2, double noundef 1.000000e+00, ptr noundef nonnull %15, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %17, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %19, i64 noundef 0, i64 noundef 0, ptr noundef %6)
  br i1 %.not.not360400, label %.preheader388.lr.ph, label %._crit_edge445.thread

.preheader388.lr.ph:                              ; preds = %376
  %377 = getelementptr inbounds i8, ptr %19, i64 72
  br label %.preheader388.us

.preheader388.us:                                 ; preds = %._crit_edge442.us, %.preheader388.lr.ph
  %.10444.us = phi i64 [ 0, %.preheader388.lr.ph ], [ %397, %._crit_edge442.us ]
  br label %378

378:                                              ; preds = %.preheader388.us, %378
  %.6440.us = phi i64 [ 0, %.preheader388.us ], [ %396, %378 ]
  %379 = load ptr, ptr %377, align 8, !tbaa !11
  %380 = getelementptr inbounds ptr, ptr %379, i64 %.10444.us
  %381 = load ptr, ptr %380, align 8, !tbaa !12
  %382 = getelementptr inbounds double, ptr %381, i64 %.6440.us
  %383 = load double, ptr %382, align 8, !tbaa !14
  %384 = load ptr, ptr %277, align 8, !tbaa !11
  %385 = getelementptr inbounds double, ptr %384, i64 %.10444.us
  %386 = load double, ptr %385, align 8, !tbaa !14
  %387 = getelementptr inbounds double, ptr %384, i64 %.6440.us
  %388 = load double, ptr %387, align 8, !tbaa !14
  %389 = fmul double %386, %388
  %390 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %389, ptr noundef %6)
  %391 = fdiv double %383, %390
  %392 = load ptr, ptr %377, align 8, !tbaa !11
  %393 = getelementptr inbounds ptr, ptr %392, i64 %.10444.us
  %394 = load ptr, ptr %393, align 8, !tbaa !12
  %395 = getelementptr inbounds double, ptr %394, i64 %.6440.us
  store double %391, ptr %395, align 8, !tbaa !14
  %396 = add nuw nsw i64 %.6440.us, 1
  %exitcond508.not = icmp eq i64 %396, %2
  br i1 %exitcond508.not, label %._crit_edge442.us, label %378, !llvm.loop !44

._crit_edge442.us:                                ; preds = %378
  %397 = add nuw nsw i64 %.10444.us, 1
  %exitcond509.not = icmp eq i64 %397, %2
  br i1 %exitcond509.not, label %._crit_edge445, label %.preheader388.us, !llvm.loop !45

._crit_edge445:                                   ; preds = %._crit_edge442.us
  %398 = call noundef zeroext i1 @_ZN11alglib_impl10smatrixevdEPNS_9ae_matrixEllbPNS_9ae_vectorES1_PNS_8ae_stateE(ptr noundef nonnull %19, i64 noundef %2, i64 noundef 1, i1 noundef zeroext true, ptr noundef nonnull %25, ptr noundef nonnull %16, ptr noundef %6)
  br i1 %398, label %.preheader387, label %._crit_edge493.sink.split

._crit_edge445.thread:                            ; preds = %376
  %399 = call noundef zeroext i1 @_ZN11alglib_impl10smatrixevdEPNS_9ae_matrixEllbPNS_9ae_vectorES1_PNS_8ae_stateE(ptr noundef nonnull %19, i64 noundef %2, i64 noundef 1, i1 noundef zeroext true, ptr noundef nonnull %25, ptr noundef nonnull %16, ptr noundef %6)
  br i1 %399, label %._crit_edge452, label %._crit_edge493.sink.split

.preheader387:                                    ; preds = %._crit_edge445
  br i1 %.not.not360400, label %.preheader386.lr.ph, label %._crit_edge452

.preheader386.lr.ph:                              ; preds = %.preheader387
  %400 = getelementptr inbounds i8, ptr %16, i64 72
  br label %.preheader386.us

.preheader386.us:                                 ; preds = %._crit_edge449.us, %.preheader386.lr.ph
  %.11451.us = phi i64 [ 0, %.preheader386.lr.ph ], [ %417, %._crit_edge449.us ]
  br label %401

401:                                              ; preds = %.preheader386.us, %401
  %.4447.us = phi i64 [ 0, %.preheader386.us ], [ %416, %401 ]
  %402 = load ptr, ptr %400, align 8, !tbaa !11
  %403 = getelementptr inbounds ptr, ptr %402, i64 %.11451.us
  %404 = load ptr, ptr %403, align 8, !tbaa !12
  %405 = getelementptr inbounds double, ptr %404, i64 %.4447.us
  %406 = load double, ptr %405, align 8, !tbaa !14
  %407 = load ptr, ptr %277, align 8, !tbaa !11
  %408 = getelementptr inbounds double, ptr %407, i64 %.11451.us
  %409 = load double, ptr %408, align 8, !tbaa !14
  %410 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %409, ptr noundef %6)
  %411 = fdiv double %406, %410
  %412 = load ptr, ptr %400, align 8, !tbaa !11
  %413 = getelementptr inbounds ptr, ptr %412, i64 %.11451.us
  %414 = load ptr, ptr %413, align 8, !tbaa !12
  %415 = getelementptr inbounds double, ptr %414, i64 %.4447.us
  store double %411, ptr %415, align 8, !tbaa !14
  %416 = add nuw nsw i64 %.4447.us, 1
  %exitcond510.not = icmp eq i64 %416, %2
  br i1 %exitcond510.not, label %._crit_edge449.us, label %401, !llvm.loop !46

._crit_edge449.us:                                ; preds = %401
  %417 = add nuw nsw i64 %.11451.us, 1
  %exitcond511.not = icmp eq i64 %417, %2
  br i1 %exitcond511.not, label %._crit_edge452, label %.preheader386.us, !llvm.loop !47

._crit_edge452:                                   ; preds = %._crit_edge449.us, %._crit_edge445.thread, %.preheader387
  call void @_ZN11alglib_impl11rmatrixgemmEllldPNS_9ae_matrixElllS1_llldS1_llPNS_8ae_stateE(i64 noundef %2, i64 noundef %2, i64 noundef %2, double noundef 1.000000e+00, ptr noundef nonnull %15, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %16, 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 label %418

418:                                              ; preds = %._crit_edge452, %._crit_edge467
  br i1 %.not.not360400, label %.lr.ph478, label %._crit_edge493

.lr.ph478:                                        ; preds = %418
  %419 = getelementptr inbounds i8, ptr %5, i64 72
  %420 = getelementptr inbounds i8, ptr %5, i64 16
  %xtraiter554 = and i64 %2, 3
  %421 = icmp ult i64 %92, 3
  %unroll_iter558 = and i64 %2, 9223372036854775804
  %lcmp.mod556.not = icmp eq i64 %xtraiter554, 0
  br label %.lr.ph472

.lr.ph472:                                        ; preds = %473, %.lr.ph478
  %.5476 = phi i64 [ 0, %.lr.ph478 ], [ %474, %473 ]
  %422 = load ptr, ptr %419, align 8, !tbaa !11
  %423 = load ptr, ptr %422, align 8, !tbaa !12
  %424 = getelementptr inbounds double, ptr %423, i64 %.5476
  %425 = load i64, ptr %420, align 8, !tbaa !39
  %426 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %92)
  %427 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %424, i64 noundef %425, ptr noundef %424, i64 noundef %425, i64 noundef %426)
  %428 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %427, ptr noundef %6)
  %429 = fdiv double 1.000000e+00, %428
  %430 = load ptr, ptr %419, align 8, !tbaa !11
  %431 = load ptr, ptr %430, align 8, !tbaa !12
  %432 = getelementptr inbounds double, ptr %431, i64 %.5476
  %433 = load i64, ptr %420, align 8, !tbaa !39
  %434 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %92)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %432, i64 noundef %433, i64 noundef %434, double noundef %429)
  %435 = load ptr, ptr %419, align 8, !tbaa !11
  br i1 %421, label %._crit_edge473.unr-lcssa, label %.lr.ph472.new

.lr.ph472.new:                                    ; preds = %.lr.ph472, %.lr.ph472.new
  %.0470 = phi double [ %458, %.lr.ph472.new ], [ 0.000000e+00, %.lr.ph472 ]
  %.12469 = phi i64 [ %459, %.lr.ph472.new ], [ 0, %.lr.ph472 ]
  %niter559 = phi i64 [ %niter559.next.3, %.lr.ph472.new ], [ 0, %.lr.ph472 ]
  %436 = getelementptr inbounds ptr, ptr %435, i64 %.12469
  %437 = load ptr, ptr %436, align 8, !tbaa !12
  %438 = getelementptr inbounds double, ptr %437, i64 %.5476
  %439 = load double, ptr %438, align 8, !tbaa !14
  %440 = fadd double %.0470, %439
  %441 = or disjoint i64 %.12469, 1
  %442 = getelementptr inbounds ptr, ptr %435, i64 %441
  %443 = load ptr, ptr %442, align 8, !tbaa !12
  %444 = getelementptr inbounds double, ptr %443, i64 %.5476
  %445 = load double, ptr %444, align 8, !tbaa !14
  %446 = fadd double %440, %445
  %447 = or disjoint i64 %.12469, 2
  %448 = getelementptr inbounds ptr, ptr %435, i64 %447
  %449 = load ptr, ptr %448, align 8, !tbaa !12
  %450 = getelementptr inbounds double, ptr %449, i64 %.5476
  %451 = load double, ptr %450, align 8, !tbaa !14
  %452 = fadd double %446, %451
  %453 = or disjoint i64 %.12469, 3
  %454 = getelementptr inbounds ptr, ptr %435, i64 %453
  %455 = load ptr, ptr %454, align 8, !tbaa !12
  %456 = getelementptr inbounds double, ptr %455, i64 %.5476
  %457 = load double, ptr %456, align 8, !tbaa !14
  %458 = fadd double %452, %457
  %459 = add nuw nsw i64 %.12469, 4
  %niter559.next.3 = add i64 %niter559, 4
  %niter559.ncmp.3 = icmp eq i64 %niter559.next.3, %unroll_iter558
  br i1 %niter559.ncmp.3, label %._crit_edge473.unr-lcssa, label %.lr.ph472.new, !llvm.loop !48

._crit_edge473.unr-lcssa:                         ; preds = %.lr.ph472.new, %.lr.ph472
  %.lcssa.ph = phi double [ poison, %.lr.ph472 ], [ %458, %.lr.ph472.new ]
  %.0470.unr = phi double [ 0.000000e+00, %.lr.ph472 ], [ %458, %.lr.ph472.new ]
  %.12469.unr = phi i64 [ 0, %.lr.ph472 ], [ %459, %.lr.ph472.new ]
  br i1 %lcmp.mod556.not, label %._crit_edge473, label %.epil.preheader553

.epil.preheader553:                               ; preds = %._crit_edge473.unr-lcssa, %.epil.preheader553
  %.0470.epil = phi double [ %464, %.epil.preheader553 ], [ %.0470.unr, %._crit_edge473.unr-lcssa ]
  %.12469.epil = phi i64 [ %465, %.epil.preheader553 ], [ %.12469.unr, %._crit_edge473.unr-lcssa ]
  %epil.iter555 = phi i64 [ %epil.iter555.next, %.epil.preheader553 ], [ 0, %._crit_edge473.unr-lcssa ]
  %460 = getelementptr inbounds ptr, ptr %435, i64 %.12469.epil
  %461 = load ptr, ptr %460, align 8, !tbaa !12
  %462 = getelementptr inbounds double, ptr %461, i64 %.5476
  %463 = load double, ptr %462, align 8, !tbaa !14
  %464 = fadd double %.0470.epil, %463
  %465 = add nuw nsw i64 %.12469.epil, 1
  %epil.iter555.next = add i64 %epil.iter555, 1
  %epil.iter555.cmp.not = icmp eq i64 %epil.iter555.next, %xtraiter554
  br i1 %epil.iter555.cmp.not, label %._crit_edge473, label %.epil.preheader553, !llvm.loop !49

._crit_edge473:                                   ; preds = %.epil.preheader553, %._crit_edge473.unr-lcssa
  %.lcssa = phi double [ %.lcssa.ph, %._crit_edge473.unr-lcssa ], [ %464, %.epil.preheader553 ]
  %466 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %.lcssa, double noundef 0.000000e+00)
  br i1 %466, label %467, label %473

467:                                              ; preds = %._crit_edge473
  %468 = load ptr, ptr %419, align 8, !tbaa !11
  %469 = load ptr, ptr %468, align 8, !tbaa !12
  %470 = getelementptr inbounds double, ptr %469, i64 %.5476
  %471 = load i64, ptr %420, align 8, !tbaa !39
  %472 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %92)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %470, i64 noundef %471, i64 noundef %472, double noundef -1.000000e+00)
  br label %473

473:                                              ; preds = %._crit_edge473, %467
  %474 = add nuw nsw i64 %.5476, 1
  %exitcond516.not = icmp eq i64 %474, %2
  br i1 %exitcond516.not, label %._crit_edge493, label %.lr.ph472, !llvm.loop !50

._crit_edge493.sink.split:                        ; preds = %33, %41, %._crit_edge445, %._crit_edge445.thread, %._crit_edge438, %7
  %.sink = phi i64 [ -1, %7 ], [ -4, %._crit_edge438 ], [ -4, %._crit_edge445.thread ], [ -4, %._crit_edge445 ], [ -2, %41 ], [ -2, %33 ]
  store i64 %.sink, ptr %4, align 8, !tbaa !5
  br label %._crit_edge493

._crit_edge493:                                   ; preds = %473, %._crit_edge483.us, %._crit_edge490.us, %._crit_edge493.sink.split, %418, %._crit_edge462, %294, %49
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %6)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #5
  ret void
}

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

declare void @_ZN11alglib_impl15ae_matrix_clearEPNS_9ae_matrixE(ptr noundef) local_unnamed_addr #2

declare void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #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 void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(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_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef, i64 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 noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef, i64 noundef, ptr 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 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

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

declare noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double 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_impl10ae_fp_lessEdd(double noundef, double noundef) local_unnamed_addr #2

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

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

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

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

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

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


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