; LLVM IR from Dimandragon/non-parametric-dsp :: 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.404 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.405 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.406 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.407 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.408 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.409 = 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_impl10fisherldanEPKNS_9ae_matrixElllPS0_PNS_8ae_stateE(ptr noundef %0, i64 noundef %1, i64 noundef %2, i64 noundef %3, ptr noundef %4, ptr noundef %5) #3 {
  %7 = alloca ptr, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca %"struct.alglib_impl::ae_frame", align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca double, align 8
  %19 = alloca %"struct.alglib_impl::ae_vector", align 8
  %20 = alloca %"struct.alglib_impl::ae_vector", align 8
  %21 = alloca %"struct.alglib_impl::ae_matrix", 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_matrix", 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_vector", align 8
  %34 = alloca %"struct.alglib_impl::ae_vector", align 8
  %35 = alloca %"struct.alglib_impl::ae_vector", align 8
  %36 = alloca %"struct.alglib_impl::ae_vector", align 8
  %37 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store i64 %1, ptr %8, align 8, !tbaa !9
  store i64 %2, ptr %9, align 8, !tbaa !9
  store i64 %3, ptr %10, align 8, !tbaa !9
  store ptr %4, ptr %11, align 8, !tbaa !5
  store ptr %5, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 8, 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 64, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 80, 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 80, 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 64, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 64, 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
  %38 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %38, ptr noundef %13)
  call void @llvm.memset.p0.i64(ptr align 8 %19, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %21, i8 0, i64 80, 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 80, 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 64, i1 false)
  call void @llvm.memset.p0.i64(ptr align 8 %34, i8 0, i64 64, 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)
  %39 = load ptr, ptr %11, align 8, !tbaa !5
  call void @_ZN11alglib_impl15ae_matrix_clearEPNS_9ae_matrixE(ptr noundef %39)
  %40 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %19, i64 noundef 0, i64 noundef 2, ptr noundef %40, i1 noundef zeroext true)
  %41 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %20, i64 noundef 0, i64 noundef 3, ptr noundef %41, i1 noundef zeroext true)
  %42 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %21, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %42, i1 noundef zeroext true)
  %43 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %22, i64 noundef 0, i64 noundef 2, ptr noundef %43, i1 noundef zeroext true)
  %44 = load ptr, ptr %12, 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 %44, i1 noundef zeroext true)
  %45 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef %24, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %45, i1 noundef zeroext true)
  %46 = load ptr, ptr %12, 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 %46, i1 noundef zeroext true)
  %47 = load ptr, ptr %12, 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 %47, i1 noundef zeroext true)
  %48 = load ptr, ptr %12, 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 %48, i1 noundef zeroext true)
  %49 = load ptr, ptr %12, 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 %49, i1 noundef zeroext true)
  %50 = load ptr, ptr %12, 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 %50, i1 noundef zeroext true)
  %51 = load ptr, ptr %12, 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 %51, i1 noundef zeroext true)
  %52 = load ptr, ptr %12, 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 %52, i1 noundef zeroext true)
  %53 = load ptr, ptr %12, 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 %53, i1 noundef zeroext true)
  %54 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %33, i64 noundef 0, i64 noundef 3, ptr noundef %54, i1 noundef zeroext true)
  %55 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef %34, i64 noundef 0, i64 noundef 3, ptr noundef %55, i1 noundef zeroext true)
  %56 = load ptr, ptr %12, 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 %56, i1 noundef zeroext true)
  %57 = load ptr, ptr %12, 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 %57, i1 noundef zeroext true)
  %58 = load i64, ptr %8, align 8, !tbaa !9
  %59 = icmp slt i64 %58, 0
  %60 = xor i1 %59, true
  %61 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %60, ptr noundef @.str.404, ptr noundef %61)
  %62 = load i64, ptr %9, align 8, !tbaa !9
  %63 = icmp slt i64 %62, 1
  %64 = xor i1 %63, true
  %65 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %64, ptr noundef @.str.405, ptr noundef %65)
  %66 = load i64, ptr %10, align 8, !tbaa !9
  %67 = icmp slt i64 %66, 2
  %68 = xor i1 %67, true
  %69 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %68, ptr noundef @.str.406, ptr noundef %69)
  store i64 0, ptr %14, align 8, !tbaa !9
  br label %70

70:                                               ; preds = %105, %6
  %71 = load i64, ptr %14, align 8, !tbaa !9
  %72 = load i64, ptr %8, align 8, !tbaa !9
  %73 = sub nsw i64 %72, 1
  %74 = icmp sle i64 %71, %73
  br i1 %74, label %75, label %108

75:                                               ; preds = %70
  %76 = load ptr, ptr %7, align 8, !tbaa !5
  %77 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %76, i32 0, i32 6
  %78 = load ptr, ptr %77, align 8, !tbaa !11
  %79 = load i64, ptr %14, align 8, !tbaa !9
  %80 = getelementptr inbounds ptr, ptr %78, i64 %79
  %81 = load ptr, ptr %80, align 8, !tbaa !5
  %82 = load i64, ptr %9, align 8, !tbaa !9
  %83 = getelementptr inbounds double, ptr %81, i64 %82
  %84 = load double, ptr %83, align 8, !tbaa !12
  %85 = load ptr, ptr %12, align 8, !tbaa !5
  %86 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %84, ptr noundef %85)
  %87 = icmp slt i64 %86, 0
  br i1 %87, label %102, label %88

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

102:                                              ; preds = %88, %75
  %103 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef @.str.407, ptr noundef %103)
  br label %104

104:                                              ; preds = %102, %88
  br label %105

105:                                              ; preds = %104
  %106 = load i64, ptr %14, align 8, !tbaa !9
  %107 = add nsw i64 %106, 1
  store i64 %107, ptr %14, align 8, !tbaa !9
  br label %70, !llvm.loop !14

108:                                              ; preds = %70
  %109 = load i64, ptr %8, align 8, !tbaa !9
  %110 = icmp sle i64 %109, 1
  br i1 %110, label %111, label %159

111:                                              ; preds = %108
  %112 = load ptr, ptr %11, align 8, !tbaa !5
  %113 = load i64, ptr %9, align 8, !tbaa !9
  %114 = load i64, ptr %9, align 8, !tbaa !9
  %115 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %112, i64 noundef %113, i64 noundef %114, ptr noundef %115)
  store i64 0, ptr %14, align 8, !tbaa !9
  br label %116

116:                                              ; preds = %154, %111
  %117 = load i64, ptr %14, align 8, !tbaa !9
  %118 = load i64, ptr %9, align 8, !tbaa !9
  %119 = sub nsw i64 %118, 1
  %120 = icmp sle i64 %117, %119
  br i1 %120, label %121, label %157

121:                                              ; preds = %116
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %122

122:                                              ; preds = %150, %121
  %123 = load i64, ptr %15, align 8, !tbaa !9
  %124 = load i64, ptr %9, align 8, !tbaa !9
  %125 = sub nsw i64 %124, 1
  %126 = icmp sle i64 %123, %125
  br i1 %126, label %127, label %153

127:                                              ; preds = %122
  %128 = load i64, ptr %14, align 8, !tbaa !9
  %129 = load i64, ptr %15, align 8, !tbaa !9
  %130 = icmp eq i64 %128, %129
  br i1 %130, label %131, label %140

131:                                              ; preds = %127
  %132 = load ptr, ptr %11, align 8, !tbaa !5
  %133 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %132, i32 0, i32 6
  %134 = load ptr, ptr %133, align 8, !tbaa !11
  %135 = load i64, ptr %14, align 8, !tbaa !9
  %136 = getelementptr inbounds ptr, ptr %134, i64 %135
  %137 = load ptr, ptr %136, align 8, !tbaa !5
  %138 = load i64, ptr %15, align 8, !tbaa !9
  %139 = getelementptr inbounds double, ptr %137, i64 %138
  store double 1.000000e+00, ptr %139, align 8, !tbaa !12
  br label %149

140:                                              ; preds = %127
  %141 = load ptr, ptr %11, align 8, !tbaa !5
  %142 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %141, i32 0, i32 6
  %143 = load ptr, ptr %142, align 8, !tbaa !11
  %144 = load i64, ptr %14, align 8, !tbaa !9
  %145 = getelementptr inbounds ptr, ptr %143, i64 %144
  %146 = load ptr, ptr %145, align 8, !tbaa !5
  %147 = load i64, ptr %15, align 8, !tbaa !9
  %148 = getelementptr inbounds double, ptr %146, i64 %147
  store double 0.000000e+00, ptr %148, align 8, !tbaa !12
  br label %149

149:                                              ; preds = %140, %131
  br label %150

150:                                              ; preds = %149
  %151 = load i64, ptr %15, align 8, !tbaa !9
  %152 = add nsw i64 %151, 1
  store i64 %152, ptr %15, align 8, !tbaa !9
  br label %122, !llvm.loop !16

153:                                              ; preds = %122
  br label %154

154:                                              ; preds = %153
  %155 = load i64, ptr %14, align 8, !tbaa !9
  %156 = add nsw i64 %155, 1
  store i64 %156, ptr %14, align 8, !tbaa !9
  br label %116, !llvm.loop !17

157:                                              ; preds = %116
  %158 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %158)
  store i32 1, ptr %37, align 4
  br label %918

159:                                              ; preds = %108
  %160 = load i64, ptr %9, align 8, !tbaa !9
  %161 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %33, i64 noundef %160, ptr noundef %161)
  %162 = load i64, ptr %9, align 8, !tbaa !9
  %163 = load i64, ptr %8, align 8, !tbaa !9
  %164 = load ptr, ptr %12, align 8, !tbaa !5
  %165 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %162, i64 noundef %163, ptr noundef %164)
  %166 = add nsw i64 %165, 1
  %167 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %36, i64 noundef %166, ptr noundef %167)
  %168 = load i64, ptr %8, align 8, !tbaa !9
  %169 = load i64, ptr %9, align 8, !tbaa !9
  %170 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %30, i64 noundef %168, i64 noundef %169, ptr noundef %170)
  %171 = load i64, ptr %8, align 8, !tbaa !9
  %172 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %19, i64 noundef %171, ptr noundef %172)
  store i64 0, ptr %14, align 8, !tbaa !9
  br label %173

173:                                              ; preds = %194, %159
  %174 = load i64, ptr %14, align 8, !tbaa !9
  %175 = load i64, ptr %8, align 8, !tbaa !9
  %176 = sub nsw i64 %175, 1
  %177 = icmp sle i64 %174, %176
  br i1 %177, label %178, label %197

178:                                              ; preds = %173
  %179 = load ptr, ptr %7, align 8, !tbaa !5
  %180 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %179, i32 0, i32 6
  %181 = load ptr, ptr %180, align 8, !tbaa !11
  %182 = load i64, ptr %14, align 8, !tbaa !9
  %183 = getelementptr inbounds ptr, ptr %181, i64 %182
  %184 = load ptr, ptr %183, align 8, !tbaa !5
  %185 = load i64, ptr %9, align 8, !tbaa !9
  %186 = getelementptr inbounds double, ptr %184, i64 %185
  %187 = load double, ptr %186, align 8, !tbaa !12
  %188 = load ptr, ptr %12, align 8, !tbaa !5
  %189 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %187, ptr noundef %188)
  %190 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %191 = load ptr, ptr %190, align 8, !tbaa !11
  %192 = load i64, ptr %14, align 8, !tbaa !9
  %193 = getelementptr inbounds i64, ptr %191, i64 %192
  store i64 %189, ptr %193, align 8, !tbaa !9
  br label %194

194:                                              ; preds = %178
  %195 = load i64, ptr %14, align 8, !tbaa !9
  %196 = add nsw i64 %195, 1
  store i64 %196, ptr %14, align 8, !tbaa !9
  br label %173, !llvm.loop !18

197:                                              ; preds = %173
  %198 = load i64, ptr %9, align 8, !tbaa !9
  %199 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %20, i64 noundef %198, ptr noundef %199)
  %200 = load i64, ptr %10, align 8, !tbaa !9
  %201 = load i64, ptr %9, align 8, !tbaa !9
  %202 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %21, i64 noundef %200, i64 noundef %201, ptr noundef %202)
  %203 = load i64, ptr %10, align 8, !tbaa !9
  %204 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef %22, i64 noundef %203, ptr noundef %204)
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %205

205:                                              ; preds = %215, %197
  %206 = load i64, ptr %15, align 8, !tbaa !9
  %207 = load i64, ptr %9, align 8, !tbaa !9
  %208 = sub nsw i64 %207, 1
  %209 = icmp sle i64 %206, %208
  br i1 %209, label %210, label %218

210:                                              ; preds = %205
  %211 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %20, i32 0, i32 4
  %212 = load ptr, ptr %211, align 8, !tbaa !11
  %213 = load i64, ptr %15, align 8, !tbaa !9
  %214 = getelementptr inbounds double, ptr %212, i64 %213
  store double 0.000000e+00, ptr %214, align 8, !tbaa !12
  br label %215

215:                                              ; preds = %210
  %216 = load i64, ptr %15, align 8, !tbaa !9
  %217 = add nsw i64 %216, 1
  store i64 %217, ptr %15, align 8, !tbaa !9
  br label %205, !llvm.loop !19

218:                                              ; preds = %205
  store i64 0, ptr %14, align 8, !tbaa !9
  br label %219

219:                                              ; preds = %246, %218
  %220 = load i64, ptr %14, align 8, !tbaa !9
  %221 = load i64, ptr %10, align 8, !tbaa !9
  %222 = sub nsw i64 %221, 1
  %223 = icmp sle i64 %220, %222
  br i1 %223, label %224, label %249

224:                                              ; preds = %219
  %225 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %226 = load ptr, ptr %225, align 8, !tbaa !11
  %227 = load i64, ptr %14, align 8, !tbaa !9
  %228 = getelementptr inbounds i64, ptr %226, i64 %227
  store i64 0, ptr %228, align 8, !tbaa !9
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %229

229:                                              ; preds = %242, %224
  %230 = load i64, ptr %15, align 8, !tbaa !9
  %231 = load i64, ptr %9, align 8, !tbaa !9
  %232 = sub nsw i64 %231, 1
  %233 = icmp sle i64 %230, %232
  br i1 %233, label %234, label %245

234:                                              ; preds = %229
  %235 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %21, i32 0, i32 6
  %236 = load ptr, ptr %235, align 8, !tbaa !11
  %237 = load i64, ptr %14, align 8, !tbaa !9
  %238 = getelementptr inbounds ptr, ptr %236, i64 %237
  %239 = load ptr, ptr %238, align 8, !tbaa !5
  %240 = load i64, ptr %15, align 8, !tbaa !9
  %241 = getelementptr inbounds double, ptr %239, i64 %240
  store double 0.000000e+00, ptr %241, align 8, !tbaa !12
  br label %242

242:                                              ; preds = %234
  %243 = load i64, ptr %15, align 8, !tbaa !9
  %244 = add nsw i64 %243, 1
  store i64 %244, ptr %15, align 8, !tbaa !9
  br label %229, !llvm.loop !20

245:                                              ; preds = %229
  br label %246

246:                                              ; preds = %245
  %247 = load i64, ptr %14, align 8, !tbaa !9
  %248 = add nsw i64 %247, 1
  store i64 %248, ptr %14, align 8, !tbaa !9
  br label %219, !llvm.loop !21

249:                                              ; preds = %219
  store i64 0, ptr %14, align 8, !tbaa !9
  br label %250

250:                                              ; preds = %307, %249
  %251 = load i64, ptr %14, align 8, !tbaa !9
  %252 = load i64, ptr %8, align 8, !tbaa !9
  %253 = sub nsw i64 %252, 1
  %254 = icmp sle i64 %251, %253
  br i1 %254, label %255, label %310

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

307:                                              ; preds = %255
  %308 = load i64, ptr %14, align 8, !tbaa !9
  %309 = add nsw i64 %308, 1
  store i64 %309, ptr %14, align 8, !tbaa !9
  br label %250, !llvm.loop !22

310:                                              ; preds = %250
  store i64 0, ptr %14, align 8, !tbaa !9
  br label %311

311:                                              ; preds = %334, %310
  %312 = load i64, ptr %14, align 8, !tbaa !9
  %313 = load i64, ptr %10, align 8, !tbaa !9
  %314 = sub nsw i64 %313, 1
  %315 = icmp sle i64 %312, %314
  br i1 %315, label %316, label %337

316:                                              ; preds = %311
  %317 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %22, i32 0, i32 4
  %318 = load ptr, ptr %317, align 8, !tbaa !11
  %319 = load i64, ptr %14, align 8, !tbaa !9
  %320 = getelementptr inbounds i64, ptr %318, i64 %319
  %321 = load i64, ptr %320, align 8, !tbaa !9
  %322 = sitofp i64 %321 to double
  %323 = fdiv double 1.000000e+00, %322
  store double %323, ptr %18, align 8, !tbaa !12
  %324 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %21, i32 0, i32 6
  %325 = load ptr, ptr %324, align 8, !tbaa !11
  %326 = load i64, ptr %14, align 8, !tbaa !9
  %327 = getelementptr inbounds ptr, ptr %325, i64 %326
  %328 = load ptr, ptr %327, align 8, !tbaa !5
  %329 = getelementptr inbounds double, ptr %328, i64 0
  %330 = load i64, ptr %9, align 8, !tbaa !9
  %331 = sub nsw i64 %330, 1
  %332 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %331)
  %333 = load double, ptr %18, align 8, !tbaa !12
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %329, i64 noundef 1, i64 noundef %332, double noundef %333)
  br label %334

334:                                              ; preds = %316
  %335 = load i64, ptr %14, align 8, !tbaa !9
  %336 = add nsw i64 %335, 1
  store i64 %336, ptr %14, align 8, !tbaa !9
  br label %311, !llvm.loop !23

337:                                              ; preds = %311
  %338 = load i64, ptr %8, align 8, !tbaa !9
  %339 = sitofp i64 %338 to double
  %340 = fdiv double 1.000000e+00, %339
  store double %340, ptr %18, align 8, !tbaa !12
  %341 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %20, i32 0, i32 4
  %342 = load ptr, ptr %341, align 8, !tbaa !11
  %343 = getelementptr inbounds double, ptr %342, i64 0
  %344 = load i64, ptr %9, align 8, !tbaa !9
  %345 = sub nsw i64 %344, 1
  %346 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %345)
  %347 = load double, ptr %18, align 8, !tbaa !12
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %343, i64 noundef 1, i64 noundef %346, double noundef %347)
  %348 = load i64, ptr %9, align 8, !tbaa !9
  %349 = load i64, ptr %9, align 8, !tbaa !9
  %350 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %24, i64 noundef %348, i64 noundef %349, ptr noundef %350)
  store i64 0, ptr %14, align 8, !tbaa !9
  br label %351

351:                                              ; preds = %374, %337
  %352 = load i64, ptr %14, align 8, !tbaa !9
  %353 = load i64, ptr %9, align 8, !tbaa !9
  %354 = sub nsw i64 %353, 1
  %355 = icmp sle i64 %352, %354
  br i1 %355, label %356, label %377

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

357:                                              ; preds = %370, %356
  %358 = load i64, ptr %15, align 8, !tbaa !9
  %359 = load i64, ptr %9, align 8, !tbaa !9
  %360 = sub nsw i64 %359, 1
  %361 = icmp sle i64 %358, %360
  br i1 %361, label %362, label %373

362:                                              ; preds = %357
  %363 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %24, i32 0, i32 6
  %364 = load ptr, ptr %363, align 8, !tbaa !11
  %365 = load i64, ptr %14, align 8, !tbaa !9
  %366 = getelementptr inbounds ptr, ptr %364, i64 %365
  %367 = load ptr, ptr %366, align 8, !tbaa !5
  %368 = load i64, ptr %15, align 8, !tbaa !9
  %369 = getelementptr inbounds double, ptr %367, i64 %368
  store double 0.000000e+00, ptr %369, align 8, !tbaa !12
  br label %370

370:                                              ; preds = %362
  %371 = load i64, ptr %15, align 8, !tbaa !9
  %372 = add nsw i64 %371, 1
  store i64 %372, ptr %15, align 8, !tbaa !9
  br label %357, !llvm.loop !24

373:                                              ; preds = %357
  br label %374

374:                                              ; preds = %373
  %375 = load i64, ptr %14, align 8, !tbaa !9
  %376 = add nsw i64 %375, 1
  store i64 %376, ptr %14, align 8, !tbaa !9
  br label %351, !llvm.loop !25

377:                                              ; preds = %351
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %378

378:                                              ; preds = %412, %377
  %379 = load i64, ptr %16, align 8, !tbaa !9
  %380 = load i64, ptr %8, align 8, !tbaa !9
  %381 = sub nsw i64 %380, 1
  %382 = icmp sle i64 %379, %381
  br i1 %382, label %383, label %415

383:                                              ; preds = %378
  %384 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %30, i32 0, i32 6
  %385 = load ptr, ptr %384, align 8, !tbaa !11
  %386 = load i64, ptr %16, align 8, !tbaa !9
  %387 = getelementptr inbounds ptr, ptr %385, i64 %386
  %388 = load ptr, ptr %387, align 8, !tbaa !5
  %389 = getelementptr inbounds double, ptr %388, i64 0
  %390 = load ptr, ptr %7, align 8, !tbaa !5
  %391 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %390, i32 0, i32 6
  %392 = load ptr, ptr %391, align 8, !tbaa !11
  %393 = load i64, ptr %16, align 8, !tbaa !9
  %394 = getelementptr inbounds ptr, ptr %392, i64 %393
  %395 = load ptr, ptr %394, align 8, !tbaa !5
  %396 = getelementptr inbounds double, ptr %395, i64 0
  %397 = load i64, ptr %9, align 8, !tbaa !9
  %398 = sub nsw i64 %397, 1
  %399 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %398)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %389, i64 noundef 1, ptr noundef %396, i64 noundef 1, i64 noundef %399)
  %400 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %30, i32 0, i32 6
  %401 = load ptr, ptr %400, align 8, !tbaa !11
  %402 = load i64, ptr %16, align 8, !tbaa !9
  %403 = getelementptr inbounds ptr, ptr %401, i64 %402
  %404 = load ptr, ptr %403, align 8, !tbaa !5
  %405 = getelementptr inbounds double, ptr %404, i64 0
  %406 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %20, i32 0, i32 4
  %407 = load ptr, ptr %406, align 8, !tbaa !11
  %408 = getelementptr inbounds double, ptr %407, i64 0
  %409 = load i64, ptr %9, align 8, !tbaa !9
  %410 = sub nsw i64 %409, 1
  %411 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %410)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %405, i64 noundef 1, ptr noundef %408, i64 noundef 1, i64 noundef %411)
  br label %412

412:                                              ; preds = %383
  %413 = load i64, ptr %16, align 8, !tbaa !9
  %414 = add nsw i64 %413, 1
  store i64 %414, ptr %16, align 8, !tbaa !9
  br label %378, !llvm.loop !26

415:                                              ; preds = %378
  %416 = load i64, ptr %9, align 8, !tbaa !9
  %417 = load i64, ptr %9, align 8, !tbaa !9
  %418 = load i64, ptr %8, align 8, !tbaa !9
  %419 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %416, i64 noundef %417, i64 noundef %418, double noundef 1.000000e+00, ptr noundef %30, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef %30, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %24, i64 noundef 0, i64 noundef 0, ptr noundef %419)
  %420 = load i64, ptr %9, align 8, !tbaa !9
  %421 = load i64, ptr %9, align 8, !tbaa !9
  %422 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %23, i64 noundef %420, i64 noundef %421, ptr noundef %422)
  store i64 0, ptr %14, align 8, !tbaa !9
  br label %423

423:                                              ; preds = %446, %415
  %424 = load i64, ptr %14, align 8, !tbaa !9
  %425 = load i64, ptr %9, align 8, !tbaa !9
  %426 = sub nsw i64 %425, 1
  %427 = icmp sle i64 %424, %426
  br i1 %427, label %428, label %449

428:                                              ; preds = %423
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %429

429:                                              ; preds = %442, %428
  %430 = load i64, ptr %15, align 8, !tbaa !9
  %431 = load i64, ptr %9, align 8, !tbaa !9
  %432 = sub nsw i64 %431, 1
  %433 = icmp sle i64 %430, %432
  br i1 %433, label %434, label %445

434:                                              ; preds = %429
  %435 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %23, i32 0, i32 6
  %436 = load ptr, ptr %435, align 8, !tbaa !11
  %437 = load i64, ptr %14, align 8, !tbaa !9
  %438 = getelementptr inbounds ptr, ptr %436, i64 %437
  %439 = load ptr, ptr %438, align 8, !tbaa !5
  %440 = load i64, ptr %15, align 8, !tbaa !9
  %441 = getelementptr inbounds double, ptr %439, i64 %440
  store double 0.000000e+00, ptr %441, align 8, !tbaa !12
  br label %442

442:                                              ; preds = %434
  %443 = load i64, ptr %15, align 8, !tbaa !9
  %444 = add nsw i64 %443, 1
  store i64 %444, ptr %15, align 8, !tbaa !9
  br label %429, !llvm.loop !27

445:                                              ; preds = %429
  br label %446

446:                                              ; preds = %445
  %447 = load i64, ptr %14, align 8, !tbaa !9
  %448 = add nsw i64 %447, 1
  store i64 %448, ptr %14, align 8, !tbaa !9
  br label %423, !llvm.loop !28

449:                                              ; preds = %423
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %450

450:                                              ; preds = %491, %449
  %451 = load i64, ptr %16, align 8, !tbaa !9
  %452 = load i64, ptr %8, align 8, !tbaa !9
  %453 = sub nsw i64 %452, 1
  %454 = icmp sle i64 %451, %453
  br i1 %454, label %455, label %494

455:                                              ; preds = %450
  %456 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %30, i32 0, i32 6
  %457 = load ptr, ptr %456, align 8, !tbaa !11
  %458 = load i64, ptr %16, align 8, !tbaa !9
  %459 = getelementptr inbounds ptr, ptr %457, i64 %458
  %460 = load ptr, ptr %459, align 8, !tbaa !5
  %461 = getelementptr inbounds double, ptr %460, i64 0
  %462 = load ptr, ptr %7, align 8, !tbaa !5
  %463 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %462, i32 0, i32 6
  %464 = load ptr, ptr %463, align 8, !tbaa !11
  %465 = load i64, ptr %16, align 8, !tbaa !9
  %466 = getelementptr inbounds ptr, ptr %464, i64 %465
  %467 = load ptr, ptr %466, align 8, !tbaa !5
  %468 = getelementptr inbounds double, ptr %467, i64 0
  %469 = load i64, ptr %9, align 8, !tbaa !9
  %470 = sub nsw i64 %469, 1
  %471 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %470)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %461, i64 noundef 1, ptr noundef %468, i64 noundef 1, i64 noundef %471)
  %472 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %30, i32 0, i32 6
  %473 = load ptr, ptr %472, align 8, !tbaa !11
  %474 = load i64, ptr %16, align 8, !tbaa !9
  %475 = getelementptr inbounds ptr, ptr %473, i64 %474
  %476 = load ptr, ptr %475, align 8, !tbaa !5
  %477 = getelementptr inbounds double, ptr %476, i64 0
  %478 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %21, i32 0, i32 6
  %479 = load ptr, ptr %478, align 8, !tbaa !11
  %480 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %19, i32 0, i32 4
  %481 = load ptr, ptr %480, align 8, !tbaa !11
  %482 = load i64, ptr %16, align 8, !tbaa !9
  %483 = getelementptr inbounds i64, ptr %481, i64 %482
  %484 = load i64, ptr %483, align 8, !tbaa !9
  %485 = getelementptr inbounds ptr, ptr %479, i64 %484
  %486 = load ptr, ptr %485, align 8, !tbaa !5
  %487 = getelementptr inbounds double, ptr %486, i64 0
  %488 = load i64, ptr %9, align 8, !tbaa !9
  %489 = sub nsw i64 %488, 1
  %490 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %489)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %477, i64 noundef 1, ptr noundef %487, i64 noundef 1, i64 noundef %490)
  br label %491

491:                                              ; preds = %455
  %492 = load i64, ptr %16, align 8, !tbaa !9
  %493 = add nsw i64 %492, 1
  store i64 %493, ptr %16, align 8, !tbaa !9
  br label %450, !llvm.loop !29

494:                                              ; preds = %450
  %495 = load i64, ptr %9, align 8, !tbaa !9
  %496 = load i64, ptr %9, align 8, !tbaa !9
  %497 = load i64, ptr %8, align 8, !tbaa !9
  %498 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %495, i64 noundef %496, i64 noundef %497, double noundef 1.000000e+00, ptr noundef %30, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef %30, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %23, i64 noundef 0, i64 noundef 0, ptr noundef %498)
  %499 = load i64, ptr %9, align 8, !tbaa !9
  %500 = load ptr, ptr %12, align 8, !tbaa !5
  %501 = call noundef zeroext i1 @_ZN11alglib_impl10smatrixevdEPKNS_9ae_matrixEllbPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef %24, i64 noundef %499, i64 noundef 1, i1 noundef zeroext true, ptr noundef %34, ptr noundef %25, ptr noundef %500)
  br i1 %501, label %504, label %502

502:                                              ; preds = %494
  %503 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef @.str.408, ptr noundef %503)
  br label %504

504:                                              ; preds = %502, %494
  %505 = load ptr, ptr %11, align 8, !tbaa !5
  %506 = load i64, ptr %9, align 8, !tbaa !9
  %507 = load i64, ptr %9, align 8, !tbaa !9
  %508 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %505, i64 noundef %506, i64 noundef %507, ptr noundef %508)
  %509 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %34, i32 0, i32 4
  %510 = load ptr, ptr %509, align 8, !tbaa !11
  %511 = load i64, ptr %9, align 8, !tbaa !9
  %512 = sub nsw i64 %511, 1
  %513 = getelementptr inbounds double, ptr %510, i64 %512
  %514 = load double, ptr %513, align 8, !tbaa !12
  %515 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %514, double noundef 0.000000e+00)
  br i1 %515, label %529, label %516

516:                                              ; preds = %504
  %517 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %34, i32 0, i32 4
  %518 = load ptr, ptr %517, align 8, !tbaa !11
  %519 = getelementptr inbounds double, ptr %518, i64 0
  %520 = load double, ptr %519, align 8, !tbaa !12
  %521 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %34, i32 0, i32 4
  %522 = load ptr, ptr %521, align 8, !tbaa !11
  %523 = load i64, ptr %9, align 8, !tbaa !9
  %524 = sub nsw i64 %523, 1
  %525 = getelementptr inbounds double, ptr %522, i64 %524
  %526 = load double, ptr %525, align 8, !tbaa !12
  %527 = fmul double 5.000000e-13, %526
  %528 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %520, double noundef %527)
  br i1 %528, label %529, label %708

529:                                              ; preds = %516, %504
  %530 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %34, i32 0, i32 4
  %531 = load ptr, ptr %530, align 8, !tbaa !11
  %532 = load i64, ptr %9, align 8, !tbaa !9
  %533 = sub nsw i64 %532, 1
  %534 = getelementptr inbounds double, ptr %531, i64 %533
  %535 = load double, ptr %534, align 8, !tbaa !12
  %536 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %535, double noundef 0.000000e+00)
  br i1 %536, label %537, label %581

537:                                              ; preds = %529
  store i64 0, ptr %14, align 8, !tbaa !9
  br label %538

538:                                              ; preds = %576, %537
  %539 = load i64, ptr %14, align 8, !tbaa !9
  %540 = load i64, ptr %9, align 8, !tbaa !9
  %541 = sub nsw i64 %540, 1
  %542 = icmp sle i64 %539, %541
  br i1 %542, label %543, label %579

543:                                              ; preds = %538
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %544

544:                                              ; preds = %572, %543
  %545 = load i64, ptr %15, align 8, !tbaa !9
  %546 = load i64, ptr %9, align 8, !tbaa !9
  %547 = sub nsw i64 %546, 1
  %548 = icmp sle i64 %545, %547
  br i1 %548, label %549, label %575

549:                                              ; preds = %544
  %550 = load i64, ptr %14, align 8, !tbaa !9
  %551 = load i64, ptr %15, align 8, !tbaa !9
  %552 = icmp eq i64 %550, %551
  br i1 %552, label %553, label %562

553:                                              ; preds = %549
  %554 = load ptr, ptr %11, align 8, !tbaa !5
  %555 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %554, i32 0, i32 6
  %556 = load ptr, ptr %555, align 8, !tbaa !11
  %557 = load i64, ptr %14, align 8, !tbaa !9
  %558 = getelementptr inbounds ptr, ptr %556, i64 %557
  %559 = load ptr, ptr %558, align 8, !tbaa !5
  %560 = load i64, ptr %15, align 8, !tbaa !9
  %561 = getelementptr inbounds double, ptr %559, i64 %560
  store double 1.000000e+00, ptr %561, align 8, !tbaa !12
  br label %571

562:                                              ; preds = %549
  %563 = load ptr, ptr %11, align 8, !tbaa !5
  %564 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %563, i32 0, i32 6
  %565 = load ptr, ptr %564, align 8, !tbaa !11
  %566 = load i64, ptr %14, align 8, !tbaa !9
  %567 = getelementptr inbounds ptr, ptr %565, i64 %566
  %568 = load ptr, ptr %567, align 8, !tbaa !5
  %569 = load i64, ptr %15, align 8, !tbaa !9
  %570 = getelementptr inbounds double, ptr %568, i64 %569
  store double 0.000000e+00, ptr %570, align 8, !tbaa !12
  br label %571

571:                                              ; preds = %562, %553
  br label %572

572:                                              ; preds = %571
  %573 = load i64, ptr %15, align 8, !tbaa !9
  %574 = add nsw i64 %573, 1
  store i64 %574, ptr %15, align 8, !tbaa !9
  br label %544, !llvm.loop !30

575:                                              ; preds = %544
  br label %576

576:                                              ; preds = %575
  %577 = load i64, ptr %14, align 8, !tbaa !9
  %578 = add nsw i64 %577, 1
  store i64 %578, ptr %14, align 8, !tbaa !9
  br label %538, !llvm.loop !31

579:                                              ; preds = %538
  %580 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %580)
  store i32 1, ptr %37, align 4
  br label %918

581:                                              ; preds = %529
  store i64 0, ptr %17, align 8, !tbaa !9
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %582

582:                                              ; preds = %605, %581
  %583 = load i64, ptr %16, align 8, !tbaa !9
  %584 = load i64, ptr %9, align 8, !tbaa !9
  %585 = sub nsw i64 %584, 1
  %586 = icmp sle i64 %583, %585
  br i1 %586, label %587, label %608

587:                                              ; preds = %582
  %588 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %34, i32 0, i32 4
  %589 = load ptr, ptr %588, align 8, !tbaa !11
  %590 = load i64, ptr %16, align 8, !tbaa !9
  %591 = getelementptr inbounds double, ptr %589, i64 %590
  %592 = load double, ptr %591, align 8, !tbaa !12
  %593 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %34, i32 0, i32 4
  %594 = load ptr, ptr %593, align 8, !tbaa !11
  %595 = load i64, ptr %9, align 8, !tbaa !9
  %596 = sub nsw i64 %595, 1
  %597 = getelementptr inbounds double, ptr %594, i64 %596
  %598 = load double, ptr %597, align 8, !tbaa !12
  %599 = fmul double 5.000000e-13, %598
  %600 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %592, double noundef %599)
  br i1 %600, label %601, label %604

601:                                              ; preds = %587
  %602 = load i64, ptr %16, align 8, !tbaa !9
  %603 = add nsw i64 %602, 1
  store i64 %603, ptr %17, align 8, !tbaa !9
  br label %604

604:                                              ; preds = %601, %587
  br label %605

605:                                              ; preds = %604
  %606 = load i64, ptr %16, align 8, !tbaa !9
  %607 = add nsw i64 %606, 1
  store i64 %607, ptr %16, align 8, !tbaa !9
  br label %582, !llvm.loop !32

608:                                              ; preds = %582
  %609 = load i64, ptr %17, align 8, !tbaa !9
  %610 = icmp ne i64 %609, 0
  %611 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %610, ptr noundef @.str.409, ptr noundef %611)
  %612 = load i64, ptr %8, align 8, !tbaa !9
  %613 = load i64, ptr %9, align 8, !tbaa !9
  %614 = load i64, ptr %17, align 8, !tbaa !9
  %615 = sub nsw i64 %613, %614
  %616 = add nsw i64 %615, 1
  %617 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %31, i64 noundef %612, i64 noundef %616, ptr noundef %617)
  %618 = load i64, ptr %8, align 8, !tbaa !9
  %619 = load i64, ptr %9, align 8, !tbaa !9
  %620 = load i64, ptr %17, align 8, !tbaa !9
  %621 = sub nsw i64 %619, %620
  %622 = load i64, ptr %9, align 8, !tbaa !9
  %623 = load ptr, ptr %7, align 8, !tbaa !5
  %624 = load i64, ptr %17, align 8, !tbaa !9
  %625 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %618, i64 noundef %621, i64 noundef %622, double noundef 1.000000e+00, ptr noundef %623, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %25, i64 noundef 0, i64 noundef %624, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %31, i64 noundef 0, i64 noundef 0, ptr noundef %625)
  store i64 0, ptr %14, align 8, !tbaa !9
  br label %626

626:                                              ; preds = %650, %608
  %627 = load i64, ptr %14, align 8, !tbaa !9
  %628 = load i64, ptr %8, align 8, !tbaa !9
  %629 = sub nsw i64 %628, 1
  %630 = icmp sle i64 %627, %629
  br i1 %630, label %631, label %653

631:                                              ; preds = %626
  %632 = load ptr, ptr %7, align 8, !tbaa !5
  %633 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %632, i32 0, i32 6
  %634 = load ptr, ptr %633, align 8, !tbaa !11
  %635 = load i64, ptr %14, align 8, !tbaa !9
  %636 = getelementptr inbounds ptr, ptr %634, i64 %635
  %637 = load ptr, ptr %636, align 8, !tbaa !5
  %638 = load i64, ptr %9, align 8, !tbaa !9
  %639 = getelementptr inbounds double, ptr %637, i64 %638
  %640 = load double, ptr %639, align 8, !tbaa !12
  %641 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %31, i32 0, i32 6
  %642 = load ptr, ptr %641, align 8, !tbaa !11
  %643 = load i64, ptr %14, 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 %9, align 8, !tbaa !9
  %647 = load i64, ptr %17, align 8, !tbaa !9
  %648 = sub nsw i64 %646, %647
  %649 = getelementptr inbounds double, ptr %645, i64 %648
  store double %640, ptr %649, align 8, !tbaa !12
  br label %650

650:                                              ; preds = %631
  %651 = load i64, ptr %14, align 8, !tbaa !9
  %652 = add nsw i64 %651, 1
  store i64 %652, ptr %14, align 8, !tbaa !9
  br label %626, !llvm.loop !33

653:                                              ; preds = %626
  %654 = load i64, ptr %8, align 8, !tbaa !9
  %655 = load i64, ptr %9, align 8, !tbaa !9
  %656 = load i64, ptr %17, align 8, !tbaa !9
  %657 = sub nsw i64 %655, %656
  %658 = load i64, ptr %10, align 8, !tbaa !9
  %659 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl10fisherldanEPKNS_9ae_matrixElllPS0_PNS_8ae_stateE(ptr noundef %31, i64 noundef %654, i64 noundef %657, i64 noundef %658, ptr noundef %32, ptr noundef %659)
  %660 = load i64, ptr %9, align 8, !tbaa !9
  %661 = load i64, ptr %9, align 8, !tbaa !9
  %662 = load i64, ptr %17, align 8, !tbaa !9
  %663 = sub nsw i64 %661, %662
  %664 = load i64, ptr %9, align 8, !tbaa !9
  %665 = load i64, ptr %17, align 8, !tbaa !9
  %666 = sub nsw i64 %664, %665
  %667 = load i64, ptr %17, align 8, !tbaa !9
  %668 = load ptr, ptr %11, align 8, !tbaa !5
  %669 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %660, i64 noundef %663, i64 noundef %666, double noundef 1.000000e+00, ptr noundef %25, i64 noundef 0, i64 noundef %667, i64 noundef 0, ptr noundef %32, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %668, i64 noundef 0, i64 noundef 0, ptr noundef %669)
  %670 = load i64, ptr %9, align 8, !tbaa !9
  %671 = load i64, ptr %17, align 8, !tbaa !9
  %672 = sub nsw i64 %670, %671
  store i64 %672, ptr %16, align 8, !tbaa !9
  br label %673

673:                                              ; preds = %704, %653
  %674 = load i64, ptr %16, align 8, !tbaa !9
  %675 = load i64, ptr %9, align 8, !tbaa !9
  %676 = sub nsw i64 %675, 1
  %677 = icmp sle i64 %674, %676
  br i1 %677, label %678, label %707

678:                                              ; preds = %673
  %679 = load ptr, ptr %11, align 8, !tbaa !5
  %680 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %679, i32 0, i32 6
  %681 = load ptr, ptr %680, align 8, !tbaa !11
  %682 = getelementptr inbounds ptr, ptr %681, i64 0
  %683 = load ptr, ptr %682, align 8, !tbaa !5
  %684 = load i64, ptr %16, align 8, !tbaa !9
  %685 = getelementptr inbounds double, ptr %683, i64 %684
  %686 = load ptr, ptr %11, align 8, !tbaa !5
  %687 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %686, i32 0, i32 2
  %688 = load i64, ptr %687, align 8, !tbaa !34
  %689 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %25, i32 0, i32 6
  %690 = load ptr, ptr %689, align 8, !tbaa !11
  %691 = getelementptr inbounds ptr, ptr %690, i64 0
  %692 = load ptr, ptr %691, align 8, !tbaa !5
  %693 = load i64, ptr %16, align 8, !tbaa !9
  %694 = load i64, ptr %9, align 8, !tbaa !9
  %695 = load i64, ptr %17, align 8, !tbaa !9
  %696 = sub nsw i64 %694, %695
  %697 = sub nsw i64 %693, %696
  %698 = getelementptr inbounds double, ptr %692, i64 %697
  %699 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %25, i32 0, i32 2
  %700 = load i64, ptr %699, align 8, !tbaa !34
  %701 = load i64, ptr %9, align 8, !tbaa !9
  %702 = sub nsw i64 %701, 1
  %703 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %702)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %685, i64 noundef %688, ptr noundef %698, i64 noundef %700, i64 noundef %703)
  br label %704

704:                                              ; preds = %678
  %705 = load i64, ptr %16, align 8, !tbaa !9
  %706 = add nsw i64 %705, 1
  store i64 %706, ptr %16, align 8, !tbaa !9
  br label %673, !llvm.loop !38

707:                                              ; preds = %673
  br label %826

708:                                              ; preds = %516
  %709 = load i64, ptr %9, align 8, !tbaa !9
  %710 = load i64, ptr %9, align 8, !tbaa !9
  %711 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %27, i64 noundef %709, i64 noundef %710, ptr noundef %711)
  %712 = load i64, ptr %9, align 8, !tbaa !9
  %713 = load i64, ptr %9, align 8, !tbaa !9
  %714 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %29, i64 noundef %712, i64 noundef %713, ptr noundef %714)
  %715 = load i64, ptr %9, align 8, !tbaa !9
  %716 = load i64, ptr %9, align 8, !tbaa !9
  %717 = load i64, ptr %9, align 8, !tbaa !9
  %718 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %715, i64 noundef %716, i64 noundef %717, double noundef 1.000000e+00, ptr noundef %23, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %25, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %27, i64 noundef 0, i64 noundef 0, ptr noundef %718)
  %719 = load i64, ptr %9, align 8, !tbaa !9
  %720 = load i64, ptr %9, align 8, !tbaa !9
  %721 = load i64, ptr %9, align 8, !tbaa !9
  %722 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %719, i64 noundef %720, i64 noundef %721, double noundef 1.000000e+00, ptr noundef %25, i64 noundef 0, i64 noundef 0, i64 noundef 1, 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 %722)
  store i64 0, ptr %14, align 8, !tbaa !9
  br label %723

723:                                              ; preds = %768, %708
  %724 = load i64, ptr %14, align 8, !tbaa !9
  %725 = load i64, ptr %9, align 8, !tbaa !9
  %726 = sub nsw i64 %725, 1
  %727 = icmp sle i64 %724, %726
  br i1 %727, label %728, label %771

728:                                              ; preds = %723
  store i64 0, ptr %15, align 8, !tbaa !9
  br label %729

729:                                              ; preds = %764, %728
  %730 = load i64, ptr %15, align 8, !tbaa !9
  %731 = load i64, ptr %9, align 8, !tbaa !9
  %732 = sub nsw i64 %731, 1
  %733 = icmp sle i64 %730, %732
  br i1 %733, label %734, label %767

734:                                              ; preds = %729
  %735 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %29, i32 0, i32 6
  %736 = load ptr, ptr %735, align 8, !tbaa !11
  %737 = load i64, ptr %14, align 8, !tbaa !9
  %738 = getelementptr inbounds ptr, ptr %736, i64 %737
  %739 = load ptr, ptr %738, align 8, !tbaa !5
  %740 = load i64, ptr %15, align 8, !tbaa !9
  %741 = getelementptr inbounds double, ptr %739, i64 %740
  %742 = load double, ptr %741, align 8, !tbaa !12
  %743 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %34, i32 0, i32 4
  %744 = load ptr, ptr %743, align 8, !tbaa !11
  %745 = load i64, ptr %14, align 8, !tbaa !9
  %746 = getelementptr inbounds double, ptr %744, i64 %745
  %747 = load double, ptr %746, align 8, !tbaa !12
  %748 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %34, i32 0, i32 4
  %749 = load ptr, ptr %748, align 8, !tbaa !11
  %750 = load i64, ptr %15, align 8, !tbaa !9
  %751 = getelementptr inbounds double, ptr %749, i64 %750
  %752 = load double, ptr %751, align 8, !tbaa !12
  %753 = fmul double %747, %752
  %754 = load ptr, ptr %12, align 8, !tbaa !5
  %755 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %753, ptr noundef %754)
  %756 = fdiv double %742, %755
  %757 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %29, i32 0, i32 6
  %758 = load ptr, ptr %757, align 8, !tbaa !11
  %759 = load i64, ptr %14, align 8, !tbaa !9
  %760 = getelementptr inbounds ptr, ptr %758, i64 %759
  %761 = load ptr, ptr %760, align 8, !tbaa !5
  %762 = load i64, ptr %15, align 8, !tbaa !9
  %763 = getelementptr inbounds double, ptr %761, i64 %762
  store double %756, ptr %763, align 8, !tbaa !12
  br label %764

764:                                              ; preds = %734
  %765 = load i64, ptr %15, align 8, !tbaa !9
  %766 = add nsw i64 %765, 1
  store i64 %766, ptr %15, align 8, !tbaa !9
  br label %729, !llvm.loop !39

767:                                              ; preds = %729
  br label %768

768:                                              ; preds = %767
  %769 = load i64, ptr %14, align 8, !tbaa !9
  %770 = add nsw i64 %769, 1
  store i64 %770, ptr %14, align 8, !tbaa !9
  br label %723, !llvm.loop !40

771:                                              ; preds = %723
  %772 = load i64, ptr %9, align 8, !tbaa !9
  %773 = load ptr, ptr %12, align 8, !tbaa !5
  %774 = call noundef zeroext i1 @_ZN11alglib_impl10smatrixevdEPKNS_9ae_matrixEllbPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef %29, i64 noundef %772, i64 noundef 1, i1 noundef zeroext true, ptr noundef %35, ptr noundef %26, ptr noundef %773)
  br i1 %774, label %777, label %775

775:                                              ; preds = %771
  %776 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef @.str.408, ptr noundef %776)
  br label %777

777:                                              ; preds = %775, %771
  store i64 0, ptr %14, align 8, !tbaa !9
  br label %778

778:                                              ; preds = %817, %777
  %779 = load i64, ptr %14, align 8, !tbaa !9
  %780 = load i64, ptr %9, align 8, !tbaa !9
  %781 = sub nsw i64 %780, 1
  %782 = icmp sle i64 %779, %781
  br i1 %782, label %783, label %820

783:                                              ; preds = %778
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %784

784:                                              ; preds = %813, %783
  %785 = load i64, ptr %16, align 8, !tbaa !9
  %786 = load i64, ptr %9, align 8, !tbaa !9
  %787 = sub nsw i64 %786, 1
  %788 = icmp sle i64 %785, %787
  br i1 %788, label %789, label %816

789:                                              ; preds = %784
  %790 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %26, i32 0, i32 6
  %791 = load ptr, ptr %790, align 8, !tbaa !11
  %792 = load i64, ptr %14, align 8, !tbaa !9
  %793 = getelementptr inbounds ptr, ptr %791, i64 %792
  %794 = load ptr, ptr %793, align 8, !tbaa !5
  %795 = load i64, ptr %16, align 8, !tbaa !9
  %796 = getelementptr inbounds double, ptr %794, i64 %795
  %797 = load double, ptr %796, align 8, !tbaa !12
  %798 = getelementptr inbounds %"struct.alglib_impl::ae_vector", ptr %34, i32 0, i32 4
  %799 = load ptr, ptr %798, align 8, !tbaa !11
  %800 = load i64, ptr %14, align 8, !tbaa !9
  %801 = getelementptr inbounds double, ptr %799, i64 %800
  %802 = load double, ptr %801, align 8, !tbaa !12
  %803 = load ptr, ptr %12, align 8, !tbaa !5
  %804 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %802, ptr noundef %803)
  %805 = fdiv double %797, %804
  %806 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %26, i32 0, i32 6
  %807 = load ptr, ptr %806, align 8, !tbaa !11
  %808 = load i64, ptr %14, align 8, !tbaa !9
  %809 = getelementptr inbounds ptr, ptr %807, i64 %808
  %810 = load ptr, ptr %809, align 8, !tbaa !5
  %811 = load i64, ptr %16, align 8, !tbaa !9
  %812 = getelementptr inbounds double, ptr %810, i64 %811
  store double %805, ptr %812, align 8, !tbaa !12
  br label %813

813:                                              ; preds = %789
  %814 = load i64, ptr %16, align 8, !tbaa !9
  %815 = add nsw i64 %814, 1
  store i64 %815, ptr %16, align 8, !tbaa !9
  br label %784, !llvm.loop !41

816:                                              ; preds = %784
  br label %817

817:                                              ; preds = %816
  %818 = load i64, ptr %14, align 8, !tbaa !9
  %819 = add nsw i64 %818, 1
  store i64 %819, ptr %14, align 8, !tbaa !9
  br label %778, !llvm.loop !42

820:                                              ; preds = %778
  %821 = load i64, ptr %9, align 8, !tbaa !9
  %822 = load i64, ptr %9, align 8, !tbaa !9
  %823 = load i64, ptr %9, align 8, !tbaa !9
  %824 = load ptr, ptr %11, align 8, !tbaa !5
  %825 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %821, i64 noundef %822, i64 noundef %823, double noundef 1.000000e+00, ptr noundef %25, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef %26, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %824, i64 noundef 0, i64 noundef 0, ptr noundef %825)
  br label %826

826:                                              ; preds = %820, %707
  store i64 0, ptr %16, align 8, !tbaa !9
  br label %827

827:                                              ; preds = %913, %826
  %828 = load i64, ptr %16, align 8, !tbaa !9
  %829 = load i64, ptr %9, align 8, !tbaa !9
  %830 = sub nsw i64 %829, 1
  %831 = icmp sle i64 %828, %830
  br i1 %831, label %832, label %916

832:                                              ; preds = %827
  %833 = load ptr, ptr %11, align 8, !tbaa !5
  %834 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %833, i32 0, i32 6
  %835 = load ptr, ptr %834, align 8, !tbaa !11
  %836 = getelementptr inbounds ptr, ptr %835, i64 0
  %837 = load ptr, ptr %836, align 8, !tbaa !5
  %838 = load i64, ptr %16, align 8, !tbaa !9
  %839 = getelementptr inbounds double, ptr %837, i64 %838
  %840 = load ptr, ptr %11, align 8, !tbaa !5
  %841 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %840, i32 0, i32 2
  %842 = load i64, ptr %841, align 8, !tbaa !34
  %843 = load ptr, ptr %11, align 8, !tbaa !5
  %844 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %843, i32 0, i32 6
  %845 = load ptr, ptr %844, align 8, !tbaa !11
  %846 = getelementptr inbounds ptr, ptr %845, i64 0
  %847 = load ptr, ptr %846, align 8, !tbaa !5
  %848 = load i64, ptr %16, align 8, !tbaa !9
  %849 = getelementptr inbounds double, ptr %847, i64 %848
  %850 = load ptr, ptr %11, align 8, !tbaa !5
  %851 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %850, i32 0, i32 2
  %852 = load i64, ptr %851, align 8, !tbaa !34
  %853 = load i64, ptr %9, align 8, !tbaa !9
  %854 = sub nsw i64 %853, 1
  %855 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %854)
  %856 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %839, i64 noundef %842, ptr noundef %849, i64 noundef %852, i64 noundef %855)
  store double %856, ptr %18, align 8, !tbaa !12
  %857 = load double, ptr %18, align 8, !tbaa !12
  %858 = load ptr, ptr %12, align 8, !tbaa !5
  %859 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %857, ptr noundef %858)
  %860 = fdiv double 1.000000e+00, %859
  store double %860, ptr %18, align 8, !tbaa !12
  %861 = load ptr, ptr %11, align 8, !tbaa !5
  %862 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %861, i32 0, i32 6
  %863 = load ptr, ptr %862, align 8, !tbaa !11
  %864 = getelementptr inbounds ptr, ptr %863, i64 0
  %865 = load ptr, ptr %864, align 8, !tbaa !5
  %866 = load i64, ptr %16, align 8, !tbaa !9
  %867 = getelementptr inbounds double, ptr %865, i64 %866
  %868 = load ptr, ptr %11, align 8, !tbaa !5
  %869 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %868, i32 0, i32 2
  %870 = load i64, ptr %869, align 8, !tbaa !34
  %871 = load i64, ptr %9, align 8, !tbaa !9
  %872 = sub nsw i64 %871, 1
  %873 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %872)
  %874 = load double, ptr %18, align 8, !tbaa !12
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %867, i64 noundef %870, i64 noundef %873, double noundef %874)
  store double 0.000000e+00, ptr %18, align 8, !tbaa !12
  store i64 0, ptr %14, align 8, !tbaa !9
  br label %875

875:                                              ; preds = %892, %832
  %876 = load i64, ptr %14, align 8, !tbaa !9
  %877 = load i64, ptr %9, align 8, !tbaa !9
  %878 = sub nsw i64 %877, 1
  %879 = icmp sle i64 %876, %878
  br i1 %879, label %880, label %895

880:                                              ; preds = %875
  %881 = load double, ptr %18, align 8, !tbaa !12
  %882 = load ptr, ptr %11, align 8, !tbaa !5
  %883 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %882, i32 0, i32 6
  %884 = load ptr, ptr %883, align 8, !tbaa !11
  %885 = load i64, ptr %14, align 8, !tbaa !9
  %886 = getelementptr inbounds ptr, ptr %884, i64 %885
  %887 = load ptr, ptr %886, align 8, !tbaa !5
  %888 = load i64, ptr %16, align 8, !tbaa !9
  %889 = getelementptr inbounds double, ptr %887, i64 %888
  %890 = load double, ptr %889, align 8, !tbaa !12
  %891 = fadd double %881, %890
  store double %891, ptr %18, align 8, !tbaa !12
  br label %892

892:                                              ; preds = %880
  %893 = load i64, ptr %14, align 8, !tbaa !9
  %894 = add nsw i64 %893, 1
  store i64 %894, ptr %14, align 8, !tbaa !9
  br label %875, !llvm.loop !43

895:                                              ; preds = %875
  %896 = load double, ptr %18, align 8, !tbaa !12
  %897 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %896, double noundef 0.000000e+00)
  br i1 %897, label %898, label %912

898:                                              ; preds = %895
  %899 = load ptr, ptr %11, 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 = getelementptr inbounds ptr, ptr %901, i64 0
  %903 = load ptr, ptr %902, align 8, !tbaa !5
  %904 = load i64, ptr %16, align 8, !tbaa !9
  %905 = getelementptr inbounds double, ptr %903, i64 %904
  %906 = load ptr, ptr %11, align 8, !tbaa !5
  %907 = getelementptr inbounds %"struct.alglib_impl::ae_matrix", ptr %906, i32 0, i32 2
  %908 = load i64, ptr %907, align 8, !tbaa !34
  %909 = load i64, ptr %9, align 8, !tbaa !9
  %910 = sub nsw i64 %909, 1
  %911 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %910)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %905, i64 noundef %908, i64 noundef %911, double noundef -1.000000e+00)
  br label %912

912:                                              ; preds = %898, %895
  br label %913

913:                                              ; preds = %912
  %914 = load i64, ptr %16, align 8, !tbaa !9
  %915 = add nsw i64 %914, 1
  store i64 %915, ptr %16, align 8, !tbaa !9
  br label %827, !llvm.loop !44

916:                                              ; preds = %827
  %917 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %917)
  store i32 0, ptr %37, align 4
  br label %918

918:                                              ; preds = %916, %579, %157
  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 64, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 64, 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 80, 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 80, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 64, 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 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #4
  %919 = load i32, ptr %37, align 4
  switch i32 %919, label %921 [
    i32 0, label %920
    i32 1, label %920
  ]

920:                                              ; preds = %918, %918
  ret void

921:                                              ; preds = %918
  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_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_impl14ae_frame_leaveEPNS_8ae_stateE(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_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef, i64 noundef, i64 noundef, double noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, double noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef) #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_impl10smatrixevdEPKNS_9ae_matrixEllbPNS_9ae_vectorEPS0_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.404 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.405 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.406 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.407 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.408 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.409 = 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_impl10fisherldanEPKNS_9ae_matrixElllPS0_PNS_8ae_stateE(ptr noundef %0, i64 noundef %1, i64 noundef %2, i64 noundef %3, ptr noundef %4, ptr noundef %5) local_unnamed_addr #3 {
  %7 = alloca %"struct.alglib_impl::ae_frame", align 8
  %8 = alloca %"struct.alglib_impl::ae_vector", align 8
  %9 = alloca %"struct.alglib_impl::ae_vector", align 8
  %10 = alloca %"struct.alglib_impl::ae_matrix", align 8
  %11 = alloca %"struct.alglib_impl::ae_vector", align 8
  %12 = alloca %"struct.alglib_impl::ae_matrix", 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_vector", align 8
  %23 = alloca %"struct.alglib_impl::ae_vector", align 8
  %24 = alloca %"struct.alglib_impl::ae_vector", align 8
  %25 = alloca %"struct.alglib_impl::ae_vector", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %9) #5
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 80, 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 64, 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 @_ZN11alglib_impl13ae_frame_makeEPNS_8ae_stateEPNS_8ae_frameE(ptr noundef %5, ptr noundef nonnull %7)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %8, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %9, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %10, i8 0, i64 80, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %11, i8 0, i64 64, i1 false)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %12, i8 0, i64 80, 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(64) %22, i8 0, i64 64, 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 @_ZN11alglib_impl15ae_matrix_clearEPNS_9ae_matrixE(ptr noundef %4)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %8, i64 noundef 0, i64 noundef 2, ptr noundef %5, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %9, i64 noundef 0, i64 noundef 3, ptr noundef %5, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %10, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %5, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %11, i64 noundef 0, i64 noundef 2, ptr noundef %5, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_matrix_initEPNS_9ae_matrixElllPNS_8ae_stateEb(ptr noundef nonnull %12, i64 noundef 0, i64 noundef 0, i64 noundef 3, ptr noundef %5, 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 %5, 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 %5, 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 %5, 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 %5, 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 %5, 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 %5, 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 %5, 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 %5, 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 %5, i1 noundef zeroext true)
  call void @_ZN11alglib_impl14ae_vector_initEPNS_9ae_vectorEllPNS_8ae_stateEb(ptr noundef nonnull %22, i64 noundef 0, i64 noundef 3, ptr noundef %5, 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 %5, 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 %5, 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 %5, i1 noundef zeroext true)
  %26 = icmp sgt i64 %1, -1
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %26, ptr noundef nonnull @.str.404, ptr noundef %5)
  %27 = icmp sgt i64 %2, 0
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %27, ptr noundef nonnull @.str.405, ptr noundef %5)
  %28 = icmp sgt i64 %3, 1
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %28, ptr noundef nonnull @.str.406, ptr noundef %5)
  %.not.not381 = icmp sgt i64 %1, 0
  br i1 %.not.not381, label %.lr.ph, label %._crit_edge.thread

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

30:                                               ; preds = %.lr.ph, %46
  %.0332382 = phi i64 [ 0, %.lr.ph ], [ %47, %46 ]
  %31 = load ptr, ptr %29, align 8, !tbaa !5
  %32 = getelementptr inbounds ptr, ptr %31, i64 %.0332382
  %33 = load ptr, ptr %32, align 8, !tbaa !8
  %34 = getelementptr inbounds double, ptr %33, i64 %2
  %35 = load double, ptr %34, align 8, !tbaa !10
  %36 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %35, ptr noundef %5)
  %37 = icmp slt i64 %36, 0
  br i1 %37, label %45, label %38

38:                                               ; preds = %30
  %39 = load ptr, ptr %29, align 8, !tbaa !5
  %40 = getelementptr inbounds ptr, ptr %39, i64 %.0332382
  %41 = load ptr, ptr %40, align 8, !tbaa !8
  %42 = getelementptr inbounds double, ptr %41, i64 %2
  %43 = load double, ptr %42, align 8, !tbaa !10
  %44 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %43, ptr noundef %5)
  %.not = icmp slt i64 %44, %3
  br i1 %.not, label %46, label %45

45:                                               ; preds = %38, %30
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef nonnull @.str.407, ptr noundef %5)
  br label %46

46:                                               ; preds = %38, %45
  %47 = add nuw nsw i64 %.0332382, 1
  %exitcond.not = icmp eq i64 %47, %1
  br i1 %exitcond.not, label %._crit_edge, label %30, !llvm.loop !12

._crit_edge:                                      ; preds = %46
  %48 = icmp eq i64 %1, 1
  br i1 %48, label %._crit_edge.thread, label %69

._crit_edge.thread:                               ; preds = %6, %._crit_edge
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %4, i64 noundef %2, i64 noundef %2, ptr noundef %5)
  br i1 %27, label %.preheader.lr.ph, label %._crit_edge476

.preheader.lr.ph:                                 ; preds = %._crit_edge.thread
  %49 = getelementptr inbounds i8, ptr %4, i64 72
  %xtraiter549 = and i64 %2, 1
  %50 = icmp eq i64 %2, 1
  %unroll_iter552 = and i64 %2, 9223372036854775806
  %lcmp.mod551.not = icmp eq i64 %xtraiter549, 0
  br label %.preheader.us

.preheader.us:                                    ; preds = %._crit_edge473.us, %.preheader.lr.ph
  %.1333475.us = phi i64 [ 0, %.preheader.lr.ph ], [ %68, %._crit_edge473.us ]
  br i1 %50, label %._crit_edge473.us.unr-lcssa, label %.preheader.us.new

.preheader.us.new:                                ; preds = %.preheader.us, %.preheader.us.new
  %.0326471.us = phi i64 [ %62, %.preheader.us.new ], [ 0, %.preheader.us ]
  %niter553 = phi i64 [ %niter553.next.1, %.preheader.us.new ], [ 0, %.preheader.us ]
  %51 = icmp eq i64 %.1333475.us, %.0326471.us
  %52 = load ptr, ptr %49, align 8, !tbaa !5
  %53 = getelementptr inbounds ptr, ptr %52, i64 %.1333475.us
  %54 = load ptr, ptr %53, align 8, !tbaa !8
  %. = select i1 %51, double 1.000000e+00, double 0.000000e+00
  %55 = getelementptr inbounds double, ptr %54, i64 %.0326471.us
  store double %., ptr %55, align 8, !tbaa !10
  %56 = or disjoint i64 %.0326471.us, 1
  %57 = icmp eq i64 %.1333475.us, %56
  %58 = load ptr, ptr %49, align 8, !tbaa !5
  %59 = getelementptr inbounds ptr, ptr %58, i64 %.1333475.us
  %60 = load ptr, ptr %59, align 8, !tbaa !8
  %..1 = select i1 %57, double 1.000000e+00, double 0.000000e+00
  %61 = getelementptr inbounds double, ptr %60, i64 %56
  store double %..1, ptr %61, align 8, !tbaa !10
  %62 = add nuw nsw i64 %.0326471.us, 2
  %niter553.next.1 = add i64 %niter553, 2
  %niter553.ncmp.1 = icmp eq i64 %niter553.next.1, %unroll_iter552
  br i1 %niter553.ncmp.1, label %._crit_edge473.us.unr-lcssa, label %.preheader.us.new, !llvm.loop !14

._crit_edge473.us.unr-lcssa:                      ; preds = %.preheader.us.new, %.preheader.us
  %.0326471.us.unr = phi i64 [ 0, %.preheader.us ], [ %62, %.preheader.us.new ]
  br i1 %lcmp.mod551.not, label %._crit_edge473.us, label %._crit_edge473.us.epilog-lcssa

._crit_edge473.us.epilog-lcssa:                   ; preds = %._crit_edge473.us.unr-lcssa
  %63 = icmp eq i64 %.1333475.us, %.0326471.us.unr
  %64 = load ptr, ptr %49, align 8, !tbaa !5
  %65 = getelementptr inbounds ptr, ptr %64, i64 %.1333475.us
  %66 = load ptr, ptr %65, align 8, !tbaa !8
  %..epil = select i1 %63, double 1.000000e+00, double 0.000000e+00
  %67 = getelementptr inbounds double, ptr %66, i64 %.0326471.us.unr
  store double %..epil, ptr %67, align 8, !tbaa !10
  br label %._crit_edge473.us

._crit_edge473.us:                                ; preds = %._crit_edge473.us.unr-lcssa, %._crit_edge473.us.epilog-lcssa
  %68 = add nuw nsw i64 %.1333475.us, 1
  %exitcond503.not = icmp eq i64 %68, %2
  br i1 %exitcond503.not, label %._crit_edge476, label %.preheader.us, !llvm.loop !15

69:                                               ; preds = %._crit_edge
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %22, i64 noundef %2, ptr noundef %5)
  %70 = call noundef i64 @_ZN11alglib_impl9ae_maxintEllPNS_8ae_stateE(i64 noundef %2, i64 noundef %1, ptr noundef %5)
  %71 = add nsw i64 %70, 1
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %25, i64 noundef %71, ptr noundef %5)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %19, i64 noundef %1, i64 noundef %2, ptr noundef %5)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %8, i64 noundef %1, ptr noundef %5)
  %72 = getelementptr inbounds i8, ptr %0, i64 72
  %73 = getelementptr inbounds i8, ptr %8, i64 56
  br label %74

74:                                               ; preds = %69, %74
  %.2334383 = phi i64 [ 0, %69 ], [ %83, %74 ]
  %75 = load ptr, ptr %72, align 8, !tbaa !5
  %76 = getelementptr inbounds ptr, ptr %75, i64 %.2334383
  %77 = load ptr, ptr %76, align 8, !tbaa !8
  %78 = getelementptr inbounds double, ptr %77, i64 %2
  %79 = load double, ptr %78, align 8, !tbaa !10
  %80 = call noundef i64 @_ZN11alglib_impl8ae_roundEdPNS_8ae_stateE(double noundef %79, ptr noundef %5)
  %81 = load ptr, ptr %73, align 8, !tbaa !5
  %82 = getelementptr inbounds i64, ptr %81, i64 %.2334383
  store i64 %80, ptr %82, align 8, !tbaa !16
  %83 = add nuw nsw i64 %.2334383, 1
  %exitcond477.not = icmp eq i64 %83, %1
  br i1 %exitcond477.not, label %84, label %74, !llvm.loop !18

84:                                               ; preds = %74
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %9, i64 noundef %2, ptr noundef %5)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %10, i64 noundef %3, i64 noundef %2, ptr noundef %5)
  call void @_ZN11alglib_impl20ae_vector_set_lengthEPNS_9ae_vectorElPNS_8ae_stateE(ptr noundef nonnull %11, i64 noundef %3, ptr noundef %5)
  br i1 %27, label %.lr.ph387, label %.preheader380

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

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

.preheader380.loopexit.unr-lcssa:                 ; preds = %95, %.lr.ph387
  %.1327385.unr = phi i64 [ 0, %.lr.ph387 ], [ %107, %95 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader380, label %.epil.preheader

.epil.preheader:                                  ; preds = %.preheader380.loopexit.unr-lcssa, %.epil.preheader
  %.1327385.epil = phi i64 [ %90, %.epil.preheader ], [ %.1327385.unr, %.preheader380.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %.preheader380.loopexit.unr-lcssa ]
  %88 = load ptr, ptr %85, align 8, !tbaa !5
  %89 = getelementptr inbounds double, ptr %88, i64 %.1327385.epil
  store double 0.000000e+00, ptr %89, align 8, !tbaa !10
  %90 = add nuw nsw i64 %.1327385.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 %.preheader380, label %.epil.preheader, !llvm.loop !19

.preheader380:                                    ; preds = %.preheader380.loopexit.unr-lcssa, %.epil.preheader, %84
  %91 = add i64 %2, -1
  %.not.not346393 = icmp sgt i64 %3, 0
  br i1 %.not.not346393, label %.lr.ph395, label %.lr.ph398

.lr.ph395:                                        ; preds = %.preheader380
  %92 = getelementptr inbounds i8, ptr %11, i64 56
  %93 = getelementptr inbounds i8, ptr %10, i64 72
  %xtraiter512 = and i64 %2, 3
  %94 = icmp ult i64 %91, 3
  %unroll_iter515 = and i64 %2, 9223372036854775804
  %lcmp.mod514.not = icmp eq i64 %xtraiter512, 0
  br label %111

95:                                               ; preds = %95, %.lr.ph387.new
  %.1327385 = phi i64 [ 0, %.lr.ph387.new ], [ %107, %95 ]
  %niter = phi i64 [ 0, %.lr.ph387.new ], [ %niter.next.3, %95 ]
  %96 = load ptr, ptr %85, align 8, !tbaa !5
  %97 = getelementptr inbounds double, ptr %96, i64 %.1327385
  store double 0.000000e+00, ptr %97, align 8, !tbaa !10
  %98 = or disjoint i64 %.1327385, 1
  %99 = load ptr, ptr %85, align 8, !tbaa !5
  %100 = getelementptr inbounds double, ptr %99, i64 %98
  store double 0.000000e+00, ptr %100, align 8, !tbaa !10
  %101 = or disjoint i64 %.1327385, 2
  %102 = load ptr, ptr %85, align 8, !tbaa !5
  %103 = getelementptr inbounds double, ptr %102, i64 %101
  store double 0.000000e+00, ptr %103, align 8, !tbaa !10
  %104 = or disjoint i64 %.1327385, 3
  %105 = load ptr, ptr %85, align 8, !tbaa !5
  %106 = getelementptr inbounds double, ptr %105, i64 %104
  store double 0.000000e+00, ptr %106, align 8, !tbaa !10
  %107 = add nuw nsw i64 %.1327385, 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 %.preheader380.loopexit.unr-lcssa, label %95, !llvm.loop !21

.lr.ph398:                                        ; preds = %._crit_edge392, %.preheader380
  %108 = getelementptr inbounds i8, ptr %9, i64 56
  %109 = getelementptr inbounds i8, ptr %10, i64 72
  %110 = getelementptr inbounds i8, ptr %11, i64 56
  %smax = call i64 @llvm.smax.i64(i64 %1, i64 1)
  br label %142

111:                                              ; preds = %.lr.ph395, %._crit_edge392
  %.3335394 = phi i64 [ 0, %.lr.ph395 ], [ %139, %._crit_edge392 ]
  %112 = load ptr, ptr %92, align 8, !tbaa !5
  %113 = getelementptr inbounds i64, ptr %112, i64 %.3335394
  store i64 0, ptr %113, align 8, !tbaa !16
  br i1 %27, label %.lr.ph391.preheader, label %._crit_edge392

.lr.ph391.preheader:                              ; preds = %111
  br i1 %94, label %._crit_edge392.loopexit.unr-lcssa, label %.lr.ph391

.lr.ph391:                                        ; preds = %.lr.ph391.preheader, %.lr.ph391
  %.2328389 = phi i64 [ %133, %.lr.ph391 ], [ 0, %.lr.ph391.preheader ]
  %niter516 = phi i64 [ %niter516.next.3, %.lr.ph391 ], [ 0, %.lr.ph391.preheader ]
  %114 = load ptr, ptr %93, align 8, !tbaa !5
  %115 = getelementptr inbounds ptr, ptr %114, i64 %.3335394
  %116 = load ptr, ptr %115, align 8, !tbaa !8
  %117 = getelementptr inbounds double, ptr %116, i64 %.2328389
  store double 0.000000e+00, ptr %117, align 8, !tbaa !10
  %118 = or disjoint i64 %.2328389, 1
  %119 = load ptr, ptr %93, align 8, !tbaa !5
  %120 = getelementptr inbounds ptr, ptr %119, i64 %.3335394
  %121 = load ptr, ptr %120, align 8, !tbaa !8
  %122 = getelementptr inbounds double, ptr %121, i64 %118
  store double 0.000000e+00, ptr %122, align 8, !tbaa !10
  %123 = or disjoint i64 %.2328389, 2
  %124 = load ptr, ptr %93, align 8, !tbaa !5
  %125 = getelementptr inbounds ptr, ptr %124, i64 %.3335394
  %126 = load ptr, ptr %125, align 8, !tbaa !8
  %127 = getelementptr inbounds double, ptr %126, i64 %123
  store double 0.000000e+00, ptr %127, align 8, !tbaa !10
  %128 = or disjoint i64 %.2328389, 3
  %129 = load ptr, ptr %93, align 8, !tbaa !5
  %130 = getelementptr inbounds ptr, ptr %129, i64 %.3335394
  %131 = load ptr, ptr %130, align 8, !tbaa !8
  %132 = getelementptr inbounds double, ptr %131, i64 %128
  store double 0.000000e+00, ptr %132, align 8, !tbaa !10
  %133 = add nuw nsw i64 %.2328389, 4
  %niter516.next.3 = add i64 %niter516, 4
  %niter516.ncmp.3 = icmp eq i64 %niter516.next.3, %unroll_iter515
  br i1 %niter516.ncmp.3, label %._crit_edge392.loopexit.unr-lcssa, label %.lr.ph391, !llvm.loop !22

._crit_edge392.loopexit.unr-lcssa:                ; preds = %.lr.ph391, %.lr.ph391.preheader
  %.2328389.unr = phi i64 [ 0, %.lr.ph391.preheader ], [ %133, %.lr.ph391 ]
  br i1 %lcmp.mod514.not, label %._crit_edge392, label %.lr.ph391.epil

.lr.ph391.epil:                                   ; preds = %._crit_edge392.loopexit.unr-lcssa, %.lr.ph391.epil
  %.2328389.epil = phi i64 [ %138, %.lr.ph391.epil ], [ %.2328389.unr, %._crit_edge392.loopexit.unr-lcssa ]
  %epil.iter513 = phi i64 [ %epil.iter513.next, %.lr.ph391.epil ], [ 0, %._crit_edge392.loopexit.unr-lcssa ]
  %134 = load ptr, ptr %93, align 8, !tbaa !5
  %135 = getelementptr inbounds ptr, ptr %134, i64 %.3335394
  %136 = load ptr, ptr %135, align 8, !tbaa !8
  %137 = getelementptr inbounds double, ptr %136, i64 %.2328389.epil
  store double 0.000000e+00, ptr %137, align 8, !tbaa !10
  %138 = add nuw nsw i64 %.2328389.epil, 1
  %epil.iter513.next = add i64 %epil.iter513, 1
  %epil.iter513.cmp.not = icmp eq i64 %epil.iter513.next, %xtraiter512
  br i1 %epil.iter513.cmp.not, label %._crit_edge392, label %.lr.ph391.epil, !llvm.loop !23

._crit_edge392:                                   ; preds = %._crit_edge392.loopexit.unr-lcssa, %.lr.ph391.epil, %111
  %139 = add nuw nsw i64 %.3335394, 1
  %exitcond480.not = icmp eq i64 %139, %3
  br i1 %exitcond480.not, label %.lr.ph398, label %111, !llvm.loop !24

.preheader378:                                    ; preds = %142
  br i1 %.not.not346393, label %.lr.ph401, label %._crit_edge402

.lr.ph401:                                        ; preds = %.preheader378
  %140 = getelementptr inbounds i8, ptr %11, i64 56
  %141 = getelementptr inbounds i8, ptr %10, i64 72
  br label %166

142:                                              ; preds = %.lr.ph398, %142
  %.4336397 = phi i64 [ 0, %.lr.ph398 ], [ %165, %142 ]
  %143 = load ptr, ptr %108, align 8, !tbaa !5
  %144 = load ptr, ptr %72, align 8, !tbaa !5
  %145 = getelementptr inbounds ptr, ptr %144, i64 %.4336397
  %146 = load ptr, ptr %145, align 8, !tbaa !8
  %147 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %91)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %143, i64 noundef 1, ptr noundef %146, i64 noundef 1, i64 noundef %147)
  %148 = load ptr, ptr %109, align 8, !tbaa !5
  %149 = load ptr, ptr %73, align 8, !tbaa !5
  %150 = getelementptr inbounds i64, ptr %149, i64 %.4336397
  %151 = load i64, ptr %150, align 8, !tbaa !16
  %152 = getelementptr inbounds ptr, ptr %148, i64 %151
  %153 = load ptr, ptr %152, align 8, !tbaa !8
  %154 = load ptr, ptr %72, align 8, !tbaa !5
  %155 = getelementptr inbounds ptr, ptr %154, i64 %.4336397
  %156 = load ptr, ptr %155, align 8, !tbaa !8
  %157 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %91)
  call void @_ZN11alglib_impl8ae_v_addEPdlPKdll(ptr noundef %153, i64 noundef 1, ptr noundef %156, i64 noundef 1, i64 noundef %157)
  %158 = load ptr, ptr %110, align 8, !tbaa !5
  %159 = load ptr, ptr %73, align 8, !tbaa !5
  %160 = getelementptr inbounds i64, ptr %159, i64 %.4336397
  %161 = load i64, ptr %160, align 8, !tbaa !16
  %162 = getelementptr inbounds i64, ptr %158, i64 %161
  %163 = load i64, ptr %162, align 8, !tbaa !16
  %164 = add nsw i64 %163, 1
  store i64 %164, ptr %162, align 8, !tbaa !16
  %165 = add nuw nsw i64 %.4336397, 1
  %exitcond481.not = icmp eq i64 %165, %smax
  br i1 %exitcond481.not, label %.preheader378, label %142, !llvm.loop !25

166:                                              ; preds = %.lr.ph401, %166
  %.5337400 = phi i64 [ 0, %.lr.ph401 ], [ %176, %166 ]
  %167 = load ptr, ptr %140, align 8, !tbaa !5
  %168 = getelementptr inbounds i64, ptr %167, i64 %.5337400
  %169 = load i64, ptr %168, align 8, !tbaa !16
  %170 = sitofp i64 %169 to double
  %171 = fdiv double 1.000000e+00, %170
  %172 = load ptr, ptr %141, align 8, !tbaa !5
  %173 = getelementptr inbounds ptr, ptr %172, i64 %.5337400
  %174 = load ptr, ptr %173, align 8, !tbaa !8
  %175 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %91)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %174, i64 noundef 1, i64 noundef %175, double noundef %171)
  %176 = add nuw nsw i64 %.5337400, 1
  %exitcond482.not = icmp eq i64 %176, %3
  br i1 %exitcond482.not, label %._crit_edge402, label %166, !llvm.loop !26

._crit_edge402:                                   ; preds = %166, %.preheader378
  %177 = uitofp nneg i64 %1 to double
  %178 = fdiv double 1.000000e+00, %177
  %179 = getelementptr inbounds i8, ptr %9, i64 56
  %180 = load ptr, ptr %179, align 8, !tbaa !5
  %181 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %91)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %180, i64 noundef 1, i64 noundef %181, double noundef %178)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %2, i64 noundef %2, ptr noundef %5)
  br i1 %27, label %.preheader377.lr.ph, label %.lr.ph411

.preheader377.lr.ph:                              ; preds = %._crit_edge402
  %182 = getelementptr inbounds i8, ptr %13, i64 72
  %xtraiter518 = and i64 %2, 3
  %183 = icmp ult i64 %91, 3
  %unroll_iter521 = and i64 %2, 9223372036854775804
  %lcmp.mod520.not = icmp eq i64 %xtraiter518, 0
  br label %.preheader377.us

.preheader377.us:                                 ; preds = %._crit_edge406.us, %.preheader377.lr.ph
  %.6338408.us = phi i64 [ 0, %.preheader377.lr.ph ], [ %209, %._crit_edge406.us ]
  br i1 %183, label %._crit_edge406.us.unr-lcssa, label %.preheader377.us.new

.preheader377.us.new:                             ; preds = %.preheader377.us, %.preheader377.us.new
  %.3329404.us = phi i64 [ %203, %.preheader377.us.new ], [ 0, %.preheader377.us ]
  %niter522 = phi i64 [ %niter522.next.3, %.preheader377.us.new ], [ 0, %.preheader377.us ]
  %184 = load ptr, ptr %182, align 8, !tbaa !5
  %185 = getelementptr inbounds ptr, ptr %184, i64 %.6338408.us
  %186 = load ptr, ptr %185, align 8, !tbaa !8
  %187 = getelementptr inbounds double, ptr %186, i64 %.3329404.us
  store double 0.000000e+00, ptr %187, align 8, !tbaa !10
  %188 = or disjoint i64 %.3329404.us, 1
  %189 = load ptr, ptr %182, align 8, !tbaa !5
  %190 = getelementptr inbounds ptr, ptr %189, i64 %.6338408.us
  %191 = load ptr, ptr %190, align 8, !tbaa !8
  %192 = getelementptr inbounds double, ptr %191, i64 %188
  store double 0.000000e+00, ptr %192, align 8, !tbaa !10
  %193 = or disjoint i64 %.3329404.us, 2
  %194 = load ptr, ptr %182, align 8, !tbaa !5
  %195 = getelementptr inbounds ptr, ptr %194, i64 %.6338408.us
  %196 = load ptr, ptr %195, align 8, !tbaa !8
  %197 = getelementptr inbounds double, ptr %196, i64 %193
  store double 0.000000e+00, ptr %197, align 8, !tbaa !10
  %198 = or disjoint i64 %.3329404.us, 3
  %199 = load ptr, ptr %182, align 8, !tbaa !5
  %200 = getelementptr inbounds ptr, ptr %199, i64 %.6338408.us
  %201 = load ptr, ptr %200, align 8, !tbaa !8
  %202 = getelementptr inbounds double, ptr %201, i64 %198
  store double 0.000000e+00, ptr %202, align 8, !tbaa !10
  %203 = add nuw nsw i64 %.3329404.us, 4
  %niter522.next.3 = add i64 %niter522, 4
  %niter522.ncmp.3 = icmp eq i64 %niter522.next.3, %unroll_iter521
  br i1 %niter522.ncmp.3, label %._crit_edge406.us.unr-lcssa, label %.preheader377.us.new, !llvm.loop !27

._crit_edge406.us.unr-lcssa:                      ; preds = %.preheader377.us.new, %.preheader377.us
  %.3329404.us.unr = phi i64 [ 0, %.preheader377.us ], [ %203, %.preheader377.us.new ]
  br i1 %lcmp.mod520.not, label %._crit_edge406.us, label %.epil.preheader517

.epil.preheader517:                               ; preds = %._crit_edge406.us.unr-lcssa, %.epil.preheader517
  %.3329404.us.epil = phi i64 [ %208, %.epil.preheader517 ], [ %.3329404.us.unr, %._crit_edge406.us.unr-lcssa ]
  %epil.iter519 = phi i64 [ %epil.iter519.next, %.epil.preheader517 ], [ 0, %._crit_edge406.us.unr-lcssa ]
  %204 = load ptr, ptr %182, align 8, !tbaa !5
  %205 = getelementptr inbounds ptr, ptr %204, i64 %.6338408.us
  %206 = load ptr, ptr %205, align 8, !tbaa !8
  %207 = getelementptr inbounds double, ptr %206, i64 %.3329404.us.epil
  store double 0.000000e+00, ptr %207, align 8, !tbaa !10
  %208 = add nuw nsw i64 %.3329404.us.epil, 1
  %epil.iter519.next = add i64 %epil.iter519, 1
  %epil.iter519.cmp.not = icmp eq i64 %epil.iter519.next, %xtraiter518
  br i1 %epil.iter519.cmp.not, label %._crit_edge406.us, label %.epil.preheader517, !llvm.loop !28

._crit_edge406.us:                                ; preds = %.epil.preheader517, %._crit_edge406.us.unr-lcssa
  %209 = add nuw nsw i64 %.6338408.us, 1
  %exitcond484.not = icmp eq i64 %209, %2
  br i1 %exitcond484.not, label %.lr.ph411, label %.preheader377.us, !llvm.loop !29

.lr.ph411:                                        ; preds = %._crit_edge406.us, %._crit_edge402
  %210 = getelementptr inbounds i8, ptr %19, i64 72
  %smax485 = call i64 @llvm.smax.i64(i64 %1, i64 1)
  br label %211

211:                                              ; preds = %.lr.ph411, %211
  %.0324410 = phi i64 [ 0, %.lr.ph411 ], [ %224, %211 ]
  %212 = load ptr, ptr %210, align 8, !tbaa !5
  %213 = getelementptr inbounds ptr, ptr %212, i64 %.0324410
  %214 = load ptr, ptr %213, align 8, !tbaa !8
  %215 = load ptr, ptr %72, align 8, !tbaa !5
  %216 = getelementptr inbounds ptr, ptr %215, i64 %.0324410
  %217 = load ptr, ptr %216, align 8, !tbaa !8
  %218 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %91)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %214, i64 noundef 1, ptr noundef %217, i64 noundef 1, i64 noundef %218)
  %219 = load ptr, ptr %210, align 8, !tbaa !5
  %220 = getelementptr inbounds ptr, ptr %219, i64 %.0324410
  %221 = load ptr, ptr %220, align 8, !tbaa !8
  %222 = load ptr, ptr %179, align 8, !tbaa !5
  %223 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %91)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %221, i64 noundef 1, ptr noundef %222, i64 noundef 1, i64 noundef %223)
  %224 = add nuw nsw i64 %.0324410, 1
  %exitcond486.not = icmp eq i64 %224, %smax485
  br i1 %exitcond486.not, label %._crit_edge412, label %211, !llvm.loop !30

._crit_edge412:                                   ; preds = %211
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %2, i64 noundef %2, i64 noundef %1, double noundef 1.000000e+00, ptr noundef nonnull %19, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %19, 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 %5)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %12, i64 noundef %2, i64 noundef %2, ptr noundef %5)
  br i1 %27, label %.preheader375.lr.ph, label %.lr.ph421

.preheader375.lr.ph:                              ; preds = %._crit_edge412
  %225 = getelementptr inbounds i8, ptr %12, i64 72
  %xtraiter524 = and i64 %2, 3
  %226 = icmp ult i64 %91, 3
  %unroll_iter527 = and i64 %2, 9223372036854775804
  %lcmp.mod526.not = icmp eq i64 %xtraiter524, 0
  br label %.preheader375.us

.preheader375.us:                                 ; preds = %._crit_edge416.us, %.preheader375.lr.ph
  %.7418.us = phi i64 [ 0, %.preheader375.lr.ph ], [ %252, %._crit_edge416.us ]
  br i1 %226, label %._crit_edge416.us.unr-lcssa, label %.preheader375.us.new

.preheader375.us.new:                             ; preds = %.preheader375.us, %.preheader375.us.new
  %.4330414.us = phi i64 [ %246, %.preheader375.us.new ], [ 0, %.preheader375.us ]
  %niter528 = phi i64 [ %niter528.next.3, %.preheader375.us.new ], [ 0, %.preheader375.us ]
  %227 = load ptr, ptr %225, align 8, !tbaa !5
  %228 = getelementptr inbounds ptr, ptr %227, i64 %.7418.us
  %229 = load ptr, ptr %228, align 8, !tbaa !8
  %230 = getelementptr inbounds double, ptr %229, i64 %.4330414.us
  store double 0.000000e+00, ptr %230, align 8, !tbaa !10
  %231 = or disjoint i64 %.4330414.us, 1
  %232 = load ptr, ptr %225, align 8, !tbaa !5
  %233 = getelementptr inbounds ptr, ptr %232, i64 %.7418.us
  %234 = load ptr, ptr %233, align 8, !tbaa !8
  %235 = getelementptr inbounds double, ptr %234, i64 %231
  store double 0.000000e+00, ptr %235, align 8, !tbaa !10
  %236 = or disjoint i64 %.4330414.us, 2
  %237 = load ptr, ptr %225, align 8, !tbaa !5
  %238 = getelementptr inbounds ptr, ptr %237, i64 %.7418.us
  %239 = load ptr, ptr %238, align 8, !tbaa !8
  %240 = getelementptr inbounds double, ptr %239, i64 %236
  store double 0.000000e+00, ptr %240, align 8, !tbaa !10
  %241 = or disjoint i64 %.4330414.us, 3
  %242 = load ptr, ptr %225, align 8, !tbaa !5
  %243 = getelementptr inbounds ptr, ptr %242, i64 %.7418.us
  %244 = load ptr, ptr %243, align 8, !tbaa !8
  %245 = getelementptr inbounds double, ptr %244, i64 %241
  store double 0.000000e+00, ptr %245, align 8, !tbaa !10
  %246 = add nuw nsw i64 %.4330414.us, 4
  %niter528.next.3 = add i64 %niter528, 4
  %niter528.ncmp.3 = icmp eq i64 %niter528.next.3, %unroll_iter527
  br i1 %niter528.ncmp.3, label %._crit_edge416.us.unr-lcssa, label %.preheader375.us.new, !llvm.loop !31

._crit_edge416.us.unr-lcssa:                      ; preds = %.preheader375.us.new, %.preheader375.us
  %.4330414.us.unr = phi i64 [ 0, %.preheader375.us ], [ %246, %.preheader375.us.new ]
  br i1 %lcmp.mod526.not, label %._crit_edge416.us, label %.epil.preheader523

.epil.preheader523:                               ; preds = %._crit_edge416.us.unr-lcssa, %.epil.preheader523
  %.4330414.us.epil = phi i64 [ %251, %.epil.preheader523 ], [ %.4330414.us.unr, %._crit_edge416.us.unr-lcssa ]
  %epil.iter525 = phi i64 [ %epil.iter525.next, %.epil.preheader523 ], [ 0, %._crit_edge416.us.unr-lcssa ]
  %247 = load ptr, ptr %225, align 8, !tbaa !5
  %248 = getelementptr inbounds ptr, ptr %247, i64 %.7418.us
  %249 = load ptr, ptr %248, align 8, !tbaa !8
  %250 = getelementptr inbounds double, ptr %249, i64 %.4330414.us.epil
  store double 0.000000e+00, ptr %250, align 8, !tbaa !10
  %251 = add nuw nsw i64 %.4330414.us.epil, 1
  %epil.iter525.next = add i64 %epil.iter525, 1
  %epil.iter525.cmp.not = icmp eq i64 %epil.iter525.next, %xtraiter524
  br i1 %epil.iter525.cmp.not, label %._crit_edge416.us, label %.epil.preheader523, !llvm.loop !32

._crit_edge416.us:                                ; preds = %.epil.preheader523, %._crit_edge416.us.unr-lcssa
  %252 = add nuw nsw i64 %.7418.us, 1
  %exitcond488.not = icmp eq i64 %252, %2
  br i1 %exitcond488.not, label %.lr.ph421, label %.preheader375.us, !llvm.loop !33

.lr.ph421:                                        ; preds = %._crit_edge416.us, %._crit_edge412
  %253 = getelementptr inbounds i8, ptr %19, i64 72
  %254 = getelementptr inbounds i8, ptr %10, i64 72
  %smax489 = call i64 @llvm.smax.i64(i64 %1, i64 1)
  br label %255

255:                                              ; preds = %.lr.ph421, %255
  %.1325420 = phi i64 [ 0, %.lr.ph421 ], [ %273, %255 ]
  %256 = load ptr, ptr %253, align 8, !tbaa !5
  %257 = getelementptr inbounds ptr, ptr %256, i64 %.1325420
  %258 = load ptr, ptr %257, align 8, !tbaa !8
  %259 = load ptr, ptr %72, align 8, !tbaa !5
  %260 = getelementptr inbounds ptr, ptr %259, i64 %.1325420
  %261 = load ptr, ptr %260, align 8, !tbaa !8
  %262 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %91)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %258, i64 noundef 1, ptr noundef %261, i64 noundef 1, i64 noundef %262)
  %263 = load ptr, ptr %253, align 8, !tbaa !5
  %264 = getelementptr inbounds ptr, ptr %263, i64 %.1325420
  %265 = load ptr, ptr %264, align 8, !tbaa !8
  %266 = load ptr, ptr %254, align 8, !tbaa !5
  %267 = load ptr, ptr %73, align 8, !tbaa !5
  %268 = getelementptr inbounds i64, ptr %267, i64 %.1325420
  %269 = load i64, ptr %268, align 8, !tbaa !16
  %270 = getelementptr inbounds ptr, ptr %266, i64 %269
  %271 = load ptr, ptr %270, align 8, !tbaa !8
  %272 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %91)
  call void @_ZN11alglib_impl8ae_v_subEPdlPKdll(ptr noundef %265, i64 noundef 1, ptr noundef %271, i64 noundef 1, i64 noundef %272)
  %273 = add nuw nsw i64 %.1325420, 1
  %exitcond490.not = icmp eq i64 %273, %smax489
  br i1 %exitcond490.not, label %._crit_edge422, label %255, !llvm.loop !34

._crit_edge422:                                   ; preds = %255
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %2, i64 noundef %2, i64 noundef %1, double noundef 1.000000e+00, ptr noundef nonnull %19, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %19, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %12, i64 noundef 0, i64 noundef 0, ptr noundef %5)
  %274 = call noundef zeroext i1 @_ZN11alglib_impl10smatrixevdEPKNS_9ae_matrixEllbPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef nonnull %13, i64 noundef %2, i64 noundef 1, i1 noundef zeroext true, ptr noundef nonnull %23, ptr noundef nonnull %14, ptr noundef %5)
  br i1 %274, label %276, label %275

275:                                              ; preds = %._crit_edge422
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef nonnull @.str.408, ptr noundef %5)
  br label %276

276:                                              ; preds = %275, %._crit_edge422
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef %4, i64 noundef %2, i64 noundef %2, ptr noundef %5)
  %277 = getelementptr inbounds i8, ptr %23, i64 56
  %278 = load ptr, ptr %277, align 8, !tbaa !5
  %279 = getelementptr inbounds double, ptr %278, i64 %91
  %280 = load double, ptr %279, align 8, !tbaa !10
  %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 !5
  %284 = load double, ptr %283, align 8, !tbaa !10
  %285 = getelementptr inbounds double, ptr %283, i64 %91
  %286 = load double, ptr %285, align 8, !tbaa !10
  %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 %372

289:                                              ; preds = %282, %276
  %290 = load ptr, ptr %277, align 8, !tbaa !5
  %291 = getelementptr inbounds double, ptr %290, i64 %91
  %292 = load double, ptr %291, align 8, !tbaa !10
  %293 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %292, double noundef 0.000000e+00)
  br i1 %293, label %.preheader370, label %.preheader371

.preheader371:                                    ; preds = %289
  br i1 %27, label %.lr.ph440, label %.lr.ph445

.preheader370:                                    ; preds = %289
  br i1 %27, label %.preheader369.lr.ph, label %._crit_edge476

.preheader369.lr.ph:                              ; preds = %.preheader370
  %294 = getelementptr inbounds i8, ptr %4, i64 72
  %xtraiter543 = and i64 %2, 1
  %295 = icmp eq i64 %91, 0
  %unroll_iter546 = and i64 %2, 9223372036854775806
  %lcmp.mod545.not = icmp eq i64 %xtraiter543, 0
  br label %.preheader369.us

.preheader369.us:                                 ; preds = %._crit_edge466.us, %.preheader369.lr.ph
  %.8468.us = phi i64 [ 0, %.preheader369.lr.ph ], [ %313, %._crit_edge466.us ]
  br i1 %295, label %._crit_edge466.us.unr-lcssa, label %.preheader369.us.new

.preheader369.us.new:                             ; preds = %.preheader369.us, %.preheader369.us.new
  %.5331464.us = phi i64 [ %307, %.preheader369.us.new ], [ 0, %.preheader369.us ]
  %niter547 = phi i64 [ %niter547.next.1, %.preheader369.us.new ], [ 0, %.preheader369.us ]
  %296 = icmp eq i64 %.8468.us, %.5331464.us
  %297 = load ptr, ptr %294, align 8, !tbaa !5
  %298 = getelementptr inbounds ptr, ptr %297, i64 %.8468.us
  %299 = load ptr, ptr %298, align 8, !tbaa !8
  %.507 = select i1 %296, double 1.000000e+00, double 0.000000e+00
  %300 = getelementptr inbounds double, ptr %299, i64 %.5331464.us
  store double %.507, ptr %300, align 8, !tbaa !10
  %301 = or disjoint i64 %.5331464.us, 1
  %302 = icmp eq i64 %.8468.us, %301
  %303 = load ptr, ptr %294, align 8, !tbaa !5
  %304 = getelementptr inbounds ptr, ptr %303, i64 %.8468.us
  %305 = load ptr, ptr %304, align 8, !tbaa !8
  %.507.1 = select i1 %302, double 1.000000e+00, double 0.000000e+00
  %306 = getelementptr inbounds double, ptr %305, i64 %301
  store double %.507.1, ptr %306, align 8, !tbaa !10
  %307 = add nuw nsw i64 %.5331464.us, 2
  %niter547.next.1 = add i64 %niter547, 2
  %niter547.ncmp.1 = icmp eq i64 %niter547.next.1, %unroll_iter546
  br i1 %niter547.ncmp.1, label %._crit_edge466.us.unr-lcssa, label %.preheader369.us.new, !llvm.loop !35

._crit_edge466.us.unr-lcssa:                      ; preds = %.preheader369.us.new, %.preheader369.us
  %.5331464.us.unr = phi i64 [ 0, %.preheader369.us ], [ %307, %.preheader369.us.new ]
  br i1 %lcmp.mod545.not, label %._crit_edge466.us, label %._crit_edge466.us.epilog-lcssa

._crit_edge466.us.epilog-lcssa:                   ; preds = %._crit_edge466.us.unr-lcssa
  %308 = icmp eq i64 %.8468.us, %.5331464.us.unr
  %309 = load ptr, ptr %294, align 8, !tbaa !5
  %310 = getelementptr inbounds ptr, ptr %309, i64 %.8468.us
  %311 = load ptr, ptr %310, align 8, !tbaa !8
  %.507.epil = select i1 %308, double 1.000000e+00, double 0.000000e+00
  %312 = getelementptr inbounds double, ptr %311, i64 %.5331464.us.unr
  store double %.507.epil, ptr %312, align 8, !tbaa !10
  br label %._crit_edge466.us

._crit_edge466.us:                                ; preds = %._crit_edge466.us.unr-lcssa, %._crit_edge466.us.epilog-lcssa
  %313 = add nuw nsw i64 %.8468.us, 1
  %exitcond501.not = icmp eq i64 %313, %2
  br i1 %exitcond501.not, label %._crit_edge476, label %.preheader369.us, !llvm.loop !36

.lr.ph440:                                        ; preds = %.preheader371, %.lr.ph440
  %.0323439 = phi i64 [ %spec.select, %.lr.ph440 ], [ 0, %.preheader371 ]
  %.2438 = phi i64 [ %321, %.lr.ph440 ], [ 0, %.preheader371 ]
  %314 = load ptr, ptr %277, align 8, !tbaa !5
  %315 = getelementptr inbounds double, ptr %314, i64 %.2438
  %316 = load double, ptr %315, align 8, !tbaa !10
  %317 = getelementptr inbounds double, ptr %314, i64 %91
  %318 = load double, ptr %317, align 8, !tbaa !10
  %319 = fmul double %318, 5.000000e-13
  %320 = call noundef zeroext i1 @_ZN11alglib_impl13ae_fp_less_eqEdd(double noundef %316, double noundef %319)
  %321 = add nuw nsw i64 %.2438, 1
  %spec.select = select i1 %320, i64 %321, i64 %.0323439
  %exitcond495.not = icmp eq i64 %321, %2
  br i1 %exitcond495.not, label %.lr.ph445, label %.lr.ph440, !llvm.loop !37

.lr.ph445:                                        ; preds = %.lr.ph440, %.preheader371
  %.0323.lcssa = phi i64 [ 0, %.preheader371 ], [ %spec.select, %.lr.ph440 ]
  %322 = icmp ne i64 %.0323.lcssa, 0
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext %322, ptr noundef nonnull @.str.409, ptr noundef %5)
  %323 = sub nsw i64 %2, %.0323.lcssa
  %324 = add nsw i64 %323, 1
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %20, i64 noundef %1, i64 noundef %324, ptr noundef %5)
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %1, i64 noundef %323, i64 noundef %2, double noundef 1.000000e+00, ptr noundef %0, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %14, i64 noundef 0, i64 noundef %.0323.lcssa, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %20, i64 noundef 0, i64 noundef 0, ptr noundef %5)
  %325 = getelementptr inbounds i8, ptr %20, i64 72
  %xtraiter530 = and i64 %smax, 1
  %unroll_iter533 = and i64 %smax, 9223372036854775806
  br label %326

326:                                              ; preds = %326, %.lr.ph445
  %.9443 = phi i64 [ 0, %.lr.ph445 ], [ %346, %326 ]
  %niter534 = phi i64 [ 0, %.lr.ph445 ], [ %niter534.next.1, %326 ]
  %327 = load ptr, ptr %72, align 8, !tbaa !5
  %328 = getelementptr inbounds ptr, ptr %327, i64 %.9443
  %329 = load ptr, ptr %328, align 8, !tbaa !8
  %330 = getelementptr inbounds double, ptr %329, i64 %2
  %331 = load double, ptr %330, align 8, !tbaa !10
  %332 = load ptr, ptr %325, align 8, !tbaa !5
  %333 = getelementptr inbounds ptr, ptr %332, i64 %.9443
  %334 = load ptr, ptr %333, align 8, !tbaa !8
  %335 = getelementptr inbounds double, ptr %334, i64 %323
  store double %331, ptr %335, align 8, !tbaa !10
  %336 = or disjoint i64 %.9443, 1
  %337 = load ptr, ptr %72, align 8, !tbaa !5
  %338 = getelementptr inbounds ptr, ptr %337, i64 %336
  %339 = load ptr, ptr %338, align 8, !tbaa !8
  %340 = getelementptr inbounds double, ptr %339, i64 %2
  %341 = load double, ptr %340, align 8, !tbaa !10
  %342 = load ptr, ptr %325, align 8, !tbaa !5
  %343 = getelementptr inbounds ptr, ptr %342, i64 %336
  %344 = load ptr, ptr %343, align 8, !tbaa !8
  %345 = getelementptr inbounds double, ptr %344, i64 %323
  store double %341, ptr %345, align 8, !tbaa !10
  %346 = add nuw nsw i64 %.9443, 2
  %niter534.next.1 = add i64 %niter534, 2
  %niter534.ncmp.1 = icmp eq i64 %niter534.next.1, %unroll_iter533
  br i1 %niter534.ncmp.1, label %._crit_edge446.unr-lcssa, label %326, !llvm.loop !38

._crit_edge446.unr-lcssa:                         ; preds = %326
  %lcmp.mod532.not = icmp eq i64 %xtraiter530, 0
  br i1 %lcmp.mod532.not, label %._crit_edge446, label %._crit_edge446.epilog-lcssa

._crit_edge446.epilog-lcssa:                      ; preds = %._crit_edge446.unr-lcssa
  %347 = load ptr, ptr %72, align 8, !tbaa !5
  %348 = getelementptr inbounds ptr, ptr %347, i64 %346
  %349 = load ptr, ptr %348, align 8, !tbaa !8
  %350 = getelementptr inbounds double, ptr %349, i64 %2
  %351 = load double, ptr %350, align 8, !tbaa !10
  %352 = load ptr, ptr %325, align 8, !tbaa !5
  %353 = getelementptr inbounds ptr, ptr %352, i64 %346
  %354 = load ptr, ptr %353, align 8, !tbaa !8
  %355 = getelementptr inbounds double, ptr %354, i64 %323
  store double %351, ptr %355, align 8, !tbaa !10
  br label %._crit_edge446

._crit_edge446:                                   ; preds = %._crit_edge446.unr-lcssa, %._crit_edge446.epilog-lcssa
  call void @_ZN11alglib_impl10fisherldanEPKNS_9ae_matrixElllPS0_PNS_8ae_stateE(ptr noundef nonnull %20, i64 noundef %1, i64 noundef %323, i64 noundef %3, ptr noundef nonnull %21, ptr noundef %5)
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %2, i64 noundef %323, i64 noundef %323, double noundef 1.000000e+00, ptr noundef nonnull %14, i64 noundef 0, i64 noundef %.0323.lcssa, i64 noundef 0, ptr noundef nonnull %21, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef %4, i64 noundef 0, i64 noundef 0, ptr noundef %5)
  %.not.not359447 = icmp sgt i64 %.0323.lcssa, 0
  br i1 %.not.not359447, label %.lr.ph450, label %.loopexit

.lr.ph450:                                        ; preds = %._crit_edge446
  %356 = getelementptr inbounds i8, ptr %4, i64 72
  %357 = getelementptr inbounds i8, ptr %4, i64 16
  %358 = getelementptr inbounds i8, ptr %14, i64 72
  %359 = getelementptr inbounds i8, ptr %14, i64 16
  br label %360

360:                                              ; preds = %.lr.ph450, %360
  %.3448 = phi i64 [ %323, %.lr.ph450 ], [ %371, %360 ]
  %361 = load ptr, ptr %356, align 8, !tbaa !5
  %362 = load ptr, ptr %361, align 8, !tbaa !8
  %363 = getelementptr inbounds double, ptr %362, i64 %.3448
  %364 = load i64, ptr %357, align 8, !tbaa !39
  %365 = load ptr, ptr %358, align 8, !tbaa !5
  %366 = load ptr, ptr %365, align 8, !tbaa !8
  %367 = sub nsw i64 %.3448, %323
  %368 = getelementptr inbounds double, ptr %366, i64 %367
  %369 = load i64, ptr %359, align 8, !tbaa !39
  %370 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %91)
  call void @_ZN11alglib_impl9ae_v_moveEPdlPKdll(ptr noundef %363, i64 noundef %364, ptr noundef %368, i64 noundef %369, i64 noundef %370)
  %371 = add nsw i64 %.3448, 1
  %.not.not359 = icmp slt i64 %371, %2
  br i1 %.not.not359, label %360, label %.loopexit, !llvm.loop !43

372:                                              ; preds = %282
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %16, i64 noundef %2, i64 noundef %2, ptr noundef %5)
  call void @_ZN11alglib_impl20ae_matrix_set_lengthEPNS_9ae_matrixEllPNS_8ae_stateE(ptr noundef nonnull %18, i64 noundef %2, i64 noundef %2, ptr noundef %5)
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %2, i64 noundef %2, i64 noundef %2, double noundef 1.000000e+00, ptr noundef nonnull %12, i64 noundef 0, i64 noundef 0, i64 noundef 0, ptr noundef nonnull %14, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %16, i64 noundef 0, i64 noundef 0, ptr noundef %5)
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %2, i64 noundef %2, i64 noundef %2, double noundef 1.000000e+00, ptr noundef nonnull %14, i64 noundef 0, i64 noundef 0, i64 noundef 1, ptr noundef nonnull %16, i64 noundef 0, i64 noundef 0, i64 noundef 0, double noundef 0.000000e+00, ptr noundef nonnull %18, i64 noundef 0, i64 noundef 0, ptr noundef %5)
  br i1 %27, label %.preheader373.lr.ph, label %._crit_edge429

.preheader373.lr.ph:                              ; preds = %372
  %373 = getelementptr inbounds i8, ptr %18, i64 72
  br label %.preheader373.us

.preheader373.us:                                 ; preds = %._crit_edge426.us, %.preheader373.lr.ph
  %.10428.us = phi i64 [ 0, %.preheader373.lr.ph ], [ %393, %._crit_edge426.us ]
  br label %374

374:                                              ; preds = %.preheader373.us, %374
  %.6424.us = phi i64 [ 0, %.preheader373.us ], [ %392, %374 ]
  %375 = load ptr, ptr %373, align 8, !tbaa !5
  %376 = getelementptr inbounds ptr, ptr %375, i64 %.10428.us
  %377 = load ptr, ptr %376, align 8, !tbaa !8
  %378 = getelementptr inbounds double, ptr %377, i64 %.6424.us
  %379 = load double, ptr %378, align 8, !tbaa !10
  %380 = load ptr, ptr %277, align 8, !tbaa !5
  %381 = getelementptr inbounds double, ptr %380, i64 %.10428.us
  %382 = load double, ptr %381, align 8, !tbaa !10
  %383 = getelementptr inbounds double, ptr %380, i64 %.6424.us
  %384 = load double, ptr %383, align 8, !tbaa !10
  %385 = fmul double %382, %384
  %386 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %385, ptr noundef %5)
  %387 = fdiv double %379, %386
  %388 = load ptr, ptr %373, align 8, !tbaa !5
  %389 = getelementptr inbounds ptr, ptr %388, i64 %.10428.us
  %390 = load ptr, ptr %389, align 8, !tbaa !8
  %391 = getelementptr inbounds double, ptr %390, i64 %.6424.us
  store double %387, ptr %391, align 8, !tbaa !10
  %392 = add nuw nsw i64 %.6424.us, 1
  %exitcond491.not = icmp eq i64 %392, %2
  br i1 %exitcond491.not, label %._crit_edge426.us, label %374, !llvm.loop !44

._crit_edge426.us:                                ; preds = %374
  %393 = add nuw nsw i64 %.10428.us, 1
  %exitcond492.not = icmp eq i64 %393, %2
  br i1 %exitcond492.not, label %._crit_edge429, label %.preheader373.us, !llvm.loop !45

._crit_edge429:                                   ; preds = %._crit_edge426.us, %372
  %394 = call noundef zeroext i1 @_ZN11alglib_impl10smatrixevdEPKNS_9ae_matrixEllbPNS_9ae_vectorEPS0_PNS_8ae_stateE(ptr noundef nonnull %18, i64 noundef %2, i64 noundef 1, i1 noundef zeroext true, ptr noundef nonnull %24, ptr noundef nonnull %15, ptr noundef %5)
  br i1 %394, label %396, label %395

395:                                              ; preds = %._crit_edge429
  call void @_ZN11alglib_impl9ae_assertEbPKcPNS_8ae_stateE(i1 noundef zeroext false, ptr noundef nonnull @.str.408, ptr noundef %5)
  br label %396

396:                                              ; preds = %395, %._crit_edge429
  br i1 %27, label %.preheader372.lr.ph, label %._crit_edge436

.preheader372.lr.ph:                              ; preds = %396
  %397 = getelementptr inbounds i8, ptr %15, i64 72
  br label %.preheader372.us

.preheader372.us:                                 ; preds = %._crit_edge433.us, %.preheader372.lr.ph
  %.11435.us = phi i64 [ 0, %.preheader372.lr.ph ], [ %414, %._crit_edge433.us ]
  br label %398

398:                                              ; preds = %.preheader372.us, %398
  %.4431.us = phi i64 [ 0, %.preheader372.us ], [ %413, %398 ]
  %399 = load ptr, ptr %397, align 8, !tbaa !5
  %400 = getelementptr inbounds ptr, ptr %399, i64 %.11435.us
  %401 = load ptr, ptr %400, align 8, !tbaa !8
  %402 = getelementptr inbounds double, ptr %401, i64 %.4431.us
  %403 = load double, ptr %402, align 8, !tbaa !10
  %404 = load ptr, ptr %277, align 8, !tbaa !5
  %405 = getelementptr inbounds double, ptr %404, i64 %.11435.us
  %406 = load double, ptr %405, align 8, !tbaa !10
  %407 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %406, ptr noundef %5)
  %408 = fdiv double %403, %407
  %409 = load ptr, ptr %397, align 8, !tbaa !5
  %410 = getelementptr inbounds ptr, ptr %409, i64 %.11435.us
  %411 = load ptr, ptr %410, align 8, !tbaa !8
  %412 = getelementptr inbounds double, ptr %411, i64 %.4431.us
  store double %408, ptr %412, align 8, !tbaa !10
  %413 = add nuw nsw i64 %.4431.us, 1
  %exitcond493.not = icmp eq i64 %413, %2
  br i1 %exitcond493.not, label %._crit_edge433.us, label %398, !llvm.loop !46

._crit_edge433.us:                                ; preds = %398
  %414 = add nuw nsw i64 %.11435.us, 1
  %exitcond494.not = icmp eq i64 %414, %2
  br i1 %exitcond494.not, label %._crit_edge436, label %.preheader372.us, !llvm.loop !47

._crit_edge436:                                   ; preds = %._crit_edge433.us, %396
  call void @_ZN11alglib_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef %2, i64 noundef %2, i64 noundef %2, double noundef 1.000000e+00, ptr noundef nonnull %14, 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 %4, i64 noundef 0, i64 noundef 0, ptr noundef %5)
  br label %.loopexit

.loopexit:                                        ; preds = %360, %._crit_edge446, %._crit_edge436
  br i1 %27, label %.lr.ph461, label %._crit_edge476

.lr.ph461:                                        ; preds = %.loopexit
  %415 = getelementptr inbounds i8, ptr %4, i64 72
  %416 = getelementptr inbounds i8, ptr %4, i64 16
  %xtraiter536 = and i64 %2, 3
  %417 = icmp ult i64 %91, 3
  %unroll_iter540 = and i64 %2, 9223372036854775804
  %lcmp.mod538.not = icmp eq i64 %xtraiter536, 0
  br label %.lr.ph455

.lr.ph455:                                        ; preds = %469, %.lr.ph461
  %.5459 = phi i64 [ 0, %.lr.ph461 ], [ %470, %469 ]
  %418 = load ptr, ptr %415, align 8, !tbaa !5
  %419 = load ptr, ptr %418, align 8, !tbaa !8
  %420 = getelementptr inbounds double, ptr %419, i64 %.5459
  %421 = load i64, ptr %416, align 8, !tbaa !39
  %422 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %91)
  %423 = call noundef double @_ZN11alglib_impl15ae_v_dotproductEPKdlS1_ll(ptr noundef %420, i64 noundef %421, ptr noundef %420, i64 noundef %421, i64 noundef %422)
  %424 = call noundef double @_ZN11alglib_impl7ae_sqrtEdPNS_8ae_stateE(double noundef %423, ptr noundef %5)
  %425 = fdiv double 1.000000e+00, %424
  %426 = load ptr, ptr %415, align 8, !tbaa !5
  %427 = load ptr, ptr %426, align 8, !tbaa !8
  %428 = getelementptr inbounds double, ptr %427, i64 %.5459
  %429 = load i64, ptr %416, align 8, !tbaa !39
  %430 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %91)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %428, i64 noundef %429, i64 noundef %430, double noundef %425)
  %431 = load ptr, ptr %415, align 8, !tbaa !5
  br i1 %417, label %._crit_edge456.unr-lcssa, label %.lr.ph455.new

.lr.ph455.new:                                    ; preds = %.lr.ph455, %.lr.ph455.new
  %.0453 = phi double [ %454, %.lr.ph455.new ], [ 0.000000e+00, %.lr.ph455 ]
  %.12452 = phi i64 [ %455, %.lr.ph455.new ], [ 0, %.lr.ph455 ]
  %niter541 = phi i64 [ %niter541.next.3, %.lr.ph455.new ], [ 0, %.lr.ph455 ]
  %432 = getelementptr inbounds ptr, ptr %431, i64 %.12452
  %433 = load ptr, ptr %432, align 8, !tbaa !8
  %434 = getelementptr inbounds double, ptr %433, i64 %.5459
  %435 = load double, ptr %434, align 8, !tbaa !10
  %436 = fadd double %.0453, %435
  %437 = or disjoint i64 %.12452, 1
  %438 = getelementptr inbounds ptr, ptr %431, i64 %437
  %439 = load ptr, ptr %438, align 8, !tbaa !8
  %440 = getelementptr inbounds double, ptr %439, i64 %.5459
  %441 = load double, ptr %440, align 8, !tbaa !10
  %442 = fadd double %436, %441
  %443 = or disjoint i64 %.12452, 2
  %444 = getelementptr inbounds ptr, ptr %431, i64 %443
  %445 = load ptr, ptr %444, align 8, !tbaa !8
  %446 = getelementptr inbounds double, ptr %445, i64 %.5459
  %447 = load double, ptr %446, align 8, !tbaa !10
  %448 = fadd double %442, %447
  %449 = or disjoint i64 %.12452, 3
  %450 = getelementptr inbounds ptr, ptr %431, i64 %449
  %451 = load ptr, ptr %450, align 8, !tbaa !8
  %452 = getelementptr inbounds double, ptr %451, i64 %.5459
  %453 = load double, ptr %452, align 8, !tbaa !10
  %454 = fadd double %448, %453
  %455 = add nuw nsw i64 %.12452, 4
  %niter541.next.3 = add i64 %niter541, 4
  %niter541.ncmp.3 = icmp eq i64 %niter541.next.3, %unroll_iter540
  br i1 %niter541.ncmp.3, label %._crit_edge456.unr-lcssa, label %.lr.ph455.new, !llvm.loop !48

._crit_edge456.unr-lcssa:                         ; preds = %.lr.ph455.new, %.lr.ph455
  %.lcssa.ph = phi double [ poison, %.lr.ph455 ], [ %454, %.lr.ph455.new ]
  %.0453.unr = phi double [ 0.000000e+00, %.lr.ph455 ], [ %454, %.lr.ph455.new ]
  %.12452.unr = phi i64 [ 0, %.lr.ph455 ], [ %455, %.lr.ph455.new ]
  br i1 %lcmp.mod538.not, label %._crit_edge456, label %.epil.preheader535

.epil.preheader535:                               ; preds = %._crit_edge456.unr-lcssa, %.epil.preheader535
  %.0453.epil = phi double [ %460, %.epil.preheader535 ], [ %.0453.unr, %._crit_edge456.unr-lcssa ]
  %.12452.epil = phi i64 [ %461, %.epil.preheader535 ], [ %.12452.unr, %._crit_edge456.unr-lcssa ]
  %epil.iter537 = phi i64 [ %epil.iter537.next, %.epil.preheader535 ], [ 0, %._crit_edge456.unr-lcssa ]
  %456 = getelementptr inbounds ptr, ptr %431, i64 %.12452.epil
  %457 = load ptr, ptr %456, align 8, !tbaa !8
  %458 = getelementptr inbounds double, ptr %457, i64 %.5459
  %459 = load double, ptr %458, align 8, !tbaa !10
  %460 = fadd double %.0453.epil, %459
  %461 = add nuw nsw i64 %.12452.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_edge456, label %.epil.preheader535, !llvm.loop !49

._crit_edge456:                                   ; preds = %.epil.preheader535, %._crit_edge456.unr-lcssa
  %.lcssa = phi double [ %.lcssa.ph, %._crit_edge456.unr-lcssa ], [ %460, %.epil.preheader535 ]
  %462 = call noundef zeroext i1 @_ZN11alglib_impl10ae_fp_lessEdd(double noundef %.lcssa, double noundef 0.000000e+00)
  br i1 %462, label %463, label %469

463:                                              ; preds = %._crit_edge456
  %464 = load ptr, ptr %415, align 8, !tbaa !5
  %465 = load ptr, ptr %464, align 8, !tbaa !8
  %466 = getelementptr inbounds double, ptr %465, i64 %.5459
  %467 = load i64, ptr %416, align 8, !tbaa !39
  %468 = call noundef i64 @_ZN11alglib_impl8ae_v_lenEll(i64 noundef 0, i64 noundef %91)
  call void @_ZN11alglib_impl9ae_v_muldEPdlld(ptr noundef %466, i64 noundef %467, i64 noundef %468, double noundef -1.000000e+00)
  br label %469

469:                                              ; preds = %._crit_edge456, %463
  %470 = add nuw nsw i64 %.5459, 1
  %exitcond499.not = icmp eq i64 %470, %2
  br i1 %exitcond499.not, label %._crit_edge476, label %.lr.ph455, !llvm.loop !50

._crit_edge476:                                   ; preds = %469, %._crit_edge466.us, %._crit_edge473.us, %.loopexit, %.preheader370, %._crit_edge.thread
  call void @_ZN11alglib_impl14ae_frame_leaveEPNS_8ae_stateE(ptr noundef %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 64, 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 80, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #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_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_impl14ae_frame_leaveEPNS_8ae_stateE(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_impl11rmatrixgemmEllldPKNS_9ae_matrixElllS2_llldPS0_llPNS_8ae_stateE(i64 noundef, i64 noundef, i64 noundef, double noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, double noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #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_impl10smatrixevdEPKNS_9ae_matrixEllbPNS_9ae_vectorEPS0_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 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"any pointer", !6, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"double", !6, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13}
!16 = !{!17, !17, i64 0}
!17 = !{!"long", !6, i64 0}
!18 = distinct !{!18, !13}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.unroll.disable"}
!21 = distinct !{!21, !13}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !20}
!24 = distinct !{!24, !13}
!25 = distinct !{!25, !13}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !20}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !13}
!31 = distinct !{!31, !13}
!32 = distinct !{!32, !20}
!33 = distinct !{!33, !13}
!34 = distinct !{!34, !13}
!35 = distinct !{!35, !13}
!36 = distinct !{!36, !13}
!37 = distinct !{!37, !13}
!38 = distinct !{!38, !13}
!39 = !{!40, !17, i64 16}
!40 = !{!"_ZTSN11alglib_impl9ae_matrixE", !17, i64 0, !17, i64 8, !17, i64 16, !17, i64 24, !41, i64 32, !42, i64 40, !6, i64 72}
!41 = !{!"bool", !6, i64 0}
!42 = !{!"_ZTSN11alglib_impl12ae_dyn_blockE", !9, i64 0, !9, i64 8, !9, i64 16, !9, i64 24}
!43 = distinct !{!43, !13}
!44 = distinct !{!44, !13}
!45 = distinct !{!45, !13}
!46 = distinct !{!46, !13}
!47 = distinct !{!47, !13}
!48 = distinct !{!48, !13}
!49 = distinct !{!49, !20}
!50 = distinct !{!50, !13}


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